@reckona/mreact-router 0.0.192 → 0.0.194

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/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 } from \"node:fs/promises\";\nimport type { ServerResponse } from \"node:http\";\nimport { dirname } from \"node:path\";\nimport { formatDiagnostic } from \"@reckona/mreact-compiler\";\nimport {\n createCompilerModuleContext,\n transformCompilerModuleContext,\n} from \"@reckona/mreact-compiler/internal\";\nimport {\n normalizePath,\n type Connect,\n type Plugin,\n type PluginOption,\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\";\nimport type { AppRouterImportPolicy } from \"./import-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} 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 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 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 importPolicy?: AppRouterImportPolicy | undefined;\n};\n\ntype MreactRouterPlugin = Plugin & {\n [mreactRouterConfigKey]: MreactRouterPluginConfig;\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 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\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 devServerModuleCacheVersion = 0;\n\n const plugin: MreactRouterPlugin = {\n [mreactRouterConfigKey]: {\n ...project,\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 configureServer(server) {\n server.middlewares.use(createDevCssProxyMiddleware());\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 cssFile: clientRequestPath(id),\n sourceDirs: project.allowedSourceDirs,\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 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 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);\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 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\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 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\nasync function loadDevCssSourceModule(options: {\n cssFile: string;\n sourceDirs: readonly string[];\n}): Promise<string | undefined> {\n const code = await readFile(options.cssFile, \"utf8\");\n\n return prependTailwindSourceDirectives({\n code,\n cssFile: options.cssFile,\n sourceDirs: options.sourceDirs,\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 } from \"node:fs/promises\";\nimport type { ServerResponse } from \"node:http\";\nimport { dirname } from \"node:path\";\nimport { formatDiagnostic } from \"@reckona/mreact-compiler\";\nimport {\n createCompilerModuleContext,\n transformCompilerModuleContext,\n} from \"@reckona/mreact-compiler/internal\";\nimport {\n normalizePath,\n type Connect,\n type Plugin,\n type PluginOption,\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\";\nimport type { AppRouterImportPolicy } from \"./import-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} 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 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 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 importPolicy?: AppRouterImportPolicy | undefined;\n};\n\ntype MreactRouterPlugin = Plugin & {\n [mreactRouterConfigKey]: MreactRouterPluginConfig;\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 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\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 devServerModuleCacheVersion = 0;\n\n const plugin: MreactRouterPlugin = {\n [mreactRouterConfigKey]: {\n ...project,\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 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 cssFile: clientRequestPath(id),\n sourceDirs: project.allowedSourceDirs,\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 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);\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 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\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 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\nasync function loadDevCssSourceModule(options: {\n cssFile: string;\n sourceDirs: readonly string[];\n}): Promise<string | undefined> {\n const code = await readFile(options.cssFile, \"utf8\");\n\n return prependTailwindSourceDirectives({\n code,\n cssFile: options.cssFile,\n sourceDirs: options.sourceDirs,\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.192",
3
+ "version": "0.0.194",
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": "0.0.192",
115
- "@reckona/mreact-compat": "0.0.192",
116
- "@reckona/mreact-compiler": "0.0.192",
117
- "@reckona/mreact-query": "0.0.192",
118
- "@reckona/mreact-reactive-core": "0.0.192",
119
- "@reckona/mreact-devtools": "0.0.192",
120
- "@reckona/mreact-reactive-dom": "0.0.192",
121
- "@reckona/mreact-shared": "0.0.192",
122
- "@reckona/mreact-server": "0.0.192"
114
+ "@reckona/mreact": "0.0.194",
115
+ "@reckona/mreact-compat": "0.0.194",
116
+ "@reckona/mreact-devtools": "0.0.194",
117
+ "@reckona/mreact-compiler": "0.0.194",
118
+ "@reckona/mreact-reactive-core": "0.0.194",
119
+ "@reckona/mreact-query": "0.0.194",
120
+ "@reckona/mreact-reactive-dom": "0.0.194",
121
+ "@reckona/mreact-server": "0.0.194",
122
+ "@reckona/mreact-shared": "0.0.194"
123
123
  },
124
124
  "peerDependencies": {
125
125
  "vite": ">=8.1.4 <9"
126
126
  },
