{"version":3,"file":"vite-kit.mjs","names":["name","logger","runner","runner","runner"],"sources":["../src/color-scheme/logger.ts","../src/utils.ts","../src/color-scheme/vite-plugin.ts","../src/hashed-sync/vite-plugin.ts","../src/icon-font/vite-plugin.ts","../src/media-match/logger.ts","../src/media-match/vite-plugin.ts","../src/sprite-images/vite-plugin.ts","../src/style-additional/vite-plugin.ts","../src/dynamic-src/vite-plugin.ts"],"sourcesContent":["import { TinyLogger, createTinyError } from '@fastkit/tiny-logger';\n\nconst name = 'vite:color-scheme';\n\nexport const logger = new TinyLogger(name);\n\nexport const ViteColorSchemeError = createTinyError(name);\n","import { SassPreprocessorOptions } from 'vite';\n\nexport async function resolveAdditionalData(\n  source: string,\n  filename: string,\n  additionalData: SassPreprocessorOptions['additionalData'],\n): Promise<string> {\n  if (typeof additionalData === 'string') {\n    return additionalData + source;\n  }\n\n  if (typeof additionalData === 'function') {\n    const data = additionalData(source, filename);\n\n    // データが文字列の場合\n    if (typeof data === 'string') {\n      return data + source;\n    }\n\n    // データがcontent属性を持つオブジェクトの場合\n    if (typeof data === 'object' && 'content' in data) {\n      return data.content + source;\n    }\n\n    // データがPromiseの場合\n    const resolvedData = await data;\n    if (typeof resolvedData === 'string') {\n      return resolvedData + source;\n    }\n    if (typeof resolvedData === 'object' && 'content' in resolvedData) {\n      return resolvedData.content + source;\n    }\n  }\n\n  return '';\n}\n","import { Plugin } from 'vite';\nimport { LoadColorSchemeRunner } from '@fastkit/color-scheme-gen';\nimport path from 'node:path';\nimport { findPackageDir } from '@fastkit/node-util';\nimport { UnPromisify } from '@fastkit/helpers';\nimport { ViteColorSchemeError } from './logger';\nimport { resolveAdditionalData } from '~/utils';\n\nexport interface ColorSchemeVitePluginOptions {\n  src: string;\n  dest?: string;\n  onBooted?: (() => any) | (() => Promise<any>);\n  onBootError?: (err: unknown) => any;\n}\n\nlet runner: LoadColorSchemeRunner | undefined;\nlet cachePaths: UnPromisify<\n  ReturnType<LoadColorSchemeRunner['run']>\n>['exports']['cachePaths'];\n\nexport function colorSchemeVitePlugin(\n  opts: ColorSchemeVitePluginOptions,\n): Plugin {\n  const { src, dest: _dest, onBooted, onBootError } = opts;\n\n  const rawEntryPoint = path.resolve(src);\n\n  return {\n    name: 'vite:color-scheme',\n    async config(config, { command }) {\n      try {\n        let dest: string;\n\n        if (!_dest) {\n          const pkgDir = await findPackageDir();\n          if (!pkgDir) throw new ViteColorSchemeError('missing package.json');\n          dest = path.join(pkgDir, '.color-scheme');\n        } else {\n          dest = _dest;\n        }\n\n        if (!runner) {\n          runner = new LoadColorSchemeRunner({\n            entry: rawEntryPoint,\n            dest,\n            watch: command === 'serve',\n          });\n        }\n\n        if (!cachePaths) {\n          cachePaths = (await runner.run()).exports.cachePaths;\n        }\n\n        const cssOptions = {\n          ...config.css,\n        };\n        cssOptions.preprocessorOptions = {\n          ...cssOptions.preprocessorOptions,\n        };\n        const { preprocessorOptions } = cssOptions;\n        preprocessorOptions.scss = {\n          ...preprocessorOptions.scss,\n        };\n        const scssOptions = preprocessorOptions.scss;\n\n        const _additionalData = scssOptions.additionalData;\n        const additionalData = async (source: string, filename: string) => {\n          source = await resolveAdditionalData(\n            source,\n            filename,\n            _additionalData,\n          );\n          return `@use \"${cachePaths.scss}\" as *;\\n${source}`;\n        };\n        scssOptions.additionalData = additionalData;\n        config.css = cssOptions;\n\n        onBooted && (await onBooted());\n\n        return config;\n      } catch (err) {\n        onBootError && onBootError(err);\n        throw err;\n      }\n    },\n  };\n}\n","import { Plugin } from 'vite';\nimport { HashedSync, HashedSyncOptions } from '@fastkit/hashed-sync';\n\nexport interface HashedSyncVitePluginOptions extends Omit<\n  HashedSyncOptions,\n  'watch'\n> {\n  onBooted?: (() => any) | (() => Promise<any>);\n  onBootError?: ((err: unknown) => any) | ((err: unknown) => Promise<any>);\n}\n\nlet hashedSync: HashedSync | undefined;\n\nexport function hashedSyncVitePlugin(\n  opts: HashedSyncVitePluginOptions,\n): Plugin {\n  return {\n    name: 'vite:hashed-sync',\n    async config(config, { command }) {\n      const { onBooted, onBootError } = opts;\n\n      try {\n        if (!hashedSync) {\n          hashedSync = new HashedSync({\n            ...opts,\n            watch: command === 'serve',\n          });\n          await hashedSync.loadAndSync();\n        }\n\n        onBooted && (await onBooted());\n\n        return config;\n      } catch (err) {\n        onBootError && (await onBootError(err));\n        throw err;\n      }\n    },\n  };\n}\n","import { Plugin } from 'vite';\nimport { IconFontRunner, IconFontOptions } from '@fastkit/icon-font-gen';\n\nexport interface IconFontVitePlugin extends IconFontOptions {\n  onBooted?: (() => any) | (() => Promise<any>);\n  onBootError?: ((err: unknown) => any) | ((err: unknown) => Promise<any>);\n}\n\nlet runner: IconFontRunner | undefined;\n\nexport function iconFontVitePlugin(opts: IconFontVitePlugin): Plugin {\n  return {\n    name: 'vite:icon-font',\n    async config(config, { command }) {\n      const { onBooted, onBootError } = opts;\n      try {\n        if (!runner) {\n          const watch = command === 'serve';\n          runner = new IconFontRunner(opts, watch);\n          await runner.run();\n        }\n        onBooted && (await onBooted());\n        return config;\n      } catch (err) {\n        onBootError && (await onBootError(err));\n        throw err;\n      }\n    },\n  };\n}\n","import { TinyLogger, createTinyError } from '@fastkit/tiny-logger';\n\nconst name = 'vite:media-match';\n\nexport const logger = new TinyLogger(name);\n\nexport const ViteMediaMatchError = createTinyError(name);\n","import { Plugin } from 'vite';\nimport { MediaMatchGeneratorRunner } from '@fastkit/media-match-gen';\nimport path from 'node:path';\nimport { findPackageDir } from '@fastkit/node-util';\nimport { UnPromisify } from '@fastkit/helpers';\nimport { ViteMediaMatchError } from './logger';\nimport { resolveAdditionalData } from '~/utils';\n\nexport interface MediaMatchVitePluginOptions {\n  src: string;\n  dest?: string;\n  onBooted?: (() => any) | (() => Promise<any>);\n  onBootError?: ((err: unknown) => any) | ((err: unknown) => Promise<any>);\n}\n\nlet runner: MediaMatchGeneratorRunner | undefined;\nlet runnerExports: UnPromisify<\n  ReturnType<MediaMatchGeneratorRunner['run']>\n>['exports'];\n\nexport function mediaMatchVitePlugin(\n  opts: MediaMatchVitePluginOptions,\n): Plugin {\n  const { src, onBooted, onBootError } = opts;\n  const rawEntryPoint = path.resolve(src);\n  const { dest: _dest } = opts;\n\n  return {\n    name: 'vite:media-match',\n    async config(config, { command }) {\n      try {\n        let dest: string;\n\n        if (!_dest) {\n          const pkgDir = await findPackageDir();\n          if (!pkgDir) throw new ViteMediaMatchError('missing package.json');\n          dest = path.join(pkgDir, '.media-match');\n        } else {\n          dest = _dest;\n        }\n\n        if (!runner) {\n          runner = new MediaMatchGeneratorRunner({\n            src: rawEntryPoint,\n            dest,\n            watch: command === 'serve',\n          });\n        }\n\n        if (!runnerExports) {\n          runnerExports = (await runner.run()).exports;\n        }\n\n        const { scss } = runnerExports;\n        const scssCachePath = scss.path;\n\n        const cssOptions = {\n          ...config.css,\n        };\n        cssOptions.preprocessorOptions = {\n          ...cssOptions.preprocessorOptions,\n        };\n        const { preprocessorOptions } = cssOptions;\n        preprocessorOptions.scss = {\n          ...preprocessorOptions.scss,\n        };\n        const scssOptions = preprocessorOptions.scss;\n\n        const _additionalData = scssOptions.additionalData;\n        const additionalData = async (source: string, filename: string) => {\n          source = await resolveAdditionalData(\n            source,\n            filename,\n            _additionalData,\n          );\n          return `@use \"${scssCachePath}\" as *;\\n${source}`;\n        };\n        scssOptions.additionalData = additionalData;\n        config.css = cssOptions;\n\n        onBooted && (await onBooted());\n\n        return config;\n      } catch (err) {\n        onBootError && (await onBootError(err));\n        throw err;\n      }\n    },\n  };\n}\n","import { Plugin } from 'vite';\nimport {\n  SpriteImagesRunner,\n  SpriteImagesOptions,\n} from '@fastkit/sprite-images';\n\nexport interface SpriteImagesVitePluginOptions extends SpriteImagesOptions {\n  onBooted?: (() => any) | (() => Promise<any>);\n  onBootError?: ((err: unknown) => any) | ((err: unknown) => Promise<any>);\n}\n\nlet runner: SpriteImagesRunner | undefined;\n\nexport function spriteImagesVitePlugin(\n  opts: SpriteImagesVitePluginOptions,\n): Plugin {\n  return {\n    name: 'vite:sprite-images',\n    async config(config) {\n      const { onBooted, onBootError } = opts;\n      try {\n        if (!runner) {\n          runner = new SpriteImagesRunner(opts);\n          await runner.run();\n        }\n\n        onBooted && (await onBooted());\n        return config;\n      } catch (err) {\n        onBootError && (await onBootError(err));\n        throw err;\n      }\n    },\n  };\n}\n","import { Plugin } from 'vite';\nimport { resolve } from 'node:path';\nimport { resolveAdditionalData } from '~/utils';\n\nexport interface SassAdditional {\n  src: string;\n  alias?: string;\n}\n\nexport type RawSassAdditional = string | SassAdditional;\n\nexport interface StyleAdditionalVitePluginOptions {\n  sass?: RawSassAdditional[];\n  scss?: RawSassAdditional[];\n}\n\nexport function styleAdditionalVitePlugin(\n  opts: StyleAdditionalVitePluginOptions,\n): Plugin {\n  return {\n    name: 'vite:style-additional-data',\n    async config(config) {\n      const cssOptions = {\n        ...config.css,\n      };\n      cssOptions.preprocessorOptions = {\n        ...cssOptions.preprocessorOptions,\n      };\n      const { preprocessorOptions } = cssOptions;\n\n      (['sass', 'scss'] as const).forEach((type) => {\n        const settings = opts[type];\n        if (!settings || !settings.length) return;\n\n        const uses = settings\n          .map((raw) => {\n            const additional: SassAdditional =\n              typeof raw === 'string' ? { src: raw } : raw;\n            const { src, alias } = additional;\n            const suffix = alias ? ` as ${alias}` : '';\n            return `@use '${resolve(src)}'${suffix};`;\n          })\n          .join('\\n');\n\n        let options = preprocessorOptions[type];\n        if (!options) {\n          options = {};\n          preprocessorOptions[type] = options;\n        }\n        const _additionalData = options.additionalData;\n        const additionalData = async (source: string, filename: string) => {\n          source = await resolveAdditionalData(\n            source,\n            filename,\n            _additionalData,\n          );\n          return `${uses}\\n${source}`;\n        };\n        options.additionalData = additionalData;\n      });\n\n      config.css = cssOptions;\n      return config;\n    },\n  };\n}\n","import { Plugin } from 'vite';\n\nimport {\n  ColorSchemeVitePluginOptions,\n  colorSchemeVitePlugin,\n} from '../color-scheme';\nimport {\n  HashedSyncVitePluginOptions,\n  hashedSyncVitePlugin,\n} from '../hashed-sync';\nimport { IconFontVitePlugin, iconFontVitePlugin } from '../icon-font';\nimport {\n  MediaMatchVitePluginOptions,\n  mediaMatchVitePlugin,\n} from '../media-match';\nimport {\n  SpriteImagesVitePluginOptions,\n  spriteImagesVitePlugin,\n} from '../sprite-images';\n\nexport interface DynamicSrcVitePluginOptions {\n  colorScheme?: ColorSchemeVitePluginOptions;\n  hashedSync?: HashedSyncVitePluginOptions;\n  iconFont?: IconFontVitePlugin;\n  mediaMatch?: MediaMatchVitePluginOptions;\n  spriteImages?: SpriteImagesVitePluginOptions;\n  onBooted?: (() => any) | (() => Promise<any>);\n  onBootError?: ((err: unknown) => any) | ((err: unknown) => Promise<any>);\n}\n\nlet booted = false;\nlet bootWait: Promise<any> | undefined;\n\nexport function dynamicSrcVitePlugin(\n  opts: DynamicSrcVitePluginOptions,\n): Plugin[] {\n  const {\n    colorScheme,\n    hashedSync,\n    iconFont,\n    mediaMatch,\n    spriteImages,\n    onBooted,\n    onBootError,\n  } = opts;\n  const plugins: Plugin[] = [];\n  const promises: Promise<any>[] = [];\n\n  function pushPlugin(\n    createPlugin: (\n      onBooted: (() => any) | (() => Promise<any>),\n      onBootError: ((err: unknown) => any) | ((err: unknown) => Promise<any>),\n    ) => Plugin,\n  ) {\n    const promise = new Promise<void>((resolve, reject) => {\n      const plugin = createPlugin(resolve, reject);\n      plugins.push(plugin);\n    });\n    promises.push(promise);\n  }\n\n  if (colorScheme) {\n    pushPlugin((onBooted) =>\n      colorSchemeVitePlugin({\n        ...colorScheme,\n        onBooted,\n      }),\n    );\n  }\n\n  if (hashedSync) {\n    pushPlugin((onBooted) =>\n      hashedSyncVitePlugin({\n        ...hashedSync,\n        onBooted,\n      }),\n    );\n  }\n\n  if (iconFont) {\n    pushPlugin((onBooted) =>\n      iconFontVitePlugin({\n        ...iconFont,\n        onBooted,\n      }),\n    );\n  }\n\n  if (mediaMatch) {\n    pushPlugin((onBooted) =>\n      mediaMatchVitePlugin({\n        ...mediaMatch,\n        onBooted,\n      }),\n    );\n  }\n\n  if (spriteImages) {\n    pushPlugin((onBooted) =>\n      spriteImagesVitePlugin({\n        ...spriteImages,\n        onBooted,\n      }),\n    );\n  }\n\n  const dynamicSrcPlugin: Plugin = {\n    name: 'vite:dynamic-src',\n    async config(config, env) {\n      try {\n        await Promise.all(promises);\n        if (onBooted) {\n          if (!booted) {\n            booted = true;\n            bootWait = onBooted();\n          }\n          await bootWait;\n        }\n        return config;\n      } catch (err) {\n        onBootError && (await onBootError(err));\n        throw err;\n      }\n    },\n  };\n\n  plugins.push(dynamicSrcPlugin);\n\n  return plugins;\n}\n"],"mappings":"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"}