one 1.21.2 → 1.21.5

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.
Files changed (103) hide show
  1. package/dist/cjs/cli/build.cjs +17 -6
  2. package/dist/cjs/cli/build.native.js +25 -14
  3. package/dist/cjs/cli/build.native.js.map +1 -1
  4. package/dist/cjs/cli/buildPage.cjs +6 -1
  5. package/dist/cjs/cli/buildPage.native.js +6 -1
  6. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  7. package/dist/cjs/router/getRouteArtifactPath.cjs +52 -0
  8. package/dist/cjs/router/getRouteArtifactPath.native.js +57 -0
  9. package/dist/cjs/router/getRouteArtifactPath.native.js.map +1 -0
  10. package/dist/cjs/router/getRouteArtifactPath.test.cjs +91 -0
  11. package/dist/cjs/router/getRouteArtifactPath.test.native.js +106 -0
  12. package/dist/cjs/router/getRouteArtifactPath.test.native.js.map +1 -0
  13. package/dist/cjs/router/getRoutes.cjs +1 -2
  14. package/dist/cjs/router/getRoutes.native.js +1 -2
  15. package/dist/cjs/router/getRoutes.native.js.map +1 -1
  16. package/dist/cjs/router/matchers.cjs +7 -0
  17. package/dist/cjs/router/matchers.native.js +8 -0
  18. package/dist/cjs/router/matchers.native.js.map +1 -1
  19. package/dist/cjs/router/router.cjs +5 -3
  20. package/dist/cjs/router/router.native.js +1 -0
  21. package/dist/cjs/router/router.native.js.map +1 -1
  22. package/dist/cjs/utils/getPathnameFromFilePath.cjs +3 -14
  23. package/dist/cjs/utils/getPathnameFromFilePath.native.js +3 -14
  24. package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +1 -1
  25. package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +8 -1
  26. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +11 -1
  27. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  28. package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +43 -2
  29. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +78 -8
  30. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  31. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.cjs +58 -0
  32. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js +62 -0
  33. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  34. package/dist/esm/cli/build.mjs +17 -6
  35. package/dist/esm/cli/build.mjs.map +1 -1
  36. package/dist/esm/cli/build.native.js +25 -14
  37. package/dist/esm/cli/build.native.js.map +1 -1
  38. package/dist/esm/cli/buildPage.mjs +6 -1
  39. package/dist/esm/cli/buildPage.mjs.map +1 -1
  40. package/dist/esm/cli/buildPage.native.js +6 -1
  41. package/dist/esm/cli/buildPage.native.js.map +1 -1
  42. package/dist/esm/router/getRouteArtifactPath.mjs +27 -0
  43. package/dist/esm/router/getRouteArtifactPath.mjs.map +1 -0
  44. package/dist/esm/router/getRouteArtifactPath.native.js +29 -0
  45. package/dist/esm/router/getRouteArtifactPath.native.js.map +1 -0
  46. package/dist/esm/router/getRouteArtifactPath.test.mjs +92 -0
  47. package/dist/esm/router/getRouteArtifactPath.test.mjs.map +1 -0
  48. package/dist/esm/router/getRouteArtifactPath.test.native.js +104 -0
  49. package/dist/esm/router/getRouteArtifactPath.test.native.js.map +1 -0
  50. package/dist/esm/router/getRoutes.mjs +2 -3
  51. package/dist/esm/router/getRoutes.mjs.map +1 -1
  52. package/dist/esm/router/getRoutes.native.js +2 -3
  53. package/dist/esm/router/getRoutes.native.js.map +1 -1
  54. package/dist/esm/router/matchers.mjs +7 -1
  55. package/dist/esm/router/matchers.mjs.map +1 -1
  56. package/dist/esm/router/matchers.native.js +8 -1
  57. package/dist/esm/router/matchers.native.js.map +1 -1
  58. package/dist/esm/router/router.mjs +5 -3
  59. package/dist/esm/router/router.mjs.map +1 -1
  60. package/dist/esm/utils/getPathnameFromFilePath.mjs +3 -3
  61. package/dist/esm/utils/getPathnameFromFilePath.mjs.map +1 -1
  62. package/dist/esm/utils/getPathnameFromFilePath.native.js +3 -3
  63. package/dist/esm/utils/getPathnameFromFilePath.native.js.map +1 -1
  64. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +8 -1
  65. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
  66. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +11 -1
  67. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  68. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +32 -2
  69. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
  70. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +67 -8
  71. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  72. package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs +58 -0
  73. package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs.map +1 -1
  74. package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js +62 -0
  75. package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  76. package/package.json +14 -9
  77. package/src/cli/build.ts +25 -12
  78. package/src/cli/buildPage.ts +7 -1
  79. package/src/router/getRouteArtifactPath.test.ts +126 -0
  80. package/src/router/getRouteArtifactPath.ts +33 -0
  81. package/src/router/getRoutes.ts +2 -3
  82. package/src/router/matchers.ts +10 -0
  83. package/src/router/router.ts +5 -3
  84. package/src/utils/getPathnameFromFilePath.ts +3 -4
  85. package/src/vercel/build/buildVercelOutputDirectory.ts +8 -0
  86. package/src/vite/plugins/virtualEntryPlugin.test.ts +70 -0
  87. package/src/vite/plugins/virtualEntryPlugin.ts +58 -2
  88. package/src/vite/types.ts +9 -0
  89. package/types/cli/build.d.ts.map +1 -1
  90. package/types/cli/buildPage.d.ts.map +1 -1
  91. package/types/router/getRouteArtifactPath.d.ts +9 -0
  92. package/types/router/getRouteArtifactPath.d.ts.map +1 -0
  93. package/types/router/getRouteArtifactPath.test.d.ts +2 -0
  94. package/types/router/getRouteArtifactPath.test.d.ts.map +1 -0
  95. package/types/router/getRoutes.d.ts.map +1 -1
  96. package/types/router/matchers.d.ts +2 -0
  97. package/types/router/matchers.d.ts.map +1 -1
  98. package/types/router/router.d.ts.map +1 -1
  99. package/types/utils/getPathnameFromFilePath.d.ts.map +1 -1
  100. package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -1
  101. package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
  102. package/types/vite/types.d.ts +8 -0
  103. package/types/vite/types.d.ts.map +1 -1