127
127
  "optionalDependencies": {
128
- "@reckona/mreact-router-native": "0.0.192"
128
+ "@reckona/mreact-router-native": "0.0.194"
129
129
  }
130
130
  }
package/src/build.ts CHANGED
@@ -303,6 +303,7 @@ export interface PackageAwsLambdaArtifactOptions {
303
303
  export interface PackageCloudflarePagesArtifactOptions {
304
304
  fromDir: string;
305
305
  outDir: string;
306
+ workerEntry?: string | undefined;
306
307
  }
307
308
 
308
309
  export interface BuiltServerManifest {
@@ -1974,6 +1975,27 @@ async function buildGeneratedImportPolicy(options: {
1974
1975
  }
1975
1976
  }
1976
1977
 
1978
+ const responseHookFile = ["on-response.ts", "on-response.mreact.ts"]
1979
+ .map((file) => (relativeRoutesDir === "" ? file : `${relativeRoutesDir}/${file}`))
1980
+ .find((file) => options.files[file] !== undefined);
1981
+
1982
+ if (responseHookFile !== undefined) {
1983
+ const packages = await collectRuntimePackagesForFile({
1984
+ file: responseHookFile,
1985
+ files: options.files,
1986
+ packageJsonLookupCache,
1987
+ projectRoot: options.projectRoot,
1988
+ seen: new Set(),
1989
+ });
1990
+
1991
+ if (packages.length > 0) {
1992
+ routePackages.set("on-response", packages);
1993
+ for (const packageName of packages) {
1994
+ allPackages.add(packageName);
1995
+ }
1996
+ }
1997
+ }
1998
+
1977
1999
  return {
1978
2000
  byRoute: Object.fromEntries(
1979
2001
  [...routePackages.entries()].sort(([left], [right]) => left.localeCompare(right)),
@@ -2684,6 +2706,10 @@ async function buildServerModuleArtifacts(options: {
2684
2706
  requestArtifactFiles.add(file);
2685
2707
  }
2686
2708
 
2709
+ if (isResponseHookFile(options.project.routesDir, absoluteFile)) {
2710
+ requestArtifactFiles.add(file);
2711
+ }
2712
+
2687
2713
  if (route?.kind === "server" || route?.kind === "metadata") {
2688
2714
  requestArtifactFiles.add(file);
2689
2715
  }
@@ -2720,7 +2746,10 @@ async function buildServerModuleArtifacts(options: {
2720
2746
  });
2721
2747
  }
2722
2748
 
2723
- if (isMiddlewareFile(options.project.routesDir, absoluteFile)) {
2749
+ if (
2750
+ isMiddlewareFile(options.project.routesDir, absoluteFile) ||
2751
+ isResponseHookFile(options.project.routesDir, absoluteFile)
2752
+ ) {
2724
2753
  // Middleware joins the batch when runtime packages are bundled so the
2725
2754
  // auth/control dependency graph is shared with route loader artifacts.
2726
2755
  if (options.bundleRequestRuntimePackages) {
@@ -3163,7 +3192,10 @@ async function buildRequestModuleArtifactCode(options: {
3163
3192
  source: string;
3164
3193
  vitePlugins?: readonly PluginOption[] | undefined;
3165
3194
  }): Promise<string> {
3166
- if (isMiddlewareFile(options.appDir, options.filename)) {
3195
+ if (
3196
+ isMiddlewareFile(options.appDir, options.filename) ||
3197
+ isResponseHookFile(options.appDir, options.filename)
3198
+ ) {
3167
3199
  return await bundleMiddlewareModuleCode({
3168
3200
  appDir: options.appDir,
3169
3201
  code: options.source,
@@ -3467,6 +3499,10 @@ function isMiddlewareFile(appDir: string, file: string): boolean {
3467
3499
  return file === join(appDir, "middleware.ts") || file === join(appDir, "middleware.mreact.ts");
3468
3500
  }
3469
3501
 
3502
+ function isResponseHookFile(appDir: string, file: string): boolean {
3503
+ return file === join(appDir, "on-response.ts") || file === join(appDir, "on-response.mreact.ts");
3504
+ }
3505
+
3470
3506
  function hasMetadataExport(code: string): boolean {
3471
3507
  return (
3472
3508
  /\bexport\s+const\s+metadata\s*=/.test(code) ||
@@ -6695,11 +6731,13 @@ export async function packageCloudflarePagesArtifact(
6695
6731
  options: PackageCloudflarePagesArtifactOptions,
6696
6732
  ): Promise<CloudflarePagesArtifactManifest> {
6697
6733
  const clientManifestPath = join(options.fromDir, "client", "manifest.json");
6698
- const workerPath = join(options.fromDir, "cloudflare", "worker.mjs");
6734
+ const generatedWorkerPath = join(options.fromDir, "cloudflare", "worker.mjs");
6735
+ const workerPath = options.workerEntry ?? generatedWorkerPath;
6699
6736
 
6700
6737
  await assertRequiredBuildFile(clientManifestPath);
6701
- await assertRequiredBuildFile(workerPath);
6738
+ await assertRequiredBuildFile(generatedWorkerPath);
6702
6739
  await assertRequiredBuildFile(join(options.fromDir, "cloudflare", "route-modules.mjs"));
6740
+ await assertRequiredBuildFile(workerPath);
6703
6741
  assertPackageOutputDoesNotReplaceBuildOutput(options);
6704
6742
 
6705
6743
  const clientManifest = JSON.parse(await readFile(clientManifestPath, "utf8")) as {
@@ -6726,7 +6764,21 @@ export async function packageCloudflarePagesArtifact(
6726
6764
  nodeBuiltins: "externalize",
6727
6765
  outfile: "_worker.js",
6728
6766
  platform: "browser",
6729
- plugins: [cloudflareWorkspaceRuntimePlugin()],
6767
+ plugins: [
6768
+ ...(options.workerEntry === undefined
6769
+ ? []
6770
+ : [
6771
+ cloudflarePagesGeneratedModulePlugin({
6772
+ clientManifest: await readFile(clientManifestPath, "utf8"),
6773
+ cloudflareDir: join(options.fromDir, "cloudflare"),
6774
+ serverManifest: await readFile(
6775
+ join(options.fromDir, "server", "manifest.json"),
6776
+ "utf8",
6777
+ ),
6778
+ }),
6779
+ ]),
6780
+ cloudflareWorkspaceRuntimePlugin(),
6781
+ ],
6730
6782
  preserveExports: true,
6731
6783
  target: "es2022",
6732
6784
  });
@@ -6749,6 +6801,44 @@ export async function packageCloudflarePagesArtifact(
6749
6801
  return manifest;
6750
6802
  }
6751
6803
 
6804
+ function cloudflarePagesGeneratedModulePlugin(options: {
6805
+ clientManifest: string;
6806
+ cloudflareDir: string;
6807
+ serverManifest: string;
6808
+ }): RouterCompatPlugin {
6809
+ return {
6810
+ name: "mreact-router-cloudflare-pages-generated-module",
6811
+ setup(buildApi) {
6812
+ buildApi.onResolve({ filter: /^mreact-router\/generated-cloudflare$/ }, () => ({
6813
+ namespace: "mreact-cloudflare-pages-generated",
6814
+ path: "generated-cloudflare",
6815
+ }));
6816
+ buildApi.onLoad(
6817
+ { filter: /^generated-cloudflare$/, namespace: "mreact-cloudflare-pages-generated" },
6818
+ () => ({
6819
+ contents: [
6820
+ `import { createCloudflareBuiltRequestHandler, createCloudflareRouteModuleRenderer, createCloudflareStaticAssetLoader } from "@reckona/mreact-router/adapters/cloudflare";`,
6821
+ `import { routeModules } from ${JSON.stringify(join(options.cloudflareDir, "route-modules.mjs"))};`,
6822
+ `const serverManifest = ${options.serverManifest};`,
6823
+ `const clientManifest = ${options.clientManifest};`,
6824
+ `export function createDefaultCloudflarePagesHandler(overrides = {}) {`,
6825
+ ` return createCloudflareBuiltRequestHandler({`,
6826
+ ` assets: createCloudflareStaticAssetLoader({ binding: (env) => env?.ASSETS, clientManifest }),`,
6827
+ ` clientManifest,`,
6828
+ ` renderRoute: createCloudflareRouteModuleRenderer({ modules: routeModules }),`,
6829
+ ` serverManifest,`,
6830
+ ` ...overrides,`,
6831
+ ` });`,
6832
+ `}`,
6833
+ ].join("\n"),
6834
+ loader: "js",
6835
+ resolveDir: options.cloudflareDir,
6836
+ }),
6837
+ );
6838
+ },
6839
+ };
6840
+ }
6841
+
6752
6842
  async function assertRequiredBuildFile(path: string): Promise<void> {
6753
6843
  try {
6754
6844
  const info = await stat(path);
@@ -159,6 +159,8 @@ export async function loadBuiltServerModuleArtifactsForRequest(
159
159
  const roots = [
160
160
  join(runtime.appDir, "middleware.ts"),
161
161
  join(runtime.appDir, "middleware.mreact.ts"),
162
+ join(runtime.appDir, "on-response.ts"),
163
+ join(runtime.appDir, "on-response.mreact.ts"),
162
164
  ...(routeFile === undefined
163
165
  ? []
164
166
  : [
@@ -180,6 +182,19 @@ export async function loadBuiltServerModuleArtifactsForRequest(
180
182
  }
181
183
  }
182
184
 
185
+ export async function loadBuiltResponseHookArtifacts(
186
+ runtime: BuiltServerModuleArtifactRuntime,
187
+ ): Promise<void> {
188
+ const seen = new Set<string>();
189
+
190
+ for (const file of [
191
+ join(runtime.appDir, "on-response.ts"),
192
+ join(runtime.appDir, "on-response.mreact.ts"),
193
+ ]) {
194
+ await loadBuiltServerModuleArtifactClosure(runtime, file, seen, "request");
195
+ }
196
+ }
197
+
183
198
  async function loadBuiltServerModuleArtifactClosure(
184
199
  runtime: BuiltServerModuleArtifactRuntime,
185
200
  file: string,
@@ -27,6 +27,7 @@ export interface ParsedCliArguments {
27
27
  routeArg?: string | undefined;
28
28
  skipRuntimeDependencyCheck?: boolean | undefined;
29
29
  target?: CliBuildTarget | undefined;
30
+ worker?: string | undefined;
30
31
  }
31
32
 
32
33
  export function parseCliArguments(argv: readonly string[]): ParsedCliArguments {
@@ -136,6 +137,17 @@ export function parseCliArguments(argv: readonly string[]): ParsedCliArguments {
136
137
  continue;
137
138
  }
138
139
 
140
+ if (value === "--worker") {
141
+ parsed.worker = readOptionValue(argv, index, "worker");
142
+ index += 1;
143
+ continue;
144
+ }
145
+
146
+ if (value.startsWith("--worker=")) {
147
+ parsed.worker = value.slice("--worker=".length);
148
+ continue;
149
+ }
150
+
139
151
  if (value.startsWith("--log=")) {
140
152
  parsed.log = parseCliRequestLogMode(value.slice("--log=".length));
141
153
  continue;
@@ -260,6 +272,8 @@ export function formatCliHelp(command?: string | undefined): string {
260
272
  " For aws-lambda only, skip the production node_modules check when a later deploy step installs dependencies into the package directory.",
261
273
  " --handler <entry>",
262
274
  " For aws-lambda only, bundle a custom handler entry into mreact-handler.mjs. App-local extensionless TypeScript imports are bundled; package imports stay external.",
275
+ " --worker <entry>",
276
+ " For cloudflare-pages only, bundle a custom Worker entry into _worker.js.",
263
277
  " --aws-lambda-preload=middleware|hot-route-requests|all|none",
264
278
  " Override generated Lambda initialization preload. Omission preserves the build policy; legacy output without policy metadata falls back to middleware.",
265
279
  " --aws-lambda-preload-routes=/,/login",
package/src/cli.ts CHANGED
@@ -111,6 +111,7 @@ if (parsed !== undefined) {
111
111
  const manifest = await packageCloudflarePagesArtifact({
112
112
  fromDir: resolve(parsed.from ?? ".mreact"),
113
113
  outDir: resolve(parsed.out ?? ".mreact/pages"),
114
+ ...(parsed.worker === undefined ? {} : { workerEntry: resolve(parsed.worker) }),
114
115
  });
115
116
  console.log(
116
117
  `Packaged Cloudflare Pages artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,