@wyw-in-js/vite 1.0.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/index.mjs CHANGED
@@ -8,7 +8,21 @@ import { existsSync } from 'fs';
8
8
  import path from 'path';
9
9
  import { createFilter, loadEnv } from 'vite';
10
10
  import { asyncResolverFactory, logger, syncResolve } from '@wyw-in-js/shared';
11
- import { createFileReporter, getFileIdx, transform, TransformCacheCollection } from '@wyw-in-js/transform';
11
+ import * as transformPkg from '@wyw-in-js/transform';
12
+ const {
13
+ createTransformManifest,
14
+ createFileReporter,
15
+ getFileIdx,
16
+ stringifyTransformManifest,
17
+ transform,
18
+ TransformCacheCollection
19
+ } = transformPkg;
20
+ const createMetadataManifest = (metadata, context) => typeof createTransformManifest === 'function' ? createTransformManifest(metadata, context) : {
21
+ ...metadata,
22
+ ...context,
23
+ version: 1
24
+ };
25
+ const stringifyMetadataManifest = manifest => typeof stringifyTransformManifest === 'function' ? stringifyTransformManifest(manifest) : `${JSON.stringify(manifest, null, 2)}\n`;
12
26
  const isWindowsAbsolutePath = value => /^[a-zA-Z]:[\\/]/.test(value);
13
27
  const normalizeToPosix = value => value.replace(/\\/g, path.posix.sep);
