@wyw-in-js/vite 1.0.3 → 1.0.5
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 +42 -16
- package/esm/index.mjs.map +1 -1
- package/lib/index.js +42 -16
- package/lib/index.js.map +1 -1
- package/package.json +4 -4
- package/types/index.js +45 -17
package/esm/index.mjs
CHANGED
|
@@ -156,7 +156,10 @@ export default function wywInJS({
|
|
|
156
156
|
|
|
157
157
|
// <dependency id, targets>
|
|
158
158
|
const targets = [];
|
|
159
|
-
const
|
|
159
|
+
const clientCache = new TransformCacheCollection();
|
|
160
|
+
const ssrCache = new TransformCacheCollection();
|
|
161
|
+
const caches = new Set([clientCache, ssrCache]);
|
|
162
|
+
const getCache = isSsr => isSsr ? ssrCache : clientCache;
|
|
160
163
|
const isInsideCacheDir = filename => {
|
|
161
164
|
if (!config.cacheDir) {
|
|
162
165
|
return false;
|
|
@@ -182,13 +185,26 @@ export default function wywInJS({
|
|
|
182
185
|
}
|
|
183
186
|
return true;
|
|
184
187
|
};
|
|
188
|
+
let viteResolver = null;
|
|
189
|
+
const resolveClient = (what, importer) => {
|
|
190
|
+
if (!viteResolver) {
|
|
191
|
+
throw new Error('Vite resolver is not initialized yet');
|
|
192
|
+
}
|
|
193
|
+
return viteResolver(what, importer, false, false);
|
|
194
|
+
};
|
|
195
|
+
const resolveSsr = (what, importer) => {
|
|
196
|
+
if (!viteResolver) {
|
|
197
|
+
throw new Error('Vite resolver is not initialized yet');
|
|
198
|
+
}
|
|
199
|
+
return viteResolver(what, importer, false, true);
|
|
200
|
+
};
|
|
185
201
|
const createAsyncResolver = asyncResolverFactory(async (resolved, what, importer, stack) => {
|
|
186
202
|
const log = logger.extend('vite').extend(getFileIdx(importer));
|
|
187
203
|
if (resolved) {
|
|
188
204
|
log("resolve ✅ '%s'@'%s -> %O\n%s", what, importer, resolved);
|
|
189
205
|
|
|
190
206
|
// Vite adds param like `?v=667939b3` to cached modules
|
|
191
|
-
let resolvedId = resolved.
|
|
207
|
+
let resolvedId = resolved.split('?', 1)[0];
|
|
192
208
|
if (resolvedId.startsWith('\0')) {
|
|
193
209
|
// \0 is a special character in Rollup that tells Rollup to not include this in the bundle
|
|
194
210
|
// https://rollupjs.org/guide/en/#outputexports
|
|
@@ -200,16 +216,6 @@ export default function wywInJS({
|
|
|
200
216
|
if (resolvedId.startsWith('/@')) {
|
|
201
217
|
return null;
|
|
202
218
|
}
|
|
203
|
-
if (resolved.external) {
|
|
204
|
-
// In SSR mode Vite can mark resolved file ids as `external` (including `external: "absolute"`).
|
|
205
|
-
// Prefer Vite's resolved file path and only fall back to Node resolution for bare specifiers.
|
|
206
|
-
if (path.isAbsolute(resolvedId) || existsSync(resolvedId)) {
|
|
207
|
-
return resolvedId;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// If module is marked as external, Rollup will not resolve it further, so resolve it ourselves.
|
|
211
|
-
return syncResolve(what, importer, stack);
|
|
212
|
-
}
|
|
213
219
|
if (!existsSync(resolvedId)) {
|
|
214
220
|
// When Vite resolves to an optimized deps entry (cacheDir) it may not be written yet.
|
|
215
221
|
// Wait for Vite's optimizer instead of calling optimizeDeps() manually (deprecated in Vite 7).
|
|
@@ -230,11 +236,27 @@ export default function wywInJS({
|
|
|
230
236
|
}
|
|
231
237
|
}
|
|
232
238
|
}
|
|
239
|
+
if (!existsSync(resolvedId) && !path.isAbsolute(resolvedId)) {
|
|
240
|
+
// Vite can resolve an import to a bare specifier when bundling for SSR and marking it as external.
|
|
241
|
+
// In that case we still need a real file path for WyW evaluation.
|
|
242
|
+
return syncResolve(what, importer, stack);
|
|
243
|
+
}
|
|
233
244
|
return resolvedId;
|
|
234
245
|
}
|
|
235
246
|
log("resolve ❌ '%s'@'%s", what, importer);
|
|
247
|
+
|
|
248
|
+
// Vite can inject virtual ids like /@react-refresh in dev.
|
|
249
|
+
if (what.startsWith('/@') || what.startsWith('\0')) {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
if (!what.startsWith('.') && !what.startsWith('/') && !path.isAbsolute(what)) {
|
|
253
|
+
// Keep compatibility with SSR externalization: fall back to Node resolution for bare specifiers.
|
|
254
|
+
return syncResolve(what, importer, stack);
|
|
255
|
+
}
|
|
236
256
|
throw new Error(`Could not resolve ${what}`);
|
|
237
257
|
}, (what, importer) => [what, importer]);
|
|
258
|
+
const asyncResolveClient = createAsyncResolver(resolveClient);
|
|
259
|
+
const asyncResolveSsr = createAsyncResolver(resolveSsr);
|
|
238
260
|
return {
|
|
239
261
|
name: 'wyw-in-js',
|
|
240
262
|
enforce: 'post',
|
|
@@ -243,6 +265,7 @@ export default function wywInJS({
|
|
|
243
265
|
},
|
|
244
266
|
configResolved(resolvedConfig) {
|
|
245
267
|
config = resolvedConfig;
|
|
268
|
+
viteResolver = config.createResolver();
|
|
246
269
|
if (preserveCssPaths && config.command === 'build') {
|
|
247
270
|
const outputs = config.build.rollupOptions.output;
|
|
248
271
|
let outputEntries = [];
|
|
@@ -351,7 +374,9 @@ export default function wywInJS({
|
|
|
351
374
|
|
|
352
375
|
// eslint-disable-next-line no-restricted-syntax
|
|
353
376
|
for (const depId of deps) {
|
|
354
|
-
cache
|
|
377
|
+
for (const cache of caches) {
|
|
378
|
+
cache.invalidateForFile(depId);
|
|
379
|
+
}
|
|
355
380
|
}
|
|
356
381
|
return affected.map(target => devServer.moduleGraph.getModuleById(target.id)).concat(ctx.modules).filter(m => !!m);
|
|
357
382
|
},
|
|
@@ -362,8 +387,8 @@ export default function wywInJS({
|
|
|
362
387
|
if (!transformLibraries && url.includes('node_modules') || !filter(url) || id in cssLookup) return;
|
|
363
388
|
const log = logger.extend('vite').extend(getFileIdx(id));
|
|
364
389
|
log('transform %s', id);
|
|
390
|
+
const isSsr = typeof transformOptions === 'boolean' ? transformOptions : Boolean(transformOptions?.ssr);
|
|
365
391
|
const overrideContext = (context, filename) => {
|
|
366
|
-
const isSsr = typeof transformOptions === 'boolean' ? transformOptions : Boolean(transformOptions?.ssr);
|
|
367
392
|
const env = importMetaEnvForEval?.[isSsr ? 'ssr' : 'client'];
|
|
368
393
|
const withEnv = env ? {
|
|
369
394
|
...context,
|
|
@@ -383,11 +408,12 @@ export default function wywInJS({
|
|
|
383
408
|
overrideContext
|
|
384
409
|
}
|
|
385
410
|
},
|
|
386
|
-
cache,
|
|
411
|
+
cache: getCache(isSsr),
|
|
387
412
|
emitWarning: message => this.warn(message),
|
|
388
413
|
eventEmitter: emitter
|
|
389
414
|
};
|
|
390
|
-
const
|
|
415
|
+
const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;
|
|
416
|
+
const result = await transform(transformServices, code, asyncResolve);
|
|
391
417
|
let {
|
|
392
418
|
cssText,
|
|
393
419
|
dependencies
|
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","cache","isInsideCacheDir","filename","cacheDir","getDepsOptimizer","server","environments","client","depsOptimizer","_depsOptimizer","waitForOptimizedDep","isOptimizedDepFile","init","scanProcessing","info","metadata","depInfoList","find","item","file","processing","createAsyncResolver","resolved","what","importer","stack","log","extend","resolvedId","external","Error","enforce","buildEnd","process","cwd","configResolved","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","invalidateForFile","concat","code","transformOptions","overrideContext","context","isSsr","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","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 cache = new TransformCacheCollection();\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 const createAsyncResolver = asyncResolverFactory(\n async (\n resolved: { external: boolean | 'absolute'; id: string } | null,\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.id.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 (resolved.external) {\n // In SSR mode Vite can mark resolved file ids as `external` (including `external: \"absolute\"`).\n // Prefer Vite's resolved file path and only fall back to Node resolution for bare specifiers.\n if (path.isAbsolute(resolvedId) || existsSync(resolvedId)) {\n return resolvedId;\n }\n\n // If module is marked as external, Rollup will not resolve it further, so resolve it ourselves.\n return syncResolve(what, importer, stack);\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 return resolvedId;\n }\n\n log(\"resolve ❌ '%s'@'%s\", what, importer);\n throw new Error(`Could not resolve ${what}`);\n },\n (what, importer) => [what, importer]\n );\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\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 cache.invalidateForFile(depId);\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 overrideContext: OverrideContext = (context, filename) => {\n const isSsr =\n typeof transformOptions === 'boolean'\n ? transformOptions\n : Boolean(transformOptions?.ssr);\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,\n emitWarning: (message: string) => this.warn(message),\n eventEmitter: emitter,\n };\n\n const result = await transform(\n transformServices,\n code,\n createAsyncResolver(this.resolve)\n );\n\n let { cssText, dependencies } = result;\n\n // Heads up, there are three cases:\n // 1. cssText is undefined, it means that file was not transformed\n // 2. cssText is empty, it means that file was transformed, but it does not contain any styles\n // 3. cssText is not empty, it means that file was transformed and it contains styles\n\n if (typeof cssText === 'undefined') {\n 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","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":[]}
|
package/lib/index.js
CHANGED
|
@@ -164,7 +164,10 @@ function wywInJS({
|
|
|
164
164
|
|
|
165
165
|
// <dependency id, targets>
|
|
166
166
|
const targets = [];
|
|
167
|
-
const
|
|
167
|
+
const clientCache = new _transform.TransformCacheCollection();
|
|
168
|
+
const ssrCache = new _transform.TransformCacheCollection();
|
|
169
|
+
const caches = new Set([clientCache, ssrCache]);
|
|
170
|
+
const getCache = isSsr => isSsr ? ssrCache : clientCache;
|
|
168
171
|
const isInsideCacheDir = filename => {
|
|
169
172
|
if (!config.cacheDir) {
|
|
170
173
|
return false;
|
|
@@ -192,13 +195,26 @@ function wywInJS({
|
|
|
192
195
|
}
|
|
193
196
|
return true;
|
|
194
197
|
};
|
|
198
|
+
let viteResolver = null;
|
|
199
|
+
const resolveClient = (what, importer) => {
|
|
200
|
+
if (!viteResolver) {
|
|
201
|
+
throw new Error('Vite resolver is not initialized yet');
|
|
202
|
+
}
|
|
203
|
+
return viteResolver(what, importer, false, false);
|
|
204
|
+
};
|
|
205
|
+
const resolveSsr = (what, importer) => {
|
|
206
|
+
if (!viteResolver) {
|
|
207
|
+
throw new Error('Vite resolver is not initialized yet');
|
|
208
|
+
}
|
|
209
|
+
return viteResolver(what, importer, false, true);
|
|
210
|
+
};
|
|
195
211
|
const createAsyncResolver = (0, _shared.asyncResolverFactory)(async (resolved, what, importer, stack) => {
|
|
196
212
|
const log = _shared.logger.extend('vite').extend((0, _transform.getFileIdx)(importer));
|
|
197
213
|
if (resolved) {
|
|
198
214
|
log("resolve ✅ '%s'@'%s -> %O\n%s", what, importer, resolved);
|
|
199
215
|
|
|
200
216
|
// Vite adds param like `?v=667939b3` to cached modules
|
|
201
|
-
let resolvedId = resolved.
|
|
217
|
+
let resolvedId = resolved.split('?', 1)[0];
|
|
202
218
|
if (resolvedId.startsWith('\0')) {
|
|
203
219
|
// \0 is a special character in Rollup that tells Rollup to not include this in the bundle
|
|
204
220
|
// https://rollupjs.org/guide/en/#outputexports
|
|
@@ -210,16 +226,6 @@ function wywInJS({
|
|
|
210
226
|
if (resolvedId.startsWith('/@')) {
|
|
211
227
|
return null;
|
|
212
228
|
}
|
|
213
|
-
if (resolved.external) {
|
|
214
|
-
// In SSR mode Vite can mark resolved file ids as `external` (including `external: "absolute"`).
|
|
215
|
-
// Prefer Vite's resolved file path and only fall back to Node resolution for bare specifiers.
|
|
216
|
-
if (_path.default.isAbsolute(resolvedId) || (0, _fs.existsSync)(resolvedId)) {
|
|
217
|
-
return resolvedId;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// If module is marked as external, Rollup will not resolve it further, so resolve it ourselves.
|
|
221
|
-
return (0, _shared.syncResolve)(what, importer, stack);
|
|
222
|
-
}
|
|
223
229
|
if (!(0, _fs.existsSync)(resolvedId)) {
|
|
224
230
|
// When Vite resolves to an optimized deps entry (cacheDir) it may not be written yet.
|
|
225
231
|
// Wait for Vite's optimizer instead of calling optimizeDeps() manually (deprecated in Vite 7).
|
|
@@ -240,11 +246,27 @@ function wywInJS({
|
|
|
240
246
|
}
|
|
241
247
|
}
|
|
242
248
|
}
|
|
249
|
+
if (!(0, _fs.existsSync)(resolvedId) && !_path.default.isAbsolute(resolvedId)) {
|
|
250
|
+
// Vite can resolve an import to a bare specifier when bundling for SSR and marking it as external.
|
|
251
|
+
// In that case we still need a real file path for WyW evaluation.
|
|
252
|
+
return (0, _shared.syncResolve)(what, importer, stack);
|
|
253
|
+
}
|
|
243
254
|
return resolvedId;
|
|
244
255
|
}
|
|
245
256
|
log("resolve ❌ '%s'@'%s", what, importer);
|
|
257
|
+
|
|
258
|
+
// Vite can inject virtual ids like /@react-refresh in dev.
|
|
259
|
+
if (what.startsWith('/@') || what.startsWith('\0')) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
if (!what.startsWith('.') && !what.startsWith('/') && !_path.default.isAbsolute(what)) {
|
|
263
|
+
// Keep compatibility with SSR externalization: fall back to Node resolution for bare specifiers.
|
|
264
|
+
return (0, _shared.syncResolve)(what, importer, stack);
|
|
265
|
+
}
|
|
246
266
|
throw new Error(`Could not resolve ${what}`);
|
|
247
267
|
}, (what, importer) => [what, importer]);
|
|
268
|
+
const asyncResolveClient = createAsyncResolver(resolveClient);
|
|
269
|
+
const asyncResolveSsr = createAsyncResolver(resolveSsr);
|
|
248
270
|
return {
|
|
249
271
|
name: 'wyw-in-js',
|
|
250
272
|
enforce: 'post',
|
|
@@ -254,6 +276,7 @@ function wywInJS({
|
|
|
254
276
|
configResolved(resolvedConfig) {
|
|
255
277
|
var _config$envPrefix;
|
|
256
278
|
config = resolvedConfig;
|
|
279
|
+
viteResolver = config.createResolver();
|
|
257
280
|
if (preserveCssPaths && config.command === 'build') {
|
|
258
281
|
const outputs = config.build.rollupOptions.output;
|
|
259
282
|
let outputEntries = [];
|
|
@@ -363,7 +386,9 @@ function wywInJS({
|
|
|
363
386
|
|
|
364
387
|
// eslint-disable-next-line no-restricted-syntax
|
|
365
388
|
for (const depId of deps) {
|
|
366
|
-
cache
|
|
389
|
+
for (const cache of caches) {
|
|
390
|
+
cache.invalidateForFile(depId);
|
|
391
|
+
}
|
|
367
392
|
}
|
|
368
393
|
return affected.map(target => devServer.moduleGraph.getModuleById(target.id)).concat(ctx.modules).filter(m => !!m);
|
|
369
394
|
},
|
|
@@ -374,9 +399,9 @@ function wywInJS({
|
|
|
374
399
|
if (!transformLibraries && url.includes('node_modules') || !filter(url) || id in cssLookup) return;
|
|
375
400
|
const log = _shared.logger.extend('vite').extend((0, _transform.getFileIdx)(id));
|
|
376
401
|
log('transform %s', id);
|
|
402
|
+
const isSsr = typeof transformOptions === 'boolean' ? transformOptions : Boolean(transformOptions === null || transformOptions === void 0 ? void 0 : transformOptions.ssr);
|
|
377
403
|
const overrideContext = (context, filename) => {
|
|
378
404
|
var _importMetaEnvForEval;
|
|
379
|
-
const isSsr = typeof transformOptions === 'boolean' ? transformOptions : Boolean(transformOptions === null || transformOptions === void 0 ? void 0 : transformOptions.ssr);
|
|
380
405
|
const env = (_importMetaEnvForEval = importMetaEnvForEval) === null || _importMetaEnvForEval === void 0 ? void 0 : _importMetaEnvForEval[isSsr ? 'ssr' : 'client'];
|
|
381
406
|
const withEnv = env ? {
|
|
382
407
|
...context,
|
|
@@ -396,11 +421,12 @@ function wywInJS({
|
|
|
396
421
|
overrideContext
|
|
397
422
|
}
|
|
398
423
|
},
|
|
399
|
-
cache,
|
|
424
|
+
cache: getCache(isSsr),
|
|
400
425
|
emitWarning: message => this.warn(message),
|
|
401
426
|
eventEmitter: emitter
|
|
402
427
|
};
|
|
403
|
-
const
|
|
428
|
+
const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;
|
|
429
|
+
const result = await (0, _transform.transform)(transformServices, code, asyncResolve);
|
|
404
430
|
let {
|
|
405
431
|
cssText,
|
|
406
432
|
dependencies
|
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","cache","TransformCacheCollection","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","createAsyncResolver","asyncResolverFactory","resolved","what","importer","stack","log","logger","extend","getFileIdx","resolvedId","external","existsSync","syncResolve","Error","enforce","buildEnd","process","cwd","configResolved","_config$envPrefix","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","invalidateForFile","concat","transform","code","transformOptions","overrideContext","context","_importMetaEnvForEval","isSsr","env","withEnv","__wyw_import_meta_env","transformServices","options","pluginOptions","emitWarning","message","warn","eventEmitter","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 cache = new TransformCacheCollection();\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 const createAsyncResolver = asyncResolverFactory(\n async (\n resolved: { external: boolean | 'absolute'; id: string } | null,\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.id.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 (resolved.external) {\n // In SSR mode Vite can mark resolved file ids as `external` (including `external: \"absolute\"`).\n // Prefer Vite's resolved file path and only fall back to Node resolution for bare specifiers.\n if (path.isAbsolute(resolvedId) || existsSync(resolvedId)) {\n return resolvedId;\n }\n\n // If module is marked as external, Rollup will not resolve it further, so resolve it ourselves.\n return syncResolve(what, importer, stack);\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 return resolvedId;\n }\n\n log(\"resolve ❌ '%s'@'%s\", what, importer);\n throw new Error(`Could not resolve ${what}`);\n },\n (what, importer) => [what, importer]\n );\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\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 cache.invalidateForFile(depId);\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 overrideContext: OverrideContext = (context, filename) => {\n const isSsr =\n typeof transformOptions === 'boolean'\n ? transformOptions\n : Boolean(transformOptions?.ssr);\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,\n emitWarning: (message: string) => this.warn(message),\n eventEmitter: emitter,\n };\n\n const result = await transform(\n transformServices,\n code,\n createAsyncResolver(this.resolve)\n );\n\n let { cssText, dependencies } = result;\n\n // Heads up, there are three cases:\n // 1. cssText is undefined, it means that file was not transformed\n // 2. cssText is empty, it means that file was transformed, but it does not contain any styles\n // 3. cssText is not empty, it means that file was transformed and it contains styles\n\n if (typeof cssText === 'undefined') {\n 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","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":[]}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wyw-in-js/vite",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@wyw-in-js/shared": "1.0.
|
|
6
|
-
"@wyw-in-js/transform": "1.0.
|
|
5
|
+
"@wyw-in-js/shared": "1.0.4",
|
|
6
|
+
"@wyw-in-js/transform": "1.0.5"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
9
|
"@types/node": "^16.18.55",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"vite": ">=3.2.7"
|
|
15
15
|
},
|
|
16
16
|
"engines": {
|
|
17
|
-
"node": ">=
|
|
17
|
+
"node": ">=20.0.0"
|
|
18
18
|
},
|
|
19
19
|
"exports": {
|
|
20
20
|
"import": "./esm/index.mjs",
|
package/types/index.js
CHANGED
|
@@ -174,7 +174,10 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
|
|
|
174
174
|
};
|
|
175
175
|
// <dependency id, targets>
|
|
176
176
|
const targets = [];
|
|
177
|
-
const
|
|
177
|
+
const clientCache = new transform_1.TransformCacheCollection();
|
|
178
|
+
const ssrCache = new transform_1.TransformCacheCollection();
|
|
179
|
+
const caches = new Set([clientCache, ssrCache]);
|
|
180
|
+
const getCache = (isSsr) => isSsr ? ssrCache : clientCache;
|
|
178
181
|
const isInsideCacheDir = (filename) => {
|
|
179
182
|
if (!config.cacheDir) {
|
|
180
183
|
return false;
|
|
@@ -206,12 +209,25 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
|
|
|
206
209
|
}
|
|
207
210
|
return true;
|
|
208
211
|
};
|
|
212
|
+
let viteResolver = null;
|
|
213
|
+
const resolveClient = (what, importer) => {
|
|
214
|
+
if (!viteResolver) {
|
|
215
|
+
throw new Error('Vite resolver is not initialized yet');
|
|
216
|
+
}
|
|
217
|
+
return viteResolver(what, importer, false, false);
|
|
218
|
+
};
|
|
219
|
+
const resolveSsr = (what, importer) => {
|
|
220
|
+
if (!viteResolver) {
|
|
221
|
+
throw new Error('Vite resolver is not initialized yet');
|
|
222
|
+
}
|
|
223
|
+
return viteResolver(what, importer, false, true);
|
|
224
|
+
};
|
|
209
225
|
const createAsyncResolver = (0, shared_1.asyncResolverFactory)(async (resolved, what, importer, stack) => {
|
|
210
226
|
const log = shared_1.logger.extend('vite').extend((0, transform_1.getFileIdx)(importer));
|
|
211
227
|
if (resolved) {
|
|
212
228
|
log("resolve ✅ '%s'@'%s -> %O\n%s", what, importer, resolved);
|
|
213
229
|
// Vite adds param like `?v=667939b3` to cached modules
|
|
214
|
-
let resolvedId = resolved.
|
|
230
|
+
let resolvedId = resolved.split('?', 1)[0];
|
|
215
231
|
if (resolvedId.startsWith('\0')) {
|
|
216
232
|
// \0 is a special character in Rollup that tells Rollup to not include this in the bundle
|
|
217
233
|
// https://rollupjs.org/guide/en/#outputexports
|
|
@@ -223,15 +239,6 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
|
|
|
223
239
|
if (resolvedId.startsWith('/@')) {
|
|
224
240
|
return null;
|
|
225
241
|
}
|
|
226
|
-
if (resolved.external) {
|
|
227
|
-
// In SSR mode Vite can mark resolved file ids as `external` (including `external: "absolute"`).
|
|
228
|
-
// Prefer Vite's resolved file path and only fall back to Node resolution for bare specifiers.
|
|
229
|
-
if (path_1.default.isAbsolute(resolvedId) || (0, fs_1.existsSync)(resolvedId)) {
|
|
230
|
-
return resolvedId;
|
|
231
|
-
}
|
|
232
|
-
// If module is marked as external, Rollup will not resolve it further, so resolve it ourselves.
|
|
233
|
-
return (0, shared_1.syncResolve)(what, importer, stack);
|
|
234
|
-
}
|
|
235
242
|
if (!(0, fs_1.existsSync)(resolvedId)) {
|
|
236
243
|
// When Vite resolves to an optimized deps entry (cacheDir) it may not be written yet.
|
|
237
244
|
// Wait for Vite's optimizer instead of calling optimizeDeps() manually (deprecated in Vite 7).
|
|
@@ -253,11 +260,28 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
|
|
|
253
260
|
}
|
|
254
261
|
}
|
|
255
262
|
}
|
|
263
|
+
if (!(0, fs_1.existsSync)(resolvedId) && !path_1.default.isAbsolute(resolvedId)) {
|
|
264
|
+
// Vite can resolve an import to a bare specifier when bundling for SSR and marking it as external.
|
|
265
|
+
// In that case we still need a real file path for WyW evaluation.
|
|
266
|
+
return (0, shared_1.syncResolve)(what, importer, stack);
|
|
267
|
+
}
|
|
256
268
|
return resolvedId;
|
|
257
269
|
}
|
|
258
270
|
log("resolve ❌ '%s'@'%s", what, importer);
|
|
271
|
+
// Vite can inject virtual ids like /@react-refresh in dev.
|
|
272
|
+
if (what.startsWith('/@') || what.startsWith('\0')) {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
if (!what.startsWith('.') &&
|
|
276
|
+
!what.startsWith('/') &&
|
|
277
|
+
!path_1.default.isAbsolute(what)) {
|
|
278
|
+
// Keep compatibility with SSR externalization: fall back to Node resolution for bare specifiers.
|
|
279
|
+
return (0, shared_1.syncResolve)(what, importer, stack);
|
|
280
|
+
}
|
|
259
281
|
throw new Error(`Could not resolve ${what}`);
|
|
260
282
|
}, (what, importer) => [what, importer]);
|
|
283
|
+
const asyncResolveClient = createAsyncResolver(resolveClient);
|
|
284
|
+
const asyncResolveSsr = createAsyncResolver(resolveSsr);
|
|
261
285
|
return {
|
|
262
286
|
name: 'wyw-in-js',
|
|
263
287
|
enforce: 'post',
|
|
@@ -266,6 +290,7 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
|
|
|
266
290
|
},
|
|
267
291
|
configResolved(resolvedConfig) {
|
|
268
292
|
config = resolvedConfig;
|
|
293
|
+
viteResolver = config.createResolver();
|
|
269
294
|
if (preserveCssPaths && config.command === 'build') {
|
|
270
295
|
const outputs = config.build.rollupOptions.output;
|
|
271
296
|
let outputEntries = [];
|
|
@@ -374,7 +399,9 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
|
|
|
374
399
|
const deps = affected.flatMap((target) => target.dependencies);
|
|
375
400
|
// eslint-disable-next-line no-restricted-syntax
|
|
376
401
|
for (const depId of deps) {
|
|
377
|
-
cache
|
|
402
|
+
for (const cache of caches) {
|
|
403
|
+
cache.invalidateForFile(depId);
|
|
404
|
+
}
|
|
378
405
|
}
|
|
379
406
|
return affected
|
|
380
407
|
.map((target) => devServer.moduleGraph.getModuleById(target.id))
|
|
@@ -390,10 +417,10 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
|
|
|
390
417
|
return;
|
|
391
418
|
const log = shared_1.logger.extend('vite').extend((0, transform_1.getFileIdx)(id));
|
|
392
419
|
log('transform %s', id);
|
|
420
|
+
const isSsr = typeof transformOptions === 'boolean'
|
|
421
|
+
? transformOptions
|
|
422
|
+
: Boolean(transformOptions?.ssr);
|
|
393
423
|
const overrideContext = (context, filename) => {
|
|
394
|
-
const isSsr = typeof transformOptions === 'boolean'
|
|
395
|
-
? transformOptions
|
|
396
|
-
: Boolean(transformOptions?.ssr);
|
|
397
424
|
const env = importMetaEnvForEval?.[isSsr ? 'ssr' : 'client'];
|
|
398
425
|
const withEnv = env
|
|
399
426
|
? { ...context, __wyw_import_meta_env: env }
|
|
@@ -414,11 +441,12 @@ function wywInJS({ debug, include, exclude, sourceMap, preserveCssPaths, keepCom
|
|
|
414
441
|
overrideContext,
|
|
415
442
|
},
|
|
416
443
|
},
|
|
417
|
-
cache,
|
|
444
|
+
cache: getCache(isSsr),
|
|
418
445
|
emitWarning: (message) => this.warn(message),
|
|
419
446
|
eventEmitter: emitter,
|
|
420
447
|
};
|
|
421
|
-
const
|
|
448
|
+
const asyncResolve = isSsr ? asyncResolveSsr : asyncResolveClient;
|
|
449
|
+
const result = await (0, transform_1.transform)(transformServices, code, asyncResolve);
|
|
422
450
|
let { cssText, dependencies } = result;
|
|
423
451
|
// Heads up, there are three cases:
|
|
424
452
|
// 1. cssText is undefined, it means that file was not transformed
|