one 2.11.1 → 2.11.3
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/cli/buildPage.cjs +6 -1
- package/dist/cjs/cli/buildPage.native.cjs +6 -1
- package/dist/cjs/cli/buildPage.native.js +6 -1
- package/dist/cjs/cli/buildPage.native.js.map +1 -1
- package/dist/esm/cli/buildPage.mjs +6 -1
- package/dist/esm/cli/buildPage.mjs.map +1 -1
- package/dist/esm/cli/buildPage.native.js +6 -1
- package/dist/esm/cli/buildPage.native.js.map +1 -1
- package/package.json +16 -16
- package/src/cli/buildPage.ts +7 -2
|
@@ -416,7 +416,12 @@ function applyAfterLCPScriptLoad(html, preloads) {
|
|
|
416
416
|
}, 0);
|
|
417
417
|
}, 0);
|
|
418
418
|
}
|
|
419
|
-
|
|
419
|
+
// hydration must not start while the parser is still adding server markup
|
|
420
|
+
if (document.readyState === 'loading') {
|
|
421
|
+
document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });
|
|
422
|
+
} else {
|
|
423
|
+
waitIdle(5);
|
|
424
|
+
}
|
|
420
425
|
})();
|
|
421
426
|
<\/script>`;
|
|
422
427
|
html = html.replace("</head>", `${loaderScript}</head>`);
|
|
@@ -477,7 +477,12 @@ function applyAfterLCPScriptLoad(html, preloads) {
|
|
|
477
477
|
}, 0);
|
|
478
478
|
}, 0);
|
|
479
479
|
}
|
|
480
|
-
|
|
480
|
+
// hydration must not start while the parser is still adding server markup
|
|
481
|
+
if (document.readyState === 'loading') {
|
|
482
|
+
document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });
|
|
483
|
+
} else {
|
|
484
|
+
waitIdle(5);
|
|
485
|
+
}
|
|
481
486
|
})();
|
|
482
487
|
<\/script>`;
|
|
483
488
|
html = html.replace("</head>", `${loaderScript}</head>`);
|
|
@@ -477,7 +477,12 @@ function applyAfterLCPScriptLoad(html, preloads) {
|
|
|
477
477
|
}, 0);
|
|
478
478
|
}, 0);
|
|
479
479
|
}
|
|
480
|
-
|
|
480
|
+
// hydration must not start while the parser is still adding server markup
|
|
481
|
+
if (document.readyState === 'loading') {
|
|
482
|
+
document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });
|
|
483
|
+
} else {
|
|
484
|
+
waitIdle(5);
|
|
485
|
+
}
|
|
481
486
|
})();
|
|
482
487
|
<\/script>`;
|
|
483
488
|
html = html.replace("</head>", `${loaderScript}</head>`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPage.native.js","names":[],"sources":["cjs/cli/buildPage.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 buildPage_exports = {};\n__export(buildPage_exports, {\n buildPage: () => buildPage,\n printBuildTimings: () => printBuildTimings\n});\nmodule.exports = __toCommonJS(buildPage_exports);\nvar import_path = require(\"path\");\nvar import_fs_extra = __toESM(require(\"fs-extra\"), 1);\nvar import_vite = require(\"vite\");\nvar constants = __toESM(require(\"../constants\"), 1);\nvar import_constants = require(\"../constants\");\nvar import_cleanUrl = require(\"../utils/cleanUrl\");\nvar import_isResponse = require(\"../utils/isResponse\");\nvar import_toAbsolute = require(\"../utils/toAbsolute\");\nvar import_serverRouteModules = require(\"./serverRouteModules\");\nvar { outputFile } = import_fs_extra.default;\nfunction urlPathToFilePath(urlPath) {\n var parts = urlPath.replace(/^\\//, \"\").split(\"/\");\n return (0, import_path.join)(...parts);\n}\nvar buildTiming = process.env.ONE_BUILD_TIMING === \"1\";\nvar timings = {};\nfunction recordTiming(label, ms) {\n var _timings, _label;\n if (!buildTiming) return;\n ((_timings = timings)[_label = label] || (_timings[_label] = [])).push(ms);\n}\nfunction printBuildTimings() {\n if (!buildTiming) return;\n console.info(\"\\n\\u{1F4CA} Build timing breakdown:\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(timings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [label, times] = _step.value;\n var total = times.reduce(function(a, b) {\n return a + b;\n }, 0);\n var avg = total / times.length;\n console.info(` ${label}: ${avg.toFixed(1)}ms avg, ${total.toFixed(0)}ms total (${times.length} calls)`);\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}\nasync function buildPage(serverEntry, routerRoot, path, relativeId, params, foundRoute, clientManifestEntry, staticDir, clientDir, builtMiddlewares, serverJsPath, preloads, allCSS, layoutCSS, routePreloads, allCSSContents, criticalPreloads, deferredPreloads, useAfterLCP, useAfterLCPAggressive) {\n var t0 = performance.now();\n var render = await getRender(serverEntry);\n recordTiming(\"getRender\", performance.now() - t0);\n var htmlPath = (0, import_cleanUrl.encodeReservedFilenameChars)(`${path.endsWith(\"/\") ? `${removeTrailingSlash(path)}/index` : path}.html`);\n var clientJsPath = clientManifestEntry ? (0, import_vite.normalizePath)((0, import_path.join)(clientDir, clientManifestEntry.file)) : \"\";\n var htmlOutPath = (0, import_toAbsolute.toAbsolute)((0, import_path.join)(staticDir, htmlPath));\n var preloadPath = (0, import_cleanUrl.getPreloadPath)(path);\n var cssPreloadPath = (0, import_cleanUrl.getPreloadCSSPath)(path);\n var loaderPath = \"\";\n var loaderData = {};\n try {\n var _foundRoute_layouts;\n var preloadContent = [\n // static imports for cache warming\n ...preloads.map(function(preload) {\n return `import \"${preload}\"`;\n }),\n `const routes = globalThis.__importMetaGlobbed`,\n `await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`\n ].join(\"\\n\");\n t0 = performance.now();\n await import_fs_extra.default.writeFile((0, import_path.join)(clientDir, urlPathToFilePath(preloadPath)), preloadContent);\n recordTiming(\"writePreload\", performance.now() - t0);\n var uniqueCSS = [\n ...new Set(allCSS)\n ];\n var cssPreloadContent = `\nconst CSS_TIMEOUT = 1000\nconst cssUrls = ${JSON.stringify(uniqueCSS)}\n\n// Global cache for loaded CSS - avoids DOM queries and tracks across navigations\nconst loaded = (window.__oneLoadedCSS ||= new Set())\n\n// Prefetch CSS without applying - called on link hover\nexport function prefetchCSS() {\n cssUrls.forEach(href => {\n if (loaded.has(href)) return\n if (document.querySelector(\\`link[href=\"\\${href}\"]\\`)) return\n const link = document.createElement('link')\n link.rel = 'prefetch'\n link.as = 'style'\n link.href = href\n document.head.appendChild(link)\n })\n}\n\n// Inject CSS to apply styles - called on actual navigation\nexport function injectCSS() {\n return Promise.all(cssUrls.map(href => {\n // Skip if already loaded\n if (loaded.has(href)) return Promise.resolve()\n // Remove any prefetch link for this href\n const prefetchLink = document.querySelector(\\`link[rel=\"prefetch\"][href=\"\\${href}\"]\\`)\n if (prefetchLink) prefetchLink.remove()\n // Skip if stylesheet already exists in DOM\n if (document.querySelector(\\`link[rel=\"stylesheet\"][href=\"\\${href}\"]\\`)) {\n loaded.add(href)\n return Promise.resolve()\n }\n return new Promise(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n const timeoutId = setTimeout(() => {\n console.warn('[one] CSS load timeout:', href)\n loaded.add(href)\n resolve()\n }, CSS_TIMEOUT)\n link.onload = link.onerror = () => {\n clearTimeout(timeoutId)\n loaded.add(href)\n resolve()\n }\n document.head.appendChild(link)\n })\n }))\n}\n\n// For backwards compatibility, also prefetch on import\nprefetchCSS()\n`;\n t0 = performance.now();\n await import_fs_extra.default.writeFile((0, import_path.join)(clientDir, urlPathToFilePath(cssPreloadPath)), cssPreloadContent);\n recordTiming(\"writeCSSPreload\", performance.now() - t0);\n t0 = performance.now();\n var exported = await (0, import_serverRouteModules.getRouteExports)(serverEntry, routerRoot, foundRoute.file);\n recordTiming(\"importServerModule\", performance.now() - t0);\n var loaderProps = {\n path,\n params\n };\n var matches = [];\n t0 = performance.now();\n if ((_foundRoute_layouts = foundRoute.layouts) === null || _foundRoute_layouts === void 0 ? void 0 : _foundRoute_layouts.length) {\n var layoutResults = await Promise.all(foundRoute.layouts.map(async function(layout) {\n try {\n var _layoutExported_loader;\n if (!layout.loaderServerPath) {\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n var layoutExported = await (0, import_serverRouteModules.getRouteExports)(serverEntry, routerRoot, layout.contextKey);\n var layoutLoaderData = await (layoutExported === null || layoutExported === void 0 ? void 0 : (_layoutExported_loader = layoutExported.loader) === null || _layoutExported_loader === void 0 ? void 0 : _layoutExported_loader.call(layoutExported, loaderProps));\n return {\n contextKey: layout.contextKey,\n loaderData: layoutLoaderData\n };\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n throw err;\n }\n console.warn(`[one] Warning: layout loader failed for ${layout.contextKey}:`, err);\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n }));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = layoutResults[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var result = _step.value;\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\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 }\n recordTiming(\"layoutLoaders\", performance.now() - t0);\n t0 = performance.now();\n var loaderRedirectInfo = null;\n if (exported.loader && foundRoute.type !== \"ssr\") {\n var _loaderData_constructor;\n try {\n var _ref;\n var _exported_loader;\n loaderData = (_ref = await ((_exported_loader = exported.loader) === null || _exported_loader === void 0 ? void 0 : _exported_loader.call(exported, loaderProps))) !== null && _ref !== void 0 ? _ref : null;\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n loaderRedirectInfo = extractRedirectInfo(err);\n } else {\n throw err;\n }\n }\n if (!loaderRedirectInfo && loaderData && ((0, import_isResponse.isResponse)(loaderData) || loaderData instanceof Response || (loaderData === null || loaderData === void 0 ? void 0 : (_loaderData_constructor = loaderData.constructor) === null || _loaderData_constructor === void 0 ? void 0 : _loaderData_constructor.name) === \"Response\")) {\n loaderRedirectInfo = extractRedirectInfo(loaderData);\n loaderData = {};\n }\n if (clientJsPath) {\n var loaderPartialPath = (0, import_path.join)(clientDir, urlPathToFilePath((0, import_cleanUrl.getLoaderPath)(path)));\n var uncachedNativePath = loaderPartialPath.replace(constants.LOADER_JS_POSTFIX, import_constants.NATIVE_LOADER_JS_POSTFIX_UNCACHED);\n if (loaderRedirectInfo) {\n var redirectData = JSON.stringify({\n __oneRedirect: loaderRedirectInfo.path,\n __oneRedirectStatus: loaderRedirectInfo.status\n });\n await outputFile(loaderPartialPath, `export function loader(){return ${redirectData}}`);\n var nativeCjs = `exports.loader = function(){return ${redirectData}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = (0, import_cleanUrl.getLoaderPath)(path);\n loaderData = {};\n } else {\n var data = JSON.stringify(loaderData);\n await outputFile(loaderPartialPath, `export function loader(){return ${data}}`);\n var nativeCjs1 = `exports.loader = function(){return ${data}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs1);\n await outputFile(uncachedNativePath, nativeCjs1);\n loaderPath = (0, import_cleanUrl.getLoaderPath)(path);\n }\n }\n }\n if (!exported.loader && foundRoute.type === \"spa\") {\n var loaderPartialPath1 = (0, import_path.join)(clientDir, urlPathToFilePath((0, import_cleanUrl.getLoaderPath)(path)));\n await outputFile(loaderPartialPath1, \"export function loader() { return undefined }\");\n loaderPath = (0, import_cleanUrl.getLoaderPath)(path);\n }\n recordTiming(\"pageLoader\", performance.now() - t0);\n matches.push({\n routeId: foundRoute.file,\n pathname: path,\n params: params || {},\n loaderData\n });\n if (foundRoute.type !== \"ssr\") {\n var _globalThis___vxrnresetState, _globalThis;\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n if (foundRoute.type === \"ssg\") {\n var renderPreloads = useAfterLCPAggressive ? [] : criticalPreloads || preloads;\n var renderDeferredPreloads = useAfterLCPAggressive ? [] : deferredPreloads;\n t0 = performance.now();\n var html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n loaderData,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"ssg\",\n routePreloads,\n matches\n });\n recordTiming(\"ssrRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(html, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else if (foundRoute.type === \"spa\") {\n var _foundRoute_layouts1;\n var needsSpaShell = (_foundRoute_layouts1 = foundRoute.layouts) === null || _foundRoute_layouts1 === void 0 ? void 0 : _foundRoute_layouts1.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (needsSpaShell) {\n var _globalThis___vxrnresetState1, _globalThis1;\n (_globalThis___vxrnresetState1 = (_globalThis1 = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState1 === void 0 ? void 0 : _globalThis___vxrnresetState1.call(_globalThis1);\n var renderPreloads1 = criticalPreloads || preloads;\n var renderDeferredPreloads1 = deferredPreloads || [];\n var layoutMatches = matches.slice(0, -1);\n t0 = performance.now();\n var html1 = await render({\n path,\n preloads: renderPreloads1,\n deferredPreloads: renderDeferredPreloads1,\n loaderProps,\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"spa-shell\",\n routePreloads,\n matches: layoutMatches\n });\n recordTiming(\"spaShellRender\", performance.now() - t0);\n if (useAfterLCP) {\n html1 = applyAfterLCPScriptLoad(html1, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html1);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else {\n let renderCSSTag2 = function(file, index) {\n var content = allCSSContents === null || allCSSContents === void 0 ? void 0 : allCSSContents[index];\n if (content) {\n return ` <style>${content}</style>`;\n }\n return ` <link rel=\"stylesheet\" href=${file} />`;\n };\n var renderCSSTag = renderCSSTag2;\n var layoutCSSSet = new Set(layoutCSS);\n var layoutCssOutput = allCSS.map(function(file, i) {\n return layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var pageCssOutput = allCSS.map(function(file, i) {\n return !layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var criticalScripts = (criticalPreloads || preloads).map(function(preload) {\n return ` <script type=\"module\" src=\"${preload}\"></script>`;\n }).join(\"\\n\");\n await outputFile(htmlOutPath, `<!DOCTYPE html><html><head>\n ${constants.getSpaHeaderElements({\n serverContext: {\n loaderProps,\n loaderData\n }\n })}\n ${layoutCssOutput}\n ${criticalScripts}\n ${pageCssOutput}\n </head><body></body></html>`);\n }\n }\n }\n } catch (err) {\n var errMsg = err instanceof Error ? `${err.message}\n${err.stack}` : `${err}`;\n console.error(`Error building static page at ${path} with id ${relativeId}:\n\n${errMsg}\n\nloaderData:\n\n${JSON.stringify(loaderData || null, null, 2)}\nparams:\n\n${JSON.stringify(params || null, null, 2)}`);\n console.error(err);\n throw err;\n }\n var middlewares = (foundRoute.middlewares || []).map(function(x) {\n return builtMiddlewares[x.contextKey];\n });\n var cleanPath = path === \"/\" ? path : removeTrailingSlash(path);\n return {\n type: foundRoute.type,\n css: allCSS,\n layoutCSS,\n cssContents: allCSSContents,\n routeFile: foundRoute.file,\n middlewares,\n cleanPath,\n preloadPath,\n cssPreloadPath,\n loaderPath,\n clientJsPath,\n serverJsPath: foundRoute.type === \"spa\" ? \"\" : serverJsPath,\n htmlPath,\n loaderData,\n params,\n path,\n preloads,\n criticalPreloads,\n deferredPreloads\n };\n}\nasync function getRender(serverEntry) {\n try {\n var _serverImport_default_default;\n var serverImport = await import((0, import_toAbsolute.toAbsoluteUrl)(serverEntry));\n var render = serverImport.default.render || ((_serverImport_default_default = serverImport.default.default) === null || _serverImport_default_default === void 0 ? void 0 : _serverImport_default_default.render);\n if (typeof render !== \"function\") {\n throw new Error(`didn't find render function in entry: ${serverEntry}`);\n }\n return render;\n } catch (err) {\n console.error(`\\u274C Error importing the root entry:`);\n console.error(` This error happened in the built file: ${serverEntry}`);\n console.error(err[\"stack\"]);\n throw err;\n }\n}\nfunction removeTrailingSlash(path) {\n return path.endsWith(\"/\") ? path.slice(0, path.length - 1) : path;\n}\nfunction extractRedirectInfo(response) {\n if (response.status >= 300 && response.status < 400) {\n var location = response.headers.get(\"location\");\n if (location) {\n try {\n var url = new URL(location);\n return {\n path: url.pathname + url.search + url.hash,\n status: response.status\n };\n } catch (unused) {\n return {\n path: location,\n status: response.status\n };\n }\n }\n }\n return null;\n}\nfunction applyAfterLCPScriptLoad(html, preloads) {\n html = html.replace(/<script\\s+type=\"module\"[^>]*async[^>]*><\\/script>/gi, \"\");\n var loaderScript = `\n<script>\n(function() {\n var scripts = ${JSON.stringify(preloads)};\n function loadScripts() {\n scripts.forEach(function(src) {\n var script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n document.head.appendChild(script);\n });\n }\n function waitIdle(n) {\n if (n <= 0) {\n requestAnimationFrame(function() {\n requestAnimationFrame(loadScripts);\n });\n return;\n }\n setTimeout(function() {\n setTimeout(function() {\n waitIdle(n - 1);\n }, 0);\n }, 0);\n }\n waitIdle(5);\n})();\n</script>`;\n html = html.replace(\"</head>\", `${loaderScript}</head>`);\n return html;\n}\n//# sourceMappingURL=buildPage.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildPage.native.js","names":[],"sources":["cjs/cli/buildPage.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 buildPage_exports = {};\n__export(buildPage_exports, {\n buildPage: () => buildPage,\n printBuildTimings: () => printBuildTimings\n});\nmodule.exports = __toCommonJS(buildPage_exports);\nvar import_path = require(\"path\");\nvar import_fs_extra = __toESM(require(\"fs-extra\"), 1);\nvar import_vite = require(\"vite\");\nvar constants = __toESM(require(\"../constants\"), 1);\nvar import_constants = require(\"../constants\");\nvar import_cleanUrl = require(\"../utils/cleanUrl\");\nvar import_isResponse = require(\"../utils/isResponse\");\nvar import_toAbsolute = require(\"../utils/toAbsolute\");\nvar import_serverRouteModules = require(\"./serverRouteModules\");\nvar { outputFile } = import_fs_extra.default;\nfunction urlPathToFilePath(urlPath) {\n var parts = urlPath.replace(/^\\//, \"\").split(\"/\");\n return (0, import_path.join)(...parts);\n}\nvar buildTiming = process.env.ONE_BUILD_TIMING === \"1\";\nvar timings = {};\nfunction recordTiming(label, ms) {\n var _timings, _label;\n if (!buildTiming) return;\n ((_timings = timings)[_label = label] || (_timings[_label] = [])).push(ms);\n}\nfunction printBuildTimings() {\n if (!buildTiming) return;\n console.info(\"\\n\\u{1F4CA} Build timing breakdown:\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(timings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [label, times] = _step.value;\n var total = times.reduce(function(a, b) {\n return a + b;\n }, 0);\n var avg = total / times.length;\n console.info(` ${label}: ${avg.toFixed(1)}ms avg, ${total.toFixed(0)}ms total (${times.length} calls)`);\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}\nasync function buildPage(serverEntry, routerRoot, path, relativeId, params, foundRoute, clientManifestEntry, staticDir, clientDir, builtMiddlewares, serverJsPath, preloads, allCSS, layoutCSS, routePreloads, allCSSContents, criticalPreloads, deferredPreloads, useAfterLCP, useAfterLCPAggressive) {\n var t0 = performance.now();\n var render = await getRender(serverEntry);\n recordTiming(\"getRender\", performance.now() - t0);\n var htmlPath = (0, import_cleanUrl.encodeReservedFilenameChars)(`${path.endsWith(\"/\") ? `${removeTrailingSlash(path)}/index` : path}.html`);\n var clientJsPath = clientManifestEntry ? (0, import_vite.normalizePath)((0, import_path.join)(clientDir, clientManifestEntry.file)) : \"\";\n var htmlOutPath = (0, import_toAbsolute.toAbsolute)((0, import_path.join)(staticDir, htmlPath));\n var preloadPath = (0, import_cleanUrl.getPreloadPath)(path);\n var cssPreloadPath = (0, import_cleanUrl.getPreloadCSSPath)(path);\n var loaderPath = \"\";\n var loaderData = {};\n try {\n var _foundRoute_layouts;\n var preloadContent = [\n // static imports for cache warming\n ...preloads.map(function(preload) {\n return `import \"${preload}\"`;\n }),\n `const routes = globalThis.__importMetaGlobbed`,\n `await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`\n ].join(\"\\n\");\n t0 = performance.now();\n await import_fs_extra.default.writeFile((0, import_path.join)(clientDir, urlPathToFilePath(preloadPath)), preloadContent);\n recordTiming(\"writePreload\", performance.now() - t0);\n var uniqueCSS = [\n ...new Set(allCSS)\n ];\n var cssPreloadContent = `\nconst CSS_TIMEOUT = 1000\nconst cssUrls = ${JSON.stringify(uniqueCSS)}\n\n// Global cache for loaded CSS - avoids DOM queries and tracks across navigations\nconst loaded = (window.__oneLoadedCSS ||= new Set())\n\n// Prefetch CSS without applying - called on link hover\nexport function prefetchCSS() {\n cssUrls.forEach(href => {\n if (loaded.has(href)) return\n if (document.querySelector(\\`link[href=\"\\${href}\"]\\`)) return\n const link = document.createElement('link')\n link.rel = 'prefetch'\n link.as = 'style'\n link.href = href\n document.head.appendChild(link)\n })\n}\n\n// Inject CSS to apply styles - called on actual navigation\nexport function injectCSS() {\n return Promise.all(cssUrls.map(href => {\n // Skip if already loaded\n if (loaded.has(href)) return Promise.resolve()\n // Remove any prefetch link for this href\n const prefetchLink = document.querySelector(\\`link[rel=\"prefetch\"][href=\"\\${href}\"]\\`)\n if (prefetchLink) prefetchLink.remove()\n // Skip if stylesheet already exists in DOM\n if (document.querySelector(\\`link[rel=\"stylesheet\"][href=\"\\${href}\"]\\`)) {\n loaded.add(href)\n return Promise.resolve()\n }\n return new Promise(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n const timeoutId = setTimeout(() => {\n console.warn('[one] CSS load timeout:', href)\n loaded.add(href)\n resolve()\n }, CSS_TIMEOUT)\n link.onload = link.onerror = () => {\n clearTimeout(timeoutId)\n loaded.add(href)\n resolve()\n }\n document.head.appendChild(link)\n })\n }))\n}\n\n// For backwards compatibility, also prefetch on import\nprefetchCSS()\n`;\n t0 = performance.now();\n await import_fs_extra.default.writeFile((0, import_path.join)(clientDir, urlPathToFilePath(cssPreloadPath)), cssPreloadContent);\n recordTiming(\"writeCSSPreload\", performance.now() - t0);\n t0 = performance.now();\n var exported = await (0, import_serverRouteModules.getRouteExports)(serverEntry, routerRoot, foundRoute.file);\n recordTiming(\"importServerModule\", performance.now() - t0);\n var loaderProps = {\n path,\n params\n };\n var matches = [];\n t0 = performance.now();\n if ((_foundRoute_layouts = foundRoute.layouts) === null || _foundRoute_layouts === void 0 ? void 0 : _foundRoute_layouts.length) {\n var layoutResults = await Promise.all(foundRoute.layouts.map(async function(layout) {\n try {\n var _layoutExported_loader;\n if (!layout.loaderServerPath) {\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n var layoutExported = await (0, import_serverRouteModules.getRouteExports)(serverEntry, routerRoot, layout.contextKey);\n var layoutLoaderData = await (layoutExported === null || layoutExported === void 0 ? void 0 : (_layoutExported_loader = layoutExported.loader) === null || _layoutExported_loader === void 0 ? void 0 : _layoutExported_loader.call(layoutExported, loaderProps));\n return {\n contextKey: layout.contextKey,\n loaderData: layoutLoaderData\n };\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n throw err;\n }\n console.warn(`[one] Warning: layout loader failed for ${layout.contextKey}:`, err);\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n }));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = layoutResults[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var result = _step.value;\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\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 }\n recordTiming(\"layoutLoaders\", performance.now() - t0);\n t0 = performance.now();\n var loaderRedirectInfo = null;\n if (exported.loader && foundRoute.type !== \"ssr\") {\n var _loaderData_constructor;\n try {\n var _ref;\n var _exported_loader;\n loaderData = (_ref = await ((_exported_loader = exported.loader) === null || _exported_loader === void 0 ? void 0 : _exported_loader.call(exported, loaderProps))) !== null && _ref !== void 0 ? _ref : null;\n } catch (err) {\n if ((0, import_isResponse.isResponse)(err)) {\n loaderRedirectInfo = extractRedirectInfo(err);\n } else {\n throw err;\n }\n }\n if (!loaderRedirectInfo && loaderData && ((0, import_isResponse.isResponse)(loaderData) || loaderData instanceof Response || (loaderData === null || loaderData === void 0 ? void 0 : (_loaderData_constructor = loaderData.constructor) === null || _loaderData_constructor === void 0 ? void 0 : _loaderData_constructor.name) === \"Response\")) {\n loaderRedirectInfo = extractRedirectInfo(loaderData);\n loaderData = {};\n }\n if (clientJsPath) {\n var loaderPartialPath = (0, import_path.join)(clientDir, urlPathToFilePath((0, import_cleanUrl.getLoaderPath)(path)));\n var uncachedNativePath = loaderPartialPath.replace(constants.LOADER_JS_POSTFIX, import_constants.NATIVE_LOADER_JS_POSTFIX_UNCACHED);\n if (loaderRedirectInfo) {\n var redirectData = JSON.stringify({\n __oneRedirect: loaderRedirectInfo.path,\n __oneRedirectStatus: loaderRedirectInfo.status\n });\n await outputFile(loaderPartialPath, `export function loader(){return ${redirectData}}`);\n var nativeCjs = `exports.loader = function(){return ${redirectData}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = (0, import_cleanUrl.getLoaderPath)(path);\n loaderData = {};\n } else {\n var data = JSON.stringify(loaderData);\n await outputFile(loaderPartialPath, `export function loader(){return ${data}}`);\n var nativeCjs1 = `exports.loader = function(){return ${data}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs1);\n await outputFile(uncachedNativePath, nativeCjs1);\n loaderPath = (0, import_cleanUrl.getLoaderPath)(path);\n }\n }\n }\n if (!exported.loader && foundRoute.type === \"spa\") {\n var loaderPartialPath1 = (0, import_path.join)(clientDir, urlPathToFilePath((0, import_cleanUrl.getLoaderPath)(path)));\n await outputFile(loaderPartialPath1, \"export function loader() { return undefined }\");\n loaderPath = (0, import_cleanUrl.getLoaderPath)(path);\n }\n recordTiming(\"pageLoader\", performance.now() - t0);\n matches.push({\n routeId: foundRoute.file,\n pathname: path,\n params: params || {},\n loaderData\n });\n if (foundRoute.type !== \"ssr\") {\n var _globalThis___vxrnresetState, _globalThis;\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n if (foundRoute.type === \"ssg\") {\n var renderPreloads = useAfterLCPAggressive ? [] : criticalPreloads || preloads;\n var renderDeferredPreloads = useAfterLCPAggressive ? [] : deferredPreloads;\n t0 = performance.now();\n var html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n loaderData,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"ssg\",\n routePreloads,\n matches\n });\n recordTiming(\"ssrRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(html, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else if (foundRoute.type === \"spa\") {\n var _foundRoute_layouts1;\n var needsSpaShell = (_foundRoute_layouts1 = foundRoute.layouts) === null || _foundRoute_layouts1 === void 0 ? void 0 : _foundRoute_layouts1.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (needsSpaShell) {\n var _globalThis___vxrnresetState1, _globalThis1;\n (_globalThis___vxrnresetState1 = (_globalThis1 = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState1 === void 0 ? void 0 : _globalThis___vxrnresetState1.call(_globalThis1);\n var renderPreloads1 = criticalPreloads || preloads;\n var renderDeferredPreloads1 = deferredPreloads || [];\n var layoutMatches = matches.slice(0, -1);\n t0 = performance.now();\n var html1 = await render({\n path,\n preloads: renderPreloads1,\n deferredPreloads: renderDeferredPreloads1,\n loaderProps,\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"spa-shell\",\n routePreloads,\n matches: layoutMatches\n });\n recordTiming(\"spaShellRender\", performance.now() - t0);\n if (useAfterLCP) {\n html1 = applyAfterLCPScriptLoad(html1, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html1);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else {\n let renderCSSTag2 = function(file, index) {\n var content = allCSSContents === null || allCSSContents === void 0 ? void 0 : allCSSContents[index];\n if (content) {\n return ` <style>${content}</style>`;\n }\n return ` <link rel=\"stylesheet\" href=${file} />`;\n };\n var renderCSSTag = renderCSSTag2;\n var layoutCSSSet = new Set(layoutCSS);\n var layoutCssOutput = allCSS.map(function(file, i) {\n return layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var pageCssOutput = allCSS.map(function(file, i) {\n return !layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var criticalScripts = (criticalPreloads || preloads).map(function(preload) {\n return ` <script type=\"module\" src=\"${preload}\"></script>`;\n }).join(\"\\n\");\n await outputFile(htmlOutPath, `<!DOCTYPE html><html><head>\n ${constants.getSpaHeaderElements({\n serverContext: {\n loaderProps,\n loaderData\n }\n })}\n ${layoutCssOutput}\n ${criticalScripts}\n ${pageCssOutput}\n </head><body></body></html>`);\n }\n }\n }\n } catch (err) {\n var errMsg = err instanceof Error ? `${err.message}\n${err.stack}` : `${err}`;\n console.error(`Error building static page at ${path} with id ${relativeId}:\n\n${errMsg}\n\nloaderData:\n\n${JSON.stringify(loaderData || null, null, 2)}\nparams:\n\n${JSON.stringify(params || null, null, 2)}`);\n console.error(err);\n throw err;\n }\n var middlewares = (foundRoute.middlewares || []).map(function(x) {\n return builtMiddlewares[x.contextKey];\n });\n var cleanPath = path === \"/\" ? path : removeTrailingSlash(path);\n return {\n type: foundRoute.type,\n css: allCSS,\n layoutCSS,\n cssContents: allCSSContents,\n routeFile: foundRoute.file,\n middlewares,\n cleanPath,\n preloadPath,\n cssPreloadPath,\n loaderPath,\n clientJsPath,\n serverJsPath: foundRoute.type === \"spa\" ? \"\" : serverJsPath,\n htmlPath,\n loaderData,\n params,\n path,\n preloads,\n criticalPreloads,\n deferredPreloads\n };\n}\nasync function getRender(serverEntry) {\n try {\n var _serverImport_default_default;\n var serverImport = await import((0, import_toAbsolute.toAbsoluteUrl)(serverEntry));\n var render = serverImport.default.render || ((_serverImport_default_default = serverImport.default.default) === null || _serverImport_default_default === void 0 ? void 0 : _serverImport_default_default.render);\n if (typeof render !== \"function\") {\n throw new Error(`didn't find render function in entry: ${serverEntry}`);\n }\n return render;\n } catch (err) {\n console.error(`\\u274C Error importing the root entry:`);\n console.error(` This error happened in the built file: ${serverEntry}`);\n console.error(err[\"stack\"]);\n throw err;\n }\n}\nfunction removeTrailingSlash(path) {\n return path.endsWith(\"/\") ? path.slice(0, path.length - 1) : path;\n}\nfunction extractRedirectInfo(response) {\n if (response.status >= 300 && response.status < 400) {\n var location = response.headers.get(\"location\");\n if (location) {\n try {\n var url = new URL(location);\n return {\n path: url.pathname + url.search + url.hash,\n status: response.status\n };\n } catch (unused) {\n return {\n path: location,\n status: response.status\n };\n }\n }\n }\n return null;\n}\nfunction applyAfterLCPScriptLoad(html, preloads) {\n html = html.replace(/<script\\s+type=\"module\"[^>]*async[^>]*><\\/script>/gi, \"\");\n var loaderScript = `\n<script>\n(function() {\n var scripts = ${JSON.stringify(preloads)};\n function loadScripts() {\n scripts.forEach(function(src) {\n var script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n document.head.appendChild(script);\n });\n }\n function waitIdle(n) {\n if (n <= 0) {\n requestAnimationFrame(function() {\n requestAnimationFrame(loadScripts);\n });\n return;\n }\n setTimeout(function() {\n setTimeout(function() {\n waitIdle(n - 1);\n }, 0);\n }, 0);\n }\n // hydration must not start while the parser is still adding server markup\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });\n } else {\n waitIdle(5);\n }\n})();\n</script>`;\n html = html.replace(\"</head>\", `${loaderScript}</head>`);\n return html;\n}\n//# sourceMappingURL=buildPage.js.map\n"],"mappings":"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"}
|
|
@@ -385,7 +385,12 @@ function applyAfterLCPScriptLoad(html, preloads) {
|
|
|
385
385
|
}, 0);
|
|
386
386
|
}, 0);
|
|
387
387
|
}
|
|
388
|
-
|
|
388
|
+
// hydration must not start while the parser is still adding server markup
|
|
389
|
+
if (document.readyState === 'loading') {
|
|
390
|
+
document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });
|
|
391
|
+
} else {
|
|
392
|
+
waitIdle(5);
|
|
393
|
+
}
|
|
389
394
|
})();
|
|
390
395
|
<\/script>`;
|
|
391
396
|
html = html.replace("</head>", `${loaderScript}</head>`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPage.js","names":[],"sources":["esm/cli/buildPage.js"],"sourcesContent":["import { join } from \"node:path\";\nimport FSExtra from \"fs-extra\";\nimport { normalizePath } from \"vite\";\nimport * as constants from \"../constants\";\nimport { NATIVE_LOADER_JS_POSTFIX_UNCACHED } from \"../constants\";\nimport {\n encodeReservedFilenameChars,\n getLoaderPath,\n getPreloadCSSPath,\n getPreloadPath\n} from \"../utils/cleanUrl\";\nimport { isResponse } from \"../utils/isResponse\";\nimport { toAbsolute, toAbsoluteUrl } from \"../utils/toAbsolute\";\nimport { getRouteExports } from \"./serverRouteModules\";\nconst { outputFile } = FSExtra;\nfunction urlPathToFilePath(urlPath) {\n const parts = urlPath.replace(/^\\//, \"\").split(\"/\");\n return join(...parts);\n}\nconst buildTiming = process.env.ONE_BUILD_TIMING === \"1\";\nconst timings = {};\nfunction recordTiming(label, ms) {\n if (!buildTiming) return;\n (timings[label] ||= []).push(ms);\n}\nfunction printBuildTimings() {\n if (!buildTiming) return;\n console.info(\"\\n\\u{1F4CA} Build timing breakdown:\");\n for (const [label, times] of Object.entries(timings)) {\n const total = times.reduce((a, b) => a + b, 0);\n const avg = total / times.length;\n console.info(\n ` ${label}: ${avg.toFixed(1)}ms avg, ${total.toFixed(0)}ms total (${times.length} calls)`\n );\n }\n}\nasync function buildPage(serverEntry, routerRoot, path, relativeId, params, foundRoute, clientManifestEntry, staticDir, clientDir, builtMiddlewares, serverJsPath, preloads, allCSS, layoutCSS, routePreloads, allCSSContents, criticalPreloads, deferredPreloads, useAfterLCP, useAfterLCPAggressive) {\n let t0 = performance.now();\n const render = await getRender(serverEntry);\n recordTiming(\"getRender\", performance.now() - t0);\n const htmlPath = encodeReservedFilenameChars(\n `${path.endsWith(\"/\") ? `${removeTrailingSlash(path)}/index` : path}.html`\n );\n const clientJsPath = clientManifestEntry ? normalizePath(join(clientDir, clientManifestEntry.file)) : \"\";\n const htmlOutPath = toAbsolute(join(staticDir, htmlPath));\n const preloadPath = getPreloadPath(path);\n const cssPreloadPath = getPreloadCSSPath(path);\n let loaderPath = \"\";\n let loaderData = {};\n try {\n const preloadContent = [\n // static imports for cache warming\n ...preloads.map((preload) => `import \"${preload}\"`),\n `const routes = globalThis.__importMetaGlobbed`,\n `await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`\n ].join(\"\\n\");\n t0 = performance.now();\n await FSExtra.writeFile(\n join(clientDir, urlPathToFilePath(preloadPath)),\n preloadContent\n );\n recordTiming(\"writePreload\", performance.now() - t0);\n const uniqueCSS = [...new Set(allCSS)];\n const cssPreloadContent = `\nconst CSS_TIMEOUT = 1000\nconst cssUrls = ${JSON.stringify(uniqueCSS)}\n\n// Global cache for loaded CSS - avoids DOM queries and tracks across navigations\nconst loaded = (window.__oneLoadedCSS ||= new Set())\n\n// Prefetch CSS without applying - called on link hover\nexport function prefetchCSS() {\n cssUrls.forEach(href => {\n if (loaded.has(href)) return\n if (document.querySelector(\\`link[href=\"\\${href}\"]\\`)) return\n const link = document.createElement('link')\n link.rel = 'prefetch'\n link.as = 'style'\n link.href = href\n document.head.appendChild(link)\n })\n}\n\n// Inject CSS to apply styles - called on actual navigation\nexport function injectCSS() {\n return Promise.all(cssUrls.map(href => {\n // Skip if already loaded\n if (loaded.has(href)) return Promise.resolve()\n // Remove any prefetch link for this href\n const prefetchLink = document.querySelector(\\`link[rel=\"prefetch\"][href=\"\\${href}\"]\\`)\n if (prefetchLink) prefetchLink.remove()\n // Skip if stylesheet already exists in DOM\n if (document.querySelector(\\`link[rel=\"stylesheet\"][href=\"\\${href}\"]\\`)) {\n loaded.add(href)\n return Promise.resolve()\n }\n return new Promise(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n const timeoutId = setTimeout(() => {\n console.warn('[one] CSS load timeout:', href)\n loaded.add(href)\n resolve()\n }, CSS_TIMEOUT)\n link.onload = link.onerror = () => {\n clearTimeout(timeoutId)\n loaded.add(href)\n resolve()\n }\n document.head.appendChild(link)\n })\n }))\n}\n\n// For backwards compatibility, also prefetch on import\nprefetchCSS()\n`;\n t0 = performance.now();\n await FSExtra.writeFile(\n join(clientDir, urlPathToFilePath(cssPreloadPath)),\n cssPreloadContent\n );\n recordTiming(\"writeCSSPreload\", performance.now() - t0);\n t0 = performance.now();\n const exported = await getRouteExports(serverEntry, routerRoot, foundRoute.file);\n recordTiming(\"importServerModule\", performance.now() - t0);\n const loaderProps = { path, params };\n const matches = [];\n t0 = performance.now();\n if (foundRoute.layouts?.length) {\n const layoutResults = await Promise.all(\n foundRoute.layouts.map(async (layout) => {\n try {\n if (!layout.loaderServerPath) {\n return { contextKey: layout.contextKey, loaderData: void 0 };\n }\n const layoutExported = await getRouteExports(\n serverEntry,\n routerRoot,\n layout.contextKey\n );\n const layoutLoaderData = await layoutExported?.loader?.(loaderProps);\n return { contextKey: layout.contextKey, loaderData: layoutLoaderData };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n console.warn(\n `[one] Warning: layout loader failed for ${layout.contextKey}:`,\n err\n );\n return { contextKey: layout.contextKey, loaderData: void 0 };\n }\n })\n );\n for (const result of layoutResults) {\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\n });\n }\n }\n recordTiming(\"layoutLoaders\", performance.now() - t0);\n t0 = performance.now();\n let loaderRedirectInfo = null;\n if (exported.loader && foundRoute.type !== \"ssr\") {\n try {\n loaderData = await exported.loader?.(loaderProps) ?? null;\n } catch (err) {\n if (isResponse(err)) {\n loaderRedirectInfo = extractRedirectInfo(err);\n } else {\n throw err;\n }\n }\n if (!loaderRedirectInfo && loaderData && (isResponse(loaderData) || loaderData instanceof Response || loaderData?.constructor?.name === \"Response\")) {\n loaderRedirectInfo = extractRedirectInfo(loaderData);\n loaderData = {};\n }\n if (clientJsPath) {\n const loaderPartialPath = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n const uncachedNativePath = loaderPartialPath.replace(\n constants.LOADER_JS_POSTFIX,\n NATIVE_LOADER_JS_POSTFIX_UNCACHED\n );\n if (loaderRedirectInfo) {\n const redirectData = JSON.stringify({\n __oneRedirect: loaderRedirectInfo.path,\n __oneRedirectStatus: loaderRedirectInfo.status\n });\n await outputFile(\n loaderPartialPath,\n `export function loader(){return ${redirectData}}`\n );\n const nativeCjs = `exports.loader = function(){return ${redirectData}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = getLoaderPath(path);\n loaderData = {};\n } else {\n const data = JSON.stringify(loaderData);\n await outputFile(loaderPartialPath, `export function loader(){return ${data}}`);\n const nativeCjs = `exports.loader = function(){return ${data}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = getLoaderPath(path);\n }\n }\n }\n if (!exported.loader && foundRoute.type === \"spa\") {\n const loaderPartialPath = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n await outputFile(loaderPartialPath, \"export function loader() { return undefined }\");\n loaderPath = getLoaderPath(path);\n }\n recordTiming(\"pageLoader\", performance.now() - t0);\n matches.push({\n routeId: foundRoute.file,\n pathname: path,\n params: params || {},\n loaderData\n });\n if (foundRoute.type !== \"ssr\") {\n globalThis[\"__vxrnresetState\"]?.();\n if (foundRoute.type === \"ssg\") {\n const renderPreloads = useAfterLCPAggressive ? [] : criticalPreloads || preloads;\n const renderDeferredPreloads = useAfterLCPAggressive ? [] : deferredPreloads;\n t0 = performance.now();\n let html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n loaderData,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"ssg\",\n routePreloads,\n matches\n });\n recordTiming(\"ssrRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(\n html,\n useAfterLCPAggressive ? criticalPreloads || preloads : preloads\n );\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else if (foundRoute.type === \"spa\") {\n const needsSpaShell = foundRoute.layouts?.some(\n (layout) => layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\"\n );\n if (needsSpaShell) {\n globalThis[\"__vxrnresetState\"]?.();\n const renderPreloads = criticalPreloads || preloads;\n const renderDeferredPreloads = deferredPreloads || [];\n const layoutMatches = matches.slice(0, -1);\n t0 = performance.now();\n let html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"spa-shell\",\n routePreloads,\n matches: layoutMatches\n });\n recordTiming(\"spaShellRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(\n html,\n useAfterLCPAggressive ? criticalPreloads || preloads : preloads\n );\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else {\n let renderCSSTag = function(file, index) {\n const content = allCSSContents?.[index];\n if (content) {\n return ` <style>${content}</style>`;\n }\n return ` <link rel=\"stylesheet\" href=${file} />`;\n };\n const layoutCSSSet = new Set(layoutCSS);\n const layoutCssOutput = allCSS.map((file, i) => layoutCSSSet.has(file) ? renderCSSTag(file, i) : \"\").filter(Boolean).join(\"\\n\");\n const pageCssOutput = allCSS.map((file, i) => !layoutCSSSet.has(file) ? renderCSSTag(file, i) : \"\").filter(Boolean).join(\"\\n\");\n const criticalScripts = (criticalPreloads || preloads).map((preload) => ` <script type=\"module\" src=\"${preload}\"></script>`).join(\"\\n\");\n await outputFile(\n htmlOutPath,\n `<!DOCTYPE html><html><head>\n ${constants.getSpaHeaderElements({ serverContext: { loaderProps, loaderData } })}\n ${layoutCssOutput}\n ${criticalScripts}\n ${pageCssOutput}\n </head><body></body></html>`\n );\n }\n }\n }\n } catch (err) {\n const errMsg = err instanceof Error ? `${err.message}\n${err.stack}` : `${err}`;\n console.error(\n `Error building static page at ${path} with id ${relativeId}:\n\n${errMsg}\n\nloaderData:\n\n${JSON.stringify(loaderData || null, null, 2)}\nparams:\n\n${JSON.stringify(params || null, null, 2)}`\n );\n console.error(err);\n throw err;\n }\n const middlewares = (foundRoute.middlewares || []).map(\n (x) => builtMiddlewares[x.contextKey]\n );\n const cleanPath = path === \"/\" ? path : removeTrailingSlash(path);\n return {\n type: foundRoute.type,\n css: allCSS,\n layoutCSS,\n cssContents: allCSSContents,\n routeFile: foundRoute.file,\n middlewares,\n cleanPath,\n preloadPath,\n cssPreloadPath,\n loaderPath,\n clientJsPath,\n serverJsPath: foundRoute.type === \"spa\" ? \"\" : serverJsPath,\n htmlPath,\n loaderData,\n params,\n path,\n preloads,\n criticalPreloads,\n deferredPreloads\n };\n}\nasync function getRender(serverEntry) {\n try {\n const serverImport = await import(toAbsoluteUrl(serverEntry));\n const render = serverImport.default.render || // for an unknown reason this is necessary\n serverImport.default.default?.render;\n if (typeof render !== \"function\") {\n throw new Error(`didn't find render function in entry: ${serverEntry}`);\n }\n return render;\n } catch (err) {\n console.error(`\\u274C Error importing the root entry:`);\n console.error(` This error happened in the built file: ${serverEntry}`);\n console.error(err[\"stack\"]);\n throw err;\n }\n}\nfunction removeTrailingSlash(path) {\n return path.endsWith(\"/\") ? path.slice(0, path.length - 1) : path;\n}\nfunction extractRedirectInfo(response) {\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n if (location) {\n try {\n const url = new URL(location);\n return {\n path: url.pathname + url.search + url.hash,\n status: response.status\n };\n } catch {\n return { path: location, status: response.status };\n }\n }\n }\n return null;\n}\nfunction applyAfterLCPScriptLoad(html, preloads) {\n html = html.replace(/<script\\s+type=\"module\"[^>]*async[^>]*><\\/script>/gi, \"\");\n const loaderScript = `\n<script>\n(function() {\n var scripts = ${JSON.stringify(preloads)};\n function loadScripts() {\n scripts.forEach(function(src) {\n var script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n document.head.appendChild(script);\n });\n }\n function waitIdle(n) {\n if (n <= 0) {\n requestAnimationFrame(function() {\n requestAnimationFrame(loadScripts);\n });\n return;\n }\n setTimeout(function() {\n setTimeout(function() {\n waitIdle(n - 1);\n }, 0);\n }, 0);\n }\n waitIdle(5);\n})();\n</script>`;\n html = html.replace(\"</head>\", `${loaderScript}</head>`);\n return html;\n}\nexport {\n buildPage,\n printBuildTimings\n};\n//# sourceMappingURL=buildPage.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildPage.js","names":[],"sources":["esm/cli/buildPage.js"],"sourcesContent":["import { join } from \"node:path\";\nimport FSExtra from \"fs-extra\";\nimport { normalizePath } from \"vite\";\nimport * as constants from \"../constants\";\nimport { NATIVE_LOADER_JS_POSTFIX_UNCACHED } from \"../constants\";\nimport {\n encodeReservedFilenameChars,\n getLoaderPath,\n getPreloadCSSPath,\n getPreloadPath\n} from \"../utils/cleanUrl\";\nimport { isResponse } from \"../utils/isResponse\";\nimport { toAbsolute, toAbsoluteUrl } from \"../utils/toAbsolute\";\nimport { getRouteExports } from \"./serverRouteModules\";\nconst { outputFile } = FSExtra;\nfunction urlPathToFilePath(urlPath) {\n const parts = urlPath.replace(/^\\//, \"\").split(\"/\");\n return join(...parts);\n}\nconst buildTiming = process.env.ONE_BUILD_TIMING === \"1\";\nconst timings = {};\nfunction recordTiming(label, ms) {\n if (!buildTiming) return;\n (timings[label] ||= []).push(ms);\n}\nfunction printBuildTimings() {\n if (!buildTiming) return;\n console.info(\"\\n\\u{1F4CA} Build timing breakdown:\");\n for (const [label, times] of Object.entries(timings)) {\n const total = times.reduce((a, b) => a + b, 0);\n const avg = total / times.length;\n console.info(\n ` ${label}: ${avg.toFixed(1)}ms avg, ${total.toFixed(0)}ms total (${times.length} calls)`\n );\n }\n}\nasync function buildPage(serverEntry, routerRoot, path, relativeId, params, foundRoute, clientManifestEntry, staticDir, clientDir, builtMiddlewares, serverJsPath, preloads, allCSS, layoutCSS, routePreloads, allCSSContents, criticalPreloads, deferredPreloads, useAfterLCP, useAfterLCPAggressive) {\n let t0 = performance.now();\n const render = await getRender(serverEntry);\n recordTiming(\"getRender\", performance.now() - t0);\n const htmlPath = encodeReservedFilenameChars(\n `${path.endsWith(\"/\") ? `${removeTrailingSlash(path)}/index` : path}.html`\n );\n const clientJsPath = clientManifestEntry ? normalizePath(join(clientDir, clientManifestEntry.file)) : \"\";\n const htmlOutPath = toAbsolute(join(staticDir, htmlPath));\n const preloadPath = getPreloadPath(path);\n const cssPreloadPath = getPreloadCSSPath(path);\n let loaderPath = \"\";\n let loaderData = {};\n try {\n const preloadContent = [\n // static imports for cache warming\n ...preloads.map((preload) => `import \"${preload}\"`),\n `const routes = globalThis.__importMetaGlobbed`,\n `await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`\n ].join(\"\\n\");\n t0 = performance.now();\n await FSExtra.writeFile(\n join(clientDir, urlPathToFilePath(preloadPath)),\n preloadContent\n );\n recordTiming(\"writePreload\", performance.now() - t0);\n const uniqueCSS = [...new Set(allCSS)];\n const cssPreloadContent = `\nconst CSS_TIMEOUT = 1000\nconst cssUrls = ${JSON.stringify(uniqueCSS)}\n\n// Global cache for loaded CSS - avoids DOM queries and tracks across navigations\nconst loaded = (window.__oneLoadedCSS ||= new Set())\n\n// Prefetch CSS without applying - called on link hover\nexport function prefetchCSS() {\n cssUrls.forEach(href => {\n if (loaded.has(href)) return\n if (document.querySelector(\\`link[href=\"\\${href}\"]\\`)) return\n const link = document.createElement('link')\n link.rel = 'prefetch'\n link.as = 'style'\n link.href = href\n document.head.appendChild(link)\n })\n}\n\n// Inject CSS to apply styles - called on actual navigation\nexport function injectCSS() {\n return Promise.all(cssUrls.map(href => {\n // Skip if already loaded\n if (loaded.has(href)) return Promise.resolve()\n // Remove any prefetch link for this href\n const prefetchLink = document.querySelector(\\`link[rel=\"prefetch\"][href=\"\\${href}\"]\\`)\n if (prefetchLink) prefetchLink.remove()\n // Skip if stylesheet already exists in DOM\n if (document.querySelector(\\`link[rel=\"stylesheet\"][href=\"\\${href}\"]\\`)) {\n loaded.add(href)\n return Promise.resolve()\n }\n return new Promise(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n const timeoutId = setTimeout(() => {\n console.warn('[one] CSS load timeout:', href)\n loaded.add(href)\n resolve()\n }, CSS_TIMEOUT)\n link.onload = link.onerror = () => {\n clearTimeout(timeoutId)\n loaded.add(href)\n resolve()\n }\n document.head.appendChild(link)\n })\n }))\n}\n\n// For backwards compatibility, also prefetch on import\nprefetchCSS()\n`;\n t0 = performance.now();\n await FSExtra.writeFile(\n join(clientDir, urlPathToFilePath(cssPreloadPath)),\n cssPreloadContent\n );\n recordTiming(\"writeCSSPreload\", performance.now() - t0);\n t0 = performance.now();\n const exported = await getRouteExports(serverEntry, routerRoot, foundRoute.file);\n recordTiming(\"importServerModule\", performance.now() - t0);\n const loaderProps = { path, params };\n const matches = [];\n t0 = performance.now();\n if (foundRoute.layouts?.length) {\n const layoutResults = await Promise.all(\n foundRoute.layouts.map(async (layout) => {\n try {\n if (!layout.loaderServerPath) {\n return { contextKey: layout.contextKey, loaderData: void 0 };\n }\n const layoutExported = await getRouteExports(\n serverEntry,\n routerRoot,\n layout.contextKey\n );\n const layoutLoaderData = await layoutExported?.loader?.(loaderProps);\n return { contextKey: layout.contextKey, loaderData: layoutLoaderData };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n console.warn(\n `[one] Warning: layout loader failed for ${layout.contextKey}:`,\n err\n );\n return { contextKey: layout.contextKey, loaderData: void 0 };\n }\n })\n );\n for (const result of layoutResults) {\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\n });\n }\n }\n recordTiming(\"layoutLoaders\", performance.now() - t0);\n t0 = performance.now();\n let loaderRedirectInfo = null;\n if (exported.loader && foundRoute.type !== \"ssr\") {\n try {\n loaderData = await exported.loader?.(loaderProps) ?? null;\n } catch (err) {\n if (isResponse(err)) {\n loaderRedirectInfo = extractRedirectInfo(err);\n } else {\n throw err;\n }\n }\n if (!loaderRedirectInfo && loaderData && (isResponse(loaderData) || loaderData instanceof Response || loaderData?.constructor?.name === \"Response\")) {\n loaderRedirectInfo = extractRedirectInfo(loaderData);\n loaderData = {};\n }\n if (clientJsPath) {\n const loaderPartialPath = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n const uncachedNativePath = loaderPartialPath.replace(\n constants.LOADER_JS_POSTFIX,\n NATIVE_LOADER_JS_POSTFIX_UNCACHED\n );\n if (loaderRedirectInfo) {\n const redirectData = JSON.stringify({\n __oneRedirect: loaderRedirectInfo.path,\n __oneRedirectStatus: loaderRedirectInfo.status\n });\n await outputFile(\n loaderPartialPath,\n `export function loader(){return ${redirectData}}`\n );\n const nativeCjs = `exports.loader = function(){return ${redirectData}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = getLoaderPath(path);\n loaderData = {};\n } else {\n const data = JSON.stringify(loaderData);\n await outputFile(loaderPartialPath, `export function loader(){return ${data}}`);\n const nativeCjs = `exports.loader = function(){return ${data}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = getLoaderPath(path);\n }\n }\n }\n if (!exported.loader && foundRoute.type === \"spa\") {\n const loaderPartialPath = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n await outputFile(loaderPartialPath, \"export function loader() { return undefined }\");\n loaderPath = getLoaderPath(path);\n }\n recordTiming(\"pageLoader\", performance.now() - t0);\n matches.push({\n routeId: foundRoute.file,\n pathname: path,\n params: params || {},\n loaderData\n });\n if (foundRoute.type !== \"ssr\") {\n globalThis[\"__vxrnresetState\"]?.();\n if (foundRoute.type === \"ssg\") {\n const renderPreloads = useAfterLCPAggressive ? [] : criticalPreloads || preloads;\n const renderDeferredPreloads = useAfterLCPAggressive ? [] : deferredPreloads;\n t0 = performance.now();\n let html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n loaderData,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"ssg\",\n routePreloads,\n matches\n });\n recordTiming(\"ssrRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(\n html,\n useAfterLCPAggressive ? criticalPreloads || preloads : preloads\n );\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else if (foundRoute.type === \"spa\") {\n const needsSpaShell = foundRoute.layouts?.some(\n (layout) => layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\"\n );\n if (needsSpaShell) {\n globalThis[\"__vxrnresetState\"]?.();\n const renderPreloads = criticalPreloads || preloads;\n const renderDeferredPreloads = deferredPreloads || [];\n const layoutMatches = matches.slice(0, -1);\n t0 = performance.now();\n let html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"spa-shell\",\n routePreloads,\n matches: layoutMatches\n });\n recordTiming(\"spaShellRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(\n html,\n useAfterLCPAggressive ? criticalPreloads || preloads : preloads\n );\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else {\n let renderCSSTag = function(file, index) {\n const content = allCSSContents?.[index];\n if (content) {\n return ` <style>${content}</style>`;\n }\n return ` <link rel=\"stylesheet\" href=${file} />`;\n };\n const layoutCSSSet = new Set(layoutCSS);\n const layoutCssOutput = allCSS.map((file, i) => layoutCSSSet.has(file) ? renderCSSTag(file, i) : \"\").filter(Boolean).join(\"\\n\");\n const pageCssOutput = allCSS.map((file, i) => !layoutCSSSet.has(file) ? renderCSSTag(file, i) : \"\").filter(Boolean).join(\"\\n\");\n const criticalScripts = (criticalPreloads || preloads).map((preload) => ` <script type=\"module\" src=\"${preload}\"></script>`).join(\"\\n\");\n await outputFile(\n htmlOutPath,\n `<!DOCTYPE html><html><head>\n ${constants.getSpaHeaderElements({ serverContext: { loaderProps, loaderData } })}\n ${layoutCssOutput}\n ${criticalScripts}\n ${pageCssOutput}\n </head><body></body></html>`\n );\n }\n }\n }\n } catch (err) {\n const errMsg = err instanceof Error ? `${err.message}\n${err.stack}` : `${err}`;\n console.error(\n `Error building static page at ${path} with id ${relativeId}:\n\n${errMsg}\n\nloaderData:\n\n${JSON.stringify(loaderData || null, null, 2)}\nparams:\n\n${JSON.stringify(params || null, null, 2)}`\n );\n console.error(err);\n throw err;\n }\n const middlewares = (foundRoute.middlewares || []).map(\n (x) => builtMiddlewares[x.contextKey]\n );\n const cleanPath = path === \"/\" ? path : removeTrailingSlash(path);\n return {\n type: foundRoute.type,\n css: allCSS,\n layoutCSS,\n cssContents: allCSSContents,\n routeFile: foundRoute.file,\n middlewares,\n cleanPath,\n preloadPath,\n cssPreloadPath,\n loaderPath,\n clientJsPath,\n serverJsPath: foundRoute.type === \"spa\" ? \"\" : serverJsPath,\n htmlPath,\n loaderData,\n params,\n path,\n preloads,\n criticalPreloads,\n deferredPreloads\n };\n}\nasync function getRender(serverEntry) {\n try {\n const serverImport = await import(toAbsoluteUrl(serverEntry));\n const render = serverImport.default.render || // for an unknown reason this is necessary\n serverImport.default.default?.render;\n if (typeof render !== \"function\") {\n throw new Error(`didn't find render function in entry: ${serverEntry}`);\n }\n return render;\n } catch (err) {\n console.error(`\\u274C Error importing the root entry:`);\n console.error(` This error happened in the built file: ${serverEntry}`);\n console.error(err[\"stack\"]);\n throw err;\n }\n}\nfunction removeTrailingSlash(path) {\n return path.endsWith(\"/\") ? path.slice(0, path.length - 1) : path;\n}\nfunction extractRedirectInfo(response) {\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n if (location) {\n try {\n const url = new URL(location);\n return {\n path: url.pathname + url.search + url.hash,\n status: response.status\n };\n } catch {\n return { path: location, status: response.status };\n }\n }\n }\n return null;\n}\nfunction applyAfterLCPScriptLoad(html, preloads) {\n html = html.replace(/<script\\s+type=\"module\"[^>]*async[^>]*><\\/script>/gi, \"\");\n const loaderScript = `\n<script>\n(function() {\n var scripts = ${JSON.stringify(preloads)};\n function loadScripts() {\n scripts.forEach(function(src) {\n var script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n document.head.appendChild(script);\n });\n }\n function waitIdle(n) {\n if (n <= 0) {\n requestAnimationFrame(function() {\n requestAnimationFrame(loadScripts);\n });\n return;\n }\n setTimeout(function() {\n setTimeout(function() {\n waitIdle(n - 1);\n }, 0);\n }, 0);\n }\n // hydration must not start while the parser is still adding server markup\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });\n } else {\n waitIdle(5);\n }\n})();\n</script>`;\n html = html.replace(\"</head>\", `${loaderScript}</head>`);\n return html;\n}\nexport {\n buildPage,\n printBuildTimings\n};\n//# sourceMappingURL=buildPage.js.map\n"],"mappings":"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"}
|
|
@@ -444,7 +444,12 @@ function applyAfterLCPScriptLoad(html, preloads) {
|
|
|
444
444
|
}, 0);
|
|
445
445
|
}, 0);
|
|
446
446
|
}
|
|
447
|
-
|
|
447
|
+
// hydration must not start while the parser is still adding server markup
|
|
448
|
+
if (document.readyState === 'loading') {
|
|
449
|
+
document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });
|
|
450
|
+
} else {
|
|
451
|
+
waitIdle(5);
|
|
452
|
+
}
|
|
448
453
|
})();
|
|
449
454
|
<\/script>`;
|
|
450
455
|
html = html.replace("</head>", `${loaderScript}</head>`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPage.native.js","names":[],"sources":["esm/cli/buildPage.native.js"],"sourcesContent":["import { join } from \"path\";\nimport FSExtra from \"fs-extra\";\nimport { normalizePath } from \"vite\";\nimport * as constants from \"../constants\";\nimport { NATIVE_LOADER_JS_POSTFIX_UNCACHED } from \"../constants\";\nimport { encodeReservedFilenameChars, getLoaderPath, getPreloadCSSPath, getPreloadPath } from \"../utils/cleanUrl\";\nimport { isResponse } from \"../utils/isResponse\";\nimport { toAbsolute, toAbsoluteUrl } from \"../utils/toAbsolute\";\nimport { getRouteExports } from \"./serverRouteModules\";\nvar { outputFile } = FSExtra;\nfunction urlPathToFilePath(urlPath) {\n var parts = urlPath.replace(/^\\//, \"\").split(\"/\");\n return join(...parts);\n}\nvar buildTiming = process.env.ONE_BUILD_TIMING === \"1\";\nvar timings = {};\nfunction recordTiming(label, ms) {\n var _timings, _label;\n if (!buildTiming) return;\n ((_timings = timings)[_label = label] || (_timings[_label] = [])).push(ms);\n}\nfunction printBuildTimings() {\n if (!buildTiming) return;\n console.info(\"\\n\\u{1F4CA} Build timing breakdown:\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(timings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [label, times] = _step.value;\n var total = times.reduce(function(a, b) {\n return a + b;\n }, 0);\n var avg = total / times.length;\n console.info(` ${label}: ${avg.toFixed(1)}ms avg, ${total.toFixed(0)}ms total (${times.length} calls)`);\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}\nasync function buildPage(serverEntry, routerRoot, path, relativeId, params, foundRoute, clientManifestEntry, staticDir, clientDir, builtMiddlewares, serverJsPath, preloads, allCSS, layoutCSS, routePreloads, allCSSContents, criticalPreloads, deferredPreloads, useAfterLCP, useAfterLCPAggressive) {\n var t0 = performance.now();\n var render = await getRender(serverEntry);\n recordTiming(\"getRender\", performance.now() - t0);\n var htmlPath = encodeReservedFilenameChars(`${path.endsWith(\"/\") ? `${removeTrailingSlash(path)}/index` : path}.html`);\n var clientJsPath = clientManifestEntry ? normalizePath(join(clientDir, clientManifestEntry.file)) : \"\";\n var htmlOutPath = toAbsolute(join(staticDir, htmlPath));\n var preloadPath = getPreloadPath(path);\n var cssPreloadPath = getPreloadCSSPath(path);\n var loaderPath = \"\";\n var loaderData = {};\n try {\n var _foundRoute_layouts;\n var preloadContent = [\n // static imports for cache warming\n ...preloads.map(function(preload) {\n return `import \"${preload}\"`;\n }),\n `const routes = globalThis.__importMetaGlobbed`,\n `await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`\n ].join(\"\\n\");\n t0 = performance.now();\n await FSExtra.writeFile(join(clientDir, urlPathToFilePath(preloadPath)), preloadContent);\n recordTiming(\"writePreload\", performance.now() - t0);\n var uniqueCSS = [\n ...new Set(allCSS)\n ];\n var cssPreloadContent = `\nconst CSS_TIMEOUT = 1000\nconst cssUrls = ${JSON.stringify(uniqueCSS)}\n\n// Global cache for loaded CSS - avoids DOM queries and tracks across navigations\nconst loaded = (window.__oneLoadedCSS ||= new Set())\n\n// Prefetch CSS without applying - called on link hover\nexport function prefetchCSS() {\n cssUrls.forEach(href => {\n if (loaded.has(href)) return\n if (document.querySelector(\\`link[href=\"\\${href}\"]\\`)) return\n const link = document.createElement('link')\n link.rel = 'prefetch'\n link.as = 'style'\n link.href = href\n document.head.appendChild(link)\n })\n}\n\n// Inject CSS to apply styles - called on actual navigation\nexport function injectCSS() {\n return Promise.all(cssUrls.map(href => {\n // Skip if already loaded\n if (loaded.has(href)) return Promise.resolve()\n // Remove any prefetch link for this href\n const prefetchLink = document.querySelector(\\`link[rel=\"prefetch\"][href=\"\\${href}\"]\\`)\n if (prefetchLink) prefetchLink.remove()\n // Skip if stylesheet already exists in DOM\n if (document.querySelector(\\`link[rel=\"stylesheet\"][href=\"\\${href}\"]\\`)) {\n loaded.add(href)\n return Promise.resolve()\n }\n return new Promise(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n const timeoutId = setTimeout(() => {\n console.warn('[one] CSS load timeout:', href)\n loaded.add(href)\n resolve()\n }, CSS_TIMEOUT)\n link.onload = link.onerror = () => {\n clearTimeout(timeoutId)\n loaded.add(href)\n resolve()\n }\n document.head.appendChild(link)\n })\n }))\n}\n\n// For backwards compatibility, also prefetch on import\nprefetchCSS()\n`;\n t0 = performance.now();\n await FSExtra.writeFile(join(clientDir, urlPathToFilePath(cssPreloadPath)), cssPreloadContent);\n recordTiming(\"writeCSSPreload\", performance.now() - t0);\n t0 = performance.now();\n var exported = await getRouteExports(serverEntry, routerRoot, foundRoute.file);\n recordTiming(\"importServerModule\", performance.now() - t0);\n var loaderProps = {\n path,\n params\n };\n var matches = [];\n t0 = performance.now();\n if ((_foundRoute_layouts = foundRoute.layouts) === null || _foundRoute_layouts === void 0 ? void 0 : _foundRoute_layouts.length) {\n var layoutResults = await Promise.all(foundRoute.layouts.map(async function(layout) {\n try {\n var _layoutExported_loader;\n if (!layout.loaderServerPath) {\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n var layoutExported = await getRouteExports(serverEntry, routerRoot, layout.contextKey);\n var layoutLoaderData = await (layoutExported === null || layoutExported === void 0 ? void 0 : (_layoutExported_loader = layoutExported.loader) === null || _layoutExported_loader === void 0 ? void 0 : _layoutExported_loader.call(layoutExported, loaderProps));\n return {\n contextKey: layout.contextKey,\n loaderData: layoutLoaderData\n };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n console.warn(`[one] Warning: layout loader failed for ${layout.contextKey}:`, err);\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n }));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = layoutResults[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var result = _step.value;\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\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 }\n recordTiming(\"layoutLoaders\", performance.now() - t0);\n t0 = performance.now();\n var loaderRedirectInfo = null;\n if (exported.loader && foundRoute.type !== \"ssr\") {\n var _loaderData_constructor;\n try {\n var _ref;\n var _exported_loader;\n loaderData = (_ref = await ((_exported_loader = exported.loader) === null || _exported_loader === void 0 ? void 0 : _exported_loader.call(exported, loaderProps))) !== null && _ref !== void 0 ? _ref : null;\n } catch (err) {\n if (isResponse(err)) {\n loaderRedirectInfo = extractRedirectInfo(err);\n } else {\n throw err;\n }\n }\n if (!loaderRedirectInfo && loaderData && (isResponse(loaderData) || loaderData instanceof Response || (loaderData === null || loaderData === void 0 ? void 0 : (_loaderData_constructor = loaderData.constructor) === null || _loaderData_constructor === void 0 ? void 0 : _loaderData_constructor.name) === \"Response\")) {\n loaderRedirectInfo = extractRedirectInfo(loaderData);\n loaderData = {};\n }\n if (clientJsPath) {\n var loaderPartialPath = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n var uncachedNativePath = loaderPartialPath.replace(constants.LOADER_JS_POSTFIX, NATIVE_LOADER_JS_POSTFIX_UNCACHED);\n if (loaderRedirectInfo) {\n var redirectData = JSON.stringify({\n __oneRedirect: loaderRedirectInfo.path,\n __oneRedirectStatus: loaderRedirectInfo.status\n });\n await outputFile(loaderPartialPath, `export function loader(){return ${redirectData}}`);\n var nativeCjs = `exports.loader = function(){return ${redirectData}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = getLoaderPath(path);\n loaderData = {};\n } else {\n var data = JSON.stringify(loaderData);\n await outputFile(loaderPartialPath, `export function loader(){return ${data}}`);\n var nativeCjs1 = `exports.loader = function(){return ${data}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs1);\n await outputFile(uncachedNativePath, nativeCjs1);\n loaderPath = getLoaderPath(path);\n }\n }\n }\n if (!exported.loader && foundRoute.type === \"spa\") {\n var loaderPartialPath1 = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n await outputFile(loaderPartialPath1, \"export function loader() { return undefined }\");\n loaderPath = getLoaderPath(path);\n }\n recordTiming(\"pageLoader\", performance.now() - t0);\n matches.push({\n routeId: foundRoute.file,\n pathname: path,\n params: params || {},\n loaderData\n });\n if (foundRoute.type !== \"ssr\") {\n var _globalThis___vxrnresetState, _globalThis;\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n if (foundRoute.type === \"ssg\") {\n var renderPreloads = useAfterLCPAggressive ? [] : criticalPreloads || preloads;\n var renderDeferredPreloads = useAfterLCPAggressive ? [] : deferredPreloads;\n t0 = performance.now();\n var html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n loaderData,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"ssg\",\n routePreloads,\n matches\n });\n recordTiming(\"ssrRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(html, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else if (foundRoute.type === \"spa\") {\n var _foundRoute_layouts1;\n var needsSpaShell = (_foundRoute_layouts1 = foundRoute.layouts) === null || _foundRoute_layouts1 === void 0 ? void 0 : _foundRoute_layouts1.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (needsSpaShell) {\n var _globalThis___vxrnresetState1, _globalThis1;\n (_globalThis___vxrnresetState1 = (_globalThis1 = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState1 === void 0 ? void 0 : _globalThis___vxrnresetState1.call(_globalThis1);\n var renderPreloads1 = criticalPreloads || preloads;\n var renderDeferredPreloads1 = deferredPreloads || [];\n var layoutMatches = matches.slice(0, -1);\n t0 = performance.now();\n var html1 = await render({\n path,\n preloads: renderPreloads1,\n deferredPreloads: renderDeferredPreloads1,\n loaderProps,\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"spa-shell\",\n routePreloads,\n matches: layoutMatches\n });\n recordTiming(\"spaShellRender\", performance.now() - t0);\n if (useAfterLCP) {\n html1 = applyAfterLCPScriptLoad(html1, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html1);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else {\n let renderCSSTag2 = function(file, index) {\n var content = allCSSContents === null || allCSSContents === void 0 ? void 0 : allCSSContents[index];\n if (content) {\n return ` <style>${content}</style>`;\n }\n return ` <link rel=\"stylesheet\" href=${file} />`;\n };\n var renderCSSTag = renderCSSTag2;\n var layoutCSSSet = new Set(layoutCSS);\n var layoutCssOutput = allCSS.map(function(file, i) {\n return layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var pageCssOutput = allCSS.map(function(file, i) {\n return !layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var criticalScripts = (criticalPreloads || preloads).map(function(preload) {\n return ` <script type=\"module\" src=\"${preload}\"></script>`;\n }).join(\"\\n\");\n await outputFile(htmlOutPath, `<!DOCTYPE html><html><head>\n ${constants.getSpaHeaderElements({\n serverContext: {\n loaderProps,\n loaderData\n }\n })}\n ${layoutCssOutput}\n ${criticalScripts}\n ${pageCssOutput}\n </head><body></body></html>`);\n }\n }\n }\n } catch (err) {\n var errMsg = err instanceof Error ? `${err.message}\n${err.stack}` : `${err}`;\n console.error(`Error building static page at ${path} with id ${relativeId}:\n\n${errMsg}\n\nloaderData:\n\n${JSON.stringify(loaderData || null, null, 2)}\nparams:\n\n${JSON.stringify(params || null, null, 2)}`);\n console.error(err);\n throw err;\n }\n var middlewares = (foundRoute.middlewares || []).map(function(x) {\n return builtMiddlewares[x.contextKey];\n });\n var cleanPath = path === \"/\" ? path : removeTrailingSlash(path);\n return {\n type: foundRoute.type,\n css: allCSS,\n layoutCSS,\n cssContents: allCSSContents,\n routeFile: foundRoute.file,\n middlewares,\n cleanPath,\n preloadPath,\n cssPreloadPath,\n loaderPath,\n clientJsPath,\n serverJsPath: foundRoute.type === \"spa\" ? \"\" : serverJsPath,\n htmlPath,\n loaderData,\n params,\n path,\n preloads,\n criticalPreloads,\n deferredPreloads\n };\n}\nasync function getRender(serverEntry) {\n try {\n var _serverImport_default_default;\n var serverImport = await import(toAbsoluteUrl(serverEntry));\n var render = serverImport.default.render || ((_serverImport_default_default = serverImport.default.default) === null || _serverImport_default_default === void 0 ? void 0 : _serverImport_default_default.render);\n if (typeof render !== \"function\") {\n throw new Error(`didn't find render function in entry: ${serverEntry}`);\n }\n return render;\n } catch (err) {\n console.error(`\\u274C Error importing the root entry:`);\n console.error(` This error happened in the built file: ${serverEntry}`);\n console.error(err[\"stack\"]);\n throw err;\n }\n}\nfunction removeTrailingSlash(path) {\n return path.endsWith(\"/\") ? path.slice(0, path.length - 1) : path;\n}\nfunction extractRedirectInfo(response) {\n if (response.status >= 300 && response.status < 400) {\n var location = response.headers.get(\"location\");\n if (location) {\n try {\n var url = new URL(location);\n return {\n path: url.pathname + url.search + url.hash,\n status: response.status\n };\n } catch (unused) {\n return {\n path: location,\n status: response.status\n };\n }\n }\n }\n return null;\n}\nfunction applyAfterLCPScriptLoad(html, preloads) {\n html = html.replace(/<script\\s+type=\"module\"[^>]*async[^>]*><\\/script>/gi, \"\");\n var loaderScript = `\n<script>\n(function() {\n var scripts = ${JSON.stringify(preloads)};\n function loadScripts() {\n scripts.forEach(function(src) {\n var script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n document.head.appendChild(script);\n });\n }\n function waitIdle(n) {\n if (n <= 0) {\n requestAnimationFrame(function() {\n requestAnimationFrame(loadScripts);\n });\n return;\n }\n setTimeout(function() {\n setTimeout(function() {\n waitIdle(n - 1);\n }, 0);\n }, 0);\n }\n waitIdle(5);\n})();\n</script>`;\n html = html.replace(\"</head>\", `${loaderScript}</head>`);\n return html;\n}\nexport {\n buildPage,\n printBuildTimings\n};\n//# sourceMappingURL=buildPage.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildPage.native.js","names":[],"sources":["esm/cli/buildPage.native.js"],"sourcesContent":["import { join } from \"path\";\nimport FSExtra from \"fs-extra\";\nimport { normalizePath } from \"vite\";\nimport * as constants from \"../constants\";\nimport { NATIVE_LOADER_JS_POSTFIX_UNCACHED } from \"../constants\";\nimport { encodeReservedFilenameChars, getLoaderPath, getPreloadCSSPath, getPreloadPath } from \"../utils/cleanUrl\";\nimport { isResponse } from \"../utils/isResponse\";\nimport { toAbsolute, toAbsoluteUrl } from \"../utils/toAbsolute\";\nimport { getRouteExports } from \"./serverRouteModules\";\nvar { outputFile } = FSExtra;\nfunction urlPathToFilePath(urlPath) {\n var parts = urlPath.replace(/^\\//, \"\").split(\"/\");\n return join(...parts);\n}\nvar buildTiming = process.env.ONE_BUILD_TIMING === \"1\";\nvar timings = {};\nfunction recordTiming(label, ms) {\n var _timings, _label;\n if (!buildTiming) return;\n ((_timings = timings)[_label = label] || (_timings[_label] = [])).push(ms);\n}\nfunction printBuildTimings() {\n if (!buildTiming) return;\n console.info(\"\\n\\u{1F4CA} Build timing breakdown:\");\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(timings)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [label, times] = _step.value;\n var total = times.reduce(function(a, b) {\n return a + b;\n }, 0);\n var avg = total / times.length;\n console.info(` ${label}: ${avg.toFixed(1)}ms avg, ${total.toFixed(0)}ms total (${times.length} calls)`);\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}\nasync function buildPage(serverEntry, routerRoot, path, relativeId, params, foundRoute, clientManifestEntry, staticDir, clientDir, builtMiddlewares, serverJsPath, preloads, allCSS, layoutCSS, routePreloads, allCSSContents, criticalPreloads, deferredPreloads, useAfterLCP, useAfterLCPAggressive) {\n var t0 = performance.now();\n var render = await getRender(serverEntry);\n recordTiming(\"getRender\", performance.now() - t0);\n var htmlPath = encodeReservedFilenameChars(`${path.endsWith(\"/\") ? `${removeTrailingSlash(path)}/index` : path}.html`);\n var clientJsPath = clientManifestEntry ? normalizePath(join(clientDir, clientManifestEntry.file)) : \"\";\n var htmlOutPath = toAbsolute(join(staticDir, htmlPath));\n var preloadPath = getPreloadPath(path);\n var cssPreloadPath = getPreloadCSSPath(path);\n var loaderPath = \"\";\n var loaderData = {};\n try {\n var _foundRoute_layouts;\n var preloadContent = [\n // static imports for cache warming\n ...preloads.map(function(preload) {\n return `import \"${preload}\"`;\n }),\n `const routes = globalThis.__importMetaGlobbed`,\n `await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`\n ].join(\"\\n\");\n t0 = performance.now();\n await FSExtra.writeFile(join(clientDir, urlPathToFilePath(preloadPath)), preloadContent);\n recordTiming(\"writePreload\", performance.now() - t0);\n var uniqueCSS = [\n ...new Set(allCSS)\n ];\n var cssPreloadContent = `\nconst CSS_TIMEOUT = 1000\nconst cssUrls = ${JSON.stringify(uniqueCSS)}\n\n// Global cache for loaded CSS - avoids DOM queries and tracks across navigations\nconst loaded = (window.__oneLoadedCSS ||= new Set())\n\n// Prefetch CSS without applying - called on link hover\nexport function prefetchCSS() {\n cssUrls.forEach(href => {\n if (loaded.has(href)) return\n if (document.querySelector(\\`link[href=\"\\${href}\"]\\`)) return\n const link = document.createElement('link')\n link.rel = 'prefetch'\n link.as = 'style'\n link.href = href\n document.head.appendChild(link)\n })\n}\n\n// Inject CSS to apply styles - called on actual navigation\nexport function injectCSS() {\n return Promise.all(cssUrls.map(href => {\n // Skip if already loaded\n if (loaded.has(href)) return Promise.resolve()\n // Remove any prefetch link for this href\n const prefetchLink = document.querySelector(\\`link[rel=\"prefetch\"][href=\"\\${href}\"]\\`)\n if (prefetchLink) prefetchLink.remove()\n // Skip if stylesheet already exists in DOM\n if (document.querySelector(\\`link[rel=\"stylesheet\"][href=\"\\${href}\"]\\`)) {\n loaded.add(href)\n return Promise.resolve()\n }\n return new Promise(resolve => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = href\n const timeoutId = setTimeout(() => {\n console.warn('[one] CSS load timeout:', href)\n loaded.add(href)\n resolve()\n }, CSS_TIMEOUT)\n link.onload = link.onerror = () => {\n clearTimeout(timeoutId)\n loaded.add(href)\n resolve()\n }\n document.head.appendChild(link)\n })\n }))\n}\n\n// For backwards compatibility, also prefetch on import\nprefetchCSS()\n`;\n t0 = performance.now();\n await FSExtra.writeFile(join(clientDir, urlPathToFilePath(cssPreloadPath)), cssPreloadContent);\n recordTiming(\"writeCSSPreload\", performance.now() - t0);\n t0 = performance.now();\n var exported = await getRouteExports(serverEntry, routerRoot, foundRoute.file);\n recordTiming(\"importServerModule\", performance.now() - t0);\n var loaderProps = {\n path,\n params\n };\n var matches = [];\n t0 = performance.now();\n if ((_foundRoute_layouts = foundRoute.layouts) === null || _foundRoute_layouts === void 0 ? void 0 : _foundRoute_layouts.length) {\n var layoutResults = await Promise.all(foundRoute.layouts.map(async function(layout) {\n try {\n var _layoutExported_loader;\n if (!layout.loaderServerPath) {\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n var layoutExported = await getRouteExports(serverEntry, routerRoot, layout.contextKey);\n var layoutLoaderData = await (layoutExported === null || layoutExported === void 0 ? void 0 : (_layoutExported_loader = layoutExported.loader) === null || _layoutExported_loader === void 0 ? void 0 : _layoutExported_loader.call(layoutExported, loaderProps));\n return {\n contextKey: layout.contextKey,\n loaderData: layoutLoaderData\n };\n } catch (err) {\n if (isResponse(err)) {\n throw err;\n }\n console.warn(`[one] Warning: layout loader failed for ${layout.contextKey}:`, err);\n return {\n contextKey: layout.contextKey,\n loaderData: void 0\n };\n }\n }));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = layoutResults[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var result = _step.value;\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\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 }\n recordTiming(\"layoutLoaders\", performance.now() - t0);\n t0 = performance.now();\n var loaderRedirectInfo = null;\n if (exported.loader && foundRoute.type !== \"ssr\") {\n var _loaderData_constructor;\n try {\n var _ref;\n var _exported_loader;\n loaderData = (_ref = await ((_exported_loader = exported.loader) === null || _exported_loader === void 0 ? void 0 : _exported_loader.call(exported, loaderProps))) !== null && _ref !== void 0 ? _ref : null;\n } catch (err) {\n if (isResponse(err)) {\n loaderRedirectInfo = extractRedirectInfo(err);\n } else {\n throw err;\n }\n }\n if (!loaderRedirectInfo && loaderData && (isResponse(loaderData) || loaderData instanceof Response || (loaderData === null || loaderData === void 0 ? void 0 : (_loaderData_constructor = loaderData.constructor) === null || _loaderData_constructor === void 0 ? void 0 : _loaderData_constructor.name) === \"Response\")) {\n loaderRedirectInfo = extractRedirectInfo(loaderData);\n loaderData = {};\n }\n if (clientJsPath) {\n var loaderPartialPath = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n var uncachedNativePath = loaderPartialPath.replace(constants.LOADER_JS_POSTFIX, NATIVE_LOADER_JS_POSTFIX_UNCACHED);\n if (loaderRedirectInfo) {\n var redirectData = JSON.stringify({\n __oneRedirect: loaderRedirectInfo.path,\n __oneRedirectStatus: loaderRedirectInfo.status\n });\n await outputFile(loaderPartialPath, `export function loader(){return ${redirectData}}`);\n var nativeCjs = `exports.loader = function(){return ${redirectData}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs);\n await outputFile(uncachedNativePath, nativeCjs);\n loaderPath = getLoaderPath(path);\n loaderData = {};\n } else {\n var data = JSON.stringify(loaderData);\n await outputFile(loaderPartialPath, `export function loader(){return ${data}}`);\n var nativeCjs1 = `exports.loader = function(){return ${data}}`;\n await outputFile(loaderPartialPath.replace(/\\.js$/, \".native.js\"), nativeCjs1);\n await outputFile(uncachedNativePath, nativeCjs1);\n loaderPath = getLoaderPath(path);\n }\n }\n }\n if (!exported.loader && foundRoute.type === \"spa\") {\n var loaderPartialPath1 = join(clientDir, urlPathToFilePath(getLoaderPath(path)));\n await outputFile(loaderPartialPath1, \"export function loader() { return undefined }\");\n loaderPath = getLoaderPath(path);\n }\n recordTiming(\"pageLoader\", performance.now() - t0);\n matches.push({\n routeId: foundRoute.file,\n pathname: path,\n params: params || {},\n loaderData\n });\n if (foundRoute.type !== \"ssr\") {\n var _globalThis___vxrnresetState, _globalThis;\n (_globalThis___vxrnresetState = (_globalThis = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState === void 0 ? void 0 : _globalThis___vxrnresetState.call(_globalThis);\n if (foundRoute.type === \"ssg\") {\n var renderPreloads = useAfterLCPAggressive ? [] : criticalPreloads || preloads;\n var renderDeferredPreloads = useAfterLCPAggressive ? [] : deferredPreloads;\n t0 = performance.now();\n var html = await render({\n path,\n preloads: renderPreloads,\n deferredPreloads: renderDeferredPreloads,\n loaderProps,\n loaderData,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"ssg\",\n routePreloads,\n matches\n });\n recordTiming(\"ssrRender\", performance.now() - t0);\n if (useAfterLCP) {\n html = applyAfterLCPScriptLoad(html, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else if (foundRoute.type === \"spa\") {\n var _foundRoute_layouts1;\n var needsSpaShell = (_foundRoute_layouts1 = foundRoute.layouts) === null || _foundRoute_layouts1 === void 0 ? void 0 : _foundRoute_layouts1.some(function(layout) {\n return layout.layoutRenderMode === \"ssg\" || layout.layoutRenderMode === \"ssr\";\n });\n if (needsSpaShell) {\n var _globalThis___vxrnresetState1, _globalThis1;\n (_globalThis___vxrnresetState1 = (_globalThis1 = globalThis)[\"__vxrnresetState\"]) === null || _globalThis___vxrnresetState1 === void 0 ? void 0 : _globalThis___vxrnresetState1.call(_globalThis1);\n var renderPreloads1 = criticalPreloads || preloads;\n var renderDeferredPreloads1 = deferredPreloads || [];\n var layoutMatches = matches.slice(0, -1);\n t0 = performance.now();\n var html1 = await render({\n path,\n preloads: renderPreloads1,\n deferredPreloads: renderDeferredPreloads1,\n loaderProps,\n // don't pass loaderData for spa-shell - the page loader runs on client\n // passing {} here would make useLoaderState think data is preloaded\n loaderData: void 0,\n css: allCSS,\n cssContents: allCSSContents,\n mode: \"spa-shell\",\n routePreloads,\n matches: layoutMatches\n });\n recordTiming(\"spaShellRender\", performance.now() - t0);\n if (useAfterLCP) {\n html1 = applyAfterLCPScriptLoad(html1, useAfterLCPAggressive ? criticalPreloads || preloads : preloads);\n }\n t0 = performance.now();\n await outputFile(htmlOutPath, html1);\n recordTiming(\"writeHTML\", performance.now() - t0);\n } else {\n let renderCSSTag2 = function(file, index) {\n var content = allCSSContents === null || allCSSContents === void 0 ? void 0 : allCSSContents[index];\n if (content) {\n return ` <style>${content}</style>`;\n }\n return ` <link rel=\"stylesheet\" href=${file} />`;\n };\n var renderCSSTag = renderCSSTag2;\n var layoutCSSSet = new Set(layoutCSS);\n var layoutCssOutput = allCSS.map(function(file, i) {\n return layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var pageCssOutput = allCSS.map(function(file, i) {\n return !layoutCSSSet.has(file) ? renderCSSTag2(file, i) : \"\";\n }).filter(Boolean).join(\"\\n\");\n var criticalScripts = (criticalPreloads || preloads).map(function(preload) {\n return ` <script type=\"module\" src=\"${preload}\"></script>`;\n }).join(\"\\n\");\n await outputFile(htmlOutPath, `<!DOCTYPE html><html><head>\n ${constants.getSpaHeaderElements({\n serverContext: {\n loaderProps,\n loaderData\n }\n })}\n ${layoutCssOutput}\n ${criticalScripts}\n ${pageCssOutput}\n </head><body></body></html>`);\n }\n }\n }\n } catch (err) {\n var errMsg = err instanceof Error ? `${err.message}\n${err.stack}` : `${err}`;\n console.error(`Error building static page at ${path} with id ${relativeId}:\n\n${errMsg}\n\nloaderData:\n\n${JSON.stringify(loaderData || null, null, 2)}\nparams:\n\n${JSON.stringify(params || null, null, 2)}`);\n console.error(err);\n throw err;\n }\n var middlewares = (foundRoute.middlewares || []).map(function(x) {\n return builtMiddlewares[x.contextKey];\n });\n var cleanPath = path === \"/\" ? path : removeTrailingSlash(path);\n return {\n type: foundRoute.type,\n css: allCSS,\n layoutCSS,\n cssContents: allCSSContents,\n routeFile: foundRoute.file,\n middlewares,\n cleanPath,\n preloadPath,\n cssPreloadPath,\n loaderPath,\n clientJsPath,\n serverJsPath: foundRoute.type === \"spa\" ? \"\" : serverJsPath,\n htmlPath,\n loaderData,\n params,\n path,\n preloads,\n criticalPreloads,\n deferredPreloads\n };\n}\nasync function getRender(serverEntry) {\n try {\n var _serverImport_default_default;\n var serverImport = await import(toAbsoluteUrl(serverEntry));\n var render = serverImport.default.render || ((_serverImport_default_default = serverImport.default.default) === null || _serverImport_default_default === void 0 ? void 0 : _serverImport_default_default.render);\n if (typeof render !== \"function\") {\n throw new Error(`didn't find render function in entry: ${serverEntry}`);\n }\n return render;\n } catch (err) {\n console.error(`\\u274C Error importing the root entry:`);\n console.error(` This error happened in the built file: ${serverEntry}`);\n console.error(err[\"stack\"]);\n throw err;\n }\n}\nfunction removeTrailingSlash(path) {\n return path.endsWith(\"/\") ? path.slice(0, path.length - 1) : path;\n}\nfunction extractRedirectInfo(response) {\n if (response.status >= 300 && response.status < 400) {\n var location = response.headers.get(\"location\");\n if (location) {\n try {\n var url = new URL(location);\n return {\n path: url.pathname + url.search + url.hash,\n status: response.status\n };\n } catch (unused) {\n return {\n path: location,\n status: response.status\n };\n }\n }\n }\n return null;\n}\nfunction applyAfterLCPScriptLoad(html, preloads) {\n html = html.replace(/<script\\s+type=\"module\"[^>]*async[^>]*><\\/script>/gi, \"\");\n var loaderScript = `\n<script>\n(function() {\n var scripts = ${JSON.stringify(preloads)};\n function loadScripts() {\n scripts.forEach(function(src) {\n var script = document.createElement('script');\n script.type = 'module';\n script.src = src;\n document.head.appendChild(script);\n });\n }\n function waitIdle(n) {\n if (n <= 0) {\n requestAnimationFrame(function() {\n requestAnimationFrame(loadScripts);\n });\n return;\n }\n setTimeout(function() {\n setTimeout(function() {\n waitIdle(n - 1);\n }, 0);\n }, 0);\n }\n // hydration must not start while the parser is still adding server markup\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });\n } else {\n waitIdle(5);\n }\n})();\n</script>`;\n html = html.replace(\"</head>\", `${loaderScript}</head>`);\n return html;\n}\nexport {\n buildPage,\n printBuildTimings\n};\n//# sourceMappingURL=buildPage.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.3",
|
|
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.3",
|
|
286
|
+
"@vxrn/compiler": "2.11.3",
|
|
287
|
+
"@vxrn/resolve": "2.11.3",
|
|
288
|
+
"@vxrn/tslib-lite": "2.11.3",
|
|
289
|
+
"@vxrn/use-isomorphic-layout-effect": "2.11.3",
|
|
290
|
+
"@vxrn/utils": "2.11.3",
|
|
291
291
|
"citty": "^0.1.6",
|
|
292
292
|
"core-js": "^3.38.1",
|
|
293
|
-
"create-vxrn": "2.11.
|
|
293
|
+
"create-vxrn": "2.11.3",
|
|
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.3",
|
|
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.3"
|
|
346
346
|
},
|
|
347
347
|
"peerDependenciesMeta": {
|
|
348
348
|
"@react-native/babel-preset": {
|
|
@@ -404,19 +404,19 @@
|
|
|
404
404
|
}
|
|
405
405
|
},
|
|
406
406
|
"devDependencies": {
|
|
407
|
-
"@tamagui/sheet": "3.1.
|
|
407
|
+
"@tamagui/sheet": "3.1.5",
|
|
408
408
|
"@callstack/liquid-glass": "^0.8.1",
|
|
409
409
|
"@react-native/babel-plugin-codegen": "0.88.0",
|
|
410
410
|
"@react-native/codegen": "^0.88.0",
|
|
411
411
|
"@react-navigation/core": "8.0.0-alpha.41",
|
|
412
412
|
"@react-navigation/drawer": "8.0.0-alpha.58",
|
|
413
413
|
"@react-navigation/native": "8.0.0-alpha.51",
|
|
414
|
-
"@tamagui/build": "3.1.
|
|
414
|
+
"@tamagui/build": "3.1.5",
|
|
415
415
|
"@types/node": "^24.10.0",
|
|
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.3",
|
|
420
420
|
"depcheck": "^1.4.7",
|
|
421
421
|
"esbuild": "^0.25.12",
|
|
422
422
|
"immer": "^10.1.1",
|
|
@@ -435,7 +435,7 @@
|
|
|
435
435
|
"typescript": "7.0.2",
|
|
436
436
|
"vitest": "^4.1.0",
|
|
437
437
|
"yoga-layout": "^3.2.1",
|
|
438
|
-
"@tamagui/web": "3.1.
|
|
438
|
+
"@tamagui/web": "3.1.5",
|
|
439
439
|
"@babel/core": "^7.28.5",
|
|
440
440
|
"@babel/generator": "7.29.7",
|
|
441
441
|
"@babel/parser": "^7.28.5",
|
|
@@ -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.3"
|
|
448
448
|
},
|
|
449
449
|
"publishConfig": {
|
|
450
450
|
"access": "public"
|
|
@@ -611,7 +611,7 @@
|
|
|
611
611
|
}
|
|
612
612
|
}
|
|
613
613
|
},
|
|
614
|
-
"releaseSourceCommit": "
|
|
614
|
+
"releaseSourceCommit": "0207106e50cd7344865c41257dab77a99f45af7e",
|
|
615
615
|
"repository": {
|
|
616
616
|
"type": "git",
|
|
617
617
|
"url": "git+https://github.com/onejs/one.git",
|
package/src/cli/buildPage.ts
CHANGED
|
@@ -544,7 +544,7 @@ function applyAfterLCPScriptLoad(html: string, preloads: string[]): string {
|
|
|
544
544
|
html = html.replace(/<script\s+type="module"[^>]*async[^>]*><\/script>/gi, '')
|
|
545
545
|
|
|
546
546
|
// Create the loader script
|
|
547
|
-
//
|
|
547
|
+
// Waits for the parser, then nested setTimeout yields to event loop multiple times, letting browser settle before loading scripts
|
|
548
548
|
const loaderScript = `
|
|
549
549
|
<script>
|
|
550
550
|
(function() {
|
|
@@ -570,7 +570,12 @@ function applyAfterLCPScriptLoad(html: string, preloads: string[]): string {
|
|
|
570
570
|
}, 0);
|
|
571
571
|
}, 0);
|
|
572
572
|
}
|
|
573
|
-
|
|
573
|
+
// hydration must not start while the parser is still adding server markup
|
|
574
|
+
if (document.readyState === 'loading') {
|
|
575
|
+
document.addEventListener('DOMContentLoaded', function() { waitIdle(5); });
|
|
576
|
+
} else {
|
|
577
|
+
waitIdle(5);
|
|
578
|
+
}
|
|
574
579
|
})();
|
|
575
580
|
</script>`
|
|
576
581
|
|