one 2.11.0 → 2.11.2
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/cjs/vite/plugins/fileSystemRouterPlugin.cjs +3 -2
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.cjs +3 -2
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +3 -2
- package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +3 -2
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +3 -2
- package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
- package/package.json +13 -13
- package/src/vite/plugins/fileSystemRouterPlugin.test.ts +51 -0
- package/src/vite/plugins/fileSystemRouterPlugin.tsx +10 -3
- package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
|
@@ -30,6 +30,7 @@ module.exports = __toCommonJS(fileSystemRouterPlugin_exports);
|
|
|
30
30
|
var import_node_path = __toESM(require("node:path"), 1);
|
|
31
31
|
var import_node_stream = require("node:stream");
|
|
32
32
|
var import_node_tls = require("node:tls");
|
|
33
|
+
var import_fast_glob = __toESM(require("fast-glob"), 1);
|
|
33
34
|
var import_perfect_debounce = require("perfect-debounce");
|
|
34
35
|
var import_picocolors = __toESM(require("picocolors"), 1);
|
|
35
36
|
var import_vite = require("vite");
|
|
@@ -480,9 +481,9 @@ ${stack}
|
|
|
480
481
|
if (setting === "flat" && route2.file.split("/").filter((x) => !x.startsWith("(")).length > 3) {
|
|
481
482
|
return [];
|
|
482
483
|
}
|
|
483
|
-
return [import_node_path.default.posix.join(`./${routerRoot2}`, route2.file), ...route2.layouts?.flatMap((layout) => {
|
|
484
|
+
return [import_fast_glob.default.escapePath(import_node_path.default.posix.join(`./${routerRoot2}`, route2.file)), ...route2.layouts?.flatMap((layout) => {
|
|
484
485
|
if (!layout.contextKey) return [];
|
|
485
|
-
return [import_node_path.default.posix.join(`./${routerRoot2}`, layout.contextKey)];
|
|
486
|
+
return [import_fast_glob.default.escapePath(import_node_path.default.posix.join(`./${routerRoot2}`, layout.contextKey))];
|
|
486
487
|
}) || []];
|
|
487
488
|
}))];
|
|
488
489
|
return { optimizeDeps: {
|
|
@@ -32,6 +32,7 @@ module.exports = __toCommonJS(fileSystemRouterPlugin_exports);
|
|
|
32
32
|
var import_path = __toESM(require("path"), 1);
|
|
33
33
|
var import_stream = require("stream");
|
|
34
34
|
var import_tls = require("tls");
|
|
35
|
+
var import_fast_glob = __toESM(require("fast-glob"), 1);
|
|
35
36
|
var import_perfect_debounce = require("perfect-debounce");
|
|
36
37
|
var import_picocolors = __toESM(require("picocolors"), 1);
|
|
37
38
|
var import_vite = require("vite");
|
|
@@ -559,9 +560,9 @@ ${stack}
|
|
|
559
560
|
}).length > 3) {
|
|
560
561
|
return [];
|
|
561
562
|
}
|
|
562
|
-
return [import_path.default.posix.join(`./${routerRoot2}`, route2.file), ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {
|
|
563
|
+
return [import_fast_glob.default.escapePath(import_path.default.posix.join(`./${routerRoot2}`, route2.file)), ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {
|
|
563
564
|
if (!layout.contextKey) return [];
|
|
564
|
-
return [import_path.default.posix.join(`./${routerRoot2}`, layout.contextKey)];
|
|
565
|
+
return [import_fast_glob.default.escapePath(import_path.default.posix.join(`./${routerRoot2}`, layout.contextKey))];
|
|
565
566
|
})) || []];
|
|
566
567
|
}))];
|
|
567
568
|
return { optimizeDeps: {
|
|
@@ -32,6 +32,7 @@ module.exports = __toCommonJS(fileSystemRouterPlugin_exports);
|
|
|
32
32
|
var import_path = __toESM(require("path"), 1);
|
|
33
33
|
var import_stream = require("stream");
|
|
34
34
|
var import_tls = require("tls");
|
|
35
|
+
var import_fast_glob = __toESM(require("fast-glob"), 1);
|
|
35
36
|
var import_perfect_debounce = require("perfect-debounce");
|
|
36
37
|
var import_picocolors = __toESM(require("picocolors"), 1);
|
|
37
38
|
var import_vite = require("vite");
|
|
@@ -559,9 +560,9 @@ ${stack}
|
|
|
559
560
|
}).length > 3) {
|
|
560
561
|
return [];
|
|
561
562
|
}
|
|
562
|
-
return [import_path.default.posix.join(`./${routerRoot2}`, route2.file), ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {
|
|
563
|
+
return [import_fast_glob.default.escapePath(import_path.default.posix.join(`./${routerRoot2}`, route2.file)), ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {
|
|
563
564
|
if (!layout.contextKey) return [];
|
|
564
|
-
return [import_path.default.posix.join(`./${routerRoot2}`, layout.contextKey)];
|
|
565
|
+
return [import_fast_glob.default.escapePath(import_path.default.posix.join(`./${routerRoot2}`, layout.contextKey))];
|
|
565
566
|
})) || []];
|
|
566
567
|
}))];
|
|
567
568
|
return { optimizeDeps: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileSystemRouterPlugin.native.js","names":[],"sources":["cjs/vite/plugins/fileSystemRouterPlugin.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar fileSystemRouterPlugin_exports = {};\n__export(fileSystemRouterPlugin_exports, {\n createFileSystemRouterPlugin: () => createFileSystemRouterPlugin\n});\nmodule.exports = __toCommonJS(fileSystemRouterPlugin_exports);\nvar import_path = __toESM(require(\"path\"), 1);\nvar import_stream = require(\"stream\");\nvar import_tls = require(\"tls\");\nvar import_perfect_debounce = require(\"perfect-debounce\");\nvar import_picocolors = __toESM(require(\"picocolors\"), 1);\nvar import_vite = require(\"vite\");\nvar import_constants = require(\"../../constants\");\nvar import_createDevHandleRequest = require(\"../../createDevHandleRequest\");\nvar import_getPageExport = require(\"../../utils/getPageExport\");\nvar import_getRouterRootFromOneOptions = require(\"../../utils/getRouterRootFromOneOptions\");\nvar import_isResponse = require(\"../../utils/isResponse\");\nvar import_isStatus = require(\"../../utils/isStatus\");\nvar import_promiseWithResolvers = require(\"../../utils/promiseWithResolvers\");\nvar import_loaderSearchParams = require(\"../../loaderSearchParams\");\nvar import_routeFileWatch = require(\"../../utils/routeFileWatch\");\nvar import_trackLoaderDependencies = require(\"../../utils/trackLoaderDependencies\");\nvar import_one_server_only = require(\"../one-server-only\");\nvar import_virtualEntryConstants = require(\"./virtualEntryConstants\");\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction staticParamMatches(staticValue, urlValue) {\n var norm = function norm2(v) {\n return Array.isArray(v) ? v.join(\"/\") : String(v !== null && v !== void 0 ? v : \"\");\n };\n return norm(staticValue) === norm(urlValue);\n}\nvar debugRouter = process.env.ONE_DEBUG_ROUTER;\nvar debugLoaderDeps = process.env.ONE_DEBUG_LOADER_DEPS;\nvar routeTypeColors = {\n ssg: import_picocolors.default.green,\n ssr: import_picocolors.default.blue,\n spa: import_picocolors.default.yellow,\n api: import_picocolors.default.magenta\n};\nfunction createFileSystemRouterPlugin(options, routeIndex) {\n var preloads = [\n \"/@vite/client\",\n import_virtualEntryConstants.virtalEntryIdClient\n ];\n var runner;\n var server;\n var needsRouteRefresh = false;\n var loaderFileDependencies = /* @__PURE__ */ new Map();\n var LOADER_DEPS_MAX = 2e3;\n function setBoundedLoaderDep(filePath, routePath) {\n var deps = loaderFileDependencies.get(filePath);\n if (!deps) {\n if (loaderFileDependencies.size >= LOADER_DEPS_MAX) {\n var firstKey = loaderFileDependencies.keys().next().value;\n if (firstKey !== void 0) {\n loaderFileDependencies.delete(firstKey);\n }\n }\n deps = /* @__PURE__ */ new Set();\n loaderFileDependencies.set(filePath, deps);\n server === null || server === void 0 ? void 0 : server.watcher.add(filePath);\n }\n deps.add(routePath);\n }\n var handleRequest = createRequestHandler();\n var renderPromise = null;\n var ssgHtmlCache = /* @__PURE__ */ new Map();\n function getSsgHtmlCacheKey(route2, url2) {\n return `${route2.file}\n${url2.pathname}\n${url2.search}`;\n }\n function createRequestHandler() {\n var _options_router;\n var routerRoot = (0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(options);\n async function findNearestNotFoundPath(routeFile2) {\n var routeDir2 = routeFile2.replace(/\\/[^/]+$/, \"\");\n var searchDir2 = routeDir2;\n while (true) {\n for (var _i2 = 0, _iter2 = [\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\"\n ]; _i2 < _iter2.length; _i2++) {\n var ext2 = _iter2[_i2];\n var candidate2 = import_path.default.join(routerRoot, searchDir2, `+not-found${ext2}`);\n try {\n var mod = await runner.import(candidate2);\n if (mod === null || mod === void 0 ? void 0 : mod.default) {\n return searchDir2 ? `/${searchDir2}/+not-found` : \"/+not-found\";\n }\n } catch (unused) {\n }\n }\n if (!searchDir2) break;\n var parent2 = searchDir2.replace(/\\/[^/]+$/, \"\");\n if (parent2 === searchDir2) {\n searchDir2 = \"\";\n } else {\n searchDir2 = parent2;\n }\n }\n return \"/+not-found\";\n }\n return (0, import_createDevHandleRequest.createHandleRequest)({\n async handlePage(param) {\n var { route, url, loaderProps } = param;\n var _options_server;\n var ssgCacheKey = route.type === \"ssg\" ? getSsgHtmlCacheKey(route, url) : null;\n if (ssgCacheKey && !needsRouteRefresh) {\n var cachedHtml = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml) {\n return cachedHtml;\n }\n }\n if (((_options_server = options.server) === null || _options_server === void 0 ? void 0 : _options_server.loggingEnabled) !== false) {\n var colorType = routeTypeColors[route.type] || import_picocolors.default.white;\n var pathname = typeof url === \"string\" ? new URL(url).pathname : url.pathname;\n var file = route.isNotFound ? import_picocolors.default.red(\"404\") : import_picocolors.default.dim(`app/${route.file.slice(2)}`);\n console.info(` \\u24F5 ${colorType(`[${route.type}]`)} ${pathname} ${import_picocolors.default.dim(\"\\u2192\")} ${file}`);\n }\n var layouts = route.layouts || [];\n var isSpaShell = route.type === \"spa\" && layouts.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (route.type === \"spa\" && !isSpaShell) {\n var shell = `<!DOCTYPE html><html><head>\n ${(0, import_constants.getSpaHeaderElements)({\n serverContext: {\n mode: \"spa\"\n }\n })}\n <script type=\"module\" src=\"/@one/dev.js\"></script>\n <script type=\"module\" src=\"/@vite/client\" async=\"\"></script>\n <script type=\"module\" src=\"/@id/__x00__virtual:one-entry\" async=\"\"></script>\n </head></html>`;\n if (route.isNotFound) {\n return new Response(shell, {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n return shell;\n }\n if (renderPromise) {\n await renderPromise;\n }\n if (ssgCacheKey && !needsRouteRefresh) {\n var cachedHtml1 = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml1) {\n return cachedHtml1;\n }\n }\n var { promise, resolve: resolveRender } = (0, import_promiseWithResolvers.promiseWithResolvers)();\n renderPromise = promise;\n try {\n var _globalThis___vxrnresetState, _globalThis;\n var isGeneratedNotFound = route.file === \"\";\n var routeFile = isGeneratedNotFound ? \"\" : import_path.default.join(routerRoot, route.file);\n if (needsRouteRefresh) {\n globalThis[\"__vxrnVersion\"] = (globalThis[\"__vxrnVersion\"] || 0) + 1;\n ssgHtmlCache.clear();\n needsRouteRefresh = false;\n }\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n var exported = isGeneratedNotFound ? {} : await runner.import(routeFile);\n async function runLoaderWithTracking(routeNode, loaderFn, searchSchemas) {\n var routeId = routeNode.contextKey;\n if (!loaderFn) {\n return {\n loaderData: void 0,\n routeId\n };\n }\n try {\n var _ref;\n var props = searchSchemas ? (0, import_loaderSearchParams.withLoaderSearchParams)(searchSchemas, loaderProps) : loaderProps;\n var tracked = await (0, import_trackLoaderDependencies.trackLoaderDependencies)(function() {\n return loaderFn(props);\n });\n var routePath = ((loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\") + (route.type === \"ssr\" ? (_ref = loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.search) !== null && _ref !== void 0 ? _ref : \"\" : \"\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dep = _step.value;\n var absoluteDep = import_path.default.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return {\n loaderData: tracked.result,\n routeId\n };\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n throw err;\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"ENOENT\") {\n return {\n loaderData: void 0,\n routeId,\n isEnoent: true\n };\n }\n console.error(`[one] Error running loader for ${routeId}:`, err);\n return {\n loaderData: void 0,\n routeId\n };\n }\n }\n var loaderData;\n var matches;\n var pageResult;\n if (isSpaShell) {\n var layoutLoaderPromises = layouts.map(async function(layout) {\n var layoutFile = import_path.default.join(routerRoot, layout.contextKey);\n var layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader);\n });\n var layoutResults = await Promise.all(layoutLoaderPromises);\n matches = layoutResults.map(function(result) {\n return {\n routeId: result.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: result.loaderData\n };\n });\n loaderData = void 0;\n } else {\n var layoutRoutes = route.layouts || [];\n var pageRoute = {\n contextKey: route.file,\n file: route.file\n };\n var layoutLoaderPromises1 = layoutRoutes.map(async function(layout) {\n var layoutFile = import_path.default.join(routerRoot, layout.contextKey);\n var layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader, route.type === \"ssr\" ? (0, import_loaderSearchParams.getLoaderSearchSchemas)(layoutExported) : null);\n });\n var pageLoaderPromise = runLoaderWithTracking(pageRoute, exported.loader, route.type === \"ssr\" ? (0, import_loaderSearchParams.getLoaderSearchSchemas)(exported) : null);\n var layoutResults1;\n [layoutResults1, pageResult] = await Promise.all([\n Promise.all(layoutLoaderPromises1),\n pageLoaderPromise\n ]);\n matches = [\n ...layoutResults1.map(function(result) {\n return {\n routeId: result.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: result.loaderData\n };\n }),\n {\n routeId: pageResult.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: pageResult.loaderData\n }\n ];\n loaderData = pageResult.loaderData;\n }\n eval(`process.env.TAMAGUI_IS_SERVER = '1'`);\n var entry = await runner.import(import_virtualEntryConstants.virtualEntryId);\n var render = entry.default.render;\n (0, import_one_server_only.setServerContext)({\n loaderData,\n loaderProps,\n matches\n });\n var isDynamicRoute = Object.keys(route.routeKeys || {}).length > 0;\n var isMissingSsgSlug = false;\n if (route.type === \"ssg\" && isDynamicRoute && exported.generateStaticParams) {\n var staticParams = await exported.generateStaticParams({\n params: loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params\n });\n var currentParams = (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {};\n isMissingSsgSlug = !staticParams.some(function(sp) {\n return Object.keys(sp).every(function(key) {\n return staticParamMatches(sp[key], currentParams[key]);\n });\n });\n }\n var isLoaderEnoent = !isSpaShell && (pageResult === null || pageResult === void 0 ? void 0 : pageResult.isEnoent);\n var is404 = route.isNotFound || !(0, import_getPageExport.getPageExport)(exported) || isMissingSsgSlug || isLoaderEnoent;\n var notFoundRoutePath = null;\n if (isMissingSsgSlug || isLoaderEnoent) {\n var routeDir = route.file.replace(/^\\.\\//, \"\").replace(/\\/[^/]+$/, \"\");\n var searchDir = routeDir;\n while (true) {\n for (var _i = 0, _iter = [\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\"\n ]; _i < _iter.length; _i++) {\n var ext = _iter[_i];\n var candidate = import_path.default.join(routerRoot, searchDir, `+not-found${ext}`);\n try {\n var notFoundExported = await runner.import(candidate);\n if (notFoundExported === null || notFoundExported === void 0 ? void 0 : notFoundExported.default) {\n notFoundRoutePath = searchDir ? `/${searchDir}/+not-found` : \"/+not-found\";\n break;\n }\n } catch (unused) {\n }\n }\n if (notFoundRoutePath || !searchDir) break;\n var parent = searchDir.replace(/\\/[^/]+$/, \"\");\n if (parent === searchDir) {\n searchDir = \"\";\n } else {\n searchDir = parent;\n }\n }\n if (!notFoundRoutePath) {\n return new Response(\"<html><body><h1>404 - Not Found</h1></body></html>\", {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n }\n var renderPath = notFoundRoutePath || (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\";\n if (notFoundRoutePath && loaderProps) {\n loaderProps = {\n ...loaderProps,\n path: notFoundRoutePath\n };\n (0, import_one_server_only.setServerContext)({\n loaderProps\n });\n }\n var html = await render({\n mode: isSpaShell ? \"spa-shell\" : route.type === \"ssg\" ? \"ssg\" : route.type === \"ssr\" ? \"ssr\" : \"spa\",\n loaderData,\n loaderProps,\n path: renderPath,\n preloads,\n matches\n });\n if (is404) {\n if (notFoundRoutePath) {\n var originalPath = (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\";\n var notFoundMarker = `<script>window.__one404={originalPath:${JSON.stringify(originalPath)},notFoundPath:${JSON.stringify(notFoundRoutePath)}}</script>`;\n html = html.includes(\"</head>\") ? html.replace(\"</head>\", `${notFoundMarker}</head>`) : html.replace(\"<body\", `${notFoundMarker}<body`);\n }\n return new Response(html, {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n if (ssgCacheKey) {\n ssgHtmlCache.set(ssgCacheKey, html);\n }\n return html;\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n return err;\n }\n console.error(`SSR error while loading file ${route.file} from URL ${url.href}\n`, err);\n var title = `Error rendering ${url.pathname} on server`;\n var message = err instanceof Error ? err.message : `${err}`;\n var stack = err instanceof Error ? err.stack || \"\" : \"\";\n var isDuplicateReactError = /at (useEffect|useState|useReducer|useContext|useLayoutEffect)\\s*\\(.*?react\\.development\\.js/g.test(stack);\n var subMessage = isDuplicateReactError ? `\n <h2>Duplicate React Error</h2>\n <p style=\"font-size: 18px; line-height: 24px; max-width: 850px;\">Note: These types of errors happen during SSR because One needs all dependencies that use React to be optimized. Find the dependency on the line after the react.development.js line below to find the failing dependency. So long as that dependency has \"react\" as a sub-dependency, you can add it to your package.json and One will optimize it automatically. If it doesn't list it properly, you can fix this manually by changing your vite.config.ts One plugin to add \"one({ deps: { depName: true })\" so One optimizes depName.</p>\n ` : ``;\n console.error(`${title}\n ${message}\n\n${stack}\n`);\n return `\n <html>\n <body style=\"background: #000; color: #fff; padding: 5%; font-family: monospace; line-height: 2rem;\">\n <h1 style=\"display: inline-flex; background: red; color: white; padding: 5px; margin: -5px;\">${title}</h1>\n <h2>${message}</h2>\n ${subMessage}\n ${stack ? `<pre style=\"font-size: 15px; line-height: 24px; white-space: pre;\">\n ${stack}\n </pre>` : ``}\n </body>\n </html>\n `;\n } finally {\n resolveRender();\n }\n },\n async handleLoader(param2) {\n var { route: route2, url: url2, loaderProps: loaderProps2 } = param2;\n var _this;\n var routeFile2 = import_path.default.join(routerRoot, route2.file);\n var transformedJS = (_this = await server.transformRequest(routeFile2)) === null || _this === void 0 ? void 0 : _this.code;\n if (!transformedJS) {\n throw new Error(`No transformed js returned`);\n }\n var platform = url2.searchParams.get(\"platform\");\n if (!/export function loader\\(\\)/.test(transformedJS)) {\n return platform === \"ios\" || platform === \"android\" || platform === \"native\" ? \"exports.loader = () => undefined;\" : \"export function loader() { return undefined }\";\n }\n var exported2 = await runner.import(routeFile2);\n var isDynamicRoute2 = Object.keys(route2.routeKeys || {}).length > 0;\n if (route2.type === \"ssg\" && isDynamicRoute2 && exported2.generateStaticParams) {\n var staticParams2 = await exported2.generateStaticParams({\n params: loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.params\n });\n var currentParams2 = (loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.params) || {};\n var isValidSlug = staticParams2.some(function(sp) {\n return Object.keys(sp).every(function(key) {\n return staticParamMatches(sp[key], currentParams2[key]);\n });\n });\n if (!isValidSlug) {\n var nfPath = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n }\n var loaderData2;\n if (exported2.loader) {\n try {\n var _ref;\n var searchSchemas = route2.type === \"ssr\" ? (0, import_loaderSearchParams.getLoaderSearchSchemas)(exported2) : null;\n var runProps = searchSchemas ? (0, import_loaderSearchParams.withLoaderSearchParams)(searchSchemas, loaderProps2) : loaderProps2;\n var tracked = await (0, import_trackLoaderDependencies.trackLoaderDependencies)(function() {\n return exported2.loader(runProps);\n });\n loaderData2 = tracked.result;\n if ((0, import_isResponse.isResponse)(loaderData2)) {\n throw loaderData2;\n }\n var routePath = ((loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.path) || \"/\") + (route2.type === \"ssr\" ? (_ref = loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.search) !== null && _ref !== void 0 ? _ref : \"\" : \"\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dep = _step.value;\n var absoluteDep = import_path.default.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n throw err;\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"ENOENT\") {\n var nfPath1 = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath1)}}}`;\n }\n throw err;\n }\n }\n if (platform === \"ios\" || platform === \"android\" || platform === \"native\") {\n var environment = server.environments[platform === \"native\" ? \"ios\" : platform || \"\"];\n if (!environment) {\n throw new Error(`[handleLoader] No Vite environment found for platform '${platform}'`);\n }\n return `exports.loader = () => (${JSON.stringify(loaderData2)});`;\n }\n return `export function loader(){return ${JSON.stringify(loaderData2)}}`;\n },\n async handleAPI(param2) {\n var { route: route2 } = param2;\n return await runner.import(import_path.default.join(routerRoot, route2.file));\n },\n async loadMiddleware(route2) {\n return await runner.import(import_path.default.join(routerRoot, route2.contextKey));\n }\n }, {\n routerRoot,\n ignoredRouteFiles: (_options_router = options.router) === null || _options_router === void 0 ? void 0 : _options_router.ignoredRouteFiles,\n routePaths: routeIndex.getPaths()\n });\n }\n function recreateRequestHandler(changedPath) {\n try {\n var _server_environments_worker;\n handleRequest = createRequestHandler();\n ssgHtmlCache.clear();\n needsRouteRefresh = true;\n var workerGraph = server === null || server === void 0 ? void 0 : (_server_environments_worker = server.environments.worker) === null || _server_environments_worker === void 0 ? void 0 : _server_environments_worker.moduleGraph;\n var workerEntry = workerGraph === null || workerGraph === void 0 ? void 0 : workerGraph.getModuleById(\"\\0virtual:one-workerd-dev-entry\");\n if (workerGraph && workerEntry) {\n workerGraph.invalidateModule(workerEntry);\n }\n } catch (error) {\n console.warn(`[one] Failed to rebuild routes after ${changedPath} changed.`, error);\n }\n }\n return {\n name: `one-router-fs`,\n enforce: \"post\",\n apply: \"serve\",\n // the route tree we rendered from is built out of whatever route modules\n // were resolved at the time, so any ssr-side change makes it stale. this\n // runs inside vite's update sequence, after the graph has been invalidated,\n // so by the time the next render reads the flag the fresh modules are\n // already there to rebuild from.\n //\n // ask the graph rather than reading the `modules` argument: vite calls\n // hotUpdate for every watcher event including files it knows nothing about,\n // and an earlier plugin may have replaced `modules` (route-module-hmr-fix\n // returns [] for ssr app files to suppress the full reload).\n hotUpdate(param2) {\n var { file: file2 } = param2;\n var _this_environment_moduleGraph_getModulesByFile;\n if (this.environment.name !== \"ssr\") return;\n if (!((_this_environment_moduleGraph_getModulesByFile = this.environment.moduleGraph.getModulesByFile(file2)) === null || _this_environment_moduleGraph_getModulesByFile === void 0 ? void 0 : _this_environment_moduleGraph_getModulesByFile.size)) return;\n needsRouteRefresh = true;\n },\n async config() {\n var _ref;\n var _options_optimization;\n var setting = (_ref = (_options_optimization = options.optimization) === null || _options_optimization === void 0 ? void 0 : _options_optimization.autoEntriesScanning) !== null && _ref !== void 0 ? _ref : \"flat\";\n var routerRoot2 = (0, import_vite.normalizePath)((0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(options));\n if (setting === false) {\n return;\n }\n if (handleRequest.manifest.pageRoutes) {\n var routesAndLayouts = [\n ...new Set(handleRequest.manifest.pageRoutes.flatMap(function(route2) {\n var _route_layouts;\n if (route2.isNotFound) return [];\n if (!route2.file) return [];\n if (setting === \"flat\" && route2.file.split(\"/\").filter(function(x) {\n return !x.startsWith(\"(\");\n }).length > 3) {\n return [];\n }\n return [\n import_path.default.posix.join(`./${routerRoot2}`, route2.file),\n ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {\n if (!layout.contextKey) return [];\n return [\n import_path.default.posix.join(`./${routerRoot2}`, layout.contextKey)\n ];\n })) || []\n ];\n }))\n ];\n return {\n optimizeDeps: {\n /**\n * This adds all our routes and layouts as entries which fixes initial load making\n * optimizeDeps be triggered which causes hard refreshes (also on initial navigations)\n *\n * see: https://vitejs.dev/config/dep-optimization-options.html#optimizedeps-entries\n * and: https://github.com/remix-run/remix/pull/9921\n */\n entries: routesAndLayouts\n }\n };\n }\n },\n configureServer(serverIn) {\n var _server_environments, _clientEnv_config;\n server = serverIn;\n var clientEnv = (_server_environments = server.environments) === null || _server_environments === void 0 ? void 0 : _server_environments.client;\n if ((clientEnv === null || clientEnv === void 0 ? void 0 : (_clientEnv_config = clientEnv.config) === null || _clientEnv_config === void 0 ? void 0 : _clientEnv_config.isBundled) || (clientEnv === null || clientEnv === void 0 ? void 0 : clientEnv.bundledDev)) {\n preloads = [\n \"/bundledDevClient.mjs\",\n \"/assets/_virtual_one-entry.js\"\n ];\n }\n var workerDev = !!server.environments.worker;\n if (!workerDev) {\n runner = (0, import_vite.createServerModuleRunner)(server.environments.ssr);\n }\n var appDir = import_path.default.resolve(process.cwd(), (0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(options));\n var recreateRequestHandlerDebounced = (0, import_perfect_debounce.debounce)(function(changedPath) {\n recreateRequestHandler(changedPath);\n }, 100);\n var fileWatcherChangeListener = function fileWatcherChangeListener2(type, changedPath) {\n if ((0, import_routeFileWatch.isRouteFileWatchEvent)({\n event: type,\n filePath: changedPath,\n routerRoot: appDir\n })) {\n routeIndex.update(type, changedPath);\n return recreateRequestHandlerDebounced(changedPath);\n }\n };\n server.watcher.addListener(\"all\", fileWatcherChangeListener);\n var loaderDepChangeListener = (0, import_perfect_debounce.debounce)(function(changedPath) {\n var absolutePath = import_path.default.resolve(changedPath);\n var routePaths = loaderFileDependencies.get(absolutePath);\n if (routePaths && routePaths.size > 0) {\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] changed: ${absolutePath}, triggering loader refetch for routes:`, [\n ...routePaths\n ]);\n }\n server.hot.send({\n type: \"custom\",\n event: \"one:loader-data-update\",\n data: {\n routePaths: [\n ...routePaths\n ]\n }\n });\n ssgHtmlCache.clear();\n }\n }, 100);\n server.watcher.on(\"change\", loaderDepChangeListener);\n return function() {\n if (workerDev) {\n return;\n }\n server.middlewares.use(function(req, res, next) {\n var _req_url;\n if (req.url === \"/status\" || ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.startsWith(\"/status?\"))) {\n res.writeHead(200, {\n \"Content-Type\": \"text/plain\",\n \"X-React-Native-Project-Root\": new URL(`file:///${server.config.root}`).pathname.slice(1)\n });\n res.end(\"packager-status:running\");\n return;\n }\n next();\n });\n server.middlewares.use(async function(req, res, next) {\n res.setHeader(\"Cache-Control\", \"no-store\");\n var abortController = new AbortController();\n var cleanupAbortListeners = function cleanupAbortListeners1() {\n req.removeListener(\"aborted\", abortRequest);\n req.removeListener(\"close\", abortIncompleteRequest);\n res.removeListener(\"close\", abortIncompleteResponse);\n res.removeListener(\"finish\", cleanupAbortListeners);\n };\n var abortRequest = function abortRequest2() {\n cleanupAbortListeners();\n abortController.abort();\n };\n var abortIncompleteRequest = function abortIncompleteRequest2() {\n if (req.aborted || !req.complete) abortRequest();\n };\n var abortIncompleteResponse = function abortIncompleteResponse2() {\n if (!res.writableFinished) {\n abortRequest();\n return;\n }\n cleanupAbortListeners();\n };\n req.on(\"aborted\", abortRequest);\n req.on(\"close\", abortIncompleteRequest);\n res.on(\"close\", abortIncompleteResponse);\n res.on(\"finish\", cleanupAbortListeners);\n try {\n var _options_web;\n var redirects = (_options_web = options.web) === null || _options_web === void 0 ? void 0 : _options_web.redirects;\n if (redirects) {\n var url2 = new URL(req.url || \"\", \"http://127.0.0.1\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = function() {\n var redirect = _step.value;\n var regexStr = `^${redirect.source.replace(/:\\w+/g, \"([^/]+)\")}$`;\n var match = url2.pathname.match(new RegExp(regexStr));\n if (match) {\n var destination = redirect.destination;\n var params = redirect.source.match(/:\\w+/g);\n if (params) {\n params.forEach(function(param2, index) {\n destination = destination.replace(param2, match[index + 1] || \"\");\n });\n }\n if (debugRouter) {\n console.info(`[one] \\u21AA redirect ${url2.pathname} \\u2192 ${destination}`);\n }\n res.writeHead(redirect.permanent ? 301 : 302, {\n Location: destination\n });\n res.end();\n return {\n v: void 0\n };\n }\n };\n for (var _iterator = redirects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n if (_type_of(_ret) === \"object\") return _ret.v;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var reply = await handleRequest.handler(convertIncomingMessageToRequest(req, abortController.signal));\n if (!reply) {\n cleanupAbortListeners();\n return next();\n }\n if (typeof reply !== \"string\" && (0, import_isResponse.isResponse)(reply)) {\n if (debugRouter) {\n var headers = {};\n reply.headers.forEach(function(v, k) {\n headers[k] = v;\n });\n console.info(`[one] \\u{1F4E4} response ${reply.status}`, headers);\n }\n reply.headers.forEach(function(value, key) {\n if (key === \"set-cookie\") {\n var cookies = value.split(\", \");\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = cookies[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var cookie = _step2.value;\n res.appendHeader(\"Set-Cookie\", cookie);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else {\n res.setHeader(key, value);\n }\n });\n if ((0, import_isStatus.isStatusRedirect)(reply.status)) {\n var location = `${reply.headers.get(\"location\") || \"\"}`;\n if (debugRouter) {\n console.info(`[one] \\u21AA response redirect \\u2192 ${location}`);\n }\n if (location) {\n res.writeHead(reply.status, {\n Location: location\n });\n res.end();\n return;\n }\n console.error(`No location provided to redirected status reply`, reply);\n }\n res.statusCode = reply.status;\n if (reply.body) {\n if (reply.body.locked) {\n console.warn(`Body is locked??`, req.url);\n res.end();\n return;\n }\n try {\n var body = import_stream.Readable.fromWeb(reply.body);\n body.on(\"error\", function(error) {\n if (!abortController.signal.aborted) {\n console.warn(\"Error streaming reply body to response:\", error);\n }\n if (!res.destroyed) res.destroy();\n });\n body.pipe(res);\n } catch (err) {\n console.warn(\"Error piping reply body to response:\", err);\n res.end();\n }\n return;\n }\n res.end();\n return;\n }\n if (reply && typeof reply === \"object\") {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.write(JSON.stringify(reply));\n res.end();\n return;\n }\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.write(reply);\n res.end();\n return;\n } catch (error) {\n cleanupAbortListeners();\n console.error(`[one] routing error ${req.url}: ${error}`);\n next(error);\n }\n console.warn(`SSR handler didn't send a response for url: ${req.url}`);\n });\n };\n }\n };\n}\nvar convertIncomingMessageToRequest = function convertIncomingMessageToRequest2(req, signal) {\n if (!req.originalUrl) {\n throw new Error(`Can't convert: originalUrl is missing`);\n }\n var protocol = req.socket instanceof import_tls.TLSSocket && req.socket.encrypted ? \"https\" : \"http\";\n var host = `${req.headers[\"x-forwarded-host\"] || req.headers.host || req.headers[\":authority\"] || \"127.0.0.1\"}`;\n var urlBase = `${protocol}://${host}`;\n var urlString = req.originalUrl;\n var url2 = new URL(urlString, urlBase);\n var headers = new Headers();\n for (var key in req.headers) {\n if (!key.startsWith(\":\") && req.headers[key]) {\n headers.append(key, req.headers[key]);\n }\n }\n if (!headers.has(\"host\")) {\n headers.set(\"host\", host);\n }\n var hasBody = [\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\"\n ].includes(req.method || \"\");\n var body = hasBody ? import_stream.Readable.toWeb(req) : null;\n return new Request(url2, {\n method: req.method,\n headers,\n body,\n signal,\n // Required for streaming bodies in Node's experimental fetch:\n duplex: \"half\"\n });\n};\n//# sourceMappingURL=fileSystemRouterPlugin.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileSystemRouterPlugin.native.js","names":[],"sources":["cjs/vite/plugins/fileSystemRouterPlugin.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar fileSystemRouterPlugin_exports = {};\n__export(fileSystemRouterPlugin_exports, {\n createFileSystemRouterPlugin: () => createFileSystemRouterPlugin\n});\nmodule.exports = __toCommonJS(fileSystemRouterPlugin_exports);\nvar import_path = __toESM(require(\"path\"), 1);\nvar import_stream = require(\"stream\");\nvar import_tls = require(\"tls\");\nvar import_fast_glob = __toESM(require(\"fast-glob\"), 1);\nvar import_perfect_debounce = require(\"perfect-debounce\");\nvar import_picocolors = __toESM(require(\"picocolors\"), 1);\nvar import_vite = require(\"vite\");\nvar import_constants = require(\"../../constants\");\nvar import_createDevHandleRequest = require(\"../../createDevHandleRequest\");\nvar import_getPageExport = require(\"../../utils/getPageExport\");\nvar import_getRouterRootFromOneOptions = require(\"../../utils/getRouterRootFromOneOptions\");\nvar import_isResponse = require(\"../../utils/isResponse\");\nvar import_isStatus = require(\"../../utils/isStatus\");\nvar import_promiseWithResolvers = require(\"../../utils/promiseWithResolvers\");\nvar import_loaderSearchParams = require(\"../../loaderSearchParams\");\nvar import_routeFileWatch = require(\"../../utils/routeFileWatch\");\nvar import_trackLoaderDependencies = require(\"../../utils/trackLoaderDependencies\");\nvar import_one_server_only = require(\"../one-server-only\");\nvar import_virtualEntryConstants = require(\"./virtualEntryConstants\");\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction staticParamMatches(staticValue, urlValue) {\n var norm = function norm2(v) {\n return Array.isArray(v) ? v.join(\"/\") : String(v !== null && v !== void 0 ? v : \"\");\n };\n return norm(staticValue) === norm(urlValue);\n}\nvar debugRouter = process.env.ONE_DEBUG_ROUTER;\nvar debugLoaderDeps = process.env.ONE_DEBUG_LOADER_DEPS;\nvar routeTypeColors = {\n ssg: import_picocolors.default.green,\n ssr: import_picocolors.default.blue,\n spa: import_picocolors.default.yellow,\n api: import_picocolors.default.magenta\n};\nfunction createFileSystemRouterPlugin(options, routeIndex) {\n var preloads = [\n \"/@vite/client\",\n import_virtualEntryConstants.virtalEntryIdClient\n ];\n var runner;\n var server;\n var needsRouteRefresh = false;\n var loaderFileDependencies = /* @__PURE__ */ new Map();\n var LOADER_DEPS_MAX = 2e3;\n function setBoundedLoaderDep(filePath, routePath) {\n var deps = loaderFileDependencies.get(filePath);\n if (!deps) {\n if (loaderFileDependencies.size >= LOADER_DEPS_MAX) {\n var firstKey = loaderFileDependencies.keys().next().value;\n if (firstKey !== void 0) {\n loaderFileDependencies.delete(firstKey);\n }\n }\n deps = /* @__PURE__ */ new Set();\n loaderFileDependencies.set(filePath, deps);\n server === null || server === void 0 ? void 0 : server.watcher.add(filePath);\n }\n deps.add(routePath);\n }\n var handleRequest = createRequestHandler();\n var renderPromise = null;\n var ssgHtmlCache = /* @__PURE__ */ new Map();\n function getSsgHtmlCacheKey(route2, url2) {\n return `${route2.file}\n${url2.pathname}\n${url2.search}`;\n }\n function createRequestHandler() {\n var _options_router;\n var routerRoot = (0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(options);\n async function findNearestNotFoundPath(routeFile2) {\n var routeDir2 = routeFile2.replace(/\\/[^/]+$/, \"\");\n var searchDir2 = routeDir2;\n while (true) {\n for (var _i2 = 0, _iter2 = [\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\"\n ]; _i2 < _iter2.length; _i2++) {\n var ext2 = _iter2[_i2];\n var candidate2 = import_path.default.join(routerRoot, searchDir2, `+not-found${ext2}`);\n try {\n var mod = await runner.import(candidate2);\n if (mod === null || mod === void 0 ? void 0 : mod.default) {\n return searchDir2 ? `/${searchDir2}/+not-found` : \"/+not-found\";\n }\n } catch (unused) {\n }\n }\n if (!searchDir2) break;\n var parent2 = searchDir2.replace(/\\/[^/]+$/, \"\");\n if (parent2 === searchDir2) {\n searchDir2 = \"\";\n } else {\n searchDir2 = parent2;\n }\n }\n return \"/+not-found\";\n }\n return (0, import_createDevHandleRequest.createHandleRequest)({\n async handlePage(param) {\n var { route, url, loaderProps } = param;\n var _options_server;\n var ssgCacheKey = route.type === \"ssg\" ? getSsgHtmlCacheKey(route, url) : null;\n if (ssgCacheKey && !needsRouteRefresh) {\n var cachedHtml = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml) {\n return cachedHtml;\n }\n }\n if (((_options_server = options.server) === null || _options_server === void 0 ? void 0 : _options_server.loggingEnabled) !== false) {\n var colorType = routeTypeColors[route.type] || import_picocolors.default.white;\n var pathname = typeof url === \"string\" ? new URL(url).pathname : url.pathname;\n var file = route.isNotFound ? import_picocolors.default.red(\"404\") : import_picocolors.default.dim(`app/${route.file.slice(2)}`);\n console.info(` \\u24F5 ${colorType(`[${route.type}]`)} ${pathname} ${import_picocolors.default.dim(\"\\u2192\")} ${file}`);\n }\n var layouts = route.layouts || [];\n var isSpaShell = route.type === \"spa\" && layouts.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (route.type === \"spa\" && !isSpaShell) {\n var shell = `<!DOCTYPE html><html><head>\n ${(0, import_constants.getSpaHeaderElements)({\n serverContext: {\n mode: \"spa\"\n }\n })}\n <script type=\"module\" src=\"/@one/dev.js\"></script>\n <script type=\"module\" src=\"/@vite/client\" async=\"\"></script>\n <script type=\"module\" src=\"/@id/__x00__virtual:one-entry\" async=\"\"></script>\n </head></html>`;\n if (route.isNotFound) {\n return new Response(shell, {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n return shell;\n }\n if (renderPromise) {\n await renderPromise;\n }\n if (ssgCacheKey && !needsRouteRefresh) {\n var cachedHtml1 = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml1) {\n return cachedHtml1;\n }\n }\n var { promise, resolve: resolveRender } = (0, import_promiseWithResolvers.promiseWithResolvers)();\n renderPromise = promise;\n try {\n var _globalThis___vxrnresetState, _globalThis;\n var isGeneratedNotFound = route.file === \"\";\n var routeFile = isGeneratedNotFound ? \"\" : import_path.default.join(routerRoot, route.file);\n if (needsRouteRefresh) {\n globalThis[\"__vxrnVersion\"] = (globalThis[\"__vxrnVersion\"] || 0) + 1;\n ssgHtmlCache.clear();\n needsRouteRefresh = false;\n }\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n var exported = isGeneratedNotFound ? {} : await runner.import(routeFile);\n async function runLoaderWithTracking(routeNode, loaderFn, searchSchemas) {\n var routeId = routeNode.contextKey;\n if (!loaderFn) {\n return {\n loaderData: void 0,\n routeId\n };\n }\n try {\n var _ref;\n var props = searchSchemas ? (0, import_loaderSearchParams.withLoaderSearchParams)(searchSchemas, loaderProps) : loaderProps;\n var tracked = await (0, import_trackLoaderDependencies.trackLoaderDependencies)(function() {\n return loaderFn(props);\n });\n var routePath = ((loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\") + (route.type === \"ssr\" ? (_ref = loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.search) !== null && _ref !== void 0 ? _ref : \"\" : \"\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dep = _step.value;\n var absoluteDep = import_path.default.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return {\n loaderData: tracked.result,\n routeId\n };\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n throw err;\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"ENOENT\") {\n return {\n loaderData: void 0,\n routeId,\n isEnoent: true\n };\n }\n console.error(`[one] Error running loader for ${routeId}:`, err);\n return {\n loaderData: void 0,\n routeId\n };\n }\n }\n var loaderData;\n var matches;\n var pageResult;\n if (isSpaShell) {\n var layoutLoaderPromises = layouts.map(async function(layout) {\n var layoutFile = import_path.default.join(routerRoot, layout.contextKey);\n var layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader);\n });\n var layoutResults = await Promise.all(layoutLoaderPromises);\n matches = layoutResults.map(function(result) {\n return {\n routeId: result.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: result.loaderData\n };\n });\n loaderData = void 0;\n } else {\n var layoutRoutes = route.layouts || [];\n var pageRoute = {\n contextKey: route.file,\n file: route.file\n };\n var layoutLoaderPromises1 = layoutRoutes.map(async function(layout) {\n var layoutFile = import_path.default.join(routerRoot, layout.contextKey);\n var layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader, route.type === \"ssr\" ? (0, import_loaderSearchParams.getLoaderSearchSchemas)(layoutExported) : null);\n });\n var pageLoaderPromise = runLoaderWithTracking(pageRoute, exported.loader, route.type === \"ssr\" ? (0, import_loaderSearchParams.getLoaderSearchSchemas)(exported) : null);\n var layoutResults1;\n [layoutResults1, pageResult] = await Promise.all([\n Promise.all(layoutLoaderPromises1),\n pageLoaderPromise\n ]);\n matches = [\n ...layoutResults1.map(function(result) {\n return {\n routeId: result.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: result.loaderData\n };\n }),\n {\n routeId: pageResult.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: pageResult.loaderData\n }\n ];\n loaderData = pageResult.loaderData;\n }\n eval(`process.env.TAMAGUI_IS_SERVER = '1'`);\n var entry = await runner.import(import_virtualEntryConstants.virtualEntryId);\n var render = entry.default.render;\n (0, import_one_server_only.setServerContext)({\n loaderData,\n loaderProps,\n matches\n });\n var isDynamicRoute = Object.keys(route.routeKeys || {}).length > 0;\n var isMissingSsgSlug = false;\n if (route.type === \"ssg\" && isDynamicRoute && exported.generateStaticParams) {\n var staticParams = await exported.generateStaticParams({\n params: loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params\n });\n var currentParams = (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {};\n isMissingSsgSlug = !staticParams.some(function(sp) {\n return Object.keys(sp).every(function(key) {\n return staticParamMatches(sp[key], currentParams[key]);\n });\n });\n }\n var isLoaderEnoent = !isSpaShell && (pageResult === null || pageResult === void 0 ? void 0 : pageResult.isEnoent);\n var is404 = route.isNotFound || !(0, import_getPageExport.getPageExport)(exported) || isMissingSsgSlug || isLoaderEnoent;\n var notFoundRoutePath = null;\n if (isMissingSsgSlug || isLoaderEnoent) {\n var routeDir = route.file.replace(/^\\.\\//, \"\").replace(/\\/[^/]+$/, \"\");\n var searchDir = routeDir;\n while (true) {\n for (var _i = 0, _iter = [\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\"\n ]; _i < _iter.length; _i++) {\n var ext = _iter[_i];\n var candidate = import_path.default.join(routerRoot, searchDir, `+not-found${ext}`);\n try {\n var notFoundExported = await runner.import(candidate);\n if (notFoundExported === null || notFoundExported === void 0 ? void 0 : notFoundExported.default) {\n notFoundRoutePath = searchDir ? `/${searchDir}/+not-found` : \"/+not-found\";\n break;\n }\n } catch (unused) {\n }\n }\n if (notFoundRoutePath || !searchDir) break;\n var parent = searchDir.replace(/\\/[^/]+$/, \"\");\n if (parent === searchDir) {\n searchDir = \"\";\n } else {\n searchDir = parent;\n }\n }\n if (!notFoundRoutePath) {\n return new Response(\"<html><body><h1>404 - Not Found</h1></body></html>\", {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n }\n var renderPath = notFoundRoutePath || (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\";\n if (notFoundRoutePath && loaderProps) {\n loaderProps = {\n ...loaderProps,\n path: notFoundRoutePath\n };\n (0, import_one_server_only.setServerContext)({\n loaderProps\n });\n }\n var html = await render({\n mode: isSpaShell ? \"spa-shell\" : route.type === \"ssg\" ? \"ssg\" : route.type === \"ssr\" ? \"ssr\" : \"spa\",\n loaderData,\n loaderProps,\n path: renderPath,\n preloads,\n matches\n });\n if (is404) {\n if (notFoundRoutePath) {\n var originalPath = (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\";\n var notFoundMarker = `<script>window.__one404={originalPath:${JSON.stringify(originalPath)},notFoundPath:${JSON.stringify(notFoundRoutePath)}}</script>`;\n html = html.includes(\"</head>\") ? html.replace(\"</head>\", `${notFoundMarker}</head>`) : html.replace(\"<body\", `${notFoundMarker}<body`);\n }\n return new Response(html, {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n if (ssgCacheKey) {\n ssgHtmlCache.set(ssgCacheKey, html);\n }\n return html;\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n return err;\n }\n console.error(`SSR error while loading file ${route.file} from URL ${url.href}\n`, err);\n var title = `Error rendering ${url.pathname} on server`;\n var message = err instanceof Error ? err.message : `${err}`;\n var stack = err instanceof Error ? err.stack || \"\" : \"\";\n var isDuplicateReactError = /at (useEffect|useState|useReducer|useContext|useLayoutEffect)\\s*\\(.*?react\\.development\\.js/g.test(stack);\n var subMessage = isDuplicateReactError ? `\n <h2>Duplicate React Error</h2>\n <p style=\"font-size: 18px; line-height: 24px; max-width: 850px;\">Note: These types of errors happen during SSR because One needs all dependencies that use React to be optimized. Find the dependency on the line after the react.development.js line below to find the failing dependency. So long as that dependency has \"react\" as a sub-dependency, you can add it to your package.json and One will optimize it automatically. If it doesn't list it properly, you can fix this manually by changing your vite.config.ts One plugin to add \"one({ deps: { depName: true })\" so One optimizes depName.</p>\n ` : ``;\n console.error(`${title}\n ${message}\n\n${stack}\n`);\n return `\n <html>\n <body style=\"background: #000; color: #fff; padding: 5%; font-family: monospace; line-height: 2rem;\">\n <h1 style=\"display: inline-flex; background: red; color: white; padding: 5px; margin: -5px;\">${title}</h1>\n <h2>${message}</h2>\n ${subMessage}\n ${stack ? `<pre style=\"font-size: 15px; line-height: 24px; white-space: pre;\">\n ${stack}\n </pre>` : ``}\n </body>\n </html>\n `;\n } finally {\n resolveRender();\n }\n },\n async handleLoader(param2) {\n var { route: route2, url: url2, loaderProps: loaderProps2 } = param2;\n var _this;\n var routeFile2 = import_path.default.join(routerRoot, route2.file);\n var transformedJS = (_this = await server.transformRequest(routeFile2)) === null || _this === void 0 ? void 0 : _this.code;\n if (!transformedJS) {\n throw new Error(`No transformed js returned`);\n }\n var platform = url2.searchParams.get(\"platform\");\n if (!/export function loader\\(\\)/.test(transformedJS)) {\n return platform === \"ios\" || platform === \"android\" || platform === \"native\" ? \"exports.loader = () => undefined;\" : \"export function loader() { return undefined }\";\n }\n var exported2 = await runner.import(routeFile2);\n var isDynamicRoute2 = Object.keys(route2.routeKeys || {}).length > 0;\n if (route2.type === \"ssg\" && isDynamicRoute2 && exported2.generateStaticParams) {\n var staticParams2 = await exported2.generateStaticParams({\n params: loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.params\n });\n var currentParams2 = (loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.params) || {};\n var isValidSlug = staticParams2.some(function(sp) {\n return Object.keys(sp).every(function(key) {\n return staticParamMatches(sp[key], currentParams2[key]);\n });\n });\n if (!isValidSlug) {\n var nfPath = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n }\n var loaderData2;\n if (exported2.loader) {\n try {\n var _ref;\n var searchSchemas = route2.type === \"ssr\" ? (0, import_loaderSearchParams.getLoaderSearchSchemas)(exported2) : null;\n var runProps = searchSchemas ? (0, import_loaderSearchParams.withLoaderSearchParams)(searchSchemas, loaderProps2) : loaderProps2;\n var tracked = await (0, import_trackLoaderDependencies.trackLoaderDependencies)(function() {\n return exported2.loader(runProps);\n });\n loaderData2 = tracked.result;\n if ((0, import_isResponse.isResponse)(loaderData2)) {\n throw loaderData2;\n }\n var routePath = ((loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.path) || \"/\") + (route2.type === \"ssr\" ? (_ref = loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.search) !== null && _ref !== void 0 ? _ref : \"\" : \"\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dep = _step.value;\n var absoluteDep = import_path.default.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n throw err;\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"ENOENT\") {\n var nfPath1 = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath1)}}}`;\n }\n throw err;\n }\n }\n if (platform === \"ios\" || platform === \"android\" || platform === \"native\") {\n var environment = server.environments[platform === \"native\" ? \"ios\" : platform || \"\"];\n if (!environment) {\n throw new Error(`[handleLoader] No Vite environment found for platform '${platform}'`);\n }\n return `exports.loader = () => (${JSON.stringify(loaderData2)});`;\n }\n return `export function loader(){return ${JSON.stringify(loaderData2)}}`;\n },\n async handleAPI(param2) {\n var { route: route2 } = param2;\n return await runner.import(import_path.default.join(routerRoot, route2.file));\n },\n async loadMiddleware(route2) {\n return await runner.import(import_path.default.join(routerRoot, route2.contextKey));\n }\n }, {\n routerRoot,\n ignoredRouteFiles: (_options_router = options.router) === null || _options_router === void 0 ? void 0 : _options_router.ignoredRouteFiles,\n routePaths: routeIndex.getPaths()\n });\n }\n function recreateRequestHandler(changedPath) {\n try {\n var _server_environments_worker;\n handleRequest = createRequestHandler();\n ssgHtmlCache.clear();\n needsRouteRefresh = true;\n var workerGraph = server === null || server === void 0 ? void 0 : (_server_environments_worker = server.environments.worker) === null || _server_environments_worker === void 0 ? void 0 : _server_environments_worker.moduleGraph;\n var workerEntry = workerGraph === null || workerGraph === void 0 ? void 0 : workerGraph.getModuleById(\"\\0virtual:one-workerd-dev-entry\");\n if (workerGraph && workerEntry) {\n workerGraph.invalidateModule(workerEntry);\n }\n } catch (error) {\n console.warn(`[one] Failed to rebuild routes after ${changedPath} changed.`, error);\n }\n }\n return {\n name: `one-router-fs`,\n enforce: \"post\",\n apply: \"serve\",\n // the route tree we rendered from is built out of whatever route modules\n // were resolved at the time, so any ssr-side change makes it stale. this\n // runs inside vite's update sequence, after the graph has been invalidated,\n // so by the time the next render reads the flag the fresh modules are\n // already there to rebuild from.\n //\n // ask the graph rather than reading the `modules` argument: vite calls\n // hotUpdate for every watcher event including files it knows nothing about,\n // and an earlier plugin may have replaced `modules` (route-module-hmr-fix\n // returns [] for ssr app files to suppress the full reload).\n hotUpdate(param2) {\n var { file: file2 } = param2;\n var _this_environment_moduleGraph_getModulesByFile;\n if (this.environment.name !== \"ssr\") return;\n if (!((_this_environment_moduleGraph_getModulesByFile = this.environment.moduleGraph.getModulesByFile(file2)) === null || _this_environment_moduleGraph_getModulesByFile === void 0 ? void 0 : _this_environment_moduleGraph_getModulesByFile.size)) return;\n needsRouteRefresh = true;\n },\n async config() {\n var _ref;\n var _options_optimization;\n var setting = (_ref = (_options_optimization = options.optimization) === null || _options_optimization === void 0 ? void 0 : _options_optimization.autoEntriesScanning) !== null && _ref !== void 0 ? _ref : \"flat\";\n var routerRoot2 = (0, import_vite.normalizePath)((0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(options));\n if (setting === false) {\n return;\n }\n if (handleRequest.manifest.pageRoutes) {\n var routesAndLayouts = [\n ...new Set(handleRequest.manifest.pageRoutes.flatMap(function(route2) {\n var _route_layouts;\n if (route2.isNotFound) return [];\n if (!route2.file) return [];\n if (setting === \"flat\" && route2.file.split(\"/\").filter(function(x) {\n return !x.startsWith(\"(\");\n }).length > 3) {\n return [];\n }\n return [\n import_fast_glob.default.escapePath(import_path.default.posix.join(`./${routerRoot2}`, route2.file)),\n ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {\n if (!layout.contextKey) return [];\n return [\n import_fast_glob.default.escapePath(import_path.default.posix.join(`./${routerRoot2}`, layout.contextKey))\n ];\n })) || []\n ];\n }))\n ];\n return {\n optimizeDeps: {\n /**\n * This adds all our routes and layouts as entries which fixes initial load making\n * optimizeDeps be triggered which causes hard refreshes (also on initial navigations)\n *\n * see: https://vitejs.dev/config/dep-optimization-options.html#optimizedeps-entries\n * and: https://github.com/remix-run/remix/pull/9921\n */\n entries: routesAndLayouts\n }\n };\n }\n },\n configureServer(serverIn) {\n var _server_environments, _clientEnv_config;\n server = serverIn;\n var clientEnv = (_server_environments = server.environments) === null || _server_environments === void 0 ? void 0 : _server_environments.client;\n if ((clientEnv === null || clientEnv === void 0 ? void 0 : (_clientEnv_config = clientEnv.config) === null || _clientEnv_config === void 0 ? void 0 : _clientEnv_config.isBundled) || (clientEnv === null || clientEnv === void 0 ? void 0 : clientEnv.bundledDev)) {\n preloads = [\n \"/bundledDevClient.mjs\",\n \"/assets/_virtual_one-entry.js\"\n ];\n }\n var workerDev = !!server.environments.worker;\n if (!workerDev) {\n runner = (0, import_vite.createServerModuleRunner)(server.environments.ssr);\n }\n var appDir = import_path.default.resolve(process.cwd(), (0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(options));\n var recreateRequestHandlerDebounced = (0, import_perfect_debounce.debounce)(function(changedPath) {\n recreateRequestHandler(changedPath);\n }, 100);\n var fileWatcherChangeListener = function fileWatcherChangeListener2(type, changedPath) {\n if ((0, import_routeFileWatch.isRouteFileWatchEvent)({\n event: type,\n filePath: changedPath,\n routerRoot: appDir\n })) {\n routeIndex.update(type, changedPath);\n return recreateRequestHandlerDebounced(changedPath);\n }\n };\n server.watcher.addListener(\"all\", fileWatcherChangeListener);\n var loaderDepChangeListener = (0, import_perfect_debounce.debounce)(function(changedPath) {\n var absolutePath = import_path.default.resolve(changedPath);\n var routePaths = loaderFileDependencies.get(absolutePath);\n if (routePaths && routePaths.size > 0) {\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] changed: ${absolutePath}, triggering loader refetch for routes:`, [\n ...routePaths\n ]);\n }\n server.hot.send({\n type: \"custom\",\n event: \"one:loader-data-update\",\n data: {\n routePaths: [\n ...routePaths\n ]\n }\n });\n ssgHtmlCache.clear();\n }\n }, 100);\n server.watcher.on(\"change\", loaderDepChangeListener);\n return function() {\n if (workerDev) {\n return;\n }\n server.middlewares.use(function(req, res, next) {\n var _req_url;\n if (req.url === \"/status\" || ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.startsWith(\"/status?\"))) {\n res.writeHead(200, {\n \"Content-Type\": \"text/plain\",\n \"X-React-Native-Project-Root\": new URL(`file:///${server.config.root}`).pathname.slice(1)\n });\n res.end(\"packager-status:running\");\n return;\n }\n next();\n });\n server.middlewares.use(async function(req, res, next) {\n res.setHeader(\"Cache-Control\", \"no-store\");\n var abortController = new AbortController();\n var cleanupAbortListeners = function cleanupAbortListeners1() {\n req.removeListener(\"aborted\", abortRequest);\n req.removeListener(\"close\", abortIncompleteRequest);\n res.removeListener(\"close\", abortIncompleteResponse);\n res.removeListener(\"finish\", cleanupAbortListeners);\n };\n var abortRequest = function abortRequest2() {\n cleanupAbortListeners();\n abortController.abort();\n };\n var abortIncompleteRequest = function abortIncompleteRequest2() {\n if (req.aborted || !req.complete) abortRequest();\n };\n var abortIncompleteResponse = function abortIncompleteResponse2() {\n if (!res.writableFinished) {\n abortRequest();\n return;\n }\n cleanupAbortListeners();\n };\n req.on(\"aborted\", abortRequest);\n req.on(\"close\", abortIncompleteRequest);\n res.on(\"close\", abortIncompleteResponse);\n res.on(\"finish\", cleanupAbortListeners);\n try {\n var _options_web;\n var redirects = (_options_web = options.web) === null || _options_web === void 0 ? void 0 : _options_web.redirects;\n if (redirects) {\n var url2 = new URL(req.url || \"\", \"http://127.0.0.1\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = function() {\n var redirect = _step.value;\n var regexStr = `^${redirect.source.replace(/:\\w+/g, \"([^/]+)\")}$`;\n var match = url2.pathname.match(new RegExp(regexStr));\n if (match) {\n var destination = redirect.destination;\n var params = redirect.source.match(/:\\w+/g);\n if (params) {\n params.forEach(function(param2, index) {\n destination = destination.replace(param2, match[index + 1] || \"\");\n });\n }\n if (debugRouter) {\n console.info(`[one] \\u21AA redirect ${url2.pathname} \\u2192 ${destination}`);\n }\n res.writeHead(redirect.permanent ? 301 : 302, {\n Location: destination\n });\n res.end();\n return {\n v: void 0\n };\n }\n };\n for (var _iterator = redirects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n if (_type_of(_ret) === \"object\") return _ret.v;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var reply = await handleRequest.handler(convertIncomingMessageToRequest(req, abortController.signal));\n if (!reply) {\n cleanupAbortListeners();\n return next();\n }\n if (typeof reply !== \"string\" && (0, import_isResponse.isResponse)(reply)) {\n if (debugRouter) {\n var headers = {};\n reply.headers.forEach(function(v, k) {\n headers[k] = v;\n });\n console.info(`[one] \\u{1F4E4} response ${reply.status}`, headers);\n }\n reply.headers.forEach(function(value, key) {\n if (key === \"set-cookie\") {\n var cookies = value.split(\", \");\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = cookies[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var cookie = _step2.value;\n res.appendHeader(\"Set-Cookie\", cookie);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else {\n res.setHeader(key, value);\n }\n });\n if ((0, import_isStatus.isStatusRedirect)(reply.status)) {\n var location = `${reply.headers.get(\"location\") || \"\"}`;\n if (debugRouter) {\n console.info(`[one] \\u21AA response redirect \\u2192 ${location}`);\n }\n if (location) {\n res.writeHead(reply.status, {\n Location: location\n });\n res.end();\n return;\n }\n console.error(`No location provided to redirected status reply`, reply);\n }\n res.statusCode = reply.status;\n if (reply.body) {\n if (reply.body.locked) {\n console.warn(`Body is locked??`, req.url);\n res.end();\n return;\n }\n try {\n var body = import_stream.Readable.fromWeb(reply.body);\n body.on(\"error\", function(error) {\n if (!abortController.signal.aborted) {\n console.warn(\"Error streaming reply body to response:\", error);\n }\n if (!res.destroyed) res.destroy();\n });\n body.pipe(res);\n } catch (err) {\n console.warn(\"Error piping reply body to response:\", err);\n res.end();\n }\n return;\n }\n res.end();\n return;\n }\n if (reply && typeof reply === \"object\") {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.write(JSON.stringify(reply));\n res.end();\n return;\n }\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.write(reply);\n res.end();\n return;\n } catch (error) {\n cleanupAbortListeners();\n console.error(`[one] routing error ${req.url}: ${error}`);\n next(error);\n }\n console.warn(`SSR handler didn't send a response for url: ${req.url}`);\n });\n };\n }\n };\n}\nvar convertIncomingMessageToRequest = function convertIncomingMessageToRequest2(req, signal) {\n if (!req.originalUrl) {\n throw new Error(`Can't convert: originalUrl is missing`);\n }\n var protocol = req.socket instanceof import_tls.TLSSocket && req.socket.encrypted ? \"https\" : \"http\";\n var host = `${req.headers[\"x-forwarded-host\"] || req.headers.host || req.headers[\":authority\"] || \"127.0.0.1\"}`;\n var urlBase = `${protocol}://${host}`;\n var urlString = req.originalUrl;\n var url2 = new URL(urlString, urlBase);\n var headers = new Headers();\n for (var key in req.headers) {\n if (!key.startsWith(\":\") && req.headers[key]) {\n headers.append(key, req.headers[key]);\n }\n }\n if (!headers.has(\"host\")) {\n headers.set(\"host\", host);\n }\n var hasBody = [\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\"\n ].includes(req.method || \"\");\n var body = hasBody ? import_stream.Readable.toWeb(req) : null;\n return new Request(url2, {\n method: req.method,\n headers,\n body,\n signal,\n // Required for streaming bodies in Node's experimental fetch:\n duplex: \"half\"\n });\n};\n//# sourceMappingURL=fileSystemRouterPlugin.js.map\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { Readable } from "node:stream";
|
|
3
3
|
import { TLSSocket } from "node:tls";
|
|
4
|
+
import fastGlob from "fast-glob";
|
|
4
5
|
import { debounce } from "perfect-debounce";
|
|
5
6
|
import colors from "picocolors";
|
|
6
7
|
import { createServerModuleRunner, normalizePath } from "vite";
|
|
@@ -452,9 +453,9 @@ ${stack}
|
|
|
452
453
|
if (setting === "flat" && route2.file.split("/").filter((x) => !x.startsWith("(")).length > 3) {
|
|
453
454
|
return [];
|
|
454
455
|
}
|
|
455
|
-
return [path.posix.join(`./${routerRoot2}`, route2.file), ...route2.layouts?.flatMap((layout) => {
|
|
456
|
+
return [fastGlob.escapePath(path.posix.join(`./${routerRoot2}`, route2.file)), ...route2.layouts?.flatMap((layout) => {
|
|
456
457
|
if (!layout.contextKey) return [];
|
|
457
|
-
return [path.posix.join(`./${routerRoot2}`, layout.contextKey)];
|
|
458
|
+
return [fastGlob.escapePath(path.posix.join(`./${routerRoot2}`, layout.contextKey))];
|
|
458
459
|
}) || []];
|
|
459
460
|
}))];
|
|
460
461
|
return { optimizeDeps: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileSystemRouterPlugin.js","names":[],"sources":["esm/vite/plugins/fileSystemRouterPlugin.js"],"sourcesContent":["import path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { TLSSocket } from \"node:tls\";\nimport { debounce } from \"perfect-debounce\";\nimport colors from \"picocolors\";\nimport { createServerModuleRunner, normalizePath } from \"vite\";\nimport { getSpaHeaderElements } from \"../../constants\";\nimport { createHandleRequest } from \"../../createDevHandleRequest\";\nimport { getPageExport } from \"../../utils/getPageExport\";\nimport { getRouterRootFromOneOptions } from \"../../utils/getRouterRootFromOneOptions\";\nimport { isResponse } from \"../../utils/isResponse\";\nimport { isStatusRedirect } from \"../../utils/isStatus\";\nimport { promiseWithResolvers } from \"../../utils/promiseWithResolvers\";\nimport {\n getLoaderSearchSchemas,\n withLoaderSearchParams\n} from \"../../loaderSearchParams\";\nimport { isRouteFileWatchEvent } from \"../../utils/routeFileWatch\";\nimport { trackLoaderDependencies } from \"../../utils/trackLoaderDependencies\";\nimport { setServerContext } from \"../one-server-only\";\nimport { virtalEntryIdClient, virtualEntryId } from \"./virtualEntryConstants\";\nfunction staticParamMatches(staticValue, urlValue) {\n const norm = (v) => Array.isArray(v) ? v.join(\"/\") : String(v ?? \"\");\n return norm(staticValue) === norm(urlValue);\n}\nconst debugRouter = process.env.ONE_DEBUG_ROUTER;\nconst debugLoaderDeps = process.env.ONE_DEBUG_LOADER_DEPS;\nconst routeTypeColors = {\n ssg: colors.green,\n ssr: colors.blue,\n spa: colors.yellow,\n api: colors.magenta\n};\nfunction createFileSystemRouterPlugin(options, routeIndex) {\n let preloads = [\"/@vite/client\", virtalEntryIdClient];\n let runner;\n let server;\n let needsRouteRefresh = false;\n const loaderFileDependencies = /* @__PURE__ */ new Map();\n const LOADER_DEPS_MAX = 2e3;\n function setBoundedLoaderDep(filePath, routePath) {\n let deps = loaderFileDependencies.get(filePath);\n if (!deps) {\n if (loaderFileDependencies.size >= LOADER_DEPS_MAX) {\n const firstKey = loaderFileDependencies.keys().next().value;\n if (firstKey !== void 0) {\n loaderFileDependencies.delete(firstKey);\n }\n }\n deps = /* @__PURE__ */ new Set();\n loaderFileDependencies.set(filePath, deps);\n server?.watcher.add(filePath);\n }\n deps.add(routePath);\n }\n let handleRequest = createRequestHandler();\n let renderPromise = null;\n const ssgHtmlCache = /* @__PURE__ */ new Map();\n function getSsgHtmlCacheKey(route2, url2) {\n return `${route2.file}\n${url2.pathname}\n${url2.search}`;\n }\n function createRequestHandler() {\n const routerRoot = getRouterRootFromOneOptions(options);\n async function findNearestNotFoundPath(routeFile2) {\n const routeDir = routeFile2.replace(/\\/[^/]+$/, \"\");\n let searchDir = routeDir;\n while (true) {\n for (const ext of [\".tsx\", \".ts\", \".jsx\", \".js\"]) {\n const candidate = path.join(routerRoot, searchDir, `+not-found${ext}`);\n try {\n const mod = await runner.import(candidate);\n if (mod?.default) {\n return searchDir ? `/${searchDir}/+not-found` : \"/+not-found\";\n }\n } catch {\n }\n }\n if (!searchDir) break;\n const parent = searchDir.replace(/\\/[^/]+$/, \"\");\n if (parent === searchDir) {\n searchDir = \"\";\n } else {\n searchDir = parent;\n }\n }\n return \"/+not-found\";\n }\n return createHandleRequest(\n {\n async handlePage({ route, url, loaderProps }) {\n const ssgCacheKey = route.type === \"ssg\" ? getSsgHtmlCacheKey(route, url) : null;\n if (ssgCacheKey && !needsRouteRefresh) {\n const cachedHtml = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml) {\n return cachedHtml;\n }\n }\n if (options.server?.loggingEnabled !== false) {\n const colorType = routeTypeColors[route.type] || colors.white;\n const pathname = typeof url === \"string\" ? new URL(url).pathname : url.pathname;\n const file = route.isNotFound ? colors.red(\"404\") : colors.dim(`app/${route.file.slice(2)}`);\n console.info(\n ` \\u24F5 ${colorType(`[${route.type}]`)} ${pathname} ${colors.dim(\"\\u2192\")} ${file}`\n );\n }\n const layouts = route.layouts || [];\n const isSpaShell = route.type === \"spa\" && layouts.some(\n (layout) => layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\"\n );\n if (route.type === \"spa\" && !isSpaShell) {\n const shell = `<!DOCTYPE html><html><head>\n ${getSpaHeaderElements({ serverContext: { mode: \"spa\" } })}\n <script type=\"module\" src=\"/@one/dev.js\"></script>\n <script type=\"module\" src=\"/@vite/client\" async=\"\"></script>\n <script type=\"module\" src=\"/@id/__x00__virtual:one-entry\" async=\"\"></script>\n </head></html>`;\n if (route.isNotFound) {\n return new Response(shell, {\n status: 404,\n headers: { \"Content-Type\": \"text/html\" }\n });\n }\n return shell;\n }\n if (renderPromise) {\n await renderPromise;\n }\n if (ssgCacheKey && !needsRouteRefresh) {\n const cachedHtml = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml) {\n return cachedHtml;\n }\n }\n const { promise, resolve: resolveRender } = promiseWithResolvers();\n renderPromise = promise;\n try {\n const isGeneratedNotFound = route.file === \"\";\n const routeFile = isGeneratedNotFound ? \"\" : path.join(routerRoot, route.file);\n if (needsRouteRefresh) {\n globalThis[\"__vxrnVersion\"] = (globalThis[\"__vxrnVersion\"] || 0) + 1;\n ssgHtmlCache.clear();\n needsRouteRefresh = false;\n }\n globalThis[\"__vxrnresetState\"]?.();\n const exported = isGeneratedNotFound ? {} : await runner.import(routeFile);\n async function runLoaderWithTracking(routeNode, loaderFn, searchSchemas) {\n const routeId = routeNode.contextKey;\n if (!loaderFn) {\n return { loaderData: void 0, routeId };\n }\n try {\n const props = searchSchemas ? withLoaderSearchParams(searchSchemas, loaderProps) : loaderProps;\n const tracked = await trackLoaderDependencies(() => loaderFn(props));\n const routePath = (loaderProps?.path || \"/\") + (route.type === \"ssr\" ? loaderProps?.search ?? \"\" : \"\");\n for (const dep of tracked.dependencies) {\n const absoluteDep = path.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n return { loaderData: tracked.result, routeId };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if (err?.code === \"ENOENT\") {\n return { loaderData: void 0, routeId, isEnoent: true };\n }\n console.error(`[one] Error running loader for ${routeId}:`, err);\n return { loaderData: void 0, routeId };\n }\n }\n let loaderData;\n let matches;\n let pageResult;\n if (isSpaShell) {\n const layoutLoaderPromises = layouts.map(async (layout) => {\n const layoutFile = path.join(routerRoot, layout.contextKey);\n const layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader);\n });\n const layoutResults = await Promise.all(layoutLoaderPromises);\n matches = layoutResults.map((result) => ({\n routeId: result.routeId,\n pathname: loaderProps?.path || \"/\",\n params: loaderProps?.params || {},\n loaderData: result.loaderData\n }));\n loaderData = void 0;\n } else {\n const layoutRoutes = route.layouts || [];\n const pageRoute = { contextKey: route.file, file: route.file };\n const layoutLoaderPromises = layoutRoutes.map(async (layout) => {\n const layoutFile = path.join(routerRoot, layout.contextKey);\n const layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(\n layout,\n layoutExported.loader,\n route.type === \"ssr\" ? getLoaderSearchSchemas(layoutExported) : null\n );\n });\n const pageLoaderPromise = runLoaderWithTracking(\n pageRoute,\n exported.loader,\n route.type === \"ssr\" ? getLoaderSearchSchemas(exported) : null\n );\n let layoutResults;\n [layoutResults, pageResult] = await Promise.all([\n Promise.all(layoutLoaderPromises),\n pageLoaderPromise\n ]);\n matches = [\n ...layoutResults.map((result) => ({\n routeId: result.routeId,\n pathname: loaderProps?.path || \"/\",\n params: loaderProps?.params || {},\n loaderData: result.loaderData\n })),\n {\n routeId: pageResult.routeId,\n pathname: loaderProps?.path || \"/\",\n params: loaderProps?.params || {},\n loaderData: pageResult.loaderData\n }\n ];\n loaderData = pageResult.loaderData;\n }\n eval(`process.env.TAMAGUI_IS_SERVER = '1'`);\n const entry = await runner.import(virtualEntryId);\n const render = entry.default.render;\n setServerContext({\n loaderData,\n loaderProps,\n matches\n });\n const isDynamicRoute = Object.keys(route.routeKeys || {}).length > 0;\n let isMissingSsgSlug = false;\n if (route.type === \"ssg\" && isDynamicRoute && exported.generateStaticParams) {\n const staticParams = await exported.generateStaticParams({\n params: loaderProps?.params\n });\n const currentParams = loaderProps?.params || {};\n isMissingSsgSlug = !staticParams.some(\n (sp) => Object.keys(sp).every(\n (key) => staticParamMatches(sp[key], currentParams[key])\n )\n );\n }\n const isLoaderEnoent = !isSpaShell && pageResult?.isEnoent;\n const is404 = route.isNotFound || !getPageExport(exported) || isMissingSsgSlug || isLoaderEnoent;\n let notFoundRoutePath = null;\n if (isMissingSsgSlug || isLoaderEnoent) {\n const routeDir = route.file.replace(/^\\.\\//, \"\").replace(/\\/[^/]+$/, \"\");\n let searchDir = routeDir;\n while (true) {\n for (const ext of [\".tsx\", \".ts\", \".jsx\", \".js\"]) {\n const candidate = path.join(routerRoot, searchDir, `+not-found${ext}`);\n try {\n const notFoundExported = await runner.import(candidate);\n if (notFoundExported?.default) {\n notFoundRoutePath = searchDir ? `/${searchDir}/+not-found` : \"/+not-found\";\n break;\n }\n } catch {\n }\n }\n if (notFoundRoutePath || !searchDir) break;\n const parent = searchDir.replace(/\\/[^/]+$/, \"\");\n if (parent === searchDir) {\n searchDir = \"\";\n } else {\n searchDir = parent;\n }\n }\n if (!notFoundRoutePath) {\n return new Response(\n \"<html><body><h1>404 - Not Found</h1></body></html>\",\n {\n status: 404,\n headers: { \"Content-Type\": \"text/html\" }\n }\n );\n }\n }\n const renderPath = notFoundRoutePath || loaderProps?.path || \"/\";\n if (notFoundRoutePath && loaderProps) {\n loaderProps = { ...loaderProps, path: notFoundRoutePath };\n setServerContext({ loaderProps });\n }\n let html = await render({\n mode: isSpaShell ? \"spa-shell\" : route.type === \"ssg\" ? \"ssg\" : route.type === \"ssr\" ? \"ssr\" : \"spa\",\n loaderData,\n loaderProps,\n path: renderPath,\n preloads,\n matches\n });\n if (is404) {\n if (notFoundRoutePath) {\n const originalPath = loaderProps?.path || \"/\";\n const notFoundMarker = `<script>window.__one404={originalPath:${JSON.stringify(originalPath)},notFoundPath:${JSON.stringify(notFoundRoutePath)}}</script>`;\n html = html.includes(\"</head>\") ? html.replace(\"</head>\", `${notFoundMarker}</head>`) : html.replace(\"<body\", `${notFoundMarker}<body`);\n }\n return new Response(html, {\n status: 404,\n headers: { \"Content-Type\": \"text/html\" }\n });\n }\n if (ssgCacheKey) {\n ssgHtmlCache.set(ssgCacheKey, html);\n }\n return html;\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n console.error(\n `SSR error while loading file ${route.file} from URL ${url.href}\n`,\n err\n );\n const title = `Error rendering ${url.pathname} on server`;\n const message = err instanceof Error ? err.message : `${err}`;\n const stack = err instanceof Error ? err.stack || \"\" : \"\";\n const isDuplicateReactError = /at (useEffect|useState|useReducer|useContext|useLayoutEffect)\\s*\\(.*?react\\.development\\.js/g.test(\n stack\n );\n const subMessage = isDuplicateReactError ? `\n <h2>Duplicate React Error</h2>\n <p style=\"font-size: 18px; line-height: 24px; max-width: 850px;\">Note: These types of errors happen during SSR because One needs all dependencies that use React to be optimized. Find the dependency on the line after the react.development.js line below to find the failing dependency. So long as that dependency has \"react\" as a sub-dependency, you can add it to your package.json and One will optimize it automatically. If it doesn't list it properly, you can fix this manually by changing your vite.config.ts One plugin to add \"one({ deps: { depName: true })\" so One optimizes depName.</p>\n ` : ``;\n console.error(`${title}\n ${message}\n\n${stack}\n`);\n return `\n <html>\n <body style=\"background: #000; color: #fff; padding: 5%; font-family: monospace; line-height: 2rem;\">\n <h1 style=\"display: inline-flex; background: red; color: white; padding: 5px; margin: -5px;\">${title}</h1>\n <h2>${message}</h2>\n ${subMessage}\n ${stack ? `<pre style=\"font-size: 15px; line-height: 24px; white-space: pre;\">\n ${stack}\n </pre>` : ``}\n </body>\n </html>\n `;\n } finally {\n resolveRender();\n }\n },\n async handleLoader({ route: route2, url: url2, loaderProps: loaderProps2 }) {\n const routeFile2 = path.join(routerRoot, route2.file);\n const transformedJS = (await server.transformRequest(routeFile2))?.code;\n if (!transformedJS) {\n throw new Error(`No transformed js returned`);\n }\n const platform = url2.searchParams.get(\"platform\");\n if (!/export function loader\\(\\)/.test(transformedJS)) {\n return platform === \"ios\" || platform === \"android\" || platform === \"native\" ? \"exports.loader = () => undefined;\" : \"export function loader() { return undefined }\";\n }\n const exported2 = await runner.import(routeFile2);\n const isDynamicRoute2 = Object.keys(route2.routeKeys || {}).length > 0;\n if (route2.type === \"ssg\" && isDynamicRoute2 && exported2.generateStaticParams) {\n const staticParams = await exported2.generateStaticParams({\n params: loaderProps2?.params\n });\n const currentParams = loaderProps2?.params || {};\n const isValidSlug = staticParams.some(\n (sp) => Object.keys(sp).every(\n (key) => staticParamMatches(sp[key], currentParams[key])\n )\n );\n if (!isValidSlug) {\n const nfPath = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n }\n let loaderData2;\n if (exported2.loader) {\n try {\n const searchSchemas = route2.type === \"ssr\" ? getLoaderSearchSchemas(exported2) : null;\n const runProps = searchSchemas ? withLoaderSearchParams(searchSchemas, loaderProps2) : loaderProps2;\n const tracked = await trackLoaderDependencies(\n () => exported2.loader(runProps)\n );\n loaderData2 = tracked.result;\n if (isResponse(loaderData2)) {\n throw loaderData2;\n }\n const routePath = (loaderProps2?.path || \"/\") + (route2.type === \"ssr\" ? loaderProps2?.search ?? \"\" : \"\");\n for (const dep of tracked.dependencies) {\n const absoluteDep = path.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if (err?.code === \"ENOENT\") {\n const nfPath = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n throw err;\n }\n }\n if (platform === \"ios\" || platform === \"android\" || platform === \"native\") {\n const environment = server.environments[platform === \"native\" ? \"ios\" : platform || \"\"];\n if (!environment) {\n throw new Error(\n `[handleLoader] No Vite environment found for platform '${platform}'`\n );\n }\n return `exports.loader = () => (${JSON.stringify(loaderData2)});`;\n }\n return `export function loader(){return ${JSON.stringify(loaderData2)}}`;\n },\n async handleAPI({ route: route2 }) {\n return await runner.import(path.join(routerRoot, route2.file));\n },\n async loadMiddleware(route2) {\n return await runner.import(path.join(routerRoot, route2.contextKey));\n }\n },\n {\n routerRoot,\n ignoredRouteFiles: options.router?.ignoredRouteFiles,\n routePaths: routeIndex.getPaths()\n }\n );\n }\n function recreateRequestHandler(changedPath) {\n try {\n handleRequest = createRequestHandler();\n ssgHtmlCache.clear();\n needsRouteRefresh = true;\n const workerGraph = server?.environments.worker?.moduleGraph;\n const workerEntry = workerGraph?.getModuleById(\"\\0virtual:one-workerd-dev-entry\");\n if (workerGraph && workerEntry) {\n workerGraph.invalidateModule(workerEntry);\n }\n } catch (error) {\n console.warn(`[one] Failed to rebuild routes after ${changedPath} changed.`, error);\n }\n }\n return {\n name: `one-router-fs`,\n enforce: \"post\",\n apply: \"serve\",\n // the route tree we rendered from is built out of whatever route modules\n // were resolved at the time, so any ssr-side change makes it stale. this\n // runs inside vite's update sequence, after the graph has been invalidated,\n // so by the time the next render reads the flag the fresh modules are\n // already there to rebuild from.\n //\n // ask the graph rather than reading the `modules` argument: vite calls\n // hotUpdate for every watcher event including files it knows nothing about,\n // and an earlier plugin may have replaced `modules` (route-module-hmr-fix\n // returns [] for ssr app files to suppress the full reload).\n hotUpdate({ file }) {\n if (this.environment.name !== \"ssr\") return;\n if (!this.environment.moduleGraph.getModulesByFile(file)?.size) return;\n needsRouteRefresh = true;\n },\n async config() {\n const setting = options.optimization?.autoEntriesScanning ?? \"flat\";\n const routerRoot2 = normalizePath(getRouterRootFromOneOptions(options));\n if (setting === false) {\n return;\n }\n if (handleRequest.manifest.pageRoutes) {\n const routesAndLayouts = [\n ...new Set(\n handleRequest.manifest.pageRoutes.flatMap((route2) => {\n if (route2.isNotFound) return [];\n if (!route2.file) return [];\n if (setting === \"flat\" && route2.file.split(\"/\").filter((x) => !x.startsWith(\"(\")).length > 3) {\n return [];\n }\n return [\n path.posix.join(`./${routerRoot2}`, route2.file),\n ...route2.layouts?.flatMap((layout) => {\n if (!layout.contextKey) return [];\n return [path.posix.join(`./${routerRoot2}`, layout.contextKey)];\n }) || []\n ];\n })\n )\n ];\n return {\n optimizeDeps: {\n /**\n * This adds all our routes and layouts as entries which fixes initial load making\n * optimizeDeps be triggered which causes hard refreshes (also on initial navigations)\n *\n * see: https://vitejs.dev/config/dep-optimization-options.html#optimizedeps-entries\n * and: https://github.com/remix-run/remix/pull/9921\n */\n entries: routesAndLayouts\n }\n };\n }\n },\n configureServer(serverIn) {\n server = serverIn;\n const clientEnv = server.environments?.client;\n if (clientEnv?.config?.isBundled || clientEnv?.bundledDev) {\n preloads = [\"/bundledDevClient.mjs\", \"/assets/_virtual_one-entry.js\"];\n }\n const workerDev = !!server.environments.worker;\n if (!workerDev) {\n runner = createServerModuleRunner(server.environments.ssr);\n }\n const appDir = path.resolve(process.cwd(), getRouterRootFromOneOptions(options));\n const recreateRequestHandlerDebounced = debounce((changedPath) => {\n recreateRequestHandler(changedPath);\n }, 100);\n const fileWatcherChangeListener = (type, changedPath) => {\n if (isRouteFileWatchEvent({\n event: type,\n filePath: changedPath,\n routerRoot: appDir\n })) {\n routeIndex.update(type, changedPath);\n return recreateRequestHandlerDebounced(changedPath);\n }\n };\n server.watcher.addListener(\"all\", fileWatcherChangeListener);\n const loaderDepChangeListener = debounce((changedPath) => {\n const absolutePath = path.resolve(changedPath);\n const routePaths = loaderFileDependencies.get(absolutePath);\n if (routePaths && routePaths.size > 0) {\n if (debugLoaderDeps) {\n console.info(\n ` \\u24F5 [loader-dep] changed: ${absolutePath}, triggering loader refetch for routes:`,\n [...routePaths]\n );\n }\n server.hot.send({\n type: \"custom\",\n event: \"one:loader-data-update\",\n data: { routePaths: [...routePaths] }\n });\n ssgHtmlCache.clear();\n }\n }, 100);\n server.watcher.on(\"change\", loaderDepChangeListener);\n return () => {\n if (workerDev) {\n return;\n }\n server.middlewares.use((req, res, next) => {\n if (req.url === \"/status\" || req.url?.startsWith(\"/status?\")) {\n res.writeHead(200, {\n \"Content-Type\": \"text/plain\",\n \"X-React-Native-Project-Root\": new URL(\n `file:///${server.config.root}`\n ).pathname.slice(1)\n });\n res.end(\"packager-status:running\");\n return;\n }\n next();\n });\n server.middlewares.use(async (req, res, next) => {\n res.setHeader(\"Cache-Control\", \"no-store\");\n const abortController = new AbortController();\n const cleanupAbortListeners = () => {\n req.removeListener(\"aborted\", abortRequest);\n req.removeListener(\"close\", abortIncompleteRequest);\n res.removeListener(\"close\", abortIncompleteResponse);\n res.removeListener(\"finish\", cleanupAbortListeners);\n };\n const abortRequest = () => {\n cleanupAbortListeners();\n abortController.abort();\n };\n const abortIncompleteRequest = () => {\n if (req.aborted || !req.complete) abortRequest();\n };\n const abortIncompleteResponse = () => {\n if (!res.writableFinished) {\n abortRequest();\n return;\n }\n cleanupAbortListeners();\n };\n req.on(\"aborted\", abortRequest);\n req.on(\"close\", abortIncompleteRequest);\n res.on(\"close\", abortIncompleteResponse);\n res.on(\"finish\", cleanupAbortListeners);\n try {\n const redirects = options.web?.redirects;\n if (redirects) {\n const url2 = new URL(req.url || \"\", \"http://127.0.0.1\");\n for (const redirect of redirects) {\n const regexStr = `^${redirect.source.replace(/:\\w+/g, \"([^/]+)\")}$`;\n const match = url2.pathname.match(new RegExp(regexStr));\n if (match) {\n let destination = redirect.destination;\n const params = redirect.source.match(/:\\w+/g);\n if (params) {\n params.forEach((param, index) => {\n destination = destination.replace(param, match[index + 1] || \"\");\n });\n }\n if (debugRouter) {\n console.info(`[one] \\u21AA redirect ${url2.pathname} \\u2192 ${destination}`);\n }\n res.writeHead(redirect.permanent ? 301 : 302, {\n Location: destination\n });\n res.end();\n return;\n }\n }\n }\n const reply = await handleRequest.handler(\n convertIncomingMessageToRequest(req, abortController.signal)\n );\n if (!reply) {\n cleanupAbortListeners();\n return next();\n }\n if (typeof reply !== \"string\" && isResponse(reply)) {\n if (debugRouter) {\n const headers = {};\n reply.headers.forEach((v, k) => {\n headers[k] = v;\n });\n console.info(`[one] \\u{1F4E4} response ${reply.status}`, headers);\n }\n reply.headers.forEach((value, key) => {\n if (key === \"set-cookie\") {\n const cookies = value.split(\", \");\n for (const cookie of cookies) {\n res.appendHeader(\"Set-Cookie\", cookie);\n }\n } else {\n res.setHeader(key, value);\n }\n });\n if (isStatusRedirect(reply.status)) {\n const location = `${reply.headers.get(\"location\") || \"\"}`;\n if (debugRouter) {\n console.info(`[one] \\u21AA response redirect \\u2192 ${location}`);\n }\n if (location) {\n res.writeHead(reply.status, {\n Location: location\n });\n res.end();\n return;\n }\n console.error(`No location provided to redirected status reply`, reply);\n }\n res.statusCode = reply.status;\n if (reply.body) {\n if (reply.body.locked) {\n console.warn(`Body is locked??`, req.url);\n res.end();\n return;\n }\n try {\n const body = Readable.fromWeb(reply.body);\n body.on(\"error\", (error) => {\n if (!abortController.signal.aborted) {\n console.warn(\"Error streaming reply body to response:\", error);\n }\n if (!res.destroyed) res.destroy();\n });\n body.pipe(res);\n } catch (err) {\n console.warn(\"Error piping reply body to response:\", err);\n res.end();\n }\n return;\n }\n res.end();\n return;\n }\n if (reply && typeof reply === \"object\") {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.write(JSON.stringify(reply));\n res.end();\n return;\n }\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.write(reply);\n res.end();\n return;\n } catch (error) {\n cleanupAbortListeners();\n console.error(`[one] routing error ${req.url}: ${error}`);\n next(error);\n }\n console.warn(`SSR handler didn't send a response for url: ${req.url}`);\n });\n };\n }\n };\n}\nconst convertIncomingMessageToRequest = (req, signal) => {\n if (!req.originalUrl) {\n throw new Error(`Can't convert: originalUrl is missing`);\n }\n const protocol = req.socket instanceof TLSSocket && req.socket.encrypted ? \"https\" : \"http\";\n const host = `${req.headers[\"x-forwarded-host\"] || req.headers.host || req.headers[\":authority\"] || \"127.0.0.1\"}`;\n const urlBase = `${protocol}://${host}`;\n const urlString = req.originalUrl;\n const url2 = new URL(urlString, urlBase);\n const headers = new Headers();\n for (const key in req.headers) {\n if (!key.startsWith(\":\") && req.headers[key]) {\n headers.append(key, req.headers[key]);\n }\n }\n if (!headers.has(\"host\")) {\n headers.set(\"host\", host);\n }\n const hasBody = [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(req.method || \"\");\n const body = hasBody ? Readable.toWeb(req) : null;\n return new Request(url2, {\n method: req.method,\n headers,\n body,\n signal,\n // Required for streaming bodies in Node's experimental fetch:\n duplex: \"half\"\n });\n};\nexport {\n createFileSystemRouterPlugin\n};\n//# sourceMappingURL=fileSystemRouterPlugin.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileSystemRouterPlugin.js","names":[],"sources":["esm/vite/plugins/fileSystemRouterPlugin.js"],"sourcesContent":["import path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { TLSSocket } from \"node:tls\";\nimport fastGlob from \"fast-glob\";\nimport { debounce } from \"perfect-debounce\";\nimport colors from \"picocolors\";\nimport { createServerModuleRunner, normalizePath } from \"vite\";\nimport { getSpaHeaderElements } from \"../../constants\";\nimport { createHandleRequest } from \"../../createDevHandleRequest\";\nimport { getPageExport } from \"../../utils/getPageExport\";\nimport { getRouterRootFromOneOptions } from \"../../utils/getRouterRootFromOneOptions\";\nimport { isResponse } from \"../../utils/isResponse\";\nimport { isStatusRedirect } from \"../../utils/isStatus\";\nimport { promiseWithResolvers } from \"../../utils/promiseWithResolvers\";\nimport {\n getLoaderSearchSchemas,\n withLoaderSearchParams\n} from \"../../loaderSearchParams\";\nimport { isRouteFileWatchEvent } from \"../../utils/routeFileWatch\";\nimport { trackLoaderDependencies } from \"../../utils/trackLoaderDependencies\";\nimport { setServerContext } from \"../one-server-only\";\nimport { virtalEntryIdClient, virtualEntryId } from \"./virtualEntryConstants\";\nfunction staticParamMatches(staticValue, urlValue) {\n const norm = (v) => Array.isArray(v) ? v.join(\"/\") : String(v ?? \"\");\n return norm(staticValue) === norm(urlValue);\n}\nconst debugRouter = process.env.ONE_DEBUG_ROUTER;\nconst debugLoaderDeps = process.env.ONE_DEBUG_LOADER_DEPS;\nconst routeTypeColors = {\n ssg: colors.green,\n ssr: colors.blue,\n spa: colors.yellow,\n api: colors.magenta\n};\nfunction createFileSystemRouterPlugin(options, routeIndex) {\n let preloads = [\"/@vite/client\", virtalEntryIdClient];\n let runner;\n let server;\n let needsRouteRefresh = false;\n const loaderFileDependencies = /* @__PURE__ */ new Map();\n const LOADER_DEPS_MAX = 2e3;\n function setBoundedLoaderDep(filePath, routePath) {\n let deps = loaderFileDependencies.get(filePath);\n if (!deps) {\n if (loaderFileDependencies.size >= LOADER_DEPS_MAX) {\n const firstKey = loaderFileDependencies.keys().next().value;\n if (firstKey !== void 0) {\n loaderFileDependencies.delete(firstKey);\n }\n }\n deps = /* @__PURE__ */ new Set();\n loaderFileDependencies.set(filePath, deps);\n server?.watcher.add(filePath);\n }\n deps.add(routePath);\n }\n let handleRequest = createRequestHandler();\n let renderPromise = null;\n const ssgHtmlCache = /* @__PURE__ */ new Map();\n function getSsgHtmlCacheKey(route2, url2) {\n return `${route2.file}\n${url2.pathname}\n${url2.search}`;\n }\n function createRequestHandler() {\n const routerRoot = getRouterRootFromOneOptions(options);\n async function findNearestNotFoundPath(routeFile2) {\n const routeDir = routeFile2.replace(/\\/[^/]+$/, \"\");\n let searchDir = routeDir;\n while (true) {\n for (const ext of [\".tsx\", \".ts\", \".jsx\", \".js\"]) {\n const candidate = path.join(routerRoot, searchDir, `+not-found${ext}`);\n try {\n const mod = await runner.import(candidate);\n if (mod?.default) {\n return searchDir ? `/${searchDir}/+not-found` : \"/+not-found\";\n }\n } catch {\n }\n }\n if (!searchDir) break;\n const parent = searchDir.replace(/\\/[^/]+$/, \"\");\n if (parent === searchDir) {\n searchDir = \"\";\n } else {\n searchDir = parent;\n }\n }\n return \"/+not-found\";\n }\n return createHandleRequest(\n {\n async handlePage({ route, url, loaderProps }) {\n const ssgCacheKey = route.type === \"ssg\" ? getSsgHtmlCacheKey(route, url) : null;\n if (ssgCacheKey && !needsRouteRefresh) {\n const cachedHtml = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml) {\n return cachedHtml;\n }\n }\n if (options.server?.loggingEnabled !== false) {\n const colorType = routeTypeColors[route.type] || colors.white;\n const pathname = typeof url === \"string\" ? new URL(url).pathname : url.pathname;\n const file = route.isNotFound ? colors.red(\"404\") : colors.dim(`app/${route.file.slice(2)}`);\n console.info(\n ` \\u24F5 ${colorType(`[${route.type}]`)} ${pathname} ${colors.dim(\"\\u2192\")} ${file}`\n );\n }\n const layouts = route.layouts || [];\n const isSpaShell = route.type === \"spa\" && layouts.some(\n (layout) => layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\"\n );\n if (route.type === \"spa\" && !isSpaShell) {\n const shell = `<!DOCTYPE html><html><head>\n ${getSpaHeaderElements({ serverContext: { mode: \"spa\" } })}\n <script type=\"module\" src=\"/@one/dev.js\"></script>\n <script type=\"module\" src=\"/@vite/client\" async=\"\"></script>\n <script type=\"module\" src=\"/@id/__x00__virtual:one-entry\" async=\"\"></script>\n </head></html>`;\n if (route.isNotFound) {\n return new Response(shell, {\n status: 404,\n headers: { \"Content-Type\": \"text/html\" }\n });\n }\n return shell;\n }\n if (renderPromise) {\n await renderPromise;\n }\n if (ssgCacheKey && !needsRouteRefresh) {\n const cachedHtml = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml) {\n return cachedHtml;\n }\n }\n const { promise, resolve: resolveRender } = promiseWithResolvers();\n renderPromise = promise;\n try {\n const isGeneratedNotFound = route.file === \"\";\n const routeFile = isGeneratedNotFound ? \"\" : path.join(routerRoot, route.file);\n if (needsRouteRefresh) {\n globalThis[\"__vxrnVersion\"] = (globalThis[\"__vxrnVersion\"] || 0) + 1;\n ssgHtmlCache.clear();\n needsRouteRefresh = false;\n }\n globalThis[\"__vxrnresetState\"]?.();\n const exported = isGeneratedNotFound ? {} : await runner.import(routeFile);\n async function runLoaderWithTracking(routeNode, loaderFn, searchSchemas) {\n const routeId = routeNode.contextKey;\n if (!loaderFn) {\n return { loaderData: void 0, routeId };\n }\n try {\n const props = searchSchemas ? withLoaderSearchParams(searchSchemas, loaderProps) : loaderProps;\n const tracked = await trackLoaderDependencies(() => loaderFn(props));\n const routePath = (loaderProps?.path || \"/\") + (route.type === \"ssr\" ? loaderProps?.search ?? \"\" : \"\");\n for (const dep of tracked.dependencies) {\n const absoluteDep = path.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n return { loaderData: tracked.result, routeId };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if (err?.code === \"ENOENT\") {\n return { loaderData: void 0, routeId, isEnoent: true };\n }\n console.error(`[one] Error running loader for ${routeId}:`, err);\n return { loaderData: void 0, routeId };\n }\n }\n let loaderData;\n let matches;\n let pageResult;\n if (isSpaShell) {\n const layoutLoaderPromises = layouts.map(async (layout) => {\n const layoutFile = path.join(routerRoot, layout.contextKey);\n const layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader);\n });\n const layoutResults = await Promise.all(layoutLoaderPromises);\n matches = layoutResults.map((result) => ({\n routeId: result.routeId,\n pathname: loaderProps?.path || \"/\",\n params: loaderProps?.params || {},\n loaderData: result.loaderData\n }));\n loaderData = void 0;\n } else {\n const layoutRoutes = route.layouts || [];\n const pageRoute = { contextKey: route.file, file: route.file };\n const layoutLoaderPromises = layoutRoutes.map(async (layout) => {\n const layoutFile = path.join(routerRoot, layout.contextKey);\n const layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(\n layout,\n layoutExported.loader,\n route.type === \"ssr\" ? getLoaderSearchSchemas(layoutExported) : null\n );\n });\n const pageLoaderPromise = runLoaderWithTracking(\n pageRoute,\n exported.loader,\n route.type === \"ssr\" ? getLoaderSearchSchemas(exported) : null\n );\n let layoutResults;\n [layoutResults, pageResult] = await Promise.all([\n Promise.all(layoutLoaderPromises),\n pageLoaderPromise\n ]);\n matches = [\n ...layoutResults.map((result) => ({\n routeId: result.routeId,\n pathname: loaderProps?.path || \"/\",\n params: loaderProps?.params || {},\n loaderData: result.loaderData\n })),\n {\n routeId: pageResult.routeId,\n pathname: loaderProps?.path || \"/\",\n params: loaderProps?.params || {},\n loaderData: pageResult.loaderData\n }\n ];\n loaderData = pageResult.loaderData;\n }\n eval(`process.env.TAMAGUI_IS_SERVER = '1'`);\n const entry = await runner.import(virtualEntryId);\n const render = entry.default.render;\n setServerContext({\n loaderData,\n loaderProps,\n matches\n });\n const isDynamicRoute = Object.keys(route.routeKeys || {}).length > 0;\n let isMissingSsgSlug = false;\n if (route.type === \"ssg\" && isDynamicRoute && exported.generateStaticParams) {\n const staticParams = await exported.generateStaticParams({\n params: loaderProps?.params\n });\n const currentParams = loaderProps?.params || {};\n isMissingSsgSlug = !staticParams.some(\n (sp) => Object.keys(sp).every(\n (key) => staticParamMatches(sp[key], currentParams[key])\n )\n );\n }\n const isLoaderEnoent = !isSpaShell && pageResult?.isEnoent;\n const is404 = route.isNotFound || !getPageExport(exported) || isMissingSsgSlug || isLoaderEnoent;\n let notFoundRoutePath = null;\n if (isMissingSsgSlug || isLoaderEnoent) {\n const routeDir = route.file.replace(/^\\.\\//, \"\").replace(/\\/[^/]+$/, \"\");\n let searchDir = routeDir;\n while (true) {\n for (const ext of [\".tsx\", \".ts\", \".jsx\", \".js\"]) {\n const candidate = path.join(routerRoot, searchDir, `+not-found${ext}`);\n try {\n const notFoundExported = await runner.import(candidate);\n if (notFoundExported?.default) {\n notFoundRoutePath = searchDir ? `/${searchDir}/+not-found` : \"/+not-found\";\n break;\n }\n } catch {\n }\n }\n if (notFoundRoutePath || !searchDir) break;\n const parent = searchDir.replace(/\\/[^/]+$/, \"\");\n if (parent === searchDir) {\n searchDir = \"\";\n } else {\n searchDir = parent;\n }\n }\n if (!notFoundRoutePath) {\n return new Response(\n \"<html><body><h1>404 - Not Found</h1></body></html>\",\n {\n status: 404,\n headers: { \"Content-Type\": \"text/html\" }\n }\n );\n }\n }\n const renderPath = notFoundRoutePath || loaderProps?.path || \"/\";\n if (notFoundRoutePath && loaderProps) {\n loaderProps = { ...loaderProps, path: notFoundRoutePath };\n setServerContext({ loaderProps });\n }\n let html = await render({\n mode: isSpaShell ? \"spa-shell\" : route.type === \"ssg\" ? \"ssg\" : route.type === \"ssr\" ? \"ssr\" : \"spa\",\n loaderData,\n loaderProps,\n path: renderPath,\n preloads,\n matches\n });\n if (is404) {\n if (notFoundRoutePath) {\n const originalPath = loaderProps?.path || \"/\";\n const notFoundMarker = `<script>window.__one404={originalPath:${JSON.stringify(originalPath)},notFoundPath:${JSON.stringify(notFoundRoutePath)}}</script>`;\n html = html.includes(\"</head>\") ? html.replace(\"</head>\", `${notFoundMarker}</head>`) : html.replace(\"<body\", `${notFoundMarker}<body`);\n }\n return new Response(html, {\n status: 404,\n headers: { \"Content-Type\": \"text/html\" }\n });\n }\n if (ssgCacheKey) {\n ssgHtmlCache.set(ssgCacheKey, html);\n }\n return html;\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n console.error(\n `SSR error while loading file ${route.file} from URL ${url.href}\n`,\n err\n );\n const title = `Error rendering ${url.pathname} on server`;\n const message = err instanceof Error ? err.message : `${err}`;\n const stack = err instanceof Error ? err.stack || \"\" : \"\";\n const isDuplicateReactError = /at (useEffect|useState|useReducer|useContext|useLayoutEffect)\\s*\\(.*?react\\.development\\.js/g.test(\n stack\n );\n const subMessage = isDuplicateReactError ? `\n <h2>Duplicate React Error</h2>\n <p style=\"font-size: 18px; line-height: 24px; max-width: 850px;\">Note: These types of errors happen during SSR because One needs all dependencies that use React to be optimized. Find the dependency on the line after the react.development.js line below to find the failing dependency. So long as that dependency has \"react\" as a sub-dependency, you can add it to your package.json and One will optimize it automatically. If it doesn't list it properly, you can fix this manually by changing your vite.config.ts One plugin to add \"one({ deps: { depName: true })\" so One optimizes depName.</p>\n ` : ``;\n console.error(`${title}\n ${message}\n\n${stack}\n`);\n return `\n <html>\n <body style=\"background: #000; color: #fff; padding: 5%; font-family: monospace; line-height: 2rem;\">\n <h1 style=\"display: inline-flex; background: red; color: white; padding: 5px; margin: -5px;\">${title}</h1>\n <h2>${message}</h2>\n ${subMessage}\n ${stack ? `<pre style=\"font-size: 15px; line-height: 24px; white-space: pre;\">\n ${stack}\n </pre>` : ``}\n </body>\n </html>\n `;\n } finally {\n resolveRender();\n }\n },\n async handleLoader({ route: route2, url: url2, loaderProps: loaderProps2 }) {\n const routeFile2 = path.join(routerRoot, route2.file);\n const transformedJS = (await server.transformRequest(routeFile2))?.code;\n if (!transformedJS) {\n throw new Error(`No transformed js returned`);\n }\n const platform = url2.searchParams.get(\"platform\");\n if (!/export function loader\\(\\)/.test(transformedJS)) {\n return platform === \"ios\" || platform === \"android\" || platform === \"native\" ? \"exports.loader = () => undefined;\" : \"export function loader() { return undefined }\";\n }\n const exported2 = await runner.import(routeFile2);\n const isDynamicRoute2 = Object.keys(route2.routeKeys || {}).length > 0;\n if (route2.type === \"ssg\" && isDynamicRoute2 && exported2.generateStaticParams) {\n const staticParams = await exported2.generateStaticParams({\n params: loaderProps2?.params\n });\n const currentParams = loaderProps2?.params || {};\n const isValidSlug = staticParams.some(\n (sp) => Object.keys(sp).every(\n (key) => staticParamMatches(sp[key], currentParams[key])\n )\n );\n if (!isValidSlug) {\n const nfPath = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n }\n let loaderData2;\n if (exported2.loader) {\n try {\n const searchSchemas = route2.type === \"ssr\" ? getLoaderSearchSchemas(exported2) : null;\n const runProps = searchSchemas ? withLoaderSearchParams(searchSchemas, loaderProps2) : loaderProps2;\n const tracked = await trackLoaderDependencies(\n () => exported2.loader(runProps)\n );\n loaderData2 = tracked.result;\n if (isResponse(loaderData2)) {\n throw loaderData2;\n }\n const routePath = (loaderProps2?.path || \"/\") + (route2.type === \"ssr\" ? loaderProps2?.search ?? \"\" : \"\");\n for (const dep of tracked.dependencies) {\n const absoluteDep = path.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if (err?.code === \"ENOENT\") {\n const nfPath = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n throw err;\n }\n }\n if (platform === \"ios\" || platform === \"android\" || platform === \"native\") {\n const environment = server.environments[platform === \"native\" ? \"ios\" : platform || \"\"];\n if (!environment) {\n throw new Error(\n `[handleLoader] No Vite environment found for platform '${platform}'`\n );\n }\n return `exports.loader = () => (${JSON.stringify(loaderData2)});`;\n }\n return `export function loader(){return ${JSON.stringify(loaderData2)}}`;\n },\n async handleAPI({ route: route2 }) {\n return await runner.import(path.join(routerRoot, route2.file));\n },\n async loadMiddleware(route2) {\n return await runner.import(path.join(routerRoot, route2.contextKey));\n }\n },\n {\n routerRoot,\n ignoredRouteFiles: options.router?.ignoredRouteFiles,\n routePaths: routeIndex.getPaths()\n }\n );\n }\n function recreateRequestHandler(changedPath) {\n try {\n handleRequest = createRequestHandler();\n ssgHtmlCache.clear();\n needsRouteRefresh = true;\n const workerGraph = server?.environments.worker?.moduleGraph;\n const workerEntry = workerGraph?.getModuleById(\"\\0virtual:one-workerd-dev-entry\");\n if (workerGraph && workerEntry) {\n workerGraph.invalidateModule(workerEntry);\n }\n } catch (error) {\n console.warn(`[one] Failed to rebuild routes after ${changedPath} changed.`, error);\n }\n }\n return {\n name: `one-router-fs`,\n enforce: \"post\",\n apply: \"serve\",\n // the route tree we rendered from is built out of whatever route modules\n // were resolved at the time, so any ssr-side change makes it stale. this\n // runs inside vite's update sequence, after the graph has been invalidated,\n // so by the time the next render reads the flag the fresh modules are\n // already there to rebuild from.\n //\n // ask the graph rather than reading the `modules` argument: vite calls\n // hotUpdate for every watcher event including files it knows nothing about,\n // and an earlier plugin may have replaced `modules` (route-module-hmr-fix\n // returns [] for ssr app files to suppress the full reload).\n hotUpdate({ file }) {\n if (this.environment.name !== \"ssr\") return;\n if (!this.environment.moduleGraph.getModulesByFile(file)?.size) return;\n needsRouteRefresh = true;\n },\n async config() {\n const setting = options.optimization?.autoEntriesScanning ?? \"flat\";\n const routerRoot2 = normalizePath(getRouterRootFromOneOptions(options));\n if (setting === false) {\n return;\n }\n if (handleRequest.manifest.pageRoutes) {\n const routesAndLayouts = [\n ...new Set(\n handleRequest.manifest.pageRoutes.flatMap((route2) => {\n if (route2.isNotFound) return [];\n if (!route2.file) return [];\n if (setting === \"flat\" && route2.file.split(\"/\").filter((x) => !x.startsWith(\"(\")).length > 3) {\n return [];\n }\n return [\n fastGlob.escapePath(path.posix.join(`./${routerRoot2}`, route2.file)),\n ...route2.layouts?.flatMap((layout) => {\n if (!layout.contextKey) return [];\n return [\n fastGlob.escapePath(\n path.posix.join(`./${routerRoot2}`, layout.contextKey)\n )\n ];\n }) || []\n ];\n })\n )\n ];\n return {\n optimizeDeps: {\n /**\n * This adds all our routes and layouts as entries which fixes initial load making\n * optimizeDeps be triggered which causes hard refreshes (also on initial navigations)\n *\n * see: https://vitejs.dev/config/dep-optimization-options.html#optimizedeps-entries\n * and: https://github.com/remix-run/remix/pull/9921\n */\n entries: routesAndLayouts\n }\n };\n }\n },\n configureServer(serverIn) {\n server = serverIn;\n const clientEnv = server.environments?.client;\n if (clientEnv?.config?.isBundled || clientEnv?.bundledDev) {\n preloads = [\"/bundledDevClient.mjs\", \"/assets/_virtual_one-entry.js\"];\n }\n const workerDev = !!server.environments.worker;\n if (!workerDev) {\n runner = createServerModuleRunner(server.environments.ssr);\n }\n const appDir = path.resolve(process.cwd(), getRouterRootFromOneOptions(options));\n const recreateRequestHandlerDebounced = debounce((changedPath) => {\n recreateRequestHandler(changedPath);\n }, 100);\n const fileWatcherChangeListener = (type, changedPath) => {\n if (isRouteFileWatchEvent({\n event: type,\n filePath: changedPath,\n routerRoot: appDir\n })) {\n routeIndex.update(type, changedPath);\n return recreateRequestHandlerDebounced(changedPath);\n }\n };\n server.watcher.addListener(\"all\", fileWatcherChangeListener);\n const loaderDepChangeListener = debounce((changedPath) => {\n const absolutePath = path.resolve(changedPath);\n const routePaths = loaderFileDependencies.get(absolutePath);\n if (routePaths && routePaths.size > 0) {\n if (debugLoaderDeps) {\n console.info(\n ` \\u24F5 [loader-dep] changed: ${absolutePath}, triggering loader refetch for routes:`,\n [...routePaths]\n );\n }\n server.hot.send({\n type: \"custom\",\n event: \"one:loader-data-update\",\n data: { routePaths: [...routePaths] }\n });\n ssgHtmlCache.clear();\n }\n }, 100);\n server.watcher.on(\"change\", loaderDepChangeListener);\n return () => {\n if (workerDev) {\n return;\n }\n server.middlewares.use((req, res, next) => {\n if (req.url === \"/status\" || req.url?.startsWith(\"/status?\")) {\n res.writeHead(200, {\n \"Content-Type\": \"text/plain\",\n \"X-React-Native-Project-Root\": new URL(\n `file:///${server.config.root}`\n ).pathname.slice(1)\n });\n res.end(\"packager-status:running\");\n return;\n }\n next();\n });\n server.middlewares.use(async (req, res, next) => {\n res.setHeader(\"Cache-Control\", \"no-store\");\n const abortController = new AbortController();\n const cleanupAbortListeners = () => {\n req.removeListener(\"aborted\", abortRequest);\n req.removeListener(\"close\", abortIncompleteRequest);\n res.removeListener(\"close\", abortIncompleteResponse);\n res.removeListener(\"finish\", cleanupAbortListeners);\n };\n const abortRequest = () => {\n cleanupAbortListeners();\n abortController.abort();\n };\n const abortIncompleteRequest = () => {\n if (req.aborted || !req.complete) abortRequest();\n };\n const abortIncompleteResponse = () => {\n if (!res.writableFinished) {\n abortRequest();\n return;\n }\n cleanupAbortListeners();\n };\n req.on(\"aborted\", abortRequest);\n req.on(\"close\", abortIncompleteRequest);\n res.on(\"close\", abortIncompleteResponse);\n res.on(\"finish\", cleanupAbortListeners);\n try {\n const redirects = options.web?.redirects;\n if (redirects) {\n const url2 = new URL(req.url || \"\", \"http://127.0.0.1\");\n for (const redirect of redirects) {\n const regexStr = `^${redirect.source.replace(/:\\w+/g, \"([^/]+)\")}$`;\n const match = url2.pathname.match(new RegExp(regexStr));\n if (match) {\n let destination = redirect.destination;\n const params = redirect.source.match(/:\\w+/g);\n if (params) {\n params.forEach((param, index) => {\n destination = destination.replace(param, match[index + 1] || \"\");\n });\n }\n if (debugRouter) {\n console.info(`[one] \\u21AA redirect ${url2.pathname} \\u2192 ${destination}`);\n }\n res.writeHead(redirect.permanent ? 301 : 302, {\n Location: destination\n });\n res.end();\n return;\n }\n }\n }\n const reply = await handleRequest.handler(\n convertIncomingMessageToRequest(req, abortController.signal)\n );\n if (!reply) {\n cleanupAbortListeners();\n return next();\n }\n if (typeof reply !== \"string\" && isResponse(reply)) {\n if (debugRouter) {\n const headers = {};\n reply.headers.forEach((v, k) => {\n headers[k] = v;\n });\n console.info(`[one] \\u{1F4E4} response ${reply.status}`, headers);\n }\n reply.headers.forEach((value, key) => {\n if (key === \"set-cookie\") {\n const cookies = value.split(\", \");\n for (const cookie of cookies) {\n res.appendHeader(\"Set-Cookie\", cookie);\n }\n } else {\n res.setHeader(key, value);\n }\n });\n if (isStatusRedirect(reply.status)) {\n const location = `${reply.headers.get(\"location\") || \"\"}`;\n if (debugRouter) {\n console.info(`[one] \\u21AA response redirect \\u2192 ${location}`);\n }\n if (location) {\n res.writeHead(reply.status, {\n Location: location\n });\n res.end();\n return;\n }\n console.error(`No location provided to redirected status reply`, reply);\n }\n res.statusCode = reply.status;\n if (reply.body) {\n if (reply.body.locked) {\n console.warn(`Body is locked??`, req.url);\n res.end();\n return;\n }\n try {\n const body = Readable.fromWeb(reply.body);\n body.on(\"error\", (error) => {\n if (!abortController.signal.aborted) {\n console.warn(\"Error streaming reply body to response:\", error);\n }\n if (!res.destroyed) res.destroy();\n });\n body.pipe(res);\n } catch (err) {\n console.warn(\"Error piping reply body to response:\", err);\n res.end();\n }\n return;\n }\n res.end();\n return;\n }\n if (reply && typeof reply === \"object\") {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.write(JSON.stringify(reply));\n res.end();\n return;\n }\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.write(reply);\n res.end();\n return;\n } catch (error) {\n cleanupAbortListeners();\n console.error(`[one] routing error ${req.url}: ${error}`);\n next(error);\n }\n console.warn(`SSR handler didn't send a response for url: ${req.url}`);\n });\n };\n }\n };\n}\nconst convertIncomingMessageToRequest = (req, signal) => {\n if (!req.originalUrl) {\n throw new Error(`Can't convert: originalUrl is missing`);\n }\n const protocol = req.socket instanceof TLSSocket && req.socket.encrypted ? \"https\" : \"http\";\n const host = `${req.headers[\"x-forwarded-host\"] || req.headers.host || req.headers[\":authority\"] || \"127.0.0.1\"}`;\n const urlBase = `${protocol}://${host}`;\n const urlString = req.originalUrl;\n const url2 = new URL(urlString, urlBase);\n const headers = new Headers();\n for (const key in req.headers) {\n if (!key.startsWith(\":\") && req.headers[key]) {\n headers.append(key, req.headers[key]);\n }\n }\n if (!headers.has(\"host\")) {\n headers.set(\"host\", host);\n }\n const hasBody = [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(req.method || \"\");\n const body = hasBody ? Readable.toWeb(req) : null;\n return new Request(url2, {\n method: req.method,\n headers,\n body,\n signal,\n // Required for streaming bodies in Node's experimental fetch:\n duplex: \"half\"\n });\n};\nexport {\n createFileSystemRouterPlugin\n};\n//# sourceMappingURL=fileSystemRouterPlugin.js.map\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import { Readable } from "stream";
|
|
3
3
|
import { TLSSocket } from "tls";
|
|
4
|
+
import fastGlob from "fast-glob";
|
|
4
5
|
import { debounce } from "perfect-debounce";
|
|
5
6
|
import colors from "picocolors";
|
|
6
7
|
import { createServerModuleRunner, normalizePath } from "vite";
|
|
@@ -529,9 +530,9 @@ ${stack}
|
|
|
529
530
|
}).length > 3) {
|
|
530
531
|
return [];
|
|
531
532
|
}
|
|
532
|
-
return [path.posix.join(`./${routerRoot2}`, route2.file), ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {
|
|
533
|
+
return [fastGlob.escapePath(path.posix.join(`./${routerRoot2}`, route2.file)), ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {
|
|
533
534
|
if (!layout.contextKey) return [];
|
|
534
|
-
return [path.posix.join(`./${routerRoot2}`, layout.contextKey)];
|
|
535
|
+
return [fastGlob.escapePath(path.posix.join(`./${routerRoot2}`, layout.contextKey))];
|
|
535
536
|
})) || []];
|
|
536
537
|
}))];
|
|
537
538
|
return { optimizeDeps: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileSystemRouterPlugin.native.js","names":[],"sources":["esm/vite/plugins/fileSystemRouterPlugin.native.js"],"sourcesContent":["import path from \"path\";\nimport { Readable } from \"stream\";\nimport { TLSSocket } from \"tls\";\nimport { debounce } from \"perfect-debounce\";\nimport colors from \"picocolors\";\nimport { createServerModuleRunner, normalizePath } from \"vite\";\nimport { getSpaHeaderElements } from \"../../constants\";\nimport { createHandleRequest } from \"../../createDevHandleRequest\";\nimport { getPageExport } from \"../../utils/getPageExport\";\nimport { getRouterRootFromOneOptions } from \"../../utils/getRouterRootFromOneOptions\";\nimport { isResponse } from \"../../utils/isResponse\";\nimport { isStatusRedirect } from \"../../utils/isStatus\";\nimport { promiseWithResolvers } from \"../../utils/promiseWithResolvers\";\nimport { getLoaderSearchSchemas, withLoaderSearchParams } from \"../../loaderSearchParams\";\nimport { isRouteFileWatchEvent } from \"../../utils/routeFileWatch\";\nimport { trackLoaderDependencies } from \"../../utils/trackLoaderDependencies\";\nimport { setServerContext } from \"../one-server-only\";\nimport { virtalEntryIdClient, virtualEntryId } from \"./virtualEntryConstants\";\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction staticParamMatches(staticValue, urlValue) {\n var norm = function norm2(v) {\n return Array.isArray(v) ? v.join(\"/\") : String(v !== null && v !== void 0 ? v : \"\");\n };\n return norm(staticValue) === norm(urlValue);\n}\nvar debugRouter = process.env.ONE_DEBUG_ROUTER;\nvar debugLoaderDeps = process.env.ONE_DEBUG_LOADER_DEPS;\nvar routeTypeColors = {\n ssg: colors.green,\n ssr: colors.blue,\n spa: colors.yellow,\n api: colors.magenta\n};\nfunction createFileSystemRouterPlugin(options, routeIndex) {\n var preloads = [\n \"/@vite/client\",\n virtalEntryIdClient\n ];\n var runner;\n var server;\n var needsRouteRefresh = false;\n var loaderFileDependencies = /* @__PURE__ */ new Map();\n var LOADER_DEPS_MAX = 2e3;\n function setBoundedLoaderDep(filePath, routePath) {\n var deps = loaderFileDependencies.get(filePath);\n if (!deps) {\n if (loaderFileDependencies.size >= LOADER_DEPS_MAX) {\n var firstKey = loaderFileDependencies.keys().next().value;\n if (firstKey !== void 0) {\n loaderFileDependencies.delete(firstKey);\n }\n }\n deps = /* @__PURE__ */ new Set();\n loaderFileDependencies.set(filePath, deps);\n server === null || server === void 0 ? void 0 : server.watcher.add(filePath);\n }\n deps.add(routePath);\n }\n var handleRequest = createRequestHandler();\n var renderPromise = null;\n var ssgHtmlCache = /* @__PURE__ */ new Map();\n function getSsgHtmlCacheKey(route2, url2) {\n return `${route2.file}\n${url2.pathname}\n${url2.search}`;\n }\n function createRequestHandler() {\n var _options_router;\n var routerRoot = getRouterRootFromOneOptions(options);\n async function findNearestNotFoundPath(routeFile2) {\n var routeDir2 = routeFile2.replace(/\\/[^/]+$/, \"\");\n var searchDir2 = routeDir2;\n while (true) {\n for (var _i2 = 0, _iter2 = [\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\"\n ]; _i2 < _iter2.length; _i2++) {\n var ext2 = _iter2[_i2];\n var candidate2 = path.join(routerRoot, searchDir2, `+not-found${ext2}`);\n try {\n var mod = await runner.import(candidate2);\n if (mod === null || mod === void 0 ? void 0 : mod.default) {\n return searchDir2 ? `/${searchDir2}/+not-found` : \"/+not-found\";\n }\n } catch (unused) {\n }\n }\n if (!searchDir2) break;\n var parent2 = searchDir2.replace(/\\/[^/]+$/, \"\");\n if (parent2 === searchDir2) {\n searchDir2 = \"\";\n } else {\n searchDir2 = parent2;\n }\n }\n return \"/+not-found\";\n }\n return createHandleRequest({\n async handlePage(param) {\n var { route, url, loaderProps } = param;\n var _options_server;\n var ssgCacheKey = route.type === \"ssg\" ? getSsgHtmlCacheKey(route, url) : null;\n if (ssgCacheKey && !needsRouteRefresh) {\n var cachedHtml = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml) {\n return cachedHtml;\n }\n }\n if (((_options_server = options.server) === null || _options_server === void 0 ? void 0 : _options_server.loggingEnabled) !== false) {\n var colorType = routeTypeColors[route.type] || colors.white;\n var pathname = typeof url === \"string\" ? new URL(url).pathname : url.pathname;\n var file = route.isNotFound ? colors.red(\"404\") : colors.dim(`app/${route.file.slice(2)}`);\n console.info(` \\u24F5 ${colorType(`[${route.type}]`)} ${pathname} ${colors.dim(\"\\u2192\")} ${file}`);\n }\n var layouts = route.layouts || [];\n var isSpaShell = route.type === \"spa\" && layouts.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (route.type === \"spa\" && !isSpaShell) {\n var shell = `<!DOCTYPE html><html><head>\n ${getSpaHeaderElements({\n serverContext: {\n mode: \"spa\"\n }\n })}\n <script type=\"module\" src=\"/@one/dev.js\"></script>\n <script type=\"module\" src=\"/@vite/client\" async=\"\"></script>\n <script type=\"module\" src=\"/@id/__x00__virtual:one-entry\" async=\"\"></script>\n </head></html>`;\n if (route.isNotFound) {\n return new Response(shell, {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n return shell;\n }\n if (renderPromise) {\n await renderPromise;\n }\n if (ssgCacheKey && !needsRouteRefresh) {\n var cachedHtml1 = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml1) {\n return cachedHtml1;\n }\n }\n var { promise, resolve: resolveRender } = promiseWithResolvers();\n renderPromise = promise;\n try {\n var _globalThis___vxrnresetState, _globalThis;\n var isGeneratedNotFound = route.file === \"\";\n var routeFile = isGeneratedNotFound ? \"\" : path.join(routerRoot, route.file);\n if (needsRouteRefresh) {\n globalThis[\"__vxrnVersion\"] = (globalThis[\"__vxrnVersion\"] || 0) + 1;\n ssgHtmlCache.clear();\n needsRouteRefresh = false;\n }\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n var exported = isGeneratedNotFound ? {} : await runner.import(routeFile);\n async function runLoaderWithTracking(routeNode, loaderFn, searchSchemas) {\n var routeId = routeNode.contextKey;\n if (!loaderFn) {\n return {\n loaderData: void 0,\n routeId\n };\n }\n try {\n var _ref;\n var props = searchSchemas ? withLoaderSearchParams(searchSchemas, loaderProps) : loaderProps;\n var tracked = await trackLoaderDependencies(function() {\n return loaderFn(props);\n });\n var routePath = ((loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\") + (route.type === \"ssr\" ? (_ref = loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.search) !== null && _ref !== void 0 ? _ref : \"\" : \"\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dep = _step.value;\n var absoluteDep = path.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return {\n loaderData: tracked.result,\n routeId\n };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"ENOENT\") {\n return {\n loaderData: void 0,\n routeId,\n isEnoent: true\n };\n }\n console.error(`[one] Error running loader for ${routeId}:`, err);\n return {\n loaderData: void 0,\n routeId\n };\n }\n }\n var loaderData;\n var matches;\n var pageResult;\n if (isSpaShell) {\n var layoutLoaderPromises = layouts.map(async function(layout) {\n var layoutFile = path.join(routerRoot, layout.contextKey);\n var layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader);\n });\n var layoutResults = await Promise.all(layoutLoaderPromises);\n matches = layoutResults.map(function(result) {\n return {\n routeId: result.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: result.loaderData\n };\n });\n loaderData = void 0;\n } else {\n var layoutRoutes = route.layouts || [];\n var pageRoute = {\n contextKey: route.file,\n file: route.file\n };\n var layoutLoaderPromises1 = layoutRoutes.map(async function(layout) {\n var layoutFile = path.join(routerRoot, layout.contextKey);\n var layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader, route.type === \"ssr\" ? getLoaderSearchSchemas(layoutExported) : null);\n });\n var pageLoaderPromise = runLoaderWithTracking(pageRoute, exported.loader, route.type === \"ssr\" ? getLoaderSearchSchemas(exported) : null);\n var layoutResults1;\n [layoutResults1, pageResult] = await Promise.all([\n Promise.all(layoutLoaderPromises1),\n pageLoaderPromise\n ]);\n matches = [\n ...layoutResults1.map(function(result) {\n return {\n routeId: result.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: result.loaderData\n };\n }),\n {\n routeId: pageResult.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: pageResult.loaderData\n }\n ];\n loaderData = pageResult.loaderData;\n }\n eval(`process.env.TAMAGUI_IS_SERVER = '1'`);\n var entry = await runner.import(virtualEntryId);\n var render = entry.default.render;\n setServerContext({\n loaderData,\n loaderProps,\n matches\n });\n var isDynamicRoute = Object.keys(route.routeKeys || {}).length > 0;\n var isMissingSsgSlug = false;\n if (route.type === \"ssg\" && isDynamicRoute && exported.generateStaticParams) {\n var staticParams = await exported.generateStaticParams({\n params: loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params\n });\n var currentParams = (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {};\n isMissingSsgSlug = !staticParams.some(function(sp) {\n return Object.keys(sp).every(function(key) {\n return staticParamMatches(sp[key], currentParams[key]);\n });\n });\n }\n var isLoaderEnoent = !isSpaShell && (pageResult === null || pageResult === void 0 ? void 0 : pageResult.isEnoent);\n var is404 = route.isNotFound || !getPageExport(exported) || isMissingSsgSlug || isLoaderEnoent;\n var notFoundRoutePath = null;\n if (isMissingSsgSlug || isLoaderEnoent) {\n var routeDir = route.file.replace(/^\\.\\//, \"\").replace(/\\/[^/]+$/, \"\");\n var searchDir = routeDir;\n while (true) {\n for (var _i = 0, _iter = [\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\"\n ]; _i < _iter.length; _i++) {\n var ext = _iter[_i];\n var candidate = path.join(routerRoot, searchDir, `+not-found${ext}`);\n try {\n var notFoundExported = await runner.import(candidate);\n if (notFoundExported === null || notFoundExported === void 0 ? void 0 : notFoundExported.default) {\n notFoundRoutePath = searchDir ? `/${searchDir}/+not-found` : \"/+not-found\";\n break;\n }\n } catch (unused) {\n }\n }\n if (notFoundRoutePath || !searchDir) break;\n var parent = searchDir.replace(/\\/[^/]+$/, \"\");\n if (parent === searchDir) {\n searchDir = \"\";\n } else {\n searchDir = parent;\n }\n }\n if (!notFoundRoutePath) {\n return new Response(\"<html><body><h1>404 - Not Found</h1></body></html>\", {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n }\n var renderPath = notFoundRoutePath || (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\";\n if (notFoundRoutePath && loaderProps) {\n loaderProps = {\n ...loaderProps,\n path: notFoundRoutePath\n };\n setServerContext({\n loaderProps\n });\n }\n var html = await render({\n mode: isSpaShell ? \"spa-shell\" : route.type === \"ssg\" ? \"ssg\" : route.type === \"ssr\" ? \"ssr\" : \"spa\",\n loaderData,\n loaderProps,\n path: renderPath,\n preloads,\n matches\n });\n if (is404) {\n if (notFoundRoutePath) {\n var originalPath = (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\";\n var notFoundMarker = `<script>window.__one404={originalPath:${JSON.stringify(originalPath)},notFoundPath:${JSON.stringify(notFoundRoutePath)}}</script>`;\n html = html.includes(\"</head>\") ? html.replace(\"</head>\", `${notFoundMarker}</head>`) : html.replace(\"<body\", `${notFoundMarker}<body`);\n }\n return new Response(html, {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n if (ssgCacheKey) {\n ssgHtmlCache.set(ssgCacheKey, html);\n }\n return html;\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n console.error(`SSR error while loading file ${route.file} from URL ${url.href}\n`, err);\n var title = `Error rendering ${url.pathname} on server`;\n var message = err instanceof Error ? err.message : `${err}`;\n var stack = err instanceof Error ? err.stack || \"\" : \"\";\n var isDuplicateReactError = /at (useEffect|useState|useReducer|useContext|useLayoutEffect)\\s*\\(.*?react\\.development\\.js/g.test(stack);\n var subMessage = isDuplicateReactError ? `\n <h2>Duplicate React Error</h2>\n <p style=\"font-size: 18px; line-height: 24px; max-width: 850px;\">Note: These types of errors happen during SSR because One needs all dependencies that use React to be optimized. Find the dependency on the line after the react.development.js line below to find the failing dependency. So long as that dependency has \"react\" as a sub-dependency, you can add it to your package.json and One will optimize it automatically. If it doesn't list it properly, you can fix this manually by changing your vite.config.ts One plugin to add \"one({ deps: { depName: true })\" so One optimizes depName.</p>\n ` : ``;\n console.error(`${title}\n ${message}\n\n${stack}\n`);\n return `\n <html>\n <body style=\"background: #000; color: #fff; padding: 5%; font-family: monospace; line-height: 2rem;\">\n <h1 style=\"display: inline-flex; background: red; color: white; padding: 5px; margin: -5px;\">${title}</h1>\n <h2>${message}</h2>\n ${subMessage}\n ${stack ? `<pre style=\"font-size: 15px; line-height: 24px; white-space: pre;\">\n ${stack}\n </pre>` : ``}\n </body>\n </html>\n `;\n } finally {\n resolveRender();\n }\n },\n async handleLoader(param2) {\n var { route: route2, url: url2, loaderProps: loaderProps2 } = param2;\n var _this;\n var routeFile2 = path.join(routerRoot, route2.file);\n var transformedJS = (_this = await server.transformRequest(routeFile2)) === null || _this === void 0 ? void 0 : _this.code;\n if (!transformedJS) {\n throw new Error(`No transformed js returned`);\n }\n var platform = url2.searchParams.get(\"platform\");\n if (!/export function loader\\(\\)/.test(transformedJS)) {\n return platform === \"ios\" || platform === \"android\" || platform === \"native\" ? \"exports.loader = () => undefined;\" : \"export function loader() { return undefined }\";\n }\n var exported2 = await runner.import(routeFile2);\n var isDynamicRoute2 = Object.keys(route2.routeKeys || {}).length > 0;\n if (route2.type === \"ssg\" && isDynamicRoute2 && exported2.generateStaticParams) {\n var staticParams2 = await exported2.generateStaticParams({\n params: loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.params\n });\n var currentParams2 = (loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.params) || {};\n var isValidSlug = staticParams2.some(function(sp) {\n return Object.keys(sp).every(function(key) {\n return staticParamMatches(sp[key], currentParams2[key]);\n });\n });\n if (!isValidSlug) {\n var nfPath = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n }\n var loaderData2;\n if (exported2.loader) {\n try {\n var _ref;\n var searchSchemas = route2.type === \"ssr\" ? getLoaderSearchSchemas(exported2) : null;\n var runProps = searchSchemas ? withLoaderSearchParams(searchSchemas, loaderProps2) : loaderProps2;\n var tracked = await trackLoaderDependencies(function() {\n return exported2.loader(runProps);\n });\n loaderData2 = tracked.result;\n if (isResponse(loaderData2)) {\n throw loaderData2;\n }\n var routePath = ((loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.path) || \"/\") + (route2.type === \"ssr\" ? (_ref = loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.search) !== null && _ref !== void 0 ? _ref : \"\" : \"\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dep = _step.value;\n var absoluteDep = path.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"ENOENT\") {\n var nfPath1 = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath1)}}}`;\n }\n throw err;\n }\n }\n if (platform === \"ios\" || platform === \"android\" || platform === \"native\") {\n var environment = server.environments[platform === \"native\" ? \"ios\" : platform || \"\"];\n if (!environment) {\n throw new Error(`[handleLoader] No Vite environment found for platform '${platform}'`);\n }\n return `exports.loader = () => (${JSON.stringify(loaderData2)});`;\n }\n return `export function loader(){return ${JSON.stringify(loaderData2)}}`;\n },\n async handleAPI(param2) {\n var { route: route2 } = param2;\n return await runner.import(path.join(routerRoot, route2.file));\n },\n async loadMiddleware(route2) {\n return await runner.import(path.join(routerRoot, route2.contextKey));\n }\n }, {\n routerRoot,\n ignoredRouteFiles: (_options_router = options.router) === null || _options_router === void 0 ? void 0 : _options_router.ignoredRouteFiles,\n routePaths: routeIndex.getPaths()\n });\n }\n function recreateRequestHandler(changedPath) {\n try {\n var _server_environments_worker;\n handleRequest = createRequestHandler();\n ssgHtmlCache.clear();\n needsRouteRefresh = true;\n var workerGraph = server === null || server === void 0 ? void 0 : (_server_environments_worker = server.environments.worker) === null || _server_environments_worker === void 0 ? void 0 : _server_environments_worker.moduleGraph;\n var workerEntry = workerGraph === null || workerGraph === void 0 ? void 0 : workerGraph.getModuleById(\"\\0virtual:one-workerd-dev-entry\");\n if (workerGraph && workerEntry) {\n workerGraph.invalidateModule(workerEntry);\n }\n } catch (error) {\n console.warn(`[one] Failed to rebuild routes after ${changedPath} changed.`, error);\n }\n }\n return {\n name: `one-router-fs`,\n enforce: \"post\",\n apply: \"serve\",\n // the route tree we rendered from is built out of whatever route modules\n // were resolved at the time, so any ssr-side change makes it stale. this\n // runs inside vite's update sequence, after the graph has been invalidated,\n // so by the time the next render reads the flag the fresh modules are\n // already there to rebuild from.\n //\n // ask the graph rather than reading the `modules` argument: vite calls\n // hotUpdate for every watcher event including files it knows nothing about,\n // and an earlier plugin may have replaced `modules` (route-module-hmr-fix\n // returns [] for ssr app files to suppress the full reload).\n hotUpdate(param2) {\n var { file: file2 } = param2;\n var _this_environment_moduleGraph_getModulesByFile;\n if (this.environment.name !== \"ssr\") return;\n if (!((_this_environment_moduleGraph_getModulesByFile = this.environment.moduleGraph.getModulesByFile(file2)) === null || _this_environment_moduleGraph_getModulesByFile === void 0 ? void 0 : _this_environment_moduleGraph_getModulesByFile.size)) return;\n needsRouteRefresh = true;\n },\n async config() {\n var _ref;\n var _options_optimization;\n var setting = (_ref = (_options_optimization = options.optimization) === null || _options_optimization === void 0 ? void 0 : _options_optimization.autoEntriesScanning) !== null && _ref !== void 0 ? _ref : \"flat\";\n var routerRoot2 = normalizePath(getRouterRootFromOneOptions(options));\n if (setting === false) {\n return;\n }\n if (handleRequest.manifest.pageRoutes) {\n var routesAndLayouts = [\n ...new Set(handleRequest.manifest.pageRoutes.flatMap(function(route2) {\n var _route_layouts;\n if (route2.isNotFound) return [];\n if (!route2.file) return [];\n if (setting === \"flat\" && route2.file.split(\"/\").filter(function(x) {\n return !x.startsWith(\"(\");\n }).length > 3) {\n return [];\n }\n return [\n path.posix.join(`./${routerRoot2}`, route2.file),\n ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {\n if (!layout.contextKey) return [];\n return [\n path.posix.join(`./${routerRoot2}`, layout.contextKey)\n ];\n })) || []\n ];\n }))\n ];\n return {\n optimizeDeps: {\n /**\n * This adds all our routes and layouts as entries which fixes initial load making\n * optimizeDeps be triggered which causes hard refreshes (also on initial navigations)\n *\n * see: https://vitejs.dev/config/dep-optimization-options.html#optimizedeps-entries\n * and: https://github.com/remix-run/remix/pull/9921\n */\n entries: routesAndLayouts\n }\n };\n }\n },\n configureServer(serverIn) {\n var _server_environments, _clientEnv_config;\n server = serverIn;\n var clientEnv = (_server_environments = server.environments) === null || _server_environments === void 0 ? void 0 : _server_environments.client;\n if ((clientEnv === null || clientEnv === void 0 ? void 0 : (_clientEnv_config = clientEnv.config) === null || _clientEnv_config === void 0 ? void 0 : _clientEnv_config.isBundled) || (clientEnv === null || clientEnv === void 0 ? void 0 : clientEnv.bundledDev)) {\n preloads = [\n \"/bundledDevClient.mjs\",\n \"/assets/_virtual_one-entry.js\"\n ];\n }\n var workerDev = !!server.environments.worker;\n if (!workerDev) {\n runner = createServerModuleRunner(server.environments.ssr);\n }\n var appDir = path.resolve(process.cwd(), getRouterRootFromOneOptions(options));\n var recreateRequestHandlerDebounced = debounce(function(changedPath) {\n recreateRequestHandler(changedPath);\n }, 100);\n var fileWatcherChangeListener = function fileWatcherChangeListener2(type, changedPath) {\n if (isRouteFileWatchEvent({\n event: type,\n filePath: changedPath,\n routerRoot: appDir\n })) {\n routeIndex.update(type, changedPath);\n return recreateRequestHandlerDebounced(changedPath);\n }\n };\n server.watcher.addListener(\"all\", fileWatcherChangeListener);\n var loaderDepChangeListener = debounce(function(changedPath) {\n var absolutePath = path.resolve(changedPath);\n var routePaths = loaderFileDependencies.get(absolutePath);\n if (routePaths && routePaths.size > 0) {\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] changed: ${absolutePath}, triggering loader refetch for routes:`, [\n ...routePaths\n ]);\n }\n server.hot.send({\n type: \"custom\",\n event: \"one:loader-data-update\",\n data: {\n routePaths: [\n ...routePaths\n ]\n }\n });\n ssgHtmlCache.clear();\n }\n }, 100);\n server.watcher.on(\"change\", loaderDepChangeListener);\n return function() {\n if (workerDev) {\n return;\n }\n server.middlewares.use(function(req, res, next) {\n var _req_url;\n if (req.url === \"/status\" || ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.startsWith(\"/status?\"))) {\n res.writeHead(200, {\n \"Content-Type\": \"text/plain\",\n \"X-React-Native-Project-Root\": new URL(`file:///${server.config.root}`).pathname.slice(1)\n });\n res.end(\"packager-status:running\");\n return;\n }\n next();\n });\n server.middlewares.use(async function(req, res, next) {\n res.setHeader(\"Cache-Control\", \"no-store\");\n var abortController = new AbortController();\n var cleanupAbortListeners = function cleanupAbortListeners1() {\n req.removeListener(\"aborted\", abortRequest);\n req.removeListener(\"close\", abortIncompleteRequest);\n res.removeListener(\"close\", abortIncompleteResponse);\n res.removeListener(\"finish\", cleanupAbortListeners);\n };\n var abortRequest = function abortRequest2() {\n cleanupAbortListeners();\n abortController.abort();\n };\n var abortIncompleteRequest = function abortIncompleteRequest2() {\n if (req.aborted || !req.complete) abortRequest();\n };\n var abortIncompleteResponse = function abortIncompleteResponse2() {\n if (!res.writableFinished) {\n abortRequest();\n return;\n }\n cleanupAbortListeners();\n };\n req.on(\"aborted\", abortRequest);\n req.on(\"close\", abortIncompleteRequest);\n res.on(\"close\", abortIncompleteResponse);\n res.on(\"finish\", cleanupAbortListeners);\n try {\n var _options_web;\n var redirects = (_options_web = options.web) === null || _options_web === void 0 ? void 0 : _options_web.redirects;\n if (redirects) {\n var url2 = new URL(req.url || \"\", \"http://127.0.0.1\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = function() {\n var redirect = _step.value;\n var regexStr = `^${redirect.source.replace(/:\\w+/g, \"([^/]+)\")}$`;\n var match = url2.pathname.match(new RegExp(regexStr));\n if (match) {\n var destination = redirect.destination;\n var params = redirect.source.match(/:\\w+/g);\n if (params) {\n params.forEach(function(param2, index) {\n destination = destination.replace(param2, match[index + 1] || \"\");\n });\n }\n if (debugRouter) {\n console.info(`[one] \\u21AA redirect ${url2.pathname} \\u2192 ${destination}`);\n }\n res.writeHead(redirect.permanent ? 301 : 302, {\n Location: destination\n });\n res.end();\n return {\n v: void 0\n };\n }\n };\n for (var _iterator = redirects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n if (_type_of(_ret) === \"object\") return _ret.v;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var reply = await handleRequest.handler(convertIncomingMessageToRequest(req, abortController.signal));\n if (!reply) {\n cleanupAbortListeners();\n return next();\n }\n if (typeof reply !== \"string\" && isResponse(reply)) {\n if (debugRouter) {\n var headers = {};\n reply.headers.forEach(function(v, k) {\n headers[k] = v;\n });\n console.info(`[one] \\u{1F4E4} response ${reply.status}`, headers);\n }\n reply.headers.forEach(function(value, key) {\n if (key === \"set-cookie\") {\n var cookies = value.split(\", \");\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = cookies[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var cookie = _step2.value;\n res.appendHeader(\"Set-Cookie\", cookie);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else {\n res.setHeader(key, value);\n }\n });\n if (isStatusRedirect(reply.status)) {\n var location = `${reply.headers.get(\"location\") || \"\"}`;\n if (debugRouter) {\n console.info(`[one] \\u21AA response redirect \\u2192 ${location}`);\n }\n if (location) {\n res.writeHead(reply.status, {\n Location: location\n });\n res.end();\n return;\n }\n console.error(`No location provided to redirected status reply`, reply);\n }\n res.statusCode = reply.status;\n if (reply.body) {\n if (reply.body.locked) {\n console.warn(`Body is locked??`, req.url);\n res.end();\n return;\n }\n try {\n var body = Readable.fromWeb(reply.body);\n body.on(\"error\", function(error) {\n if (!abortController.signal.aborted) {\n console.warn(\"Error streaming reply body to response:\", error);\n }\n if (!res.destroyed) res.destroy();\n });\n body.pipe(res);\n } catch (err) {\n console.warn(\"Error piping reply body to response:\", err);\n res.end();\n }\n return;\n }\n res.end();\n return;\n }\n if (reply && typeof reply === \"object\") {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.write(JSON.stringify(reply));\n res.end();\n return;\n }\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.write(reply);\n res.end();\n return;\n } catch (error) {\n cleanupAbortListeners();\n console.error(`[one] routing error ${req.url}: ${error}`);\n next(error);\n }\n console.warn(`SSR handler didn't send a response for url: ${req.url}`);\n });\n };\n }\n };\n}\nvar convertIncomingMessageToRequest = function convertIncomingMessageToRequest2(req, signal) {\n if (!req.originalUrl) {\n throw new Error(`Can't convert: originalUrl is missing`);\n }\n var protocol = req.socket instanceof TLSSocket && req.socket.encrypted ? \"https\" : \"http\";\n var host = `${req.headers[\"x-forwarded-host\"] || req.headers.host || req.headers[\":authority\"] || \"127.0.0.1\"}`;\n var urlBase = `${protocol}://${host}`;\n var urlString = req.originalUrl;\n var url2 = new URL(urlString, urlBase);\n var headers = new Headers();\n for (var key in req.headers) {\n if (!key.startsWith(\":\") && req.headers[key]) {\n headers.append(key, req.headers[key]);\n }\n }\n if (!headers.has(\"host\")) {\n headers.set(\"host\", host);\n }\n var hasBody = [\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\"\n ].includes(req.method || \"\");\n var body = hasBody ? Readable.toWeb(req) : null;\n return new Request(url2, {\n method: req.method,\n headers,\n body,\n signal,\n // Required for streaming bodies in Node's experimental fetch:\n duplex: \"half\"\n });\n};\nexport {\n createFileSystemRouterPlugin\n};\n//# sourceMappingURL=fileSystemRouterPlugin.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileSystemRouterPlugin.native.js","names":[],"sources":["esm/vite/plugins/fileSystemRouterPlugin.native.js"],"sourcesContent":["import path from \"path\";\nimport { Readable } from \"stream\";\nimport { TLSSocket } from \"tls\";\nimport fastGlob from \"fast-glob\";\nimport { debounce } from \"perfect-debounce\";\nimport colors from \"picocolors\";\nimport { createServerModuleRunner, normalizePath } from \"vite\";\nimport { getSpaHeaderElements } from \"../../constants\";\nimport { createHandleRequest } from \"../../createDevHandleRequest\";\nimport { getPageExport } from \"../../utils/getPageExport\";\nimport { getRouterRootFromOneOptions } from \"../../utils/getRouterRootFromOneOptions\";\nimport { isResponse } from \"../../utils/isResponse\";\nimport { isStatusRedirect } from \"../../utils/isStatus\";\nimport { promiseWithResolvers } from \"../../utils/promiseWithResolvers\";\nimport { getLoaderSearchSchemas, withLoaderSearchParams } from \"../../loaderSearchParams\";\nimport { isRouteFileWatchEvent } from \"../../utils/routeFileWatch\";\nimport { trackLoaderDependencies } from \"../../utils/trackLoaderDependencies\";\nimport { setServerContext } from \"../one-server-only\";\nimport { virtalEntryIdClient, virtualEntryId } from \"./virtualEntryConstants\";\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction staticParamMatches(staticValue, urlValue) {\n var norm = function norm2(v) {\n return Array.isArray(v) ? v.join(\"/\") : String(v !== null && v !== void 0 ? v : \"\");\n };\n return norm(staticValue) === norm(urlValue);\n}\nvar debugRouter = process.env.ONE_DEBUG_ROUTER;\nvar debugLoaderDeps = process.env.ONE_DEBUG_LOADER_DEPS;\nvar routeTypeColors = {\n ssg: colors.green,\n ssr: colors.blue,\n spa: colors.yellow,\n api: colors.magenta\n};\nfunction createFileSystemRouterPlugin(options, routeIndex) {\n var preloads = [\n \"/@vite/client\",\n virtalEntryIdClient\n ];\n var runner;\n var server;\n var needsRouteRefresh = false;\n var loaderFileDependencies = /* @__PURE__ */ new Map();\n var LOADER_DEPS_MAX = 2e3;\n function setBoundedLoaderDep(filePath, routePath) {\n var deps = loaderFileDependencies.get(filePath);\n if (!deps) {\n if (loaderFileDependencies.size >= LOADER_DEPS_MAX) {\n var firstKey = loaderFileDependencies.keys().next().value;\n if (firstKey !== void 0) {\n loaderFileDependencies.delete(firstKey);\n }\n }\n deps = /* @__PURE__ */ new Set();\n loaderFileDependencies.set(filePath, deps);\n server === null || server === void 0 ? void 0 : server.watcher.add(filePath);\n }\n deps.add(routePath);\n }\n var handleRequest = createRequestHandler();\n var renderPromise = null;\n var ssgHtmlCache = /* @__PURE__ */ new Map();\n function getSsgHtmlCacheKey(route2, url2) {\n return `${route2.file}\n${url2.pathname}\n${url2.search}`;\n }\n function createRequestHandler() {\n var _options_router;\n var routerRoot = getRouterRootFromOneOptions(options);\n async function findNearestNotFoundPath(routeFile2) {\n var routeDir2 = routeFile2.replace(/\\/[^/]+$/, \"\");\n var searchDir2 = routeDir2;\n while (true) {\n for (var _i2 = 0, _iter2 = [\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\"\n ]; _i2 < _iter2.length; _i2++) {\n var ext2 = _iter2[_i2];\n var candidate2 = path.join(routerRoot, searchDir2, `+not-found${ext2}`);\n try {\n var mod = await runner.import(candidate2);\n if (mod === null || mod === void 0 ? void 0 : mod.default) {\n return searchDir2 ? `/${searchDir2}/+not-found` : \"/+not-found\";\n }\n } catch (unused) {\n }\n }\n if (!searchDir2) break;\n var parent2 = searchDir2.replace(/\\/[^/]+$/, \"\");\n if (parent2 === searchDir2) {\n searchDir2 = \"\";\n } else {\n searchDir2 = parent2;\n }\n }\n return \"/+not-found\";\n }\n return createHandleRequest({\n async handlePage(param) {\n var { route, url, loaderProps } = param;\n var _options_server;\n var ssgCacheKey = route.type === \"ssg\" ? getSsgHtmlCacheKey(route, url) : null;\n if (ssgCacheKey && !needsRouteRefresh) {\n var cachedHtml = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml) {\n return cachedHtml;\n }\n }\n if (((_options_server = options.server) === null || _options_server === void 0 ? void 0 : _options_server.loggingEnabled) !== false) {\n var colorType = routeTypeColors[route.type] || colors.white;\n var pathname = typeof url === \"string\" ? new URL(url).pathname : url.pathname;\n var file = route.isNotFound ? colors.red(\"404\") : colors.dim(`app/${route.file.slice(2)}`);\n console.info(` \\u24F5 ${colorType(`[${route.type}]`)} ${pathname} ${colors.dim(\"\\u2192\")} ${file}`);\n }\n var layouts = route.layouts || [];\n var isSpaShell = route.type === \"spa\" && layouts.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (route.type === \"spa\" && !isSpaShell) {\n var shell = `<!DOCTYPE html><html><head>\n ${getSpaHeaderElements({\n serverContext: {\n mode: \"spa\"\n }\n })}\n <script type=\"module\" src=\"/@one/dev.js\"></script>\n <script type=\"module\" src=\"/@vite/client\" async=\"\"></script>\n <script type=\"module\" src=\"/@id/__x00__virtual:one-entry\" async=\"\"></script>\n </head></html>`;\n if (route.isNotFound) {\n return new Response(shell, {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n return shell;\n }\n if (renderPromise) {\n await renderPromise;\n }\n if (ssgCacheKey && !needsRouteRefresh) {\n var cachedHtml1 = ssgHtmlCache.get(ssgCacheKey);\n if (cachedHtml1) {\n return cachedHtml1;\n }\n }\n var { promise, resolve: resolveRender } = promiseWithResolvers();\n renderPromise = promise;\n try {\n var _globalThis___vxrnresetState, _globalThis;\n var isGeneratedNotFound = route.file === \"\";\n var routeFile = isGeneratedNotFound ? \"\" : path.join(routerRoot, route.file);\n if (needsRouteRefresh) {\n globalThis[\"__vxrnVersion\"] = (globalThis[\"__vxrnVersion\"] || 0) + 1;\n ssgHtmlCache.clear();\n needsRouteRefresh = false;\n }\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n var exported = isGeneratedNotFound ? {} : await runner.import(routeFile);\n async function runLoaderWithTracking(routeNode, loaderFn, searchSchemas) {\n var routeId = routeNode.contextKey;\n if (!loaderFn) {\n return {\n loaderData: void 0,\n routeId\n };\n }\n try {\n var _ref;\n var props = searchSchemas ? withLoaderSearchParams(searchSchemas, loaderProps) : loaderProps;\n var tracked = await trackLoaderDependencies(function() {\n return loaderFn(props);\n });\n var routePath = ((loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\") + (route.type === \"ssr\" ? (_ref = loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.search) !== null && _ref !== void 0 ? _ref : \"\" : \"\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dep = _step.value;\n var absoluteDep = path.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return {\n loaderData: tracked.result,\n routeId\n };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"ENOENT\") {\n return {\n loaderData: void 0,\n routeId,\n isEnoent: true\n };\n }\n console.error(`[one] Error running loader for ${routeId}:`, err);\n return {\n loaderData: void 0,\n routeId\n };\n }\n }\n var loaderData;\n var matches;\n var pageResult;\n if (isSpaShell) {\n var layoutLoaderPromises = layouts.map(async function(layout) {\n var layoutFile = path.join(routerRoot, layout.contextKey);\n var layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader);\n });\n var layoutResults = await Promise.all(layoutLoaderPromises);\n matches = layoutResults.map(function(result) {\n return {\n routeId: result.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: result.loaderData\n };\n });\n loaderData = void 0;\n } else {\n var layoutRoutes = route.layouts || [];\n var pageRoute = {\n contextKey: route.file,\n file: route.file\n };\n var layoutLoaderPromises1 = layoutRoutes.map(async function(layout) {\n var layoutFile = path.join(routerRoot, layout.contextKey);\n var layoutExported = await runner.import(layoutFile);\n return runLoaderWithTracking(layout, layoutExported.loader, route.type === \"ssr\" ? getLoaderSearchSchemas(layoutExported) : null);\n });\n var pageLoaderPromise = runLoaderWithTracking(pageRoute, exported.loader, route.type === \"ssr\" ? getLoaderSearchSchemas(exported) : null);\n var layoutResults1;\n [layoutResults1, pageResult] = await Promise.all([\n Promise.all(layoutLoaderPromises1),\n pageLoaderPromise\n ]);\n matches = [\n ...layoutResults1.map(function(result) {\n return {\n routeId: result.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: result.loaderData\n };\n }),\n {\n routeId: pageResult.routeId,\n pathname: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\",\n params: (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {},\n loaderData: pageResult.loaderData\n }\n ];\n loaderData = pageResult.loaderData;\n }\n eval(`process.env.TAMAGUI_IS_SERVER = '1'`);\n var entry = await runner.import(virtualEntryId);\n var render = entry.default.render;\n setServerContext({\n loaderData,\n loaderProps,\n matches\n });\n var isDynamicRoute = Object.keys(route.routeKeys || {}).length > 0;\n var isMissingSsgSlug = false;\n if (route.type === \"ssg\" && isDynamicRoute && exported.generateStaticParams) {\n var staticParams = await exported.generateStaticParams({\n params: loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params\n });\n var currentParams = (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.params) || {};\n isMissingSsgSlug = !staticParams.some(function(sp) {\n return Object.keys(sp).every(function(key) {\n return staticParamMatches(sp[key], currentParams[key]);\n });\n });\n }\n var isLoaderEnoent = !isSpaShell && (pageResult === null || pageResult === void 0 ? void 0 : pageResult.isEnoent);\n var is404 = route.isNotFound || !getPageExport(exported) || isMissingSsgSlug || isLoaderEnoent;\n var notFoundRoutePath = null;\n if (isMissingSsgSlug || isLoaderEnoent) {\n var routeDir = route.file.replace(/^\\.\\//, \"\").replace(/\\/[^/]+$/, \"\");\n var searchDir = routeDir;\n while (true) {\n for (var _i = 0, _iter = [\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\"\n ]; _i < _iter.length; _i++) {\n var ext = _iter[_i];\n var candidate = path.join(routerRoot, searchDir, `+not-found${ext}`);\n try {\n var notFoundExported = await runner.import(candidate);\n if (notFoundExported === null || notFoundExported === void 0 ? void 0 : notFoundExported.default) {\n notFoundRoutePath = searchDir ? `/${searchDir}/+not-found` : \"/+not-found\";\n break;\n }\n } catch (unused) {\n }\n }\n if (notFoundRoutePath || !searchDir) break;\n var parent = searchDir.replace(/\\/[^/]+$/, \"\");\n if (parent === searchDir) {\n searchDir = \"\";\n } else {\n searchDir = parent;\n }\n }\n if (!notFoundRoutePath) {\n return new Response(\"<html><body><h1>404 - Not Found</h1></body></html>\", {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n }\n var renderPath = notFoundRoutePath || (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\";\n if (notFoundRoutePath && loaderProps) {\n loaderProps = {\n ...loaderProps,\n path: notFoundRoutePath\n };\n setServerContext({\n loaderProps\n });\n }\n var html = await render({\n mode: isSpaShell ? \"spa-shell\" : route.type === \"ssg\" ? \"ssg\" : route.type === \"ssr\" ? \"ssr\" : \"spa\",\n loaderData,\n loaderProps,\n path: renderPath,\n preloads,\n matches\n });\n if (is404) {\n if (notFoundRoutePath) {\n var originalPath = (loaderProps === null || loaderProps === void 0 ? void 0 : loaderProps.path) || \"/\";\n var notFoundMarker = `<script>window.__one404={originalPath:${JSON.stringify(originalPath)},notFoundPath:${JSON.stringify(notFoundRoutePath)}}</script>`;\n html = html.includes(\"</head>\") ? html.replace(\"</head>\", `${notFoundMarker}</head>`) : html.replace(\"<body\", `${notFoundMarker}<body`);\n }\n return new Response(html, {\n status: 404,\n headers: {\n \"Content-Type\": \"text/html\"\n }\n });\n }\n if (ssgCacheKey) {\n ssgHtmlCache.set(ssgCacheKey, html);\n }\n return html;\n } catch (err) {\n if (isResponse(err)) {\n return err;\n }\n console.error(`SSR error while loading file ${route.file} from URL ${url.href}\n`, err);\n var title = `Error rendering ${url.pathname} on server`;\n var message = err instanceof Error ? err.message : `${err}`;\n var stack = err instanceof Error ? err.stack || \"\" : \"\";\n var isDuplicateReactError = /at (useEffect|useState|useReducer|useContext|useLayoutEffect)\\s*\\(.*?react\\.development\\.js/g.test(stack);\n var subMessage = isDuplicateReactError ? `\n <h2>Duplicate React Error</h2>\n <p style=\"font-size: 18px; line-height: 24px; max-width: 850px;\">Note: These types of errors happen during SSR because One needs all dependencies that use React to be optimized. Find the dependency on the line after the react.development.js line below to find the failing dependency. So long as that dependency has \"react\" as a sub-dependency, you can add it to your package.json and One will optimize it automatically. If it doesn't list it properly, you can fix this manually by changing your vite.config.ts One plugin to add \"one({ deps: { depName: true })\" so One optimizes depName.</p>\n ` : ``;\n console.error(`${title}\n ${message}\n\n${stack}\n`);\n return `\n <html>\n <body style=\"background: #000; color: #fff; padding: 5%; font-family: monospace; line-height: 2rem;\">\n <h1 style=\"display: inline-flex; background: red; color: white; padding: 5px; margin: -5px;\">${title}</h1>\n <h2>${message}</h2>\n ${subMessage}\n ${stack ? `<pre style=\"font-size: 15px; line-height: 24px; white-space: pre;\">\n ${stack}\n </pre>` : ``}\n </body>\n </html>\n `;\n } finally {\n resolveRender();\n }\n },\n async handleLoader(param2) {\n var { route: route2, url: url2, loaderProps: loaderProps2 } = param2;\n var _this;\n var routeFile2 = path.join(routerRoot, route2.file);\n var transformedJS = (_this = await server.transformRequest(routeFile2)) === null || _this === void 0 ? void 0 : _this.code;\n if (!transformedJS) {\n throw new Error(`No transformed js returned`);\n }\n var platform = url2.searchParams.get(\"platform\");\n if (!/export function loader\\(\\)/.test(transformedJS)) {\n return platform === \"ios\" || platform === \"android\" || platform === \"native\" ? \"exports.loader = () => undefined;\" : \"export function loader() { return undefined }\";\n }\n var exported2 = await runner.import(routeFile2);\n var isDynamicRoute2 = Object.keys(route2.routeKeys || {}).length > 0;\n if (route2.type === \"ssg\" && isDynamicRoute2 && exported2.generateStaticParams) {\n var staticParams2 = await exported2.generateStaticParams({\n params: loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.params\n });\n var currentParams2 = (loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.params) || {};\n var isValidSlug = staticParams2.some(function(sp) {\n return Object.keys(sp).every(function(key) {\n return staticParamMatches(sp[key], currentParams2[key]);\n });\n });\n if (!isValidSlug) {\n var nfPath = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath)}}}`;\n }\n }\n var loaderData2;\n if (exported2.loader) {\n try {\n var _ref;\n var searchSchemas = route2.type === \"ssr\" ? getLoaderSearchSchemas(exported2) : null;\n var runProps = searchSchemas ? withLoaderSearchParams(searchSchemas, loaderProps2) : loaderProps2;\n var tracked = await trackLoaderDependencies(function() {\n return exported2.loader(runProps);\n });\n loaderData2 = tracked.result;\n if (isResponse(loaderData2)) {\n throw loaderData2;\n }\n var routePath = ((loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.path) || \"/\") + (route2.type === \"ssr\" ? (_ref = loaderProps2 === null || loaderProps2 === void 0 ? void 0 : loaderProps2.search) !== null && _ref !== void 0 ? _ref : \"\" : \"\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = tracked.dependencies[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dep = _step.value;\n var absoluteDep = path.resolve(dep);\n setBoundedLoaderDep(absoluteDep, routePath);\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] watching: ${absoluteDep}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"ENOENT\") {\n var nfPath1 = await findNearestNotFoundPath(route2.file);\n return `export function loader(){return{__oneError:404,__oneErrorMessage:'Not Found',__oneNotFoundPath:${JSON.stringify(nfPath1)}}}`;\n }\n throw err;\n }\n }\n if (platform === \"ios\" || platform === \"android\" || platform === \"native\") {\n var environment = server.environments[platform === \"native\" ? \"ios\" : platform || \"\"];\n if (!environment) {\n throw new Error(`[handleLoader] No Vite environment found for platform '${platform}'`);\n }\n return `exports.loader = () => (${JSON.stringify(loaderData2)});`;\n }\n return `export function loader(){return ${JSON.stringify(loaderData2)}}`;\n },\n async handleAPI(param2) {\n var { route: route2 } = param2;\n return await runner.import(path.join(routerRoot, route2.file));\n },\n async loadMiddleware(route2) {\n return await runner.import(path.join(routerRoot, route2.contextKey));\n }\n }, {\n routerRoot,\n ignoredRouteFiles: (_options_router = options.router) === null || _options_router === void 0 ? void 0 : _options_router.ignoredRouteFiles,\n routePaths: routeIndex.getPaths()\n });\n }\n function recreateRequestHandler(changedPath) {\n try {\n var _server_environments_worker;\n handleRequest = createRequestHandler();\n ssgHtmlCache.clear();\n needsRouteRefresh = true;\n var workerGraph = server === null || server === void 0 ? void 0 : (_server_environments_worker = server.environments.worker) === null || _server_environments_worker === void 0 ? void 0 : _server_environments_worker.moduleGraph;\n var workerEntry = workerGraph === null || workerGraph === void 0 ? void 0 : workerGraph.getModuleById(\"\\0virtual:one-workerd-dev-entry\");\n if (workerGraph && workerEntry) {\n workerGraph.invalidateModule(workerEntry);\n }\n } catch (error) {\n console.warn(`[one] Failed to rebuild routes after ${changedPath} changed.`, error);\n }\n }\n return {\n name: `one-router-fs`,\n enforce: \"post\",\n apply: \"serve\",\n // the route tree we rendered from is built out of whatever route modules\n // were resolved at the time, so any ssr-side change makes it stale. this\n // runs inside vite's update sequence, after the graph has been invalidated,\n // so by the time the next render reads the flag the fresh modules are\n // already there to rebuild from.\n //\n // ask the graph rather than reading the `modules` argument: vite calls\n // hotUpdate for every watcher event including files it knows nothing about,\n // and an earlier plugin may have replaced `modules` (route-module-hmr-fix\n // returns [] for ssr app files to suppress the full reload).\n hotUpdate(param2) {\n var { file: file2 } = param2;\n var _this_environment_moduleGraph_getModulesByFile;\n if (this.environment.name !== \"ssr\") return;\n if (!((_this_environment_moduleGraph_getModulesByFile = this.environment.moduleGraph.getModulesByFile(file2)) === null || _this_environment_moduleGraph_getModulesByFile === void 0 ? void 0 : _this_environment_moduleGraph_getModulesByFile.size)) return;\n needsRouteRefresh = true;\n },\n async config() {\n var _ref;\n var _options_optimization;\n var setting = (_ref = (_options_optimization = options.optimization) === null || _options_optimization === void 0 ? void 0 : _options_optimization.autoEntriesScanning) !== null && _ref !== void 0 ? _ref : \"flat\";\n var routerRoot2 = normalizePath(getRouterRootFromOneOptions(options));\n if (setting === false) {\n return;\n }\n if (handleRequest.manifest.pageRoutes) {\n var routesAndLayouts = [\n ...new Set(handleRequest.manifest.pageRoutes.flatMap(function(route2) {\n var _route_layouts;\n if (route2.isNotFound) return [];\n if (!route2.file) return [];\n if (setting === \"flat\" && route2.file.split(\"/\").filter(function(x) {\n return !x.startsWith(\"(\");\n }).length > 3) {\n return [];\n }\n return [\n fastGlob.escapePath(path.posix.join(`./${routerRoot2}`, route2.file)),\n ...((_route_layouts = route2.layouts) === null || _route_layouts === void 0 ? void 0 : _route_layouts.flatMap(function(layout) {\n if (!layout.contextKey) return [];\n return [\n fastGlob.escapePath(path.posix.join(`./${routerRoot2}`, layout.contextKey))\n ];\n })) || []\n ];\n }))\n ];\n return {\n optimizeDeps: {\n /**\n * This adds all our routes and layouts as entries which fixes initial load making\n * optimizeDeps be triggered which causes hard refreshes (also on initial navigations)\n *\n * see: https://vitejs.dev/config/dep-optimization-options.html#optimizedeps-entries\n * and: https://github.com/remix-run/remix/pull/9921\n */\n entries: routesAndLayouts\n }\n };\n }\n },\n configureServer(serverIn) {\n var _server_environments, _clientEnv_config;\n server = serverIn;\n var clientEnv = (_server_environments = server.environments) === null || _server_environments === void 0 ? void 0 : _server_environments.client;\n if ((clientEnv === null || clientEnv === void 0 ? void 0 : (_clientEnv_config = clientEnv.config) === null || _clientEnv_config === void 0 ? void 0 : _clientEnv_config.isBundled) || (clientEnv === null || clientEnv === void 0 ? void 0 : clientEnv.bundledDev)) {\n preloads = [\n \"/bundledDevClient.mjs\",\n \"/assets/_virtual_one-entry.js\"\n ];\n }\n var workerDev = !!server.environments.worker;\n if (!workerDev) {\n runner = createServerModuleRunner(server.environments.ssr);\n }\n var appDir = path.resolve(process.cwd(), getRouterRootFromOneOptions(options));\n var recreateRequestHandlerDebounced = debounce(function(changedPath) {\n recreateRequestHandler(changedPath);\n }, 100);\n var fileWatcherChangeListener = function fileWatcherChangeListener2(type, changedPath) {\n if (isRouteFileWatchEvent({\n event: type,\n filePath: changedPath,\n routerRoot: appDir\n })) {\n routeIndex.update(type, changedPath);\n return recreateRequestHandlerDebounced(changedPath);\n }\n };\n server.watcher.addListener(\"all\", fileWatcherChangeListener);\n var loaderDepChangeListener = debounce(function(changedPath) {\n var absolutePath = path.resolve(changedPath);\n var routePaths = loaderFileDependencies.get(absolutePath);\n if (routePaths && routePaths.size > 0) {\n if (debugLoaderDeps) {\n console.info(` \\u24F5 [loader-dep] changed: ${absolutePath}, triggering loader refetch for routes:`, [\n ...routePaths\n ]);\n }\n server.hot.send({\n type: \"custom\",\n event: \"one:loader-data-update\",\n data: {\n routePaths: [\n ...routePaths\n ]\n }\n });\n ssgHtmlCache.clear();\n }\n }, 100);\n server.watcher.on(\"change\", loaderDepChangeListener);\n return function() {\n if (workerDev) {\n return;\n }\n server.middlewares.use(function(req, res, next) {\n var _req_url;\n if (req.url === \"/status\" || ((_req_url = req.url) === null || _req_url === void 0 ? void 0 : _req_url.startsWith(\"/status?\"))) {\n res.writeHead(200, {\n \"Content-Type\": \"text/plain\",\n \"X-React-Native-Project-Root\": new URL(`file:///${server.config.root}`).pathname.slice(1)\n });\n res.end(\"packager-status:running\");\n return;\n }\n next();\n });\n server.middlewares.use(async function(req, res, next) {\n res.setHeader(\"Cache-Control\", \"no-store\");\n var abortController = new AbortController();\n var cleanupAbortListeners = function cleanupAbortListeners1() {\n req.removeListener(\"aborted\", abortRequest);\n req.removeListener(\"close\", abortIncompleteRequest);\n res.removeListener(\"close\", abortIncompleteResponse);\n res.removeListener(\"finish\", cleanupAbortListeners);\n };\n var abortRequest = function abortRequest2() {\n cleanupAbortListeners();\n abortController.abort();\n };\n var abortIncompleteRequest = function abortIncompleteRequest2() {\n if (req.aborted || !req.complete) abortRequest();\n };\n var abortIncompleteResponse = function abortIncompleteResponse2() {\n if (!res.writableFinished) {\n abortRequest();\n return;\n }\n cleanupAbortListeners();\n };\n req.on(\"aborted\", abortRequest);\n req.on(\"close\", abortIncompleteRequest);\n res.on(\"close\", abortIncompleteResponse);\n res.on(\"finish\", cleanupAbortListeners);\n try {\n var _options_web;\n var redirects = (_options_web = options.web) === null || _options_web === void 0 ? void 0 : _options_web.redirects;\n if (redirects) {\n var url2 = new URL(req.url || \"\", \"http://127.0.0.1\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = function() {\n var redirect = _step.value;\n var regexStr = `^${redirect.source.replace(/:\\w+/g, \"([^/]+)\")}$`;\n var match = url2.pathname.match(new RegExp(regexStr));\n if (match) {\n var destination = redirect.destination;\n var params = redirect.source.match(/:\\w+/g);\n if (params) {\n params.forEach(function(param2, index) {\n destination = destination.replace(param2, match[index + 1] || \"\");\n });\n }\n if (debugRouter) {\n console.info(`[one] \\u21AA redirect ${url2.pathname} \\u2192 ${destination}`);\n }\n res.writeHead(redirect.permanent ? 301 : 302, {\n Location: destination\n });\n res.end();\n return {\n v: void 0\n };\n }\n };\n for (var _iterator = redirects[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n if (_type_of(_ret) === \"object\") return _ret.v;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var reply = await handleRequest.handler(convertIncomingMessageToRequest(req, abortController.signal));\n if (!reply) {\n cleanupAbortListeners();\n return next();\n }\n if (typeof reply !== \"string\" && isResponse(reply)) {\n if (debugRouter) {\n var headers = {};\n reply.headers.forEach(function(v, k) {\n headers[k] = v;\n });\n console.info(`[one] \\u{1F4E4} response ${reply.status}`, headers);\n }\n reply.headers.forEach(function(value, key) {\n if (key === \"set-cookie\") {\n var cookies = value.split(\", \");\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = cookies[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var cookie = _step2.value;\n res.appendHeader(\"Set-Cookie\", cookie);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else {\n res.setHeader(key, value);\n }\n });\n if (isStatusRedirect(reply.status)) {\n var location = `${reply.headers.get(\"location\") || \"\"}`;\n if (debugRouter) {\n console.info(`[one] \\u21AA response redirect \\u2192 ${location}`);\n }\n if (location) {\n res.writeHead(reply.status, {\n Location: location\n });\n res.end();\n return;\n }\n console.error(`No location provided to redirected status reply`, reply);\n }\n res.statusCode = reply.status;\n if (reply.body) {\n if (reply.body.locked) {\n console.warn(`Body is locked??`, req.url);\n res.end();\n return;\n }\n try {\n var body = Readable.fromWeb(reply.body);\n body.on(\"error\", function(error) {\n if (!abortController.signal.aborted) {\n console.warn(\"Error streaming reply body to response:\", error);\n }\n if (!res.destroyed) res.destroy();\n });\n body.pipe(res);\n } catch (err) {\n console.warn(\"Error piping reply body to response:\", err);\n res.end();\n }\n return;\n }\n res.end();\n return;\n }\n if (reply && typeof reply === \"object\") {\n res.setHeader(\"Content-Type\", \"application/json\");\n res.write(JSON.stringify(reply));\n res.end();\n return;\n }\n res.setHeader(\"Content-Type\", \"text/html; charset=utf-8\");\n res.write(reply);\n res.end();\n return;\n } catch (error) {\n cleanupAbortListeners();\n console.error(`[one] routing error ${req.url}: ${error}`);\n next(error);\n }\n console.warn(`SSR handler didn't send a response for url: ${req.url}`);\n });\n };\n }\n };\n}\nvar convertIncomingMessageToRequest = function convertIncomingMessageToRequest2(req, signal) {\n if (!req.originalUrl) {\n throw new Error(`Can't convert: originalUrl is missing`);\n }\n var protocol = req.socket instanceof TLSSocket && req.socket.encrypted ? \"https\" : \"http\";\n var host = `${req.headers[\"x-forwarded-host\"] || req.headers.host || req.headers[\":authority\"] || \"127.0.0.1\"}`;\n var urlBase = `${protocol}://${host}`;\n var urlString = req.originalUrl;\n var url2 = new URL(urlString, urlBase);\n var headers = new Headers();\n for (var key in req.headers) {\n if (!key.startsWith(\":\") && req.headers[key]) {\n headers.append(key, req.headers[key]);\n }\n }\n if (!headers.has(\"host\")) {\n headers.set(\"host\", host);\n }\n var hasBody = [\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\"\n ].includes(req.method || \"\");\n var body = hasBody ? Readable.toWeb(req) : null;\n return new Request(url2, {\n method: req.method,\n headers,\n body,\n signal,\n // Required for streaming bodies in Node's experimental fetch:\n duplex: \"half\"\n });\n};\nexport {\n createFileSystemRouterPlugin\n};\n//# sourceMappingURL=fileSystemRouterPlugin.js.map\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one",
|
|
3
|
-
"version": "2.11.
|
|
3
|
+
"version": "2.11.2",
|
|
4
4
|
"description": "One is a React framework for web, iOS, and Android apps.",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"sideEffects": [
|
|
@@ -282,15 +282,15 @@
|
|
|
282
282
|
"@react-navigation/routers": "8.0.0-alpha.21",
|
|
283
283
|
"@rozenite/middleware": "^2.5.0",
|
|
284
284
|
"@ungap/structured-clone": "^1.2.0",
|
|
285
|
-
"@vxrn/color-scheme": "2.11.
|
|
286
|
-
"@vxrn/compiler": "2.11.
|
|
287
|
-
"@vxrn/resolve": "2.11.
|
|
288
|
-
"@vxrn/tslib-lite": "2.11.
|
|
289
|
-
"@vxrn/use-isomorphic-layout-effect": "2.11.
|
|
290
|
-
"@vxrn/utils": "2.11.
|
|
285
|
+
"@vxrn/color-scheme": "2.11.2",
|
|
286
|
+
"@vxrn/compiler": "2.11.2",
|
|
287
|
+
"@vxrn/resolve": "2.11.2",
|
|
288
|
+
"@vxrn/tslib-lite": "2.11.2",
|
|
289
|
+
"@vxrn/use-isomorphic-layout-effect": "2.11.2",
|
|
290
|
+
"@vxrn/utils": "2.11.2",
|
|
291
291
|
"citty": "^0.1.6",
|
|
292
292
|
"core-js": "^3.38.1",
|
|
293
|
-
"create-vxrn": "2.11.
|
|
293
|
+
"create-vxrn": "2.11.2",
|
|
294
294
|
"escape-string-regexp": "^5.0.0",
|
|
295
295
|
"fast-deep-equal": "^3.1.3",
|
|
296
296
|
"fast-glob": "^3.3.3",
|
|
@@ -312,7 +312,7 @@
|
|
|
312
312
|
"tsconfig-paths": "^4",
|
|
313
313
|
"use-latest-callback": "^0.3.5",
|
|
314
314
|
"vite": "^8.2.2",
|
|
315
|
-
"vxrn": "2.11.
|
|
315
|
+
"vxrn": "2.11.2",
|
|
316
316
|
"web-streams-polyfill": "^4.3.0",
|
|
317
317
|
"ws": "^8.21.0",
|
|
318
318
|
"xxhashjs": "^0.2.2"
|
|
@@ -342,7 +342,7 @@
|
|
|
342
342
|
"@babel/types": "^7.28.5",
|
|
343
343
|
"babel-dead-code-elimination": "1.0.10",
|
|
344
344
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
345
|
-
"@vxrn/vite-plugin-metro": "2.11.
|
|
345
|
+
"@vxrn/vite-plugin-metro": "2.11.2"
|
|
346
346
|
},
|
|
347
347
|
"peerDependenciesMeta": {
|
|
348
348
|
"@react-native/babel-preset": {
|
|
@@ -416,7 +416,7 @@
|
|
|
416
416
|
"@types/react-dom": "^19.3.0",
|
|
417
417
|
"@types/react-test-renderer": "^19.1.0",
|
|
418
418
|
"@types/xxhashjs": "^0.2.4",
|
|
419
|
-
"@vxrn/emitter": "2.11.
|
|
419
|
+
"@vxrn/emitter": "2.11.2",
|
|
420
420
|
"depcheck": "^1.4.7",
|
|
421
421
|
"esbuild": "^0.25.12",
|
|
422
422
|
"immer": "^10.1.1",
|
|
@@ -444,7 +444,7 @@
|
|
|
444
444
|
"@babel/types": "^7.28.5",
|
|
445
445
|
"babel-dead-code-elimination": "1.0.10",
|
|
446
446
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
447
|
-
"@vxrn/vite-plugin-metro": "2.11.
|
|
447
|
+
"@vxrn/vite-plugin-metro": "2.11.2"
|
|
448
448
|
},
|
|
449
449
|
"publishConfig": {
|
|
450
450
|
"access": "public"
|
|
@@ -611,7 +611,7 @@
|
|
|
611
611
|
}
|
|
612
612
|
}
|
|
613
613
|
},
|
|
614
|
-
"releaseSourceCommit": "
|
|
614
|
+
"releaseSourceCommit": "6c1420ae008fbd7ddcf7c4d36df8eeb10b27f0cb",
|
|
615
615
|
"repository": {
|
|
616
616
|
"type": "git",
|
|
617
617
|
"url": "git+https://github.com/onejs/one.git",
|
|
@@ -363,4 +363,55 @@ describe('createFileSystemRouterPlugin', () => {
|
|
|
363
363
|
}
|
|
364
364
|
expect(loader).toHaveBeenCalledTimes(24)
|
|
365
365
|
})
|
|
366
|
+
|
|
367
|
+
it('escapes route entries for optimizeDeps glob', async () => {
|
|
368
|
+
process.env.IS_VXRN_CLI = '1'
|
|
369
|
+
tempRoot = mkdtempSync(path.join(tmpdir(), 'one-router-entries-'))
|
|
370
|
+
const root = tempRoot
|
|
371
|
+
const appDir = path.join(tempRoot, 'app')
|
|
372
|
+
writeFileSync(path.join(tempRoot, 'package.json'), '{}\n')
|
|
373
|
+
for (const f of ['index.tsx', '(tabs)/feed.tsx', 'docs/[slug]+ssg.tsx']) {
|
|
374
|
+
const full = path.join(appDir, f)
|
|
375
|
+
mkdirSync(path.dirname(full), { recursive: true })
|
|
376
|
+
writeFileSync(full, 'export default function X() { return null }\n')
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
;(globalThis as any).__vxrnPluginConfig__ = {
|
|
380
|
+
web: {
|
|
381
|
+
defaultRenderMode: 'ssg',
|
|
382
|
+
},
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
const { createRouteIndex } = await import('../../utils/routeIndex')
|
|
386
|
+
const { createFileSystemRouterPlugin } = await import('./fileSystemRouterPlugin')
|
|
387
|
+
const plugin = createFileSystemRouterPlugin(
|
|
388
|
+
{
|
|
389
|
+
router: { root: 'app' },
|
|
390
|
+
optimization: { autoEntriesScanning: true },
|
|
391
|
+
},
|
|
392
|
+
createRouteIndex({ routerRoot: appDir })
|
|
393
|
+
)
|
|
394
|
+
|
|
395
|
+
// neighbor on disk after manifest freeze: never an entry, must stay excluded
|
|
396
|
+
const neighbor = path.join(appDir, 'tabs', 'feed.tsx')
|
|
397
|
+
mkdirSync(path.dirname(neighbor), { recursive: true })
|
|
398
|
+
writeFileSync(neighbor, 'export default function N() { return null }\n')
|
|
399
|
+
|
|
400
|
+
const cfg = (await (plugin as any).config()) as
|
|
401
|
+
| { optimizeDeps?: { entries?: string[] } }
|
|
402
|
+
| undefined
|
|
403
|
+
const entries = cfg?.optimizeDeps?.entries
|
|
404
|
+
expect(entries).toBeDefined()
|
|
405
|
+
|
|
406
|
+
const { default: fastGlob } = await import('fast-glob')
|
|
407
|
+
const globbed = fastGlob.sync(entries!, {
|
|
408
|
+
absolute: true,
|
|
409
|
+
cwd: tempRoot,
|
|
410
|
+
ignore: ['**/node_modules/**'],
|
|
411
|
+
})
|
|
412
|
+
const expected = ['app/index.tsx', 'app/(tabs)/feed.tsx', 'app/docs/[slug]+ssg.tsx']
|
|
413
|
+
.map((f) => path.join(root, f))
|
|
414
|
+
.sort()
|
|
415
|
+
expect([...globbed].sort()).toEqual(expected)
|
|
416
|
+
})
|
|
366
417
|
})
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
2
|
import { Readable } from 'node:stream'
|
|
3
3
|
import { TLSSocket } from 'node:tls'
|
|
4
|
+
import fastGlob from 'fast-glob'
|
|
4
5
|
import { debounce } from 'perfect-debounce'
|
|
5
6
|
import colors from 'picocolors'
|
|
6
7
|
import type { Connect, Plugin, ViteDevServer } from 'vite'
|
|
@@ -694,12 +695,18 @@ export function createFileSystemRouterPlugin(
|
|
|
694
695
|
return []
|
|
695
696
|
}
|
|
696
697
|
|
|
697
|
-
// optimizeDeps.entries uses tinyglobby — needs forward-slash patterns
|
|
698
|
+
// optimizeDeps.entries uses tinyglobby — needs forward-slash patterns.
|
|
699
|
+
// entries are literal route files, so escape glob magic: (group)
|
|
700
|
+
// and [param] segments would otherwise drop or overmatch.
|
|
698
701
|
return [
|
|
699
|
-
path.posix.join(`./${routerRoot}`, route.file),
|
|
702
|
+
fastGlob.escapePath(path.posix.join(`./${routerRoot}`, route.file)),
|
|
700
703
|
...(route.layouts?.flatMap((layout) => {
|
|
701
704
|
if (!layout.contextKey) return []
|
|
702
|
-
return [
|
|
705
|
+
return [
|
|
706
|
+
fastGlob.escapePath(
|
|
707
|
+
path.posix.join(`./${routerRoot}`, layout.contextKey)
|
|
708
|
+
),
|
|
709
|
+
]
|
|
703
710
|
}) || []),
|
|
704
711
|
]
|
|
705
712
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileSystemRouterPlugin.d.ts","sourceRoot":"","sources":["../../../src/vite/plugins/fileSystemRouterPlugin.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fileSystemRouterPlugin.d.ts","sourceRoot":"","sources":["../../../src/vite/plugins/fileSystemRouterPlugin.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAW,MAAM,EAAiB,MAAM,MAAM,CAAA;AAY1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAQxD,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,kBAAkB,CAAA;AAuBtD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,GAAG,CAAC,aAAa,EAC1B,UAAU,EAAE,UAAU,GACrB,MAAM,CA26BR"}
|