14
28
  const isInside = (childPath, parentPath) => {
@@ -209,9 +223,11 @@ export default function wywInJS({
209
223
  transformLibraries,
210
224
  ...rest
211
225
  } = {}) {
226
+ const supportedModuleExtensions = new Set(['.cjs', '.cts', '.js', '.jsx', '.mjs', '.mts', '.ts', '.tsx']);
212
227
  const filter = createFilter(include, exclude);
213
228
  const cssLookup = {};
214
229
  const cssFileLookup = {};
230
+ const metadataLookup = {};
215
231
  const cssFilesByModuleId = new Map();
216
232
  const pendingCssReloads = new WeakMap();
217
233
  let ssrDevCssVersion = 0;
@@ -236,6 +252,21 @@ export default function wywInJS({
236
252
  emitter,
237
253
  onDone
238
254
  } = createFileReporter(debug ?? false);
255
+ const isSafeAssetPath = fileName => fileName !== '' && fileName !== '..' && !fileName.startsWith(`..${path.posix.sep}`) && !path.posix.isAbsolute(fileName) && !isWindowsAbsolutePath(fileName);
256
+ const replaceModuleExtension = (filename, nextExtension) => {
257
+ const extension = path.extname(filename);
258
+ return supportedModuleExtensions.has(extension) ? `${filename.slice(0, -extension.length)}${nextExtension}` : `${filename}${nextExtension}`;
259
+ };
260
+ const toBundleRelativePath = filename => {
261
+ const relativePath = normalizeToPosix(path.relative(config.root, filename));
262
+ if (isSafeAssetPath(relativePath)) {
263
+ return relativePath;
264
+ }
265
+ if (!path.isAbsolute(relativePath) && !isWindowsAbsolutePath(relativePath)) {
266
+ return path.posix.join('_wyw-in-js', 'external', ...relativePath.split(path.posix.sep).filter(Boolean).map(segment => segment === '..' ? '__up__' : segment));
267
+ }
268
+ return path.posix.join('_wyw-in-js', 'external', ...normalizeToPosix(path.resolve(filename)).split(path.posix.sep).filter(Boolean).map(segment => segment.replace(/:$/, '')));
269
+ };
239
270
  const scheduleCssReload = (reloadTarget, cssFilename) => {
240
271
  let state = pendingCssReloads.get(reloadTarget);
241
272
  if (!state) {
@@ -366,6 +397,11 @@ export default function wywInJS({
366
397
  return {
367
398
  name: 'wyw-in-js',
368
399
  enforce: 'post',
400
+ buildStart() {
401
+ Object.keys(metadataLookup).forEach(key => {
402
+ delete metadataLookup[key];
403
+ });
404
+ },
369
405
  buildEnd() {
370
406
  onDone(process.cwd());
371
407
  },
@@ -487,6 +523,13 @@ export default function wywInJS({
487
523
  return affected.map(target => devServer.moduleGraph.getModuleById(target.id)).concat(ctx.modules).filter(m => !!m);
488
524
  },
489
525
  generateBundle(outputOptions, bundle) {
526
+ Object.entries(metadataLookup).forEach(([fileName, source]) => {
527
+ this.emitFile({
528
+ fileName,
529
+ source,
530
+ type: 'asset'
531
+ });
532
+ });
490
533
  if (config.command !== 'build') return;
491
534
  if (!outputOptions.preserveModules) return;
492
535
  if (config.build.cssCodeSplit === false) return;
@@ -548,6 +591,29 @@ export default function wywInJS({
548
591
  };
549
592
  const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;
550
593
  const result = await transform(transformServices, code, asyncResolve);
594
+ result.diagnostics?.forEach(diagnostic => {
595
+ this.warn({
596
+ id: diagnostic.filename,
597
+ loc: diagnostic.start ? {
598
+ column: diagnostic.start.column,
599
+ file: diagnostic.filename,
600
+ line: diagnostic.start.line
601
+ } : undefined,
602
+ message: `[wyw-in-js] ${diagnostic.severity} [${diagnostic.category}] ${diagnostic.message}`,
603
+ pluginCode: diagnostic.category
604
+ });
605
+ });
606
+ const relativeId = normalizeToPosix(path.relative(config.root, id));
607
+ const metadataFilename = replaceModuleExtension(id, '.wyw-in-js.json');
608
+ const metadataRelativePath = toBundleRelativePath(metadataFilename);
609
+ delete metadataLookup[metadataRelativePath];
610
+ if (result.metadata) {
611
+ const cssFile = typeof result.cssText === 'string' && result.cssText !== '' ? replaceModuleExtension(relativeId, '.wyw-in-js.css') : undefined;
612
+ metadataLookup[metadataRelativePath] = stringifyMetadataManifest(createMetadataManifest(result.metadata, {
613
+ cssFile,
614
+ source: relativeId
615
+ }));
616
+ }
551
617
  let {
552
618
  cssText,
553
619
  dependencies
@@ -571,9 +637,9 @@ export default function wywInJS({
571
637
  };
572
638
  }
573
639
  dependencies ??= [];
574
- const cssFilename = path.normalize(`${id.replace(/\.[jt]sx?$/, '')}.wyw-in-js.css`).replace(/\\/g, path.posix.sep);
640
+ const cssFilename = normalizeToPosix(replaceModuleExtension(id, '.wyw-in-js.css'));
575
641
  cssFilesByModuleId.set(id, cssFilename);
576
- const cssRelativePath = path.relative(config.root, cssFilename).replace(/\\/g, path.posix.sep);
642
+ const cssRelativePath = normalizeToPosix(path.relative(config.root, cssFilename));
577
643
  const cssId = `/${cssRelativePath}`;
578
644
  if (sourceMap && result.cssSourceMapText) {
579
645
  const map = Buffer.from(result.cssSourceMapText).toString('base64');
package/esm/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["existsSync","path","createFilter","loadEnv","asyncResolverFactory","logger","syncResolve","createFileReporter","getFileIdx","transform","TransformCacheCollection","isWindowsAbsolutePath","value","test","normalizeToPosix","replace","posix","sep","isInside","childPath","parentPath","rel","relative","startsWith","isAbsolute","isWywCssAssetName","endsWith","normalizeAssetRelativePath","normalized","normalize","stripExtension","ext","extname","slice","length","getComparableAssetPaths","rootDir","variants","Set","add","relativeToRoot","relativePath","getStringValues","Array","isArray","filter","item","getOutputAssetNames","asset","name","names","originalFileName","originalFileNames","isOutputAssetLike","type","fileName","isOutputChunkLike","code","getTrackedModuleIdForChunk","chunk","cssFilesByModuleId","facadeModuleId","has","moduleIds","moduleId","find","id","findWywCssAssetFileName","bundle","cssFilename","expectedNames","Object","values","isMatch","some","assetName","from","variant","getRelativeImportPath","fromFileName","toFileName","fromDir","dirname","escapeForRegExp","hasStaticImport","specifier","RegExp","hasRequireCall","getCssLoadStatement","format","JSON","stringify","hasCssLoadStatement","prependCssLoadStatement","statement","insertAt","lineBreakIndex","indexOf","directiveMatch","exec","VITE_FS_PREFIX","safeDecodeURIComponent","decodeURIComponent","normalizeViteFsPath","fsPath","isCssReloadTarget","reloadTarget","moduleGraph","getModuleById","reloadModule","getCssReloadTarget","environment","server","module","getWywCssAssetFileNames","resolvedConfig","output","originalAssetFileNames","preserveModules","root","preserveModulesRootValue","preserveModulesRoot","preserveModulesRootAbs","resolve","preserveModulesRootRel","assetInfo","template","includes","assetNameNormalized","preserveRel","withoutExt","dir","idx","prefix","wywInJS","debug","include","exclude","sourceMap","preserveCssPaths","keepComments","prefixer","preprocessor","ssrDevCss","ssrDevCssPath","transformLibraries","rest","cssLookup","cssFileLookup","Map","pendingCssReloads","WeakMap","ssrDevCssVersion","config","devServer","importMetaEnvForEval","ssrDevCssEnabled","Boolean","ssrDevCssPathname","ssrDevCssQuery","split","ssrDevCssRoute","getSsrDevCssHref","versionParam","query","getSsrDevCssContents","entries","merged","sort","a","b","localeCompare","map","cssText","join","emitter","onDone","scheduleCssReload","state","get","files","set","timer","setTimeout","undefined","ids","clear","targets","clientCache","ssrCache","caches","getCache","isSsr","isInsideCacheDir","filename","cacheDir","getDepsOptimizer","environments","client","depsOptimizer","_depsOptimizer","waitForOptimizedDep","isOptimizedDepFile","init","scanProcessing","info","metadata","depInfoList","file","processing","viteResolver","resolveClient","what","importer","Error","resolveSsr","createAsyncResolver","resolved","stack","log","extend","resolvedId","asyncResolveClient","asyncResolveSsr","enforce","buildEnd","process","cwd","configResolved","createResolver","command","outputs","build","rollupOptions","outputEntries","forEach","entry","assetFileNames","assetsDir","envPrefix","envDir","loaded","mode","base","BASE_URL","MODE","DEV","PROD","SSR","ssr","configureServer","_server","middlewares","use","req","res","next","url","pathname","etag","ifNoneMatch","headers","statusCode","end","setHeader","transformIndexHtml","html","tags","tag","attrs","href","injectTo","load","resolveId","importeeUrl","handleHotUpdate","ctx","modules","affected","x","dependencies","dep","m","deps","flatMap","target","depId","cache","invalidateForFile","concat","generateBundle","outputOptions","cssCodeSplit","emittedCssFileName","relativeCssImport","transformOptions","overrideContext","context","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","asyncResolve","result","delete","cssRelativePath","cssId","cssSourceMapText","Buffer","toString","didCssChange","i","depModule","isEntry","t","push"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This file contains a Vite loader for wyw-in-js.\n * It uses the transform.ts function to generate class names from source code,\n * returns transformed code without template literals and attaches generated source maps\n */\n\nimport { existsSync } from 'fs';\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport path from 'path';\n\nimport { createFilter, loadEnv } from 'vite';\nimport type {\n ModuleNode,\n Plugin,\n ResolvedConfig,\n ViteDevServer,\n FilterPattern,\n} from 'vite';\n\nimport { asyncResolverFactory, logger, syncResolve } from '@wyw-in-js/shared';\nimport type {\n IFileReporterOptions,\n PluginOptions,\n Preprocessor,\n} from '@wyw-in-js/transform';\nimport {\n createFileReporter,\n getFileIdx,\n transform,\n TransformCacheCollection,\n} from '@wyw-in-js/transform';\n\ntype VitePluginOptions = {\n debug?: IFileReporterOptions | false | null | undefined;\n exclude?: FilterPattern;\n include?: FilterPattern;\n keepComments?: boolean | RegExp;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n preserveCssPaths?: boolean;\n sourceMap?: boolean;\n ssrDevCss?: boolean;\n ssrDevCssPath?: string;\n transformLibraries?: boolean;\n} & Partial<PluginOptions>;\n\ntype OverrideContext = NonNullable<PluginOptions['overrideContext']>;\n\nexport { Plugin };\n\ntype AssetInfoLike = { name?: unknown };\ntype AssetFileNames = string | ((assetInfo: AssetInfoLike) => string);\ntype RollupOutputLike = {\n assetFileNames?: AssetFileNames;\n format?: unknown;\n preserveModules?: boolean;\n preserveModulesRoot?: unknown;\n} & Record<string, unknown>;\n\ntype OutputAssetLike = {\n fileName: string;\n name?: unknown;\n names?: unknown;\n originalFileName?: unknown;\n originalFileNames?: unknown;\n type: 'asset';\n};\n\ntype OutputChunkLike = {\n code: string;\n facadeModuleId?: unknown;\n fileName: string;\n moduleIds?: unknown;\n type: 'chunk';\n};\n\ntype OutputBundleLike = Record<string, OutputAssetLike | OutputChunkLike>;\n\ntype CssReloadTarget = {\n moduleGraph: {\n getModuleById(id: string): ModuleNode | null | undefined;\n };\n reloadModule(module: ModuleNode): void;\n};\n\nconst isWindowsAbsolutePath = (value: string): boolean =>\n /^[a-zA-Z]:[\\\\/]/.test(value);\n\nconst normalizeToPosix = (value: string): string =>\n value.replace(/\\\\/g, path.posix.sep);\n\nconst isInside = (childPath: string, parentPath: string): boolean => {\n const rel = path.relative(parentPath, childPath);\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));\n};\n\nconst isWywCssAssetName = (value: string): boolean =>\n value.endsWith('.wyw-in-js.css');\n\nconst normalizeAssetRelativePath = (value: string): string | null => {\n const normalized = path.posix.normalize(\n normalizeToPosix(value).replace(/^\\/+/, '')\n );\n if (normalized.startsWith('..') || path.posix.isAbsolute(normalized)) {\n return null;\n }\n\n return normalized;\n};\n\nconst stripExtension = (value: string): string => {\n const ext = path.posix.extname(value);\n return ext ? value.slice(0, -ext.length) : value;\n};\n\nconst getComparableAssetPaths = (\n value: string,\n rootDir: string\n): Set<string> => {\n const variants = new Set<string>();\n const normalized = normalizeToPosix(value);\n\n variants.add(normalized);\n\n if (path.isAbsolute(value) || isWindowsAbsolutePath(normalized)) {\n if (isInside(value, rootDir)) {\n const relativeToRoot = normalizeAssetRelativePath(\n path.relative(rootDir, value)\n );\n if (relativeToRoot) {\n variants.add(relativeToRoot);\n }\n }\n\n return variants;\n }\n\n const relativePath = normalizeAssetRelativePath(value);\n if (relativePath) {\n variants.add(relativePath);\n }\n\n return variants;\n};\n\nconst getStringValues = (value: unknown): string[] => {\n if (!Array.isArray(value)) return [];\n\n return value.filter((item): item is string => typeof item === 'string');\n};\n\nconst getOutputAssetNames = (asset: OutputAssetLike): string[] => [\n ...(typeof asset.name === 'string' ? [asset.name] : []),\n ...getStringValues(asset.names),\n ...(typeof asset.originalFileName === 'string'\n ? [asset.originalFileName]\n : []),\n ...getStringValues(asset.originalFileNames),\n];\n\nconst isOutputAssetLike = (value: unknown): value is OutputAssetLike =>\n !!value &&\n typeof value === 'object' &&\n (value as { type?: unknown }).type === 'asset' &&\n typeof (value as { fileName?: unknown }).fileName === 'string';\n\nconst isOutputChunkLike = (value: unknown): value is OutputChunkLike =>\n !!value &&\n typeof value === 'object' &&\n (value as { type?: unknown }).type === 'chunk' &&\n typeof (value as { fileName?: unknown }).fileName === 'string' &&\n typeof (value as { code?: unknown }).code === 'string';\n\nconst getTrackedModuleIdForChunk = (\n chunk: OutputChunkLike,\n cssFilesByModuleId: Map<string, string>\n): string | null => {\n if (\n typeof chunk.facadeModuleId === 'string' &&\n cssFilesByModuleId.has(chunk.facadeModuleId)\n ) {\n return chunk.facadeModuleId;\n }\n\n if (!Array.isArray(chunk.moduleIds)) {\n return null;\n }\n\n const moduleId = chunk.moduleIds.find(\n (id): id is string => typeof id === 'string' && cssFilesByModuleId.has(id)\n );\n\n return moduleId ?? null;\n};\n\nconst findWywCssAssetFileName = (\n bundle: OutputBundleLike,\n cssFilename: string,\n rootDir: string\n): string | null => {\n const expectedNames = getComparableAssetPaths(cssFilename, rootDir);\n\n for (const item of Object.values(bundle)) {\n if (isOutputAssetLike(item) && item.fileName.endsWith('.css')) {\n const isMatch = getOutputAssetNames(item).some((assetName) => {\n const variants = getComparableAssetPaths(assetName, rootDir);\n return Array.from(variants).some((variant) =>\n expectedNames.has(variant)\n );\n });\n\n if (isMatch) {\n return normalizeToPosix(item.fileName);\n }\n }\n }\n\n return null;\n};\n\nconst getRelativeImportPath = (\n fromFileName: string,\n toFileName: string\n): string => {\n const fromDir = path.posix.dirname(normalizeToPosix(fromFileName));\n const relativePath = path.posix.relative(\n fromDir,\n normalizeToPosix(toFileName)\n );\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`;\n};\n\nconst escapeForRegExp = (value: string): string =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst hasStaticImport = (code: string, specifier: string): boolean =>\n new RegExp(\n `(^|\\\\n)\\\\s*import\\\\s*(?:[\"']${escapeForRegExp(\n specifier\n )}[\"']|[^\\\\n;]+\\\\s+from\\\\s+[\"']${escapeForRegExp(specifier)}[\"'])`,\n 'm'\n ).test(code);\n\nconst hasRequireCall = (code: string, specifier: string): boolean =>\n new RegExp(\n `(^|[;\\\\n])\\\\s*require\\\\(\\\\s*[\"']${escapeForRegExp(specifier)}[\"']\\\\s*\\\\)`,\n 'm'\n ).test(code);\n\nconst getCssLoadStatement = (format: unknown, specifier: string): string =>\n format === 'cjs'\n ? `require(${JSON.stringify(specifier)});\\n`\n : `import ${JSON.stringify(specifier)};\\n`;\n\nconst hasCssLoadStatement = (\n code: string,\n specifier: string,\n format: unknown\n): boolean =>\n format === 'cjs'\n ? hasRequireCall(code, specifier)\n : hasStaticImport(code, specifier);\n\nconst prependCssLoadStatement = (\n code: string,\n specifier: string,\n format: unknown\n): string => {\n const statement = getCssLoadStatement(format, specifier);\n let insertAt = 0;\n\n if (code.startsWith('#!')) {\n const lineBreakIndex = code.indexOf('\\n');\n if (lineBreakIndex >= 0) {\n insertAt = lineBreakIndex + 1;\n } else {\n return `${code}\\n${statement}`;\n }\n }\n\n if (format === 'cjs') {\n const directiveMatch =\n /^(?:\\s*(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*');)+/.exec(\n code.slice(insertAt)\n );\n\n if (directiveMatch) {\n insertAt += directiveMatch[0].length;\n }\n }\n\n return `${code.slice(0, insertAt)}${statement}${code.slice(insertAt)}`;\n};\n\nconst VITE_FS_PREFIX = '/@fs/';\n\nconst safeDecodeURIComponent = (value: string): string => {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n};\n\nconst normalizeViteFsPath = (value: string): string => {\n const fsPath = value.slice(VITE_FS_PREFIX.length);\n return path.normalize(safeDecodeURIComponent(fsPath));\n};\n\nconst isCssReloadTarget = (value: unknown): value is CssReloadTarget => {\n if (!value || typeof value !== 'object') return false;\n\n const reloadTarget = value as Partial<CssReloadTarget>;\n return (\n !!reloadTarget.moduleGraph &&\n typeof reloadTarget.moduleGraph.getModuleById === 'function' &&\n typeof reloadTarget.reloadModule === 'function'\n );\n};\n\nconst getCssReloadTarget = (\n environment: unknown,\n server: ViteDevServer | undefined\n): CssReloadTarget | null => {\n if (isCssReloadTarget(environment)) {\n return environment;\n }\n\n if (server?.moduleGraph) {\n return {\n moduleGraph: server.moduleGraph,\n reloadModule: (module) => server.reloadModule(module),\n };\n }\n\n return null;\n};\n\nconst getWywCssAssetFileNames = (\n resolvedConfig: ResolvedConfig,\n output: RollupOutputLike,\n originalAssetFileNames: AssetFileNames\n): ((assetInfo: AssetInfoLike) => string) | null => {\n if (!output.preserveModules) return null;\n\n const rootDir = resolvedConfig.root;\n\n const preserveModulesRootValue = output.preserveModulesRoot;\n let preserveModulesRootAbs: string | null = null;\n if (typeof preserveModulesRootValue === 'string') {\n preserveModulesRootAbs = path.isAbsolute(preserveModulesRootValue)\n ? preserveModulesRootValue\n : path.resolve(rootDir, preserveModulesRootValue);\n }\n\n const preserveModulesRootRel =\n preserveModulesRootAbs && isInside(preserveModulesRootAbs, rootDir)\n ? normalizeToPosix(path.relative(rootDir, preserveModulesRootAbs))\n : null;\n\n return (assetInfo) => {\n const template =\n typeof originalAssetFileNames === 'function'\n ? originalAssetFileNames(assetInfo)\n : originalAssetFileNames;\n\n const assetName = assetInfo?.name;\n if (typeof assetName !== 'string' || !isWywCssAssetName(assetName)) {\n return template;\n }\n\n if (!template.includes('[')) {\n return template;\n }\n\n let relativePath: string | null = null;\n\n const assetNameNormalized = normalizeToPosix(assetName);\n\n if (\n path.isAbsolute(assetName) ||\n isWindowsAbsolutePath(assetNameNormalized)\n ) {\n const preserveRel =\n preserveModulesRootAbs && isInside(assetName, preserveModulesRootAbs)\n ? path.relative(preserveModulesRootAbs, assetName)\n : null;\n\n if (\n preserveRel &&\n !path.isAbsolute(preserveRel) &&\n !preserveRel.startsWith('..')\n ) {\n relativePath = preserveRel;\n } else if (isInside(assetName, rootDir)) {\n relativePath = path.relative(rootDir, assetName);\n }\n } else if (\n preserveModulesRootRel &&\n assetNameNormalized.startsWith(`${preserveModulesRootRel}/`)\n ) {\n relativePath = assetNameNormalized.slice(\n preserveModulesRootRel.length + 1\n );\n } else {\n relativePath = assetNameNormalized;\n }\n\n const normalized = relativePath\n ? normalizeAssetRelativePath(relativePath)\n : null;\n if (!normalized) {\n return template;\n }\n\n const withoutExt = stripExtension(normalized);\n\n if (template.includes('[name]')) {\n const dir = path.posix.dirname(withoutExt);\n if (dir === '.' || dir === '') {\n return template;\n }\n\n return template.replace(/\\[name\\]/g, `${dir}/[name]`);\n }\n\n const dir = path.posix.dirname(withoutExt);\n if (dir === '.' || dir === '') {\n return template;\n }\n\n const idx = template.indexOf('[');\n if (idx < 0) {\n return template;\n }\n\n const prefix = template.slice(0, idx);\n if (prefix !== '' && !prefix.endsWith('/')) {\n return template;\n }\n\n return `${prefix}${dir}/${template.slice(idx)}`;\n };\n};\n\nexport default function wywInJS({\n debug,\n include,\n exclude,\n sourceMap,\n preserveCssPaths,\n keepComments,\n prefixer,\n preprocessor,\n ssrDevCss,\n ssrDevCssPath,\n transformLibraries,\n ...rest\n}: VitePluginOptions = {}): Plugin {\n const filter = createFilter(include, exclude);\n const cssLookup: { [key: string]: string } = {};\n const cssFileLookup: { [key: string]: string } = {};\n const cssFilesByModuleId = new Map<string, string>();\n const pendingCssReloads = new WeakMap<\n CssReloadTarget,\n { files: Set<string>; timer?: ReturnType<typeof setTimeout> }\n >();\n let ssrDevCssVersion = 0;\n let config: ResolvedConfig;\n let devServer: ViteDevServer;\n let importMetaEnvForEval: {\n client: Record<string, unknown>;\n ssr: Record<string, unknown>;\n } | null = null;\n\n const ssrDevCssEnabled = Boolean(ssrDevCss);\n const [ssrDevCssPathname, ssrDevCssQuery] = (\n ssrDevCssPath ?? '/_wyw-in-js/ssr.css'\n ).split('?', 2);\n const ssrDevCssRoute = ssrDevCssPathname.startsWith('/')\n ? ssrDevCssPathname\n : `/${ssrDevCssPathname}`;\n\n const getSsrDevCssHref = () => {\n const versionParam = `v=${ssrDevCssVersion}`;\n const query = ssrDevCssQuery\n ? `${ssrDevCssQuery}&${versionParam}`\n : versionParam;\n return `${ssrDevCssRoute}?${query}`;\n };\n\n const getSsrDevCssContents = () => {\n const entries = Object.entries(cssLookup);\n if (entries.length === 0) return '';\n\n const merged = entries\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([, cssText]) => cssText)\n .join('\\n');\n return `${merged}\\n`;\n };\n\n const { emitter, onDone } = createFileReporter(debug ?? false);\n\n const scheduleCssReload = (\n reloadTarget: CssReloadTarget,\n cssFilename: string\n ) => {\n let state = pendingCssReloads.get(reloadTarget);\n if (!state) {\n state = { files: new Set() };\n pendingCssReloads.set(reloadTarget, state);\n }\n state.files.add(cssFilename);\n\n if (state.timer) return;\n state.timer = setTimeout(() => {\n state.timer = undefined;\n\n const ids = Array.from(state.files);\n state.files.clear();\n\n const { moduleGraph } = reloadTarget;\n for (const id of ids) {\n const module = moduleGraph.getModuleById(id);\n if (module) reloadTarget.reloadModule(module);\n }\n }, 0);\n };\n\n // <dependency id, targets>\n const targets: { dependencies: string[]; id: string }[] = [];\n const clientCache = new TransformCacheCollection();\n const ssrCache = new TransformCacheCollection();\n const caches = new Set<TransformCacheCollection>([clientCache, ssrCache]);\n\n const getCache = (isSsr: boolean): TransformCacheCollection =>\n isSsr ? ssrCache : clientCache;\n\n type DepInfoLike = { file: string; processing?: Promise<void> };\n type DepsOptimizerLike = {\n init?: () => Promise<void>;\n isOptimizedDepFile?: (id: string) => boolean;\n metadata?: { depInfoList?: DepInfoLike[] };\n scanProcessing?: Promise<void>;\n };\n\n type ViteServerWithDepsOptimizer = ViteDevServer & {\n _depsOptimizer?: DepsOptimizerLike;\n depsOptimizer?: DepsOptimizerLike;\n environments?: Record<string, { depsOptimizer?: DepsOptimizerLike }>;\n };\n\n const isInsideCacheDir = (filename: string): boolean => {\n if (!config.cacheDir) {\n return false;\n }\n\n const relative = path.relative(config.cacheDir, filename);\n return (\n relative !== '' &&\n !relative.startsWith('..') &&\n !path.isAbsolute(relative)\n );\n };\n\n const getDepsOptimizer = (): DepsOptimizerLike | null => {\n if (!devServer) return null;\n\n const server = devServer as unknown as ViteServerWithDepsOptimizer;\n return (\n server.environments?.client?.depsOptimizer ??\n server.depsOptimizer ??\n server._depsOptimizer ??\n null\n );\n };\n\n const waitForOptimizedDep = async (filename: string): Promise<boolean> => {\n const depsOptimizer = getDepsOptimizer();\n if (!depsOptimizer?.isOptimizedDepFile?.(filename)) {\n return false;\n }\n\n await depsOptimizer.init?.();\n await depsOptimizer.scanProcessing;\n\n const info = depsOptimizer.metadata?.depInfoList?.find(\n (item) => item.file === filename\n );\n if (info?.processing) {\n await info.processing;\n }\n\n return true;\n };\n\n type ViteResolver = ReturnType<ResolvedConfig['createResolver']>;\n type ViteResolverResult = Awaited<ReturnType<ViteResolver>>;\n type ResolveFn = (\n what: string,\n importer: string\n ) => Promise<ViteResolverResult>;\n\n let viteResolver: ViteResolver | null = null;\n\n const resolveClient: ResolveFn = (what, importer) => {\n if (!viteResolver) {\n throw new Error('Vite resolver is not initialized yet');\n }\n\n return viteResolver(what, importer, false, false);\n };\n\n const resolveSsr: ResolveFn = (what, importer) => {\n if (!viteResolver) {\n throw new Error('Vite resolver is not initialized yet');\n }\n\n return viteResolver(what, importer, false, true);\n };\n\n const createAsyncResolver = asyncResolverFactory(\n async (\n resolved: ViteResolverResult,\n what: string,\n importer: string,\n stack: string[]\n ): Promise<string | null> => {\n const log = logger.extend('vite').extend(getFileIdx(importer));\n\n if (resolved) {\n log(\"resolve ✅ '%s'@'%s -> %O\\n%s\", what, importer, resolved);\n\n // Vite adds param like `?v=667939b3` to cached modules\n let resolvedId = resolved.split('?', 1)[0];\n\n if (resolvedId.startsWith('\\0')) {\n // \\0 is a special character in Rollup that tells Rollup to not include this in the bundle\n // https://rollupjs.org/guide/en/#outputexports\n return null;\n }\n\n if (resolvedId.startsWith(VITE_FS_PREFIX)) {\n resolvedId = normalizeViteFsPath(resolvedId);\n }\n\n if (resolvedId.startsWith('/@')) {\n return null;\n }\n\n if (!existsSync(resolvedId)) {\n // When Vite resolves to an optimized deps entry (cacheDir) it may not be written yet.\n // Wait for Vite's optimizer instead of calling optimizeDeps() manually (deprecated in Vite 7).\n try {\n await waitForOptimizedDep(resolvedId);\n } catch {\n // If optimizer failed, fall through to preserve previous behavior and surface the error.\n }\n\n // Vite can return an optimized deps entry (from cacheDir) before it's written to disk.\n // Manually calling optimizeDeps is deprecated in Vite 7 and can also get called many times.\n // Instead, fall back to resolving the original module path directly.\n if (!existsSync(resolvedId) && isInsideCacheDir(resolvedId)) {\n try {\n return syncResolve(what, importer, stack);\n } catch {\n // Fall through to preserve previous behavior: return resolvedId and let WyW surface the error.\n }\n }\n }\n\n if (!existsSync(resolvedId) && !path.isAbsolute(resolvedId)) {\n // Vite can resolve an import to a bare specifier when bundling for SSR and marking it as external.\n // In that case we still need a real file path for WyW evaluation.\n return syncResolve(what, importer, stack);\n }\n\n return resolvedId;\n }\n\n log(\"resolve ❌ '%s'@'%s\", what, importer);\n\n // Vite can inject virtual ids like /@react-refresh in dev.\n if (what.startsWith('/@') || what.startsWith('\\0')) {\n return null;\n }\n\n if (\n !what.startsWith('.') &&\n !what.startsWith('/') &&\n !path.isAbsolute(what)\n ) {\n // Keep compatibility with SSR externalization: fall back to Node resolution for bare specifiers.\n return syncResolve(what, importer, stack);\n }\n\n throw new Error(`Could not resolve ${what}`);\n },\n (what, importer) => [what, importer]\n );\n\n const asyncResolveClient = createAsyncResolver(resolveClient);\n const asyncResolveSsr = createAsyncResolver(resolveSsr);\n\n return {\n name: 'wyw-in-js',\n enforce: 'post',\n buildEnd() {\n onDone(process.cwd());\n },\n configResolved(resolvedConfig: ResolvedConfig) {\n config = resolvedConfig;\n viteResolver = config.createResolver();\n\n if (preserveCssPaths && config.command === 'build') {\n const outputs = config.build.rollupOptions.output;\n let outputEntries: unknown[] = [];\n if (Array.isArray(outputs)) {\n outputEntries = outputs;\n } else if (outputs) {\n outputEntries = [outputs];\n }\n\n outputEntries.forEach((entry) => {\n if (!entry || typeof entry !== 'object') return;\n\n const output = entry as RollupOutputLike;\n if (!output.preserveModules) return;\n\n const template: AssetFileNames =\n output.assetFileNames ??\n `${config.build.assetsDir ?? 'assets'}/[name].[hash].[ext]`;\n\n const assetFileNames = getWywCssAssetFileNames(\n config,\n output,\n template\n );\n if (assetFileNames) output.assetFileNames = assetFileNames;\n });\n }\n\n const envPrefix = config.envPrefix ?? 'VITE_';\n const envDir =\n // envDir is absolute in modern Vite, but keep a fallback for older versions\n 'envDir' in config && typeof config.envDir === 'string'\n ? config.envDir\n : config.root;\n\n const loaded = loadEnv(config.mode, envDir, envPrefix);\n const base = {\n ...loaded,\n BASE_URL: config.base,\n MODE: config.mode,\n DEV: config.command === 'serve',\n PROD: config.command === 'build',\n };\n\n importMetaEnvForEval = {\n client: { ...base, SSR: false },\n ssr: { ...base, SSR: true },\n };\n },\n configureServer(_server) {\n devServer = _server;\n\n if (!ssrDevCssEnabled || config.command !== 'serve') return;\n\n devServer.middlewares.use(\n (req: IncomingMessage, res: ServerResponse, next: () => void) => {\n const { url } = req;\n if (!url) {\n next();\n return;\n }\n\n const [pathname] = url.split('?', 1);\n if (pathname !== ssrDevCssRoute) {\n next();\n return;\n }\n\n const etag = `W/\"${ssrDevCssVersion}\"`;\n const ifNoneMatch = req.headers['if-none-match'];\n if (ifNoneMatch === etag) {\n res.statusCode = 304;\n res.end();\n return;\n }\n\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/css; charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('ETag', etag);\n res.end(getSsrDevCssContents());\n }\n );\n },\n transformIndexHtml(html) {\n if (!ssrDevCssEnabled || config.command !== 'serve') return undefined;\n\n return {\n html,\n tags: [\n {\n tag: 'link',\n attrs: { rel: 'stylesheet', href: getSsrDevCssHref() },\n injectTo: 'head-prepend',\n },\n ],\n };\n },\n load(url: string) {\n const [id] = url.split('?', 1);\n return cssLookup[id];\n },\n /* eslint-disable-next-line consistent-return */\n resolveId(importeeUrl: string) {\n const [id] = importeeUrl.split('?', 1);\n if (cssLookup[id]) return id;\n return cssFileLookup[id];\n },\n handleHotUpdate(ctx) {\n // it's module, so just transform it\n if (ctx.modules.length) return ctx.modules;\n\n // Select affected modules of changed dependency\n const affected = targets.filter(\n (x) =>\n // file is dependency of any target\n x.dependencies.some((dep) => dep === ctx.file) ||\n // or changed module is a dependency of any target\n x.dependencies.some((dep) => ctx.modules.some((m) => m.file === dep))\n );\n const deps = affected.flatMap((target) => target.dependencies);\n\n // eslint-disable-next-line no-restricted-syntax\n for (const depId of deps) {\n for (const cache of caches) {\n cache.invalidateForFile(depId);\n }\n }\n\n return affected\n .map((target) => devServer.moduleGraph.getModuleById(target.id))\n .concat(ctx.modules)\n .filter((m): m is ModuleNode => !!m);\n },\n generateBundle(outputOptions, bundle) {\n if (config.command !== 'build') return;\n if (!outputOptions.preserveModules) return;\n if (config.build.cssCodeSplit === false) return;\n\n Object.values(bundle as OutputBundleLike).forEach((item) => {\n if (!isOutputChunkLike(item)) {\n return;\n }\n\n const chunk = item;\n\n const moduleId = getTrackedModuleIdForChunk(chunk, cssFilesByModuleId);\n if (!moduleId) {\n return;\n }\n\n const cssFilename = cssFilesByModuleId.get(moduleId);\n if (!cssFilename) {\n return;\n }\n\n const emittedCssFileName = findWywCssAssetFileName(\n bundle as OutputBundleLike,\n cssFilename,\n config.root\n );\n if (!emittedCssFileName) {\n return;\n }\n\n const relativeCssImport = getRelativeImportPath(\n chunk.fileName,\n emittedCssFileName\n );\n if (\n hasCssLoadStatement(\n chunk.code,\n relativeCssImport,\n outputOptions.format\n )\n ) {\n return;\n }\n\n chunk.code = prependCssLoadStatement(\n chunk.code,\n relativeCssImport,\n outputOptions.format\n );\n });\n },\n async transform(\n code: string,\n url: string,\n transformOptions?: boolean | { ssr?: boolean }\n ) {\n const [id] = url.split('?', 1);\n\n // Do not transform ignored and generated files\n if (\n (!transformLibraries && url.includes('node_modules')) ||\n !filter(url) ||\n id in cssLookup\n )\n return;\n\n const log = logger.extend('vite').extend(getFileIdx(id));\n\n log('transform %s', id);\n\n const isSsr =\n typeof transformOptions === 'boolean'\n ? transformOptions\n : Boolean(transformOptions?.ssr);\n\n const overrideContext: OverrideContext = (context, filename) => {\n const env = importMetaEnvForEval?.[isSsr ? 'ssr' : 'client'];\n const withEnv = env\n ? { ...context, __wyw_import_meta_env: env }\n : context;\n\n return rest.overrideContext\n ? rest.overrideContext(withEnv, filename)\n : withEnv;\n };\n\n const transformServices = {\n options: {\n filename: id,\n root: process.cwd(),\n prefixer,\n keepComments,\n preprocessor,\n pluginOptions: {\n ...rest,\n overrideContext,\n },\n },\n cache: getCache(isSsr),\n emitWarning: (message: string) => this.warn(message),\n eventEmitter: emitter,\n };\n\n const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;\n\n const result = await transform(transformServices, code, asyncResolve);\n\n let { cssText, dependencies } = result;\n\n // Heads up, there are three cases:\n // 1. cssText is undefined, it means that file was not transformed\n // 2. cssText is empty, it means that file was transformed, but it does not contain any styles\n // 3. cssText is not empty, it means that file was transformed and it contains styles\n\n if (typeof cssText === 'undefined') {\n cssFilesByModuleId.delete(id);\n return;\n }\n\n if (cssText === '') {\n cssFilesByModuleId.delete(id);\n /* eslint-disable-next-line consistent-return */\n return {\n code: result.code,\n map: result.sourceMap,\n };\n }\n\n dependencies ??= [];\n\n const cssFilename = path\n .normalize(`${id.replace(/\\.[jt]sx?$/, '')}.wyw-in-js.css`)\n .replace(/\\\\/g, path.posix.sep);\n cssFilesByModuleId.set(id, cssFilename);\n\n const cssRelativePath = path\n .relative(config.root, cssFilename)\n .replace(/\\\\/g, path.posix.sep);\n\n const cssId = `/${cssRelativePath}`;\n\n if (sourceMap && result.cssSourceMapText) {\n const map = Buffer.from(result.cssSourceMapText).toString('base64');\n cssText += `/*# sourceMappingURL=data:application/json;base64,${map}*/`;\n }\n\n const didCssChange = cssLookup[cssFilename] !== cssText;\n cssLookup[cssFilename] = cssText;\n cssFileLookup[cssId] = cssFilename;\n\n result.code += `\\nimport ${JSON.stringify(cssFilename)};\\n`;\n\n for (let i = 0, end = dependencies.length; i < end; i++) {\n // eslint-disable-next-line no-await-in-loop\n const depModule = await this.resolve(dependencies[i], url, {\n isEntry: false,\n });\n if (depModule) dependencies[i] = depModule.id;\n }\n const target = targets.find((t) => t.id === id);\n if (!target) targets.push({ id, dependencies });\n else target.dependencies = dependencies;\n\n if (didCssChange) {\n const reloadTarget = getCssReloadTarget(\n (this as typeof this & { environment?: unknown }).environment,\n devServer\n );\n if (reloadTarget) {\n scheduleCssReload(reloadTarget, cssFilename);\n }\n if (ssrDevCssEnabled && config.command === 'serve') {\n ssrDevCssVersion += 1;\n }\n }\n /* eslint-disable-next-line consistent-return */\n return { code: result.code, map: result.sourceMap };\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.mjs","names":["existsSync","path","createFilter","loadEnv","asyncResolverFactory","logger","syncResolve","transformPkg","createTransformManifest","createFileReporter","getFileIdx","stringifyTransformManifest","transform","TransformCacheCollection","createMetadataManifest","metadata","context","version","stringifyMetadataManifest","manifest","JSON","stringify","isWindowsAbsolutePath","value","test","normalizeToPosix","replace","posix","sep","isInside","childPath","parentPath","rel","relative","startsWith","isAbsolute","isWywCssAssetName","endsWith","normalizeAssetRelativePath","normalized","normalize","stripExtension","ext","extname","slice","length","getComparableAssetPaths","rootDir","variants","Set","add","relativeToRoot","relativePath","getStringValues","Array","isArray","filter","item","getOutputAssetNames","asset","name","names","originalFileName","originalFileNames","isOutputAssetLike","type","fileName","isOutputChunkLike","code","getTrackedModuleIdForChunk","chunk","cssFilesByModuleId","facadeModuleId","has","moduleIds","moduleId","find","id","findWywCssAssetFileName","bundle","cssFilename","expectedNames","Object","values","isMatch","some","assetName","from","variant","getRelativeImportPath","fromFileName","toFileName","fromDir","dirname","escapeForRegExp","hasStaticImport","specifier","RegExp","hasRequireCall","getCssLoadStatement","format","hasCssLoadStatement","prependCssLoadStatement","statement","insertAt","lineBreakIndex","indexOf","directiveMatch","exec","VITE_FS_PREFIX","safeDecodeURIComponent","decodeURIComponent","normalizeViteFsPath","fsPath","isCssReloadTarget","reloadTarget","moduleGraph","getModuleById","reloadModule","getCssReloadTarget","environment","server","module","getWywCssAssetFileNames","resolvedConfig","output","originalAssetFileNames","preserveModules","root","preserveModulesRootValue","preserveModulesRoot","preserveModulesRootAbs","resolve","preserveModulesRootRel","assetInfo","template","includes","assetNameNormalized","preserveRel","withoutExt","dir","idx","prefix","wywInJS","debug","include","exclude","sourceMap","preserveCssPaths","keepComments","prefixer","preprocessor","ssrDevCss","ssrDevCssPath","transformLibraries","rest","supportedModuleExtensions","cssLookup","cssFileLookup","metadataLookup","Map","pendingCssReloads","WeakMap","ssrDevCssVersion","config","devServer","importMetaEnvForEval","ssrDevCssEnabled","Boolean","ssrDevCssPathname","ssrDevCssQuery","split","ssrDevCssRoute","getSsrDevCssHref","versionParam","query","getSsrDevCssContents","entries","merged","sort","a","b","localeCompare","map","cssText","join","emitter","onDone","isSafeAssetPath","replaceModuleExtension","filename","nextExtension","extension","toBundleRelativePath","segment","scheduleCssReload","state","get","files","set","timer","setTimeout","undefined","ids","clear","targets","clientCache","ssrCache","caches","getCache","isSsr","isInsideCacheDir","cacheDir","getDepsOptimizer","environments","client","depsOptimizer","_depsOptimizer","waitForOptimizedDep","isOptimizedDepFile","init","scanProcessing","info","depInfoList","file","processing","viteResolver","resolveClient","what","importer","Error","resolveSsr","createAsyncResolver","resolved","stack","log","extend","resolvedId","asyncResolveClient","asyncResolveSsr","enforce","buildStart","keys","forEach","key","buildEnd","process","cwd","configResolved","createResolver","command","outputs","build","rollupOptions","outputEntries","entry","assetFileNames","assetsDir","envPrefix","envDir","loaded","mode","base","BASE_URL","MODE","DEV","PROD","SSR","ssr","configureServer","_server","middlewares","use","req","res","next","url","pathname","etag","ifNoneMatch","headers","statusCode","end","setHeader","transformIndexHtml","html","tags","tag","attrs","href","injectTo","load","resolveId","importeeUrl","handleHotUpdate","ctx","modules","affected","x","dependencies","dep","m","deps","flatMap","target","depId","cache","invalidateForFile","concat","generateBundle","outputOptions","source","emitFile","cssCodeSplit","emittedCssFileName","relativeCssImport","transformOptions","overrideContext","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","asyncResolve","result","diagnostics","diagnostic","loc","start","column","line","severity","category","pluginCode","relativeId","metadataFilename","metadataRelativePath","cssFile","delete","cssRelativePath","cssId","cssSourceMapText","Buffer","toString","didCssChange","i","depModule","isEntry","t","push"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This file contains a Vite loader for wyw-in-js.\n * It uses the transform.ts function to generate class names from source code,\n * returns transformed code without template literals and attaches generated source maps\n */\n\nimport { existsSync } from 'fs';\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport path from 'path';\n\nimport { createFilter, loadEnv } from 'vite';\nimport type {\n ModuleNode,\n Plugin,\n ResolvedConfig,\n ViteDevServer,\n FilterPattern,\n} from 'vite';\n\nimport { asyncResolverFactory, logger, syncResolve } from '@wyw-in-js/shared';\nimport type {\n IFileReporterOptions,\n PluginOptions,\n Preprocessor,\n Result as TransformResult,\n TransformCacheCollection as TransformCacheCollectionType,\n} from '@wyw-in-js/transform';\nimport * as transformPkg from '@wyw-in-js/transform';\n\nconst {\n createTransformManifest,\n createFileReporter,\n getFileIdx,\n stringifyTransformManifest,\n transform,\n TransformCacheCollection,\n} = transformPkg;\n\ntype MetadataManifest = NonNullable<TransformResult['metadata']> & {\n cssFile?: string;\n source: string;\n version: 1;\n};\n\nconst createMetadataManifest = (\n metadata: NonNullable<TransformResult['metadata']>,\n context: Pick<MetadataManifest, 'cssFile' | 'source'>\n): MetadataManifest =>\n typeof createTransformManifest === 'function'\n ? createTransformManifest(metadata, context)\n : {\n ...metadata,\n ...context,\n version: 1,\n };\n\nconst stringifyMetadataManifest = (manifest: MetadataManifest): string =>\n typeof stringifyTransformManifest === 'function'\n ? stringifyTransformManifest(manifest)\n : `${JSON.stringify(manifest, null, 2)}\\n`;\n\ntype VitePluginOptions = {\n debug?: IFileReporterOptions | false | null | undefined;\n exclude?: FilterPattern;\n include?: FilterPattern;\n keepComments?: boolean | RegExp;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n preserveCssPaths?: boolean;\n sourceMap?: boolean;\n ssrDevCss?: boolean;\n ssrDevCssPath?: string;\n transformLibraries?: boolean;\n} & Partial<PluginOptions>;\n\ntype OverrideContext = NonNullable<PluginOptions['overrideContext']>;\n\nexport { Plugin };\n\ntype AssetInfoLike = { name?: unknown };\ntype AssetFileNames = string | ((assetInfo: AssetInfoLike) => string);\ntype RollupOutputLike = {\n assetFileNames?: AssetFileNames;\n format?: unknown;\n preserveModules?: boolean;\n preserveModulesRoot?: unknown;\n} & Record<string, unknown>;\n\ntype OutputAssetLike = {\n fileName: string;\n name?: unknown;\n names?: unknown;\n originalFileName?: unknown;\n originalFileNames?: unknown;\n type: 'asset';\n};\n\ntype OutputChunkLike = {\n code: string;\n facadeModuleId?: unknown;\n fileName: string;\n moduleIds?: unknown;\n type: 'chunk';\n};\n\ntype OutputBundleLike = Record<string, OutputAssetLike | OutputChunkLike>;\n\ntype CssReloadTarget = {\n moduleGraph: {\n getModuleById(id: string): ModuleNode | null | undefined;\n };\n reloadModule(module: ModuleNode): void;\n};\n\nconst isWindowsAbsolutePath = (value: string): boolean =>\n /^[a-zA-Z]:[\\\\/]/.test(value);\n\nconst normalizeToPosix = (value: string): string =>\n value.replace(/\\\\/g, path.posix.sep);\n\nconst isInside = (childPath: string, parentPath: string): boolean => {\n const rel = path.relative(parentPath, childPath);\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));\n};\n\nconst isWywCssAssetName = (value: string): boolean =>\n value.endsWith('.wyw-in-js.css');\n\nconst normalizeAssetRelativePath = (value: string): string | null => {\n const normalized = path.posix.normalize(\n normalizeToPosix(value).replace(/^\\/+/, '')\n );\n if (normalized.startsWith('..') || path.posix.isAbsolute(normalized)) {\n return null;\n }\n\n return normalized;\n};\n\nconst stripExtension = (value: string): string => {\n const ext = path.posix.extname(value);\n return ext ? value.slice(0, -ext.length) : value;\n};\n\nconst getComparableAssetPaths = (\n value: string,\n rootDir: string\n): Set<string> => {\n const variants = new Set<string>();\n const normalized = normalizeToPosix(value);\n\n variants.add(normalized);\n\n if (path.isAbsolute(value) || isWindowsAbsolutePath(normalized)) {\n if (isInside(value, rootDir)) {\n const relativeToRoot = normalizeAssetRelativePath(\n path.relative(rootDir, value)\n );\n if (relativeToRoot) {\n variants.add(relativeToRoot);\n }\n }\n\n return variants;\n }\n\n const relativePath = normalizeAssetRelativePath(value);\n if (relativePath) {\n variants.add(relativePath);\n }\n\n return variants;\n};\n\nconst getStringValues = (value: unknown): string[] => {\n if (!Array.isArray(value)) return [];\n\n return value.filter((item): item is string => typeof item === 'string');\n};\n\nconst getOutputAssetNames = (asset: OutputAssetLike): string[] => [\n ...(typeof asset.name === 'string' ? [asset.name] : []),\n ...getStringValues(asset.names),\n ...(typeof asset.originalFileName === 'string'\n ? [asset.originalFileName]\n : []),\n ...getStringValues(asset.originalFileNames),\n];\n\nconst isOutputAssetLike = (value: unknown): value is OutputAssetLike =>\n !!value &&\n typeof value === 'object' &&\n (value as { type?: unknown }).type === 'asset' &&\n typeof (value as { fileName?: unknown }).fileName === 'string';\n\nconst isOutputChunkLike = (value: unknown): value is OutputChunkLike =>\n !!value &&\n typeof value === 'object' &&\n (value as { type?: unknown }).type === 'chunk' &&\n typeof (value as { fileName?: unknown }).fileName === 'string' &&\n typeof (value as { code?: unknown }).code === 'string';\n\nconst getTrackedModuleIdForChunk = (\n chunk: OutputChunkLike,\n cssFilesByModuleId: Map<string, string>\n): string | null => {\n if (\n typeof chunk.facadeModuleId === 'string' &&\n cssFilesByModuleId.has(chunk.facadeModuleId)\n ) {\n return chunk.facadeModuleId;\n }\n\n if (!Array.isArray(chunk.moduleIds)) {\n return null;\n }\n\n const moduleId = chunk.moduleIds.find(\n (id): id is string => typeof id === 'string' && cssFilesByModuleId.has(id)\n );\n\n return moduleId ?? null;\n};\n\nconst findWywCssAssetFileName = (\n bundle: OutputBundleLike,\n cssFilename: string,\n rootDir: string\n): string | null => {\n const expectedNames = getComparableAssetPaths(cssFilename, rootDir);\n\n for (const item of Object.values(bundle)) {\n if (isOutputAssetLike(item) && item.fileName.endsWith('.css')) {\n const isMatch = getOutputAssetNames(item).some((assetName) => {\n const variants = getComparableAssetPaths(assetName, rootDir);\n return Array.from(variants).some((variant) =>\n expectedNames.has(variant)\n );\n });\n\n if (isMatch) {\n return normalizeToPosix(item.fileName);\n }\n }\n }\n\n return null;\n};\n\nconst getRelativeImportPath = (\n fromFileName: string,\n toFileName: string\n): string => {\n const fromDir = path.posix.dirname(normalizeToPosix(fromFileName));\n const relativePath = path.posix.relative(\n fromDir,\n normalizeToPosix(toFileName)\n );\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`;\n};\n\nconst escapeForRegExp = (value: string): string =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst hasStaticImport = (code: string, specifier: string): boolean =>\n new RegExp(\n `(^|\\\\n)\\\\s*import\\\\s*(?:[\"']${escapeForRegExp(\n specifier\n )}[\"']|[^\\\\n;]+\\\\s+from\\\\s+[\"']${escapeForRegExp(specifier)}[\"'])`,\n 'm'\n ).test(code);\n\nconst hasRequireCall = (code: string, specifier: string): boolean =>\n new RegExp(\n `(^|[;\\\\n])\\\\s*require\\\\(\\\\s*[\"']${escapeForRegExp(specifier)}[\"']\\\\s*\\\\)`,\n 'm'\n ).test(code);\n\nconst getCssLoadStatement = (format: unknown, specifier: string): string =>\n format === 'cjs'\n ? `require(${JSON.stringify(specifier)});\\n`\n : `import ${JSON.stringify(specifier)};\\n`;\n\nconst hasCssLoadStatement = (\n code: string,\n specifier: string,\n format: unknown\n): boolean =>\n format === 'cjs'\n ? hasRequireCall(code, specifier)\n : hasStaticImport(code, specifier);\n\nconst prependCssLoadStatement = (\n code: string,\n specifier: string,\n format: unknown\n): string => {\n const statement = getCssLoadStatement(format, specifier);\n let insertAt = 0;\n\n if (code.startsWith('#!')) {\n const lineBreakIndex = code.indexOf('\\n');\n if (lineBreakIndex >= 0) {\n insertAt = lineBreakIndex + 1;\n } else {\n return `${code}\\n${statement}`;\n }\n }\n\n if (format === 'cjs') {\n const directiveMatch =\n /^(?:\\s*(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*');)+/.exec(\n code.slice(insertAt)\n );\n\n if (directiveMatch) {\n insertAt += directiveMatch[0].length;\n }\n }\n\n return `${code.slice(0, insertAt)}${statement}${code.slice(insertAt)}`;\n};\n\nconst VITE_FS_PREFIX = '/@fs/';\n\nconst safeDecodeURIComponent = (value: string): string => {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n};\n\nconst normalizeViteFsPath = (value: string): string => {\n const fsPath = value.slice(VITE_FS_PREFIX.length);\n return path.normalize(safeDecodeURIComponent(fsPath));\n};\n\nconst isCssReloadTarget = (value: unknown): value is CssReloadTarget => {\n if (!value || typeof value !== 'object') return false;\n\n const reloadTarget = value as Partial<CssReloadTarget>;\n return (\n !!reloadTarget.moduleGraph &&\n typeof reloadTarget.moduleGraph.getModuleById === 'function' &&\n typeof reloadTarget.reloadModule === 'function'\n );\n};\n\nconst getCssReloadTarget = (\n environment: unknown,\n server: ViteDevServer | undefined\n): CssReloadTarget | null => {\n if (isCssReloadTarget(environment)) {\n return environment;\n }\n\n if (server?.moduleGraph) {\n return {\n moduleGraph: server.moduleGraph,\n reloadModule: (module) => server.reloadModule(module),\n };\n }\n\n return null;\n};\n\nconst getWywCssAssetFileNames = (\n resolvedConfig: ResolvedConfig,\n output: RollupOutputLike,\n originalAssetFileNames: AssetFileNames\n): ((assetInfo: AssetInfoLike) => string) | null => {\n if (!output.preserveModules) return null;\n\n const rootDir = resolvedConfig.root;\n\n const preserveModulesRootValue = output.preserveModulesRoot;\n let preserveModulesRootAbs: string | null = null;\n if (typeof preserveModulesRootValue === 'string') {\n preserveModulesRootAbs = path.isAbsolute(preserveModulesRootValue)\n ? preserveModulesRootValue\n : path.resolve(rootDir, preserveModulesRootValue);\n }\n\n const preserveModulesRootRel =\n preserveModulesRootAbs && isInside(preserveModulesRootAbs, rootDir)\n ? normalizeToPosix(path.relative(rootDir, preserveModulesRootAbs))\n : null;\n\n return (assetInfo) => {\n const template =\n typeof originalAssetFileNames === 'function'\n ? originalAssetFileNames(assetInfo)\n : originalAssetFileNames;\n\n const assetName = assetInfo?.name;\n if (typeof assetName !== 'string' || !isWywCssAssetName(assetName)) {\n return template;\n }\n\n if (!template.includes('[')) {\n return template;\n }\n\n let relativePath: string | null = null;\n\n const assetNameNormalized = normalizeToPosix(assetName);\n\n if (\n path.isAbsolute(assetName) ||\n isWindowsAbsolutePath(assetNameNormalized)\n ) {\n const preserveRel =\n preserveModulesRootAbs && isInside(assetName, preserveModulesRootAbs)\n ? path.relative(preserveModulesRootAbs, assetName)\n : null;\n\n if (\n preserveRel &&\n !path.isAbsolute(preserveRel) &&\n !preserveRel.startsWith('..')\n ) {\n relativePath = preserveRel;\n } else if (isInside(assetName, rootDir)) {\n relativePath = path.relative(rootDir, assetName);\n }\n } else if (\n preserveModulesRootRel &&\n assetNameNormalized.startsWith(`${preserveModulesRootRel}/`)\n ) {\n relativePath = assetNameNormalized.slice(\n preserveModulesRootRel.length + 1\n );\n } else {\n relativePath = assetNameNormalized;\n }\n\n const normalized = relativePath\n ? normalizeAssetRelativePath(relativePath)\n : null;\n if (!normalized) {\n return template;\n }\n\n const withoutExt = stripExtension(normalized);\n\n if (template.includes('[name]')) {\n const dir = path.posix.dirname(withoutExt);\n if (dir === '.' || dir === '') {\n return template;\n }\n\n return template.replace(/\\[name\\]/g, `${dir}/[name]`);\n }\n\n const dir = path.posix.dirname(withoutExt);\n if (dir === '.' || dir === '') {\n return template;\n }\n\n const idx = template.indexOf('[');\n if (idx < 0) {\n return template;\n }\n\n const prefix = template.slice(0, idx);\n if (prefix !== '' && !prefix.endsWith('/')) {\n return template;\n }\n\n return `${prefix}${dir}/${template.slice(idx)}`;\n };\n};\n\nexport default function wywInJS({\n debug,\n include,\n exclude,\n sourceMap,\n preserveCssPaths,\n keepComments,\n prefixer,\n preprocessor,\n ssrDevCss,\n ssrDevCssPath,\n transformLibraries,\n ...rest\n}: VitePluginOptions = {}): Plugin {\n const supportedModuleExtensions = new Set([\n '.cjs',\n '.cts',\n '.js',\n '.jsx',\n '.mjs',\n '.mts',\n '.ts',\n '.tsx',\n ]);\n const filter = createFilter(include, exclude);\n const cssLookup: { [key: string]: string } = {};\n const cssFileLookup: { [key: string]: string } = {};\n const metadataLookup: { [key: string]: string } = {};\n const cssFilesByModuleId = new Map<string, string>();\n const pendingCssReloads = new WeakMap<\n CssReloadTarget,\n { files: Set<string>; timer?: ReturnType<typeof setTimeout> }\n >();\n let ssrDevCssVersion = 0;\n let config: ResolvedConfig;\n let devServer: ViteDevServer;\n let importMetaEnvForEval: {\n client: Record<string, unknown>;\n ssr: Record<string, unknown>;\n } | null = null;\n\n const ssrDevCssEnabled = Boolean(ssrDevCss);\n const [ssrDevCssPathname, ssrDevCssQuery] = (\n ssrDevCssPath ?? '/_wyw-in-js/ssr.css'\n ).split('?', 2);\n const ssrDevCssRoute = ssrDevCssPathname.startsWith('/')\n ? ssrDevCssPathname\n : `/${ssrDevCssPathname}`;\n\n const getSsrDevCssHref = () => {\n const versionParam = `v=${ssrDevCssVersion}`;\n const query = ssrDevCssQuery\n ? `${ssrDevCssQuery}&${versionParam}`\n : versionParam;\n return `${ssrDevCssRoute}?${query}`;\n };\n\n const getSsrDevCssContents = () => {\n const entries = Object.entries(cssLookup);\n if (entries.length === 0) return '';\n\n const merged = entries\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([, cssText]) => cssText)\n .join('\\n');\n return `${merged}\\n`;\n };\n\n const { emitter, onDone } = createFileReporter(debug ?? false);\n\n const isSafeAssetPath = (fileName: string) =>\n fileName !== '' &&\n fileName !== '..' &&\n !fileName.startsWith(`..${path.posix.sep}`) &&\n !path.posix.isAbsolute(fileName) &&\n !isWindowsAbsolutePath(fileName);\n\n const replaceModuleExtension = (filename: string, nextExtension: string) => {\n const extension = path.extname(filename);\n return supportedModuleExtensions.has(extension)\n ? `${filename.slice(0, -extension.length)}${nextExtension}`\n : `${filename}${nextExtension}`;\n };\n\n const toBundleRelativePath = (filename: string) => {\n const relativePath = normalizeToPosix(path.relative(config.root, filename));\n\n if (isSafeAssetPath(relativePath)) {\n return relativePath;\n }\n\n if (\n !path.isAbsolute(relativePath) &&\n !isWindowsAbsolutePath(relativePath)\n ) {\n return path.posix.join(\n '_wyw-in-js',\n 'external',\n ...relativePath\n .split(path.posix.sep)\n .filter(Boolean)\n .map((segment) => (segment === '..' ? '__up__' : segment))\n );\n }\n\n return path.posix.join(\n '_wyw-in-js',\n 'external',\n ...normalizeToPosix(path.resolve(filename))\n .split(path.posix.sep)\n .filter(Boolean)\n .map((segment) => segment.replace(/:$/, ''))\n );\n };\n const scheduleCssReload = (\n reloadTarget: CssReloadTarget,\n cssFilename: string\n ) => {\n let state = pendingCssReloads.get(reloadTarget);\n if (!state) {\n state = { files: new Set() };\n pendingCssReloads.set(reloadTarget, state);\n }\n state.files.add(cssFilename);\n\n if (state.timer) return;\n state.timer = setTimeout(() => {\n state.timer = undefined;\n\n const ids = Array.from(state.files);\n state.files.clear();\n\n const { moduleGraph } = reloadTarget;\n for (const id of ids) {\n const module = moduleGraph.getModuleById(id);\n if (module) reloadTarget.reloadModule(module);\n }\n }, 0);\n };\n\n // <dependency id, targets>\n const targets: { dependencies: string[]; id: string }[] = [];\n const clientCache = new TransformCacheCollection();\n const ssrCache = new TransformCacheCollection();\n const caches = new Set<TransformCacheCollectionType>([clientCache, ssrCache]);\n\n const getCache = (isSsr: boolean): TransformCacheCollectionType =>\n isSsr ? ssrCache : clientCache;\n\n type DepInfoLike = { file: string; processing?: Promise<void> };\n type DepsOptimizerLike = {\n init?: () => Promise<void>;\n isOptimizedDepFile?: (id: string) => boolean;\n metadata?: { depInfoList?: DepInfoLike[] };\n scanProcessing?: Promise<void>;\n };\n\n type ViteServerWithDepsOptimizer = ViteDevServer & {\n _depsOptimizer?: DepsOptimizerLike;\n depsOptimizer?: DepsOptimizerLike;\n environments?: Record<string, { depsOptimizer?: DepsOptimizerLike }>;\n };\n\n const isInsideCacheDir = (filename: string): boolean => {\n if (!config.cacheDir) {\n return false;\n }\n\n const relative = path.relative(config.cacheDir, filename);\n return (\n relative !== '' &&\n !relative.startsWith('..') &&\n !path.isAbsolute(relative)\n );\n };\n\n const getDepsOptimizer = (): DepsOptimizerLike | null => {\n if (!devServer) return null;\n\n const server = devServer as unknown as ViteServerWithDepsOptimizer;\n return (\n server.environments?.client?.depsOptimizer ??\n server.depsOptimizer ??\n server._depsOptimizer ??\n null\n );\n };\n\n const waitForOptimizedDep = async (filename: string): Promise<boolean> => {\n const depsOptimizer = getDepsOptimizer();\n if (!depsOptimizer?.isOptimizedDepFile?.(filename)) {\n return false;\n }\n\n await depsOptimizer.init?.();\n await depsOptimizer.scanProcessing;\n\n const info = depsOptimizer.metadata?.depInfoList?.find(\n (item) => item.file === filename\n );\n if (info?.processing) {\n await info.processing;\n }\n\n return true;\n };\n\n type ViteResolver = ReturnType<ResolvedConfig['createResolver']>;\n type ViteResolverResult = Awaited<ReturnType<ViteResolver>>;\n type ResolveFn = (\n what: string,\n importer: string\n ) => Promise<ViteResolverResult>;\n\n let viteResolver: ViteResolver | null = null;\n\n const resolveClient: ResolveFn = (what, importer) => {\n if (!viteResolver) {\n throw new Error('Vite resolver is not initialized yet');\n }\n\n return viteResolver(what, importer, false, false);\n };\n\n const resolveSsr: ResolveFn = (what, importer) => {\n if (!viteResolver) {\n throw new Error('Vite resolver is not initialized yet');\n }\n\n return viteResolver(what, importer, false, true);\n };\n\n const createAsyncResolver = asyncResolverFactory(\n async (\n resolved: ViteResolverResult,\n what: string,\n importer: string,\n stack: string[]\n ): Promise<string | null> => {\n const log = logger.extend('vite').extend(getFileIdx(importer));\n\n if (resolved) {\n log(\"resolve ✅ '%s'@'%s -> %O\\n%s\", what, importer, resolved);\n\n // Vite adds param like `?v=667939b3` to cached modules\n let resolvedId = resolved.split('?', 1)[0];\n\n if (resolvedId.startsWith('\\0')) {\n // \\0 is a special character in Rollup that tells Rollup to not include this in the bundle\n // https://rollupjs.org/guide/en/#outputexports\n return null;\n }\n\n if (resolvedId.startsWith(VITE_FS_PREFIX)) {\n resolvedId = normalizeViteFsPath(resolvedId);\n }\n\n if (resolvedId.startsWith('/@')) {\n return null;\n }\n\n if (!existsSync(resolvedId)) {\n // When Vite resolves to an optimized deps entry (cacheDir) it may not be written yet.\n // Wait for Vite's optimizer instead of calling optimizeDeps() manually (deprecated in Vite 7).\n try {\n await waitForOptimizedDep(resolvedId);\n } catch {\n // If optimizer failed, fall through to preserve previous behavior and surface the error.\n }\n\n // Vite can return an optimized deps entry (from cacheDir) before it's written to disk.\n // Manually calling optimizeDeps is deprecated in Vite 7 and can also get called many times.\n // Instead, fall back to resolving the original module path directly.\n if (!existsSync(resolvedId) && isInsideCacheDir(resolvedId)) {\n try {\n return syncResolve(what, importer, stack);\n } catch {\n // Fall through to preserve previous behavior: return resolvedId and let WyW surface the error.\n }\n }\n }\n\n if (!existsSync(resolvedId) && !path.isAbsolute(resolvedId)) {\n // Vite can resolve an import to a bare specifier when bundling for SSR and marking it as external.\n // In that case we still need a real file path for WyW evaluation.\n return syncResolve(what, importer, stack);\n }\n\n return resolvedId;\n }\n\n log(\"resolve ❌ '%s'@'%s\", what, importer);\n\n // Vite can inject virtual ids like /@react-refresh in dev.\n if (what.startsWith('/@') || what.startsWith('\\0')) {\n return null;\n }\n\n if (\n !what.startsWith('.') &&\n !what.startsWith('/') &&\n !path.isAbsolute(what)\n ) {\n // Keep compatibility with SSR externalization: fall back to Node resolution for bare specifiers.\n return syncResolve(what, importer, stack);\n }\n\n throw new Error(`Could not resolve ${what}`);\n },\n (what, importer) => [what, importer]\n );\n\n const asyncResolveClient = createAsyncResolver(resolveClient);\n const asyncResolveSsr = createAsyncResolver(resolveSsr);\n\n return {\n name: 'wyw-in-js',\n enforce: 'post',\n buildStart() {\n Object.keys(metadataLookup).forEach((key) => {\n delete metadataLookup[key];\n });\n },\n buildEnd() {\n onDone(process.cwd());\n },\n configResolved(resolvedConfig: ResolvedConfig) {\n config = resolvedConfig;\n viteResolver = config.createResolver();\n\n if (preserveCssPaths && config.command === 'build') {\n const outputs = config.build.rollupOptions.output;\n let outputEntries: unknown[] = [];\n if (Array.isArray(outputs)) {\n outputEntries = outputs;\n } else if (outputs) {\n outputEntries = [outputs];\n }\n\n outputEntries.forEach((entry) => {\n if (!entry || typeof entry !== 'object') return;\n\n const output = entry as RollupOutputLike;\n if (!output.preserveModules) return;\n\n const template: AssetFileNames =\n output.assetFileNames ??\n `${config.build.assetsDir ?? 'assets'}/[name].[hash].[ext]`;\n\n const assetFileNames = getWywCssAssetFileNames(\n config,\n output,\n template\n );\n if (assetFileNames) output.assetFileNames = assetFileNames;\n });\n }\n\n const envPrefix = config.envPrefix ?? 'VITE_';\n const envDir =\n // envDir is absolute in modern Vite, but keep a fallback for older versions\n 'envDir' in config && typeof config.envDir === 'string'\n ? config.envDir\n : config.root;\n\n const loaded = loadEnv(config.mode, envDir, envPrefix);\n const base = {\n ...loaded,\n BASE_URL: config.base,\n MODE: config.mode,\n DEV: config.command === 'serve',\n PROD: config.command === 'build',\n };\n\n importMetaEnvForEval = {\n client: { ...base, SSR: false },\n ssr: { ...base, SSR: true },\n };\n },\n configureServer(_server) {\n devServer = _server;\n\n if (!ssrDevCssEnabled || config.command !== 'serve') return;\n\n devServer.middlewares.use(\n (req: IncomingMessage, res: ServerResponse, next: () => void) => {\n const { url } = req;\n if (!url) {\n next();\n return;\n }\n\n const [pathname] = url.split('?', 1);\n if (pathname !== ssrDevCssRoute) {\n next();\n return;\n }\n\n const etag = `W/\"${ssrDevCssVersion}\"`;\n const ifNoneMatch = req.headers['if-none-match'];\n if (ifNoneMatch === etag) {\n res.statusCode = 304;\n res.end();\n return;\n }\n\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/css; charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('ETag', etag);\n res.end(getSsrDevCssContents());\n }\n );\n },\n transformIndexHtml(html) {\n if (!ssrDevCssEnabled || config.command !== 'serve') return undefined;\n\n return {\n html,\n tags: [\n {\n tag: 'link',\n attrs: { rel: 'stylesheet', href: getSsrDevCssHref() },\n injectTo: 'head-prepend',\n },\n ],\n };\n },\n load(url: string) {\n const [id] = url.split('?', 1);\n return cssLookup[id];\n },\n /* eslint-disable-next-line consistent-return */\n resolveId(importeeUrl: string) {\n const [id] = importeeUrl.split('?', 1);\n if (cssLookup[id]) return id;\n return cssFileLookup[id];\n },\n handleHotUpdate(ctx) {\n // it's module, so just transform it\n if (ctx.modules.length) return ctx.modules;\n\n // Select affected modules of changed dependency\n const affected = targets.filter(\n (x) =>\n // file is dependency of any target\n x.dependencies.some((dep) => dep === ctx.file) ||\n // or changed module is a dependency of any target\n x.dependencies.some((dep) => ctx.modules.some((m) => m.file === dep))\n );\n const deps = affected.flatMap((target) => target.dependencies);\n\n // eslint-disable-next-line no-restricted-syntax\n for (const depId of deps) {\n for (const cache of caches) {\n cache.invalidateForFile(depId);\n }\n }\n\n return affected\n .map((target) => devServer.moduleGraph.getModuleById(target.id))\n .concat(ctx.modules)\n .filter((m): m is ModuleNode => !!m);\n },\n generateBundle(outputOptions, bundle) {\n Object.entries(metadataLookup).forEach(([fileName, source]) => {\n this.emitFile({\n fileName,\n source,\n type: 'asset',\n });\n });\n\n if (config.command !== 'build') return;\n if (!outputOptions.preserveModules) return;\n if (config.build.cssCodeSplit === false) return;\n\n Object.values(bundle as OutputBundleLike).forEach((item) => {\n if (!isOutputChunkLike(item)) {\n return;\n }\n\n const chunk = item;\n\n const moduleId = getTrackedModuleIdForChunk(chunk, cssFilesByModuleId);\n if (!moduleId) {\n return;\n }\n\n const cssFilename = cssFilesByModuleId.get(moduleId);\n if (!cssFilename) {\n return;\n }\n\n const emittedCssFileName = findWywCssAssetFileName(\n bundle as OutputBundleLike,\n cssFilename,\n config.root\n );\n if (!emittedCssFileName) {\n return;\n }\n\n const relativeCssImport = getRelativeImportPath(\n chunk.fileName,\n emittedCssFileName\n );\n if (\n hasCssLoadStatement(\n chunk.code,\n relativeCssImport,\n outputOptions.format\n )\n ) {\n return;\n }\n\n chunk.code = prependCssLoadStatement(\n chunk.code,\n relativeCssImport,\n outputOptions.format\n );\n });\n },\n async transform(\n code: string,\n url: string,\n transformOptions?: boolean | { ssr?: boolean }\n ) {\n const [id] = url.split('?', 1);\n\n // Do not transform ignored and generated files\n if (\n (!transformLibraries && url.includes('node_modules')) ||\n !filter(url) ||\n id in cssLookup\n )\n return;\n\n const log = logger.extend('vite').extend(getFileIdx(id));\n\n log('transform %s', id);\n\n const isSsr =\n typeof transformOptions === 'boolean'\n ? transformOptions\n : Boolean(transformOptions?.ssr);\n\n const overrideContext: OverrideContext = (context, filename) => {\n const env = importMetaEnvForEval?.[isSsr ? 'ssr' : 'client'];\n const withEnv = env\n ? { ...context, __wyw_import_meta_env: env }\n : context;\n\n return rest.overrideContext\n ? rest.overrideContext(withEnv, filename)\n : withEnv;\n };\n\n const transformServices = {\n options: {\n filename: id,\n root: process.cwd(),\n prefixer,\n keepComments,\n preprocessor,\n pluginOptions: {\n ...rest,\n overrideContext,\n },\n },\n cache: getCache(isSsr),\n emitWarning: (message: string) => this.warn(message),\n eventEmitter: emitter,\n };\n\n const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;\n\n const result: TransformResult = await transform(\n transformServices,\n code,\n asyncResolve\n );\n\n result.diagnostics?.forEach((diagnostic) => {\n this.warn({\n id: diagnostic.filename,\n loc: diagnostic.start\n ? {\n column: diagnostic.start.column,\n file: diagnostic.filename,\n line: diagnostic.start.line,\n }\n : undefined,\n message: `[wyw-in-js] ${diagnostic.severity} [${diagnostic.category}] ${diagnostic.message}`,\n pluginCode: diagnostic.category,\n });\n });\n\n const relativeId = normalizeToPosix(path.relative(config.root, id));\n const metadataFilename = replaceModuleExtension(id, '.wyw-in-js.json');\n const metadataRelativePath = toBundleRelativePath(metadataFilename);\n\n delete metadataLookup[metadataRelativePath];\n\n if (result.metadata) {\n const cssFile =\n typeof result.cssText === 'string' && result.cssText !== ''\n ? replaceModuleExtension(relativeId, '.wyw-in-js.css')\n : undefined;\n\n metadataLookup[metadataRelativePath] = stringifyMetadataManifest(\n createMetadataManifest(result.metadata, {\n cssFile,\n source: relativeId,\n })\n );\n }\n\n let { cssText, dependencies } = result;\n\n // Heads up, there are three cases:\n // 1. cssText is undefined, it means that file was not transformed\n // 2. cssText is empty, it means that file was transformed, but it does not contain any styles\n // 3. cssText is not empty, it means that file was transformed and it contains styles\n\n if (typeof cssText === 'undefined') {\n cssFilesByModuleId.delete(id);\n return;\n }\n\n if (cssText === '') {\n cssFilesByModuleId.delete(id);\n /* eslint-disable-next-line consistent-return */\n return {\n code: result.code,\n map: result.sourceMap,\n };\n }\n\n dependencies ??= [];\n\n const cssFilename = normalizeToPosix(\n replaceModuleExtension(id, '.wyw-in-js.css')\n );\n cssFilesByModuleId.set(id, cssFilename);\n\n const cssRelativePath = normalizeToPosix(\n path.relative(config.root, cssFilename)\n );\n\n const cssId = `/${cssRelativePath}`;\n\n if (sourceMap && result.cssSourceMapText) {\n const map = Buffer.from(result.cssSourceMapText).toString('base64');\n cssText += `/*# sourceMappingURL=data:application/json;base64,${map}*/`;\n }\n\n const didCssChange = cssLookup[cssFilename] !== cssText;\n cssLookup[cssFilename] = cssText;\n cssFileLookup[cssId] = cssFilename;\n\n result.code += `\\nimport ${JSON.stringify(cssFilename)};\\n`;\n\n for (let i = 0, end = dependencies.length; i < end; i++) {\n // eslint-disable-next-line no-await-in-loop\n const depModule = await this.resolve(dependencies[i], url, {\n isEntry: false,\n });\n if (depModule) dependencies[i] = depModule.id;\n }\n const target = targets.find((t) => t.id === id);\n if (!target) targets.push({ id, dependencies });\n else target.dependencies = dependencies;\n\n if (didCssChange) {\n const reloadTarget = getCssReloadTarget(\n (this as typeof this & { environment?: unknown }).environment,\n devServer\n );\n if (reloadTarget) {\n scheduleCssReload(reloadTarget, cssFilename);\n }\n if (ssrDevCssEnabled && config.command === 'serve') {\n ssrDevCssVersion += 1;\n }\n }\n /* eslint-disable-next-line consistent-return */\n return { code: result.code, map: result.sourceMap };\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/index.js CHANGED
@@ -8,7 +8,8 @@ var _fs = require("fs");
8
8
  var _path = _interopRequireDefault(require("path"));
9
9
  var _vite = require("vite");
10
10
  var _shared = require("@wyw-in-js/shared");
11
- var _transform = require("@wyw-in-js/transform");
11
+ var transformPkg = _interopRequireWildcard(require("@wyw-in-js/transform"));
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  /**
14
15
  * This file contains a Vite loader for wyw-in-js.
@@ -16,6 +17,20 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
16
17
  * returns transformed code without template literals and attaches generated source maps
17
18
  */
18
19
 
20
+ const {
21
+ createTransformManifest,
22
+ createFileReporter,
23
+ getFileIdx,
24
+ stringifyTransformManifest,
25
+ transform,
26
+ TransformCacheCollection
27
+ } = transformPkg;
28
+ const createMetadataManifest = (metadata, context) => typeof createTransformManifest === 'function' ? createTransformManifest(metadata, context) : {
29
+ ...metadata,
30
+ ...context,
31
+ version: 1
32
+ };
33
+ const stringifyMetadataManifest = manifest => typeof stringifyTransformManifest === 'function' ? stringifyTransformManifest(manifest) : `${JSON.stringify(manifest, null, 2)}\n`;
19
34
  const isWindowsAbsolutePath = value => /^[a-zA-Z]:[\\/]/.test(value);
20
35
  const normalizeToPosix = value => value.replace(/\\/g, _path.default.posix.sep);
21
36
  const isInside = (childPath, parentPath) => {
@@ -216,9 +231,11 @@ function wywInJS({
216
231
  transformLibraries,
217
232
  ...rest
218
233
  } = {}) {
234
+ const supportedModuleExtensions = new Set(['.cjs', '.cts', '.js', '.jsx', '.mjs', '.mts', '.ts', '.tsx']);
219
235
  const filter = (0, _vite.createFilter)(include, exclude);
220
236
  const cssLookup = {};
221
237
  const cssFileLookup = {};
238
+ const metadataLookup = {};
222
239
  const cssFilesByModuleId = new Map();
223
240
  const pendingCssReloads = new WeakMap();
224
241
  let ssrDevCssVersion = 0;
@@ -242,7 +259,22 @@ function wywInJS({
242
259
  const {
243
260
  emitter,
244
261
  onDone
245
- } = (0, _transform.createFileReporter)(debug !== null && debug !== void 0 ? debug : false);
262
+ } = createFileReporter(debug !== null && debug !== void 0 ? debug : false);
263
+ const isSafeAssetPath = fileName => fileName !== '' && fileName !== '..' && !fileName.startsWith(`..${_path.default.posix.sep}`) && !_path.default.posix.isAbsolute(fileName) && !isWindowsAbsolutePath(fileName);
264
+ const replaceModuleExtension = (filename, nextExtension) => {
265
+ const extension = _path.default.extname(filename);
266
+ return supportedModuleExtensions.has(extension) ? `${filename.slice(0, -extension.length)}${nextExtension}` : `${filename}${nextExtension}`;
267
+ };
268
+ const toBundleRelativePath = filename => {
269
+ const relativePath = normalizeToPosix(_path.default.relative(config.root, filename));
270
+ if (isSafeAssetPath(relativePath)) {
271
+ return relativePath;
272
+ }
273
+ if (!_path.default.isAbsolute(relativePath) && !isWindowsAbsolutePath(relativePath)) {
274
+ return _path.default.posix.join('_wyw-in-js', 'external', ...relativePath.split(_path.default.posix.sep).filter(Boolean).map(segment => segment === '..' ? '__up__' : segment));
275
+ }
276
+ return _path.default.posix.join('_wyw-in-js', 'external', ...normalizeToPosix(_path.default.resolve(filename)).split(_path.default.posix.sep).filter(Boolean).map(segment => segment.replace(/:$/, '')));
277
+ };
246
278
  const scheduleCssReload = (reloadTarget, cssFilename) => {
247
279
  let state = pendingCssReloads.get(reloadTarget);
248
280
  if (!state) {
@@ -269,8 +301,8 @@ function wywInJS({
269
301
 
270
302
  // <dependency id, targets>
271
303
  const targets = [];
272
- const clientCache = new _transform.TransformCacheCollection();
273
- const ssrCache = new _transform.TransformCacheCollection();
304
+ const clientCache = new TransformCacheCollection();
305
+ const ssrCache = new TransformCacheCollection();
274
306
  const caches = new Set([clientCache, ssrCache]);
275
307
  const getCache = isSsr => isSsr ? ssrCache : clientCache;
276
308
  const isInsideCacheDir = filename => {
@@ -314,7 +346,7 @@ function wywInJS({
314
346
  return viteResolver(what, importer, false, true);
315
347
  };
316
348
  const createAsyncResolver = (0, _shared.asyncResolverFactory)(async (resolved, what, importer, stack) => {
317
- const log = _shared.logger.extend('vite').extend((0, _transform.getFileIdx)(importer));
349
+ const log = _shared.logger.extend('vite').extend(getFileIdx(importer));
318
350
  if (resolved) {
319
351
  log("resolve ✅ '%s'@'%s -> %O\n%s", what, importer, resolved);
320
352
 
@@ -375,6 +407,11 @@ function wywInJS({
375
407
  return {
376
408
  name: 'wyw-in-js',
377
409
  enforce: 'post',
410
+ buildStart() {
411
+ Object.keys(metadataLookup).forEach(key => {
412
+ delete metadataLookup[key];
413
+ });
414
+ },
378
415
  buildEnd() {
379
416
  onDone(process.cwd());
380
417
  },
@@ -498,6 +535,13 @@ function wywInJS({
498
535
  return affected.map(target => devServer.moduleGraph.getModuleById(target.id)).concat(ctx.modules).filter(m => !!m);
499
536
  },
500
537
  generateBundle(outputOptions, bundle) {
538
+ Object.entries(metadataLookup).forEach(([fileName, source]) => {
539
+ this.emitFile({
540
+ fileName,
541
+ source,
542
+ type: 'asset'
543
+ });
544
+ });
501
545
  if (config.command !== 'build') return;
502
546
  if (!outputOptions.preserveModules) return;
503
547
  if (config.build.cssCodeSplit === false) return;
@@ -526,11 +570,12 @@ function wywInJS({
526
570
  });
527
571
  },
528
572
  async transform(code, url, transformOptions) {
573
+ var _result$diagnostics;
529
574
  const [id] = url.split('?', 1);
530
575
 
531
576
  // Do not transform ignored and generated files
532
577
  if (!transformLibraries && url.includes('node_modules') || !filter(url) || id in cssLookup) return;
533
- const log = _shared.logger.extend('vite').extend((0, _transform.getFileIdx)(id));
578
+ const log = _shared.logger.extend('vite').extend(getFileIdx(id));
534
579
  log('transform %s', id);
535
580
  const isSsr = typeof transformOptions === 'boolean' ? transformOptions : Boolean(transformOptions === null || transformOptions === void 0 ? void 0 : transformOptions.ssr);
536
581
  const overrideContext = (context, filename) => {
@@ -559,7 +604,30 @@ function wywInJS({
559
604
  eventEmitter: emitter
560
605
  };
561
606
  const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;
562
- const result = await (0, _transform.transform)(transformServices, code, asyncResolve);
607
+ const result = await transform(transformServices, code, asyncResolve);
608
+ (_result$diagnostics = result.diagnostics) === null || _result$diagnostics === void 0 || _result$diagnostics.forEach(diagnostic => {
609
+ this.warn({
610
+ id: diagnostic.filename,
611
+ loc: diagnostic.start ? {
612
+ column: diagnostic.start.column,
613
+ file: diagnostic.filename,
614
+ line: diagnostic.start.line
615
+ } : undefined,
616
+ message: `[wyw-in-js] ${diagnostic.severity} [${diagnostic.category}] ${diagnostic.message}`,
617
+ pluginCode: diagnostic.category
618
+ });
619
+ });
620
+ const relativeId = normalizeToPosix(_path.default.relative(config.root, id));
621
+ const metadataFilename = replaceModuleExtension(id, '.wyw-in-js.json');
622
+ const metadataRelativePath = toBundleRelativePath(metadataFilename);
623
+ delete metadataLookup[metadataRelativePath];
624
+ if (result.metadata) {
625
+ const cssFile = typeof result.cssText === 'string' && result.cssText !== '' ? replaceModuleExtension(relativeId, '.wyw-in-js.css') : undefined;
626
+ metadataLookup[metadataRelativePath] = stringifyMetadataManifest(createMetadataManifest(result.metadata, {
627
+ cssFile,
628
+ source: relativeId
629
+ }));
630
+ }
563
631
  let {
564
632
  cssText,
565
633
  dependencies
@@ -583,9 +651,9 @@ function wywInJS({
583
651
  };
584
652
  }
585
653
  dependencies !== null && dependencies !== void 0 ? dependencies : dependencies = [];
586
- const cssFilename = _path.default.normalize(`${id.replace(/\.[jt]sx?$/, '')}.wyw-in-js.css`).replace(/\\/g, _path.default.posix.sep);
654
+ const cssFilename = normalizeToPosix(replaceModuleExtension(id, '.wyw-in-js.css'));
587
655
  cssFilesByModuleId.set(id, cssFilename);
588
- const cssRelativePath = _path.default.relative(config.root, cssFilename).replace(/\\/g, _path.default.posix.sep);
656
+ const cssRelativePath = normalizeToPosix(_path.default.relative(config.root, cssFilename));
589
657
  const cssId = `/${cssRelativePath}`;
590
658
  if (sourceMap && result.cssSourceMapText) {
591
659
  const map = Buffer.from(result.cssSourceMapText).toString('base64');
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_fs","require","_path","_interopRequireDefault","_vite","_shared","_transform","e","__esModule","default","isWindowsAbsolutePath","value","test","normalizeToPosix","replace","path","posix","sep","isInside","childPath","parentPath","rel","relative","startsWith","isAbsolute","isWywCssAssetName","endsWith","normalizeAssetRelativePath","normalized","normalize","stripExtension","ext","extname","slice","length","getComparableAssetPaths","rootDir","variants","Set","add","relativeToRoot","relativePath","getStringValues","Array","isArray","filter","item","getOutputAssetNames","asset","name","names","originalFileName","originalFileNames","isOutputAssetLike","type","fileName","isOutputChunkLike","code","getTrackedModuleIdForChunk","chunk","cssFilesByModuleId","facadeModuleId","has","moduleIds","moduleId","find","id","findWywCssAssetFileName","bundle","cssFilename","expectedNames","Object","values","isMatch","some","assetName","from","variant","getRelativeImportPath","fromFileName","toFileName","fromDir","dirname","escapeForRegExp","hasStaticImport","specifier","RegExp","hasRequireCall","getCssLoadStatement","format","JSON","stringify","hasCssLoadStatement","prependCssLoadStatement","statement","insertAt","lineBreakIndex","indexOf","directiveMatch","exec","VITE_FS_PREFIX","safeDecodeURIComponent","decodeURIComponent","normalizeViteFsPath","fsPath","isCssReloadTarget","reloadTarget","moduleGraph","getModuleById","reloadModule","getCssReloadTarget","environment","server","module","getWywCssAssetFileNames","resolvedConfig","output","originalAssetFileNames","preserveModules","root","preserveModulesRootValue","preserveModulesRoot","preserveModulesRootAbs","resolve","preserveModulesRootRel","assetInfo","template","includes","assetNameNormalized","preserveRel","withoutExt","dir","idx","prefix","wywInJS","debug","include","exclude","sourceMap","preserveCssPaths","keepComments","prefixer","preprocessor","ssrDevCss","ssrDevCssPath","transformLibraries","rest","createFilter","cssLookup","cssFileLookup","Map","pendingCssReloads","WeakMap","ssrDevCssVersion","config","devServer","importMetaEnvForEval","ssrDevCssEnabled","Boolean","ssrDevCssPathname","ssrDevCssQuery","split","ssrDevCssRoute","getSsrDevCssHref","versionParam","query","getSsrDevCssContents","entries","merged","sort","a","b","localeCompare","map","cssText","join","emitter","onDone","createFileReporter","scheduleCssReload","state","get","files","set","timer","setTimeout","undefined","ids","clear","targets","clientCache","TransformCacheCollection","ssrCache","caches","getCache","isSsr","isInsideCacheDir","filename","cacheDir","getDepsOptimizer","_ref","_ref2","_server$environments$","_server$environments","environments","client","depsOptimizer","_depsOptimizer","waitForOptimizedDep","_depsOptimizer$isOpti","_depsOptimizer$init","_depsOptimizer$metada","isOptimizedDepFile","call","init","scanProcessing","info","metadata","depInfoList","file","processing","viteResolver","resolveClient","what","importer","Error","resolveSsr","createAsyncResolver","asyncResolverFactory","resolved","stack","log","logger","extend","getFileIdx","resolvedId","existsSync","syncResolve","asyncResolveClient","asyncResolveSsr","enforce","buildEnd","process","cwd","configResolved","_config$envPrefix","createResolver","command","outputs","build","rollupOptions","outputEntries","forEach","entry","_output$assetFileName","_config$build$assetsD","assetFileNames","assetsDir","envPrefix","envDir","loaded","loadEnv","mode","base","BASE_URL","MODE","DEV","PROD","SSR","ssr","configureServer","_server","middlewares","use","req","res","next","url","pathname","etag","ifNoneMatch","headers","statusCode","end","setHeader","transformIndexHtml","html","tags","tag","attrs","href","injectTo","load","resolveId","importeeUrl","handleHotUpdate","ctx","modules","affected","x","dependencies","dep","m","deps","flatMap","target","depId","cache","invalidateForFile","concat","generateBundle","outputOptions","cssCodeSplit","emittedCssFileName","relativeCssImport","transform","transformOptions","overrideContext","context","_importMetaEnvForEval","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","asyncResolve","result","delete","cssRelativePath","cssId","cssSourceMapText","Buffer","toString","didCssChange","i","depModule","isEntry","t","push"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This file contains a Vite loader for wyw-in-js.\n * It uses the transform.ts function to generate class names from source code,\n * returns transformed code without template literals and attaches generated source maps\n */\n\nimport { existsSync } from 'fs';\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport path from 'path';\n\nimport { createFilter, loadEnv } from 'vite';\nimport type {\n ModuleNode,\n Plugin,\n ResolvedConfig,\n ViteDevServer,\n FilterPattern,\n} from 'vite';\n\nimport { asyncResolverFactory, logger, syncResolve } from '@wyw-in-js/shared';\nimport type {\n IFileReporterOptions,\n PluginOptions,\n Preprocessor,\n} from '@wyw-in-js/transform';\nimport {\n createFileReporter,\n getFileIdx,\n transform,\n TransformCacheCollection,\n} from '@wyw-in-js/transform';\n\ntype VitePluginOptions = {\n debug?: IFileReporterOptions | false | null | undefined;\n exclude?: FilterPattern;\n include?: FilterPattern;\n keepComments?: boolean | RegExp;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n preserveCssPaths?: boolean;\n sourceMap?: boolean;\n ssrDevCss?: boolean;\n ssrDevCssPath?: string;\n transformLibraries?: boolean;\n} & Partial<PluginOptions>;\n\ntype OverrideContext = NonNullable<PluginOptions['overrideContext']>;\n\nexport { Plugin };\n\ntype AssetInfoLike = { name?: unknown };\ntype AssetFileNames = string | ((assetInfo: AssetInfoLike) => string);\ntype RollupOutputLike = {\n assetFileNames?: AssetFileNames;\n format?: unknown;\n preserveModules?: boolean;\n preserveModulesRoot?: unknown;\n} & Record<string, unknown>;\n\ntype OutputAssetLike = {\n fileName: string;\n name?: unknown;\n names?: unknown;\n originalFileName?: unknown;\n originalFileNames?: unknown;\n type: 'asset';\n};\n\ntype OutputChunkLike = {\n code: string;\n facadeModuleId?: unknown;\n fileName: string;\n moduleIds?: unknown;\n type: 'chunk';\n};\n\ntype OutputBundleLike = Record<string, OutputAssetLike | OutputChunkLike>;\n\ntype CssReloadTarget = {\n moduleGraph: {\n getModuleById(id: string): ModuleNode | null | undefined;\n };\n reloadModule(module: ModuleNode): void;\n};\n\nconst isWindowsAbsolutePath = (value: string): boolean =>\n /^[a-zA-Z]:[\\\\/]/.test(value);\n\nconst normalizeToPosix = (value: string): string =>\n value.replace(/\\\\/g, path.posix.sep);\n\nconst isInside = (childPath: string, parentPath: string): boolean => {\n const rel = path.relative(parentPath, childPath);\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));\n};\n\nconst isWywCssAssetName = (value: string): boolean =>\n value.endsWith('.wyw-in-js.css');\n\nconst normalizeAssetRelativePath = (value: string): string | null => {\n const normalized = path.posix.normalize(\n normalizeToPosix(value).replace(/^\\/+/, '')\n );\n if (normalized.startsWith('..') || path.posix.isAbsolute(normalized)) {\n return null;\n }\n\n return normalized;\n};\n\nconst stripExtension = (value: string): string => {\n const ext = path.posix.extname(value);\n return ext ? value.slice(0, -ext.length) : value;\n};\n\nconst getComparableAssetPaths = (\n value: string,\n rootDir: string\n): Set<string> => {\n const variants = new Set<string>();\n const normalized = normalizeToPosix(value);\n\n variants.add(normalized);\n\n if (path.isAbsolute(value) || isWindowsAbsolutePath(normalized)) {\n if (isInside(value, rootDir)) {\n const relativeToRoot = normalizeAssetRelativePath(\n path.relative(rootDir, value)\n );\n if (relativeToRoot) {\n variants.add(relativeToRoot);\n }\n }\n\n return variants;\n }\n\n const relativePath = normalizeAssetRelativePath(value);\n if (relativePath) {\n variants.add(relativePath);\n }\n\n return variants;\n};\n\nconst getStringValues = (value: unknown): string[] => {\n if (!Array.isArray(value)) return [];\n\n return value.filter((item): item is string => typeof item === 'string');\n};\n\nconst getOutputAssetNames = (asset: OutputAssetLike): string[] => [\n ...(typeof asset.name === 'string' ? [asset.name] : []),\n ...getStringValues(asset.names),\n ...(typeof asset.originalFileName === 'string'\n ? [asset.originalFileName]\n : []),\n ...getStringValues(asset.originalFileNames),\n];\n\nconst isOutputAssetLike = (value: unknown): value is OutputAssetLike =>\n !!value &&\n typeof value === 'object' &&\n (value as { type?: unknown }).type === 'asset' &&\n typeof (value as { fileName?: unknown }).fileName === 'string';\n\nconst isOutputChunkLike = (value: unknown): value is OutputChunkLike =>\n !!value &&\n typeof value === 'object' &&\n (value as { type?: unknown }).type === 'chunk' &&\n typeof (value as { fileName?: unknown }).fileName === 'string' &&\n typeof (value as { code?: unknown }).code === 'string';\n\nconst getTrackedModuleIdForChunk = (\n chunk: OutputChunkLike,\n cssFilesByModuleId: Map<string, string>\n): string | null => {\n if (\n typeof chunk.facadeModuleId === 'string' &&\n cssFilesByModuleId.has(chunk.facadeModuleId)\n ) {\n return chunk.facadeModuleId;\n }\n\n if (!Array.isArray(chunk.moduleIds)) {\n return null;\n }\n\n const moduleId = chunk.moduleIds.find(\n (id): id is string => typeof id === 'string' && cssFilesByModuleId.has(id)\n );\n\n return moduleId ?? null;\n};\n\nconst findWywCssAssetFileName = (\n bundle: OutputBundleLike,\n cssFilename: string,\n rootDir: string\n): string | null => {\n const expectedNames = getComparableAssetPaths(cssFilename, rootDir);\n\n for (const item of Object.values(bundle)) {\n if (isOutputAssetLike(item) && item.fileName.endsWith('.css')) {\n const isMatch = getOutputAssetNames(item).some((assetName) => {\n const variants = getComparableAssetPaths(assetName, rootDir);\n return Array.from(variants).some((variant) =>\n expectedNames.has(variant)\n );\n });\n\n if (isMatch) {\n return normalizeToPosix(item.fileName);\n }\n }\n }\n\n return null;\n};\n\nconst getRelativeImportPath = (\n fromFileName: string,\n toFileName: string\n): string => {\n const fromDir = path.posix.dirname(normalizeToPosix(fromFileName));\n const relativePath = path.posix.relative(\n fromDir,\n normalizeToPosix(toFileName)\n );\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`;\n};\n\nconst escapeForRegExp = (value: string): string =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst hasStaticImport = (code: string, specifier: string): boolean =>\n new RegExp(\n `(^|\\\\n)\\\\s*import\\\\s*(?:[\"']${escapeForRegExp(\n specifier\n )}[\"']|[^\\\\n;]+\\\\s+from\\\\s+[\"']${escapeForRegExp(specifier)}[\"'])`,\n 'm'\n ).test(code);\n\nconst hasRequireCall = (code: string, specifier: string): boolean =>\n new RegExp(\n `(^|[;\\\\n])\\\\s*require\\\\(\\\\s*[\"']${escapeForRegExp(specifier)}[\"']\\\\s*\\\\)`,\n 'm'\n ).test(code);\n\nconst getCssLoadStatement = (format: unknown, specifier: string): string =>\n format === 'cjs'\n ? `require(${JSON.stringify(specifier)});\\n`\n : `import ${JSON.stringify(specifier)};\\n`;\n\nconst hasCssLoadStatement = (\n code: string,\n specifier: string,\n format: unknown\n): boolean =>\n format === 'cjs'\n ? hasRequireCall(code, specifier)\n : hasStaticImport(code, specifier);\n\nconst prependCssLoadStatement = (\n code: string,\n specifier: string,\n format: unknown\n): string => {\n const statement = getCssLoadStatement(format, specifier);\n let insertAt = 0;\n\n if (code.startsWith('#!')) {\n const lineBreakIndex = code.indexOf('\\n');\n if (lineBreakIndex >= 0) {\n insertAt = lineBreakIndex + 1;\n } else {\n return `${code}\\n${statement}`;\n }\n }\n\n if (format === 'cjs') {\n const directiveMatch =\n /^(?:\\s*(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*');)+/.exec(\n code.slice(insertAt)\n );\n\n if (directiveMatch) {\n insertAt += directiveMatch[0].length;\n }\n }\n\n return `${code.slice(0, insertAt)}${statement}${code.slice(insertAt)}`;\n};\n\nconst VITE_FS_PREFIX = '/@fs/';\n\nconst safeDecodeURIComponent = (value: string): string => {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n};\n\nconst normalizeViteFsPath = (value: string): string => {\n const fsPath = value.slice(VITE_FS_PREFIX.length);\n return path.normalize(safeDecodeURIComponent(fsPath));\n};\n\nconst isCssReloadTarget = (value: unknown): value is CssReloadTarget => {\n if (!value || typeof value !== 'object') return false;\n\n const reloadTarget = value as Partial<CssReloadTarget>;\n return (\n !!reloadTarget.moduleGraph &&\n typeof reloadTarget.moduleGraph.getModuleById === 'function' &&\n typeof reloadTarget.reloadModule === 'function'\n );\n};\n\nconst getCssReloadTarget = (\n environment: unknown,\n server: ViteDevServer | undefined\n): CssReloadTarget | null => {\n if (isCssReloadTarget(environment)) {\n return environment;\n }\n\n if (server?.moduleGraph) {\n return {\n moduleGraph: server.moduleGraph,\n reloadModule: (module) => server.reloadModule(module),\n };\n }\n\n return null;\n};\n\nconst getWywCssAssetFileNames = (\n resolvedConfig: ResolvedConfig,\n output: RollupOutputLike,\n originalAssetFileNames: AssetFileNames\n): ((assetInfo: AssetInfoLike) => string) | null => {\n if (!output.preserveModules) return null;\n\n const rootDir = resolvedConfig.root;\n\n const preserveModulesRootValue = output.preserveModulesRoot;\n let preserveModulesRootAbs: string | null = null;\n if (typeof preserveModulesRootValue === 'string') {\n preserveModulesRootAbs = path.isAbsolute(preserveModulesRootValue)\n ? preserveModulesRootValue\n : path.resolve(rootDir, preserveModulesRootValue);\n }\n\n const preserveModulesRootRel =\n preserveModulesRootAbs && isInside(preserveModulesRootAbs, rootDir)\n ? normalizeToPosix(path.relative(rootDir, preserveModulesRootAbs))\n : null;\n\n return (assetInfo) => {\n const template =\n typeof originalAssetFileNames === 'function'\n ? originalAssetFileNames(assetInfo)\n : originalAssetFileNames;\n\n const assetName = assetInfo?.name;\n if (typeof assetName !== 'string' || !isWywCssAssetName(assetName)) {\n return template;\n }\n\n if (!template.includes('[')) {\n return template;\n }\n\n let relativePath: string | null = null;\n\n const assetNameNormalized = normalizeToPosix(assetName);\n\n if (\n path.isAbsolute(assetName) ||\n isWindowsAbsolutePath(assetNameNormalized)\n ) {\n const preserveRel =\n preserveModulesRootAbs && isInside(assetName, preserveModulesRootAbs)\n ? path.relative(preserveModulesRootAbs, assetName)\n : null;\n\n if (\n preserveRel &&\n !path.isAbsolute(preserveRel) &&\n !preserveRel.startsWith('..')\n ) {\n relativePath = preserveRel;\n } else if (isInside(assetName, rootDir)) {\n relativePath = path.relative(rootDir, assetName);\n }\n } else if (\n preserveModulesRootRel &&\n assetNameNormalized.startsWith(`${preserveModulesRootRel}/`)\n ) {\n relativePath = assetNameNormalized.slice(\n preserveModulesRootRel.length + 1\n );\n } else {\n relativePath = assetNameNormalized;\n }\n\n const normalized = relativePath\n ? normalizeAssetRelativePath(relativePath)\n : null;\n if (!normalized) {\n return template;\n }\n\n const withoutExt = stripExtension(normalized);\n\n if (template.includes('[name]')) {\n const dir = path.posix.dirname(withoutExt);\n if (dir === '.' || dir === '') {\n return template;\n }\n\n return template.replace(/\\[name\\]/g, `${dir}/[name]`);\n }\n\n const dir = path.posix.dirname(withoutExt);\n if (dir === '.' || dir === '') {\n return template;\n }\n\n const idx = template.indexOf('[');\n if (idx < 0) {\n return template;\n }\n\n const prefix = template.slice(0, idx);\n if (prefix !== '' && !prefix.endsWith('/')) {\n return template;\n }\n\n return `${prefix}${dir}/${template.slice(idx)}`;\n };\n};\n\nexport default function wywInJS({\n debug,\n include,\n exclude,\n sourceMap,\n preserveCssPaths,\n keepComments,\n prefixer,\n preprocessor,\n ssrDevCss,\n ssrDevCssPath,\n transformLibraries,\n ...rest\n}: VitePluginOptions = {}): Plugin {\n const filter = createFilter(include, exclude);\n const cssLookup: { [key: string]: string } = {};\n const cssFileLookup: { [key: string]: string } = {};\n const cssFilesByModuleId = new Map<string, string>();\n const pendingCssReloads = new WeakMap<\n CssReloadTarget,\n { files: Set<string>; timer?: ReturnType<typeof setTimeout> }\n >();\n let ssrDevCssVersion = 0;\n let config: ResolvedConfig;\n let devServer: ViteDevServer;\n let importMetaEnvForEval: {\n client: Record<string, unknown>;\n ssr: Record<string, unknown>;\n } | null = null;\n\n const ssrDevCssEnabled = Boolean(ssrDevCss);\n const [ssrDevCssPathname, ssrDevCssQuery] = (\n ssrDevCssPath ?? '/_wyw-in-js/ssr.css'\n ).split('?', 2);\n const ssrDevCssRoute = ssrDevCssPathname.startsWith('/')\n ? ssrDevCssPathname\n : `/${ssrDevCssPathname}`;\n\n const getSsrDevCssHref = () => {\n const versionParam = `v=${ssrDevCssVersion}`;\n const query = ssrDevCssQuery\n ? `${ssrDevCssQuery}&${versionParam}`\n : versionParam;\n return `${ssrDevCssRoute}?${query}`;\n };\n\n const getSsrDevCssContents = () => {\n const entries = Object.entries(cssLookup);\n if (entries.length === 0) return '';\n\n const merged = entries\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([, cssText]) => cssText)\n .join('\\n');\n return `${merged}\\n`;\n };\n\n const { emitter, onDone } = createFileReporter(debug ?? false);\n\n const scheduleCssReload = (\n reloadTarget: CssReloadTarget,\n cssFilename: string\n ) => {\n let state = pendingCssReloads.get(reloadTarget);\n if (!state) {\n state = { files: new Set() };\n pendingCssReloads.set(reloadTarget, state);\n }\n state.files.add(cssFilename);\n\n if (state.timer) return;\n state.timer = setTimeout(() => {\n state.timer = undefined;\n\n const ids = Array.from(state.files);\n state.files.clear();\n\n const { moduleGraph } = reloadTarget;\n for (const id of ids) {\n const module = moduleGraph.getModuleById(id);\n if (module) reloadTarget.reloadModule(module);\n }\n }, 0);\n };\n\n // <dependency id, targets>\n const targets: { dependencies: string[]; id: string }[] = [];\n const clientCache = new TransformCacheCollection();\n const ssrCache = new TransformCacheCollection();\n const caches = new Set<TransformCacheCollection>([clientCache, ssrCache]);\n\n const getCache = (isSsr: boolean): TransformCacheCollection =>\n isSsr ? ssrCache : clientCache;\n\n type DepInfoLike = { file: string; processing?: Promise<void> };\n type DepsOptimizerLike = {\n init?: () => Promise<void>;\n isOptimizedDepFile?: (id: string) => boolean;\n metadata?: { depInfoList?: DepInfoLike[] };\n scanProcessing?: Promise<void>;\n };\n\n type ViteServerWithDepsOptimizer = ViteDevServer & {\n _depsOptimizer?: DepsOptimizerLike;\n depsOptimizer?: DepsOptimizerLike;\n environments?: Record<string, { depsOptimizer?: DepsOptimizerLike }>;\n };\n\n const isInsideCacheDir = (filename: string): boolean => {\n if (!config.cacheDir) {\n return false;\n }\n\n const relative = path.relative(config.cacheDir, filename);\n return (\n relative !== '' &&\n !relative.startsWith('..') &&\n !path.isAbsolute(relative)\n );\n };\n\n const getDepsOptimizer = (): DepsOptimizerLike | null => {\n if (!devServer) return null;\n\n const server = devServer as unknown as ViteServerWithDepsOptimizer;\n return (\n server.environments?.client?.depsOptimizer ??\n server.depsOptimizer ??\n server._depsOptimizer ??\n null\n );\n };\n\n const waitForOptimizedDep = async (filename: string): Promise<boolean> => {\n const depsOptimizer = getDepsOptimizer();\n if (!depsOptimizer?.isOptimizedDepFile?.(filename)) {\n return false;\n }\n\n await depsOptimizer.init?.();\n await depsOptimizer.scanProcessing;\n\n const info = depsOptimizer.metadata?.depInfoList?.find(\n (item) => item.file === filename\n );\n if (info?.processing) {\n await info.processing;\n }\n\n return true;\n };\n\n type ViteResolver = ReturnType<ResolvedConfig['createResolver']>;\n type ViteResolverResult = Awaited<ReturnType<ViteResolver>>;\n type ResolveFn = (\n what: string,\n importer: string\n ) => Promise<ViteResolverResult>;\n\n let viteResolver: ViteResolver | null = null;\n\n const resolveClient: ResolveFn = (what, importer) => {\n if (!viteResolver) {\n throw new Error('Vite resolver is not initialized yet');\n }\n\n return viteResolver(what, importer, false, false);\n };\n\n const resolveSsr: ResolveFn = (what, importer) => {\n if (!viteResolver) {\n throw new Error('Vite resolver is not initialized yet');\n }\n\n return viteResolver(what, importer, false, true);\n };\n\n const createAsyncResolver = asyncResolverFactory(\n async (\n resolved: ViteResolverResult,\n what: string,\n importer: string,\n stack: string[]\n ): Promise<string | null> => {\n const log = logger.extend('vite').extend(getFileIdx(importer));\n\n if (resolved) {\n log(\"resolve ✅ '%s'@'%s -> %O\\n%s\", what, importer, resolved);\n\n // Vite adds param like `?v=667939b3` to cached modules\n let resolvedId = resolved.split('?', 1)[0];\n\n if (resolvedId.startsWith('\\0')) {\n // \\0 is a special character in Rollup that tells Rollup to not include this in the bundle\n // https://rollupjs.org/guide/en/#outputexports\n return null;\n }\n\n if (resolvedId.startsWith(VITE_FS_PREFIX)) {\n resolvedId = normalizeViteFsPath(resolvedId);\n }\n\n if (resolvedId.startsWith('/@')) {\n return null;\n }\n\n if (!existsSync(resolvedId)) {\n // When Vite resolves to an optimized deps entry (cacheDir) it may not be written yet.\n // Wait for Vite's optimizer instead of calling optimizeDeps() manually (deprecated in Vite 7).\n try {\n await waitForOptimizedDep(resolvedId);\n } catch {\n // If optimizer failed, fall through to preserve previous behavior and surface the error.\n }\n\n // Vite can return an optimized deps entry (from cacheDir) before it's written to disk.\n // Manually calling optimizeDeps is deprecated in Vite 7 and can also get called many times.\n // Instead, fall back to resolving the original module path directly.\n if (!existsSync(resolvedId) && isInsideCacheDir(resolvedId)) {\n try {\n return syncResolve(what, importer, stack);\n } catch {\n // Fall through to preserve previous behavior: return resolvedId and let WyW surface the error.\n }\n }\n }\n\n if (!existsSync(resolvedId) && !path.isAbsolute(resolvedId)) {\n // Vite can resolve an import to a bare specifier when bundling for SSR and marking it as external.\n // In that case we still need a real file path for WyW evaluation.\n return syncResolve(what, importer, stack);\n }\n\n return resolvedId;\n }\n\n log(\"resolve ❌ '%s'@'%s\", what, importer);\n\n // Vite can inject virtual ids like /@react-refresh in dev.\n if (what.startsWith('/@') || what.startsWith('\\0')) {\n return null;\n }\n\n if (\n !what.startsWith('.') &&\n !what.startsWith('/') &&\n !path.isAbsolute(what)\n ) {\n // Keep compatibility with SSR externalization: fall back to Node resolution for bare specifiers.\n return syncResolve(what, importer, stack);\n }\n\n throw new Error(`Could not resolve ${what}`);\n },\n (what, importer) => [what, importer]\n );\n\n const asyncResolveClient = createAsyncResolver(resolveClient);\n const asyncResolveSsr = createAsyncResolver(resolveSsr);\n\n return {\n name: 'wyw-in-js',\n enforce: 'post',\n buildEnd() {\n onDone(process.cwd());\n },\n configResolved(resolvedConfig: ResolvedConfig) {\n config = resolvedConfig;\n viteResolver = config.createResolver();\n\n if (preserveCssPaths && config.command === 'build') {\n const outputs = config.build.rollupOptions.output;\n let outputEntries: unknown[] = [];\n if (Array.isArray(outputs)) {\n outputEntries = outputs;\n } else if (outputs) {\n outputEntries = [outputs];\n }\n\n outputEntries.forEach((entry) => {\n if (!entry || typeof entry !== 'object') return;\n\n const output = entry as RollupOutputLike;\n if (!output.preserveModules) return;\n\n const template: AssetFileNames =\n output.assetFileNames ??\n `${config.build.assetsDir ?? 'assets'}/[name].[hash].[ext]`;\n\n const assetFileNames = getWywCssAssetFileNames(\n config,\n output,\n template\n );\n if (assetFileNames) output.assetFileNames = assetFileNames;\n });\n }\n\n const envPrefix = config.envPrefix ?? 'VITE_';\n const envDir =\n // envDir is absolute in modern Vite, but keep a fallback for older versions\n 'envDir' in config && typeof config.envDir === 'string'\n ? config.envDir\n : config.root;\n\n const loaded = loadEnv(config.mode, envDir, envPrefix);\n const base = {\n ...loaded,\n BASE_URL: config.base,\n MODE: config.mode,\n DEV: config.command === 'serve',\n PROD: config.command === 'build',\n };\n\n importMetaEnvForEval = {\n client: { ...base, SSR: false },\n ssr: { ...base, SSR: true },\n };\n },\n configureServer(_server) {\n devServer = _server;\n\n if (!ssrDevCssEnabled || config.command !== 'serve') return;\n\n devServer.middlewares.use(\n (req: IncomingMessage, res: ServerResponse, next: () => void) => {\n const { url } = req;\n if (!url) {\n next();\n return;\n }\n\n const [pathname] = url.split('?', 1);\n if (pathname !== ssrDevCssRoute) {\n next();\n return;\n }\n\n const etag = `W/\"${ssrDevCssVersion}\"`;\n const ifNoneMatch = req.headers['if-none-match'];\n if (ifNoneMatch === etag) {\n res.statusCode = 304;\n res.end();\n return;\n }\n\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/css; charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('ETag', etag);\n res.end(getSsrDevCssContents());\n }\n );\n },\n transformIndexHtml(html) {\n if (!ssrDevCssEnabled || config.command !== 'serve') return undefined;\n\n return {\n html,\n tags: [\n {\n tag: 'link',\n attrs: { rel: 'stylesheet', href: getSsrDevCssHref() },\n injectTo: 'head-prepend',\n },\n ],\n };\n },\n load(url: string) {\n const [id] = url.split('?', 1);\n return cssLookup[id];\n },\n /* eslint-disable-next-line consistent-return */\n resolveId(importeeUrl: string) {\n const [id] = importeeUrl.split('?', 1);\n if (cssLookup[id]) return id;\n return cssFileLookup[id];\n },\n handleHotUpdate(ctx) {\n // it's module, so just transform it\n if (ctx.modules.length) return ctx.modules;\n\n // Select affected modules of changed dependency\n const affected = targets.filter(\n (x) =>\n // file is dependency of any target\n x.dependencies.some((dep) => dep === ctx.file) ||\n // or changed module is a dependency of any target\n x.dependencies.some((dep) => ctx.modules.some((m) => m.file === dep))\n );\n const deps = affected.flatMap((target) => target.dependencies);\n\n // eslint-disable-next-line no-restricted-syntax\n for (const depId of deps) {\n for (const cache of caches) {\n cache.invalidateForFile(depId);\n }\n }\n\n return affected\n .map((target) => devServer.moduleGraph.getModuleById(target.id))\n .concat(ctx.modules)\n .filter((m): m is ModuleNode => !!m);\n },\n generateBundle(outputOptions, bundle) {\n if (config.command !== 'build') return;\n if (!outputOptions.preserveModules) return;\n if (config.build.cssCodeSplit === false) return;\n\n Object.values(bundle as OutputBundleLike).forEach((item) => {\n if (!isOutputChunkLike(item)) {\n return;\n }\n\n const chunk = item;\n\n const moduleId = getTrackedModuleIdForChunk(chunk, cssFilesByModuleId);\n if (!moduleId) {\n return;\n }\n\n const cssFilename = cssFilesByModuleId.get(moduleId);\n if (!cssFilename) {\n return;\n }\n\n const emittedCssFileName = findWywCssAssetFileName(\n bundle as OutputBundleLike,\n cssFilename,\n config.root\n );\n if (!emittedCssFileName) {\n return;\n }\n\n const relativeCssImport = getRelativeImportPath(\n chunk.fileName,\n emittedCssFileName\n );\n if (\n hasCssLoadStatement(\n chunk.code,\n relativeCssImport,\n outputOptions.format\n )\n ) {\n return;\n }\n\n chunk.code = prependCssLoadStatement(\n chunk.code,\n relativeCssImport,\n outputOptions.format\n );\n });\n },\n async transform(\n code: string,\n url: string,\n transformOptions?: boolean | { ssr?: boolean }\n ) {\n const [id] = url.split('?', 1);\n\n // Do not transform ignored and generated files\n if (\n (!transformLibraries && url.includes('node_modules')) ||\n !filter(url) ||\n id in cssLookup\n )\n return;\n\n const log = logger.extend('vite').extend(getFileIdx(id));\n\n log('transform %s', id);\n\n const isSsr =\n typeof transformOptions === 'boolean'\n ? transformOptions\n : Boolean(transformOptions?.ssr);\n\n const overrideContext: OverrideContext = (context, filename) => {\n const env = importMetaEnvForEval?.[isSsr ? 'ssr' : 'client'];\n const withEnv = env\n ? { ...context, __wyw_import_meta_env: env }\n : context;\n\n return rest.overrideContext\n ? rest.overrideContext(withEnv, filename)\n : withEnv;\n };\n\n const transformServices = {\n options: {\n filename: id,\n root: process.cwd(),\n prefixer,\n keepComments,\n preprocessor,\n pluginOptions: {\n ...rest,\n overrideContext,\n },\n },\n cache: getCache(isSsr),\n emitWarning: (message: string) => this.warn(message),\n eventEmitter: emitter,\n };\n\n const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;\n\n const result = await transform(transformServices, code, asyncResolve);\n\n let { cssText, dependencies } = result;\n\n // Heads up, there are three cases:\n // 1. cssText is undefined, it means that file was not transformed\n // 2. cssText is empty, it means that file was transformed, but it does not contain any styles\n // 3. cssText is not empty, it means that file was transformed and it contains styles\n\n if (typeof cssText === 'undefined') {\n cssFilesByModuleId.delete(id);\n return;\n }\n\n if (cssText === '') {\n cssFilesByModuleId.delete(id);\n /* eslint-disable-next-line consistent-return */\n return {\n code: result.code,\n map: result.sourceMap,\n };\n }\n\n dependencies ??= [];\n\n const cssFilename = path\n .normalize(`${id.replace(/\\.[jt]sx?$/, '')}.wyw-in-js.css`)\n .replace(/\\\\/g, path.posix.sep);\n cssFilesByModuleId.set(id, cssFilename);\n\n const cssRelativePath = path\n .relative(config.root, cssFilename)\n .replace(/\\\\/g, path.posix.sep);\n\n const cssId = `/${cssRelativePath}`;\n\n if (sourceMap && result.cssSourceMapText) {\n const map = Buffer.from(result.cssSourceMapText).toString('base64');\n cssText += `/*# sourceMappingURL=data:application/json;base64,${map}*/`;\n }\n\n const didCssChange = cssLookup[cssFilename] !== cssText;\n cssLookup[cssFilename] = cssText;\n cssFileLookup[cssId] = cssFilename;\n\n result.code += `\\nimport ${JSON.stringify(cssFilename)};\\n`;\n\n for (let i = 0, end = dependencies.length; i < end; i++) {\n // eslint-disable-next-line no-await-in-loop\n const depModule = await this.resolve(dependencies[i], url, {\n isEntry: false,\n });\n if (depModule) dependencies[i] = depModule.id;\n }\n const target = targets.find((t) => t.id === id);\n if (!target) targets.push({ id, dependencies });\n else target.dependencies = dependencies;\n\n if (didCssChange) {\n const reloadTarget = getCssReloadTarget(\n (this as typeof this & { environment?: unknown }).environment,\n devServer\n );\n if (reloadTarget) {\n scheduleCssReload(reloadTarget, cssFilename);\n }\n if (ssrDevCssEnabled && config.command === 'serve') {\n ssrDevCssVersion += 1;\n }\n }\n /* eslint-disable-next-line consistent-return */\n return { code: result.code, map: result.sourceMap };\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_fs","require","_path","_interopRequireDefault","_vite","_shared","transformPkg","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createTransformManifest","createFileReporter","getFileIdx","stringifyTransformManifest","transform","TransformCacheCollection","createMetadataManifest","metadata","context","version","stringifyMetadataManifest","manifest","JSON","stringify","isWindowsAbsolutePath","value","test","normalizeToPosix","replace","path","posix","sep","isInside","childPath","parentPath","rel","relative","startsWith","isAbsolute","isWywCssAssetName","endsWith","normalizeAssetRelativePath","normalized","normalize","stripExtension","ext","extname","slice","length","getComparableAssetPaths","rootDir","variants","Set","add","relativeToRoot","relativePath","getStringValues","Array","isArray","filter","item","getOutputAssetNames","asset","name","names","originalFileName","originalFileNames","isOutputAssetLike","type","fileName","isOutputChunkLike","code","getTrackedModuleIdForChunk","chunk","cssFilesByModuleId","facadeModuleId","moduleIds","moduleId","find","id","findWywCssAssetFileName","bundle","cssFilename","expectedNames","values","isMatch","some","assetName","from","variant","getRelativeImportPath","fromFileName","toFileName","fromDir","dirname","escapeForRegExp","hasStaticImport","specifier","RegExp","hasRequireCall","getCssLoadStatement","format","hasCssLoadStatement","prependCssLoadStatement","statement","insertAt","lineBreakIndex","indexOf","directiveMatch","exec","VITE_FS_PREFIX","safeDecodeURIComponent","decodeURIComponent","normalizeViteFsPath","fsPath","isCssReloadTarget","reloadTarget","moduleGraph","getModuleById","reloadModule","getCssReloadTarget","environment","server","module","getWywCssAssetFileNames","resolvedConfig","output","originalAssetFileNames","preserveModules","root","preserveModulesRootValue","preserveModulesRoot","preserveModulesRootAbs","resolve","preserveModulesRootRel","assetInfo","template","includes","assetNameNormalized","preserveRel","withoutExt","dir","idx","prefix","wywInJS","debug","include","exclude","sourceMap","preserveCssPaths","keepComments","prefixer","preprocessor","ssrDevCss","ssrDevCssPath","transformLibraries","rest","supportedModuleExtensions","createFilter","cssLookup","cssFileLookup","metadataLookup","Map","pendingCssReloads","ssrDevCssVersion","config","devServer","importMetaEnvForEval","ssrDevCssEnabled","Boolean","ssrDevCssPathname","ssrDevCssQuery","split","ssrDevCssRoute","getSsrDevCssHref","versionParam","query","getSsrDevCssContents","entries","merged","sort","a","b","localeCompare","map","cssText","join","emitter","onDone","isSafeAssetPath","replaceModuleExtension","filename","nextExtension","extension","toBundleRelativePath","segment","scheduleCssReload","state","files","timer","setTimeout","undefined","ids","clear","targets","clientCache","ssrCache","caches","getCache","isSsr","isInsideCacheDir","cacheDir","getDepsOptimizer","_ref","_ref2","_server$environments$","_server$environments","environments","client","depsOptimizer","_depsOptimizer","waitForOptimizedDep","_depsOptimizer$isOpti","_depsOptimizer$init","_depsOptimizer$metada","isOptimizedDepFile","init","scanProcessing","info","depInfoList","file","processing","viteResolver","resolveClient","what","importer","Error","resolveSsr","createAsyncResolver","asyncResolverFactory","resolved","stack","log","logger","extend","resolvedId","existsSync","syncResolve","asyncResolveClient","asyncResolveSsr","enforce","buildStart","keys","forEach","key","buildEnd","process","cwd","configResolved","_config$envPrefix","createResolver","command","outputs","build","rollupOptions","outputEntries","entry","_output$assetFileName","_config$build$assetsD","assetFileNames","assetsDir","envPrefix","envDir","loaded","loadEnv","mode","base","BASE_URL","MODE","DEV","PROD","SSR","ssr","configureServer","_server","middlewares","use","req","res","next","url","pathname","etag","ifNoneMatch","headers","statusCode","end","setHeader","transformIndexHtml","html","tags","tag","attrs","href","injectTo","load","resolveId","importeeUrl","handleHotUpdate","ctx","modules","affected","x","dependencies","dep","m","deps","flatMap","target","depId","cache","invalidateForFile","concat","generateBundle","outputOptions","source","emitFile","cssCodeSplit","emittedCssFileName","relativeCssImport","transformOptions","_result$diagnostics","overrideContext","_importMetaEnvForEval","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","asyncResolve","result","diagnostics","diagnostic","loc","start","column","line","severity","category","pluginCode","relativeId","metadataFilename","metadataRelativePath","cssFile","delete","cssRelativePath","cssId","cssSourceMapText","Buffer","toString","didCssChange","depModule","isEntry","push"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This file contains a Vite loader for wyw-in-js.\n * It uses the transform.ts function to generate class names from source code,\n * returns transformed code without template literals and attaches generated source maps\n */\n\nimport { existsSync } from 'fs';\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport path from 'path';\n\nimport { createFilter, loadEnv } from 'vite';\nimport type {\n ModuleNode,\n Plugin,\n ResolvedConfig,\n ViteDevServer,\n FilterPattern,\n} from 'vite';\n\nimport { asyncResolverFactory, logger, syncResolve } from '@wyw-in-js/shared';\nimport type {\n IFileReporterOptions,\n PluginOptions,\n Preprocessor,\n Result as TransformResult,\n TransformCacheCollection as TransformCacheCollectionType,\n} from '@wyw-in-js/transform';\nimport * as transformPkg from '@wyw-in-js/transform';\n\nconst {\n createTransformManifest,\n createFileReporter,\n getFileIdx,\n stringifyTransformManifest,\n transform,\n TransformCacheCollection,\n} = transformPkg;\n\ntype MetadataManifest = NonNullable<TransformResult['metadata']> & {\n cssFile?: string;\n source: string;\n version: 1;\n};\n\nconst createMetadataManifest = (\n metadata: NonNullable<TransformResult['metadata']>,\n context: Pick<MetadataManifest, 'cssFile' | 'source'>\n): MetadataManifest =>\n typeof createTransformManifest === 'function'\n ? createTransformManifest(metadata, context)\n : {\n ...metadata,\n ...context,\n version: 1,\n };\n\nconst stringifyMetadataManifest = (manifest: MetadataManifest): string =>\n typeof stringifyTransformManifest === 'function'\n ? stringifyTransformManifest(manifest)\n : `${JSON.stringify(manifest, null, 2)}\\n`;\n\ntype VitePluginOptions = {\n debug?: IFileReporterOptions | false | null | undefined;\n exclude?: FilterPattern;\n include?: FilterPattern;\n keepComments?: boolean | RegExp;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n preserveCssPaths?: boolean;\n sourceMap?: boolean;\n ssrDevCss?: boolean;\n ssrDevCssPath?: string;\n transformLibraries?: boolean;\n} & Partial<PluginOptions>;\n\ntype OverrideContext = NonNullable<PluginOptions['overrideContext']>;\n\nexport { Plugin };\n\ntype AssetInfoLike = { name?: unknown };\ntype AssetFileNames = string | ((assetInfo: AssetInfoLike) => string);\ntype RollupOutputLike = {\n assetFileNames?: AssetFileNames;\n format?: unknown;\n preserveModules?: boolean;\n preserveModulesRoot?: unknown;\n} & Record<string, unknown>;\n\ntype OutputAssetLike = {\n fileName: string;\n name?: unknown;\n names?: unknown;\n originalFileName?: unknown;\n originalFileNames?: unknown;\n type: 'asset';\n};\n\ntype OutputChunkLike = {\n code: string;\n facadeModuleId?: unknown;\n fileName: string;\n moduleIds?: unknown;\n type: 'chunk';\n};\n\ntype OutputBundleLike = Record<string, OutputAssetLike | OutputChunkLike>;\n\ntype CssReloadTarget = {\n moduleGraph: {\n getModuleById(id: string): ModuleNode | null | undefined;\n };\n reloadModule(module: ModuleNode): void;\n};\n\nconst isWindowsAbsolutePath = (value: string): boolean =>\n /^[a-zA-Z]:[\\\\/]/.test(value);\n\nconst normalizeToPosix = (value: string): string =>\n value.replace(/\\\\/g, path.posix.sep);\n\nconst isInside = (childPath: string, parentPath: string): boolean => {\n const rel = path.relative(parentPath, childPath);\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));\n};\n\nconst isWywCssAssetName = (value: string): boolean =>\n value.endsWith('.wyw-in-js.css');\n\nconst normalizeAssetRelativePath = (value: string): string | null => {\n const normalized = path.posix.normalize(\n normalizeToPosix(value).replace(/^\\/+/, '')\n );\n if (normalized.startsWith('..') || path.posix.isAbsolute(normalized)) {\n return null;\n }\n\n return normalized;\n};\n\nconst stripExtension = (value: string): string => {\n const ext = path.posix.extname(value);\n return ext ? value.slice(0, -ext.length) : value;\n};\n\nconst getComparableAssetPaths = (\n value: string,\n rootDir: string\n): Set<string> => {\n const variants = new Set<string>();\n const normalized = normalizeToPosix(value);\n\n variants.add(normalized);\n\n if (path.isAbsolute(value) || isWindowsAbsolutePath(normalized)) {\n if (isInside(value, rootDir)) {\n const relativeToRoot = normalizeAssetRelativePath(\n path.relative(rootDir, value)\n );\n if (relativeToRoot) {\n variants.add(relativeToRoot);\n }\n }\n\n return variants;\n }\n\n const relativePath = normalizeAssetRelativePath(value);\n if (relativePath) {\n variants.add(relativePath);\n }\n\n return variants;\n};\n\nconst getStringValues = (value: unknown): string[] => {\n if (!Array.isArray(value)) return [];\n\n return value.filter((item): item is string => typeof item === 'string');\n};\n\nconst getOutputAssetNames = (asset: OutputAssetLike): string[] => [\n ...(typeof asset.name === 'string' ? [asset.name] : []),\n ...getStringValues(asset.names),\n ...(typeof asset.originalFileName === 'string'\n ? [asset.originalFileName]\n : []),\n ...getStringValues(asset.originalFileNames),\n];\n\nconst isOutputAssetLike = (value: unknown): value is OutputAssetLike =>\n !!value &&\n typeof value === 'object' &&\n (value as { type?: unknown }).type === 'asset' &&\n typeof (value as { fileName?: unknown }).fileName === 'string';\n\nconst isOutputChunkLike = (value: unknown): value is OutputChunkLike =>\n !!value &&\n typeof value === 'object' &&\n (value as { type?: unknown }).type === 'chunk' &&\n typeof (value as { fileName?: unknown }).fileName === 'string' &&\n typeof (value as { code?: unknown }).code === 'string';\n\nconst getTrackedModuleIdForChunk = (\n chunk: OutputChunkLike,\n cssFilesByModuleId: Map<string, string>\n): string | null => {\n if (\n typeof chunk.facadeModuleId === 'string' &&\n cssFilesByModuleId.has(chunk.facadeModuleId)\n ) {\n return chunk.facadeModuleId;\n }\n\n if (!Array.isArray(chunk.moduleIds)) {\n return null;\n }\n\n const moduleId = chunk.moduleIds.find(\n (id): id is string => typeof id === 'string' && cssFilesByModuleId.has(id)\n );\n\n return moduleId ?? null;\n};\n\nconst findWywCssAssetFileName = (\n bundle: OutputBundleLike,\n cssFilename: string,\n rootDir: string\n): string | null => {\n const expectedNames = getComparableAssetPaths(cssFilename, rootDir);\n\n for (const item of Object.values(bundle)) {\n if (isOutputAssetLike(item) && item.fileName.endsWith('.css')) {\n const isMatch = getOutputAssetNames(item).some((assetName) => {\n const variants = getComparableAssetPaths(assetName, rootDir);\n return Array.from(variants).some((variant) =>\n expectedNames.has(variant)\n );\n });\n\n if (isMatch) {\n return normalizeToPosix(item.fileName);\n }\n }\n }\n\n return null;\n};\n\nconst getRelativeImportPath = (\n fromFileName: string,\n toFileName: string\n): string => {\n const fromDir = path.posix.dirname(normalizeToPosix(fromFileName));\n const relativePath = path.posix.relative(\n fromDir,\n normalizeToPosix(toFileName)\n );\n\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`;\n};\n\nconst escapeForRegExp = (value: string): string =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst hasStaticImport = (code: string, specifier: string): boolean =>\n new RegExp(\n `(^|\\\\n)\\\\s*import\\\\s*(?:[\"']${escapeForRegExp(\n specifier\n )}[\"']|[^\\\\n;]+\\\\s+from\\\\s+[\"']${escapeForRegExp(specifier)}[\"'])`,\n 'm'\n ).test(code);\n\nconst hasRequireCall = (code: string, specifier: string): boolean =>\n new RegExp(\n `(^|[;\\\\n])\\\\s*require\\\\(\\\\s*[\"']${escapeForRegExp(specifier)}[\"']\\\\s*\\\\)`,\n 'm'\n ).test(code);\n\nconst getCssLoadStatement = (format: unknown, specifier: string): string =>\n format === 'cjs'\n ? `require(${JSON.stringify(specifier)});\\n`\n : `import ${JSON.stringify(specifier)};\\n`;\n\nconst hasCssLoadStatement = (\n code: string,\n specifier: string,\n format: unknown\n): boolean =>\n format === 'cjs'\n ? hasRequireCall(code, specifier)\n : hasStaticImport(code, specifier);\n\nconst prependCssLoadStatement = (\n code: string,\n specifier: string,\n format: unknown\n): string => {\n const statement = getCssLoadStatement(format, specifier);\n let insertAt = 0;\n\n if (code.startsWith('#!')) {\n const lineBreakIndex = code.indexOf('\\n');\n if (lineBreakIndex >= 0) {\n insertAt = lineBreakIndex + 1;\n } else {\n return `${code}\\n${statement}`;\n }\n }\n\n if (format === 'cjs') {\n const directiveMatch =\n /^(?:\\s*(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*');)+/.exec(\n code.slice(insertAt)\n );\n\n if (directiveMatch) {\n insertAt += directiveMatch[0].length;\n }\n }\n\n return `${code.slice(0, insertAt)}${statement}${code.slice(insertAt)}`;\n};\n\nconst VITE_FS_PREFIX = '/@fs/';\n\nconst safeDecodeURIComponent = (value: string): string => {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n};\n\nconst normalizeViteFsPath = (value: string): string => {\n const fsPath = value.slice(VITE_FS_PREFIX.length);\n return path.normalize(safeDecodeURIComponent(fsPath));\n};\n\nconst isCssReloadTarget = (value: unknown): value is CssReloadTarget => {\n if (!value || typeof value !== 'object') return false;\n\n const reloadTarget = value as Partial<CssReloadTarget>;\n return (\n !!reloadTarget.moduleGraph &&\n typeof reloadTarget.moduleGraph.getModuleById === 'function' &&\n typeof reloadTarget.reloadModule === 'function'\n );\n};\n\nconst getCssReloadTarget = (\n environment: unknown,\n server: ViteDevServer | undefined\n): CssReloadTarget | null => {\n if (isCssReloadTarget(environment)) {\n return environment;\n }\n\n if (server?.moduleGraph) {\n return {\n moduleGraph: server.moduleGraph,\n reloadModule: (module) => server.reloadModule(module),\n };\n }\n\n return null;\n};\n\nconst getWywCssAssetFileNames = (\n resolvedConfig: ResolvedConfig,\n output: RollupOutputLike,\n originalAssetFileNames: AssetFileNames\n): ((assetInfo: AssetInfoLike) => string) | null => {\n if (!output.preserveModules) return null;\n\n const rootDir = resolvedConfig.root;\n\n const preserveModulesRootValue = output.preserveModulesRoot;\n let preserveModulesRootAbs: string | null = null;\n if (typeof preserveModulesRootValue === 'string') {\n preserveModulesRootAbs = path.isAbsolute(preserveModulesRootValue)\n ? preserveModulesRootValue\n : path.resolve(rootDir, preserveModulesRootValue);\n }\n\n const preserveModulesRootRel =\n preserveModulesRootAbs && isInside(preserveModulesRootAbs, rootDir)\n ? normalizeToPosix(path.relative(rootDir, preserveModulesRootAbs))\n : null;\n\n return (assetInfo) => {\n const template =\n typeof originalAssetFileNames === 'function'\n ? originalAssetFileNames(assetInfo)\n : originalAssetFileNames;\n\n const assetName = assetInfo?.name;\n if (typeof assetName !== 'string' || !isWywCssAssetName(assetName)) {\n return template;\n }\n\n if (!template.includes('[')) {\n return template;\n }\n\n let relativePath: string | null = null;\n\n const assetNameNormalized = normalizeToPosix(assetName);\n\n if (\n path.isAbsolute(assetName) ||\n isWindowsAbsolutePath(assetNameNormalized)\n ) {\n const preserveRel =\n preserveModulesRootAbs && isInside(assetName, preserveModulesRootAbs)\n ? path.relative(preserveModulesRootAbs, assetName)\n : null;\n\n if (\n preserveRel &&\n !path.isAbsolute(preserveRel) &&\n !preserveRel.startsWith('..')\n ) {\n relativePath = preserveRel;\n } else if (isInside(assetName, rootDir)) {\n relativePath = path.relative(rootDir, assetName);\n }\n } else if (\n preserveModulesRootRel &&\n assetNameNormalized.startsWith(`${preserveModulesRootRel}/`)\n ) {\n relativePath = assetNameNormalized.slice(\n preserveModulesRootRel.length + 1\n );\n } else {\n relativePath = assetNameNormalized;\n }\n\n const normalized = relativePath\n ? normalizeAssetRelativePath(relativePath)\n : null;\n if (!normalized) {\n return template;\n }\n\n const withoutExt = stripExtension(normalized);\n\n if (template.includes('[name]')) {\n const dir = path.posix.dirname(withoutExt);\n if (dir === '.' || dir === '') {\n return template;\n }\n\n return template.replace(/\\[name\\]/g, `${dir}/[name]`);\n }\n\n const dir = path.posix.dirname(withoutExt);\n if (dir === '.' || dir === '') {\n return template;\n }\n\n const idx = template.indexOf('[');\n if (idx < 0) {\n return template;\n }\n\n const prefix = template.slice(0, idx);\n if (prefix !== '' && !prefix.endsWith('/')) {\n return template;\n }\n\n return `${prefix}${dir}/${template.slice(idx)}`;\n };\n};\n\nexport default function wywInJS({\n debug,\n include,\n exclude,\n sourceMap,\n preserveCssPaths,\n keepComments,\n prefixer,\n preprocessor,\n ssrDevCss,\n ssrDevCssPath,\n transformLibraries,\n ...rest\n}: VitePluginOptions = {}): Plugin {\n const supportedModuleExtensions = new Set([\n '.cjs',\n '.cts',\n '.js',\n '.jsx',\n '.mjs',\n '.mts',\n '.ts',\n '.tsx',\n ]);\n const filter = createFilter(include, exclude);\n const cssLookup: { [key: string]: string } = {};\n const cssFileLookup: { [key: string]: string } = {};\n const metadataLookup: { [key: string]: string } = {};\n const cssFilesByModuleId = new Map<string, string>();\n const pendingCssReloads = new WeakMap<\n CssReloadTarget,\n { files: Set<string>; timer?: ReturnType<typeof setTimeout> }\n >();\n let ssrDevCssVersion = 0;\n let config: ResolvedConfig;\n let devServer: ViteDevServer;\n let importMetaEnvForEval: {\n client: Record<string, unknown>;\n ssr: Record<string, unknown>;\n } | null = null;\n\n const ssrDevCssEnabled = Boolean(ssrDevCss);\n const [ssrDevCssPathname, ssrDevCssQuery] = (\n ssrDevCssPath ?? '/_wyw-in-js/ssr.css'\n ).split('?', 2);\n const ssrDevCssRoute = ssrDevCssPathname.startsWith('/')\n ? ssrDevCssPathname\n : `/${ssrDevCssPathname}`;\n\n const getSsrDevCssHref = () => {\n const versionParam = `v=${ssrDevCssVersion}`;\n const query = ssrDevCssQuery\n ? `${ssrDevCssQuery}&${versionParam}`\n : versionParam;\n return `${ssrDevCssRoute}?${query}`;\n };\n\n const getSsrDevCssContents = () => {\n const entries = Object.entries(cssLookup);\n if (entries.length === 0) return '';\n\n const merged = entries\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([, cssText]) => cssText)\n .join('\\n');\n return `${merged}\\n`;\n };\n\n const { emitter, onDone } = createFileReporter(debug ?? false);\n\n const isSafeAssetPath = (fileName: string) =>\n fileName !== '' &&\n fileName !== '..' &&\n !fileName.startsWith(`..${path.posix.sep}`) &&\n !path.posix.isAbsolute(fileName) &&\n !isWindowsAbsolutePath(fileName);\n\n const replaceModuleExtension = (filename: string, nextExtension: string) => {\n const extension = path.extname(filename);\n return supportedModuleExtensions.has(extension)\n ? `${filename.slice(0, -extension.length)}${nextExtension}`\n : `${filename}${nextExtension}`;\n };\n\n const toBundleRelativePath = (filename: string) => {\n const relativePath = normalizeToPosix(path.relative(config.root, filename));\n\n if (isSafeAssetPath(relativePath)) {\n return relativePath;\n }\n\n if (\n !path.isAbsolute(relativePath) &&\n !isWindowsAbsolutePath(relativePath)\n ) {\n return path.posix.join(\n '_wyw-in-js',\n 'external',\n ...relativePath\n .split(path.posix.sep)\n .filter(Boolean)\n .map((segment) => (segment === '..' ? '__up__' : segment))\n );\n }\n\n return path.posix.join(\n '_wyw-in-js',\n 'external',\n ...normalizeToPosix(path.resolve(filename))\n .split(path.posix.sep)\n .filter(Boolean)\n .map((segment) => segment.replace(/:$/, ''))\n );\n };\n const scheduleCssReload = (\n reloadTarget: CssReloadTarget,\n cssFilename: string\n ) => {\n let state = pendingCssReloads.get(reloadTarget);\n if (!state) {\n state = { files: new Set() };\n pendingCssReloads.set(reloadTarget, state);\n }\n state.files.add(cssFilename);\n\n if (state.timer) return;\n state.timer = setTimeout(() => {\n state.timer = undefined;\n\n const ids = Array.from(state.files);\n state.files.clear();\n\n const { moduleGraph } = reloadTarget;\n for (const id of ids) {\n const module = moduleGraph.getModuleById(id);\n if (module) reloadTarget.reloadModule(module);\n }\n }, 0);\n };\n\n // <dependency id, targets>\n const targets: { dependencies: string[]; id: string }[] = [];\n const clientCache = new TransformCacheCollection();\n const ssrCache = new TransformCacheCollection();\n const caches = new Set<TransformCacheCollectionType>([clientCache, ssrCache]);\n\n const getCache = (isSsr: boolean): TransformCacheCollectionType =>\n isSsr ? ssrCache : clientCache;\n\n type DepInfoLike = { file: string; processing?: Promise<void> };\n type DepsOptimizerLike = {\n init?: () => Promise<void>;\n isOptimizedDepFile?: (id: string) => boolean;\n metadata?: { depInfoList?: DepInfoLike[] };\n scanProcessing?: Promise<void>;\n };\n\n type ViteServerWithDepsOptimizer = ViteDevServer & {\n _depsOptimizer?: DepsOptimizerLike;\n depsOptimizer?: DepsOptimizerLike;\n environments?: Record<string, { depsOptimizer?: DepsOptimizerLike }>;\n };\n\n const isInsideCacheDir = (filename: string): boolean => {\n if (!config.cacheDir) {\n return false;\n }\n\n const relative = path.relative(config.cacheDir, filename);\n return (\n relative !== '' &&\n !relative.startsWith('..') &&\n !path.isAbsolute(relative)\n );\n };\n\n const getDepsOptimizer = (): DepsOptimizerLike | null => {\n if (!devServer) return null;\n\n const server = devServer as unknown as ViteServerWithDepsOptimizer;\n return (\n server.environments?.client?.depsOptimizer ??\n server.depsOptimizer ??\n server._depsOptimizer ??\n null\n );\n };\n\n const waitForOptimizedDep = async (filename: string): Promise<boolean> => {\n const depsOptimizer = getDepsOptimizer();\n if (!depsOptimizer?.isOptimizedDepFile?.(filename)) {\n return false;\n }\n\n await depsOptimizer.init?.();\n await depsOptimizer.scanProcessing;\n\n const info = depsOptimizer.metadata?.depInfoList?.find(\n (item) => item.file === filename\n );\n if (info?.processing) {\n await info.processing;\n }\n\n return true;\n };\n\n type ViteResolver = ReturnType<ResolvedConfig['createResolver']>;\n type ViteResolverResult = Awaited<ReturnType<ViteResolver>>;\n type ResolveFn = (\n what: string,\n importer: string\n ) => Promise<ViteResolverResult>;\n\n let viteResolver: ViteResolver | null = null;\n\n const resolveClient: ResolveFn = (what, importer) => {\n if (!viteResolver) {\n throw new Error('Vite resolver is not initialized yet');\n }\n\n return viteResolver(what, importer, false, false);\n };\n\n const resolveSsr: ResolveFn = (what, importer) => {\n if (!viteResolver) {\n throw new Error('Vite resolver is not initialized yet');\n }\n\n return viteResolver(what, importer, false, true);\n };\n\n const createAsyncResolver = asyncResolverFactory(\n async (\n resolved: ViteResolverResult,\n what: string,\n importer: string,\n stack: string[]\n ): Promise<string | null> => {\n const log = logger.extend('vite').extend(getFileIdx(importer));\n\n if (resolved) {\n log(\"resolve ✅ '%s'@'%s -> %O\\n%s\", what, importer, resolved);\n\n // Vite adds param like `?v=667939b3` to cached modules\n let resolvedId = resolved.split('?', 1)[0];\n\n if (resolvedId.startsWith('\\0')) {\n // \\0 is a special character in Rollup that tells Rollup to not include this in the bundle\n // https://rollupjs.org/guide/en/#outputexports\n return null;\n }\n\n if (resolvedId.startsWith(VITE_FS_PREFIX)) {\n resolvedId = normalizeViteFsPath(resolvedId);\n }\n\n if (resolvedId.startsWith('/@')) {\n return null;\n }\n\n if (!existsSync(resolvedId)) {\n // When Vite resolves to an optimized deps entry (cacheDir) it may not be written yet.\n // Wait for Vite's optimizer instead of calling optimizeDeps() manually (deprecated in Vite 7).\n try {\n await waitForOptimizedDep(resolvedId);\n } catch {\n // If optimizer failed, fall through to preserve previous behavior and surface the error.\n }\n\n // Vite can return an optimized deps entry (from cacheDir) before it's written to disk.\n // Manually calling optimizeDeps is deprecated in Vite 7 and can also get called many times.\n // Instead, fall back to resolving the original module path directly.\n if (!existsSync(resolvedId) && isInsideCacheDir(resolvedId)) {\n try {\n return syncResolve(what, importer, stack);\n } catch {\n // Fall through to preserve previous behavior: return resolvedId and let WyW surface the error.\n }\n }\n }\n\n if (!existsSync(resolvedId) && !path.isAbsolute(resolvedId)) {\n // Vite can resolve an import to a bare specifier when bundling for SSR and marking it as external.\n // In that case we still need a real file path for WyW evaluation.\n return syncResolve(what, importer, stack);\n }\n\n return resolvedId;\n }\n\n log(\"resolve ❌ '%s'@'%s\", what, importer);\n\n // Vite can inject virtual ids like /@react-refresh in dev.\n if (what.startsWith('/@') || what.startsWith('\\0')) {\n return null;\n }\n\n if (\n !what.startsWith('.') &&\n !what.startsWith('/') &&\n !path.isAbsolute(what)\n ) {\n // Keep compatibility with SSR externalization: fall back to Node resolution for bare specifiers.\n return syncResolve(what, importer, stack);\n }\n\n throw new Error(`Could not resolve ${what}`);\n },\n (what, importer) => [what, importer]\n );\n\n const asyncResolveClient = createAsyncResolver(resolveClient);\n const asyncResolveSsr = createAsyncResolver(resolveSsr);\n\n return {\n name: 'wyw-in-js',\n enforce: 'post',\n buildStart() {\n Object.keys(metadataLookup).forEach((key) => {\n delete metadataLookup[key];\n });\n },\n buildEnd() {\n onDone(process.cwd());\n },\n configResolved(resolvedConfig: ResolvedConfig) {\n config = resolvedConfig;\n viteResolver = config.createResolver();\n\n if (preserveCssPaths && config.command === 'build') {\n const outputs = config.build.rollupOptions.output;\n let outputEntries: unknown[] = [];\n if (Array.isArray(outputs)) {\n outputEntries = outputs;\n } else if (outputs) {\n outputEntries = [outputs];\n }\n\n outputEntries.forEach((entry) => {\n if (!entry || typeof entry !== 'object') return;\n\n const output = entry as RollupOutputLike;\n if (!output.preserveModules) return;\n\n const template: AssetFileNames =\n output.assetFileNames ??\n `${config.build.assetsDir ?? 'assets'}/[name].[hash].[ext]`;\n\n const assetFileNames = getWywCssAssetFileNames(\n config,\n output,\n template\n );\n if (assetFileNames) output.assetFileNames = assetFileNames;\n });\n }\n\n const envPrefix = config.envPrefix ?? 'VITE_';\n const envDir =\n // envDir is absolute in modern Vite, but keep a fallback for older versions\n 'envDir' in config && typeof config.envDir === 'string'\n ? config.envDir\n : config.root;\n\n const loaded = loadEnv(config.mode, envDir, envPrefix);\n const base = {\n ...loaded,\n BASE_URL: config.base,\n MODE: config.mode,\n DEV: config.command === 'serve',\n PROD: config.command === 'build',\n };\n\n importMetaEnvForEval = {\n client: { ...base, SSR: false },\n ssr: { ...base, SSR: true },\n };\n },\n configureServer(_server) {\n devServer = _server;\n\n if (!ssrDevCssEnabled || config.command !== 'serve') return;\n\n devServer.middlewares.use(\n (req: IncomingMessage, res: ServerResponse, next: () => void) => {\n const { url } = req;\n if (!url) {\n next();\n return;\n }\n\n const [pathname] = url.split('?', 1);\n if (pathname !== ssrDevCssRoute) {\n next();\n return;\n }\n\n const etag = `W/\"${ssrDevCssVersion}\"`;\n const ifNoneMatch = req.headers['if-none-match'];\n if (ifNoneMatch === etag) {\n res.statusCode = 304;\n res.end();\n return;\n }\n\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/css; charset=utf-8');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('ETag', etag);\n res.end(getSsrDevCssContents());\n }\n );\n },\n transformIndexHtml(html) {\n if (!ssrDevCssEnabled || config.command !== 'serve') return undefined;\n\n return {\n html,\n tags: [\n {\n tag: 'link',\n attrs: { rel: 'stylesheet', href: getSsrDevCssHref() },\n injectTo: 'head-prepend',\n },\n ],\n };\n },\n load(url: string) {\n const [id] = url.split('?', 1);\n return cssLookup[id];\n },\n /* eslint-disable-next-line consistent-return */\n resolveId(importeeUrl: string) {\n const [id] = importeeUrl.split('?', 1);\n if (cssLookup[id]) return id;\n return cssFileLookup[id];\n },\n handleHotUpdate(ctx) {\n // it's module, so just transform it\n if (ctx.modules.length) return ctx.modules;\n\n // Select affected modules of changed dependency\n const affected = targets.filter(\n (x) =>\n // file is dependency of any target\n x.dependencies.some((dep) => dep === ctx.file) ||\n // or changed module is a dependency of any target\n x.dependencies.some((dep) => ctx.modules.some((m) => m.file === dep))\n );\n const deps = affected.flatMap((target) => target.dependencies);\n\n // eslint-disable-next-line no-restricted-syntax\n for (const depId of deps) {\n for (const cache of caches) {\n cache.invalidateForFile(depId);\n }\n }\n\n return affected\n .map((target) => devServer.moduleGraph.getModuleById(target.id))\n .concat(ctx.modules)\n .filter((m): m is ModuleNode => !!m);\n },\n generateBundle(outputOptions, bundle) {\n Object.entries(metadataLookup).forEach(([fileName, source]) => {\n this.emitFile({\n fileName,\n source,\n type: 'asset',\n });\n });\n\n if (config.command !== 'build') return;\n if (!outputOptions.preserveModules) return;\n if (config.build.cssCodeSplit === false) return;\n\n Object.values(bundle as OutputBundleLike).forEach((item) => {\n if (!isOutputChunkLike(item)) {\n return;\n }\n\n const chunk = item;\n\n const moduleId = getTrackedModuleIdForChunk(chunk, cssFilesByModuleId);\n if (!moduleId) {\n return;\n }\n\n const cssFilename = cssFilesByModuleId.get(moduleId);\n if (!cssFilename) {\n return;\n }\n\n const emittedCssFileName = findWywCssAssetFileName(\n bundle as OutputBundleLike,\n cssFilename,\n config.root\n );\n if (!emittedCssFileName) {\n return;\n }\n\n const relativeCssImport = getRelativeImportPath(\n chunk.fileName,\n emittedCssFileName\n );\n if (\n hasCssLoadStatement(\n chunk.code,\n relativeCssImport,\n outputOptions.format\n )\n ) {\n return;\n }\n\n chunk.code = prependCssLoadStatement(\n chunk.code,\n relativeCssImport,\n outputOptions.format\n );\n });\n },\n async transform(\n code: string,\n url: string,\n transformOptions?: boolean | { ssr?: boolean }\n ) {\n const [id] = url.split('?', 1);\n\n // Do not transform ignored and generated files\n if (\n (!transformLibraries && url.includes('node_modules')) ||\n !filter(url) ||\n id in cssLookup\n )\n return;\n\n const log = logger.extend('vite').extend(getFileIdx(id));\n\n log('transform %s', id);\n\n const isSsr =\n typeof transformOptions === 'boolean'\n ? transformOptions\n : Boolean(transformOptions?.ssr);\n\n const overrideContext: OverrideContext = (context, filename) => {\n const env = importMetaEnvForEval?.[isSsr ? 'ssr' : 'client'];\n const withEnv = env\n ? { ...context, __wyw_import_meta_env: env }\n : context;\n\n return rest.overrideContext\n ? rest.overrideContext(withEnv, filename)\n : withEnv;\n };\n\n const transformServices = {\n options: {\n filename: id,\n root: process.cwd(),\n prefixer,\n keepComments,\n preprocessor,\n pluginOptions: {\n ...rest,\n overrideContext,\n },\n },\n cache: getCache(isSsr),\n emitWarning: (message: string) => this.warn(message),\n eventEmitter: emitter,\n };\n\n const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;\n\n const result: TransformResult = await transform(\n transformServices,\n code,\n asyncResolve\n );\n\n result.diagnostics?.forEach((diagnostic) => {\n this.warn({\n id: diagnostic.filename,\n loc: diagnostic.start\n ? {\n column: diagnostic.start.column,\n file: diagnostic.filename,\n line: diagnostic.start.line,\n }\n : undefined,\n message: `[wyw-in-js] ${diagnostic.severity} [${diagnostic.category}] ${diagnostic.message}`,\n pluginCode: diagnostic.category,\n });\n });\n\n const relativeId = normalizeToPosix(path.relative(config.root, id));\n const metadataFilename = replaceModuleExtension(id, '.wyw-in-js.json');\n const metadataRelativePath = toBundleRelativePath(metadataFilename);\n\n delete metadataLookup[metadataRelativePath];\n\n if (result.metadata) {\n const cssFile =\n typeof result.cssText === 'string' && result.cssText !== ''\n ? replaceModuleExtension(relativeId, '.wyw-in-js.css')\n : undefined;\n\n metadataLookup[metadataRelativePath] = stringifyMetadataManifest(\n createMetadataManifest(result.metadata, {\n cssFile,\n source: relativeId,\n })\n );\n }\n\n let { cssText, dependencies } = result;\n\n // Heads up, there are three cases:\n // 1. cssText is undefined, it means that file was not transformed\n // 2. cssText is empty, it means that file was transformed, but it does not contain any styles\n // 3. cssText is not empty, it means that file was transformed and it contains styles\n\n if (typeof cssText === 'undefined') {\n cssFilesByModuleId.delete(id);\n return;\n }\n\n if (cssText === '') {\n cssFilesByModuleId.delete(id);\n /* eslint-disable-next-line consistent-return */\n return {\n code: result.code,\n map: result.sourceMap,\n };\n }\n\n dependencies ??= [];\n\n const cssFilename = normalizeToPosix(\n replaceModuleExtension(id, '.wyw-in-js.css')\n );\n cssFilesByModuleId.set(id, cssFilename);\n\n const cssRelativePath = normalizeToPosix(\n path.relative(config.root, cssFilename)\n );\n\n const cssId = `/${cssRelativePath}`;\n\n if (sourceMap && result.cssSourceMapText) {\n const map = Buffer.from(result.cssSourceMapText).toString('base64');\n cssText += `/*# sourceMappingURL=data:application/json;base64,${map}*/`;\n }\n\n const didCssChange = cssLookup[cssFilename] !== cssText;\n cssLookup[cssFilename] = cssText;\n cssFileLookup[cssId] = cssFilename;\n\n result.code += `\\nimport ${JSON.stringify(cssFilename)};\\n`;\n\n for (let i = 0, end = dependencies.length; i < end; i++) {\n // eslint-disable-next-line no-await-in-loop\n const depModule = await this.resolve(dependencies[i], url, {\n isEntry: false,\n });\n if (depModule) dependencies[i] = depModule.id;\n }\n const target = targets.find((t) => t.id === id);\n if (!target) targets.push({ id, dependencies });\n else target.dependencies = dependencies;\n\n if (didCssChange) {\n const reloadTarget = getCssReloadTarget(\n (this as typeof this & { environment?: unknown }).environment,\n devServer\n );\n if (reloadTarget) {\n scheduleCssReload(reloadTarget, cssFilename);\n }\n if (ssrDevCssEnabled && config.command === 'serve') {\n ssrDevCssVersion += 1;\n }\n }\n /* eslint-disable-next-line consistent-return */\n return { code: result.code, map: result.sourceMap };\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@wyw-in-js/vite",
3
- "version": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "dependencies": {
5
- "@wyw-in-js/shared": "1.0.5",
6
- "@wyw-in-js/transform": "1.0.8"
5
+ "@wyw-in-js/shared": "1.1.0",
6
+ "@wyw-in-js/transform": "1.1.0"
7
7
  },
8
8
  "devDependencies": {
9
9
  "@types/node": "^16.18.55",
package/types/index.js CHANGED
@@ -4,6 +4,39 @@
4
4
  * It uses the transform.ts function to generate class names from source code,
5
5
  * returns transformed code without template literals and attaches generated source maps
6
6
  */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
7
40
  var __importDefault = (this && this.__importDefault) || function (mod) {
8
41
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
42
  };
@@ -13,7 +46,18 @@ const fs_1 = require("fs");
13
46
  const path_1 = __importDefault(require("path"));
14
47
  const vite_1 = require("vite");
15
48
  const shared_1 = require("@wyw-in-js/shared");
16
- const transform_1 = require("@wyw-in-js/transform");
49
+ const transformPkg = __importStar(require("@wyw-in-js/transform"));
50
+ const { createTransformManifest, createFileReporter, getFileIdx, stringifyTransformManifest, transform, TransformCacheCollection, } = transformPkg;
51
+ const createMetadataManifest = (metadata, context) => typeof createTransformManifest === 'function'
52
+ ? createTransformManifest(metadata, context)
53
+ : {
54
+ ...metadata,
55
+ ...context,
56
+ version: 1,
57
+ };
58
+ const stringifyMetadataManifest = (manifest) => typeof stringifyTransformManifest === 'function'
59
+ ? stringifyTransformManifest(manifest)
60
+ : `${JSON.stringify(manifest, null, 2)}\n`;
17
61
  const isWindowsAbsolutePath = (value) => /^[a-zA-Z]:[\\/]/.test(value);
18
62
  const normalizeToPosix = (value) => value.replace(/\\/g, path_1.default.posix.sep);
19
63
  const isInside = (childPath, parentPath) => {
@@ -244,9 +288,20 @@ const getWywCssAssetFileNames = (resolvedConfig, output, originalAssetFileNames)
244
288
  };
245
289
  };
246
290
  function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepComments, prefixer, preprocessor, ssrDevCss, ssrDevCssPath, transformLibraries, ...rest } = {}) {
291
+ const supportedModuleExtensions = new Set([
292
+ '.cjs',
293
+ '.cts',
294
+ '.js',
295
+ '.jsx',
296
+ '.mjs',
297
+ '.mts',
298
+ '.ts',
299
+ '.tsx',
300
+ ]);
247
301
  const filter = (0, vite_1.createFilter)(include, exclude);
248
302
  const cssLookup = {};
249
303
  const cssFileLookup = {};
304
+ const metadataLookup = {};
250
305
  const cssFilesByModuleId = new Map();
251
306
  const pendingCssReloads = new WeakMap();
252
307
  let ssrDevCssVersion = 0;
@@ -275,7 +330,35 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
275
330
  .join('\n');
276
331
  return `${merged}\n`;
277
332
  };
278
- const { emitter, onDone } = (0, transform_1.createFileReporter)(debug ?? false);
333
+ const { emitter, onDone } = createFileReporter(debug ?? false);
334
+ const isSafeAssetPath = (fileName) => fileName !== '' &&
335
+ fileName !== '..' &&
336
+ !fileName.startsWith(`..${path_1.default.posix.sep}`) &&
337
+ !path_1.default.posix.isAbsolute(fileName) &&
338
+ !isWindowsAbsolutePath(fileName);
339
+ const replaceModuleExtension = (filename, nextExtension) => {
340
+ const extension = path_1.default.extname(filename);
341
+ return supportedModuleExtensions.has(extension)
342
+ ? `${filename.slice(0, -extension.length)}${nextExtension}`
343
+ : `${filename}${nextExtension}`;
344
+ };
345
+ const toBundleRelativePath = (filename) => {
346
+ const relativePath = normalizeToPosix(path_1.default.relative(config.root, filename));
347
+ if (isSafeAssetPath(relativePath)) {
348
+ return relativePath;
349
+ }
350
+ if (!path_1.default.isAbsolute(relativePath) &&
351
+ !isWindowsAbsolutePath(relativePath)) {
352
+ return path_1.default.posix.join('_wyw-in-js', 'external', ...relativePath
353
+ .split(path_1.default.posix.sep)
354
+ .filter(Boolean)
355
+ .map((segment) => (segment === '..' ? '__up__' : segment)));
356
+ }
357
+ return path_1.default.posix.join('_wyw-in-js', 'external', ...normalizeToPosix(path_1.default.resolve(filename))
358
+ .split(path_1.default.posix.sep)
359
+ .filter(Boolean)
360
+ .map((segment) => segment.replace(/:$/, '')));
361
+ };
279
362
  const scheduleCssReload = (reloadTarget, cssFilename) => {
280
363
  let state = pendingCssReloads.get(reloadTarget);
281
364
  if (!state) {
@@ -299,8 +382,8 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
299
382
  };
300
383
  // <dependency id, targets>
301
384
  const targets = [];
302
- const clientCache = new transform_1.TransformCacheCollection();
303
- const ssrCache = new transform_1.TransformCacheCollection();
385
+ const clientCache = new TransformCacheCollection();
386
+ const ssrCache = new TransformCacheCollection();
304
387
  const caches = new Set([clientCache, ssrCache]);
305
388
  const getCache = (isSsr) => isSsr ? ssrCache : clientCache;
306
389
  const isInsideCacheDir = (filename) => {
@@ -348,7 +431,7 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
348
431
  return viteResolver(what, importer, false, true);
349
432
  };
350
433
  const createAsyncResolver = (0, shared_1.asyncResolverFactory)(async (resolved, what, importer, stack) => {
351
- const log = shared_1.logger.extend('vite').extend((0, transform_1.getFileIdx)(importer));
434
+ const log = shared_1.logger.extend('vite').extend(getFileIdx(importer));
352
435
  if (resolved) {
353
436
  log("resolve ✅ '%s'@'%s -> %O\n%s", what, importer, resolved);
354
437
  // Vite adds param like `?v=667939b3` to cached modules
@@ -410,6 +493,11 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
410
493
  return {
411
494
  name: 'wyw-in-js',
412
495
  enforce: 'post',
496
+ buildStart() {
497
+ Object.keys(metadataLookup).forEach((key) => {
498
+ delete metadataLookup[key];
499
+ });
500
+ },
413
501
  buildEnd() {
414
502
  onDone(process.cwd());
415
503
  },
@@ -534,6 +622,13 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
534
622
  .filter((m) => !!m);
535
623
  },
536
624
  generateBundle(outputOptions, bundle) {
625
+ Object.entries(metadataLookup).forEach(([fileName, source]) => {
626
+ this.emitFile({
627
+ fileName,
628
+ source,
629
+ type: 'asset',
630
+ });
631
+ });
537
632
  if (config.command !== 'build')
538
633
  return;
539
634
  if (!outputOptions.preserveModules)
@@ -571,7 +666,7 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
571
666
  !filter(url) ||
572
667
  id in cssLookup)
573
668
  return;
574
- const log = shared_1.logger.extend('vite').extend((0, transform_1.getFileIdx)(id));
669
+ const log = shared_1.logger.extend('vite').extend(getFileIdx(id));
575
670
  log('transform %s', id);
576
671
  const isSsr = typeof transformOptions === 'boolean'
577
672
  ? transformOptions
@@ -602,7 +697,34 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
602
697
  eventEmitter: emitter,
603
698
  };
604
699
  const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;
605
- const result = await (0, transform_1.transform)(transformServices, code, asyncResolve);
700
+ const result = await transform(transformServices, code, asyncResolve);
701
+ result.diagnostics?.forEach((diagnostic) => {
702
+ this.warn({
703
+ id: diagnostic.filename,
704
+ loc: diagnostic.start
705
+ ? {
706
+ column: diagnostic.start.column,
707
+ file: diagnostic.filename,
708
+ line: diagnostic.start.line,
709
+ }
710
+ : undefined,
711
+ message: `[wyw-in-js] ${diagnostic.severity} [${diagnostic.category}] ${diagnostic.message}`,
712
+ pluginCode: diagnostic.category,
713
+ });
714
+ });
715
+ const relativeId = normalizeToPosix(path_1.default.relative(config.root, id));
716
+ const metadataFilename = replaceModuleExtension(id, '.wyw-in-js.json');
717
+ const metadataRelativePath = toBundleRelativePath(metadataFilename);
718
+ delete metadataLookup[metadataRelativePath];
719
+ if (result.metadata) {
720
+ const cssFile = typeof result.cssText === 'string' && result.cssText !== ''
721
+ ? replaceModuleExtension(relativeId, '.wyw-in-js.css')
722
+ : undefined;
723
+ metadataLookup[metadataRelativePath] = stringifyMetadataManifest(createMetadataManifest(result.metadata, {
724
+ cssFile,
725
+ source: relativeId,
726
+ }));
727
+ }
606
728
  let { cssText, dependencies } = result;
607
729
  // Heads up, there are three cases:
608
730
  // 1. cssText is undefined, it means that file was not transformed
@@ -621,13 +743,9 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
621
743
  };
622
744
  }
623
745
  dependencies ??= [];
624
- const cssFilename = path_1.default
625
- .normalize(`${id.replace(/\.[jt]sx?$/, '')}.wyw-in-js.css`)
626
- .replace(/\\/g, path_1.default.posix.sep);
746
+ const cssFilename = normalizeToPosix(replaceModuleExtension(id, '.wyw-in-js.css'));
627
747
  cssFilesByModuleId.set(id, cssFilename);
628
- const cssRelativePath = path_1.default
629
- .relative(config.root, cssFilename)
630
- .replace(/\\/g, path_1.default.posix.sep);
748
+ const cssRelativePath = normalizeToPosix(path_1.default.relative(config.root, cssFilename));
631
749
  const cssId = `/${cssRelativePath}`;
632
750
  if (sourceMap && result.cssSourceMapText) {
633
751
  const map = Buffer.from(result.cssSourceMapText).toString('base64');