@reckona/mreact-router 0.0.120 → 0.0.122
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/README.md +1 -1
- package/dist/build.d.ts +1 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +117 -46
- package/dist/build.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +15 -1
- package/dist/client.js.map +1 -1
- package/dist/module-runner.js +14 -6
- package/dist/module-runner.js.map +1 -1
- package/dist/render.d.ts +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +23 -2
- package/dist/render.js.map +1 -1
- package/dist/route-styles.d.ts +1 -0
- package/dist/route-styles.d.ts.map +1 -1
- package/dist/route-styles.js +23 -2
- package/dist/route-styles.js.map +1 -1
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +5 -0
- package/dist/serve.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +15 -1
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/build.ts +552 -371
- package/src/client.ts +34 -11
- package/src/module-runner.ts +26 -11
- package/src/render.ts +26 -2
- package/src/route-styles.ts +30 -2
- package/src/serve.ts +11 -0
- package/src/vite.ts +24 -1
package/dist/module-runner.js
CHANGED
|
@@ -251,7 +251,7 @@ async function transformServerSourceFile(options) {
|
|
|
251
251
|
for (const diagnostic of clientInference.diagnostics) {
|
|
252
252
|
console.warn(formatClientRouteInferenceDiagnostic(diagnostic));
|
|
253
253
|
}
|
|
254
|
-
const cacheKey = `${options.serverOutput}\0${options.dev ? "dev" : "prod"}\0${options.filename}\0${transformedSourceHash}\0${clientInference.clientBoundaryImports.join("\0")}\0${vitePluginsCacheKey(options.vitePlugins)}`;
|
|
254
|
+
const cacheKey = `${options.serverOutput}\0${options.dev ? "dev" : "prod"}\0${options.filename}\0${transformedSourceHash}\0${clientInference.clientBoundaryImports.join("\0")}\0${clientInference.clientBoundaryFallbackImports.join("\0")}\0${vitePluginsCacheKey(options.vitePlugins)}`;
|
|
255
255
|
const cached = readRouterRuntimeCacheEntry(serverSourceTransformCache, cacheKey, serverSourceTransformCacheCounters);
|
|
256
256
|
if (cached !== undefined) {
|
|
257
257
|
return cached;
|
|
@@ -259,6 +259,7 @@ async function transformServerSourceFile(options) {
|
|
|
259
259
|
const output = transformCompilerModuleContext({
|
|
260
260
|
code: source,
|
|
261
261
|
clientBoundaryImports: clientInference.clientBoundaryImports,
|
|
262
|
+
clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,
|
|
262
263
|
dev: options.dev,
|
|
263
264
|
filename: options.filename,
|
|
264
265
|
moduleContext,
|
|
@@ -293,12 +294,16 @@ function withNodeRequireShimForEsmBundle(options) {
|
|
|
293
294
|
!needsRequireShim) {
|
|
294
295
|
return code;
|
|
295
296
|
}
|
|
296
|
-
return `${rewritten.needsNativeImport ? 'const __mreactNativeImport = Function("specifier", "return import(specifier)");\n' : ""}${needsFilenameGlobalShim
|
|
297
|
+
return `${rewritten.needsNativeImport ? 'const __mreactNativeImport = Function("specifier", "return import(specifier)");\n' : ""}${needsFilenameGlobalShim
|
|
298
|
+
? `const __filename = ${JSON.stringify(options.filename)};
|
|
297
299
|
const __dirname = ${JSON.stringify(dirname(options.filename))};
|
|
298
|
-
`
|
|
300
|
+
`
|
|
301
|
+
: ""}${rewritten.needsRequire || needsRequireShim
|
|
302
|
+
? `import { createRequire as __mreactCreateRequire } from "node:module";
|
|
299
303
|
const __mreactRequire = __mreactCreateRequire(${JSON.stringify(requireBaseUrl)});
|
|
300
304
|
const require = __mreactRequire;
|
|
301
|
-
`
|
|
305
|
+
`
|
|
306
|
+
: ""}${code}`;
|
|
302
307
|
}
|
|
303
308
|
function needsCommonJsFilenameGlobalShim(code) {
|
|
304
309
|
return /\b__(?:filename|dirname)\b/.test(code);
|
|
@@ -373,7 +378,7 @@ function isNodeModulesPath(file) {
|
|
|
373
378
|
}
|
|
374
379
|
function isNodeImportableModuleFile(file) {
|
|
375
380
|
const extension = extname(file);
|
|
376
|
-
return extension === ".cjs" || extension === ".mjs" || extension === ".js" || extension === ".node";
|
|
381
|
+
return (extension === ".cjs" || extension === ".mjs" || extension === ".js" || extension === ".node");
|
|
377
382
|
}
|
|
378
383
|
function isNodeCommonJsModuleFile(file) {
|
|
379
384
|
const extension = extname(file);
|
|
@@ -427,7 +432,10 @@ function commonJsImportClauseToRequireStatements(clause, requireExpression, impo
|
|
|
427
432
|
const defaultName = clause.slice(0, commaIndex).trim();
|
|
428
433
|
const namedOrNamespace = clause.slice(commaIndex + 1).trim();
|
|
429
434
|
const temporaryName = `__mreactExternalCommonJs${importIndex}`;
|
|
430
|
-
const statements = [
|
|
435
|
+
const statements = [
|
|
436
|
+
`const ${temporaryName} = ${requireExpression};`,
|
|
437
|
+
`const ${defaultName} = ${temporaryName};`,
|
|
438
|
+
];
|
|
431
439
|
if (namedOrNamespace.startsWith("* as ")) {
|
|
432
440
|
statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);
|
|
433
441
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-runner.js","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { dirname, extname, isAbsolute, join, sep } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { formatDiagnostic } from \"@reckona/mreact-compiler\";\nimport type { ServerOutputMode } from \"@reckona/mreact-shared/compiler-contract\";\nimport { transformCompilerModuleContext } from \"@reckona/mreact-compiler/internal\";\nimport {\n createRunnableDevEnvironment,\n mergeConfig,\n resolveConfig,\n type InlineConfig,\n type PluginOption,\n type RunnableDevEnvironment,\n} from \"vite\";\nimport { resolveWorkspacePackageFile } from \"./workspace-packages.js\";\nimport {\n bundleRouterModule,\n type RouterCompatBuildApi,\n type RouterCompatPlugin,\n} from \"./bundle-pipeline.js\";\nimport { resolveRouterCacheLimit } from \"./cache-config.js\";\nimport type { BuiltServerModuleArtifact } from \"./build.js\";\nimport {\n createRouterRuntimeCacheCounters,\n readRouterRuntimeCacheEntry,\n routerRuntimeCacheStat,\n type RouterRuntimeCacheCounters,\n type RouterRuntimeCacheStat,\n} from \"./cache-stats.js\";\nimport {\n compilerModuleContextForSource,\n createClientRouteInferenceCache,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n type ClientRouteInferenceCache,\n} from \"./client-route-inference.js\";\nimport { vitePluginsCacheKey } from \"./vite-plugin-cache-key.js\";\n\nconst runnerConfig = {\n configFile: false,\n logLevel: \"silent\",\n} satisfies InlineConfig;\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\nconst sourceModuleCache = new Map<string, Promise<unknown>>();\nconst maxSourceModuleCacheEntries = resolveRouterCacheLimit(\"SOURCE_MODULE\", 512);\nconst sourceModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst serverSourceTransformCache = new Map<string, string>();\nconst maxServerSourceTransformCacheEntries = resolveRouterCacheLimit(\n \"SERVER_SOURCE_TRANSFORM\",\n 512,\n);\nconst serverSourceTransformCacheCounters = createRouterRuntimeCacheCounters();\nconst packageTypeCache = new Map<string, string | undefined>();\nconst runnerVirtualModulePrefix = \"virtual:mreact-router-source/\";\nconst runnerVirtualModules = new Map<string, string>();\nlet sharedRunnerEnvironment: Promise<RunnableDevEnvironment> | undefined;\nlet fileImportVersion = 0;\n\nexport function routerModuleRunnerRuntimeCacheStats(): RouterRuntimeCacheStat[] {\n return [\n routerRuntimeCacheStat(\n \"source-module\",\n sourceModuleCache,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"server-source-transform\",\n serverSourceTransformCache,\n maxServerSourceTransformCacheEntries,\n serverSourceTransformCacheCounters,\n ),\n ];\n}\n\nexport async function importAppRouterSourceModule<T>(options: {\n cacheKey?: string | undefined;\n code: string;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<T> {\n if (options.cacheKey !== undefined) {\n const cacheKey = options.cacheKey;\n const cached = readRouterRuntimeCacheEntry(\n sourceModuleCache,\n cacheKey,\n sourceModuleCacheCounters,\n ) as Promise<T> | undefined;\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = importAppRouterSourceModuleWithoutCache<T>(options).catch((error) => {\n sourceModuleCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n sourceModuleCache,\n cacheKey,\n loaded,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n );\n\n return loaded;\n }\n\n return importAppRouterSourceModuleWithoutCache(options);\n}\n\nasync function importAppRouterSourceModuleWithoutCache<T>(options: {\n code: string;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<T> {\n const code =\n options.resolveDir === undefined ? options.code : await bundleAppRouterSourceModule(options);\n const sourcefile = options.sourcefile ?? join(options.resolveDir ?? process.cwd(), \"module.js\");\n const executableCode = withNodeRequireShimForEsmBundle({\n code: withFileImportMetaUrl(code, sourcefile),\n filename: sourcefile,\n requireBaseDir:\n options.resolveDir ??\n (options.sourcefile === undefined ? undefined : dirname(options.sourcefile)),\n });\n const encodedLabel = encodeURIComponent(options.label.replace(/[^A-Za-z0-9_$.-]/g, \"-\"));\n const publicId = `${runnerVirtualModulePrefix}${encodedLabel}-${Date.now()}-${Math.random()}.mjs`;\n runnerVirtualModules.set(publicId, executableCode);\n\n try {\n return await importWithSharedRunner<T>(publicId, { invalidateEntry: true });\n } finally {\n runnerVirtualModules.delete(publicId);\n }\n}\n\nexport async function importAppRouterFileModule<T>(file: string): Promise<T> {\n fileImportVersion += 1;\n const url = `${pathToFileURL(file).href}?t=${Date.now()}${fileImportVersion}`;\n\n return await importWithSharedRunner<T>(url, { invalidateEntry: true });\n}\n\nasync function importWithSharedRunner<T>(\n moduleId: string,\n options?: { invalidateEntry?: boolean | undefined },\n): Promise<T> {\n const environment = await getSharedRunnerEnvironment();\n const module = (await environment.runner.import(moduleId)) as T;\n\n if (options?.invalidateEntry === true) {\n const evaluatedModule =\n environment.runner.evaluatedModules.getModuleByUrl(moduleId) ??\n environment.runner.evaluatedModules.getModuleById(moduleId) ??\n environment.runner.evaluatedModules.getModuleById(`\\0${moduleId}`);\n\n if (evaluatedModule !== undefined) {\n environment.runner.evaluatedModules.invalidateModule(evaluatedModule);\n }\n }\n\n return module;\n}\n\nasync function getSharedRunnerEnvironment(): Promise<RunnableDevEnvironment> {\n if (sharedRunnerEnvironment !== undefined) {\n return await sharedRunnerEnvironment;\n }\n\n sharedRunnerEnvironment = createSharedRunnerEnvironment().catch((error) => {\n sharedRunnerEnvironment = undefined;\n throw error;\n });\n\n return await sharedRunnerEnvironment;\n}\n\nasync function createSharedRunnerEnvironment(): Promise<RunnableDevEnvironment> {\n const config = await resolveConfig(\n mergeConfig(runnerConfig, {\n cacheDir: process.cwd(),\n configFile: false,\n envDir: false,\n environments: {\n mreact_router: {\n consumer: \"server\",\n dev: { moduleRunnerTransform: true },\n resolve: {\n conditions: [\"node\"],\n external: true,\n mainFields: [],\n },\n },\n },\n plugins: [\n {\n name: \"mreact-router-source-module\",\n resolveId(source) {\n return runnerVirtualModules.has(source) ? `\\0${source}` : undefined;\n },\n load(id) {\n const source = id.startsWith(\"\\0\") ? id.slice(1) : id;\n\n return source.startsWith(runnerVirtualModulePrefix)\n ? runnerVirtualModules.get(source)\n : undefined;\n },\n },\n ],\n } satisfies InlineConfig),\n \"serve\",\n );\n const environment = createRunnableDevEnvironment(\"mreact_router\", config, {\n hot: false,\n runnerOptions: { hmr: { logger: false } },\n });\n await environment.init();\n\n return environment;\n}\n\nexport async function importAppRouterBuiltFileModule<T>(options: {\n cacheKey?: string | undefined;\n file: string;\n}): Promise<T> {\n if (options.cacheKey !== undefined) {\n const cacheKey = options.cacheKey;\n const cached = readRouterRuntimeCacheEntry(\n sourceModuleCache,\n cacheKey,\n sourceModuleCacheCounters,\n ) as Promise<T> | undefined;\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = import(pathToFileURL(options.file).href).catch((error) => {\n sourceModuleCache.delete(cacheKey);\n throw error;\n }) as Promise<T>;\n setBoundedCacheEntry(\n sourceModuleCache,\n cacheKey,\n loaded,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n );\n\n return loaded;\n }\n\n return (await import(pathToFileURL(options.file).href)) as T;\n}\n\nexport async function bundleAppRouterSourceModule(options: {\n code: string;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.code,\n externalizeAppSourceModuleDirs: options.externalizeAppSourceModuleDirs,\n filename: options.sourcefile ?? join(options.resolveDir ?? process.cwd(), \"module.js\"),\n platform: \"node\",\n root: options.root,\n vitePlugins: options.vitePlugins,\n plugins: [\n workspacePackageResolutionPlugin(),\n ...(options.serverSourceTransform === undefined\n ? []\n : [serverSourceTransformPlugin(options.serverSourceTransform)]),\n ...(options.plugins ?? []),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to bundle ${options.label} for Vite runner.`);\n }\n\n return code;\n}\n\nexport function fileImportMetaUrlPlugin(): RouterCompatPlugin {\n const workspacePackagesDir = dirname(dirname(dirname(fileURLToPath(import.meta.url))));\n\n return {\n name: \"mreact-router-file-import-meta-url\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx?$/ }, async (args) => {\n if (\n args.path.includes(`${sep}node_modules${sep}`) ||\n args.path.startsWith(`${workspacePackagesDir}${sep}`)\n ) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n\n return {\n contents: withFileImportMetaUrl(source, args.path),\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\ninterface ServerSourceTransformOptions {\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n dev: boolean;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}\n\nfunction serverSourceTransformPlugin(options: ServerSourceTransformOptions): RouterCompatPlugin {\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n const workspacePackagesDir = dirname(dirname(dirname(fileURLToPath(import.meta.url))));\n\n return {\n name: \"mreact-router-server-source-transform\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx$/ }, async (args) => {\n if (args.path.includes(`${sep}node_modules${sep}`)) {\n return undefined;\n }\n\n if (args.path.startsWith(`${workspacePackagesDir}${sep}`)) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n const contents = await transformServerSourceFile({\n ...options,\n clientRouteInferenceCache,\n filename: args.path,\n source,\n });\n\n return {\n contents,\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\nasync function transformServerSourceFile(\n options: ServerSourceTransformOptions & {\n filename: string;\n source: string;\n },\n): Promise<string> {\n const sourceHash = hashText(options.source);\n const artifact = options.serverModules?.get(options.filename)?.[options.serverOutput];\n\n if (artifact !== undefined && artifact.sourceHash === sourceHash) {\n return artifact.code;\n }\n\n const source = options.dev\n ? withFileImportMetaUrl(options.source, options.filename)\n : options.source;\n const transformedSourceHash = source === options.source ? sourceHash : hashText(source);\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n const moduleContext = await compilerModuleContextForSource({\n cache: clientRouteInferenceCache,\n code: source,\n filename: options.filename,\n });\n const clientInference = await inferClientRouteModule({\n cache: clientRouteInferenceCache,\n code: source,\n filename: options.filename,\n moduleContext,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n const cacheKey = `${options.serverOutput}\\0${options.dev ? \"dev\" : \"prod\"}\\0${options.filename}\\0${transformedSourceHash}\\0${clientInference.clientBoundaryImports.join(\"\\0\")}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n const cached = readRouterRuntimeCacheEntry(\n serverSourceTransformCache,\n cacheKey,\n serverSourceTransformCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const output = transformCompilerModuleContext({\n code: source,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n dev: options.dev,\n filename: options.filename,\n moduleContext,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(\n fatalDiagnostics\n .map((diagnostic) => formatDiagnostic(options.filename, diagnostic))\n .join(\"\\n\"),\n );\n }\n\n setBoundedCacheEntry(\n serverSourceTransformCache,\n cacheKey,\n output.code,\n maxServerSourceTransformCacheEntries,\n serverSourceTransformCacheCounters,\n );\n\n return output.code;\n}\n\nfunction withFileImportMetaUrl(source: string, filename: string): string {\n if (!source.includes(\"import.meta.url\")) {\n return source;\n }\n\n return source.replaceAll(\"import.meta.url\", JSON.stringify(pathToFileURL(filename).href));\n}\n\nfunction withNodeRequireShimForEsmBundle(options: {\n code: string;\n filename: string;\n requireBaseDir?: string | undefined;\n}): string {\n const requireBaseUrl = pathToFileURL(\n join(options.requireBaseDir ?? process.cwd(), \"__mreact_require_shim.cjs\"),\n ).href;\n const rewritten = rewriteNodeModulesExternalImports(options.code);\n const code = rewritten.code.replaceAll(\n \"createRequire(import.meta.url)\",\n `createRequire(${JSON.stringify(requireBaseUrl)})`,\n );\n const needsFilenameGlobalShim = needsCommonJsFilenameGlobalShim(options.code);\n const needsRequireShim = needsNodeRequireShim(options.code);\n\n if (\n !rewritten.needsNativeImport &&\n !rewritten.needsRequire &&\n !needsFilenameGlobalShim &&\n !needsRequireShim\n ) {\n return code;\n }\n\n return `${rewritten.needsNativeImport ? 'const __mreactNativeImport = Function(\"specifier\", \"return import(specifier)\");\\n' : \"\"}${needsFilenameGlobalShim ? `const __filename = ${JSON.stringify(options.filename)};\nconst __dirname = ${JSON.stringify(dirname(options.filename))};\n` : \"\"}${rewritten.needsRequire || needsRequireShim ? `import { createRequire as __mreactCreateRequire } from \"node:module\";\nconst __mreactRequire = __mreactCreateRequire(${JSON.stringify(requireBaseUrl)});\nconst require = __mreactRequire;\n` : \"\"}${code}`;\n}\n\nfunction needsCommonJsFilenameGlobalShim(code: string): boolean {\n return /\\b__(?:filename|dirname)\\b/.test(code);\n}\n\nfunction needsNodeRequireShim(code: string): boolean {\n return code.includes(\"Dynamic require of\") && /\\b__require\\s*=/.test(code);\n}\n\nfunction rewriteNodeModulesExternalImports(code: string): {\n code: string;\n needsNativeImport: boolean;\n needsRequire: boolean;\n} {\n const nativeImportBindings = new Map<string, string>();\n let needsNativeImport = false;\n let needsRequire = false;\n let importIndex = 0;\n const importFromPattern = /^import\\s+([^;\\n]+?)\\s+from\\s+([\"'])([^\"']+)\\2;?$/gm;\n const sideEffectImportPattern = /^import\\s+([\"'])([^\"']+)\\1;?$/gm;\n const withRewrittenImports = code.replace(\n importFromPattern,\n (statement: string, clause: string, _quote: string, specifier: string) => {\n const file = nodeModulesExternalImportPath(specifier);\n\n if (file === undefined || !isNodeImportableModuleFile(file)) {\n return statement;\n }\n\n if (isNodeCommonJsModuleFile(file)) {\n needsRequire = true;\n const requireExpression = `__mreactRequire(${JSON.stringify(file)})`;\n return commonJsImportClauseToRequireStatements(\n clause.trim(),\n requireExpression,\n importIndex++,\n );\n }\n\n needsNativeImport = true;\n const rewritten = esmImportClauseToNativeImportStatements(clause.trim(), specifier, importIndex++);\n for (const [name, replacement] of rewritten.bindings) {\n nativeImportBindings.set(name, replacement);\n }\n\n return rewritten.code;\n },\n );\n const rewrittenCode = withRewrittenImports.replace(\n sideEffectImportPattern,\n (statement: string, _quote: string, specifier: string) => {\n const file = nodeModulesExternalImportPath(specifier);\n\n if (file === undefined || !isNodeImportableModuleFile(file)) {\n return statement;\n }\n\n if (isNodeCommonJsModuleFile(file)) {\n needsRequire = true;\n return `__mreactRequire(${JSON.stringify(file)});`;\n }\n\n needsNativeImport = true;\n return `await __mreactNativeImport(${JSON.stringify(specifier)});`;\n },\n );\n\n return {\n code:\n nativeImportBindings.size === 0\n ? rewrittenCode\n : replaceImportedIdentifiers(rewrittenCode, nativeImportBindings),\n needsNativeImport,\n needsRequire,\n };\n}\n\nfunction nodeModulesExternalImportPath(specifier: string): string | undefined {\n const file = externalImportFilePath(specifier);\n\n if (file === undefined || !isNodeModulesPath(file)) {\n return undefined;\n }\n\n return file;\n}\n\nfunction externalImportFilePath(specifier: string): string | undefined {\n if (specifier.startsWith(\"file://\")) {\n try {\n return fileURLToPath(specifier);\n } catch {\n return undefined;\n }\n }\n\n return isAbsolute(specifier) ? specifier : undefined;\n}\n\nfunction isNodeModulesPath(file: string): boolean {\n return file.split(sep).includes(\"node_modules\");\n}\n\nfunction isNodeImportableModuleFile(file: string): boolean {\n const extension = extname(file);\n\n return extension === \".cjs\" || extension === \".mjs\" || extension === \".js\" || extension === \".node\";\n}\n\nfunction isNodeCommonJsModuleFile(file: string): boolean {\n const extension = extname(file);\n\n if (extension === \".cjs\" || extension === \".cts\" || extension === \".node\") {\n return true;\n }\n\n if (extension === \".mjs\" || extension === \".mts\" || extension !== \".js\") {\n return false;\n }\n\n return nearestPackageType(file) !== \"module\";\n}\n\nfunction nearestPackageType(file: string): string | undefined {\n let directory = dirname(file);\n\n while (true) {\n const packageJson = join(directory, \"package.json\");\n\n if (packageTypeCache.has(packageJson)) {\n return packageTypeCache.get(packageJson);\n }\n\n if (existsSync(packageJson)) {\n const type = readPackageType(packageJson);\n packageTypeCache.set(packageJson, type);\n return type;\n }\n\n const parent = dirname(directory);\n\n if (parent === directory) {\n return undefined;\n }\n\n directory = parent;\n }\n}\n\nfunction readPackageType(packageJson: string): string | undefined {\n try {\n const parsed = JSON.parse(readFileSync(packageJson, \"utf8\")) as { type?: unknown };\n\n return typeof parsed.type === \"string\" ? parsed.type : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction commonJsImportClauseToRequireStatements(\n clause: string,\n requireExpression: string,\n importIndex: number,\n): string {\n if (clause.startsWith(\"* as \")) {\n return `const ${clause.slice(5).trim()} = ${requireExpression};`;\n }\n\n if (clause.startsWith(\"{\")) {\n return namedCommonJsImportsToRequireStatements(clause, requireExpression);\n }\n\n const commaIndex = clause.indexOf(\",\");\n\n if (commaIndex === -1) {\n return `const ${clause} = ${requireExpression};`;\n }\n\n const defaultName = clause.slice(0, commaIndex).trim();\n const namedOrNamespace = clause.slice(commaIndex + 1).trim();\n const temporaryName = `__mreactExternalCommonJs${importIndex}`;\n const statements = [`const ${temporaryName} = ${requireExpression};`, `const ${defaultName} = ${temporaryName};`];\n\n if (namedOrNamespace.startsWith(\"* as \")) {\n statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);\n } else if (namedOrNamespace.startsWith(\"{\")) {\n statements.push(namedCommonJsImportsToRequireStatements(namedOrNamespace, temporaryName));\n }\n\n return statements.join(\"\\n\");\n}\n\nfunction esmImportClauseToNativeImportStatements(\n clause: string,\n specifier: string,\n importIndex: number,\n): { bindings: Map<string, string>; code: string } {\n const bindings = new Map<string, string>();\n const temporaryName = `__mreactExternalModule${importIndex}`;\n const statements = [\n `const ${temporaryName} = await __mreactNativeImport(${JSON.stringify(specifier)});`,\n ];\n\n if (clause.startsWith(\"* as \")) {\n statements.push(`const ${clause.slice(5).trim()} = ${temporaryName};`);\n } else if (clause.startsWith(\"{\")) {\n collectNamedEsmImportBindings(clause, temporaryName, bindings);\n } else {\n const commaIndex = clause.indexOf(\",\");\n\n if (commaIndex === -1) {\n bindings.set(clause, `${temporaryName}.default`);\n } else {\n const defaultName = clause.slice(0, commaIndex).trim();\n const namedOrNamespace = clause.slice(commaIndex + 1).trim();\n bindings.set(defaultName, `${temporaryName}.default`);\n\n if (namedOrNamespace.startsWith(\"* as \")) {\n statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);\n } else if (namedOrNamespace.startsWith(\"{\")) {\n collectNamedEsmImportBindings(namedOrNamespace, temporaryName, bindings);\n }\n }\n }\n\n return { bindings, code: statements.join(\"\\n\") };\n}\n\nfunction collectNamedEsmImportBindings(\n clause: string,\n moduleName: string,\n bindings: Map<string, string>,\n): void {\n for (const binding of namedImportBindings(clause)) {\n const replacement =\n binding.imported === \"default\"\n ? `${moduleName}.default`\n : `${moduleName}[${JSON.stringify(binding.imported)}]`;\n bindings.set(binding.local, replacement);\n }\n}\n\nfunction namedCommonJsImportsToRequireStatements(\n clause: string,\n sourceExpression: string,\n): string {\n const objectBindings: string[] = [];\n const statements: string[] = [];\n\n for (const binding of namedImportBindings(clause)) {\n if (binding.imported === \"default\") {\n statements.push(`const ${binding.local} = ${sourceExpression};`);\n } else if (binding.imported === binding.local) {\n objectBindings.push(binding.imported);\n } else {\n objectBindings.push(`${JSON.stringify(binding.imported)}: ${binding.local}`);\n }\n }\n\n if (objectBindings.length > 0) {\n statements.unshift(`const { ${objectBindings.join(\", \")} } = ${sourceExpression};`);\n }\n\n return statements.join(\"\\n\");\n}\n\nfunction namedImportBindings(clause: string): Array<{ imported: string; local: string }> {\n return clause\n .slice(1, -1)\n .split(\",\")\n .map((binding) => binding.trim())\n .filter((binding) => binding.length > 0)\n .map((binding) => {\n const alias = binding.match(/^(.+?)\\s+as\\s+(.+)$/);\n const imported = alias?.[1]?.trim() ?? binding;\n const local = alias?.[2]?.trim() ?? binding;\n\n return { imported, local };\n });\n}\n\nfunction replaceImportedIdentifiers(code: string, bindings: ReadonlyMap<string, string>): string {\n let rewritten = \"\";\n let index = 0;\n\n while (index < code.length) {\n const char = code[index];\n const next = code[index + 1];\n\n if (char === '\"' || char === \"'\") {\n const end = quotedStringEnd(code, index, char);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"`\") {\n const end = templateLiteralEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n const end = lineCommentEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n const end = blockCommentEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (isIdentifierStart(char)) {\n const end = identifierEnd(code, index);\n const identifier = code.slice(index, end);\n const replacement = bindings.get(identifier);\n\n if (replacement !== undefined && shouldReplaceImportedIdentifier(code, index, end)) {\n rewritten += importedIdentifierReplacement(code, index, end, identifier, replacement);\n } else {\n rewritten += identifier;\n }\n\n index = end;\n continue;\n }\n\n rewritten += char;\n index += 1;\n }\n\n return rewritten;\n}\n\nfunction shouldReplaceImportedIdentifier(code: string, start: number, end: number): boolean {\n const previous = previousNonWhitespace(code, start);\n const next = nextNonWhitespace(code, end);\n\n return previous !== \".\" && previous !== \"?\" && next !== \":\";\n}\n\nfunction importedIdentifierReplacement(\n code: string,\n start: number,\n end: number,\n identifier: string,\n replacement: string,\n): string {\n const previous = previousNonWhitespace(code, start);\n const next = nextNonWhitespace(code, end);\n\n return (previous === \"{\" || previous === \",\") && (next === \",\" || next === \"}\")\n ? `${identifier}: ${replacement}`\n : replacement;\n}\n\nfunction previousNonWhitespace(code: string, index: number): string | undefined {\n for (let position = index - 1; position >= 0; position -= 1) {\n if (!/\\s/u.test(code[position] ?? \"\")) {\n return code[position];\n }\n }\n\n return undefined;\n}\n\nfunction nextNonWhitespace(code: string, index: number): string | undefined {\n for (let position = index; position < code.length; position += 1) {\n if (!/\\s/u.test(code[position] ?? \"\")) {\n return code[position];\n }\n }\n\n return undefined;\n}\n\nfunction quotedStringEnd(code: string, start: number, quote: string): number {\n for (let index = start + 1; index < code.length; index += 1) {\n if (code[index] === \"\\\\\") {\n index += 1;\n } else if (code[index] === quote) {\n return index + 1;\n }\n }\n\n return code.length;\n}\n\nfunction templateLiteralEnd(code: string, start: number): number {\n for (let index = start + 1; index < code.length; index += 1) {\n if (code[index] === \"\\\\\") {\n index += 1;\n } else if (code[index] === \"`\") {\n return index + 1;\n }\n }\n\n return code.length;\n}\n\nfunction lineCommentEnd(code: string, start: number): number {\n const end = code.indexOf(\"\\n\", start + 2);\n\n return end === -1 ? code.length : end;\n}\n\nfunction blockCommentEnd(code: string, start: number): number {\n const end = code.indexOf(\"*/\", start + 2);\n\n return end === -1 ? code.length : end + 2;\n}\n\nfunction identifierEnd(code: string, start: number): number {\n let end = start + 1;\n\n while (end < code.length && isIdentifierPart(code[end] ?? \"\")) {\n end += 1;\n }\n\n return end;\n}\n\nfunction isIdentifierStart(char: string | undefined): boolean {\n return char !== undefined && /[A-Za-z_$]/u.test(char);\n}\n\nfunction isIdentifierPart(char: string): boolean {\n return /[A-Za-z0-9_$]/u.test(char);\n}\n\nfunction workspacePackageResolutionPlugin() {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n const packageRoot = dirname(currentDir);\n const sourceOrDist = currentDir.endsWith(`${sep}dist`) ? \"dist/index.js\" : \"src/index.ts\";\n const appRouterGlobalsSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/app-router-globals.js\"\n : \"src/app-router-globals.ts\";\n const linkSourceOrDist = currentDir.endsWith(`${sep}dist`) ? \"dist/link.js\" : \"src/link.ts\";\n const nativeEscapeSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/native-escape.js\"\n : \"src/native-escape.ts\";\n const navigationStateSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/navigation-state.js\"\n : \"src/navigation-state.ts\";\n const sessionSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/session.js\"\n : \"src/session.ts\";\n const streamListSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/stream-list.js\"\n : \"src/stream-list.ts\";\n const packageFile = (\n monorepoDir: string,\n packageName: string,\n entry: string,\n specifier: string,\n resolveDir?: string | undefined,\n ): string =>\n resolveWorkspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir,\n packageName,\n resolveDir,\n specifier,\n });\n const entries = new Map<string, { entry: string; monorepoDir: string; packageName: string }>([\n [\n \"react\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom/client\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom/server\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react/jsx-dev-runtime\",\n {\n entry: \"jsx-dev-runtime\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"react/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\"@reckona/mreact\", { entry: \"index\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" }],\n [\n \"@reckona/mreact/jsx-dev-runtime\",\n { entry: \"jsx-dev-runtime\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" },\n ],\n [\n \"@reckona/mreact/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" },\n ],\n [\n \"@reckona/mreact-auth\",\n { entry: \"index\", monorepoDir: \"auth\", packageName: \"@reckona/mreact-auth\" },\n ],\n [\n \"@reckona/mreact-compat\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/event-priority\",\n {\n entry: \"event-priority\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"@reckona/mreact-compat/flight\",\n { entry: \"flight\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/hooks\",\n { entry: \"hooks-entry\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/internal\",\n { entry: \"internal\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/jsx-dev-runtime\",\n {\n entry: \"jsx-dev-runtime\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"@reckona/mreact-compat/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/scheduler\",\n { entry: \"scheduler\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-reactive-core\",\n {\n entry: \"index\",\n monorepoDir: \"reactive-core\",\n packageName: \"@reckona/mreact-reactive-core\",\n },\n ],\n [\n \"@reckona/mreact-query\",\n { entry: \"index\", monorepoDir: \"query\", packageName: \"@reckona/mreact-query\" },\n ],\n [\n \"@reckona/mreact-server\",\n { entry: \"index\", monorepoDir: \"server\", packageName: \"@reckona/mreact-server\" },\n ],\n ]);\n const routerEntries = new Map([\n [\"@reckona/mreact-router\", join(packageRoot, sourceOrDist)],\n [\"@reckona/mreact-router/app-router-globals\", join(packageRoot, appRouterGlobalsSourceOrDist)],\n [\"@reckona/mreact-router/link\", join(packageRoot, linkSourceOrDist)],\n [\"@reckona/mreact-router/native-escape\", join(packageRoot, nativeEscapeSourceOrDist)],\n [\"@reckona/mreact-router/navigation-state\", join(packageRoot, navigationStateSourceOrDist)],\n [\"@reckona/mreact-router/session\", join(packageRoot, sessionSourceOrDist)],\n [\"@reckona/mreact-router/stream-list\", join(packageRoot, streamListSourceOrDist)],\n [\"@reckona/mreact-router/internal/native-escape\", join(packageRoot, nativeEscapeSourceOrDist)],\n [\"@reckona/mreact-router/internal/session\", join(packageRoot, sessionSourceOrDist)],\n ]);\n\n return {\n name: \"mreact-router-workspace-packages\",\n setup(buildApi: Pick<RouterCompatBuildApi, \"onResolve\">) {\n buildApi.onResolve(\n {\n filter:\n /^(?:react(?:\\/jsx-(?:dev-)?runtime)?|react-dom(?:\\/(?:client|server))?|@reckona\\/(?:mreact(?:\\/(?:jsx-dev-runtime|jsx-runtime))?|mreact-(?:auth|query|reactive-core|server|router|compat)(?:\\/(?:event-priority|flight|internal|jsx-dev-runtime|jsx-runtime|scheduler|app-router-globals|link|native-escape|navigation-state|session|stream-list|internal\\/native-escape|internal\\/session))?))$/,\n },\n (args) => {\n const routerPath = routerEntries.get(args.path);\n\n if (routerPath !== undefined) {\n return { path: routerPath };\n }\n\n const entry = entries.get(args.path);\n\n return entry === undefined\n ? undefined\n : {\n path: packageFile(\n entry.monorepoDir,\n entry.packageName,\n entry.entry,\n args.path,\n args.resolveDir,\n ),\n };\n },\n );\n },\n };\n}\n\nfunction setBoundedCacheEntry<K, V>(\n cache: Map<K, V>,\n key: K,\n value: V,\n maxEntries: number,\n counters: RouterRuntimeCacheCounters,\n): void {\n if (cache.size >= maxEntries) {\n const oldestKey = cache.keys().next().value as K | undefined;\n\n if (oldestKey !== undefined) {\n cache.delete(oldestKey);\n counters.evictions += 1;\n }\n }\n\n cache.set(key, value);\n}\n\nfunction hashText(text: string): string {\n return createHash(\"sha256\").update(text).digest(\"hex\").slice(0, 16);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"module-runner.js","sourceRoot":"","sources":["../src/module-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { dirname, extname, isAbsolute, join, sep } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { formatDiagnostic } from \"@reckona/mreact-compiler\";\nimport type { ServerOutputMode } from \"@reckona/mreact-shared/compiler-contract\";\nimport { transformCompilerModuleContext } from \"@reckona/mreact-compiler/internal\";\nimport {\n createRunnableDevEnvironment,\n mergeConfig,\n resolveConfig,\n type InlineConfig,\n type PluginOption,\n type RunnableDevEnvironment,\n} from \"vite\";\nimport { resolveWorkspacePackageFile } from \"./workspace-packages.js\";\nimport {\n bundleRouterModule,\n type RouterCompatBuildApi,\n type RouterCompatPlugin,\n} from \"./bundle-pipeline.js\";\nimport { resolveRouterCacheLimit } from \"./cache-config.js\";\nimport type { BuiltServerModuleArtifact } from \"./build.js\";\nimport {\n createRouterRuntimeCacheCounters,\n readRouterRuntimeCacheEntry,\n routerRuntimeCacheStat,\n type RouterRuntimeCacheCounters,\n type RouterRuntimeCacheStat,\n} from \"./cache-stats.js\";\nimport {\n compilerModuleContextForSource,\n createClientRouteInferenceCache,\n formatClientRouteInferenceDiagnostic,\n inferClientRouteModule,\n type ClientRouteInferenceCache,\n} from \"./client-route-inference.js\";\nimport { vitePluginsCacheKey } from \"./vite-plugin-cache-key.js\";\n\nconst runnerConfig = {\n configFile: false,\n logLevel: \"silent\",\n} satisfies InlineConfig;\nconst nativeEscapeTransform = {\n batchImportName: \"escapeHtmlBatch\",\n batchImportSource: \"@reckona/mreact-router/native-escape\",\n} as const;\nconst sourceModuleCache = new Map<string, Promise<unknown>>();\nconst maxSourceModuleCacheEntries = resolveRouterCacheLimit(\"SOURCE_MODULE\", 512);\nconst sourceModuleCacheCounters = createRouterRuntimeCacheCounters();\nconst serverSourceTransformCache = new Map<string, string>();\nconst maxServerSourceTransformCacheEntries = resolveRouterCacheLimit(\n \"SERVER_SOURCE_TRANSFORM\",\n 512,\n);\nconst serverSourceTransformCacheCounters = createRouterRuntimeCacheCounters();\nconst packageTypeCache = new Map<string, string | undefined>();\nconst runnerVirtualModulePrefix = \"virtual:mreact-router-source/\";\nconst runnerVirtualModules = new Map<string, string>();\nlet sharedRunnerEnvironment: Promise<RunnableDevEnvironment> | undefined;\nlet fileImportVersion = 0;\n\nexport function routerModuleRunnerRuntimeCacheStats(): RouterRuntimeCacheStat[] {\n return [\n routerRuntimeCacheStat(\n \"source-module\",\n sourceModuleCache,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n ),\n routerRuntimeCacheStat(\n \"server-source-transform\",\n serverSourceTransformCache,\n maxServerSourceTransformCacheEntries,\n serverSourceTransformCacheCounters,\n ),\n ];\n}\n\nexport async function importAppRouterSourceModule<T>(options: {\n cacheKey?: string | undefined;\n code: string;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<T> {\n if (options.cacheKey !== undefined) {\n const cacheKey = options.cacheKey;\n const cached = readRouterRuntimeCacheEntry(\n sourceModuleCache,\n cacheKey,\n sourceModuleCacheCounters,\n ) as Promise<T> | undefined;\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = importAppRouterSourceModuleWithoutCache<T>(options).catch((error) => {\n sourceModuleCache.delete(cacheKey);\n throw error;\n });\n setBoundedCacheEntry(\n sourceModuleCache,\n cacheKey,\n loaded,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n );\n\n return loaded;\n }\n\n return importAppRouterSourceModuleWithoutCache(options);\n}\n\nasync function importAppRouterSourceModuleWithoutCache<T>(options: {\n code: string;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<T> {\n const code =\n options.resolveDir === undefined ? options.code : await bundleAppRouterSourceModule(options);\n const sourcefile = options.sourcefile ?? join(options.resolveDir ?? process.cwd(), \"module.js\");\n const executableCode = withNodeRequireShimForEsmBundle({\n code: withFileImportMetaUrl(code, sourcefile),\n filename: sourcefile,\n requireBaseDir:\n options.resolveDir ??\n (options.sourcefile === undefined ? undefined : dirname(options.sourcefile)),\n });\n const encodedLabel = encodeURIComponent(options.label.replace(/[^A-Za-z0-9_$.-]/g, \"-\"));\n const publicId = `${runnerVirtualModulePrefix}${encodedLabel}-${Date.now()}-${Math.random()}.mjs`;\n runnerVirtualModules.set(publicId, executableCode);\n\n try {\n return await importWithSharedRunner<T>(publicId, { invalidateEntry: true });\n } finally {\n runnerVirtualModules.delete(publicId);\n }\n}\n\nexport async function importAppRouterFileModule<T>(file: string): Promise<T> {\n fileImportVersion += 1;\n const url = `${pathToFileURL(file).href}?t=${Date.now()}${fileImportVersion}`;\n\n return await importWithSharedRunner<T>(url, { invalidateEntry: true });\n}\n\nasync function importWithSharedRunner<T>(\n moduleId: string,\n options?: { invalidateEntry?: boolean | undefined },\n): Promise<T> {\n const environment = await getSharedRunnerEnvironment();\n const module = (await environment.runner.import(moduleId)) as T;\n\n if (options?.invalidateEntry === true) {\n const evaluatedModule =\n environment.runner.evaluatedModules.getModuleByUrl(moduleId) ??\n environment.runner.evaluatedModules.getModuleById(moduleId) ??\n environment.runner.evaluatedModules.getModuleById(`\\0${moduleId}`);\n\n if (evaluatedModule !== undefined) {\n environment.runner.evaluatedModules.invalidateModule(evaluatedModule);\n }\n }\n\n return module;\n}\n\nasync function getSharedRunnerEnvironment(): Promise<RunnableDevEnvironment> {\n if (sharedRunnerEnvironment !== undefined) {\n return await sharedRunnerEnvironment;\n }\n\n sharedRunnerEnvironment = createSharedRunnerEnvironment().catch((error) => {\n sharedRunnerEnvironment = undefined;\n throw error;\n });\n\n return await sharedRunnerEnvironment;\n}\n\nasync function createSharedRunnerEnvironment(): Promise<RunnableDevEnvironment> {\n const config = await resolveConfig(\n mergeConfig(runnerConfig, {\n cacheDir: process.cwd(),\n configFile: false,\n envDir: false,\n environments: {\n mreact_router: {\n consumer: \"server\",\n dev: { moduleRunnerTransform: true },\n resolve: {\n conditions: [\"node\"],\n external: true,\n mainFields: [],\n },\n },\n },\n plugins: [\n {\n name: \"mreact-router-source-module\",\n resolveId(source) {\n return runnerVirtualModules.has(source) ? `\\0${source}` : undefined;\n },\n load(id) {\n const source = id.startsWith(\"\\0\") ? id.slice(1) : id;\n\n return source.startsWith(runnerVirtualModulePrefix)\n ? runnerVirtualModules.get(source)\n : undefined;\n },\n },\n ],\n } satisfies InlineConfig),\n \"serve\",\n );\n const environment = createRunnableDevEnvironment(\"mreact_router\", config, {\n hot: false,\n runnerOptions: { hmr: { logger: false } },\n });\n await environment.init();\n\n return environment;\n}\n\nexport async function importAppRouterBuiltFileModule<T>(options: {\n cacheKey?: string | undefined;\n file: string;\n}): Promise<T> {\n if (options.cacheKey !== undefined) {\n const cacheKey = options.cacheKey;\n const cached = readRouterRuntimeCacheEntry(\n sourceModuleCache,\n cacheKey,\n sourceModuleCacheCounters,\n ) as Promise<T> | undefined;\n\n if (cached !== undefined) {\n return cached;\n }\n\n const loaded = import(pathToFileURL(options.file).href).catch((error) => {\n sourceModuleCache.delete(cacheKey);\n throw error;\n }) as Promise<T>;\n setBoundedCacheEntry(\n sourceModuleCache,\n cacheKey,\n loaded,\n maxSourceModuleCacheEntries,\n sourceModuleCacheCounters,\n );\n\n return loaded;\n }\n\n return (await import(pathToFileURL(options.file).href)) as T;\n}\n\nexport async function bundleAppRouterSourceModule(options: {\n code: string;\n externalizeAppSourceModuleDirs?: readonly string[] | undefined;\n label: string;\n plugins?: readonly RouterCompatPlugin[] | undefined;\n resolveDir?: string | undefined;\n root?: string | undefined;\n serverSourceTransform?: ServerSourceTransformOptions | undefined;\n sourcefile?: string | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}): Promise<string> {\n const output = await bundleRouterModule({\n code: options.code,\n externalizeAppSourceModuleDirs: options.externalizeAppSourceModuleDirs,\n filename: options.sourcefile ?? join(options.resolveDir ?? process.cwd(), \"module.js\"),\n platform: \"node\",\n root: options.root,\n vitePlugins: options.vitePlugins,\n plugins: [\n workspacePackageResolutionPlugin(),\n ...(options.serverSourceTransform === undefined\n ? []\n : [serverSourceTransformPlugin(options.serverSourceTransform)]),\n ...(options.plugins ?? []),\n ],\n });\n const code = output.code;\n\n if (code === undefined) {\n throw new Error(`Failed to bundle ${options.label} for Vite runner.`);\n }\n\n return code;\n}\n\nexport function fileImportMetaUrlPlugin(): RouterCompatPlugin {\n const workspacePackagesDir = dirname(dirname(dirname(fileURLToPath(import.meta.url))));\n\n return {\n name: \"mreact-router-file-import-meta-url\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx?$/ }, async (args) => {\n if (\n args.path.includes(`${sep}node_modules${sep}`) ||\n args.path.startsWith(`${workspacePackagesDir}${sep}`)\n ) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n\n return {\n contents: withFileImportMetaUrl(source, args.path),\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\ninterface ServerSourceTransformOptions {\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n dev: boolean;\n serverModules?: ReadonlyMap<string, BuiltServerModuleArtifact> | undefined;\n serverOutput: ServerOutputMode;\n vitePlugins?: readonly PluginOption[] | undefined;\n}\n\nfunction serverSourceTransformPlugin(options: ServerSourceTransformOptions): RouterCompatPlugin {\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n const workspacePackagesDir = dirname(dirname(dirname(fileURLToPath(import.meta.url))));\n\n return {\n name: \"mreact-router-server-source-transform\",\n setup(buildApi) {\n buildApi.onLoad({ filter: /(?:\\.mreact)?\\.[cm]?[jt]sx$/ }, async (args) => {\n if (args.path.includes(`${sep}node_modules${sep}`)) {\n return undefined;\n }\n\n if (args.path.startsWith(`${workspacePackagesDir}${sep}`)) {\n return undefined;\n }\n\n const source = await readFile(args.path, \"utf8\");\n const contents = await transformServerSourceFile({\n ...options,\n clientRouteInferenceCache,\n filename: args.path,\n source,\n });\n\n return {\n contents,\n loader: \"js\",\n resolveDir: dirname(args.path),\n };\n });\n },\n };\n}\n\nasync function transformServerSourceFile(\n options: ServerSourceTransformOptions & {\n filename: string;\n source: string;\n },\n): Promise<string> {\n const sourceHash = hashText(options.source);\n const artifact = options.serverModules?.get(options.filename)?.[options.serverOutput];\n\n if (artifact !== undefined && artifact.sourceHash === sourceHash) {\n return artifact.code;\n }\n\n const source = options.dev\n ? withFileImportMetaUrl(options.source, options.filename)\n : options.source;\n const transformedSourceHash = source === options.source ? sourceHash : hashText(source);\n const clientRouteInferenceCache =\n options.clientRouteInferenceCache ?? createClientRouteInferenceCache();\n const moduleContext = await compilerModuleContextForSource({\n cache: clientRouteInferenceCache,\n code: source,\n filename: options.filename,\n });\n const clientInference = await inferClientRouteModule({\n cache: clientRouteInferenceCache,\n code: source,\n filename: options.filename,\n moduleContext,\n vitePlugins: options.vitePlugins,\n });\n\n for (const diagnostic of clientInference.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n\n const cacheKey = `${options.serverOutput}\\0${options.dev ? \"dev\" : \"prod\"}\\0${options.filename}\\0${transformedSourceHash}\\0${clientInference.clientBoundaryImports.join(\"\\0\")}\\0${clientInference.clientBoundaryFallbackImports.join(\"\\0\")}\\0${vitePluginsCacheKey(options.vitePlugins)}`;\n const cached = readRouterRuntimeCacheEntry(\n serverSourceTransformCache,\n cacheKey,\n serverSourceTransformCacheCounters,\n );\n\n if (cached !== undefined) {\n return cached;\n }\n\n const output = transformCompilerModuleContext({\n code: source,\n clientBoundaryImports: clientInference.clientBoundaryImports,\n clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,\n dev: options.dev,\n filename: options.filename,\n moduleContext,\n serverEscape: nativeEscapeTransform,\n serverOutput: options.serverOutput,\n target: \"server\",\n });\n const fatalDiagnostics = output.diagnostics.filter(\n (diagnostic) => diagnostic.code !== \"MR_UNSUPPORTED_SERVER_EVENT_HANDLER\",\n );\n\n if (fatalDiagnostics.length > 0) {\n throw new Error(\n fatalDiagnostics\n .map((diagnostic) => formatDiagnostic(options.filename, diagnostic))\n .join(\"\\n\"),\n );\n }\n\n setBoundedCacheEntry(\n serverSourceTransformCache,\n cacheKey,\n output.code,\n maxServerSourceTransformCacheEntries,\n serverSourceTransformCacheCounters,\n );\n\n return output.code;\n}\n\nfunction withFileImportMetaUrl(source: string, filename: string): string {\n if (!source.includes(\"import.meta.url\")) {\n return source;\n }\n\n return source.replaceAll(\"import.meta.url\", JSON.stringify(pathToFileURL(filename).href));\n}\n\nfunction withNodeRequireShimForEsmBundle(options: {\n code: string;\n filename: string;\n requireBaseDir?: string | undefined;\n}): string {\n const requireBaseUrl = pathToFileURL(\n join(options.requireBaseDir ?? process.cwd(), \"__mreact_require_shim.cjs\"),\n ).href;\n const rewritten = rewriteNodeModulesExternalImports(options.code);\n const code = rewritten.code.replaceAll(\n \"createRequire(import.meta.url)\",\n `createRequire(${JSON.stringify(requireBaseUrl)})`,\n );\n const needsFilenameGlobalShim = needsCommonJsFilenameGlobalShim(options.code);\n const needsRequireShim = needsNodeRequireShim(options.code);\n\n if (\n !rewritten.needsNativeImport &&\n !rewritten.needsRequire &&\n !needsFilenameGlobalShim &&\n !needsRequireShim\n ) {\n return code;\n }\n\n return `${rewritten.needsNativeImport ? 'const __mreactNativeImport = Function(\"specifier\", \"return import(specifier)\");\\n' : \"\"}${\n needsFilenameGlobalShim\n ? `const __filename = ${JSON.stringify(options.filename)};\nconst __dirname = ${JSON.stringify(dirname(options.filename))};\n`\n : \"\"\n }${\n rewritten.needsRequire || needsRequireShim\n ? `import { createRequire as __mreactCreateRequire } from \"node:module\";\nconst __mreactRequire = __mreactCreateRequire(${JSON.stringify(requireBaseUrl)});\nconst require = __mreactRequire;\n`\n : \"\"\n }${code}`;\n}\n\nfunction needsCommonJsFilenameGlobalShim(code: string): boolean {\n return /\\b__(?:filename|dirname)\\b/.test(code);\n}\n\nfunction needsNodeRequireShim(code: string): boolean {\n return code.includes(\"Dynamic require of\") && /\\b__require\\s*=/.test(code);\n}\n\nfunction rewriteNodeModulesExternalImports(code: string): {\n code: string;\n needsNativeImport: boolean;\n needsRequire: boolean;\n} {\n const nativeImportBindings = new Map<string, string>();\n let needsNativeImport = false;\n let needsRequire = false;\n let importIndex = 0;\n const importFromPattern = /^import\\s+([^;\\n]+?)\\s+from\\s+([\"'])([^\"']+)\\2;?$/gm;\n const sideEffectImportPattern = /^import\\s+([\"'])([^\"']+)\\1;?$/gm;\n const withRewrittenImports = code.replace(\n importFromPattern,\n (statement: string, clause: string, _quote: string, specifier: string) => {\n const file = nodeModulesExternalImportPath(specifier);\n\n if (file === undefined || !isNodeImportableModuleFile(file)) {\n return statement;\n }\n\n if (isNodeCommonJsModuleFile(file)) {\n needsRequire = true;\n const requireExpression = `__mreactRequire(${JSON.stringify(file)})`;\n return commonJsImportClauseToRequireStatements(\n clause.trim(),\n requireExpression,\n importIndex++,\n );\n }\n\n needsNativeImport = true;\n const rewritten = esmImportClauseToNativeImportStatements(\n clause.trim(),\n specifier,\n importIndex++,\n );\n for (const [name, replacement] of rewritten.bindings) {\n nativeImportBindings.set(name, replacement);\n }\n\n return rewritten.code;\n },\n );\n const rewrittenCode = withRewrittenImports.replace(\n sideEffectImportPattern,\n (statement: string, _quote: string, specifier: string) => {\n const file = nodeModulesExternalImportPath(specifier);\n\n if (file === undefined || !isNodeImportableModuleFile(file)) {\n return statement;\n }\n\n if (isNodeCommonJsModuleFile(file)) {\n needsRequire = true;\n return `__mreactRequire(${JSON.stringify(file)});`;\n }\n\n needsNativeImport = true;\n return `await __mreactNativeImport(${JSON.stringify(specifier)});`;\n },\n );\n\n return {\n code:\n nativeImportBindings.size === 0\n ? rewrittenCode\n : replaceImportedIdentifiers(rewrittenCode, nativeImportBindings),\n needsNativeImport,\n needsRequire,\n };\n}\n\nfunction nodeModulesExternalImportPath(specifier: string): string | undefined {\n const file = externalImportFilePath(specifier);\n\n if (file === undefined || !isNodeModulesPath(file)) {\n return undefined;\n }\n\n return file;\n}\n\nfunction externalImportFilePath(specifier: string): string | undefined {\n if (specifier.startsWith(\"file://\")) {\n try {\n return fileURLToPath(specifier);\n } catch {\n return undefined;\n }\n }\n\n return isAbsolute(specifier) ? specifier : undefined;\n}\n\nfunction isNodeModulesPath(file: string): boolean {\n return file.split(sep).includes(\"node_modules\");\n}\n\nfunction isNodeImportableModuleFile(file: string): boolean {\n const extension = extname(file);\n\n return (\n extension === \".cjs\" || extension === \".mjs\" || extension === \".js\" || extension === \".node\"\n );\n}\n\nfunction isNodeCommonJsModuleFile(file: string): boolean {\n const extension = extname(file);\n\n if (extension === \".cjs\" || extension === \".cts\" || extension === \".node\") {\n return true;\n }\n\n if (extension === \".mjs\" || extension === \".mts\" || extension !== \".js\") {\n return false;\n }\n\n return nearestPackageType(file) !== \"module\";\n}\n\nfunction nearestPackageType(file: string): string | undefined {\n let directory = dirname(file);\n\n while (true) {\n const packageJson = join(directory, \"package.json\");\n\n if (packageTypeCache.has(packageJson)) {\n return packageTypeCache.get(packageJson);\n }\n\n if (existsSync(packageJson)) {\n const type = readPackageType(packageJson);\n packageTypeCache.set(packageJson, type);\n return type;\n }\n\n const parent = dirname(directory);\n\n if (parent === directory) {\n return undefined;\n }\n\n directory = parent;\n }\n}\n\nfunction readPackageType(packageJson: string): string | undefined {\n try {\n const parsed = JSON.parse(readFileSync(packageJson, \"utf8\")) as { type?: unknown };\n\n return typeof parsed.type === \"string\" ? parsed.type : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction commonJsImportClauseToRequireStatements(\n clause: string,\n requireExpression: string,\n importIndex: number,\n): string {\n if (clause.startsWith(\"* as \")) {\n return `const ${clause.slice(5).trim()} = ${requireExpression};`;\n }\n\n if (clause.startsWith(\"{\")) {\n return namedCommonJsImportsToRequireStatements(clause, requireExpression);\n }\n\n const commaIndex = clause.indexOf(\",\");\n\n if (commaIndex === -1) {\n return `const ${clause} = ${requireExpression};`;\n }\n\n const defaultName = clause.slice(0, commaIndex).trim();\n const namedOrNamespace = clause.slice(commaIndex + 1).trim();\n const temporaryName = `__mreactExternalCommonJs${importIndex}`;\n const statements = [\n `const ${temporaryName} = ${requireExpression};`,\n `const ${defaultName} = ${temporaryName};`,\n ];\n\n if (namedOrNamespace.startsWith(\"* as \")) {\n statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);\n } else if (namedOrNamespace.startsWith(\"{\")) {\n statements.push(namedCommonJsImportsToRequireStatements(namedOrNamespace, temporaryName));\n }\n\n return statements.join(\"\\n\");\n}\n\nfunction esmImportClauseToNativeImportStatements(\n clause: string,\n specifier: string,\n importIndex: number,\n): { bindings: Map<string, string>; code: string } {\n const bindings = new Map<string, string>();\n const temporaryName = `__mreactExternalModule${importIndex}`;\n const statements = [\n `const ${temporaryName} = await __mreactNativeImport(${JSON.stringify(specifier)});`,\n ];\n\n if (clause.startsWith(\"* as \")) {\n statements.push(`const ${clause.slice(5).trim()} = ${temporaryName};`);\n } else if (clause.startsWith(\"{\")) {\n collectNamedEsmImportBindings(clause, temporaryName, bindings);\n } else {\n const commaIndex = clause.indexOf(\",\");\n\n if (commaIndex === -1) {\n bindings.set(clause, `${temporaryName}.default`);\n } else {\n const defaultName = clause.slice(0, commaIndex).trim();\n const namedOrNamespace = clause.slice(commaIndex + 1).trim();\n bindings.set(defaultName, `${temporaryName}.default`);\n\n if (namedOrNamespace.startsWith(\"* as \")) {\n statements.push(`const ${namedOrNamespace.slice(5).trim()} = ${temporaryName};`);\n } else if (namedOrNamespace.startsWith(\"{\")) {\n collectNamedEsmImportBindings(namedOrNamespace, temporaryName, bindings);\n }\n }\n }\n\n return { bindings, code: statements.join(\"\\n\") };\n}\n\nfunction collectNamedEsmImportBindings(\n clause: string,\n moduleName: string,\n bindings: Map<string, string>,\n): void {\n for (const binding of namedImportBindings(clause)) {\n const replacement =\n binding.imported === \"default\"\n ? `${moduleName}.default`\n : `${moduleName}[${JSON.stringify(binding.imported)}]`;\n bindings.set(binding.local, replacement);\n }\n}\n\nfunction namedCommonJsImportsToRequireStatements(clause: string, sourceExpression: string): string {\n const objectBindings: string[] = [];\n const statements: string[] = [];\n\n for (const binding of namedImportBindings(clause)) {\n if (binding.imported === \"default\") {\n statements.push(`const ${binding.local} = ${sourceExpression};`);\n } else if (binding.imported === binding.local) {\n objectBindings.push(binding.imported);\n } else {\n objectBindings.push(`${JSON.stringify(binding.imported)}: ${binding.local}`);\n }\n }\n\n if (objectBindings.length > 0) {\n statements.unshift(`const { ${objectBindings.join(\", \")} } = ${sourceExpression};`);\n }\n\n return statements.join(\"\\n\");\n}\n\nfunction namedImportBindings(clause: string): Array<{ imported: string; local: string }> {\n return clause\n .slice(1, -1)\n .split(\",\")\n .map((binding) => binding.trim())\n .filter((binding) => binding.length > 0)\n .map((binding) => {\n const alias = binding.match(/^(.+?)\\s+as\\s+(.+)$/);\n const imported = alias?.[1]?.trim() ?? binding;\n const local = alias?.[2]?.trim() ?? binding;\n\n return { imported, local };\n });\n}\n\nfunction replaceImportedIdentifiers(code: string, bindings: ReadonlyMap<string, string>): string {\n let rewritten = \"\";\n let index = 0;\n\n while (index < code.length) {\n const char = code[index];\n const next = code[index + 1];\n\n if (char === '\"' || char === \"'\") {\n const end = quotedStringEnd(code, index, char);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"`\") {\n const end = templateLiteralEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n const end = lineCommentEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n const end = blockCommentEnd(code, index);\n rewritten += code.slice(index, end);\n index = end;\n continue;\n }\n\n if (isIdentifierStart(char)) {\n const end = identifierEnd(code, index);\n const identifier = code.slice(index, end);\n const replacement = bindings.get(identifier);\n\n if (replacement !== undefined && shouldReplaceImportedIdentifier(code, index, end)) {\n rewritten += importedIdentifierReplacement(code, index, end, identifier, replacement);\n } else {\n rewritten += identifier;\n }\n\n index = end;\n continue;\n }\n\n rewritten += char;\n index += 1;\n }\n\n return rewritten;\n}\n\nfunction shouldReplaceImportedIdentifier(code: string, start: number, end: number): boolean {\n const previous = previousNonWhitespace(code, start);\n const next = nextNonWhitespace(code, end);\n\n return previous !== \".\" && previous !== \"?\" && next !== \":\";\n}\n\nfunction importedIdentifierReplacement(\n code: string,\n start: number,\n end: number,\n identifier: string,\n replacement: string,\n): string {\n const previous = previousNonWhitespace(code, start);\n const next = nextNonWhitespace(code, end);\n\n return (previous === \"{\" || previous === \",\") && (next === \",\" || next === \"}\")\n ? `${identifier}: ${replacement}`\n : replacement;\n}\n\nfunction previousNonWhitespace(code: string, index: number): string | undefined {\n for (let position = index - 1; position >= 0; position -= 1) {\n if (!/\\s/u.test(code[position] ?? \"\")) {\n return code[position];\n }\n }\n\n return undefined;\n}\n\nfunction nextNonWhitespace(code: string, index: number): string | undefined {\n for (let position = index; position < code.length; position += 1) {\n if (!/\\s/u.test(code[position] ?? \"\")) {\n return code[position];\n }\n }\n\n return undefined;\n}\n\nfunction quotedStringEnd(code: string, start: number, quote: string): number {\n for (let index = start + 1; index < code.length; index += 1) {\n if (code[index] === \"\\\\\") {\n index += 1;\n } else if (code[index] === quote) {\n return index + 1;\n }\n }\n\n return code.length;\n}\n\nfunction templateLiteralEnd(code: string, start: number): number {\n for (let index = start + 1; index < code.length; index += 1) {\n if (code[index] === \"\\\\\") {\n index += 1;\n } else if (code[index] === \"`\") {\n return index + 1;\n }\n }\n\n return code.length;\n}\n\nfunction lineCommentEnd(code: string, start: number): number {\n const end = code.indexOf(\"\\n\", start + 2);\n\n return end === -1 ? code.length : end;\n}\n\nfunction blockCommentEnd(code: string, start: number): number {\n const end = code.indexOf(\"*/\", start + 2);\n\n return end === -1 ? code.length : end + 2;\n}\n\nfunction identifierEnd(code: string, start: number): number {\n let end = start + 1;\n\n while (end < code.length && isIdentifierPart(code[end] ?? \"\")) {\n end += 1;\n }\n\n return end;\n}\n\nfunction isIdentifierStart(char: string | undefined): boolean {\n return char !== undefined && /[A-Za-z_$]/u.test(char);\n}\n\nfunction isIdentifierPart(char: string): boolean {\n return /[A-Za-z0-9_$]/u.test(char);\n}\n\nfunction workspacePackageResolutionPlugin() {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n const packageRoot = dirname(currentDir);\n const sourceOrDist = currentDir.endsWith(`${sep}dist`) ? \"dist/index.js\" : \"src/index.ts\";\n const appRouterGlobalsSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/app-router-globals.js\"\n : \"src/app-router-globals.ts\";\n const linkSourceOrDist = currentDir.endsWith(`${sep}dist`) ? \"dist/link.js\" : \"src/link.ts\";\n const nativeEscapeSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/native-escape.js\"\n : \"src/native-escape.ts\";\n const navigationStateSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/navigation-state.js\"\n : \"src/navigation-state.ts\";\n const sessionSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/session.js\"\n : \"src/session.ts\";\n const streamListSourceOrDist = currentDir.endsWith(`${sep}dist`)\n ? \"dist/stream-list.js\"\n : \"src/stream-list.ts\";\n const packageFile = (\n monorepoDir: string,\n packageName: string,\n entry: string,\n specifier: string,\n resolveDir?: string | undefined,\n ): string =>\n resolveWorkspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir,\n packageName,\n resolveDir,\n specifier,\n });\n const entries = new Map<string, { entry: string; monorepoDir: string; packageName: string }>([\n [\n \"react\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom/client\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react-dom/server\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"react/jsx-dev-runtime\",\n {\n entry: \"jsx-dev-runtime\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"react/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\"@reckona/mreact\", { entry: \"index\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" }],\n [\n \"@reckona/mreact/jsx-dev-runtime\",\n { entry: \"jsx-dev-runtime\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" },\n ],\n [\n \"@reckona/mreact/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react\", packageName: \"@reckona/mreact\" },\n ],\n [\n \"@reckona/mreact-auth\",\n { entry: \"index\", monorepoDir: \"auth\", packageName: \"@reckona/mreact-auth\" },\n ],\n [\n \"@reckona/mreact-compat\",\n { entry: \"index\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/event-priority\",\n {\n entry: \"event-priority\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"@reckona/mreact-compat/flight\",\n { entry: \"flight\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/hooks\",\n { entry: \"hooks-entry\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/internal\",\n { entry: \"internal\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/jsx-dev-runtime\",\n {\n entry: \"jsx-dev-runtime\",\n monorepoDir: \"react-compat\",\n packageName: \"@reckona/mreact-compat\",\n },\n ],\n [\n \"@reckona/mreact-compat/jsx-runtime\",\n { entry: \"jsx-runtime\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-compat/scheduler\",\n { entry: \"scheduler\", monorepoDir: \"react-compat\", packageName: \"@reckona/mreact-compat\" },\n ],\n [\n \"@reckona/mreact-reactive-core\",\n {\n entry: \"index\",\n monorepoDir: \"reactive-core\",\n packageName: \"@reckona/mreact-reactive-core\",\n },\n ],\n [\n \"@reckona/mreact-query\",\n { entry: \"index\", monorepoDir: \"query\", packageName: \"@reckona/mreact-query\" },\n ],\n [\n \"@reckona/mreact-server\",\n { entry: \"index\", monorepoDir: \"server\", packageName: \"@reckona/mreact-server\" },\n ],\n ]);\n const routerEntries = new Map([\n [\"@reckona/mreact-router\", join(packageRoot, sourceOrDist)],\n [\"@reckona/mreact-router/app-router-globals\", join(packageRoot, appRouterGlobalsSourceOrDist)],\n [\"@reckona/mreact-router/link\", join(packageRoot, linkSourceOrDist)],\n [\"@reckona/mreact-router/native-escape\", join(packageRoot, nativeEscapeSourceOrDist)],\n [\"@reckona/mreact-router/navigation-state\", join(packageRoot, navigationStateSourceOrDist)],\n [\"@reckona/mreact-router/session\", join(packageRoot, sessionSourceOrDist)],\n [\"@reckona/mreact-router/stream-list\", join(packageRoot, streamListSourceOrDist)],\n [\"@reckona/mreact-router/internal/native-escape\", join(packageRoot, nativeEscapeSourceOrDist)],\n [\"@reckona/mreact-router/internal/session\", join(packageRoot, sessionSourceOrDist)],\n ]);\n\n return {\n name: \"mreact-router-workspace-packages\",\n setup(buildApi: Pick<RouterCompatBuildApi, \"onResolve\">) {\n buildApi.onResolve(\n {\n filter:\n /^(?:react(?:\\/jsx-(?:dev-)?runtime)?|react-dom(?:\\/(?:client|server))?|@reckona\\/(?:mreact(?:\\/(?:jsx-dev-runtime|jsx-runtime))?|mreact-(?:auth|query|reactive-core|server|router|compat)(?:\\/(?:event-priority|flight|internal|jsx-dev-runtime|jsx-runtime|scheduler|app-router-globals|link|native-escape|navigation-state|session|stream-list|internal\\/native-escape|internal\\/session))?))$/,\n },\n (args) => {\n const routerPath = routerEntries.get(args.path);\n\n if (routerPath !== undefined) {\n return { path: routerPath };\n }\n\n const entry = entries.get(args.path);\n\n return entry === undefined\n ? undefined\n : {\n path: packageFile(\n entry.monorepoDir,\n entry.packageName,\n entry.entry,\n args.path,\n args.resolveDir,\n ),\n };\n },\n );\n },\n };\n}\n\nfunction setBoundedCacheEntry<K, V>(\n cache: Map<K, V>,\n key: K,\n value: V,\n maxEntries: number,\n counters: RouterRuntimeCacheCounters,\n): void {\n if (cache.size >= maxEntries) {\n const oldestKey = cache.keys().next().value as K | undefined;\n\n if (oldestKey !== undefined) {\n cache.delete(oldestKey);\n counters.evictions += 1;\n }\n }\n\n cache.set(key, value);\n}\n\nfunction hashText(text: string): string {\n return createHash(\"sha256\").update(text).digest(\"hex\").slice(0, 16);\n}\n"]}
|
package/dist/render.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface RenderAppRequestOptions {
|
|
|
16
16
|
appDir: string;
|
|
17
17
|
assetBaseUrl?: string | undefined;
|
|
18
18
|
clientScripts?: ReadonlyMap<string, string>;
|
|
19
|
+
clientStylesByFile?: ReadonlyMap<string, readonly string[]>;
|
|
19
20
|
clientStyles?: ReadonlyMap<string, readonly string[]>;
|
|
20
21
|
env?: unknown;
|
|
21
22
|
importPolicy?: AppRouterImportPolicy | undefined;
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/dist/render.js
CHANGED
|
@@ -111,6 +111,7 @@ async function preloadBuiltPageRouteModules(options) {
|
|
|
111
111
|
const stringOutput = transformServerModule({
|
|
112
112
|
code: routeCode,
|
|
113
113
|
clientBoundaryImports: options.analysis.clientInference.clientBoundaryImports,
|
|
114
|
+
clientBoundaryFallbackImports: options.analysis.clientInference.clientBoundaryFallbackImports,
|
|
114
115
|
filename: options.file,
|
|
115
116
|
serverModules: options.serverModules,
|
|
116
117
|
serverOutput: "string",
|
|
@@ -122,6 +123,7 @@ async function preloadBuiltPageRouteModules(options) {
|
|
|
122
123
|
const streamOutput = transformServerModule({
|
|
123
124
|
code: routeCode,
|
|
124
125
|
clientBoundaryImports: options.analysis.clientInference.clientBoundaryImports,
|
|
126
|
+
clientBoundaryFallbackImports: options.analysis.clientInference.clientBoundaryFallbackImports,
|
|
125
127
|
filename: options.file,
|
|
126
128
|
serverModules: options.serverModules,
|
|
127
129
|
serverOutput: "stream",
|
|
@@ -397,6 +399,7 @@ async function renderAppRequestInternal(options) {
|
|
|
397
399
|
const response = await renderSpecialRoute({
|
|
398
400
|
appDir: options.appDir,
|
|
399
401
|
assetBaseUrl: options.assetBaseUrl,
|
|
402
|
+
currentStyleSheets: options.clientStylesByFile?.get(notFoundFile),
|
|
400
403
|
error: undefined,
|
|
401
404
|
request: options.request,
|
|
402
405
|
routePath: url.pathname,
|
|
@@ -610,6 +613,7 @@ async function renderAppRequestInternal(options) {
|
|
|
610
613
|
const stringOutput = transformServerModule({
|
|
611
614
|
code: routeCode,
|
|
612
615
|
clientBoundaryImports: clientInference.clientBoundaryImports,
|
|
616
|
+
clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,
|
|
613
617
|
filename: matched.route.file,
|
|
614
618
|
serverModules: options.serverModules,
|
|
615
619
|
serverOutput: "string",
|
|
@@ -727,6 +731,7 @@ async function renderAppRequestInternal(options) {
|
|
|
727
731
|
const output = transformServerModule({
|
|
728
732
|
code: routeCode,
|
|
729
733
|
clientBoundaryImports: clientInference.clientBoundaryImports,
|
|
734
|
+
clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,
|
|
730
735
|
filename: matched.route.file,
|
|
731
736
|
serverModules: options.serverModules,
|
|
732
737
|
serverOutput: "stream",
|
|
@@ -820,6 +825,7 @@ async function renderAppRequestInternal(options) {
|
|
|
820
825
|
const output = transformServerModule({
|
|
821
826
|
code: routeCode,
|
|
822
827
|
clientBoundaryImports: clientInference.clientBoundaryImports,
|
|
828
|
+
clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,
|
|
823
829
|
filename: matched.route.file,
|
|
824
830
|
serverModules: options.serverModules,
|
|
825
831
|
serverOutput: "string",
|
|
@@ -955,6 +961,7 @@ async function renderAppRequestInternal(options) {
|
|
|
955
961
|
const response = await renderSpecialRoute({
|
|
956
962
|
appDir: options.appDir,
|
|
957
963
|
assetBaseUrl: options.assetBaseUrl,
|
|
964
|
+
currentStyleSheets: options.clientStylesByFile?.get(notFoundFile),
|
|
958
965
|
error: undefined,
|
|
959
966
|
request: options.request,
|
|
960
967
|
routePath: matched.route.path,
|
|
@@ -979,6 +986,7 @@ async function renderAppRequestInternal(options) {
|
|
|
979
986
|
const response = await renderSpecialRoute({
|
|
980
987
|
appDir: options.appDir,
|
|
981
988
|
assetBaseUrl: options.assetBaseUrl,
|
|
989
|
+
currentStyleSheets: options.clientStylesByFile?.get(errorFile),
|
|
982
990
|
error,
|
|
983
991
|
request: options.request,
|
|
984
992
|
routePath: matched.route.path,
|
|
@@ -1190,6 +1198,7 @@ async function renderSpecialRoute(options) {
|
|
|
1190
1198
|
});
|
|
1191
1199
|
return new Response(`<!DOCTYPE html>${clientNavigationHeadTags({
|
|
1192
1200
|
assetBaseUrl: options.assetBaseUrl,
|
|
1201
|
+
currentStyleSheets: options.currentStyleSheets,
|
|
1193
1202
|
currentScript: options.navigation?.clientRoute === true ? options.navigation.script : undefined,
|
|
1194
1203
|
routeScripts: options.routeScripts,
|
|
1195
1204
|
})}${html}`, {
|
|
@@ -1596,7 +1605,9 @@ function transformServerModule(options) {
|
|
|
1596
1605
|
};
|
|
1597
1606
|
}
|
|
1598
1607
|
const awaitHydrationKey = options.serverAwaitHydration === true ? "1" : "0";
|
|
1599
|
-
const
|
|
1608
|
+
const boundaryKey = options.clientBoundaryImports?.join("\0") ?? "";
|
|
1609
|
+
const fallbackKey = options.clientBoundaryFallbackImports?.join("\0") ?? "";
|
|
1610
|
+
const key = `${options.filename}\0${options.serverOutput}\0${sourceHash}\0${awaitHydrationKey}\0${boundaryKey}\0${fallbackKey}`;
|
|
1600
1611
|
const cached = readRouterRuntimeCacheEntry(serverTransformCache, key, serverTransformCacheCounters);
|
|
1601
1612
|
if (cached !== undefined) {
|
|
1602
1613
|
return cached;
|
|
@@ -1606,6 +1617,9 @@ function transformServerModule(options) {
|
|
|
1606
1617
|
...(options.clientBoundaryImports === undefined
|
|
1607
1618
|
? {}
|
|
1608
1619
|
: { clientBoundaryImports: options.clientBoundaryImports }),
|
|
1620
|
+
...(options.clientBoundaryFallbackImports === undefined
|
|
1621
|
+
? {}
|
|
1622
|
+
: { clientBoundaryFallbackImports: options.clientBoundaryFallbackImports }),
|
|
1609
1623
|
dev: true,
|
|
1610
1624
|
filename: options.filename,
|
|
1611
1625
|
serverEscape: nativeEscapeTransform,
|
|
@@ -1646,6 +1660,7 @@ function routeSourceAnalysisFromArtifact(artifact) {
|
|
|
1646
1660
|
clientInference: {
|
|
1647
1661
|
client: artifact.clientRoute,
|
|
1648
1662
|
clientBoundaryImports: [...artifact.clientBoundaryImports],
|
|
1663
|
+
clientBoundaryFallbackImports: [...(artifact.clientBoundaryFallbackImports ?? [])],
|
|
1649
1664
|
diagnostics: [],
|
|
1650
1665
|
},
|
|
1651
1666
|
hasLoader: artifact.hasLoader,
|
|
@@ -2139,7 +2154,12 @@ async function renderShellPrefixSuffix(appDir, shell, props, slotContext, server
|
|
|
2139
2154
|
const serverOutput = shellUsesAwait ? "stream" : "string";
|
|
2140
2155
|
const artifact = serverModules?.get(shell.file)?.[serverOutput];
|
|
2141
2156
|
const clientInference = artifact !== undefined && artifact.sourceHash === memoizedHashText(code)
|
|
2142
|
-
? {
|
|
2157
|
+
? {
|
|
2158
|
+
client: false,
|
|
2159
|
+
clientBoundaryImports: [],
|
|
2160
|
+
clientBoundaryFallbackImports: [],
|
|
2161
|
+
diagnostics: [],
|
|
2162
|
+
}
|
|
2143
2163
|
: await inferClientRouteModule({
|
|
2144
2164
|
cache: clientRouteInferenceCache,
|
|
2145
2165
|
code: stripRouteClientOnlyExports(code, shell.file),
|
|
@@ -2152,6 +2172,7 @@ async function renderShellPrefixSuffix(appDir, shell, props, slotContext, server
|
|
|
2152
2172
|
const output = transformServerModule({
|
|
2153
2173
|
code,
|
|
2154
2174
|
clientBoundaryImports: clientInference.clientBoundaryImports,
|
|
2175
|
+
clientBoundaryFallbackImports: clientInference.clientBoundaryFallbackImports,
|
|
2155
2176
|
filename: shell.file,
|
|
2156
2177
|
serverModules,
|
|
2157
2178
|
serverOutput,
|