one 2.9.0 → 2.9.1
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/build.cjs +8 -10
- package/dist/cjs/cli/build.native.cjs +27 -29
- package/dist/cjs/cli/build.native.js +27 -29
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/cli/buildPage.cjs +2 -11
- package/dist/cjs/cli/buildPage.native.cjs +11 -39
- package/dist/cjs/cli/buildPage.native.js +11 -39
- package/dist/cjs/cli/buildPage.native.js.map +1 -1
- package/dist/cjs/createApp.cjs +2 -5
- package/dist/cjs/platform/ui/Pager.cjs +2 -1
- package/dist/cjs/platform/ui/Pager.native.cjs +3 -0
- package/dist/cjs/platform/ui/Pager.native.js +3 -0
- package/dist/cjs/platform/ui/Pager.native.js.map +1 -1
- package/dist/esm/cli/build.mjs +8 -10
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +27 -29
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli/buildPage.mjs +2 -11
- package/dist/esm/cli/buildPage.mjs.map +1 -1
- package/dist/esm/cli/buildPage.native.js +11 -39
- package/dist/esm/cli/buildPage.native.js.map +1 -1
- package/dist/esm/createApp.mjs +2 -5
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/platform/ui/Pager.mjs +2 -1
- package/dist/esm/platform/ui/Pager.mjs.map +1 -1
- package/dist/esm/platform/ui/Pager.native.js +3 -0
- package/dist/esm/platform/ui/Pager.native.js.map +1 -1
- package/package.json +17 -16
- package/src/cli/build.ts +9 -11
- package/src/cli/buildPage.ts +11 -22
- package/src/cli/workerPool.test.ts +1 -1
- package/src/cli/workerPool.ts +1 -1
- package/src/createApp.tsx +4 -2
- package/src/layouts/stack-utils/StackScreen.tsx +15 -5
- package/src/platform/ui/Pager.native.tsx +3 -0
- package/src/platform/ui/Pager.tsx +1 -0
- package/src/platform/ui/pagerTypes.ts +6 -1
- package/src/types.ts +1 -1
- package/src/vite/types.ts +2 -2
- package/types/cli/build.d.ts.map +1 -1
- package/types/cli/buildPage.d.ts +1 -1
- package/types/cli/buildPage.d.ts.map +1 -1
- package/types/cli/workerPool.d.ts +1 -1
- package/types/cli/workerPool.d.ts.map +1 -1
- package/types/createApp.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackScreen.d.ts +4 -5
- package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
- package/types/platform/ui/Pager.d.ts.map +1 -1
- package/types/platform/ui/Pager.native.d.ts.map +1 -1
- package/types/platform/ui/pagerTypes.d.ts +6 -1
- package/types/platform/ui/pagerTypes.d.ts.map +1 -1
- package/types/types.d.ts +1 -1
- package/types/types.d.ts.map +1 -1
- package/types/vite/types.d.ts +1 -1
- package/types/vite/types.d.ts.map +1 -1
|
@@ -61,40 +61,12 @@ async function buildPage(serverEntry, routerRoot, path, relativeId, params, foun
|
|
|
61
61
|
var loaderData = {};
|
|
62
62
|
try {
|
|
63
63
|
var _foundRoute_layouts;
|
|
64
|
-
var routeImports = [];
|
|
65
|
-
var routeRegistrations = [];
|
|
66
|
-
var routeIndex = 0;
|
|
67
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
68
|
-
try {
|
|
69
|
-
for (var _iterator = Object.entries(routePreloads)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
70
|
-
var [routeKey, bundlePath] = _step.value;
|
|
71
|
-
var varName = `_r${routeIndex++}`;
|
|
72
|
-
routeImports.push(`import * as ${varName} from "${bundlePath}"`);
|
|
73
|
-
routeRegistrations.push(`registerPreloadedRoute("${routeKey}", ${varName})`);
|
|
74
|
-
}
|
|
75
|
-
} catch (err) {
|
|
76
|
-
_didIteratorError = true;
|
|
77
|
-
_iteratorError = err;
|
|
78
|
-
} finally {
|
|
79
|
-
try {
|
|
80
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
81
|
-
_iterator.return();
|
|
82
|
-
}
|
|
83
|
-
} finally {
|
|
84
|
-
if (_didIteratorError) {
|
|
85
|
-
throw _iteratorError;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
var registrationCalls = routeRegistrations.map(function(call) {
|
|
90
|
-
return call.replace("registerPreloadedRoute(", "window.__oneRegisterPreloadedRoute(");
|
|
91
|
-
});
|
|
92
64
|
var preloadContent = [
|
|
93
|
-
...routeImports,
|
|
94
65
|
...preloads.map(function(preload) {
|
|
95
66
|
return `import "${preload}"`;
|
|
96
67
|
}),
|
|
97
|
-
|
|
68
|
+
`const routes = globalThis.__importMetaGlobbed`,
|
|
69
|
+
`await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`
|
|
98
70
|
].join("\n");
|
|
99
71
|
t0 = performance.now();
|
|
100
72
|
await FSExtra.writeFile(join(clientDir, urlPathToFilePath(preloadPath)), preloadContent);
|
|
@@ -194,10 +166,10 @@ prefetchCSS()
|
|
|
194
166
|
};
|
|
195
167
|
}
|
|
196
168
|
}));
|
|
197
|
-
var
|
|
169
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
198
170
|
try {
|
|
199
|
-
for (var
|
|
200
|
-
var result =
|
|
171
|
+
for (var _iterator = layoutResults[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
172
|
+
var result = _step.value;
|
|
201
173
|
matches.push({
|
|
202
174
|
routeId: result.contextKey,
|
|
203
175
|
pathname: path,
|
|
@@ -206,16 +178,16 @@ prefetchCSS()
|
|
|
206
178
|
});
|
|
207
179
|
}
|
|
208
180
|
} catch (err) {
|
|
209
|
-
|
|
210
|
-
|
|
181
|
+
_didIteratorError = true;
|
|
182
|
+
_iteratorError = err;
|
|
211
183
|
} finally {
|
|
212
184
|
try {
|
|
213
|
-
if (!
|
|
214
|
-
|
|
185
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
186
|
+
_iterator.return();
|
|
215
187
|
}
|
|
216
188
|
} finally {
|
|
217
|
-
if (
|
|
218
|
-
throw
|
|
189
|
+
if (_didIteratorError) {
|
|
190
|
+
throw _iteratorError;
|
|
219
191
|
}
|
|
220
192
|
}
|
|
221
193
|
}
|
|
@@ -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 routeImports = [];\n var routeRegistrations = [];\n var routeIndex = 0;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.entries(routePreloads)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [routeKey, bundlePath] = _step.value;\n var varName = `_r${routeIndex++}`;\n routeImports.push(`import * as ${varName} from \"${bundlePath}\"`);\n routeRegistrations.push(`registerPreloadedRoute(\"${routeKey}\", ${varName})`);\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 var registrationCalls = routeRegistrations.map(function(call) {\n return call.replace(\"registerPreloadedRoute(\", \"window.__oneRegisterPreloadedRoute(\");\n });\n var preloadContent = [\n // import all route modules\n ...routeImports,\n // static imports for cache warming (original behavior)\n ...preloads.map(function(preload) {\n return `import \"${preload}\"`;\n }),\n // register all route modules using window global\n ...registrationCalls\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 _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = layoutResults[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var result = _step1.value;\n matches.push({\n routeId: result.contextKey,\n pathname: path,\n params: params || {},\n loaderData: result.loaderData\n });\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\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 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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"}
|
package/dist/esm/createApp.mjs
CHANGED
|
@@ -136,11 +136,8 @@ function createApp(options) {
|
|
|
136
136
|
initClientMatches(restoredMatches);
|
|
137
137
|
}
|
|
138
138
|
const setupComplete = options.getSetupPromise ? options.getSetupPromise() : Promise.resolve();
|
|
139
|
-
const preloadPromises = routePreloads ?
|
|
140
|
-
const mod = await
|
|
141
|
-
/* @vite-ignore */
|
|
142
|
-
bundlePath
|
|
143
|
-
);
|
|
139
|
+
const preloadPromises = routePreloads ? routePreloads.map(async (routeKey) => {
|
|
140
|
+
const mod = await options.routes[routeKey]();
|
|
144
141
|
registerPreloadedRoute(routeKey, mod);
|
|
145
142
|
return mod;
|
|
146
143
|
}) : [findRootLayout(options.routes, options.routerRoot)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createApp.js","names":[],"sources":["esm/createApp.js"],"sourcesContent":["import \"./setup\";\nimport { cloneElement } from \"react\";\nimport { resolveClientLoader } from \"./clientLoaderResolver\";\nimport { Root } from \"./Root\";\nimport { render } from \"./render\";\nimport { initClientMatches } from \"./router/router\";\nimport { registerPreloadedRoute } from \"./router/useViteRoutes\";\nimport { setupSkewProtection } from \"./skewProtection\";\nimport { handleSkewError, isChunkLoadError } from \"./utils/dynamicImport\";\nimport { findRootLayout } from \"./utils/findRootLayout\";\nimport { getServerHeadInsertions } from \"./useServerHeadInsertion\";\nimport { SERVER_CONTEXT_POST_RENDER_STRING } from \"./vite/constants\";\nimport { safeJsonStringify } from \"./utils/htmlEscape\";\nimport { getServerContext, setServerContext } from \"./vite/one-server-only\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nfunction createApp(options) {\n if (import.meta.env.SSR) {\n let cachedServerRender;\n let cachedRenderToStaticMarkup;\n let cachedRenderToString;\n let setupDone = false;\n return {\n options,\n render: async (props) => {\n const renderMode = props.mode === \"spa-shell\" ? \"spa\" : props.mode;\n const shouldRunSetup = props.mode !== \"ssg\" && props.mode !== \"spa-shell\";\n if (process.env.ONE_RENDER_MODE !== renderMode) {\n process.env.ONE_RENDER_MODE = renderMode;\n }\n if (shouldRunSetup && !setupDone && options.getSetupPromise) {\n await options.getSetupPromise();\n setupDone = true;\n }\n if (!cachedServerRender) {\n const sr = await import(\"./server-render\");\n cachedServerRender = sr;\n cachedRenderToStaticMarkup = sr.renderToStaticMarkup;\n cachedRenderToString = sr.renderToString;\n }\n const renderToStaticMarkup = cachedRenderToStaticMarkup;\n const renderToString = cachedRenderToString;\n const {\n loaderData,\n loaderProps,\n css,\n cssContents,\n mode,\n loaderServerData,\n routePreloads: routePreloads2,\n matches\n } = props;\n setServerContext({\n postRenderData: loaderServerData,\n loaderData,\n loaderProps,\n mode,\n css,\n cssContents,\n routePreloads: routePreloads2,\n matches\n });\n let renderId;\n const rootElement = /* @__PURE__ */ jsx(\n Root,\n {\n flags: options.flags,\n onRenderId: (id) => {\n renderId = id;\n },\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n ...props\n }\n );\n let html = await renderToString(rootElement, {\n preloads: props.preloads\n });\n if (renderId) {\n const insertions = getServerHeadInsertions(renderId);\n if (insertions?.length) {\n const extraHeadElements = insertions.map((insertion) => insertion()).filter(Boolean);\n if (extraHeadElements.length) {\n const extraHeadHTML = renderToStaticMarkup(\n /* @__PURE__ */ jsx(Fragment, { children: extraHeadElements.map((x, i) => cloneElement(x, { key: i })) })\n );\n if (extraHeadHTML) {\n html = html.replace(`</head>`, `${extraHeadHTML}</head>`);\n }\n }\n }\n }\n const postRenderData = getServerContext()?.postRenderData;\n if (postRenderData) {\n html = html.replace(\n safeJsonStringify(SERVER_CONTEXT_POST_RENDER_STRING),\n safeJsonStringify(postRenderData)\n );\n }\n return html;\n },\n // streaming SSR - returns ReadableStream, no post-processing\n renderStream: async (props) => {\n const renderMode = props.mode === \"spa-shell\" ? \"spa\" : props.mode;\n const shouldRunSetup = props.mode !== \"ssg\" && props.mode !== \"spa-shell\";\n if (process.env.ONE_RENDER_MODE !== renderMode) {\n process.env.ONE_RENDER_MODE = renderMode;\n }\n if (shouldRunSetup && !setupDone && options.getSetupPromise) {\n await options.getSetupPromise();\n setupDone = true;\n }\n if (!cachedServerRender) {\n const sr = await import(\"./server-render\");\n cachedServerRender = sr;\n cachedRenderToStaticMarkup = sr.renderToStaticMarkup;\n cachedRenderToString = sr.renderToString;\n }\n const {\n loaderData,\n loaderProps,\n css,\n cssContents,\n mode,\n loaderServerData,\n routePreloads: routePreloads2,\n matches\n } = props;\n setServerContext({\n postRenderData: loaderServerData,\n loaderData,\n loaderProps,\n mode,\n css,\n cssContents,\n routePreloads: routePreloads2,\n matches\n });\n const rootElement = /* @__PURE__ */ jsx(\n Root,\n {\n flags: options.flags,\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n ...props\n }\n );\n return cachedServerRender.renderToStream(rootElement, {\n preloads: props.preloads\n });\n }\n };\n }\n setupSkewProtection();\n const serverContext = getServerContext() || {};\n const routePreloads = serverContext.routePreloads;\n if (serverContext.matches) {\n const lastIndex = serverContext.matches.length - 1;\n const restoredMatches = serverContext.matches.map((m, index) => {\n if (index === lastIndex && m.loaderData === void 0 && serverContext.loaderData !== void 0) {\n return { ...m, loaderData: serverContext.loaderData };\n }\n return m;\n });\n initClientMatches(restoredMatches);\n }\n const setupComplete = options.getSetupPromise ? options.getSetupPromise() : Promise.resolve();\n const preloadPromises = routePreloads ? Object.entries(routePreloads).map(async ([routeKey, bundlePath]) => {\n const mod = await import(\n /* @vite-ignore */\n bundlePath\n );\n registerPreloadedRoute(routeKey, mod);\n return mod;\n }) : [findRootLayout(options.routes, options.routerRoot)];\n const one404Marker = window.__one404;\n if (one404Marker?.notFoundPath) {\n const currentState = window.history.state || {};\n window.history.replaceState(\n {\n ...currentState,\n __tempLocation: { pathname: one404Marker.notFoundPath, search: \"\" }\n },\n \"\"\n );\n }\n return setupComplete.then(() => Promise.all(preloadPromises)).then(() => {\n return resolveClientLoader(serverContext);\n }).then(() => {\n render(\n /* @__PURE__ */ jsx(\n Root,\n {\n isClient: true,\n flags: options.flags,\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n path: window.location.href\n }\n )\n );\n }).catch((err) => {\n console.error(`Error during client initialization:`, err);\n if (isChunkLoadError(err)) {\n handleSkewError();\n }\n });\n}\nexport {\n createApp\n};\n//# sourceMappingURL=createApp.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"createApp.js","names":[],"sources":["esm/createApp.js"],"sourcesContent":["import \"./setup\";\nimport { cloneElement } from \"react\";\nimport { resolveClientLoader } from \"./clientLoaderResolver\";\nimport { Root } from \"./Root\";\nimport { render } from \"./render\";\nimport { initClientMatches } from \"./router/router\";\nimport { registerPreloadedRoute } from \"./router/useViteRoutes\";\nimport { setupSkewProtection } from \"./skewProtection\";\nimport { handleSkewError, isChunkLoadError } from \"./utils/dynamicImport\";\nimport { findRootLayout } from \"./utils/findRootLayout\";\nimport { getServerHeadInsertions } from \"./useServerHeadInsertion\";\nimport { SERVER_CONTEXT_POST_RENDER_STRING } from \"./vite/constants\";\nimport { safeJsonStringify } from \"./utils/htmlEscape\";\nimport { getServerContext, setServerContext } from \"./vite/one-server-only\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nfunction createApp(options) {\n if (import.meta.env.SSR) {\n let cachedServerRender;\n let cachedRenderToStaticMarkup;\n let cachedRenderToString;\n let setupDone = false;\n return {\n options,\n render: async (props) => {\n const renderMode = props.mode === \"spa-shell\" ? \"spa\" : props.mode;\n const shouldRunSetup = props.mode !== \"ssg\" && props.mode !== \"spa-shell\";\n if (process.env.ONE_RENDER_MODE !== renderMode) {\n process.env.ONE_RENDER_MODE = renderMode;\n }\n if (shouldRunSetup && !setupDone && options.getSetupPromise) {\n await options.getSetupPromise();\n setupDone = true;\n }\n if (!cachedServerRender) {\n const sr = await import(\"./server-render\");\n cachedServerRender = sr;\n cachedRenderToStaticMarkup = sr.renderToStaticMarkup;\n cachedRenderToString = sr.renderToString;\n }\n const renderToStaticMarkup = cachedRenderToStaticMarkup;\n const renderToString = cachedRenderToString;\n const {\n loaderData,\n loaderProps,\n css,\n cssContents,\n mode,\n loaderServerData,\n routePreloads: routePreloads2,\n matches\n } = props;\n setServerContext({\n postRenderData: loaderServerData,\n loaderData,\n loaderProps,\n mode,\n css,\n cssContents,\n routePreloads: routePreloads2,\n matches\n });\n let renderId;\n const rootElement = /* @__PURE__ */ jsx(\n Root,\n {\n flags: options.flags,\n onRenderId: (id) => {\n renderId = id;\n },\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n ...props\n }\n );\n let html = await renderToString(rootElement, {\n preloads: props.preloads\n });\n if (renderId) {\n const insertions = getServerHeadInsertions(renderId);\n if (insertions?.length) {\n const extraHeadElements = insertions.map((insertion) => insertion()).filter(Boolean);\n if (extraHeadElements.length) {\n const extraHeadHTML = renderToStaticMarkup(\n /* @__PURE__ */ jsx(Fragment, { children: extraHeadElements.map((x, i) => cloneElement(x, { key: i })) })\n );\n if (extraHeadHTML) {\n html = html.replace(`</head>`, `${extraHeadHTML}</head>`);\n }\n }\n }\n }\n const postRenderData = getServerContext()?.postRenderData;\n if (postRenderData) {\n html = html.replace(\n safeJsonStringify(SERVER_CONTEXT_POST_RENDER_STRING),\n safeJsonStringify(postRenderData)\n );\n }\n return html;\n },\n // streaming SSR - returns ReadableStream, no post-processing\n renderStream: async (props) => {\n const renderMode = props.mode === \"spa-shell\" ? \"spa\" : props.mode;\n const shouldRunSetup = props.mode !== \"ssg\" && props.mode !== \"spa-shell\";\n if (process.env.ONE_RENDER_MODE !== renderMode) {\n process.env.ONE_RENDER_MODE = renderMode;\n }\n if (shouldRunSetup && !setupDone && options.getSetupPromise) {\n await options.getSetupPromise();\n setupDone = true;\n }\n if (!cachedServerRender) {\n const sr = await import(\"./server-render\");\n cachedServerRender = sr;\n cachedRenderToStaticMarkup = sr.renderToStaticMarkup;\n cachedRenderToString = sr.renderToString;\n }\n const {\n loaderData,\n loaderProps,\n css,\n cssContents,\n mode,\n loaderServerData,\n routePreloads: routePreloads2,\n matches\n } = props;\n setServerContext({\n postRenderData: loaderServerData,\n loaderData,\n loaderProps,\n mode,\n css,\n cssContents,\n routePreloads: routePreloads2,\n matches\n });\n const rootElement = /* @__PURE__ */ jsx(\n Root,\n {\n flags: options.flags,\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n ...props\n }\n );\n return cachedServerRender.renderToStream(rootElement, {\n preloads: props.preloads\n });\n }\n };\n }\n setupSkewProtection();\n const serverContext = getServerContext() || {};\n const routePreloads = serverContext.routePreloads;\n if (serverContext.matches) {\n const lastIndex = serverContext.matches.length - 1;\n const restoredMatches = serverContext.matches.map((m, index) => {\n if (index === lastIndex && m.loaderData === void 0 && serverContext.loaderData !== void 0) {\n return { ...m, loaderData: serverContext.loaderData };\n }\n return m;\n });\n initClientMatches(restoredMatches);\n }\n const setupComplete = options.getSetupPromise ? options.getSetupPromise() : Promise.resolve();\n const preloadPromises = routePreloads ? routePreloads.map(async (routeKey) => {\n const mod = await options.routes[routeKey]();\n registerPreloadedRoute(routeKey, mod);\n return mod;\n }) : [findRootLayout(options.routes, options.routerRoot)];\n const one404Marker = window.__one404;\n if (one404Marker?.notFoundPath) {\n const currentState = window.history.state || {};\n window.history.replaceState(\n {\n ...currentState,\n __tempLocation: { pathname: one404Marker.notFoundPath, search: \"\" }\n },\n \"\"\n );\n }\n return setupComplete.then(() => Promise.all(preloadPromises)).then(() => {\n return resolveClientLoader(serverContext);\n }).then(() => {\n render(\n /* @__PURE__ */ jsx(\n Root,\n {\n isClient: true,\n flags: options.flags,\n routes: options.routes,\n routerRoot: options.routerRoot,\n linking: options.linking,\n path: window.location.href\n }\n )\n );\n }).catch((err) => {\n console.error(`Error during client initialization:`, err);\n if (isChunkLoadError(err)) {\n handleSkewError();\n }\n });\n}\nexport {\n createApp\n};\n//# sourceMappingURL=createApp.js.map\n"],"mappings":"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"}
|
|
@@ -95,7 +95,8 @@ const Pager = forwardRef(function Pager2({ children, initialPage = 0, scrollEnab
|
|
|
95
95
|
useImperativeHandle(ref, () => ({
|
|
96
96
|
setPage: (index) => goTo(index, true),
|
|
97
97
|
setPageWithoutAnimation: (index) => goTo(index, false),
|
|
98
|
-
setScrollEnabled: setEnabled
|
|
98
|
+
setScrollEnabled: setEnabled,
|
|
99
|
+
getNativeScrollRef: () => container.current
|
|
99
100
|
}));
|
|
100
101
|
useEffect(() => setEnabled(scrollEnabled), [scrollEnabled]);
|
|
101
102
|
useLayoutEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pager.js","names":[],"sources":["esm/platform/ui/Pager.js"],"sourcesContent":["import {\n Children,\n isValidElement,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState\n} from \"react\";\nimport { validatePage, validatePager } from \"./pagerTypes\";\nimport { domStyle } from \"../web/DomView\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction event(nativeEvent) {\n return { nativeEvent };\n}\nconst Pager = forwardRef(function Pager2({\n children,\n initialPage = 0,\n scrollEnabled = true,\n orientation = \"horizontal\",\n layoutDirection = \"ltr\",\n pageMargin = 0,\n onPageScroll,\n onPageSelected,\n onPageScrollStateChanged,\n keyboardDismissMode = \"none\",\n style,\n testID,\n ...props\n}, ref) {\n validatePager({\n ...props,\n initialPage,\n orientation,\n layoutDirection,\n pageMargin,\n keyboardDismissMode\n });\n const container = useRef(null);\n const callbacks = useRef({ onPageScroll, onPageSelected, onPageScrollStateChanged });\n callbacks.current = { onPageScroll, onPageSelected, onPageScrollStateChanged };\n const pointer = useRef(null);\n const selected = useRef(initialPage);\n const initialized = useRef(false);\n const state = useRef(\"idle\");\n const [enabled, setEnabled] = useState(scrollEnabled);\n const vertical = orientation === \"vertical\";\n const count = Children.count(children);\n const dimensions = useRef({\n vertical,\n rtl: layoutDirection === \"rtl\",\n pageMargin,\n count\n });\n dimensions.current = { vertical, rtl: layoutDirection === \"rtl\", pageMargin, count };\n function setState(next) {\n if (state.current === next) return;\n state.current = next;\n callbacks.current.onPageScrollStateChanged?.(event({ pageScrollState: next }));\n }\n function scroll() {\n const node = container.current;\n if (!node || !count) return;\n const stride = (vertical ? node.clientHeight : node.clientWidth) + pageMargin;\n if (!stride) return;\n const value = Math.max(\n 0,\n Math.min(\n count - 1,\n (vertical ? node.scrollTop : Math.abs(node.scrollLeft)) / stride\n )\n );\n callbacks.current.onPageScroll?.(\n event({ position: Math.floor(value), offset: value - Math.floor(value) })\n );\n }\n function settle() {\n const node = container.current;\n if (!node || !count) return;\n const stride = (vertical ? node.clientHeight : node.clientWidth) + pageMargin;\n if (!stride) return;\n const page = Math.max(\n 0,\n Math.min(\n count - 1,\n Math.round((vertical ? node.scrollTop : Math.abs(node.scrollLeft)) / stride)\n )\n );\n if (page !== selected.current || !initialized.current) {\n selected.current = page;\n callbacks.current.onPageSelected?.(event({ position: page }));\n }\n initialized.current = true;\n callbacks.current.onPageScroll?.(event({ position: page, offset: 0 }));\n setState(\"idle\");\n }\n function goTo(index, animated) {\n validatePage(index);\n const node = container.current;\n const d = dimensions.current;\n if (!node || index >= d.count) return;\n const offset = index * ((d.vertical ? node.clientHeight : node.clientWidth) + d.pageMargin);\n if (animated && index !== selected.current) setState(\"settling\");\n node.scrollTo({\n left: d.vertical ? 0 : offset * (d.rtl ? -1 : 1),\n top: d.vertical ? offset : 0,\n behavior: animated ? \"smooth\" : \"instant\"\n });\n if (!animated) settle();\n }\n useImperativeHandle(ref, () => ({\n setPage: (index) => goTo(index, true),\n setPageWithoutAnimation: (index) => goTo(index, false),\n setScrollEnabled: setEnabled\n }));\n useEffect(() => setEnabled(scrollEnabled), [scrollEnabled]);\n useLayoutEffect(() => {\n const node = container.current;\n if (!node) return;\n const resize = new ResizeObserver(\n () => goTo(Math.min(selected.current, Math.max(0, count - 1)), false)\n );\n resize.observe(node);\n goTo(Math.min(selected.current, Math.max(0, count - 1)), false);\n node.addEventListener(\"scrollend\", settle);\n return () => {\n resize.disconnect();\n node.removeEventListener(\"scrollend\", settle);\n };\n }, [count, orientation, layoutDirection, pageMargin]);\n const css = {\n ...domStyle(style),\n display: \"flex\",\n position: \"relative\",\n flexDirection: vertical ? \"column\" : \"row\",\n direction: layoutDirection,\n overflowX: enabled && !vertical ? \"auto\" : \"hidden\",\n overflowY: enabled && vertical ? \"auto\" : \"hidden\",\n scrollSnapType: `${vertical ? \"y\" : \"x\"} mandatory`,\n gap: pageMargin,\n scrollbarWidth: \"none\",\n overscrollBehavior: \"contain\"\n };\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: container,\n style: css,\n \"data-testid\": testID,\n onScroll: scroll,\n onPointerDown: (e) => {\n const node = container.current;\n if (!enabled || !node) return;\n pointer.current = {\n x: e.clientX,\n y: e.clientY,\n offset: vertical ? node.scrollTop : node.scrollLeft\n };\n },\n onPointerMove: (e) => {\n const start = pointer.current;\n if (!start || !enabled || state.current === \"dragging\") return;\n const distance = vertical ? Math.abs(e.clientY - start.y) : Math.abs(e.clientX - start.x);\n if (distance < 8) return;\n setState(\"dragging\");\n if (keyboardDismissMode === \"on-drag\" && document.activeElement instanceof HTMLElement)\n document.activeElement.blur();\n },\n onPointerUp: () => {\n const start = pointer.current;\n const node = container.current;\n pointer.current = null;\n if (state.current !== \"dragging\" || !node) return;\n if ((vertical ? node.scrollTop : node.scrollLeft) === start?.offset) settle();\n else setState(\"settling\");\n },\n onPointerCancel: () => {\n pointer.current = null;\n if (state.current === \"dragging\") setState(\"settling\");\n },\n onWheel: () => {\n if (enabled) setState(\"dragging\");\n },\n children: Children.map(children, (child, index) => {\n if (!isValidElement(child))\n throw new Error(\"Pager children must be React Native views\");\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n flex: \"0 0 100%\",\n display: \"flex\",\n flexDirection: \"column\",\n width: vertical ? \"100%\" : void 0,\n height: vertical ? void 0 : \"100%\",\n scrollSnapAlign: \"start\",\n position: \"relative\",\n overflow: \"hidden\"\n },\n children: child\n },\n index\n );\n })\n }\n );\n});\nexport {\n Pager\n};\n//# sourceMappingURL=Pager.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pager.js","names":[],"sources":["esm/platform/ui/Pager.js"],"sourcesContent":["import {\n Children,\n isValidElement,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState\n} from \"react\";\nimport { validatePage, validatePager } from \"./pagerTypes\";\nimport { domStyle } from \"../web/DomView\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction event(nativeEvent) {\n return { nativeEvent };\n}\nconst Pager = forwardRef(function Pager2({\n children,\n initialPage = 0,\n scrollEnabled = true,\n orientation = \"horizontal\",\n layoutDirection = \"ltr\",\n pageMargin = 0,\n onPageScroll,\n onPageSelected,\n onPageScrollStateChanged,\n keyboardDismissMode = \"none\",\n style,\n testID,\n ...props\n}, ref) {\n validatePager({\n ...props,\n initialPage,\n orientation,\n layoutDirection,\n pageMargin,\n keyboardDismissMode\n });\n const container = useRef(null);\n const callbacks = useRef({ onPageScroll, onPageSelected, onPageScrollStateChanged });\n callbacks.current = { onPageScroll, onPageSelected, onPageScrollStateChanged };\n const pointer = useRef(null);\n const selected = useRef(initialPage);\n const initialized = useRef(false);\n const state = useRef(\"idle\");\n const [enabled, setEnabled] = useState(scrollEnabled);\n const vertical = orientation === \"vertical\";\n const count = Children.count(children);\n const dimensions = useRef({\n vertical,\n rtl: layoutDirection === \"rtl\",\n pageMargin,\n count\n });\n dimensions.current = { vertical, rtl: layoutDirection === \"rtl\", pageMargin, count };\n function setState(next) {\n if (state.current === next) return;\n state.current = next;\n callbacks.current.onPageScrollStateChanged?.(event({ pageScrollState: next }));\n }\n function scroll() {\n const node = container.current;\n if (!node || !count) return;\n const stride = (vertical ? node.clientHeight : node.clientWidth) + pageMargin;\n if (!stride) return;\n const value = Math.max(\n 0,\n Math.min(\n count - 1,\n (vertical ? node.scrollTop : Math.abs(node.scrollLeft)) / stride\n )\n );\n callbacks.current.onPageScroll?.(\n event({ position: Math.floor(value), offset: value - Math.floor(value) })\n );\n }\n function settle() {\n const node = container.current;\n if (!node || !count) return;\n const stride = (vertical ? node.clientHeight : node.clientWidth) + pageMargin;\n if (!stride) return;\n const page = Math.max(\n 0,\n Math.min(\n count - 1,\n Math.round((vertical ? node.scrollTop : Math.abs(node.scrollLeft)) / stride)\n )\n );\n if (page !== selected.current || !initialized.current) {\n selected.current = page;\n callbacks.current.onPageSelected?.(event({ position: page }));\n }\n initialized.current = true;\n callbacks.current.onPageScroll?.(event({ position: page, offset: 0 }));\n setState(\"idle\");\n }\n function goTo(index, animated) {\n validatePage(index);\n const node = container.current;\n const d = dimensions.current;\n if (!node || index >= d.count) return;\n const offset = index * ((d.vertical ? node.clientHeight : node.clientWidth) + d.pageMargin);\n if (animated && index !== selected.current) setState(\"settling\");\n node.scrollTo({\n left: d.vertical ? 0 : offset * (d.rtl ? -1 : 1),\n top: d.vertical ? offset : 0,\n behavior: animated ? \"smooth\" : \"instant\"\n });\n if (!animated) settle();\n }\n useImperativeHandle(ref, () => ({\n setPage: (index) => goTo(index, true),\n setPageWithoutAnimation: (index) => goTo(index, false),\n setScrollEnabled: setEnabled,\n getNativeScrollRef: () => container.current\n }));\n useEffect(() => setEnabled(scrollEnabled), [scrollEnabled]);\n useLayoutEffect(() => {\n const node = container.current;\n if (!node) return;\n const resize = new ResizeObserver(\n () => goTo(Math.min(selected.current, Math.max(0, count - 1)), false)\n );\n resize.observe(node);\n goTo(Math.min(selected.current, Math.max(0, count - 1)), false);\n node.addEventListener(\"scrollend\", settle);\n return () => {\n resize.disconnect();\n node.removeEventListener(\"scrollend\", settle);\n };\n }, [count, orientation, layoutDirection, pageMargin]);\n const css = {\n ...domStyle(style),\n display: \"flex\",\n position: \"relative\",\n flexDirection: vertical ? \"column\" : \"row\",\n direction: layoutDirection,\n overflowX: enabled && !vertical ? \"auto\" : \"hidden\",\n overflowY: enabled && vertical ? \"auto\" : \"hidden\",\n scrollSnapType: `${vertical ? \"y\" : \"x\"} mandatory`,\n gap: pageMargin,\n scrollbarWidth: \"none\",\n overscrollBehavior: \"contain\"\n };\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: container,\n style: css,\n \"data-testid\": testID,\n onScroll: scroll,\n onPointerDown: (e) => {\n const node = container.current;\n if (!enabled || !node) return;\n pointer.current = {\n x: e.clientX,\n y: e.clientY,\n offset: vertical ? node.scrollTop : node.scrollLeft\n };\n },\n onPointerMove: (e) => {\n const start = pointer.current;\n if (!start || !enabled || state.current === \"dragging\") return;\n const distance = vertical ? Math.abs(e.clientY - start.y) : Math.abs(e.clientX - start.x);\n if (distance < 8) return;\n setState(\"dragging\");\n if (keyboardDismissMode === \"on-drag\" && document.activeElement instanceof HTMLElement)\n document.activeElement.blur();\n },\n onPointerUp: () => {\n const start = pointer.current;\n const node = container.current;\n pointer.current = null;\n if (state.current !== \"dragging\" || !node) return;\n if ((vertical ? node.scrollTop : node.scrollLeft) === start?.offset) settle();\n else setState(\"settling\");\n },\n onPointerCancel: () => {\n pointer.current = null;\n if (state.current === \"dragging\") setState(\"settling\");\n },\n onWheel: () => {\n if (enabled) setState(\"dragging\");\n },\n children: Children.map(children, (child, index) => {\n if (!isValidElement(child))\n throw new Error(\"Pager children must be React Native views\");\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n flex: \"0 0 100%\",\n display: \"flex\",\n flexDirection: \"column\",\n width: vertical ? \"100%\" : void 0,\n height: vertical ? void 0 : \"100%\",\n scrollSnapAlign: \"start\",\n position: \"relative\",\n overflow: \"hidden\"\n },\n children: child\n },\n index\n );\n })\n }\n );\n});\nexport {\n Pager\n};\n//# sourceMappingURL=Pager.js.map\n"],"mappings":"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"}
|
|
@@ -19,6 +19,9 @@ var Pager = /* @__PURE__ */ forwardRef(function Pager2(param, ref) {
|
|
|
19
19
|
},
|
|
20
20
|
setScrollEnabled(enabled) {
|
|
21
21
|
if (nativeRef.current) Commands.setScrollEnabledImperatively(nativeRef.current, enabled);
|
|
22
|
+
},
|
|
23
|
+
getNativeScrollRef() {
|
|
24
|
+
return nativeRef.current;
|
|
22
25
|
}
|
|
23
26
|
};
|
|
24
27
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pager.native.js","names":[],"sources":["esm/platform/ui/Pager.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Children, cloneElement, forwardRef, isValidElement, useImperativeHandle, useRef } from \"react\";\nimport NativePager, { Commands } from \"../specs/OneNativePagerNativeComponent\";\nimport { validatePage, validatePager } from \"./pagerTypes\";\nvar Pager = /* @__PURE__ */ forwardRef(function Pager2(param, ref) {\n var { children, onPageScrollStateChanged, ...props } = param;\n validatePager(props);\n var nativeRef = useRef(null);\n useImperativeHandle(ref, function() {\n return {\n setPage(index) {\n validatePage(index);\n if (nativeRef.current) Commands.setPage(nativeRef.current, index);\n },\n setPageWithoutAnimation(index) {\n validatePage(index);\n if (nativeRef.current) Commands.setPageWithoutAnimation(nativeRef.current, index);\n },\n setScrollEnabled(enabled) {\n if (nativeRef.current) Commands.setScrollEnabledImperatively(nativeRef.current, enabled);\n }\n };\n }, []);\n return /* @__PURE__ */ _jsx(NativePager, {\n ...props,\n ref: nativeRef,\n onPageScrollStateChanged: onPageScrollStateChanged ? function(param2) {\n var { nativeEvent } = param2;\n var state = nativeEvent.pageScrollState;\n if (state === \"idle\" || state === \"dragging\" || state === \"settling\") onPageScrollStateChanged({\n nativeEvent: {\n pageScrollState: state\n }\n });\n } : void 0,\n children: Children.map(children, function(child) {\n if (!/* @__PURE__ */ isValidElement(child)) throw new Error(\"Pager children must be React Native views\");\n return /* @__PURE__ */ cloneElement(child, {\n collapsable: false,\n style: [\n child.props.style,\n {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\"\n }\n ]\n });\n })\n });\n});\nexport {\n Pager\n};\n//# sourceMappingURL=Pager.native.js.map\n"],"mappings":";;;;;;AAIA,IAAI,QAAwB,2BAAW,SAAS,OAAO,OAAO,KAAK;CACjE,IAAI,EAAE,UAAU,0BAA0B,GAAG,UAAU;CACvD,cAAc,KAAK;CACnB,IAAI,YAAY,OAAO,IAAI;CAC3B,oBAAoB,KAAK,WAAW;EAClC,OAAO;GACL,QAAQ,OAAO;IACb,aAAa,KAAK;IAClB,IAAI,UAAU,SAAS,SAAS,QAAQ,UAAU,SAAS,KAAK;GAClE;GACA,wBAAwB,OAAO;IAC7B,aAAa,KAAK;IAClB,IAAI,UAAU,SAAS,SAAS,wBAAwB,UAAU,SAAS,KAAK;GAClF;GACA,iBAAiB,SAAS;IACxB,IAAI,UAAU,SAAS,SAAS,6BAA6B,UAAU,SAAS,OAAO;GACzF;EACF;CACF,GAAG,CAAC,CAAC;CACL,OAAuB,oBAAK,aAAa;EACvC,GAAG;EACH,KAAK;EACL,0BAA0B,2BAA2B,SAAS,QAAQ;GACpE,IAAI,EAAE,gBAAgB;GACtB,IAAI,QAAQ,YAAY;GACxB,IAAI,UAAU,UAAU,UAAU,cAAc,UAAU,YAAY,yBAAyB,EAC7F,aAAa,EACX,iBAAiB,MACnB,EACF,CAAC;EACH,IAAI,KAAK;EACT,UAAU,SAAS,IAAI,UAAU,SAAS,OAAO;GAC/C,IAAI,CAAiB,+BAAe,KAAK,GAAG,MAAM,IAAI,MAAM,2CAA2C;GACvG,OAAuB,6BAAa,OAAO;IACzC,aAAa;IACb,OAAO,CACL,MAAM,MAAM,OACZ;KACE,UAAU;KACV,OAAO;KACP,QAAQ;IACV,CACF;GACF,CAAC;EACH,CAAC;CACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"Pager.native.js","names":[],"sources":["esm/platform/ui/Pager.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Children, cloneElement, forwardRef, isValidElement, useImperativeHandle, useRef } from \"react\";\nimport NativePager, { Commands } from \"../specs/OneNativePagerNativeComponent\";\nimport { validatePage, validatePager } from \"./pagerTypes\";\nvar Pager = /* @__PURE__ */ forwardRef(function Pager2(param, ref) {\n var { children, onPageScrollStateChanged, ...props } = param;\n validatePager(props);\n var nativeRef = useRef(null);\n useImperativeHandle(ref, function() {\n return {\n setPage(index) {\n validatePage(index);\n if (nativeRef.current) Commands.setPage(nativeRef.current, index);\n },\n setPageWithoutAnimation(index) {\n validatePage(index);\n if (nativeRef.current) Commands.setPageWithoutAnimation(nativeRef.current, index);\n },\n setScrollEnabled(enabled) {\n if (nativeRef.current) Commands.setScrollEnabledImperatively(nativeRef.current, enabled);\n },\n getNativeScrollRef() {\n return nativeRef.current;\n }\n };\n }, []);\n return /* @__PURE__ */ _jsx(NativePager, {\n ...props,\n ref: nativeRef,\n onPageScrollStateChanged: onPageScrollStateChanged ? function(param2) {\n var { nativeEvent } = param2;\n var state = nativeEvent.pageScrollState;\n if (state === \"idle\" || state === \"dragging\" || state === \"settling\") onPageScrollStateChanged({\n nativeEvent: {\n pageScrollState: state\n }\n });\n } : void 0,\n children: Children.map(children, function(child) {\n if (!/* @__PURE__ */ isValidElement(child)) throw new Error(\"Pager children must be React Native views\");\n return /* @__PURE__ */ cloneElement(child, {\n collapsable: false,\n style: [\n child.props.style,\n {\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\"\n }\n ]\n });\n })\n });\n});\nexport {\n Pager\n};\n//# sourceMappingURL=Pager.native.js.map\n"],"mappings":";;;;;;AAIA,IAAI,QAAwB,2BAAW,SAAS,OAAO,OAAO,KAAK;CACjE,IAAI,EAAE,UAAU,0BAA0B,GAAG,UAAU;CACvD,cAAc,KAAK;CACnB,IAAI,YAAY,OAAO,IAAI;CAC3B,oBAAoB,KAAK,WAAW;EAClC,OAAO;GACL,QAAQ,OAAO;IACb,aAAa,KAAK;IAClB,IAAI,UAAU,SAAS,SAAS,QAAQ,UAAU,SAAS,KAAK;GAClE;GACA,wBAAwB,OAAO;IAC7B,aAAa,KAAK;IAClB,IAAI,UAAU,SAAS,SAAS,wBAAwB,UAAU,SAAS,KAAK;GAClF;GACA,iBAAiB,SAAS;IACxB,IAAI,UAAU,SAAS,SAAS,6BAA6B,UAAU,SAAS,OAAO;GACzF;GACA,qBAAqB;IACnB,OAAO,UAAU;GACnB;EACF;CACF,GAAG,CAAC,CAAC;CACL,OAAuB,oBAAK,aAAa;EACvC,GAAG;EACH,KAAK;EACL,0BAA0B,2BAA2B,SAAS,QAAQ;GACpE,IAAI,EAAE,gBAAgB;GACtB,IAAI,QAAQ,YAAY;GACxB,IAAI,UAAU,UAAU,UAAU,cAAc,UAAU,YAAY,yBAAyB,EAC7F,aAAa,EACX,iBAAiB,MACnB,EACF,CAAC;EACH,IAAI,KAAK;EACT,UAAU,SAAS,IAAI,UAAU,SAAS,OAAO;GAC/C,IAAI,CAAiB,+BAAe,KAAK,GAAG,MAAM,IAAI,MAAM,2CAA2C;GACvG,OAAuB,6BAAa,OAAO;IACzC,aAAa;IACb,OAAO,CACL,MAAM,MAAM,OACZ;KACE,UAAU;KACV,OAAO;KACP,QAAQ;IACV,CACF;GACF,CAAC;EACH,CAAC;CACH,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "one",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.1",
|
|
4
4
|
"description": "One is a React framework for web, iOS, and Android apps.",
|
|
5
5
|
"license": "BSD-3-Clause",
|
|
6
6
|
"sideEffects": [
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"setup.mjs",
|
|
9
9
|
"setup.js",
|
|
10
10
|
"**/polyfills-mobile.*",
|
|
11
|
+
"**/ios-runtime.native.*",
|
|
11
12
|
"web-streams-polyfill/polyfill/es5",
|
|
12
13
|
"@azure/core-asynciterator-polyfill",
|
|
13
14
|
"core-js/internals/inspect-source",
|
|
@@ -252,15 +253,15 @@
|
|
|
252
253
|
"@react-navigation/routers": "8.0.0-alpha.21",
|
|
253
254
|
"@rozenite/middleware": "^2.5.0",
|
|
254
255
|
"@ungap/structured-clone": "^1.2.0",
|
|
255
|
-
"@vxrn/color-scheme": "2.9.
|
|
256
|
-
"@vxrn/compiler": "2.9.
|
|
257
|
-
"@vxrn/resolve": "2.9.
|
|
258
|
-
"@vxrn/tslib-lite": "2.9.
|
|
259
|
-
"@vxrn/use-isomorphic-layout-effect": "2.9.
|
|
260
|
-
"@vxrn/utils": "2.9.
|
|
256
|
+
"@vxrn/color-scheme": "2.9.1",
|
|
257
|
+
"@vxrn/compiler": "2.9.1",
|
|
258
|
+
"@vxrn/resolve": "2.9.1",
|
|
259
|
+
"@vxrn/tslib-lite": "2.9.1",
|
|
260
|
+
"@vxrn/use-isomorphic-layout-effect": "2.9.1",
|
|
261
|
+
"@vxrn/utils": "2.9.1",
|
|
261
262
|
"citty": "^0.1.6",
|
|
262
263
|
"core-js": "^3.38.1",
|
|
263
|
-
"create-vxrn": "2.9.
|
|
264
|
+
"create-vxrn": "2.9.1",
|
|
264
265
|
"escape-string-regexp": "^5.0.0",
|
|
265
266
|
"fast-deep-equal": "^3.1.3",
|
|
266
267
|
"fast-glob": "^3.3.3",
|
|
@@ -282,7 +283,7 @@
|
|
|
282
283
|
"tsconfig-paths": "^4",
|
|
283
284
|
"use-latest-callback": "^0.3.5",
|
|
284
285
|
"vite": "^8.2.2",
|
|
285
|
-
"vxrn": "2.9.
|
|
286
|
+
"vxrn": "2.9.1",
|
|
286
287
|
"web-streams-polyfill": "^4.3.0",
|
|
287
288
|
"ws": "^8.21.0",
|
|
288
289
|
"xxhashjs": "^0.2.2"
|
|
@@ -312,7 +313,7 @@
|
|
|
312
313
|
"@babel/types": "^7.28.5",
|
|
313
314
|
"babel-dead-code-elimination": "1.0.10",
|
|
314
315
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
315
|
-
"@vxrn/vite-plugin-metro": "2.9.
|
|
316
|
+
"@vxrn/vite-plugin-metro": "2.9.1"
|
|
316
317
|
},
|
|
317
318
|
"peerDependenciesMeta": {
|
|
318
319
|
"@react-native/babel-preset": {
|
|
@@ -374,19 +375,19 @@
|
|
|
374
375
|
}
|
|
375
376
|
},
|
|
376
377
|
"devDependencies": {
|
|
377
|
-
"@tamagui/sheet": "3.0
|
|
378
|
+
"@tamagui/sheet": "3.1.0",
|
|
378
379
|
"@callstack/liquid-glass": "^0.8.1",
|
|
379
380
|
"@react-native/babel-plugin-codegen": "0.88.0",
|
|
380
381
|
"@react-native/codegen": "^0.88.0",
|
|
381
382
|
"@react-navigation/core": "8.0.0-alpha.41",
|
|
382
383
|
"@react-navigation/drawer": "8.0.0-alpha.58",
|
|
383
384
|
"@react-navigation/native": "8.0.0-alpha.51",
|
|
384
|
-
"@tamagui/build": "3.0
|
|
385
|
+
"@tamagui/build": "3.1.0",
|
|
385
386
|
"@types/node": "^24.10.0",
|
|
386
387
|
"@types/react-dom": "^19.3.0",
|
|
387
388
|
"@types/react-test-renderer": "^19.1.0",
|
|
388
389
|
"@types/xxhashjs": "^0.2.4",
|
|
389
|
-
"@vxrn/emitter": "2.9.
|
|
390
|
+
"@vxrn/emitter": "2.9.1",
|
|
390
391
|
"depcheck": "^1.4.7",
|
|
391
392
|
"esbuild": "^0.25.12",
|
|
392
393
|
"immer": "^10.1.1",
|
|
@@ -405,7 +406,7 @@
|
|
|
405
406
|
"typescript": "7.0.2",
|
|
406
407
|
"vitest": "^4.1.0",
|
|
407
408
|
"yoga-layout": "^3.2.1",
|
|
408
|
-
"@tamagui/web": "3.0
|
|
409
|
+
"@tamagui/web": "3.1.0",
|
|
409
410
|
"@babel/core": "^7.28.5",
|
|
410
411
|
"@babel/generator": "7.29.7",
|
|
411
412
|
"@babel/parser": "^7.28.5",
|
|
@@ -414,7 +415,7 @@
|
|
|
414
415
|
"@babel/types": "^7.28.5",
|
|
415
416
|
"babel-dead-code-elimination": "1.0.10",
|
|
416
417
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
417
|
-
"@vxrn/vite-plugin-metro": "2.9.
|
|
418
|
+
"@vxrn/vite-plugin-metro": "2.9.1"
|
|
418
419
|
},
|
|
419
420
|
"publishConfig": {
|
|
420
421
|
"access": "public"
|
|
@@ -580,7 +581,7 @@
|
|
|
580
581
|
}
|
|
581
582
|
}
|
|
582
583
|
},
|
|
583
|
-
"releaseSourceCommit": "
|
|
584
|
+
"releaseSourceCommit": "ebf7b0fe59a565f6cd824c8c0a295d600bf107ac",
|
|
584
585
|
"repository": {
|
|
585
586
|
"type": "git",
|
|
586
587
|
"url": "git+https://github.com/onejs/one.git",
|
package/src/cli/build.ts
CHANGED
|
@@ -739,32 +739,30 @@ export async function build(args: {
|
|
|
739
739
|
return [entry.file, ...collectImports(entry)]
|
|
740
740
|
})
|
|
741
741
|
|
|
742
|
-
//
|
|
743
|
-
const
|
|
742
|
+
// route keys the client loads and registers before rendering this page
|
|
743
|
+
const routePreloadKeys = new Set<string>()
|
|
744
744
|
|
|
745
745
|
// add root layout
|
|
746
746
|
const rootLayoutKey = `${routerRoot}/_layout.tsx`
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
routePreloads[`/${rootLayoutKey}`] = `/${rootLayoutEntry.file}`
|
|
747
|
+
if (vxrnOutput.clientManifest[rootLayoutKey]) {
|
|
748
|
+
routePreloadKeys.add(`/${rootLayoutKey}`)
|
|
750
749
|
}
|
|
751
750
|
|
|
752
751
|
// add all layouts for this route
|
|
753
752
|
if (foundRoute.layouts) {
|
|
754
753
|
for (const layout of foundRoute.layouts) {
|
|
755
754
|
const clientKey = `${routerRoot}${layout.contextKey.slice(1)}`
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
routePreloads[`/${clientKey}`] = `/${entry.file}`
|
|
755
|
+
if (vxrnOutput.clientManifest[clientKey]) {
|
|
756
|
+
routePreloadKeys.add(`/${clientKey}`)
|
|
759
757
|
}
|
|
760
758
|
}
|
|
761
759
|
}
|
|
762
760
|
|
|
763
761
|
// add the page itself using the direct chunk lookup (more reliable than manifest)
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
routePreloads[`/${routerRoot}${foundRoute.file.slice(1)}`] = `/${routeChunkFile}`
|
|
762
|
+
if (clientChunk || clientManifestEntry) {
|
|
763
|
+
routePreloadKeys.add(`/${routerRoot}${foundRoute.file.slice(1)}`)
|
|
767
764
|
}
|
|
765
|
+
const routePreloads = [...routePreloadKeys]
|
|
768
766
|
|
|
769
767
|
const preloadSetupFilePreloads = (() => {
|
|
770
768
|
if (!oneOptions.setupFile) return []
|
package/src/cli/buildPage.ts
CHANGED
|
@@ -58,7 +58,7 @@ export async function buildPage(
|
|
|
58
58
|
preloads: string[],
|
|
59
59
|
allCSS: string[],
|
|
60
60
|
layoutCSS: string[],
|
|
61
|
-
routePreloads:
|
|
61
|
+
routePreloads: string[],
|
|
62
62
|
allCSSContents?: string[],
|
|
63
63
|
criticalPreloads?: string[],
|
|
64
64
|
deferredPreloads?: string[],
|
|
@@ -89,29 +89,18 @@ export async function buildPage(
|
|
|
89
89
|
let loaderData = {}
|
|
90
90
|
|
|
91
91
|
try {
|
|
92
|
-
// generate preload file with route module registration
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
routeImports.push(`import * as ${varName} from "${bundlePath}"`)
|
|
100
|
-
routeRegistrations.push(`registerPreloadedRoute("${routeKey}", ${varName})`)
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Use window global for registration since ES module exports get tree-shaken
|
|
104
|
-
const registrationCalls = routeRegistrations.map((call) =>
|
|
105
|
-
call.replace('registerPreloadedRoute(', 'window.__oneRegisterPreloadedRoute(')
|
|
106
|
-
)
|
|
107
|
-
|
|
92
|
+
// generate preload file with route module registration. each route loads
|
|
93
|
+
// through the client's own route import: a route that shares a chunk with
|
|
94
|
+
// another route is not that chunk's namespace (the bundler exports it
|
|
95
|
+
// under a generated name), so importing the chunk file would register a
|
|
96
|
+
// module with no default export and the route would render empty.
|
|
97
|
+
// registration goes through a window global since ES module exports get
|
|
98
|
+
// tree-shaken.
|
|
108
99
|
const preloadContent = [
|
|
109
|
-
//
|
|
110
|
-
...routeImports,
|
|
111
|
-
// static imports for cache warming (original behavior)
|
|
100
|
+
// static imports for cache warming
|
|
112
101
|
...preloads.map((preload) => `import "${preload}"`),
|
|
113
|
-
|
|
114
|
-
|
|
102
|
+
`const routes = globalThis.__importMetaGlobbed`,
|
|
103
|
+
`await Promise.all(${JSON.stringify(routePreloads)}.map((key) => routes[key]().then((mod) => window.__oneRegisterPreloadedRoute(key, mod))))`,
|
|
115
104
|
].join('\n')
|
|
116
105
|
|
|
117
106
|
t0 = performance.now()
|
|
@@ -47,7 +47,7 @@ it('keeps serialized loader data in page artifacts and reuses the parent CSS', a
|
|
|
47
47
|
preloads: [],
|
|
48
48
|
allCSS: ['/assets/probe.css'],
|
|
49
49
|
layoutCSS: [],
|
|
50
|
-
routePreloads:
|
|
50
|
+
routePreloads: [],
|
|
51
51
|
allCSSContents: cssContents,
|
|
52
52
|
})
|
|
53
53
|
expect(result.cssContents).toBe(cssContents)
|
package/src/cli/workerPool.ts
CHANGED
|
@@ -121,7 +121,7 @@ export class BuildWorkerPool {
|
|
|
121
121
|
preloads: string[]
|
|
122
122
|
allCSS: string[]
|
|
123
123
|
layoutCSS: string[]
|
|
124
|
-
routePreloads:
|
|
124
|
+
routePreloads: string[]
|
|
125
125
|
allCSSContents?: string[]
|
|
126
126
|
criticalPreloads?: string[]
|
|
127
127
|
deferredPreloads?: string[]
|
package/src/createApp.tsx
CHANGED
|
@@ -245,8 +245,10 @@ export function createApp(options: CreateAppProps) {
|
|
|
245
245
|
// preload routes using build-time mapping (production SSG)
|
|
246
246
|
// for SPA/dev mode, fall back to importing root layout directly
|
|
247
247
|
const preloadPromises = routePreloads
|
|
248
|
-
?
|
|
249
|
-
|
|
248
|
+
? routePreloads.map(async (routeKey) => {
|
|
249
|
+
// the route import, not its chunk file: a route sharing a chunk with
|
|
250
|
+
// another route is not that chunk's namespace
|
|
251
|
+
const mod = await options.routes[routeKey]()
|
|
250
252
|
registerPreloadedRoute(routeKey, mod)
|
|
251
253
|
return mod
|
|
252
254
|
})
|