@wyw-in-js/vite 1.0.7 → 1.0.8

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
@@ -39,6 +39,23 @@ const normalizeViteFsPath = value => {
39
39
  const fsPath = value.slice(VITE_FS_PREFIX.length);
40
40
  return path.normalize(safeDecodeURIComponent(fsPath));
41
41
  };
42
+ const isCssReloadTarget = value => {
43
+ if (!value || typeof value !== 'object') return false;
44
+ const reloadTarget = value;
45
+ return !!reloadTarget.moduleGraph && typeof reloadTarget.moduleGraph.getModuleById === 'function' && typeof reloadTarget.reloadModule === 'function';
46
+ };
47
+ const getCssReloadTarget = (environment, server) => {
48
+ if (isCssReloadTarget(environment)) {
49
+ return environment;
50
+ }
51
+ if (server?.moduleGraph) {
52
+ return {
53
+ moduleGraph: server.moduleGraph,
54
+ reloadModule: module => server.reloadModule(module)
55
+ };
56
+ }
57
+ return null;
58
+ };
42
59
  const getWywCssAssetFileNames = (resolvedConfig, output, originalAssetFileNames) => {
43
60
  if (!output.preserveModules) return null;
44
61
  const rootDir = resolvedConfig.root;
@@ -115,8 +132,7 @@ export default function wywInJS({
115
132
  const filter = createFilter(include, exclude);
116
133
  const cssLookup = {};
117
134
  const cssFileLookup = {};
118
- const pendingCssReloads = new Set();
119
- let pendingCssReloadTimer;
135
+ const pendingCssReloads = new WeakMap();
120
136
  let ssrDevCssVersion = 0;
121
137
  let config;
122
138
  let devServer;
@@ -139,17 +155,26 @@ export default function wywInJS({
139
155
  emitter,
140
156
  onDone
141
157
  } = createFileReporter(debug ?? false);
142
- const scheduleCssReload = cssFilename => {
143
- if (!devServer?.moduleGraph) return;
144
- pendingCssReloads.add(cssFilename);
145
- if (pendingCssReloadTimer) return;
146
- pendingCssReloadTimer = setTimeout(() => {
147
- pendingCssReloadTimer = undefined;
148
- const ids = Array.from(pendingCssReloads);
149
- pendingCssReloads.clear();
158
+ const scheduleCssReload = (reloadTarget, cssFilename) => {
159
+ let state = pendingCssReloads.get(reloadTarget);
160
+ if (!state) {
161
+ state = {
162
+ files: new Set()
163
+ };
164
+ pendingCssReloads.set(reloadTarget, state);
165
+ }
166
+ state.files.add(cssFilename);
167
+ if (state.timer) return;
168
+ state.timer = setTimeout(() => {
169
+ state.timer = undefined;
170
+ const ids = Array.from(state.files);
171
+ state.files.clear();
172
+ const {
173
+ moduleGraph
174
+ } = reloadTarget;
150
175
  for (const id of ids) {
151
- const module = devServer.moduleGraph.getModuleById(id);
152
- if (module) devServer.reloadModule(module);
176
+ const module = moduleGraph.getModuleById(id);
177
+ if (module) reloadTarget.reloadModule(module);
153
178
  }
154
179
  }, 0);
155
180
  };
@@ -459,7 +484,10 @@ export default function wywInJS({
459
484
  dependencies
460
485
  });else target.dependencies = dependencies;
461
486
  if (didCssChange) {
462
- scheduleCssReload(cssFilename);
487
+ const reloadTarget = getCssReloadTarget(this.environment, devServer);
488
+ if (reloadTarget) {
489
+ scheduleCssReload(reloadTarget, cssFilename);
490
+ }
463
491
  if (ssrDevCssEnabled && config.command === 'serve') {
464
492
  ssrDevCssVersion += 1;
465
493
  }
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","VITE_FS_PREFIX","safeDecodeURIComponent","decodeURIComponent","normalizeViteFsPath","fsPath","getWywCssAssetFileNames","resolvedConfig","output","originalAssetFileNames","preserveModules","rootDir","root","preserveModulesRootValue","preserveModulesRoot","preserveModulesRootAbs","resolve","preserveModulesRootRel","assetInfo","template","assetName","name","includes","relativePath","assetNameNormalized","preserveRel","withoutExt","dir","dirname","idx","indexOf","prefix","wywInJS","debug","include","exclude","sourceMap","preserveCssPaths","keepComments","prefixer","preprocessor","ssrDevCss","ssrDevCssPath","transformLibraries","rest","filter","cssLookup","cssFileLookup","pendingCssReloads","Set","pendingCssReloadTimer","ssrDevCssVersion","config","devServer","importMetaEnvForEval","ssrDevCssEnabled","Boolean","ssrDevCssPathname","ssrDevCssQuery","split","ssrDevCssRoute","getSsrDevCssHref","versionParam","query","getSsrDevCssContents","entries","Object","merged","sort","a","b","localeCompare","map","cssText","join","emitter","onDone","scheduleCssReload","cssFilename","moduleGraph","add","setTimeout","undefined","ids","Array","from","clear","id","module","getModuleById","reloadModule","targets","clientCache","ssrCache","caches","getCache","isSsr","isInsideCacheDir","filename","cacheDir","getDepsOptimizer","server","environments","client","depsOptimizer","_depsOptimizer","waitForOptimizedDep","isOptimizedDepFile","init","scanProcessing","info","metadata","depInfoList","find","item","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","isArray","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","some","dep","m","deps","flatMap","target","depId","cache","invalidateForFile","concat","code","transformOptions","overrideContext","context","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","asyncResolve","result","cssRelativePath","cssId","cssSourceMapText","Buffer","toString","didCssChange","JSON","stringify","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 preserveModules?: boolean;\n preserveModulesRoot?: unknown;\n} & Record<string, unknown>;\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 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 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 pendingCssReloads = new Set<string>();\n let pendingCssReloadTimer: ReturnType<typeof setTimeout> | undefined;\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 = (cssFilename: string) => {\n if (!devServer?.moduleGraph) return;\n\n pendingCssReloads.add(cssFilename);\n\n if (pendingCssReloadTimer) return;\n pendingCssReloadTimer = setTimeout(() => {\n pendingCssReloadTimer = undefined;\n\n const ids = Array.from(pendingCssReloads);\n pendingCssReloads.clear();\n\n for (const id of ids) {\n const module = devServer.moduleGraph.getModuleById(id);\n if (module) devServer.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 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 return;\n }\n\n if (cssText === '') {\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\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 scheduleCssReload(cssFilename);\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","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","VITE_FS_PREFIX","safeDecodeURIComponent","decodeURIComponent","normalizeViteFsPath","fsPath","isCssReloadTarget","reloadTarget","moduleGraph","getModuleById","reloadModule","getCssReloadTarget","environment","server","module","getWywCssAssetFileNames","resolvedConfig","output","originalAssetFileNames","preserveModules","rootDir","root","preserveModulesRootValue","preserveModulesRoot","preserveModulesRootAbs","resolve","preserveModulesRootRel","assetInfo","template","assetName","name","includes","relativePath","assetNameNormalized","preserveRel","withoutExt","dir","dirname","idx","indexOf","prefix","wywInJS","debug","include","exclude","sourceMap","preserveCssPaths","keepComments","prefixer","preprocessor","ssrDevCss","ssrDevCssPath","transformLibraries","rest","filter","cssLookup","cssFileLookup","pendingCssReloads","WeakMap","ssrDevCssVersion","config","devServer","importMetaEnvForEval","ssrDevCssEnabled","Boolean","ssrDevCssPathname","ssrDevCssQuery","split","ssrDevCssRoute","getSsrDevCssHref","versionParam","query","getSsrDevCssContents","entries","Object","merged","sort","a","b","localeCompare","map","cssText","join","emitter","onDone","scheduleCssReload","cssFilename","state","get","files","Set","set","add","timer","setTimeout","undefined","ids","Array","from","clear","id","targets","clientCache","ssrCache","caches","getCache","isSsr","isInsideCacheDir","filename","cacheDir","getDepsOptimizer","environments","client","depsOptimizer","_depsOptimizer","waitForOptimizedDep","isOptimizedDepFile","init","scanProcessing","info","metadata","depInfoList","find","item","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","isArray","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","some","dep","m","deps","flatMap","target","depId","cache","invalidateForFile","concat","code","transformOptions","overrideContext","context","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","asyncResolve","result","cssRelativePath","cssId","cssSourceMapText","Buffer","toString","didCssChange","JSON","stringify","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 preserveModules?: boolean;\n preserveModulesRoot?: unknown;\n} & Record<string, unknown>;\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 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 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 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 return;\n }\n\n if (cssText === '') {\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\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":[]}
package/lib/index.js CHANGED
@@ -46,6 +46,23 @@ const normalizeViteFsPath = value => {
46
46
  const fsPath = value.slice(VITE_FS_PREFIX.length);
47
47
  return _path.default.normalize(safeDecodeURIComponent(fsPath));
48
48
  };
49
+ const isCssReloadTarget = value => {
50
+ if (!value || typeof value !== 'object') return false;
51
+ const reloadTarget = value;
52
+ return !!reloadTarget.moduleGraph && typeof reloadTarget.moduleGraph.getModuleById === 'function' && typeof reloadTarget.reloadModule === 'function';
53
+ };
54
+ const getCssReloadTarget = (environment, server) => {
55
+ if (isCssReloadTarget(environment)) {
56
+ return environment;
57
+ }
58
+ if (server !== null && server !== void 0 && server.moduleGraph) {
59
+ return {
60
+ moduleGraph: server.moduleGraph,
61
+ reloadModule: module => server.reloadModule(module)
62
+ };
63
+ }
64
+ return null;
65
+ };
49
66
  const getWywCssAssetFileNames = (resolvedConfig, output, originalAssetFileNames) => {
50
67
  if (!output.preserveModules) return null;
51
68
  const rootDir = resolvedConfig.root;
@@ -122,8 +139,7 @@ function wywInJS({
122
139
  const filter = (0, _vite.createFilter)(include, exclude);
123
140
  const cssLookup = {};
124
141
  const cssFileLookup = {};
125
- const pendingCssReloads = new Set();
126
- let pendingCssReloadTimer;
142
+ const pendingCssReloads = new WeakMap();
127
143
  let ssrDevCssVersion = 0;
128
144
  let config;
129
145
  let devServer;
@@ -146,18 +162,26 @@ function wywInJS({
146
162
  emitter,
147
163
  onDone
148
164
  } = (0, _transform.createFileReporter)(debug !== null && debug !== void 0 ? debug : false);
149
- const scheduleCssReload = cssFilename => {
150
- var _devServer;
151
- if (!((_devServer = devServer) !== null && _devServer !== void 0 && _devServer.moduleGraph)) return;
152
- pendingCssReloads.add(cssFilename);
153
- if (pendingCssReloadTimer) return;
154
- pendingCssReloadTimer = setTimeout(() => {
155
- pendingCssReloadTimer = undefined;
156
- const ids = Array.from(pendingCssReloads);
157
- pendingCssReloads.clear();
165
+ const scheduleCssReload = (reloadTarget, cssFilename) => {
166
+ let state = pendingCssReloads.get(reloadTarget);
167
+ if (!state) {
168
+ state = {
169
+ files: new Set()
170
+ };
171
+ pendingCssReloads.set(reloadTarget, state);
172
+ }
173
+ state.files.add(cssFilename);
174
+ if (state.timer) return;
175
+ state.timer = setTimeout(() => {
176
+ state.timer = undefined;
177
+ const ids = Array.from(state.files);
178
+ state.files.clear();
179
+ const {
180
+ moduleGraph
181
+ } = reloadTarget;
158
182
  for (const id of ids) {
159
- const module = devServer.moduleGraph.getModuleById(id);
160
- if (module) devServer.reloadModule(module);
183
+ const module = moduleGraph.getModuleById(id);
184
+ if (module) reloadTarget.reloadModule(module);
161
185
  }
162
186
  }, 0);
163
187
  };
@@ -472,7 +496,10 @@ function wywInJS({
472
496
  dependencies
473
497
  });else target.dependencies = dependencies;
474
498
  if (didCssChange) {
475
- scheduleCssReload(cssFilename);
499
+ const reloadTarget = getCssReloadTarget(this.environment, devServer);
500
+ if (reloadTarget) {
501
+ scheduleCssReload(reloadTarget, cssFilename);
502
+ }
476
503
  if (ssrDevCssEnabled && config.command === 'serve') {
477
504
  ssrDevCssVersion += 1;
478
505
  }
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","VITE_FS_PREFIX","safeDecodeURIComponent","decodeURIComponent","normalizeViteFsPath","fsPath","getWywCssAssetFileNames","resolvedConfig","output","originalAssetFileNames","preserveModules","rootDir","root","preserveModulesRootValue","preserveModulesRoot","preserveModulesRootAbs","resolve","preserveModulesRootRel","assetInfo","template","assetName","name","includes","relativePath","assetNameNormalized","preserveRel","withoutExt","dir","dirname","idx","indexOf","prefix","wywInJS","debug","include","exclude","sourceMap","preserveCssPaths","keepComments","prefixer","preprocessor","ssrDevCss","ssrDevCssPath","transformLibraries","rest","filter","createFilter","cssLookup","cssFileLookup","pendingCssReloads","Set","pendingCssReloadTimer","ssrDevCssVersion","config","devServer","importMetaEnvForEval","ssrDevCssEnabled","Boolean","ssrDevCssPathname","ssrDevCssQuery","split","ssrDevCssRoute","getSsrDevCssHref","versionParam","query","getSsrDevCssContents","entries","Object","merged","sort","a","b","localeCompare","map","cssText","join","emitter","onDone","createFileReporter","scheduleCssReload","cssFilename","_devServer","moduleGraph","add","setTimeout","undefined","ids","Array","from","clear","id","module","getModuleById","reloadModule","targets","clientCache","TransformCacheCollection","ssrCache","caches","getCache","isSsr","isInsideCacheDir","filename","cacheDir","getDepsOptimizer","_ref","_ref2","_server$environments$","_server$environments","server","environments","client","depsOptimizer","_depsOptimizer","waitForOptimizedDep","_depsOptimizer$isOpti","_depsOptimizer$init","_depsOptimizer$metada","isOptimizedDepFile","call","init","scanProcessing","info","metadata","depInfoList","find","item","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","isArray","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","some","dep","m","deps","flatMap","target","depId","cache","invalidateForFile","concat","transform","code","transformOptions","overrideContext","context","_importMetaEnvForEval","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","asyncResolve","result","cssRelativePath","cssId","cssSourceMapText","Buffer","toString","didCssChange","JSON","stringify","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 preserveModules?: boolean;\n preserveModulesRoot?: unknown;\n} & Record<string, unknown>;\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 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 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 pendingCssReloads = new Set<string>();\n let pendingCssReloadTimer: ReturnType<typeof setTimeout> | undefined;\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 = (cssFilename: string) => {\n if (!devServer?.moduleGraph) return;\n\n pendingCssReloads.add(cssFilename);\n\n if (pendingCssReloadTimer) return;\n pendingCssReloadTimer = setTimeout(() => {\n pendingCssReloadTimer = undefined;\n\n const ids = Array.from(pendingCssReloads);\n pendingCssReloads.clear();\n\n for (const id of ids) {\n const module = devServer.moduleGraph.getModuleById(id);\n if (module) devServer.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 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 return;\n }\n\n if (cssText === '') {\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\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 scheduleCssReload(cssFilename);\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","_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","VITE_FS_PREFIX","safeDecodeURIComponent","decodeURIComponent","normalizeViteFsPath","fsPath","isCssReloadTarget","reloadTarget","moduleGraph","getModuleById","reloadModule","getCssReloadTarget","environment","server","module","getWywCssAssetFileNames","resolvedConfig","output","originalAssetFileNames","preserveModules","rootDir","root","preserveModulesRootValue","preserveModulesRoot","preserveModulesRootAbs","resolve","preserveModulesRootRel","assetInfo","template","assetName","name","includes","relativePath","assetNameNormalized","preserveRel","withoutExt","dir","dirname","idx","indexOf","prefix","wywInJS","debug","include","exclude","sourceMap","preserveCssPaths","keepComments","prefixer","preprocessor","ssrDevCss","ssrDevCssPath","transformLibraries","rest","filter","createFilter","cssLookup","cssFileLookup","pendingCssReloads","WeakMap","ssrDevCssVersion","config","devServer","importMetaEnvForEval","ssrDevCssEnabled","Boolean","ssrDevCssPathname","ssrDevCssQuery","split","ssrDevCssRoute","getSsrDevCssHref","versionParam","query","getSsrDevCssContents","entries","Object","merged","sort","a","b","localeCompare","map","cssText","join","emitter","onDone","createFileReporter","scheduleCssReload","cssFilename","state","get","files","Set","set","add","timer","setTimeout","undefined","ids","Array","from","clear","id","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","find","item","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","isArray","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","some","dep","m","deps","flatMap","target","depId","cache","invalidateForFile","concat","transform","code","transformOptions","overrideContext","context","_importMetaEnvForEval","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","asyncResolve","result","cssRelativePath","cssId","cssSourceMapText","Buffer","toString","didCssChange","JSON","stringify","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 preserveModules?: boolean;\n preserveModulesRoot?: unknown;\n} & Record<string, unknown>;\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 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 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 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 return;\n }\n\n if (cssText === '') {\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\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":[]}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@wyw-in-js/vite",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "dependencies": {
5
5
  "@wyw-in-js/shared": "1.0.5",
6
- "@wyw-in-js/transform": "1.0.7"
6
+ "@wyw-in-js/transform": "1.0.8"
7
7
  },
8
8
  "devDependencies": {
9
9
  "@types/node": "^16.18.55",
package/types/index.js CHANGED
@@ -45,6 +45,26 @@ const normalizeViteFsPath = (value) => {
45
45
  const fsPath = value.slice(VITE_FS_PREFIX.length);
46
46
  return path_1.default.normalize(safeDecodeURIComponent(fsPath));
47
47
  };
48
+ const isCssReloadTarget = (value) => {
49
+ if (!value || typeof value !== 'object')
50
+ return false;
51
+ const reloadTarget = value;
52
+ return (!!reloadTarget.moduleGraph &&
53
+ typeof reloadTarget.moduleGraph.getModuleById === 'function' &&
54
+ typeof reloadTarget.reloadModule === 'function');
55
+ };
56
+ const getCssReloadTarget = (environment, server) => {
57
+ if (isCssReloadTarget(environment)) {
58
+ return environment;
59
+ }
60
+ if (server?.moduleGraph) {
61
+ return {
62
+ moduleGraph: server.moduleGraph,
63
+ reloadModule: (module) => server.reloadModule(module),
64
+ };
65
+ }
66
+ return null;
67
+ };
48
68
  const getWywCssAssetFileNames = (resolvedConfig, output, originalAssetFileNames) => {
49
69
  if (!output.preserveModules)
50
70
  return null;
@@ -126,8 +146,7 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
126
146
  const filter = (0, vite_1.createFilter)(include, exclude);
127
147
  const cssLookup = {};
128
148
  const cssFileLookup = {};
129
- const pendingCssReloads = new Set();
130
- let pendingCssReloadTimer;
149
+ const pendingCssReloads = new WeakMap();
131
150
  let ssrDevCssVersion = 0;
132
151
  let config;
133
152
  let devServer;
@@ -155,20 +174,24 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
155
174
  return `${merged}\n`;
156
175
  };
157
176
  const { emitter, onDone } = (0, transform_1.createFileReporter)(debug ?? false);
158
- const scheduleCssReload = (cssFilename) => {
159
- if (!devServer?.moduleGraph)
160
- return;
161
- pendingCssReloads.add(cssFilename);
162
- if (pendingCssReloadTimer)
177
+ const scheduleCssReload = (reloadTarget, cssFilename) => {
178
+ let state = pendingCssReloads.get(reloadTarget);
179
+ if (!state) {
180
+ state = { files: new Set() };
181
+ pendingCssReloads.set(reloadTarget, state);
182
+ }
183
+ state.files.add(cssFilename);
184
+ if (state.timer)
163
185
  return;
164
- pendingCssReloadTimer = setTimeout(() => {
165
- pendingCssReloadTimer = undefined;
166
- const ids = Array.from(pendingCssReloads);
167
- pendingCssReloads.clear();
186
+ state.timer = setTimeout(() => {
187
+ state.timer = undefined;
188
+ const ids = Array.from(state.files);
189
+ state.files.clear();
190
+ const { moduleGraph } = reloadTarget;
168
191
  for (const id of ids) {
169
- const module = devServer.moduleGraph.getModuleById(id);
192
+ const module = moduleGraph.getModuleById(id);
170
193
  if (module)
171
- devServer.reloadModule(module);
194
+ reloadTarget.reloadModule(module);
172
195
  }
173
196
  }, 0);
174
197
  };
@@ -492,7 +515,10 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
492
515
  else
493
516
  target.dependencies = dependencies;
494
517
  if (didCssChange) {
495
- scheduleCssReload(cssFilename);
518
+ const reloadTarget = getCssReloadTarget(this.environment, devServer);
519
+ if (reloadTarget) {
520
+ scheduleCssReload(reloadTarget, cssFilename);
521
+ }
496
522
  if (ssrDevCssEnabled && config.command === 'serve') {
497
523
  ssrDevCssVersion += 1;
498
524
  }