@@ -1,8 +1,10 @@
1
1
  import { resolve } from "node:path";
2
2
  import { pathToFileURL } from "node:url";
3
3
  import { configuration } from "@vxrn/compiler";
4
+ import Glob from "fast-glob";
4
5
  import { isNativeEnvironment } from "vxrn";
5
6
  import { API_ROUTE_GLOB_PATTERN, ROUTE_GLOB_PATTERN, ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS, ROUTE_WEB_EXCLUSION_GLOB_PATTERNS } from "../../router/glob-patterns.mjs";
7
+ import { matchDirectoryRenderMode, matchFileRenderMode } from "../../router/matchers.mjs";
6
8
  import { resolvedVirtualEntryId, resolvedVirtualEntryIdNative, virtualEntryId, virtualEntryIdNative } from "./virtualEntryConstants.mjs";
7
9
  function normalizeSetupFile(setupFile) {
8
10
  if (!setupFile) return {};
@@ -88,6 +90,27 @@ function createVirtualEntry(options) {
88
90
  if (id === resolvedVirtualEntryId) {
89
91
  const isNative = isNativeEnvironment(this.environment);
90
92
  const isSSR = this.environment.name === "ssr";
93
+ const serverSpaRouteFiles = isSSR ? Glob.sync("**/*.{ts,tsx}", {
94
+ cwd: resolve(viteRoot, options.root),
95
+ ignore: [...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS, ...(options.router?.ignoredRouteFiles || [])]
96
+ }).map(file => file.replaceAll("\\", "/")).filter(file => {
97
+ const parts = file.split("/");
98
+ const filename = parts.at(-1) || "";
99
+ if (filename.startsWith("_layout") || filename.startsWith("_middleware")) {
100
+ return false;
101
+ }
102
+ const fileMode = matchFileRenderMode(filename);
103
+ if (fileMode) return fileMode === "spa";
104
+ let parentMode;
105
+ for (const directory of parts.slice(0, -1)) {
106
+ parentMode = matchDirectoryRenderMode(directory)?.renderMode ?? parentMode;
107
+ }
108
+ return parentMode === "spa";
109
+ }) : [];
110
+ const serverSpaRouteStubs = serverSpaRouteFiles.map(file => `${JSON.stringify(`/${options.root}/${file}`)}: () => Promise.resolve({})`).join(",\n ");
111
+ const serverSpaBuildGlobs = serverSpaRouteFiles.map(file => `/${options.root}/${file}`);
112
+ const serverSpaBuildRoutes = serverSpaBuildGlobs.length ? `import.meta.glob(${JSON.stringify(serverSpaBuildGlobs)}, { exhaustive: true })` : "{}";
113
+ const webRouteGlobs = [...routeGlobs, ...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS.map(pattern => `!${pattern}`), ...serverSpaRouteFiles.map(file => `!/${options.root}/${file}`)];
91
114
  const useStaticImport = isNative || isSSR && isDevMode;
92
115
  const setupResult = getSetupFileImport(this.environment.name, setupFiles, useStaticImport, viteRoot);
93
116
  const nativewindImport = configuration.enableNativewind ? `import 'react-native-css-interop/dist/runtime/components'` : "";
@@ -111,10 +134,17 @@ if (typeof window !== 'undefined') {
111
134
  window.__oneRegisterPreloadedRoute = registerPreloadedRoute
112
135
  }
113
136
 
114
- // globbing ${JSON.stringify(routeGlobs)}
137
+ // build-only spa modules stay out of the runtime route map, but their chunks
138
+ // are used to generate route-specific html and loader artifacts.
139
+ export const oneBuildOnlySpaRoutes = ${serverSpaBuildRoutes}
140
+
141
+ // globbing ${JSON.stringify(webRouteGlobs)}
115
142
  export default createApp({
116
143
  ${setupPromiseArg}
117
- routes: import.meta.glob(${JSON.stringify([...routeGlobs, ...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS.map(p => `!${p}`)])}, { exhaustive: true }),
144
+ routes: {
145
+ ...import.meta.glob(${JSON.stringify(webRouteGlobs)}, { exhaustive: true }),
146
+ ${serverSpaRouteStubs}
147
+ },
118
148
  routerRoot: ${JSON.stringify(options.root)},
119
149
  flags: ${JSON.stringify(options.flags)},
120
150
  ${linkingArg}
@@ -1 +1 @@
1
- {"version":3,"names":["resolve","pathToFileURL","configuration","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","isNative","environment","isSSR","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","p","flags"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["resolve","pathToFileURL","configuration","Glob","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","matchDirectoryRenderMode","matchFileRenderMode","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","isNative","environment","isSSR","serverSpaRouteFiles","sync","cwd","ignore","file","replaceAll","filter","parts","split","filename","at","startsWith","fileMode","parentMode","directory","slice","renderMode","serverSpaRouteStubs","join","serverSpaBuildGlobs","serverSpaBuildRoutes","length","webRouteGlobs","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","flags","p"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,10 @@
1
1
  import { resolve } from "path";
2
2
  import { pathToFileURL } from "url";
3
3
  import { configuration } from "@vxrn/compiler";
4
+ import Glob from "fast-glob";
4
5
  import { isNativeEnvironment } from "vxrn";
5
6
  import { API_ROUTE_GLOB_PATTERN, ROUTE_GLOB_PATTERN, ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS, ROUTE_WEB_EXCLUSION_GLOB_PATTERNS } from "../../router/glob-patterns.native.js";
7
+ import { matchDirectoryRenderMode, matchFileRenderMode } from "../../router/matchers.native.js";
6
8
  import { resolvedVirtualEntryId, resolvedVirtualEntryIdNative, virtualEntryId, virtualEntryIdNative } from "./virtualEntryConstants.native.js";
7
9
  function normalizeSetupFile(setupFile) {
8
10
  if (!setupFile) return {};
@@ -89,14 +91,66 @@ function createVirtualEntry(options) {
89
91
  },
90
92
  load(id) {
91
93
  if (id === resolvedVirtualEntryId) {
92
- var _options_router2;
94
+ var _options_router2, _options_router1;
93
95
  var isNative = isNativeEnvironment(this.environment);
94
96
  var isSSR = this.environment.name === "ssr";
97
+ var serverSpaRouteFiles = isSSR ? Glob.sync("**/*.{ts,tsx}", {
98
+ cwd: resolve(viteRoot, options.root),
99
+ ignore: [...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS, ...(((_options_router2 = options.router) === null || _options_router2 === void 0 ? void 0 : _options_router2.ignoredRouteFiles) || [])]
100
+ }).map(function (file) {
101
+ return file.replaceAll("\\", "/");
102
+ }).filter(function (file) {
103
+ var parts = file.split("/");
104
+ var filename = parts.at(-1) || "";
105
+ if (filename.startsWith("_layout") || filename.startsWith("_middleware")) {
106
+ return false;
107
+ }
108
+ var fileMode = matchFileRenderMode(filename);
109
+ if (fileMode) return fileMode === "spa";
110
+ var parentMode;
111
+ var _iteratorNormalCompletion = true,
112
+ _didIteratorError = false,
113
+ _iteratorError = void 0;
114
+ try {
115
+ for (var _iterator = parts.slice(0, -1)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
116
+ var directory = _step.value;
117
+ var _ref;
118
+ var _matchDirectoryRenderMode;
119
+ parentMode = (_ref = (_matchDirectoryRenderMode = matchDirectoryRenderMode(directory)) === null || _matchDirectoryRenderMode === void 0 ? void 0 : _matchDirectoryRenderMode.renderMode) !== null && _ref !== void 0 ? _ref : parentMode;
120
+ }
121
+ } catch (err) {
122
+ _didIteratorError = true;
123
+ _iteratorError = err;
124
+ } finally {
125
+ try {
126
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
127
+ _iterator.return();
128
+ }
129
+ } finally {
130
+ if (_didIteratorError) {
131
+ throw _iteratorError;
132
+ }
133
+ }
134
+ }
135
+ return parentMode === "spa";
136
+ }) : [];
137
+ var serverSpaRouteStubs = serverSpaRouteFiles.map(function (file) {
138
+ return `${JSON.stringify(`/${options.root}/${file}`)}: () => Promise.resolve({})`;
139
+ }).join(",\n ");
140
+ var serverSpaBuildGlobs = serverSpaRouteFiles.map(function (file) {
141
+ return `/${options.root}/${file}`;
142
+ });
143
+ var serverSpaBuildRoutes = serverSpaBuildGlobs.length ? `import.meta.glob(${JSON.stringify(serverSpaBuildGlobs)}, { exhaustive: true })` : "{}";
144
+ var webRouteGlobs = [...routeGlobs, ...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS.map(function (pattern) {
145
+ return `!${pattern}`;
146
+ }), ...serverSpaRouteFiles.map(function (file) {
147
+ return `!/${options.root}/${file}`;
148
+ })];
95
149
  var useStaticImport = isNative || isSSR && isDevMode;
96
150
  var setupResult = getSetupFileImport(this.environment.name, setupFiles, useStaticImport, viteRoot);
97
151
  var nativewindImport = configuration.enableNativewind ? `import 'react-native-css-interop/dist/runtime/components'` : "";
98
152
  var setupPromiseArg = setupResult.promiseVarName ? `getSetupPromise: ${setupResult.promiseVarName},` : "";
99
- var linkingArg = ((_options_router2 = options.router) === null || _options_router2 === void 0 ? void 0 : _options_router2.linking) ? `linking: ${JSON.stringify(options.router.linking)},` : "";
153
+ var linkingArg = ((_options_router1 = options.router) === null || _options_router1 === void 0 ? void 0 : _options_router1.linking) ? `linking: ${JSON.stringify(options.router.linking)},` : "";
100
154
  return `
101
155
  ${setupResult.promiseDeclaration}
102
156
  ${nativewindImport}
@@ -115,12 +169,17 @@ if (typeof window !== 'undefined') {
115
169
  window.__oneRegisterPreloadedRoute = registerPreloadedRoute
116
170
  }
117
171
 
118
- // globbing ${JSON.stringify(routeGlobs)}
172
+ // build-only spa modules stay out of the runtime route map, but their chunks
173
+ // are used to generate route-specific html and loader artifacts.
174
+ export const oneBuildOnlySpaRoutes = ${serverSpaBuildRoutes}
175
+
176
+ // globbing ${JSON.stringify(webRouteGlobs)}
119
177
  export default createApp({
120
178
  ${setupPromiseArg}
121
- routes: import.meta.glob(${JSON.stringify([...routeGlobs, ...ROUTE_WEB_EXCLUSION_GLOB_PATTERNS.map(function (p) {
122
- return `!${p}`;
123
- })])}, { exhaustive: true }),
179
+ routes: {
180
+ ...import.meta.glob(${JSON.stringify(webRouteGlobs)}, { exhaustive: true }),
181
+ ${serverSpaRouteStubs}
182
+ },
124
183
  routerRoot: ${JSON.stringify(options.root)},
125
184
  flags: ${JSON.stringify(options.flags)},
126
185
  ${linkingArg}
@@ -128,10 +187,10 @@ export default createApp({
128
187
  `;
129
188
  }
130
189
  if (id === resolvedVirtualEntryIdNative) {
131
- var _options_router1;
190
+ var _options_router22;
132
191
  var isNative1 = isNativeEnvironment(this.environment);
133
192
  var setupResult1 = getSetupFileImport(this.environment.name, setupFiles, isNative1, viteRoot);
134
- var linkingArg1 = ((_options_router1 = options.router) === null || _options_router1 === void 0 ? void 0 : _options_router1.linking) ? `linking: ${JSON.stringify(options.router.linking)},` : "";
193
+ var linkingArg1 = ((_options_router22 = options.router) === null || _options_router22 === void 0 ? void 0 : _options_router22.linking) ? `linking: ${JSON.stringify(options.router.linking)},` : "";
135
194
  return `
136
195
  import { createApp } from 'one'
137
196
  ${setupResult1.importStatement}
@@ -1 +1 @@
1
- {"version":3,"names":["resolve","pathToFileURL","configuration","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","_options_router_ignoredRouteFiles","_options_router","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","_options_router2","isNative","environment","isSSR","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","p","flags","_options_router1","isNative1","setupResult1","linkingArg1"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["resolve","pathToFileURL","configuration","Glob","isNativeEnvironment","API_ROUTE_GLOB_PATTERN","ROUTE_GLOB_PATTERN","ROUTE_NATIVE_EXCLUSION_GLOB_PATTERNS","ROUTE_WEB_EXCLUSION_GLOB_PATTERNS","matchDirectoryRenderMode","matchFileRenderMode","resolvedVirtualEntryId","resolvedVirtualEntryIdNative","virtualEntryId","virtualEntryIdNative","normalizeSetupFile","setupFile","client","server","ios","android","native","sf","getSetupFileImport","environmentName","setupFiles","useStaticImport","root","envMap","ssr","key","importStatement","promiseDeclaration","promiseVarName","resolvedSetupFile","href","JSON","stringify","createVirtualEntry","options","_options_router_ignoredRouteFiles","_options_router","routeGlobs","router","ignoredRouteFiles","map","pattern","apiRouteGlobs","viteRoot","isDevMode","name","enforce","configResolved","config","command","resolveId","id","load","_options_router2","_options_router1","isNative","environment","isSSR","serverSpaRouteFiles","sync","cwd","ignore","file","replaceAll","filter","parts","split","filename","at","startsWith","fileMode","parentMode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","slice","Symbol","iterator","_step","next","done","directory","value","_ref","_matchDirectoryRenderMode","renderMode","err","return","serverSpaRouteStubs","join","serverSpaBuildGlobs","serverSpaBuildRoutes","length","webRouteGlobs","setupResult","nativewindImport","enableNativewind","setupPromiseArg","linkingArg","linking","flags","_options_router22","isNative1","setupResult1","linkingArg1"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,9 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join, resolve } from "node:path";
1
5
  import { describe, expect, it, vi } from "vitest";
6
+ import { build } from "vite";
2
7
  import { createVirtualEntry } from "./virtualEntryPlugin.mjs";
3
8
  vi.mock("vxrn", () => ({
4
9
  isNativeEnvironment: env => {
@@ -23,6 +28,59 @@ function loadEntry(plugin, envName, command = "build") {
23
28
  return plugin.load.call(ctx, "\0virtual:one-entry");
24
29
  }
25
30
  describe("virtualEntryPlugin", () => {
31
+ it("keeps spa route matching without bundling the client module on the server", async () => {
32
+ const root = mkdtempSync(join(tmpdir(), "one-spa-server-"));
33
+ const appDir = join(root, "app");
34
+ mkdirSync(appDir);
35
+ const spaRoute = join(appDir, "client-only+spa.tsx");
36
+ writeFileSync(spaRoute, `export const browserPayload = 'must-not-enter-server-graph'
37
+ export default function ClientOnlyPage() { return null }
38
+ `);
39
+ try {
40
+ const result = await build({
41
+ root,
42
+ configFile: false,
43
+ logLevel: "silent",
44
+ plugins: [{
45
+ name: "test-one-entry",
46
+ enforce: "pre",
47
+ resolveId(id) {
48
+ if (id === "one") return "\0test-one-entry";
49
+ },
50
+ load(id) {
51
+ if (id === "\0test-one-entry") {
52
+ return `export const createApp = (options) => options
53
+ export const registerPreloadedRoute = () => {}`;
54
+ }
55
+ }
56
+ }, createVirtualEntry({
57
+ root: "app",
58
+ flags: {}
59
+ })],
60
+ build: {
61
+ ssr: true,
62
+ write: false,
63
+ rolldownOptions: {
64
+ input: "virtual:one-entry"
65
+ }
66
+ }
67
+ });
68
+ if (Array.isArray(result)) throw new Error("expected one server build output");
69
+ if (!("output" in result)) throw new Error("expected completed server build");
70
+ const moduleIds = result.output.flatMap(output => output.type === "chunk" ? output.moduleIds : []);
71
+ expect(moduleIds).not.toContain(resolve(spaRoute));
72
+ const entry = result.output.find(output => output.type === "chunk" && output.isEntry);
73
+ if (!entry || entry.type !== "chunk") throw new Error("missing server entry chunk");
74
+ const built = await import(`data:text/javascript;base64,${Buffer.from(entry.code).toString("base64")}`);
75
+ expect(Object.keys(built.default.routes)).toContain("/app/client-only+spa.tsx");
76
+ await expect(built.default.routes["/app/client-only+spa.tsx"]()).resolves.toEqual({});
77
+ } finally {
78
+ rmSync(root, {
79
+ recursive: true,
80
+ force: true
81
+ });
82
+ }
83
+ });
26
84
  describe("setupFile", () => {
27
85
  const base = {
28
86
  root: "app",
@@ -1 +1 @@
1
- {"version":3,"names":["describe","expect","it","vi","createVirtualEntry","mock","isNativeEnvironment","env","name","configuration","enableNativewind","loadEntry","plugin","envName","command","configResolved","root","ctx","environment","load","call","base","flags","setupFile","client","server","code","not","toContain","native","ssrCode","clientCode","iosCode","router","linking","scheme","prefixes"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,QAAU;AACzC,SAASC,kBAAA,QAA0B;AAGnCD,EAAA,CAAGE,IAAA,CAAK,QAAQ,OAAO;EACrBC,mBAAA,EAAsBC,GAAA,IAAa;IACjC,OAAOA,GAAA,EAAKC,IAAA,KAAS,SAASD,GAAA,EAAKC,IAAA,KAAS;EAC9C;AACF,EAAE;AAEFL,EAAA,CAAGE,IAAA,CAAK,kBAAkB,OAAO;EAC/BI,aAAA,EAAe;IAAEC,gBAAA,EAAkB;EAAM;AAC3C,EAAE;AAEF,SAASC,UAAUC,MAAA,EAAaC,OAAA,EAAiBC,OAAA,GAA6B,SAAS;EAErFF,MAAA,CAAOG,cAAA,GAAiB;IAAEC,IAAA,EAAM;IAAIF;EAAQ,CAAC;EAC7C,MAAMG,GAAA,GAAM;IACVC,WAAA,EAAa;MAAEV,IAAA,EAAMK;IAAQ;EAC/B;EACA,OAAOD,MAAA,CAAOO,IAAA,CAAKC,IAAA,CAAKH,GAAA,EAAK,qBAAqB;AACpD;AAEAjB,QAAA,CAAS,sBAAsB,MAAM;EACnCA,QAAA,CAAS,aAAa,MAAM;IAC1B,MAAMqB,IAAA,GAAO;MACXL,IAAA,EAAM;MACNM,KAAA,EAAO,CAAC;IACV;IAEApB,EAAA,CAAG,4DAA4D,MAAM;MACnE,MAAMU,MAAA,GAASR,kBAAA,CAAmB;QAChC,GAAGiB,IAAA;QACHE,SAAA,EAAW;UACTC,MAAA,EAAQ;UACRC,MAAA,EAAQ;QACV;MACF,CAAC;MACD,MAAMC,IAAA,GAAOf,SAAA,CAAUC,MAAA,EAAQ,KAAK;MAEpCX,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,+BAA+B;MAE1D3B,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,sCAAsC;MAC7D3B,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,sBAAsB;MAE7C3B,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,uCAAuC;IAChE,CAAC;IAED1B,EAAA,CAAG,4CAA4C,MAAM;MACnD,MAAMU,MAAA,GAASR,kBAAA,CAAmB;QAChC,GAAGiB,IAAA;QACHE,SAAA,EAAW;UACTC,MAAA,EAAQ;UACRC,MAAA,EAAQ;QACV;MACF,CAAC;MACD,MAAMC,IAAA,GAAOf,SAAA,CAAUC,MAAA,EAAQ,QAAQ;MAEvCX,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,sBAAsB;MAC7C3B,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,SAAS;MAChC3B,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,sBAAsB;MAC7C3B,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,uCAAuC;MAE9D3B,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,+BAA+B;IAC5D,CAAC;IAED1B,EAAA,CAAG,iDAAiD,MAAM;MACxD,MAAMU,MAAA,GAASR,kBAAA,CAAmB;QAChC,GAAGiB,IAAA;QACHE,SAAA,EAAW;UACTC,MAAA,EAAQ;UACRK,MAAA,EAAQ;QACV;MACF,CAAC;MACD,MAAMH,IAAA,GAAOf,SAAA,CAAUC,MAAA,EAAQ,KAAK;MACpCX,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,+BAA+B;MAEtD3B,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,sBAAsB;MACjD3B,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,iBAAiB;IAC9C,CAAC;IAED1B,EAAA,CAAG,uCAAuC,MAAM;MAC9C,MAAMU,MAAA,GAASR,kBAAA,CAAmB;QAChC,GAAGiB,IAAA;QACHE,SAAA,EAAW;UACTM,MAAA,EAAQ;QACV;MACF,CAAC;MACD,MAAMH,IAAA,GAAOf,SAAA,CAAUC,MAAA,EAAQ,SAAS;MACxCX,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,+BAA+B;MACtD3B,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,sBAAsB;IACnD,CAAC;IAED1B,EAAA,CAAG,iEAAiE,MAAM;MACxE,MAAMU,MAAA,GAASR,kBAAA,CAAmB;QAChC,GAAGiB,IAAA;QACHE,SAAA,EAAW;UACTC,MAAA,EAAQ;UACRC,MAAA,EAAQ;QACV;MACF,CAAC;MACD,MAAMC,IAAA,GAAOf,SAAA,CAAUC,MAAA,EAAQ,OAAO,OAAO;MAE7CX,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CAAU,+BAA+B;MACtD3B,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,sBAAsB;IACnD,CAAC;IAED1B,EAAA,CAAG,mCAAmC,MAAM;MAC1C,MAAMU,MAAA,GAASR,kBAAA,CAAmBiB,IAAI;MACtC,MAAMK,IAAA,GAAOf,SAAA,CAAUC,MAAA,EAAQ,KAAK;MACpCX,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,aAAa;MACxC3B,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,sBAAsB;MACjD3B,MAAA,CAAOyB,IAAI,EAAEC,GAAA,CAAIC,SAAA,CAAU,iBAAiB;IAC9C,CAAC;IAED1B,EAAA,CAAG,gDAAgD,MAAM;MACvD,MAAMU,MAAA,GAASR,kBAAA,CAAmB;QAChC,GAAGiB,IAAA;QACHE,SAAA,EAAW;MACb,CAAC;MACD,MAAMO,OAAA,GAAUnB,SAAA,CAAUC,MAAA,EAAQ,KAAK;MACvC,MAAMmB,UAAA,GAAapB,SAAA,CAAUC,MAAA,EAAQ,QAAQ;MAC7C,MAAMoB,OAAA,GAAUrB,SAAA,CAAUC,MAAA,EAAQ,KAAK;MAEvCX,MAAA,CAAO6B,OAAO,EAAEF,SAAA,CAAU,gBAAgB;MAC1C3B,MAAA,CAAO6B,OAAO,EAAEF,SAAA,CAAU,sBAAsB;MAChD3B,MAAA,CAAO6B,OAAO,EAAEH,GAAA,CAAIC,SAAA,CAAU,yBAAyB;MACvD3B,MAAA,CAAO8B,UAAU,EAAEH,SAAA,CAAU,gBAAgB;MAC7C3B,MAAA,CAAO8B,UAAU,EAAEH,SAAA,CAAU,sBAAsB;MACnD3B,MAAA,CAAO8B,UAAU,EAAEJ,GAAA,CAAIC,SAAA,CAAU,yBAAyB;MAE1D3B,MAAA,CAAO+B,OAAO,EAAEJ,SAAA,CAAU,yBAAyB;MACnD3B,MAAA,CAAO+B,OAAO,EAAEL,GAAA,CAAIC,SAAA,CAAU,sBAAsB;IACtD,CAAC;IAED1B,EAAA,CAAG,6CAA6C,MAAM;MACpD,MAAMU,MAAA,GAASR,kBAAA,CAAmB;QAChC,GAAGiB,IAAA;QACHY,MAAA,EAAQ;UACNC,OAAA,EAAS;YACPC,MAAA,EAAQ;YACRC,QAAA,EAAU,CAAC,uBAAuB;UACpC;QACF;MACF,CAAC;MACD,MAAMV,IAAA,GAAOf,SAAA,CAAUC,MAAA,EAAQ,KAAK;MAEpCX,MAAA,CAAOyB,IAAI,EAAEE,SAAA,CACX,4EACF;IACF,CAAC;EACH,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Buffer","mkdirSync","mkdtempSync","rmSync","writeFileSync","tmpdir","join","resolve","describe","expect","it","vi","build","createVirtualEntry","mock","isNativeEnvironment","env","name","configuration","enableNativewind","loadEntry","plugin","envName","command","configResolved","root","ctx","environment","load","call","appDir","spaRoute","result","configFile","logLevel","plugins","enforce","resolveId","id","flags","ssr","write","rolldownOptions","input","Array","isArray","Error","moduleIds","output","flatMap","type","not","toContain","entry","find","isEntry","built","from","code","toString","Object","keys","default","routes","resolves","toEqual","recursive","force","base","setupFile","client","server","native","ssrCode","clientCode","iosCode","router","linking","scheme","prefixes"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,9 @@
1
+ import { Buffer } from "buffer";
2
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "fs";
3
+ import { tmpdir } from "os";
4
+ import { join, resolve } from "path";
1
5
  import { describe, expect, it, vi } from "vitest";
6
+ import { build } from "vite";
2
7
  import { createVirtualEntry } from "./virtualEntryPlugin.native.js";
3
8
  vi.mock("vxrn", function () {
4
9
  return {
@@ -29,6 +34,63 @@ function loadEntry(plugin, envName) {
29
34
  return plugin.load.call(ctx, "\0virtual:one-entry");
30
35
  }
31
36
  describe("virtualEntryPlugin", function () {
37
+ it("keeps spa route matching without bundling the client module on the server", async function () {
38
+ var root = mkdtempSync(join(tmpdir(), "one-spa-server-"));
39
+ var appDir = join(root, "app");
40
+ mkdirSync(appDir);
41
+ var spaRoute = join(appDir, "client-only+spa.tsx");
42
+ writeFileSync(spaRoute, `export const browserPayload = 'must-not-enter-server-graph'
43
+ export default function ClientOnlyPage() { return null }
44
+ `);
45
+ try {
46
+ var result = await build({
47
+ root,
48
+ configFile: false,
49
+ logLevel: "silent",
50
+ plugins: [{
51
+ name: "test-one-entry",
52
+ enforce: "pre",
53
+ resolveId(id) {
54
+ if (id === "one") return "\0test-one-entry";
55
+ },
56
+ load(id) {
57
+ if (id === "\0test-one-entry") {
58
+ return `export const createApp = (options) => options
59
+ export const registerPreloadedRoute = () => {}`;
60
+ }
61
+ }
62
+ }, createVirtualEntry({
63
+ root: "app",
64
+ flags: {}
65
+ })],
66
+ build: {
67
+ ssr: true,
68
+ write: false,
69
+ rolldownOptions: {
70
+ input: "virtual:one-entry"
71
+ }
72
+ }
73
+ });
74
+ if (Array.isArray(result)) throw new Error("expected one server build output");
75
+ if (!("output" in result)) throw new Error("expected completed server build");
76
+ var moduleIds = result.output.flatMap(function (output) {
77
+ return output.type === "chunk" ? output.moduleIds : [];
78
+ });
79
+ expect(moduleIds).not.toContain(resolve(spaRoute));
80
+ var entry = result.output.find(function (output) {
81
+ return output.type === "chunk" && output.isEntry;
82
+ });
83
+ if (!entry || entry.type !== "chunk") throw new Error("missing server entry chunk");
84
+ var built = await import(`data:text/javascript;base64,${Buffer.from(entry.code).toString("base64")}`);
85
+ expect(Object.keys(built.default.routes)).toContain("/app/client-only+spa.tsx");
86
+ await expect(built.default.routes["/app/client-only+spa.tsx"]()).resolves.toEqual({});
87
+ } finally {
88
+ rmSync(root, {
89
+ recursive: true,
90
+ force: true
91
+ });
92
+ }
93
+ });
32
94
  describe("setupFile", function () {
33
95
  var base = {
34
96
  root: "app",
@@ -1 +1 @@
1
- {"version":3,"names":["describe","expect","it","vi","createVirtualEntry","mock","isNativeEnvironment","env","name","configuration","enableNativewind","loadEntry","plugin","envName","command","arguments","length","_plugin_configResolved","configResolved","call","root","ctx","environment","load","base","flags","setupFile","client","server","code","not","toContain","native","ssrCode","clientCode","iosCode","router"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Buffer","mkdirSync","mkdtempSync","rmSync","writeFileSync","tmpdir","join","resolve","describe","expect","it","vi","build","createVirtualEntry","mock","isNativeEnvironment","env","name","configuration","enableNativewind","loadEntry","plugin","envName","command","arguments","length","_plugin_configResolved","configResolved","call","root","ctx","environment","load","appDir","spaRoute","result","configFile","logLevel","plugins","enforce","resolveId","id","flags","ssr","write","rolldownOptions","input","Array","isArray","Error","moduleIds","output","flatMap","type","not","toContain","entry","find","isEntry","built","from","code","toString","Object","keys","default","routes","resolves","toEqual","recursive","force","base","setupFile","client","server","native","ssrCode","clientCode","iosCode"],"sources":["../../../../src/vite/plugins/virtualEntryPlugin.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "1.21.2",
3
+ "version": "1.21.5",
4
4
  "license": "BSD-3-Clause",
5
5
  "sideEffects": [
6
6
  "setup.mjs",
@@ -181,18 +181,18 @@
181
181
  "@cloudflare/vite-plugin": "^1.33.1",
182
182
  "@swc/core": "^1.14.0",
183
183
  "@ungap/structured-clone": "^1.2.0",
184
- "@vxrn/color-scheme": "1.21.2",
185
- "@vxrn/compiler": "1.21.2",
186
- "@vxrn/resolve": "1.21.2",
187
- "@vxrn/tslib-lite": "1.21.2",
188
- "@vxrn/use-isomorphic-layout-effect": "1.21.2",
189
- "@vxrn/vite-plugin-metro": "1.21.2",
184
+ "@vxrn/color-scheme": "1.21.5",
185
+ "@vxrn/compiler": "1.21.5",
186
+ "@vxrn/resolve": "1.21.5",
187
+ "@vxrn/tslib-lite": "1.21.5",
188
+ "@vxrn/use-isomorphic-layout-effect": "1.21.5",
189
+ "@vxrn/vite-plugin-metro": "1.21.5",
190
190
  "babel-dead-code-elimination": "1.0.10",
191
191
  "babel-plugin-module-resolver": "^5.0.2",
192
192
  "babel-preset-expo": "~55.0.0",
193
193
  "citty": "^0.1.6",
194
194
  "core-js": "^3.38.1",
195
- "create-vxrn": "1.21.2",
195
+ "create-vxrn": "1.21.5",
196
196
  "escape-string-regexp": "^5.0.0",
197
197
  "expo-linking": "~55.0.7",
198
198
  "expo-modules-core": "~55.0.16",
@@ -212,7 +212,7 @@
212
212
  "tsconfig-paths": "^4",
213
213
  "use-latest-callback": "^0.2.3",
214
214
  "vite": "^8.0.13",
215
- "vxrn": "1.21.2",
215
+ "vxrn": "1.21.5",
216
216
  "ws": "^8.21.0",
217
217
  "xxhashjs": "^0.2.2"
218
218
  },
@@ -305,5 +305,10 @@
305
305
  "better-auth",
306
306
  "@better-auth/*"
307
307
  ]
308
+ },
309
+ "repository": {
310
+ "type": "git",
311
+ "url": "https://github.com/onejs/one.git",
312
+ "directory": "packages/one"
308
313
  }
309
314
  }
package/src/cli/build.ts CHANGED
@@ -287,16 +287,9 @@ async function getCloudflareProjectName(root: string): Promise<string> {
287
287
  return 'one-app'
288
288
  }
289
289
 
290
- // concurrency limit for parallel page builds
291
- // can be overridden with ONE_BUILD_CONCURRENCY env var
292
- // default based on CPU count for I/O parallelism benefits
293
290
  // ensure worker threads inherit the same CACHE_KEY as the main process
294
291
  process.env.ONE_CACHE_KEY = constants.CACHE_KEY
295
292
 
296
- const BUILD_CONCURRENCY = process.env.ONE_BUILD_CONCURRENCY
297
- ? Math.max(1, parseInt(process.env.ONE_BUILD_CONCURRENCY, 10))
298
- : Math.max(1, Math.min(cpus().length, 8))
299
-
300
293
  // worker threads enabled by default, can be disabled via config or env var
301
294
  function shouldUseWorkers(oneOptions?: { build?: { workers?: boolean } }) {
302
295
  // env var takes precedence (ONE_BUILD_WORKERS=0 to disable, =1 to force enable)
@@ -401,6 +394,20 @@ export async function build(args: {
401
394
  const { oneOptions, config: viteLoadedConfig } = await loadUserOneOptions('build')
402
395
  const routerRoot = getRouterRootFromOneOptions(oneOptions)
403
396
 
397
+ const configuredBuildConcurrency =
398
+ process.env.ONE_BUILD_CONCURRENCY ?? oneOptions.build?.concurrency
399
+ const buildConcurrency =
400
+ configuredBuildConcurrency === undefined
401
+ ? Math.max(1, Math.min(cpus().length, 8))
402
+ : Number(configuredBuildConcurrency)
403
+ if (!Number.isInteger(buildConcurrency) || buildConcurrency < 1) {
404
+ throw new Error(
405
+ `build.concurrency must be a positive integer, received ${JSON.stringify(
406
+ configuredBuildConcurrency
407
+ )}`
408
+ )
409
+ }
410
+
404
411
  // Set defaultRenderMode env var so getManifest knows the correct route types
405
412
  if (oneOptions.web?.defaultRenderMode) {
406
413
  process.env.ONE_DEFAULT_RENDER_MODE = oneOptions.web.defaultRenderMode
@@ -679,11 +686,11 @@ export async function build(args: {
679
686
  const criticalCSSOutputPaths = getCriticalCSSOutputPaths(vxrnOutput.clientManifest)
680
687
 
681
688
  // concurrency limiter for parallel page builds
682
- const limit = pLimit(BUILD_CONCURRENCY)
689
+ const limit = pLimit(buildConcurrency)
683
690
 
684
691
  // initialize worker pool if enabled (default: true)
685
692
  const useWorkers = shouldUseWorkers(oneOptions)
686
- const workerPool = useWorkers ? getWorkerPool(BUILD_CONCURRENCY) : null
693
+ const workerPool = useWorkers ? getWorkerPool(buildConcurrency) : null
687
694
  if (workerPool) {
688
695
  // strip non-cloneable values so workers skip re-loading vite config
689
696
  const serializableOptions = JSON.parse(
@@ -697,7 +704,7 @@ export async function build(args: {
697
704
  const staticStartTime = performance.now()
698
705
  const modeLabel = useWorkers
699
706
  ? `workers: ${workerPool?.size}`
700
- : `concurrency: ${BUILD_CONCURRENCY}`
707
+ : `concurrency: ${buildConcurrency}`
701
708
  console.info(`\n 🔨 build static routes (${modeLabel})\n`)
702
709
 
703
710
  const staticDir = join(`${outDir}/static`)
@@ -787,9 +794,8 @@ export async function build(args: {
787
794
  // find the server chunk containing this route
788
795
  const serverFileName = moduleIdToServerChunk.get(routeModulePath)
789
796
  if (!serverFileName) {
790
- // SPA routes may not have server chunks - that's expected
791
797
  if (foundRoute.type === 'spa') {
792
- continue
798
+ throw new Error(`[one] No build-only server chunk for SPA route: ${foundRoute.file}`)
793
799
  }
794
800
  console.warn(`[one] No server chunk found for route: ${foundRoute.file}`)
795
801
  continue
@@ -1593,6 +1599,13 @@ export default {
1593
1599
  // native-only symbols from react-native can still bundle against
1594
1600
  // the react-native-web alias in the worker graph.
1595
1601
  shimMissingExports: true,
1602
+ // cloudflare's module worker can contain circular shared chunks
1603
+ // when one package is used by both browser-facing SSR code and API
1604
+ // routes. preserve source import order so a dependent chunk cannot
1605
+ // evaluate against partially initialized exports.
1606
+ output: {
1607
+ strictExecutionOrder: true,
1608
+ },
1596
1609
  },
1597
1610
  },
1598
1611
  })