@reckona/mreact-router 0.0.209 → 0.0.211
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/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +17 -5
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +43 -3
- package/dist/build.js.map +1 -1
- package/dist/built-runtime.d.ts +1 -0
- package/dist/built-runtime.d.ts.map +1 -1
- package/dist/built-runtime.js +4 -0
- package/dist/built-runtime.js.map +1 -1
- package/dist/client-manifest-assets.d.ts +2 -0
- package/dist/client-manifest-assets.d.ts.map +1 -1
- package/dist/client-manifest-assets.js +2 -1
- package/dist/client-manifest-assets.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +367 -93
- package/dist/client.js.map +1 -1
- package/dist/module-preload-graph.d.ts +5 -0
- package/dist/module-preload-graph.d.ts.map +1 -0
- package/dist/module-preload-graph.js +48 -0
- package/dist/module-preload-graph.js.map +1 -0
- package/dist/reactive-devtools-stub.d.ts +3 -0
- package/dist/reactive-devtools-stub.d.ts.map +1 -0
- package/dist/reactive-devtools-stub.js +10 -0
- package/dist/reactive-devtools-stub.js.map +1 -0
- package/dist/render.d.ts +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +47 -10
- package/dist/render.js.map +1 -1
- package/dist/serve.js +1 -0
- package/dist/serve.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +2 -7
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/adapters/cloudflare.ts +22 -5
- package/src/build.ts +50 -3
- package/src/built-runtime.ts +18 -6
- package/src/client-manifest-assets.ts +3 -1
- package/src/client.ts +367 -92
- package/src/module-preload-graph.ts +70 -0
- package/src/reactive-devtools-stub.ts +9 -0
- package/src/render.ts +74 -10
- package/src/serve.ts +1 -0
- package/src/vite.ts +2 -7
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile, realpath } from \"node:fs/promises\";\nimport type { ServerResponse } from \"node:http\";\nimport { dirname, isAbsolute, relative, resolve, sep } from \"node:path\";\nimport { formatDiagnostic } from \"@reckona/mreact-compiler\";\nimport type { DehydrateOptions } from \"@reckona/mreact-query\";\nimport {\n createCompilerModuleContext,\n transformCompilerModuleContext,\n} from \"@reckona/mreact-compiler/internal\";\nimport {\n isFileLoadingAllowed,\n normalizePath,\n type Connect,\n type Plugin,\n type PluginOption,\n type ResolvedConfig,\n type UserConfig,\n type ViteDevServer,\n} from \"vite\";\nimport type { AppRouterServerActionOptions } from \"./actions.js\";\nimport type { AppRouterCache } from \"./cache.js\";\nimport {\n resolveAppRouterProjectOptions,\n type AppRouterProjectOptions,\n type ResolvedAppRouterProject,\n} from \"./config.js\";\nexport type { AppRouterExecutionContracts } from \"./config.js\";\nimport type { AppRouterImportPolicy } from \"./import-policy.js\";\nimport { dehydrateOptionsFromModule } from \"./dehydrate-policy.js\";\nimport {\n collectClientRouteReferences,\n createClientRouteInferenceCache,\n detectAnchorElementUsage,\n formatClientRouteInferenceDiagnostic,\n isClientRouteSource,\n navigationRuntimeLinkDisabledDiagnostic,\n resolveNavigationRuntime,\n type ClientRouteInferenceCache,\n} from \"./client-route-inference.js\";\nimport {\n buildNavigationRuntimeBundle,\n buildClientRouteBundle,\n buildClientRouteEntrySource,\n clientScriptForPath,\n navigationRuntimeScriptForDev,\n} from \"./navigation-runtime.js\";\nimport { nodeRequestToWebRequest, sendResponse } from \"./http.js\";\nimport type { AppRouterLogger } from \"./logger.js\";\nimport { renderAppRequest } from \"./render.js\";\nimport { stripRouteClientOnlyExports } from \"./route-source.js\";\nimport {\n collectRouteCssHrefs,\n collectSpecialBoundaryFiles,\n createCachedRouteSourceReader,\n} from \"./route-styles.js\";\nimport { createRouteMatcher, scanAppRoutes, type AppRoute } from \"./routes.js\";\nimport { resolveRequestHost, type RequestHostPolicy } from \"./serve.js\";\nimport { hasJsxSyntax } from \"./source-jsx.js\";\nimport { prependTailwindSourceDirectives } from \"./tailwind-source.js\";\nimport { workspacePackageFile } from \"./workspace-packages.js\";\n\nexport type { AppRouterAllowedServerAction, AppRouterServerActionOptions } from \"./actions.js\";\nexport type { AppRouterCache, AppRouterCacheEntry } from \"./cache.js\";\nexport type {\n AppRouterBuildTarget,\n AppRouterClientConsoleMethod,\n AppRouterClientSourceMapMode,\n AppRouterClientSourceMapOption,\n AppRouterProductionOptions,\n AppRouterProjectOptions,\n ResolvedAppRouterProject,\n} from \"./config.js\";\nexport type { AppRouterImportPolicy } from \"./import-policy.js\";\nexport type {\n AppRouterCspInlineNonceWarningLogEvent,\n AppRouterLogError,\n AppRouterLogEvent,\n AppRouterLogger,\n AppRouterRuntime,\n AppRouterRenderTimingLogEvent,\n AppRouterRequestEndLogEvent,\n AppRouterRequestErrorLogEvent,\n AppRouterRequestStartLogEvent,\n AppRouterRequestTimingLogEvent,\n AppRouterUpgradeErrorLogEvent,\n AppRouterUpgradeRejectedLogEvent,\n} from \"./logger.js\";\nexport type { RequestHostPolicy } from \"./serve.js\";\n\n/**\n * Configures the app-router Vite middleware used by development servers.\n */\nexport interface AppRouterViteMiddlewareOptions extends AppRouterProjectOptions {\n allowedHosts?: readonly string[] | undefined;\n dehydrateOptions?: DehydrateOptions | undefined;\n define?: UserConfig[\"define\"] | undefined;\n hostPolicy?: RequestHostPolicy | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n logger?: AppRouterLogger | undefined;\n routeCache?: AppRouterCache | undefined;\n serverActions?: AppRouterServerActionOptions | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}\n\ntype AppRouterViteRuntimeMiddlewareOptions = AppRouterViteMiddlewareOptions & {\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n devServerModuleCacheVersion?: (() => string | undefined) | undefined;\n navigationScanVitePlugins?: readonly PluginOption[] | undefined;\n viteDevServer?: ViteDevServer | undefined;\n};\n\n/**\n * Configures the app-router Vite plugin.\n */\nexport interface AppRouterVitePluginOptions extends AppRouterProjectOptions {\n allowedHosts?: readonly string[] | undefined;\n dehydrateOptions?: DehydrateOptions | undefined;\n hostPolicy?: RequestHostPolicy | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n logger?: AppRouterLogger | undefined;\n routeCache?: AppRouterCache | undefined;\n serverActions?: AppRouterServerActionOptions | undefined;\n}\n\nconst clientPrefix = \"/_mreact/client/\";\nconst devCssPrefix = \"/_mreact/dev-css/\";\nconst devCssSourceQuery = \"mreact-router-dev-css-source\";\nconst clientRouteModuleQuery = \"mreact-router-client-route\";\nconst virtualClientPrefix = \"\\0mreact-router-client:\";\nconst virtualReactiveCoreId = \"\\0mreact-router-reactive-core\";\nconst virtualReactiveDevtoolsId = \"\\0mreact-router-reactive-devtools\";\nconst mreactRouterConfigKey = \"__mreactRouterConfig\";\n\ntype MreactRouterPluginConfig = ResolvedAppRouterProject & {\n dehydrateOptions?: DehydrateOptions | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n};\n\ntype MreactRouterPlugin = Plugin & {\n [mreactRouterConfigKey]: MreactRouterPluginConfig;\n};\n\ninterface DevCssViteFileSystemConfigs {\n canonical: ResolvedConfig;\n logical: ResolvedConfig;\n}\n\n/**\n * Creates the app-router Vite plugin for route compilation and development middleware.\n */\nexport function createAppRouterVitePlugin(options: AppRouterVitePluginOptions): Plugin {\n const project = resolveAppRouterProjectOptions(options);\n const normalizedSourceDirs = project.allowedSourceDirs.map((directory) =>\n normalizePath(directory),\n );\n const canonicalDevCssSourceRoot = resolveCanonicalDevCssSourceRoot(project.projectRoot);\n const packageFile = (monorepoDir: string, packageName: string, entry: string): string =>\n workspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir,\n packageName,\n });\n const reactiveCorePath = packageFile(\"reactive-core\", \"@reckona/mreact-reactive-core\", \"index\");\n const reactiveCoreDir = normalizePath(dirname(reactiveCorePath));\n const reactiveDomPath = packageFile(\"reactive-dom\", \"@reckona/mreact-reactive-dom\", \"index\");\n const reactiveDomDir = normalizePath(dirname(reactiveDomPath));\n const reactPath = packageFile(\"react\", \"@reckona/mreact\", \"index\");\n const reactDir = normalizePath(dirname(reactPath));\n const reactCompatPath = packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"index\");\n const reactCompatDir = normalizePath(dirname(reactCompatPath));\n const runtimePackageDirs = [reactiveCoreDir, reactiveDomDir, reactDir, reactCompatDir];\n const runtimePackageNames = [\n \"@reckona/mreact\",\n \"@reckona/mreact-reactive-core\",\n \"@reckona/mreact-reactive-dom\",\n \"@reckona/mreact-compat\",\n ];\n const runtimePaths = new Map([\n [\"react\", reactCompatPath],\n [\"react-dom\", reactCompatPath],\n [\"react-dom/client\", reactCompatPath],\n [\"react-dom/server\", reactCompatPath],\n [\n \"react/jsx-dev-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-dev-runtime\"),\n ],\n [\"react/jsx-runtime\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-runtime\")],\n [\"@reckona/mreact\", reactPath],\n [\n \"@reckona/mreact-reactive-core/internal\",\n packageFile(\"reactive-core\", \"@reckona/mreact-reactive-core\", \"internal\"),\n ],\n [\"@reckona/mreact-reactive-dom\", reactiveDomPath],\n [\n \"@reckona/mreact-reactive-dom/internal\",\n packageFile(\"reactive-dom\", \"@reckona/mreact-reactive-dom\", \"internal\"),\n ],\n [\"@reckona/mreact-compat\", reactCompatPath],\n [\n \"@reckona/mreact-compat/event-priority\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"event-priority\"),\n ],\n [\n \"@reckona/mreact-compat/flight\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"flight\"),\n ],\n [\n \"@reckona/mreact-compat/hooks\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"hooks-entry\"),\n ],\n [\n \"@reckona/mreact-compat/internal\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"internal\"),\n ],\n [\n \"@reckona/mreact-compat/jsx-dev-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-dev-runtime\"),\n ],\n [\n \"@reckona/mreact-compat/jsx-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-runtime\"),\n ],\n [\n \"@reckona/mreact-compat/scheduler\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"scheduler\"),\n ],\n [\n \"@reckona/mreact-compat/server\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"server\"),\n ],\n [\"@reckona/mreact-router/link\", packageFile(\"router\", \"@reckona/mreact-router\", \"link\")],\n [\n \"@reckona/mreact-router/navigation-state\",\n packageFile(\"router\", \"@reckona/mreact-router\", \"navigation-state\"),\n ],\n [\n \"@reckona/mreact-shared/url-safety\",\n packageFile(\"shared\", \"@reckona/mreact-shared\", \"url-safety\"),\n ],\n [\n \"@reckona/mreact-shared/server-render-value-internal\",\n packageFile(\"shared\", \"@reckona/mreact-shared\", \"server-render-value-internal\"),\n ],\n ]);\n\n // User-declared plugins captured from the resolving config. Unlike the fully\n // resolved `server.config.plugins`, this excludes Vite internals (e.g. the\n // built-in CSS plugin) whose `transform` requires a dev-server environment the\n // lightweight navigation scan cannot provide. Mirrors what the build forwards.\n let userVitePlugins: readonly PluginOption[] | undefined;\n let resolvedViteConfig: Promise<DevCssViteFileSystemConfigs> | undefined;\n let devServerModuleCacheVersion = 0;\n\n const plugin: MreactRouterPlugin = {\n [mreactRouterConfigKey]: {\n ...project,\n ...(options.dehydrateOptions === undefined\n ? {}\n : { dehydrateOptions: options.dehydrateOptions }),\n ...(options.importPolicy === undefined ? {} : { importPolicy: options.importPolicy }),\n },\n enforce: \"pre\",\n name: \"mreact-router\",\n config(userConfig) {\n userVitePlugins = routeTransformUserVitePlugins(userConfig.plugins);\n\n return {\n optimizeDeps: {\n // Every client-importable mreact package must resolve through the\n // same dev module graph. Prebundling any of them inlines a second\n // reactive-core (and devtools) copy into the deps chunk, which\n // silently breaks cross-package cell tracking, and also bypasses the\n // react/react-dom alias resolution this plugin provides.\n exclude: [\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react-dom/server\",\n \"react/jsx-dev-runtime\",\n \"react/jsx-runtime\",\n \"@reckona/mreact\",\n \"@reckona/mreact-auth\",\n \"@reckona/mreact-compat\",\n \"@reckona/mreact-devtools\",\n \"@reckona/mreact-dom\",\n \"@reckona/mreact-forms\",\n \"@reckona/mreact-next\",\n \"@reckona/mreact-query\",\n \"@reckona/mreact-reactive-core\",\n \"@reckona/mreact-reactive-dom\",\n \"@reckona/mreact-router\",\n \"@reckona/mreact-scheduler\",\n \"@reckona/mreact-shared\",\n \"@reckona/mreact-store\",\n \"@reckona/mreact-test-utils\",\n \"@reckona/mreact-virtual\",\n ],\n },\n };\n },\n configResolved(config) {\n resolvedViteConfig = resolveDevCssViteFileSystemConfigs(config);\n },\n configureServer(server) {\n server.middlewares.use(createDevCssProxyMiddleware());\n server.middlewares.use(createClientRouteTransformMiddleware(project.routesDir, server));\n\n return () => {\n const middlewareOptions: AppRouterViteRuntimeMiddlewareOptions = {\n ...options,\n define: server.config.define,\n devServerModuleCacheVersion: () => `dev:${devServerModuleCacheVersion}`,\n navigationScanVitePlugins: userVitePlugins ?? [],\n viteDevServer: server,\n vitePlugins: server.config.plugins,\n };\n\n server.middlewares.use(createAppRouterViteMiddleware(middlewareOptions));\n };\n },\n handleHotUpdate(context) {\n const normalizedFile = normalizePath(context.file);\n\n if (!normalizedSourceDirs.some((directory) => normalizedFile.startsWith(directory))) {\n return;\n }\n\n devServerModuleCacheVersion += 1;\n const timestamp = Date.now();\n const hotModules =\n context.modules.length > 0\n ? context.modules\n : Array.from(context.server.moduleGraph.idToModuleMap.values());\n const updates = hotModules\n .filter((moduleNode) => isMreactClientDevModuleId(moduleNode.id))\n .map((moduleNode) => {\n context.server.moduleGraph.invalidateModule(moduleNode);\n\n return {\n acceptedPath: moduleNode.url,\n path: moduleNode.url,\n timestamp,\n type: \"js-update\" as const,\n };\n });\n\n if (updates.length > 0) {\n context.server.ws.send({ type: \"update\", updates });\n }\n\n return [];\n },\n load(id) {\n if (isDevCssSourceModuleId(id)) {\n return loadDevCssSourceModule({\n allowedRoot: canonicalDevCssSourceRoot,\n cssFile: clientRequestPath(id),\n sourceDirs: project.allowedSourceDirs,\n viteConfig: resolvedViteConfig,\n });\n }\n\n if (id === virtualReactiveCoreId) {\n return `import { cell as nativeCell } from ${JSON.stringify(reactiveCorePath)};\nexport * from ${JSON.stringify(reactiveCorePath)};\nexport function cell(initial) {\n const routeCell = globalThis.__mreactRouteCell;\n return typeof routeCell === \"function\" ? routeCell(nativeCell, initial) : nativeCell(initial);\n}`;\n }\n\n if (id === virtualReactiveDevtoolsId) {\n return `export function emitReactiveDevtoolsEvent() {}\nexport function emitReactiveEffectRunDevtoolsEvent() {}\nexport function hasReactiveDevtoolsEmitter() { return false; }\nexport function currentDevtoolsEmitter() { return undefined; }\nexport function currentReactiveDevtools() { return undefined; }\nexport function invalidateReactiveDevtoolsCache() {}\nexport function prepareReactiveEffectRunDevtoolsEvent() { return undefined; }`;\n }\n\n if (id.startsWith(virtualClientPrefix)) {\n return renderAppRouterClientAsset(project.routesDir, id.slice(virtualClientPrefix.length), {\n dev: true,\n }).then(async (response) => {\n if (!response.ok) {\n const message = await response.text();\n throw new Error(message || `MReact client route asset was not found: ${id}`);\n }\n\n return response.text();\n });\n }\n\n const requestPath = clientRouteModuleRequestPath(id);\n\n return requestPath === undefined\n ? undefined\n : renderAppRouterClientRouteDevModule(project.routesDir, requestPath);\n },\n transform(code, id, options) {\n if (options?.ssr === true) {\n return undefined;\n }\n\n if (isMreactClientDevModuleId(id)) {\n return undefined;\n }\n\n const filename = clientRequestPath(id);\n\n if (!isMreactClientSourceDependency(filename, normalizedSourceDirs)) {\n return undefined;\n }\n\n const moduleContext = createCompilerModuleContext({ code, filename });\n\n if (!hasJsxSyntax(moduleContext.program)) {\n return undefined;\n }\n\n const output = transformCompilerModuleContext({\n code,\n dev: true,\n filename,\n mode: isCompatSourcePath(filename) ? \"compat\" : \"reactive\",\n moduleContext,\n target: \"client\",\n });\n\n if (output.diagnostics.length > 0) {\n throw new Error(\n output.diagnostics.map((diagnostic) => formatDiagnostic(filename, diagnostic)).join(\"\\n\"),\n );\n }\n\n return {\n code: output.code,\n map: null,\n };\n },\n async resolveId(id, importer) {\n const devCssFile = devCssSourceRequestFile(id, project.projectRoot);\n if (devCssFile !== undefined) {\n const queryStart = id.indexOf(\"?\");\n const query = queryStart === -1 ? \"\" : id.slice(queryStart);\n return `${normalizePath(devCssFile)}${query}`;\n }\n\n const runtimePath = runtimePaths.get(id);\n\n if (id === \"@reckona/mreact-reactive-core\") {\n if (importerInRuntimePackage(importer, runtimePackageDirs, runtimePackageNames)) {\n return reactiveCorePath;\n }\n\n return virtualReactiveCoreId;\n }\n\n if (\n id === \"./devtools.js\" &&\n importerInRuntimePackage(importer, [reactiveCoreDir], [\"@reckona/mreact-reactive-core\"])\n ) {\n return virtualReactiveDevtoolsId;\n }\n\n if (runtimePath !== undefined) {\n return runtimePath;\n }\n\n const requestPath = clientRequestPath(id);\n\n if (requestPath === `${clientPrefix}${navigationRuntimeScriptForDev()}`) {\n return `${virtualClientPrefix}${requestPath}`;\n }\n\n if (!requestPath.startsWith(clientPrefix)) {\n return undefined;\n }\n\n const route = await clientRouteForRequestPath(project.routesDir, requestPath);\n\n return route === undefined ? undefined : clientRouteModuleId(route.file, requestPath);\n },\n };\n\n return plugin;\n}\n\nfunction createClientRouteTransformMiddleware(\n appDir: string,\n server: ViteDevServer,\n): Connect.NextHandleFunction {\n return (request, response, next) => {\n void (async () => {\n const url = new URL(request.url ?? \"/\", \"http://localhost\");\n\n if (!url.pathname.startsWith(`${clientPrefix}routes/`)) {\n next();\n return;\n }\n\n const route = await clientRouteForRequestPath(appDir, url.pathname);\n\n if (route === undefined) {\n next();\n return;\n }\n\n try {\n const transformed = await server.transformRequest(`${url.pathname}${url.search}`);\n\n if (transformed === null) {\n next();\n return;\n }\n\n await sendResponse(\n response,\n new Response(transformed.code, {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n }),\n );\n } catch (error) {\n sendViteErrorOverlay(server, error);\n await sendResponse(response, clientAssetBuildErrorResponse(route.file, error));\n }\n })().catch(next);\n };\n}\n\nfunction isMreactClientSourceDependency(\n filename: string,\n normalizedSourceDirs: readonly string[],\n): boolean {\n const normalized = normalizePath(filename);\n\n return (\n /\\.(?:mreact\\.)?[cm]?[jt]sx?$/.test(normalized) &&\n !normalized.includes(\"/node_modules/\") &&\n normalizedSourceDirs.some(\n (directory) => normalized === directory || normalized.startsWith(`${directory}/`),\n )\n );\n}\n\nfunction isCompatSourcePath(filename: string): boolean {\n return /\\.compat(?:\\.mreact)?(?:\\.[cm]?[jt]sx?)?$/.test(filename);\n}\n\n/**\n * Alias for `createAppRouterVitePlugin()` used by Vite config files.\n */\nexport const mreactRouter = createAppRouterVitePlugin;\n\nfunction routeTransformUserVitePlugins(\n pluginOptions: readonly PluginOption[] | undefined,\n): PluginOption[] {\n const plugins: PluginOption[] = [];\n const visit = (option: PluginOption | null | false | undefined): void => {\n if (option === false || option === null || option === undefined) {\n return;\n }\n\n if (Array.isArray(option)) {\n for (const child of option) {\n visit(child);\n }\n return;\n }\n\n if (typeof option === \"object\" && \"then\" in option) {\n return;\n }\n\n if (typeof option === \"object\" && mreactRouterConfigKey in option) {\n return;\n }\n\n plugins.push(option);\n };\n\n for (const option of pluginOptions ?? []) {\n visit(option);\n }\n\n return plugins;\n}\n\n/**\n * Reads resolved app-router project config from a Vite plugin list.\n */\nexport function mreactRouterConfigFromPlugins(\n plugins: readonly unknown[],\n): ResolvedAppRouterProject | undefined {\n for (const plugin of plugins.flat(Infinity)) {\n if (plugin !== null && typeof plugin === \"object\" && mreactRouterConfigKey in plugin) {\n const config = (plugin as MreactRouterPlugin)[mreactRouterConfigKey];\n\n if (\"project\" in config) {\n return (config as unknown as { project: ResolvedAppRouterProject }).project;\n }\n\n return config as unknown as ResolvedAppRouterProject;\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates Connect middleware that renders app-router requests during Vite development.\n */\nexport function createAppRouterViteMiddleware(\n options: AppRouterViteMiddlewareOptions,\n): Connect.NextHandleFunction {\n // Reused across requests so dev navigation-script detection memoizes module\n // contexts/analyses instead of re-walking every route's import graph per\n // request. The source-keyed caches keep only the latest content version per\n // file (see setLatestModuleCacheEntry), so repeated edits do not accumulate\n // stale entries over a long dev session.\n const runtimeOptions: AppRouterViteRuntimeMiddlewareOptions = {\n ...options,\n clientRouteInferenceCache: createClientRouteInferenceCache(),\n };\n\n return (request, response, next) => {\n void handleAppRouterViteRequest(runtimeOptions, request, response, next);\n };\n}\n\nasync function handleAppRouterViteRequest(\n options: AppRouterViteRuntimeMiddlewareOptions,\n incoming: Connect.IncomingMessage,\n outgoing: ServerResponse,\n next: Connect.NextFunction,\n): Promise<void> {\n try {\n const project = resolveAppRouterProjectOptions(options);\n const host = resolveRequestHost({\n allowedHosts: options.allowedHosts,\n fallbackHost: \"localhost\",\n hostPolicy: options.hostPolicy,\n rawHost: incoming.headers.host,\n });\n const origin = `http://${host}`;\n const url = new URL(incoming.url ?? \"/\", origin);\n\n if (url.pathname.startsWith(clientPrefix)) {\n if (options.viteDevServer !== undefined) {\n const transformed = await options.viteDevServer.transformRequest(\n `${url.pathname}${url.search}`,\n );\n\n if (transformed !== null) {\n await sendResponse(\n outgoing,\n new Response(transformed.code, {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n }),\n );\n return;\n }\n }\n\n await sendResponse(\n outgoing,\n await renderAppRouterClientAsset(project.routesDir, url.pathname, {\n vitePlugins: options.vitePlugins,\n }),\n );\n return;\n }\n\n const request = nodeRequestToWebRequest(incoming, origin, outgoing);\n const dehydrateOptions = await resolveDevDehydrateOptions(project, options);\n const routeTransformPlugins = options.navigationScanVitePlugins ?? options.vitePlugins;\n const routes = await scanAppRoutes({ appDir: project.routesDir });\n const routeMatcher = createRouteMatcher(routes);\n const readRouteSource = createCachedRouteSourceReader();\n const [clientStyles, clientStylesByFile, navigationScripts] = await Promise.all([\n devRouteStyles(project, routes, readRouteSource),\n devSpecialRouteStyles(project, readRouteSource),\n devNavigationScripts(\n project.routesDir,\n routes,\n readRouteSource,\n options.clientRouteInferenceCache,\n routeTransformPlugins,\n ),\n ]);\n\n await sendResponse(\n outgoing,\n await renderAppRequest({\n appDir: project.routesDir,\n dehydrateOptions,\n define: options.define,\n dev: true,\n importPolicy: {\n ...options.importPolicy,\n allowedSourceDirs: project.allowedSourceDirs,\n projectRoot: project.projectRoot,\n },\n clientStyles,\n clientStylesByFile,\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n navigationScripts,\n onRenderError(error) {\n sendViteErrorOverlay(options.viteDevServer, error);\n },\n request,\n logger: options.logger,\n routeCache: options.routeCache,\n routeMatcher,\n routes,\n serverActions: options.serverActions,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion?.(),\n vitePlugins: routeTransformPlugins,\n }),\n );\n } catch (error) {\n sendViteErrorOverlay(options.viteDevServer, error);\n next(error);\n }\n}\n\nasync function resolveDevDehydrateOptions(\n project: ResolvedAppRouterProject,\n options: AppRouterViteRuntimeMiddlewareOptions,\n): Promise<DehydrateOptions | undefined> {\n if (options.dehydrateOptions !== undefined) {\n return options.dehydrateOptions;\n }\n if (project.dehydratePolicyModule === undefined) {\n return undefined;\n }\n if (options.viteDevServer === undefined) {\n throw new Error(\"dehydratePolicyModule requires a Vite dev server module runner.\");\n }\n\n const policyModule = await options.viteDevServer.ssrLoadModule(\n normalizePath(project.dehydratePolicyModule),\n );\n return dehydrateOptionsFromModule(\n policyModule,\n `mreactRouter dehydratePolicyModule ${project.dehydratePolicyModule}`,\n );\n}\n\nfunction sendViteErrorOverlay(server: ViteDevServer | undefined, error: unknown): void {\n if (server === undefined) {\n return;\n }\n\n if (error instanceof Error) {\n server.ssrFixStacktrace(error);\n }\n server.ws.send({\n type: \"error\",\n err: viteErrorPayload(error),\n });\n}\n\nfunction viteErrorPayload(error: unknown): { message: string; stack: string } {\n if (error instanceof Error) {\n return {\n message: error.message,\n stack: error.stack ?? error.message,\n };\n }\n\n const message = String(error);\n return { message, stack: message };\n}\n\n/**\n * Renders a development client asset generated by the app-router Vite integration.\n */\nexport async function renderAppRouterClientAsset(\n appDir: string,\n pathname: string,\n options: { dev?: boolean; vitePlugins?: readonly PluginOption[] | undefined } = {},\n): Promise<Response> {\n if (pathname === `/_mreact/client/${navigationRuntimeScriptForDev()}`) {\n const output = await buildNavigationRuntimeBundle();\n\n return new Response(options.dev === true ? withViteHmrRuntime(output.code) : output.code, {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n });\n }\n\n const routes = await scanAppRoutes({ appDir });\n const route = routes.find(\n (candidate) =>\n candidate.kind === \"page\" &&\n `/_mreact/client/${clientScriptForPath(candidate.path)}` === pathname,\n );\n\n if (route === undefined || route.kind !== \"page\") {\n return new Response(\"Not Found\", { status: 404 });\n }\n\n const code = await readFile(route.file, \"utf8\");\n const clientSource = stripRouteClientOnlyExports(code, route.file);\n let references: Awaited<ReturnType<typeof collectClientRouteReferences>>;\n\n try {\n references = await collectClientRouteReferences({\n appDir,\n code: clientSource,\n filename: route.file,\n vitePlugins: options.vitePlugins,\n });\n } catch (error) {\n return clientAssetBuildErrorResponse(route.file, error);\n }\n\n if (!references.client) {\n if (isClientRouteSource(clientSource)) {\n return clientAssetBuildErrorResponse(\n route.file,\n new Error(\n [\n \"Client route analysis did not produce a client asset.\",\n \"Browser build cannot import Node builtins or other server-only modules.\",\n ...references.diagnostics.map((diagnostic) => diagnostic.message),\n ].join(\"\\n\"),\n ),\n );\n }\n\n return new Response(\"Not Found\", { status: 404 });\n }\n\n let bundle: string;\n\n try {\n const navigation = await resolveNavigationRuntime({\n appDir,\n code,\n filename: route.file,\n references,\n vitePlugins: options.vitePlugins,\n });\n bundle = await buildClientRouteBundle({\n code: clientSource,\n clientBoundaryImports: references.clientBoundaryImports,\n clientReferenceImports: references.clientReferenceImports,\n clientReferenceManifest: references.clientReferenceManifest,\n clientNavigation: navigation || detectAnchorElementUsage(clientSource, route.file),\n filename: route.file,\n routeMayUseOutOfOrderFragments: true,\n routePath: route.path,\n vitePlugins: options.vitePlugins,\n });\n } catch (error) {\n return clientAssetBuildErrorResponse(route.file, error);\n }\n\n return new Response(options.dev === true ? withViteHmrRuntime(bundle) : bundle, {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n });\n}\n\nasync function renderAppRouterClientRouteDevModule(\n appDir: string,\n pathname: string,\n options: { vitePlugins?: readonly PluginOption[] | undefined } = {},\n): Promise<string> {\n const route = await clientRouteForRequestPath(appDir, pathname);\n\n if (route === undefined) {\n throw new Error(`MReact client route asset was not found: ${pathname}`);\n }\n\n const code = await readFile(route.file, \"utf8\");\n const clientSource = stripRouteClientOnlyExports(code, route.file);\n const references = await collectClientRouteReferences({\n appDir,\n code: clientSource,\n filename: route.file,\n vitePlugins: options.vitePlugins,\n });\n\n if (!references.client) {\n throw new Error(\n isClientRouteSource(clientSource)\n ? [\n \"Client route analysis did not produce a client asset.\",\n \"Browser build cannot import Node builtins or other server-only modules.\",\n ...references.diagnostics.map((diagnostic) => diagnostic.message),\n ].join(\"\\n\")\n : `MReact client route asset was not found: ${pathname}`,\n );\n }\n\n const navigation = await resolveNavigationRuntime({\n appDir,\n code,\n filename: route.file,\n references,\n vitePlugins: options.vitePlugins,\n });\n const entry = await buildClientRouteEntrySource({\n code: clientSource,\n clientBoundaryImports: references.clientBoundaryImports,\n clientReferenceImports: references.clientReferenceImports,\n clientReferenceManifest: references.clientReferenceManifest,\n clientNavigation: navigation || detectAnchorElementUsage(clientSource, route.file),\n debugLabels: true,\n filename: route.file,\n routeMayUseOutOfOrderFragments: true,\n routePath: route.path,\n vitePlugins: options.vitePlugins,\n });\n\n return withViteHmrRuntime(entry.code);\n}\n\nasync function clientRouteForRequestPath(appDir: string, pathname: string) {\n const routes = await scanAppRoutes({ appDir });\n\n return routes.find(\n (candidate) =>\n candidate.kind === \"page\" &&\n `/_mreact/client/${clientScriptForPath(candidate.path)}` === pathname,\n );\n}\n\nfunction clientRequestPath(id: string): string {\n const [path] = id.split(/[?#]/, 1);\n\n return path ?? id;\n}\n\nfunction clientRouteModuleId(filename: string, requestPath: string): string {\n return `${normalizePath(filename)}?${clientRouteModuleQuery}=${encodeURIComponent(requestPath)}`;\n}\n\nfunction clientRouteModuleRequestPath(id: string): string | undefined {\n const queryStart = id.indexOf(\"?\");\n\n if (queryStart === -1) {\n return undefined;\n }\n\n const params = new URLSearchParams(id.slice(queryStart + 1));\n const value = params.get(clientRouteModuleQuery);\n\n return value === null ? undefined : value;\n}\n\nfunction isMreactClientDevModuleId(id: string | null | undefined): boolean {\n return (\n id?.startsWith(virtualClientPrefix) === true ||\n id?.includes(`?${clientRouteModuleQuery}=`) === true ||\n id?.includes(`&${clientRouteModuleQuery}=`) === true\n );\n}\n\nfunction isDevCssSourceModuleId(id: string): boolean {\n return new URLSearchParams(id.slice(id.indexOf(\"?\") + 1)).has(devCssSourceQuery);\n}\n\nfunction devCssSourceRequestFile(id: string, projectRoot: string): string | undefined {\n if (!new URLSearchParams(id.slice(id.indexOf(\"?\") + 1)).has(devCssSourceQuery)) {\n return undefined;\n }\n\n const requestPath = clientRequestPath(id);\n if (requestPath.startsWith(\"/@fs/\")) {\n return `/${requestPath.slice(\"/@fs/\".length)}`;\n }\n if (isAbsolute(requestPath) && isPathInsideDirectory(projectRoot, requestPath)) {\n return requestPath;\n }\n\n return resolve(projectRoot, `.${requestPath.startsWith(\"/\") ? requestPath : `/${requestPath}`}`);\n}\n\nasync function loadDevCssSourceModule(options: {\n allowedRoot: Promise<string | undefined>;\n cssFile: string;\n sourceDirs: readonly string[];\n viteConfig: Promise<DevCssViteFileSystemConfigs> | undefined;\n}): Promise<string | undefined> {\n const refusal = () => new Error(\"Dev CSS source is outside the configured project roots.\");\n\n if (options.cssFile.includes(\"\\0\")) {\n throw refusal();\n }\n\n let allowedRoot: string | undefined;\n let cssFile: string;\n let viteConfig: DevCssViteFileSystemConfigs | undefined;\n try {\n [allowedRoot, cssFile, viteConfig] = await Promise.all([\n options.allowedRoot,\n realpath(options.cssFile),\n options.viteConfig,\n ]);\n } catch {\n throw refusal();\n }\n\n if (\n allowedRoot === undefined ||\n !isPathInsideDirectory(allowedRoot, cssFile) ||\n (viteConfig !== undefined &&\n (!isFileLoadingAllowed(viteConfig.logical, normalizePath(options.cssFile)) ||\n !isFileLoadingAllowed(viteConfig.canonical, normalizePath(cssFile))))\n ) {\n throw refusal();\n }\n\n let code: string;\n try {\n code = await readFile(cssFile, \"utf8\");\n } catch {\n throw refusal();\n }\n\n return prependTailwindSourceDirectives({\n code,\n cssFile,\n sourceDirs: options.sourceDirs,\n });\n}\n\nasync function resolveCanonicalDevCssSourceRoot(directory: string): Promise<string | undefined> {\n try {\n return await realpath(directory);\n } catch {\n return undefined;\n }\n}\n\nasync function resolveDevCssViteFileSystemConfigs(\n config: ResolvedConfig,\n): Promise<DevCssViteFileSystemConfigs> {\n const allow = await Promise.all(\n config.server.fs.allow.map(async (directory) => {\n try {\n return normalizePath(await realpath(directory));\n } catch {\n return normalizePath(directory);\n }\n }),\n );\n\n return {\n canonical: {\n ...config,\n server: {\n ...config.server,\n fs: {\n ...config.server.fs,\n allow,\n },\n },\n },\n logical: config,\n };\n}\n\nfunction isPathInsideDirectory(directory: string, candidate: string): boolean {\n const relativePath = relative(directory, candidate);\n return (\n relativePath === \"\" ||\n (relativePath !== \"..\" && !relativePath.startsWith(`..${sep}`) && !isAbsolute(relativePath))\n );\n}\n\nfunction importerInRuntimePackage(\n importer: string | undefined,\n directories: readonly string[],\n packageNames: readonly string[],\n): boolean {\n if (importer === undefined) {\n return false;\n }\n\n const normalizedImporter = normalizePath(importer);\n return (\n directories.some((directory) => normalizedImporter.startsWith(`${directory}/`)) ||\n packageNames.some((packageName) => normalizedImporter.includes(`/node_modules/${packageName}/`))\n );\n}\n\nfunction clientAssetBuildErrorResponse(filename: string, error: unknown): Response {\n const message = [\n `Failed to build mreact client route asset for ${filename}.`,\n error instanceof Error ? error.message : String(error),\n ].join(\"\\n\");\n\n return new Response(`throw new Error(${JSON.stringify(message)});\\n`, {\n status: 500,\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n });\n}\n\nasync function devRouteStyles(\n project: ResolvedAppRouterProject,\n routes: readonly AppRoute[],\n readSource: (file: string) => Promise<string | undefined>,\n): Promise<ReadonlyMap<string, readonly string[]>> {\n const entries = await Promise.all(\n routes.map(async (route) => {\n if (route.kind !== \"page\") {\n return undefined;\n }\n\n const hrefs = await collectRouteCssHrefs({\n appDir: project.routesDir,\n hrefPrefix: devCssPrefix,\n pageFile: route.file,\n projectRoot: project.projectRoot,\n readSource,\n });\n\n return hrefs.length === 0 ? undefined : ([route.path, hrefs as readonly string[]] as const);\n }),\n );\n const routeStyles = entries.filter(\n (entry): entry is readonly [string, readonly string[]] => entry !== undefined,\n );\n\n return new Map<string, readonly string[]>(routeStyles);\n}\n\nasync function devSpecialRouteStyles(\n project: ResolvedAppRouterProject,\n readSource: (file: string) => Promise<string | undefined>,\n): Promise<ReadonlyMap<string, readonly string[]>> {\n const entries = await Promise.all(\n (await collectSpecialBoundaryFiles(project.routesDir)).map(async (file) => {\n const hrefs = await collectRouteCssHrefs({\n appDir: project.routesDir,\n hrefPrefix: devCssPrefix,\n pageFile: file,\n projectRoot: project.projectRoot,\n readSource,\n });\n\n return hrefs.length === 0 ? undefined : ([file, hrefs as readonly string[]] as const);\n }),\n );\n const routeStyles = entries.filter(\n (entry): entry is readonly [string, readonly string[]] => entry !== undefined,\n );\n\n return new Map<string, readonly string[]>(routeStyles);\n}\n\nasync function devNavigationScripts(\n appDir: string,\n routes: readonly AppRoute[],\n readSource: (file: string) => Promise<string | undefined>,\n inferenceCache?: ClientRouteInferenceCache | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n): Promise<ReadonlyMap<string, string>> {\n const cache = inferenceCache ?? createClientRouteInferenceCache();\n const entries = await Promise.all(\n routes.map(async (route) => {\n if (route.kind !== \"page\") {\n return undefined;\n }\n\n const source = await readSource(route.file);\n if (source === undefined) {\n return undefined;\n }\n const references = await collectClientRouteReferences({\n appDir,\n cache,\n code: source,\n filename: route.file,\n routePath: route.path,\n vitePlugins,\n });\n const navigation = await resolveNavigationRuntime({\n appDir,\n cache,\n code: source,\n filename: route.file,\n references,\n vitePlugins,\n });\n\n for (const diagnostic of references.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n const navigationRuntimeDiagnostic = navigationRuntimeLinkDisabledDiagnostic({\n filename: route.file,\n references,\n routePath: route.path,\n source,\n });\n\n if (navigationRuntimeDiagnostic !== undefined) {\n console.warn(formatClientRouteInferenceDiagnostic(navigationRuntimeDiagnostic));\n }\n\n return navigation ? ([route.path, navigationRuntimeScriptForDev()] as const) : undefined;\n }),\n );\n\n return new Map(\n entries.filter((entry): entry is readonly [string, string] => entry !== undefined),\n );\n}\n\nfunction createDevCssProxyMiddleware(): Connect.NextHandleFunction {\n return (incoming, outgoing, next) => {\n const originalUrl = incoming.url ?? \"/\";\n const url = new URL(originalUrl, \"http://mreact.local\");\n\n if (!url.pathname.startsWith(devCssPrefix)) {\n next();\n return;\n }\n\n const sourcePath = `/${url.pathname.slice(devCssPrefix.length)}`;\n\n if (sourcePath === \"/\" || sourcePath.includes(\"\\0\")) {\n next();\n return;\n }\n\n const originalAccept = incoming.headers.accept;\n let restored = false;\n const restore = () => {\n if (restored) {\n return;\n }\n restored = true;\n incoming.url = originalUrl;\n if (originalAccept === undefined) {\n delete incoming.headers.accept;\n } else {\n incoming.headers.accept = originalAccept;\n }\n };\n\n const sourceSearch = new URLSearchParams(url.search);\n sourceSearch.set(devCssSourceQuery, \"\");\n incoming.url = `${sourcePath}?${sourceSearch.toString()}`;\n incoming.headers.accept = \"text/css,*/*;q=0.1\";\n outgoing.once(\"finish\", restore);\n outgoing.once(\"close\", restore);\n next();\n };\n}\n\nfunction withViteHmrRuntime(code: string): string {\n return `import \"/@vite/client\";\nif (import.meta.hot?.data.__mreactRouteStates) {\n globalThis.__mreactRouteStates = import.meta.hot.data.__mreactRouteStates;\n}\n${code}\nif (import.meta.hot) {\n const __mreactPreserveRouteState = () => {\n import.meta.hot.data.__mreactRouteStates = globalThis.__mreactRouteStates;\n };\n import.meta.hot.dispose(__mreactPreserveRouteState);\n import.meta.hot.accept((module) => {\n module?.__mreactHydrateRoute?.();\n });\n}\n`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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","sourcesContent":["import { readFile, realpath } from \"node:fs/promises\";\nimport type { ServerResponse } from \"node:http\";\nimport { dirname, isAbsolute, relative, resolve, sep } from \"node:path\";\nimport { formatDiagnostic } from \"@reckona/mreact-compiler\";\nimport type { DehydrateOptions } from \"@reckona/mreact-query\";\nimport {\n createCompilerModuleContext,\n transformCompilerModuleContext,\n} from \"@reckona/mreact-compiler/internal\";\nimport {\n isFileLoadingAllowed,\n normalizePath,\n type Connect,\n type Plugin,\n type PluginOption,\n type ResolvedConfig,\n type UserConfig,\n type ViteDevServer,\n} from \"vite\";\nimport type { AppRouterServerActionOptions } from \"./actions.js\";\nimport type { AppRouterCache } from \"./cache.js\";\nimport { reactiveDevtoolsStubSource } from \"./reactive-devtools-stub.js\";\nimport {\n resolveAppRouterProjectOptions,\n type AppRouterProjectOptions,\n type ResolvedAppRouterProject,\n} from \"./config.js\";\nexport type { AppRouterExecutionContracts } from \"./config.js\";\nimport type { AppRouterImportPolicy } from \"./import-policy.js\";\nimport { dehydrateOptionsFromModule } from \"./dehydrate-policy.js\";\nimport {\n collectClientRouteReferences,\n createClientRouteInferenceCache,\n detectAnchorElementUsage,\n formatClientRouteInferenceDiagnostic,\n isClientRouteSource,\n navigationRuntimeLinkDisabledDiagnostic,\n resolveNavigationRuntime,\n type ClientRouteInferenceCache,\n} from \"./client-route-inference.js\";\nimport {\n buildNavigationRuntimeBundle,\n buildClientRouteBundle,\n buildClientRouteEntrySource,\n clientScriptForPath,\n navigationRuntimeScriptForDev,\n} from \"./navigation-runtime.js\";\nimport { nodeRequestToWebRequest, sendResponse } from \"./http.js\";\nimport type { AppRouterLogger } from \"./logger.js\";\nimport { renderAppRequest } from \"./render.js\";\nimport { stripRouteClientOnlyExports } from \"./route-source.js\";\nimport {\n collectRouteCssHrefs,\n collectSpecialBoundaryFiles,\n createCachedRouteSourceReader,\n} from \"./route-styles.js\";\nimport { createRouteMatcher, scanAppRoutes, type AppRoute } from \"./routes.js\";\nimport { resolveRequestHost, type RequestHostPolicy } from \"./serve.js\";\nimport { hasJsxSyntax } from \"./source-jsx.js\";\nimport { prependTailwindSourceDirectives } from \"./tailwind-source.js\";\nimport { workspacePackageFile } from \"./workspace-packages.js\";\n\nexport type { AppRouterAllowedServerAction, AppRouterServerActionOptions } from \"./actions.js\";\nexport type { AppRouterCache, AppRouterCacheEntry } from \"./cache.js\";\nexport type {\n AppRouterBuildTarget,\n AppRouterClientConsoleMethod,\n AppRouterClientSourceMapMode,\n AppRouterClientSourceMapOption,\n AppRouterProductionOptions,\n AppRouterProjectOptions,\n ResolvedAppRouterProject,\n} from \"./config.js\";\nexport type { AppRouterImportPolicy } from \"./import-policy.js\";\nexport type {\n AppRouterCspInlineNonceWarningLogEvent,\n AppRouterLogError,\n AppRouterLogEvent,\n AppRouterLogger,\n AppRouterRuntime,\n AppRouterRenderTimingLogEvent,\n AppRouterRequestEndLogEvent,\n AppRouterRequestErrorLogEvent,\n AppRouterRequestStartLogEvent,\n AppRouterRequestTimingLogEvent,\n AppRouterUpgradeErrorLogEvent,\n AppRouterUpgradeRejectedLogEvent,\n} from \"./logger.js\";\nexport type { RequestHostPolicy } from \"./serve.js\";\n\n/**\n * Configures the app-router Vite middleware used by development servers.\n */\nexport interface AppRouterViteMiddlewareOptions extends AppRouterProjectOptions {\n allowedHosts?: readonly string[] | undefined;\n dehydrateOptions?: DehydrateOptions | undefined;\n define?: UserConfig[\"define\"] | undefined;\n hostPolicy?: RequestHostPolicy | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n logger?: AppRouterLogger | undefined;\n routeCache?: AppRouterCache | undefined;\n serverActions?: AppRouterServerActionOptions | undefined;\n vitePlugins?: readonly PluginOption[] | undefined;\n}\n\ntype AppRouterViteRuntimeMiddlewareOptions = AppRouterViteMiddlewareOptions & {\n clientRouteInferenceCache?: ClientRouteInferenceCache | undefined;\n devServerModuleCacheVersion?: (() => string | undefined) | undefined;\n navigationScanVitePlugins?: readonly PluginOption[] | undefined;\n viteDevServer?: ViteDevServer | undefined;\n};\n\n/**\n * Configures the app-router Vite plugin.\n */\nexport interface AppRouterVitePluginOptions extends AppRouterProjectOptions {\n allowedHosts?: readonly string[] | undefined;\n dehydrateOptions?: DehydrateOptions | undefined;\n hostPolicy?: RequestHostPolicy | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n logger?: AppRouterLogger | undefined;\n routeCache?: AppRouterCache | undefined;\n serverActions?: AppRouterServerActionOptions | undefined;\n}\n\nconst clientPrefix = \"/_mreact/client/\";\nconst devCssPrefix = \"/_mreact/dev-css/\";\nconst devCssSourceQuery = \"mreact-router-dev-css-source\";\nconst clientRouteModuleQuery = \"mreact-router-client-route\";\nconst virtualClientPrefix = \"\\0mreact-router-client:\";\nconst virtualReactiveCoreId = \"\\0mreact-router-reactive-core\";\nconst virtualReactiveDevtoolsId = \"\\0mreact-router-reactive-devtools\";\nconst mreactRouterConfigKey = \"__mreactRouterConfig\";\n\ntype MreactRouterPluginConfig = ResolvedAppRouterProject & {\n dehydrateOptions?: DehydrateOptions | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n};\n\ntype MreactRouterPlugin = Plugin & {\n [mreactRouterConfigKey]: MreactRouterPluginConfig;\n};\n\ninterface DevCssViteFileSystemConfigs {\n canonical: ResolvedConfig;\n logical: ResolvedConfig;\n}\n\n/**\n * Creates the app-router Vite plugin for route compilation and development middleware.\n */\nexport function createAppRouterVitePlugin(options: AppRouterVitePluginOptions): Plugin {\n const project = resolveAppRouterProjectOptions(options);\n const normalizedSourceDirs = project.allowedSourceDirs.map((directory) =>\n normalizePath(directory),\n );\n const canonicalDevCssSourceRoot = resolveCanonicalDevCssSourceRoot(project.projectRoot);\n const packageFile = (monorepoDir: string, packageName: string, entry: string): string =>\n workspacePackageFile({\n currentFileUrl: import.meta.url,\n entry,\n monorepoDir,\n packageName,\n });\n const reactiveCorePath = packageFile(\"reactive-core\", \"@reckona/mreact-reactive-core\", \"index\");\n const reactiveCoreDir = normalizePath(dirname(reactiveCorePath));\n const reactiveDomPath = packageFile(\"reactive-dom\", \"@reckona/mreact-reactive-dom\", \"index\");\n const reactiveDomDir = normalizePath(dirname(reactiveDomPath));\n const reactPath = packageFile(\"react\", \"@reckona/mreact\", \"index\");\n const reactDir = normalizePath(dirname(reactPath));\n const reactCompatPath = packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"index\");\n const reactCompatDir = normalizePath(dirname(reactCompatPath));\n const runtimePackageDirs = [reactiveCoreDir, reactiveDomDir, reactDir, reactCompatDir];\n const runtimePackageNames = [\n \"@reckona/mreact\",\n \"@reckona/mreact-reactive-core\",\n \"@reckona/mreact-reactive-dom\",\n \"@reckona/mreact-compat\",\n ];\n const runtimePaths = new Map([\n [\"react\", reactCompatPath],\n [\"react-dom\", reactCompatPath],\n [\"react-dom/client\", reactCompatPath],\n [\"react-dom/server\", reactCompatPath],\n [\n \"react/jsx-dev-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-dev-runtime\"),\n ],\n [\"react/jsx-runtime\", packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-runtime\")],\n [\"@reckona/mreact\", reactPath],\n [\n \"@reckona/mreact-reactive-core/internal\",\n packageFile(\"reactive-core\", \"@reckona/mreact-reactive-core\", \"internal\"),\n ],\n [\"@reckona/mreact-reactive-dom\", reactiveDomPath],\n [\n \"@reckona/mreact-reactive-dom/internal\",\n packageFile(\"reactive-dom\", \"@reckona/mreact-reactive-dom\", \"internal\"),\n ],\n [\"@reckona/mreact-compat\", reactCompatPath],\n [\n \"@reckona/mreact-compat/event-priority\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"event-priority\"),\n ],\n [\n \"@reckona/mreact-compat/flight\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"flight\"),\n ],\n [\n \"@reckona/mreact-compat/hooks\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"hooks-entry\"),\n ],\n [\n \"@reckona/mreact-compat/internal\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"internal\"),\n ],\n [\n \"@reckona/mreact-compat/jsx-dev-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-dev-runtime\"),\n ],\n [\n \"@reckona/mreact-compat/jsx-runtime\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"jsx-runtime\"),\n ],\n [\n \"@reckona/mreact-compat/scheduler\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"scheduler\"),\n ],\n [\n \"@reckona/mreact-compat/server\",\n packageFile(\"react-compat\", \"@reckona/mreact-compat\", \"server\"),\n ],\n [\"@reckona/mreact-router/link\", packageFile(\"router\", \"@reckona/mreact-router\", \"link\")],\n [\n \"@reckona/mreact-router/navigation-state\",\n packageFile(\"router\", \"@reckona/mreact-router\", \"navigation-state\"),\n ],\n [\n \"@reckona/mreact-shared/url-safety\",\n packageFile(\"shared\", \"@reckona/mreact-shared\", \"url-safety\"),\n ],\n [\n \"@reckona/mreact-shared/server-render-value-internal\",\n packageFile(\"shared\", \"@reckona/mreact-shared\", \"server-render-value-internal\"),\n ],\n ]);\n\n // User-declared plugins captured from the resolving config. Unlike the fully\n // resolved `server.config.plugins`, this excludes Vite internals (e.g. the\n // built-in CSS plugin) whose `transform` requires a dev-server environment the\n // lightweight navigation scan cannot provide. Mirrors what the build forwards.\n let userVitePlugins: readonly PluginOption[] | undefined;\n let resolvedViteConfig: Promise<DevCssViteFileSystemConfigs> | undefined;\n let devServerModuleCacheVersion = 0;\n\n const plugin: MreactRouterPlugin = {\n [mreactRouterConfigKey]: {\n ...project,\n ...(options.dehydrateOptions === undefined\n ? {}\n : { dehydrateOptions: options.dehydrateOptions }),\n ...(options.importPolicy === undefined ? {} : { importPolicy: options.importPolicy }),\n },\n enforce: \"pre\",\n name: \"mreact-router\",\n config(userConfig) {\n userVitePlugins = routeTransformUserVitePlugins(userConfig.plugins);\n\n return {\n optimizeDeps: {\n // Every client-importable mreact package must resolve through the\n // same dev module graph. Prebundling any of them inlines a second\n // reactive-core (and devtools) copy into the deps chunk, which\n // silently breaks cross-package cell tracking, and also bypasses the\n // react/react-dom alias resolution this plugin provides.\n exclude: [\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react-dom/server\",\n \"react/jsx-dev-runtime\",\n \"react/jsx-runtime\",\n \"@reckona/mreact\",\n \"@reckona/mreact-auth\",\n \"@reckona/mreact-compat\",\n \"@reckona/mreact-devtools\",\n \"@reckona/mreact-dom\",\n \"@reckona/mreact-forms\",\n \"@reckona/mreact-next\",\n \"@reckona/mreact-query\",\n \"@reckona/mreact-reactive-core\",\n \"@reckona/mreact-reactive-dom\",\n \"@reckona/mreact-router\",\n \"@reckona/mreact-scheduler\",\n \"@reckona/mreact-shared\",\n \"@reckona/mreact-store\",\n \"@reckona/mreact-test-utils\",\n \"@reckona/mreact-virtual\",\n ],\n },\n };\n },\n configResolved(config) {\n resolvedViteConfig = resolveDevCssViteFileSystemConfigs(config);\n },\n configureServer(server) {\n server.middlewares.use(createDevCssProxyMiddleware());\n server.middlewares.use(createClientRouteTransformMiddleware(project.routesDir, server));\n\n return () => {\n const middlewareOptions: AppRouterViteRuntimeMiddlewareOptions = {\n ...options,\n define: server.config.define,\n devServerModuleCacheVersion: () => `dev:${devServerModuleCacheVersion}`,\n navigationScanVitePlugins: userVitePlugins ?? [],\n viteDevServer: server,\n vitePlugins: server.config.plugins,\n };\n\n server.middlewares.use(createAppRouterViteMiddleware(middlewareOptions));\n };\n },\n handleHotUpdate(context) {\n const normalizedFile = normalizePath(context.file);\n\n if (!normalizedSourceDirs.some((directory) => normalizedFile.startsWith(directory))) {\n return;\n }\n\n devServerModuleCacheVersion += 1;\n const timestamp = Date.now();\n const hotModules =\n context.modules.length > 0\n ? context.modules\n : Array.from(context.server.moduleGraph.idToModuleMap.values());\n const updates = hotModules\n .filter((moduleNode) => isMreactClientDevModuleId(moduleNode.id))\n .map((moduleNode) => {\n context.server.moduleGraph.invalidateModule(moduleNode);\n\n return {\n acceptedPath: moduleNode.url,\n path: moduleNode.url,\n timestamp,\n type: \"js-update\" as const,\n };\n });\n\n if (updates.length > 0) {\n context.server.ws.send({ type: \"update\", updates });\n }\n\n return [];\n },\n load(id) {\n if (isDevCssSourceModuleId(id)) {\n return loadDevCssSourceModule({\n allowedRoot: canonicalDevCssSourceRoot,\n cssFile: clientRequestPath(id),\n sourceDirs: project.allowedSourceDirs,\n viteConfig: resolvedViteConfig,\n });\n }\n\n if (id === virtualReactiveCoreId) {\n return `import { cell as nativeCell } from ${JSON.stringify(reactiveCorePath)};\nexport * from ${JSON.stringify(reactiveCorePath)};\nexport function cell(initial) {\n const routeCell = globalThis.__mreactRouteCell;\n return typeof routeCell === \"function\" ? routeCell(nativeCell, initial) : nativeCell(initial);\n}`;\n }\n\n if (id === virtualReactiveDevtoolsId) {\n return reactiveDevtoolsStubSource;\n }\n\n if (id.startsWith(virtualClientPrefix)) {\n return renderAppRouterClientAsset(project.routesDir, id.slice(virtualClientPrefix.length), {\n dev: true,\n }).then(async (response) => {\n if (!response.ok) {\n const message = await response.text();\n throw new Error(message || `MReact client route asset was not found: ${id}`);\n }\n\n return response.text();\n });\n }\n\n const requestPath = clientRouteModuleRequestPath(id);\n\n return requestPath === undefined\n ? undefined\n : renderAppRouterClientRouteDevModule(project.routesDir, requestPath);\n },\n transform(code, id, options) {\n if (options?.ssr === true) {\n return undefined;\n }\n\n if (isMreactClientDevModuleId(id)) {\n return undefined;\n }\n\n const filename = clientRequestPath(id);\n\n if (!isMreactClientSourceDependency(filename, normalizedSourceDirs)) {\n return undefined;\n }\n\n const moduleContext = createCompilerModuleContext({ code, filename });\n\n if (!hasJsxSyntax(moduleContext.program)) {\n return undefined;\n }\n\n const output = transformCompilerModuleContext({\n code,\n dev: true,\n filename,\n mode: isCompatSourcePath(filename) ? \"compat\" : \"reactive\",\n moduleContext,\n target: \"client\",\n });\n\n if (output.diagnostics.length > 0) {\n throw new Error(\n output.diagnostics.map((diagnostic) => formatDiagnostic(filename, diagnostic)).join(\"\\n\"),\n );\n }\n\n return {\n code: output.code,\n map: null,\n };\n },\n async resolveId(id, importer) {\n const devCssFile = devCssSourceRequestFile(id, project.projectRoot);\n if (devCssFile !== undefined) {\n const queryStart = id.indexOf(\"?\");\n const query = queryStart === -1 ? \"\" : id.slice(queryStart);\n return `${normalizePath(devCssFile)}${query}`;\n }\n\n const runtimePath = runtimePaths.get(id);\n\n if (id === \"@reckona/mreact-reactive-core\") {\n if (importerInRuntimePackage(importer, runtimePackageDirs, runtimePackageNames)) {\n return reactiveCorePath;\n }\n\n return virtualReactiveCoreId;\n }\n\n if (\n id === \"./devtools.js\" &&\n importerInRuntimePackage(importer, [reactiveCoreDir], [\"@reckona/mreact-reactive-core\"])\n ) {\n return virtualReactiveDevtoolsId;\n }\n\n if (runtimePath !== undefined) {\n return runtimePath;\n }\n\n const requestPath = clientRequestPath(id);\n\n if (requestPath === `${clientPrefix}${navigationRuntimeScriptForDev()}`) {\n return `${virtualClientPrefix}${requestPath}`;\n }\n\n if (!requestPath.startsWith(clientPrefix)) {\n return undefined;\n }\n\n const route = await clientRouteForRequestPath(project.routesDir, requestPath);\n\n return route === undefined ? undefined : clientRouteModuleId(route.file, requestPath);\n },\n };\n\n return plugin;\n}\n\nfunction createClientRouteTransformMiddleware(\n appDir: string,\n server: ViteDevServer,\n): Connect.NextHandleFunction {\n return (request, response, next) => {\n void (async () => {\n const url = new URL(request.url ?? \"/\", \"http://localhost\");\n\n if (!url.pathname.startsWith(`${clientPrefix}routes/`)) {\n next();\n return;\n }\n\n const route = await clientRouteForRequestPath(appDir, url.pathname);\n\n if (route === undefined) {\n next();\n return;\n }\n\n try {\n const transformed = await server.transformRequest(`${url.pathname}${url.search}`);\n\n if (transformed === null) {\n next();\n return;\n }\n\n await sendResponse(\n response,\n new Response(transformed.code, {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n }),\n );\n } catch (error) {\n sendViteErrorOverlay(server, error);\n await sendResponse(response, clientAssetBuildErrorResponse(route.file, error));\n }\n })().catch(next);\n };\n}\n\nfunction isMreactClientSourceDependency(\n filename: string,\n normalizedSourceDirs: readonly string[],\n): boolean {\n const normalized = normalizePath(filename);\n\n return (\n /\\.(?:mreact\\.)?[cm]?[jt]sx?$/.test(normalized) &&\n !normalized.includes(\"/node_modules/\") &&\n normalizedSourceDirs.some(\n (directory) => normalized === directory || normalized.startsWith(`${directory}/`),\n )\n );\n}\n\nfunction isCompatSourcePath(filename: string): boolean {\n return /\\.compat(?:\\.mreact)?(?:\\.[cm]?[jt]sx?)?$/.test(filename);\n}\n\n/**\n * Alias for `createAppRouterVitePlugin()` used by Vite config files.\n */\nexport const mreactRouter = createAppRouterVitePlugin;\n\nfunction routeTransformUserVitePlugins(\n pluginOptions: readonly PluginOption[] | undefined,\n): PluginOption[] {\n const plugins: PluginOption[] = [];\n const visit = (option: PluginOption | null | false | undefined): void => {\n if (option === false || option === null || option === undefined) {\n return;\n }\n\n if (Array.isArray(option)) {\n for (const child of option) {\n visit(child);\n }\n return;\n }\n\n if (typeof option === \"object\" && \"then\" in option) {\n return;\n }\n\n if (typeof option === \"object\" && mreactRouterConfigKey in option) {\n return;\n }\n\n plugins.push(option);\n };\n\n for (const option of pluginOptions ?? []) {\n visit(option);\n }\n\n return plugins;\n}\n\n/**\n * Reads resolved app-router project config from a Vite plugin list.\n */\nexport function mreactRouterConfigFromPlugins(\n plugins: readonly unknown[],\n): ResolvedAppRouterProject | undefined {\n for (const plugin of plugins.flat(Infinity)) {\n if (plugin !== null && typeof plugin === \"object\" && mreactRouterConfigKey in plugin) {\n const config = (plugin as MreactRouterPlugin)[mreactRouterConfigKey];\n\n if (\"project\" in config) {\n return (config as unknown as { project: ResolvedAppRouterProject }).project;\n }\n\n return config as unknown as ResolvedAppRouterProject;\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates Connect middleware that renders app-router requests during Vite development.\n */\nexport function createAppRouterViteMiddleware(\n options: AppRouterViteMiddlewareOptions,\n): Connect.NextHandleFunction {\n // Reused across requests so dev navigation-script detection memoizes module\n // contexts/analyses instead of re-walking every route's import graph per\n // request. The source-keyed caches keep only the latest content version per\n // file (see setLatestModuleCacheEntry), so repeated edits do not accumulate\n // stale entries over a long dev session.\n const runtimeOptions: AppRouterViteRuntimeMiddlewareOptions = {\n ...options,\n clientRouteInferenceCache: createClientRouteInferenceCache(),\n };\n\n return (request, response, next) => {\n void handleAppRouterViteRequest(runtimeOptions, request, response, next);\n };\n}\n\nasync function handleAppRouterViteRequest(\n options: AppRouterViteRuntimeMiddlewareOptions,\n incoming: Connect.IncomingMessage,\n outgoing: ServerResponse,\n next: Connect.NextFunction,\n): Promise<void> {\n try {\n const project = resolveAppRouterProjectOptions(options);\n const host = resolveRequestHost({\n allowedHosts: options.allowedHosts,\n fallbackHost: \"localhost\",\n hostPolicy: options.hostPolicy,\n rawHost: incoming.headers.host,\n });\n const origin = `http://${host}`;\n const url = new URL(incoming.url ?? \"/\", origin);\n\n if (url.pathname.startsWith(clientPrefix)) {\n if (options.viteDevServer !== undefined) {\n const transformed = await options.viteDevServer.transformRequest(\n `${url.pathname}${url.search}`,\n );\n\n if (transformed !== null) {\n await sendResponse(\n outgoing,\n new Response(transformed.code, {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n }),\n );\n return;\n }\n }\n\n await sendResponse(\n outgoing,\n await renderAppRouterClientAsset(project.routesDir, url.pathname, {\n vitePlugins: options.vitePlugins,\n }),\n );\n return;\n }\n\n const request = nodeRequestToWebRequest(incoming, origin, outgoing);\n const dehydrateOptions = await resolveDevDehydrateOptions(project, options);\n const routeTransformPlugins = options.navigationScanVitePlugins ?? options.vitePlugins;\n const routes = await scanAppRoutes({ appDir: project.routesDir });\n const routeMatcher = createRouteMatcher(routes);\n const readRouteSource = createCachedRouteSourceReader();\n const [clientStyles, clientStylesByFile, navigationScripts] = await Promise.all([\n devRouteStyles(project, routes, readRouteSource),\n devSpecialRouteStyles(project, readRouteSource),\n devNavigationScripts(\n project.routesDir,\n routes,\n readRouteSource,\n options.clientRouteInferenceCache,\n routeTransformPlugins,\n ),\n ]);\n\n await sendResponse(\n outgoing,\n await renderAppRequest({\n appDir: project.routesDir,\n dehydrateOptions,\n define: options.define,\n dev: true,\n importPolicy: {\n ...options.importPolicy,\n allowedSourceDirs: project.allowedSourceDirs,\n projectRoot: project.projectRoot,\n },\n clientStyles,\n clientStylesByFile,\n clientRouteInferenceCache: options.clientRouteInferenceCache,\n navigationScripts,\n onRenderError(error) {\n sendViteErrorOverlay(options.viteDevServer, error);\n },\n request,\n logger: options.logger,\n routeCache: options.routeCache,\n routeMatcher,\n routes,\n serverActions: options.serverActions,\n devServerModuleCacheVersion: options.devServerModuleCacheVersion?.(),\n vitePlugins: routeTransformPlugins,\n }),\n );\n } catch (error) {\n sendViteErrorOverlay(options.viteDevServer, error);\n next(error);\n }\n}\n\nasync function resolveDevDehydrateOptions(\n project: ResolvedAppRouterProject,\n options: AppRouterViteRuntimeMiddlewareOptions,\n): Promise<DehydrateOptions | undefined> {\n if (options.dehydrateOptions !== undefined) {\n return options.dehydrateOptions;\n }\n if (project.dehydratePolicyModule === undefined) {\n return undefined;\n }\n if (options.viteDevServer === undefined) {\n throw new Error(\"dehydratePolicyModule requires a Vite dev server module runner.\");\n }\n\n const policyModule = await options.viteDevServer.ssrLoadModule(\n normalizePath(project.dehydratePolicyModule),\n );\n return dehydrateOptionsFromModule(\n policyModule,\n `mreactRouter dehydratePolicyModule ${project.dehydratePolicyModule}`,\n );\n}\n\nfunction sendViteErrorOverlay(server: ViteDevServer | undefined, error: unknown): void {\n if (server === undefined) {\n return;\n }\n\n if (error instanceof Error) {\n server.ssrFixStacktrace(error);\n }\n server.ws.send({\n type: \"error\",\n err: viteErrorPayload(error),\n });\n}\n\nfunction viteErrorPayload(error: unknown): { message: string; stack: string } {\n if (error instanceof Error) {\n return {\n message: error.message,\n stack: error.stack ?? error.message,\n };\n }\n\n const message = String(error);\n return { message, stack: message };\n}\n\n/**\n * Renders a development client asset generated by the app-router Vite integration.\n */\nexport async function renderAppRouterClientAsset(\n appDir: string,\n pathname: string,\n options: { dev?: boolean; vitePlugins?: readonly PluginOption[] | undefined } = {},\n): Promise<Response> {\n if (pathname === `/_mreact/client/${navigationRuntimeScriptForDev()}`) {\n const output = await buildNavigationRuntimeBundle();\n\n return new Response(options.dev === true ? withViteHmrRuntime(output.code) : output.code, {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n });\n }\n\n const routes = await scanAppRoutes({ appDir });\n const route = routes.find(\n (candidate) =>\n candidate.kind === \"page\" &&\n `/_mreact/client/${clientScriptForPath(candidate.path)}` === pathname,\n );\n\n if (route === undefined || route.kind !== \"page\") {\n return new Response(\"Not Found\", { status: 404 });\n }\n\n const code = await readFile(route.file, \"utf8\");\n const clientSource = stripRouteClientOnlyExports(code, route.file);\n let references: Awaited<ReturnType<typeof collectClientRouteReferences>>;\n\n try {\n references = await collectClientRouteReferences({\n appDir,\n code: clientSource,\n filename: route.file,\n vitePlugins: options.vitePlugins,\n });\n } catch (error) {\n return clientAssetBuildErrorResponse(route.file, error);\n }\n\n if (!references.client) {\n if (isClientRouteSource(clientSource)) {\n return clientAssetBuildErrorResponse(\n route.file,\n new Error(\n [\n \"Client route analysis did not produce a client asset.\",\n \"Browser build cannot import Node builtins or other server-only modules.\",\n ...references.diagnostics.map((diagnostic) => diagnostic.message),\n ].join(\"\\n\"),\n ),\n );\n }\n\n return new Response(\"Not Found\", { status: 404 });\n }\n\n let bundle: string;\n\n try {\n const navigation = await resolveNavigationRuntime({\n appDir,\n code,\n filename: route.file,\n references,\n vitePlugins: options.vitePlugins,\n });\n bundle = await buildClientRouteBundle({\n code: clientSource,\n clientBoundaryImports: references.clientBoundaryImports,\n clientReferenceImports: references.clientReferenceImports,\n clientReferenceManifest: references.clientReferenceManifest,\n clientNavigation: navigation || detectAnchorElementUsage(clientSource, route.file),\n filename: route.file,\n routeMayUseOutOfOrderFragments: true,\n routePath: route.path,\n vitePlugins: options.vitePlugins,\n });\n } catch (error) {\n return clientAssetBuildErrorResponse(route.file, error);\n }\n\n return new Response(options.dev === true ? withViteHmrRuntime(bundle) : bundle, {\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n });\n}\n\nasync function renderAppRouterClientRouteDevModule(\n appDir: string,\n pathname: string,\n options: { vitePlugins?: readonly PluginOption[] | undefined } = {},\n): Promise<string> {\n const route = await clientRouteForRequestPath(appDir, pathname);\n\n if (route === undefined) {\n throw new Error(`MReact client route asset was not found: ${pathname}`);\n }\n\n const code = await readFile(route.file, \"utf8\");\n const clientSource = stripRouteClientOnlyExports(code, route.file);\n const references = await collectClientRouteReferences({\n appDir,\n code: clientSource,\n filename: route.file,\n vitePlugins: options.vitePlugins,\n });\n\n if (!references.client) {\n throw new Error(\n isClientRouteSource(clientSource)\n ? [\n \"Client route analysis did not produce a client asset.\",\n \"Browser build cannot import Node builtins or other server-only modules.\",\n ...references.diagnostics.map((diagnostic) => diagnostic.message),\n ].join(\"\\n\")\n : `MReact client route asset was not found: ${pathname}`,\n );\n }\n\n const navigation = await resolveNavigationRuntime({\n appDir,\n code,\n filename: route.file,\n references,\n vitePlugins: options.vitePlugins,\n });\n const entry = await buildClientRouteEntrySource({\n code: clientSource,\n clientBoundaryImports: references.clientBoundaryImports,\n clientReferenceImports: references.clientReferenceImports,\n clientReferenceManifest: references.clientReferenceManifest,\n clientNavigation: navigation || detectAnchorElementUsage(clientSource, route.file),\n debugLabels: true,\n filename: route.file,\n routeMayUseOutOfOrderFragments: true,\n routePath: route.path,\n vitePlugins: options.vitePlugins,\n });\n\n return withViteHmrRuntime(entry.code);\n}\n\nasync function clientRouteForRequestPath(appDir: string, pathname: string) {\n const routes = await scanAppRoutes({ appDir });\n\n return routes.find(\n (candidate) =>\n candidate.kind === \"page\" &&\n `/_mreact/client/${clientScriptForPath(candidate.path)}` === pathname,\n );\n}\n\nfunction clientRequestPath(id: string): string {\n const [path] = id.split(/[?#]/, 1);\n\n return path ?? id;\n}\n\nfunction clientRouteModuleId(filename: string, requestPath: string): string {\n return `${normalizePath(filename)}?${clientRouteModuleQuery}=${encodeURIComponent(requestPath)}`;\n}\n\nfunction clientRouteModuleRequestPath(id: string): string | undefined {\n const queryStart = id.indexOf(\"?\");\n\n if (queryStart === -1) {\n return undefined;\n }\n\n const params = new URLSearchParams(id.slice(queryStart + 1));\n const value = params.get(clientRouteModuleQuery);\n\n return value === null ? undefined : value;\n}\n\nfunction isMreactClientDevModuleId(id: string | null | undefined): boolean {\n return (\n id?.startsWith(virtualClientPrefix) === true ||\n id?.includes(`?${clientRouteModuleQuery}=`) === true ||\n id?.includes(`&${clientRouteModuleQuery}=`) === true\n );\n}\n\nfunction isDevCssSourceModuleId(id: string): boolean {\n return new URLSearchParams(id.slice(id.indexOf(\"?\") + 1)).has(devCssSourceQuery);\n}\n\nfunction devCssSourceRequestFile(id: string, projectRoot: string): string | undefined {\n if (!new URLSearchParams(id.slice(id.indexOf(\"?\") + 1)).has(devCssSourceQuery)) {\n return undefined;\n }\n\n const requestPath = clientRequestPath(id);\n if (requestPath.startsWith(\"/@fs/\")) {\n return `/${requestPath.slice(\"/@fs/\".length)}`;\n }\n if (isAbsolute(requestPath) && isPathInsideDirectory(projectRoot, requestPath)) {\n return requestPath;\n }\n\n return resolve(projectRoot, `.${requestPath.startsWith(\"/\") ? requestPath : `/${requestPath}`}`);\n}\n\nasync function loadDevCssSourceModule(options: {\n allowedRoot: Promise<string | undefined>;\n cssFile: string;\n sourceDirs: readonly string[];\n viteConfig: Promise<DevCssViteFileSystemConfigs> | undefined;\n}): Promise<string | undefined> {\n const refusal = () => new Error(\"Dev CSS source is outside the configured project roots.\");\n\n if (options.cssFile.includes(\"\\0\")) {\n throw refusal();\n }\n\n let allowedRoot: string | undefined;\n let cssFile: string;\n let viteConfig: DevCssViteFileSystemConfigs | undefined;\n try {\n [allowedRoot, cssFile, viteConfig] = await Promise.all([\n options.allowedRoot,\n realpath(options.cssFile),\n options.viteConfig,\n ]);\n } catch {\n throw refusal();\n }\n\n if (\n allowedRoot === undefined ||\n !isPathInsideDirectory(allowedRoot, cssFile) ||\n (viteConfig !== undefined &&\n (!isFileLoadingAllowed(viteConfig.logical, normalizePath(options.cssFile)) ||\n !isFileLoadingAllowed(viteConfig.canonical, normalizePath(cssFile))))\n ) {\n throw refusal();\n }\n\n let code: string;\n try {\n code = await readFile(cssFile, \"utf8\");\n } catch {\n throw refusal();\n }\n\n return prependTailwindSourceDirectives({\n code,\n cssFile,\n sourceDirs: options.sourceDirs,\n });\n}\n\nasync function resolveCanonicalDevCssSourceRoot(directory: string): Promise<string | undefined> {\n try {\n return await realpath(directory);\n } catch {\n return undefined;\n }\n}\n\nasync function resolveDevCssViteFileSystemConfigs(\n config: ResolvedConfig,\n): Promise<DevCssViteFileSystemConfigs> {\n const allow = await Promise.all(\n config.server.fs.allow.map(async (directory) => {\n try {\n return normalizePath(await realpath(directory));\n } catch {\n return normalizePath(directory);\n }\n }),\n );\n\n return {\n canonical: {\n ...config,\n server: {\n ...config.server,\n fs: {\n ...config.server.fs,\n allow,\n },\n },\n },\n logical: config,\n };\n}\n\nfunction isPathInsideDirectory(directory: string, candidate: string): boolean {\n const relativePath = relative(directory, candidate);\n return (\n relativePath === \"\" ||\n (relativePath !== \"..\" && !relativePath.startsWith(`..${sep}`) && !isAbsolute(relativePath))\n );\n}\n\nfunction importerInRuntimePackage(\n importer: string | undefined,\n directories: readonly string[],\n packageNames: readonly string[],\n): boolean {\n if (importer === undefined) {\n return false;\n }\n\n const normalizedImporter = normalizePath(importer);\n return (\n directories.some((directory) => normalizedImporter.startsWith(`${directory}/`)) ||\n packageNames.some((packageName) => normalizedImporter.includes(`/node_modules/${packageName}/`))\n );\n}\n\nfunction clientAssetBuildErrorResponse(filename: string, error: unknown): Response {\n const message = [\n `Failed to build mreact client route asset for ${filename}.`,\n error instanceof Error ? error.message : String(error),\n ].join(\"\\n\");\n\n return new Response(`throw new Error(${JSON.stringify(message)});\\n`, {\n status: 500,\n headers: { \"content-type\": \"text/javascript; charset=utf-8\" },\n });\n}\n\nasync function devRouteStyles(\n project: ResolvedAppRouterProject,\n routes: readonly AppRoute[],\n readSource: (file: string) => Promise<string | undefined>,\n): Promise<ReadonlyMap<string, readonly string[]>> {\n const entries = await Promise.all(\n routes.map(async (route) => {\n if (route.kind !== \"page\") {\n return undefined;\n }\n\n const hrefs = await collectRouteCssHrefs({\n appDir: project.routesDir,\n hrefPrefix: devCssPrefix,\n pageFile: route.file,\n projectRoot: project.projectRoot,\n readSource,\n });\n\n return hrefs.length === 0 ? undefined : ([route.path, hrefs as readonly string[]] as const);\n }),\n );\n const routeStyles = entries.filter(\n (entry): entry is readonly [string, readonly string[]] => entry !== undefined,\n );\n\n return new Map<string, readonly string[]>(routeStyles);\n}\n\nasync function devSpecialRouteStyles(\n project: ResolvedAppRouterProject,\n readSource: (file: string) => Promise<string | undefined>,\n): Promise<ReadonlyMap<string, readonly string[]>> {\n const entries = await Promise.all(\n (await collectSpecialBoundaryFiles(project.routesDir)).map(async (file) => {\n const hrefs = await collectRouteCssHrefs({\n appDir: project.routesDir,\n hrefPrefix: devCssPrefix,\n pageFile: file,\n projectRoot: project.projectRoot,\n readSource,\n });\n\n return hrefs.length === 0 ? undefined : ([file, hrefs as readonly string[]] as const);\n }),\n );\n const routeStyles = entries.filter(\n (entry): entry is readonly [string, readonly string[]] => entry !== undefined,\n );\n\n return new Map<string, readonly string[]>(routeStyles);\n}\n\nasync function devNavigationScripts(\n appDir: string,\n routes: readonly AppRoute[],\n readSource: (file: string) => Promise<string | undefined>,\n inferenceCache?: ClientRouteInferenceCache | undefined,\n vitePlugins?: readonly PluginOption[] | undefined,\n): Promise<ReadonlyMap<string, string>> {\n const cache = inferenceCache ?? createClientRouteInferenceCache();\n const entries = await Promise.all(\n routes.map(async (route) => {\n if (route.kind !== \"page\") {\n return undefined;\n }\n\n const source = await readSource(route.file);\n if (source === undefined) {\n return undefined;\n }\n const references = await collectClientRouteReferences({\n appDir,\n cache,\n code: source,\n filename: route.file,\n routePath: route.path,\n vitePlugins,\n });\n const navigation = await resolveNavigationRuntime({\n appDir,\n cache,\n code: source,\n filename: route.file,\n references,\n vitePlugins,\n });\n\n for (const diagnostic of references.diagnostics) {\n console.warn(formatClientRouteInferenceDiagnostic(diagnostic));\n }\n const navigationRuntimeDiagnostic = navigationRuntimeLinkDisabledDiagnostic({\n filename: route.file,\n references,\n routePath: route.path,\n source,\n });\n\n if (navigationRuntimeDiagnostic !== undefined) {\n console.warn(formatClientRouteInferenceDiagnostic(navigationRuntimeDiagnostic));\n }\n\n return navigation ? ([route.path, navigationRuntimeScriptForDev()] as const) : undefined;\n }),\n );\n\n return new Map(\n entries.filter((entry): entry is readonly [string, string] => entry !== undefined),\n );\n}\n\nfunction createDevCssProxyMiddleware(): Connect.NextHandleFunction {\n return (incoming, outgoing, next) => {\n const originalUrl = incoming.url ?? \"/\";\n const url = new URL(originalUrl, \"http://mreact.local\");\n\n if (!url.pathname.startsWith(devCssPrefix)) {\n next();\n return;\n }\n\n const sourcePath = `/${url.pathname.slice(devCssPrefix.length)}`;\n\n if (sourcePath === \"/\" || sourcePath.includes(\"\\0\")) {\n next();\n return;\n }\n\n const originalAccept = incoming.headers.accept;\n let restored = false;\n const restore = () => {\n if (restored) {\n return;\n }\n restored = true;\n incoming.url = originalUrl;\n if (originalAccept === undefined) {\n delete incoming.headers.accept;\n } else {\n incoming.headers.accept = originalAccept;\n }\n };\n\n const sourceSearch = new URLSearchParams(url.search);\n sourceSearch.set(devCssSourceQuery, \"\");\n incoming.url = `${sourcePath}?${sourceSearch.toString()}`;\n incoming.headers.accept = \"text/css,*/*;q=0.1\";\n outgoing.once(\"finish\", restore);\n outgoing.once(\"close\", restore);\n next();\n };\n}\n\nfunction withViteHmrRuntime(code: string): string {\n return `import \"/@vite/client\";\nif (import.meta.hot?.data.__mreactRouteStates) {\n globalThis.__mreactRouteStates = import.meta.hot.data.__mreactRouteStates;\n}\n${code}\nif (import.meta.hot) {\n const __mreactPreserveRouteState = () => {\n import.meta.hot.data.__mreactRouteStates = globalThis.__mreactRouteStates;\n };\n import.meta.hot.dispose(__mreactPreserveRouteState);\n import.meta.hot.accept((module) => {\n module?.__mreactHydrateRoute?.();\n });\n}\n`;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reckona/mreact-router",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.211",
|
|
4
4
|
"description": "File-system app router, SSR, actions, and deployment adapters for mreact.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jsx",
|
|
@@ -111,20 +111,20 @@
|
|
|
111
111
|
"dependencies": {
|
|
112
112
|
"@typescript/typescript6": "^6.0.2",
|
|
113
113
|
"esbuild": ">=0.28.1 <0.29",
|
|
114
|
-
"@reckona/mreact
|
|
115
|
-
"@reckona/mreact-
|
|
116
|
-
"@reckona/mreact-
|
|
117
|
-
"@reckona/mreact-
|
|
118
|
-
"@reckona/mreact": "0.0.
|
|
119
|
-
"@reckona/mreact-reactive-
|
|
120
|
-
"@reckona/mreact-
|
|
121
|
-
"@reckona/mreact-
|
|
122
|
-
"@reckona/mreact-
|
|
114
|
+
"@reckona/mreact": "0.0.211",
|
|
115
|
+
"@reckona/mreact-devtools": "0.0.211",
|
|
116
|
+
"@reckona/mreact-compiler": "0.0.211",
|
|
117
|
+
"@reckona/mreact-compat": "0.0.211",
|
|
118
|
+
"@reckona/mreact-query": "0.0.211",
|
|
119
|
+
"@reckona/mreact-reactive-core": "0.0.211",
|
|
120
|
+
"@reckona/mreact-server": "0.0.211",
|
|
121
|
+
"@reckona/mreact-shared": "0.0.211",
|
|
122
|
+
"@reckona/mreact-reactive-dom": "0.0.211"
|
|
123
123
|
},
|
|
124
124
|
"peerDependencies": {
|
|
125
125
|
"vite": ">=8.1.4 <9"
|
|
126
126
|
},
|
|
127
127
|
"optionalDependencies": {
|
|
128
|
-
"@reckona/mreact-router-native": "0.0.
|
|
128
|
+
"@reckona/mreact-router-native": "0.0.211"
|
|
129
129
|
}
|
|
130
130
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { BuiltPrerenderedRoute, BuiltServerManifest } from "../build.js";
|
|
2
2
|
import type { ClientRouteManifestEntry } from "../client.js";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
clientManifestAssetPaths,
|
|
5
|
+
safeClientManifestAssetPath,
|
|
6
|
+
} from "../client-manifest-assets.js";
|
|
4
7
|
import type { AppRouterResponseHook } from "../render.js";
|
|
5
8
|
import {
|
|
6
9
|
__MREACT_QUERY_STATE_SCRIPT_ID,
|
|
@@ -1736,11 +1739,25 @@ async function loadCloudflareRouteModule<Env>(
|
|
|
1736
1739
|
}
|
|
1737
1740
|
|
|
1738
1741
|
function cloudflareModulePreloadTag(manifest: CloudflareClientManifest, routePath: string): string {
|
|
1739
|
-
const
|
|
1742
|
+
const route = manifest.routes.find((candidate) => candidate.path === routePath);
|
|
1743
|
+
const files = route?.script === undefined ? [] : [route.script, ...(route.modulePreloads ?? [])];
|
|
1744
|
+
const seen = new Set<string>();
|
|
1745
|
+
|
|
1746
|
+
return files
|
|
1747
|
+
.filter((file) => {
|
|
1748
|
+
if (safeClientManifestAssetPath(file) === undefined) {
|
|
1749
|
+
return false;
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
if (seen.has(file)) {
|
|
1753
|
+
return false;
|
|
1754
|
+
}
|
|
1740
1755
|
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1756
|
+
seen.add(file);
|
|
1757
|
+
return true;
|
|
1758
|
+
})
|
|
1759
|
+
.map((file) => `<link rel="modulepreload" href="/_mreact/client/${escapeHtmlAttribute(file)}">`)
|
|
1760
|
+
.join("");
|
|
1744
1761
|
}
|
|
1745
1762
|
|
|
1746
1763
|
async function resolveCloudflareRouteMetadata<Data, Env>(
|
package/src/build.ts
CHANGED
|
@@ -110,6 +110,7 @@ import {
|
|
|
110
110
|
import { collectRouteCssFilesFromSources, collectSpecialBoundaryFiles } from "./route-styles.js";
|
|
111
111
|
import { existingRouteShellCandidates } from "./route-shells.js";
|
|
112
112
|
import { sourceModuleCandidates } from "./source-modules.js";
|
|
113
|
+
import { collectStaticModulePreloadDependencies } from "./module-preload-graph.js";
|
|
113
114
|
import { collectBuildInferredServerActions } from "./server-action-inference.js";
|
|
114
115
|
import {
|
|
115
116
|
isVisitorDependentResponse,
|
|
@@ -2982,6 +2983,13 @@ async function prerenderStaticRoutes(options: {
|
|
|
2982
2983
|
route.client && route.script !== undefined ? [[route.path, route.script]] : [],
|
|
2983
2984
|
),
|
|
2984
2985
|
);
|
|
2986
|
+
const clientScriptPreloads = new Map(
|
|
2987
|
+
options.clientRoutes.flatMap((route) =>
|
|
2988
|
+
route.client && route.script !== undefined && route.modulePreloads !== undefined
|
|
2989
|
+
? [[route.path, route.modulePreloads] as const]
|
|
2990
|
+
: [],
|
|
2991
|
+
),
|
|
2992
|
+
);
|
|
2985
2993
|
const clientStyles = new Map(
|
|
2986
2994
|
options.clientRoutes.flatMap((route) =>
|
|
2987
2995
|
route.css !== undefined && route.css.length > 0 ? [[route.path, route.css]] : [],
|
|
@@ -3033,6 +3041,7 @@ async function prerenderStaticRoutes(options: {
|
|
|
3033
3041
|
appDir: options.appDir,
|
|
3034
3042
|
assetBaseUrl: options.assetBaseUrl,
|
|
3035
3043
|
clientScripts,
|
|
3044
|
+
clientScriptPreloads,
|
|
3036
3045
|
clientStyles,
|
|
3037
3046
|
define: options.define,
|
|
3038
3047
|
dehydrateOptions: options.dehydrateOptions,
|
|
@@ -5910,12 +5919,44 @@ function cloudflareRouteHeadTags(manifest, routePath) {
|
|
|
5910
5919
|
.map((styleSheet) => \`<link rel="stylesheet" href="/_mreact/client/\${escapeHtmlAttribute(styleSheet)}">\`)
|
|
5911
5920
|
.join("");
|
|
5912
5921
|
const script = route?.script;
|
|
5913
|
-
const
|
|
5914
|
-
|
|
5915
|
-
|
|
5922
|
+
const files = script === undefined ? [] : [script, ...(route?.modulePreloads ?? [])];
|
|
5923
|
+
const seen = new Set();
|
|
5924
|
+
const preload = files
|
|
5925
|
+
.filter((file) => {
|
|
5926
|
+
if (!safeCloudflareClientAssetPath(file)) {
|
|
5927
|
+
return false;
|
|
5928
|
+
}
|
|
5929
|
+
|
|
5930
|
+
if (seen.has(file)) {
|
|
5931
|
+
return false;
|
|
5932
|
+
}
|
|
5933
|
+
seen.add(file);
|
|
5934
|
+
return true;
|
|
5935
|
+
})
|
|
5936
|
+
.map((file) => \`<link rel="modulepreload" href="/_mreact/client/\${escapeHtmlAttribute(file)}">\`)
|
|
5937
|
+
.join("");
|
|
5916
5938
|
return styles + preload;
|
|
5917
5939
|
}
|
|
5918
5940
|
|
|
5941
|
+
function safeCloudflareClientAssetPath(asset) {
|
|
5942
|
+
if (typeof asset !== "string" || asset === "" || asset.startsWith("/") || asset.includes("\\\\")) {
|
|
5943
|
+
return false;
|
|
5944
|
+
}
|
|
5945
|
+
|
|
5946
|
+
return asset.split("/").every((segment) => {
|
|
5947
|
+
if (segment === "" || segment === "." || segment === "..") {
|
|
5948
|
+
return false;
|
|
5949
|
+
}
|
|
5950
|
+
|
|
5951
|
+
try {
|
|
5952
|
+
const decoded = decodeURIComponent(segment);
|
|
5953
|
+
return decoded !== "." && decoded !== ".." && !decoded.includes("/") && !decoded.includes("\\\\");
|
|
5954
|
+
} catch {
|
|
5955
|
+
return false;
|
|
5956
|
+
}
|
|
5957
|
+
});
|
|
5958
|
+
}
|
|
5959
|
+
|
|
5919
5960
|
function escapeHtmlAttribute(value) {
|
|
5920
5961
|
return String(value ?? "")
|
|
5921
5962
|
.replaceAll("&", "&")
|
|
@@ -6823,6 +6864,7 @@ async function writeClientRouteBundles(options: {
|
|
|
6823
6864
|
}
|
|
6824
6865
|
|
|
6825
6866
|
const routeOutputs = new Map(output.routes.map((route) => [route.routePath, route]));
|
|
6867
|
+
const clientChunks = new Map(output.chunks.map((chunk) => [chunk.fileName, chunk]));
|
|
6826
6868
|
const mapAssets = new Map(
|
|
6827
6869
|
output.chunks.flatMap((chunk) =>
|
|
6828
6870
|
chunk.map === undefined ? [] : [[`${chunk.fileName}.map`, chunk.map] as const],
|
|
@@ -6888,6 +6930,10 @@ async function writeClientRouteBundles(options: {
|
|
|
6888
6930
|
sourceMaps: options.sourceMaps,
|
|
6889
6931
|
});
|
|
6890
6932
|
const navigation = entry.navigation === true || entry.build.clientNavigation !== false;
|
|
6933
|
+
const modulePreloads = collectStaticModulePreloadDependencies(
|
|
6934
|
+
routeOutput.chunk.fileName,
|
|
6935
|
+
clientChunks,
|
|
6936
|
+
);
|
|
6891
6937
|
|
|
6892
6938
|
return {
|
|
6893
6939
|
bytes: Buffer.byteLength(code),
|
|
@@ -6903,6 +6949,7 @@ async function writeClientRouteBundles(options: {
|
|
|
6903
6949
|
? {}
|
|
6904
6950
|
: { dynamicImports: routeOutput.chunk.dynamicImports }),
|
|
6905
6951
|
...(routeOutput.chunk.imports.length === 0 ? {} : { imports: routeOutput.chunk.imports }),
|
|
6952
|
+
...(modulePreloads.length === 0 ? {} : { modulePreloads }),
|
|
6906
6953
|
...(navigation ? { navigation } : {}),
|
|
6907
6954
|
routeId,
|
|
6908
6955
|
script: routeOutput.chunk.fileName,
|
package/src/built-runtime.ts
CHANGED
|
@@ -20,6 +20,7 @@ export interface BuiltRuntime extends BuiltServerModuleArtifactRuntime {
|
|
|
20
20
|
assetBaseUrl?: string | undefined;
|
|
21
21
|
clientAssetPaths: ReadonlySet<string>;
|
|
22
22
|
clientScripts: ReadonlyMap<string, string>;
|
|
23
|
+
clientScriptPreloads: ReadonlyMap<string, readonly string[]>;
|
|
23
24
|
clientStylesByFile: ReadonlyMap<string, readonly string[]>;
|
|
24
25
|
clientStyles: ReadonlyMap<string, readonly string[]>;
|
|
25
26
|
dehydrateOptions?: DehydrateOptions | undefined;
|
|
@@ -47,7 +48,9 @@ export interface BuiltRuntime extends BuiltServerModuleArtifactRuntime {
|
|
|
47
48
|
start: number;
|
|
48
49
|
}[]
|
|
49
50
|
>;
|
|
50
|
-
serverActionManifest?:
|
|
51
|
+
serverActionManifest?:
|
|
52
|
+
| readonly { moduleId: string; exportName: string; inferred?: boolean }[]
|
|
53
|
+
| undefined;
|
|
51
54
|
serverModuleCacheVersion: string;
|
|
52
55
|
}
|
|
53
56
|
|
|
@@ -128,6 +131,13 @@ export async function materializeBuiltRuntime(options: {
|
|
|
128
131
|
route.client && route.script !== undefined ? [[route.path, route.script]] : [],
|
|
129
132
|
),
|
|
130
133
|
);
|
|
134
|
+
const clientScriptPreloads = new Map(
|
|
135
|
+
clientManifest.routes.flatMap((route) =>
|
|
136
|
+
route.client && route.script !== undefined && route.modulePreloads !== undefined
|
|
137
|
+
? [[route.path, route.modulePreloads] as const]
|
|
138
|
+
: [],
|
|
139
|
+
),
|
|
140
|
+
);
|
|
131
141
|
const clientStyles = new Map(
|
|
132
142
|
clientManifest.routes.flatMap((route) =>
|
|
133
143
|
route.css !== undefined && route.css.length > 0 ? [[route.path, route.css]] : [],
|
|
@@ -168,7 +178,11 @@ export async function materializeBuiltRuntime(options: {
|
|
|
168
178
|
serverManifest.dehydratePolicyModule === undefined
|
|
169
179
|
? undefined
|
|
170
180
|
: await loadBuiltDehydratePolicy(
|
|
171
|
-
join(
|
|
181
|
+
join(
|
|
182
|
+
options.outDir,
|
|
183
|
+
"server",
|
|
184
|
+
safeManifestFilePath(serverManifest.dehydratePolicyModule),
|
|
185
|
+
),
|
|
172
186
|
serverManifest.dehydratePolicyModule,
|
|
173
187
|
);
|
|
174
188
|
|
|
@@ -180,6 +194,7 @@ export async function materializeBuiltRuntime(options: {
|
|
|
180
194
|
: { assetBaseUrl: serverManifest.assetBaseUrl }),
|
|
181
195
|
clientAssetPaths: builtClientAssetPaths(clientManifest),
|
|
182
196
|
clientScripts,
|
|
197
|
+
clientScriptPreloads,
|
|
183
198
|
clientStylesByFile,
|
|
184
199
|
clientStyles,
|
|
185
200
|
...(dehydrateOptions === undefined ? {} : { dehydrateOptions }),
|
|
@@ -220,10 +235,7 @@ async function loadBuiltDehydratePolicy(
|
|
|
220
235
|
} catch (error) {
|
|
221
236
|
throw builtArtifactReadError("built app dehydration policy", policyPath, error);
|
|
222
237
|
}
|
|
223
|
-
return dehydrateOptionsFromModule(
|
|
224
|
-
policyModule,
|
|
225
|
-
`Built dehydration policy ${manifestPath}`,
|
|
226
|
-
);
|
|
238
|
+
return dehydrateOptionsFromModule(policyModule, `Built dehydration policy ${manifestPath}`);
|
|
227
239
|
}
|
|
228
240
|
|
|
229
241
|
export async function readBuiltImportPolicyText(outDir: string): Promise<string | undefined> {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface ClientManifestAssetRoute {
|
|
2
2
|
css?: readonly string[] | undefined;
|
|
3
3
|
imports?: readonly string[] | undefined;
|
|
4
|
+
modulePreloads?: readonly string[] | undefined;
|
|
4
5
|
navigationScript?: string | undefined;
|
|
5
6
|
script?: string | undefined;
|
|
6
7
|
sourceMap?: string | undefined;
|
|
@@ -28,6 +29,7 @@ export function clientManifestAssetPaths(
|
|
|
28
29
|
route.navigationScript,
|
|
29
30
|
...(route.css ?? []),
|
|
30
31
|
...(route.imports ?? []),
|
|
32
|
+
...(route.modulePreloads ?? []),
|
|
31
33
|
]) {
|
|
32
34
|
const path = safeClientManifestAssetPath(asset);
|
|
33
35
|
|
|
@@ -66,7 +68,7 @@ function normalizeClientManifestAssetPrefix(prefix: string): string {
|
|
|
66
68
|
return withLeadingSlash.endsWith("/") ? withLeadingSlash : `${withLeadingSlash}/`;
|
|
67
69
|
}
|
|
68
70
|
|
|
69
|
-
function safeClientManifestAssetPath(asset: string | undefined): string | undefined {
|
|
71
|
+
export function safeClientManifestAssetPath(asset: string | undefined): string | undefined {
|
|
70
72
|
if (asset === undefined || asset === "" || asset.startsWith("/") || asset.includes("\\")) {
|
|
71
73
|
return undefined;
|
|
72
74
|
}
|