one 2.7.0 → 2.7.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.
Files changed (31) hide show
  1. package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +4 -7
  2. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.cjs +16 -19
  3. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +16 -19
  4. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  5. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.cjs +6 -3
  6. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.cjs +6 -3
  7. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js +6 -3
  8. package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  9. package/dist/cjs/vercel/build/getPathFromRoute.cjs +6 -1
  10. package/dist/cjs/vercel/build/getPathFromRoute.native.cjs +23 -1
  11. package/dist/cjs/vercel/build/getPathFromRoute.native.js +23 -1
  12. package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +1 -1
  13. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +4 -7
  14. package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
  15. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +16 -19
  16. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  17. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs +6 -3
  18. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs.map +1 -1
  19. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js +6 -3
  20. package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
  21. package/dist/esm/vercel/build/getPathFromRoute.mjs +6 -1
  22. package/dist/esm/vercel/build/getPathFromRoute.mjs.map +1 -1
  23. package/dist/esm/vercel/build/getPathFromRoute.native.js +23 -1
  24. package/dist/esm/vercel/build/getPathFromRoute.native.js.map +1 -1
  25. package/package.json +12 -12
  26. package/src/vercel/build/buildVercelOutputDirectory.ts +7 -10
  27. package/src/vercel/build/generate/createSsrServerlessFunction.ts +6 -3
  28. package/src/vercel/build/getPathFromRoute.ts +10 -1
  29. package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -1
  30. package/types/vercel/build/generate/createSsrServerlessFunction.d.ts.map +1 -1
  31. package/types/vercel/build/getPathFromRoute.d.ts.map +1 -1
@@ -165,15 +165,12 @@ export { wrappedMiddlewareFunction as default }
165
165
  const ssrLoaderRoutes = buildInfoForWriting.manifest.pageRoutes.filter((r) => r.type === "ssr").map((r) => {
166
166
  const pagePath = (0, import_getPathFromRoute.getPathFromRoute)(r) || "/";
167
167
  const cleanPath = pagePath.slice(1).replace(/\//g, "_");
168
- const loaderPattern = cleanPath.replace(/:([^_]+)/g, "(?<$1>[^_]+)");
168
+ const paramPattern = /\[(?:\.\.\.)?(\w+)\]/g;
169
+ const loaderPattern = cleanPath.replace(paramPattern, "(?<$1>[^_]+)");
169
170
  const src = `^/assets/${loaderPattern}(?:_refetch_\\d+)?_\\d+_vxrn_loader\\.js$`;
170
171
  let dest = `${pagePath}?__loader=1`;
171
- const paramMatches = cleanPath.match(/:([^_]+)/g);
172
- if (paramMatches) {
173
- for (const match of paramMatches) {
174
- const paramName = match.slice(1);
175
- dest += `&${paramName}=$${paramName}`;
176
- }
172
+ for (const [, paramName] of cleanPath.matchAll(paramPattern)) {
173
+ dest += `&${paramName}=$${paramName}`;
177
174
  }
178
175
  return {
179
176
  src,
@@ -223,30 +223,27 @@ export { wrappedMiddlewareFunction as default }
223
223
  }).map(function(r) {
224
224
  var pagePath = (0, import_getPathFromRoute.getPathFromRoute)(r) || "/";
225
225
  var cleanPath = pagePath.slice(1).replace(/\//g, "_");
226
- var loaderPattern = cleanPath.replace(/:([^_]+)/g, "(?<$1>[^_]+)");
226
+ var paramPattern = /\[(?:\.\.\.)?(\w+)\]/g;
227
+ var loaderPattern = cleanPath.replace(paramPattern, "(?<$1>[^_]+)");
227
228
  var src = `^/assets/${loaderPattern}(?:_refetch_\\d+)?_\\d+_vxrn_loader\\.js$`;
228
229
  var dest = `${pagePath}?__loader=1`;
229
- var paramMatches = cleanPath.match(/:([^_]+)/g);
230
- if (paramMatches) {
231
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
230
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
231
+ try {
232
+ for (var _iterator2 = cleanPath.matchAll(paramPattern)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
233
+ var [, paramName] = _step2.value;
234
+ dest += `&${paramName}=$${paramName}`;
235
+ }
236
+ } catch (err) {
237
+ _didIteratorError2 = true;
238
+ _iteratorError2 = err;
239
+ } finally {
232
240
  try {
233
- for (var _iterator2 = paramMatches[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
234
- var match = _step2.value;
235
- var paramName = match.slice(1);
236
- dest += `&${paramName}=$${paramName}`;
241
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
242
+ _iterator2.return();
237
243
  }
238
- } catch (err) {
239
- _didIteratorError2 = true;
240
- _iteratorError2 = err;
241
244
  } finally {
242
- try {
243
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
244
- _iterator2.return();
245
- }
246
- } finally {
247
- if (_didIteratorError2) {
248
- throw _iteratorError2;
249
- }
245
+ if (_didIteratorError2) {
246
+ throw _iteratorError2;
250
247
  }
251
248
  }
252
249
  }
@@ -223,30 +223,27 @@ export { wrappedMiddlewareFunction as default }
223
223
  }).map(function(r) {
224
224
  var pagePath = (0, import_getPathFromRoute.getPathFromRoute)(r) || "/";
225
225
  var cleanPath = pagePath.slice(1).replace(/\//g, "_");
226
- var loaderPattern = cleanPath.replace(/:([^_]+)/g, "(?<$1>[^_]+)");
226
+ var paramPattern = /\[(?:\.\.\.)?(\w+)\]/g;
227
+ var loaderPattern = cleanPath.replace(paramPattern, "(?<$1>[^_]+)");
227
228
  var src = `^/assets/${loaderPattern}(?:_refetch_\\d+)?_\\d+_vxrn_loader\\.js$`;
228
229
  var dest = `${pagePath}?__loader=1`;
229
- var paramMatches = cleanPath.match(/:([^_]+)/g);
230
- if (paramMatches) {
231
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
230
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
231
+ try {
232
+ for (var _iterator2 = cleanPath.matchAll(paramPattern)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
233
+ var [, paramName] = _step2.value;
234
+ dest += `&${paramName}=$${paramName}`;
235
+ }
236
+ } catch (err) {
237
+ _didIteratorError2 = true;
238
+ _iteratorError2 = err;
239
+ } finally {
232
240
  try {
233
- for (var _iterator2 = paramMatches[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
234
- var match = _step2.value;
235
- var paramName = match.slice(1);
236
- dest += `&${paramName}=$${paramName}`;
241
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
242
+ _iterator2.return();
237
243
  }
238
- } catch (err) {
239
- _didIteratorError2 = true;
240
- _iteratorError2 = err;
241
244
  } finally {
242
- try {
243
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
244
- _iterator2.return();
245
- }
246
- } finally {
247
- if (_didIteratorError2) {
248
- throw _iteratorError2;
249
- }
245
+ if (_didIteratorError2) {
246
+ throw _iteratorError2;
250
247
  }
251
248
  }
252
249
  }
@@ -1 +1 @@
1
- {"version":3,"file":"buildVercelOutputDirectory.native.js","names":[],"sources":["cjs/vercel/build/buildVercelOutputDirectory.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar buildVercelOutputDirectory_exports = {};\n__export(buildVercelOutputDirectory_exports, {\n buildVercelOutputDirectory: () => buildVercelOutputDirectory\n});\nmodule.exports = __toCommonJS(buildVercelOutputDirectory_exports);\nvar import_path = require(\"path\");\nvar import_fs_extra = __toESM(require(\"fs-extra\"), 1);\nvar import_ts_pattern = require(\"ts-pattern\");\nvar import_vc_build_output_config_base = require(\"./config/vc-build-output-config-base\");\nvar import_vc_package_base = require(\"./config/vc-package-base\");\nvar import_createApiServerlessFunction = require(\"./generate/createApiServerlessFunction\");\nvar import_createSsrServerlessFunction = require(\"./generate/createSsrServerlessFunction\");\nvar import_getPathFromRoute = require(\"./getPathFromRoute\");\nvar { copy, ensureDir, existsSync, remove, writeJSON } = import_fs_extra.default;\nasync function moveAllFiles(src, dest) {\n try {\n await copy(src, dest, {\n overwrite: true,\n errorOnExist: false\n });\n } catch (err) {\n console.error(\"Error moving files:\", err);\n }\n}\nfunction getMiddlewaresByNamedRegex(buildInfoForWriting) {\n var outDir = buildInfoForWriting.outDir || \"dist\";\n var prefix = `${outDir}/middlewares/`;\n return buildInfoForWriting.manifest.allRoutes.filter(function(r) {\n return r.middlewares && r.middlewares.length > 0;\n }).map(function(r) {\n return [\n r.namedRegex,\n r.middlewares.map(function(m) {\n return m.contextKey.startsWith(prefix) ? m.contextKey.substring(prefix.length) : m.contextKey;\n })\n ];\n }).sort(function(a, b) {\n return b[0].length - a[0].length;\n });\n}\nvar buildVercelOutputDirectory = async function buildVercelOutputDirectory2(param) {\n var { apiOutput, buildInfoForWriting, clientDir, oneOptionsRoot, postBuildLogs } = param;\n var outDir = buildInfoForWriting.outDir || \"dist\";\n var vercelOutputDir = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, \".vercel/output\"));\n if (existsSync(vercelOutputDir)) {\n await remove(vercelOutputDir);\n }\n var { routeToBuildInfo } = buildInfoForWriting;\n if (apiOutput) {\n var _ref;\n var compiltedApiRoutes = ((_ref = apiOutput === null || apiOutput === void 0 ? void 0 : apiOutput.output) !== null && _ref !== void 0 ? _ref : []).filter(function(o) {\n return (0, import_ts_pattern.isMatching)({\n code: import_ts_pattern.P.string,\n facadeModuleId: import_ts_pattern.P.string\n }, o);\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = async function() {\n var route2 = _step.value;\n var compiledRoute = compiltedApiRoutes.find(function(compiled) {\n var flag = compiled.facadeModuleId.includes(route2.file.replace(\"./\", \"\"));\n return flag;\n });\n if (compiledRoute) {\n postBuildLogs.push(`[one.build][vercel] generating serverless function for apiRoute ${route2.page}`);\n await (0, import_createApiServerlessFunction.createApiServerlessFunction)(route2, compiledRoute.code, oneOptionsRoot, postBuildLogs, outDir);\n } else {\n console.warn(\"\\n \\u{1F528}[one.build][vercel] apiRoute missing code compilation for\", route2.file);\n }\n };\n for (var _iterator = buildInfoForWriting.manifest.apiRoutes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) await _loop();\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var vercelOutputFunctionsDir = (0, import_path.join)(oneOptionsRoot, \".vercel/output/functions\");\n await ensureDir(vercelOutputFunctionsDir);\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = buildInfoForWriting.manifest.pageRoutes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var route = _step1.value;\n switch (route.type) {\n case \"ssr\": {\n var builtPageRoute = routeToBuildInfo[route.file];\n if (builtPageRoute) {\n postBuildLogs.push(`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`);\n await (0, import_createSsrServerlessFunction.createSsrServerlessFunction)(route, buildInfoForWriting, oneOptionsRoot, postBuildLogs);\n }\n break;\n }\n default:\n break;\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 var distMiddlewareDir = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, outDir, \"middlewares\"));\n if (existsSync(distMiddlewareDir)) {\n var vercelMiddlewareDir = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, \".vercel/output/functions/_middleware.func\"));\n await ensureDir(vercelMiddlewareDir);\n postBuildLogs.push(`[one.build][vercel] copying middlewares from ${distMiddlewareDir} to ${vercelMiddlewareDir}`);\n await moveAllFiles((0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, outDir, \"middlewares\")), vercelMiddlewareDir);\n var vercelMiddlewarePackageJsonFilePath = (0, import_path.resolve)((0, import_path.join)(vercelMiddlewareDir, \"package.json\"));\n postBuildLogs.push(`[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`);\n await writeJSON(vercelMiddlewarePackageJsonFilePath, import_vc_package_base.serverlessVercelPackageJson);\n var wrappedMiddlewareEntryPointFilename = \"_wrapped_middleware.js\";\n var wrappedMiddlewareEntryPointPath = (0, import_path.resolve)((0, import_path.join)(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename));\n var middlewaresByNamedRegex = getMiddlewaresByNamedRegex(buildInfoForWriting);\n var middlewaresToVariableNameMap = middlewaresByNamedRegex.reduce(function(acc, param2) {\n var [namedRegex, middlewares] = param2;\n ;\n (Array.isArray(middlewares) ? middlewares : [\n middlewares\n ]).forEach(function(middleware) {\n var middlewareVariableName = middleware.replace(/\\.[a-z]+$/, \"\").replaceAll(\"/\", \"_\");\n acc[middleware] = middlewareVariableName;\n });\n return acc;\n }, {});\n await import_fs_extra.default.writeFile(wrappedMiddlewareEntryPointPath, `\nconst middlewaresByNamedRegex = ${JSON.stringify(middlewaresByNamedRegex)}\n${Object.entries(middlewaresToVariableNameMap).map(function(param2) {\n var [path, variableName] = param2;\n return `import ${variableName} from './${path}'`;\n }).join(\"\\n\")}\n\nfunction getMiddleware(path) {\n switch (path){\n ${Object.entries(middlewaresToVariableNameMap).map(function(param2) {\n var [path, variableName] = param2;\n return `case '${path}': return ${variableName}`;\n }).join(\"\\n\")}\n default: return null\n }\n}\n\nconst next = (e) => {\n const t = new Headers(null == e ? void 0 : e.headers)\n t.set('x-middleware-next', '1')\n return new Response(null, { ...e, headers: t })\n}\n\nconst wrappedMiddlewareFunction = (request, event) => {\n const url = new URL(request.url)\n const pathname = url.pathname\n \n // Find matching middlewares for this request\n const matchingMiddlewares = [...middlewaresByNamedRegex\n .filter(([namedRegex]) => new RegExp(namedRegex).test(pathname))\n .reduce((prev, current) => prev.length > current[1]?.length ? prev : current[1], [])];\n \n // Import and execute the middleware function\n const boundNext = () => {\n if (matchingMiddlewares.length === 0) {\n return next(request)\n }\n \n const middleware = getMiddleware(matchingMiddlewares.shift())\n return middleware ? middleware({request, event, next: boundNext}) : next(request)\n };\n return boundNext()\n}\n\nexport { wrappedMiddlewareFunction as default }\n `);\n var middlewareVercelConfigFilePath = (0, import_path.resolve)((0, import_path.join)(vercelMiddlewareDir, \".vc-config.json\"));\n postBuildLogs.push(`[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`);\n await writeJSON(middlewareVercelConfigFilePath, {\n runtime: \"edge\",\n // Seems that middlewares only work with edge runtime\n entrypoint: wrappedMiddlewareEntryPointFilename\n });\n }\n var vercelOutputStaticDir = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, \".vercel/output/static\"));\n await ensureDir(vercelOutputStaticDir);\n postBuildLogs.push(`[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`);\n await moveAllFiles(clientDir, vercelOutputStaticDir);\n var ssrLoaderRoutes = buildInfoForWriting.manifest.pageRoutes.filter(function(r) {\n return r.type === \"ssr\";\n }).map(function(r) {\n var pagePath = (0, import_getPathFromRoute.getPathFromRoute)(r) || \"/\";\n var cleanPath = pagePath.slice(1).replace(/\\//g, \"_\");\n var loaderPattern = cleanPath.replace(/:([^_]+)/g, \"(?<$1>[^_]+)\");\n var src = `^/assets/${loaderPattern}(?:_refetch_\\\\d+)?_\\\\d+_vxrn_loader\\\\.js$`;\n var dest = `${pagePath}?__loader=1`;\n var paramMatches = cleanPath.match(/:([^_]+)/g);\n if (paramMatches) {\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = paramMatches[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var match = _step2.value;\n var paramName = match.slice(1);\n dest += `&${paramName}=$${paramName}`;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n return {\n src,\n dest\n };\n });\n var spaRoutes = buildInfoForWriting.manifest.pageRoutes.filter(function(route2) {\n return route2.type === \"spa\" && !route2.isNotFound;\n }).flatMap(function(route2) {\n var _routeToBuildInfo_route_file;\n var htmlPath = (_routeToBuildInfo_route_file = routeToBuildInfo[route2.file]) === null || _routeToBuildInfo_route_file === void 0 ? void 0 : _routeToBuildInfo_route_file.htmlPath;\n return htmlPath ? [\n {\n src: route2.namedRegex,\n dest: htmlPath\n }\n ] : [];\n });\n var vercelConfigFilePath = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, \".vercel/output\", \"config.json\"));\n await writeJSON(vercelConfigFilePath, {\n ...import_vc_build_output_config_base.vercelBuildOutputConfigBase,\n routes: [\n ...import_vc_build_output_config_base.vercelBuildOutputConfigBase.routes,\n ...existsSync(distMiddlewareDir) ? [\n {\n src: \"/(.*)\",\n middlewarePath: \"_middleware\",\n continue: true\n }\n ] : [],\n {\n handle: \"rewrite\"\n },\n // SSR loader routes must come before dynamic page routes\n ...ssrLoaderRoutes,\n ...spaRoutes,\n ...buildInfoForWriting.manifest.allRoutes.filter(function(r) {\n return r.routeKeys && Object.keys(r.routeKeys).length > 0;\n }).map(function(r) {\n return {\n src: r.namedRegex,\n dest: `${(0, import_getPathFromRoute.getPathFromRoute)(r) || \"/\"}?${Object.entries(r.routeKeys).map(function(param2) {\n var [k, v] = param2;\n return `${k}=$${v}`;\n }).join(\"&\")}`\n };\n })\n ]\n });\n postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);\n};\n//# sourceMappingURL=buildVercelOutputDirectory.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"buildVercelOutputDirectory.native.js","names":[],"sources":["cjs/vercel/build/buildVercelOutputDirectory.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar buildVercelOutputDirectory_exports = {};\n__export(buildVercelOutputDirectory_exports, {\n buildVercelOutputDirectory: () => buildVercelOutputDirectory\n});\nmodule.exports = __toCommonJS(buildVercelOutputDirectory_exports);\nvar import_path = require(\"path\");\nvar import_fs_extra = __toESM(require(\"fs-extra\"), 1);\nvar import_ts_pattern = require(\"ts-pattern\");\nvar import_vc_build_output_config_base = require(\"./config/vc-build-output-config-base\");\nvar import_vc_package_base = require(\"./config/vc-package-base\");\nvar import_createApiServerlessFunction = require(\"./generate/createApiServerlessFunction\");\nvar import_createSsrServerlessFunction = require(\"./generate/createSsrServerlessFunction\");\nvar import_getPathFromRoute = require(\"./getPathFromRoute\");\nvar { copy, ensureDir, existsSync, remove, writeJSON } = import_fs_extra.default;\nasync function moveAllFiles(src, dest) {\n try {\n await copy(src, dest, {\n overwrite: true,\n errorOnExist: false\n });\n } catch (err) {\n console.error(\"Error moving files:\", err);\n }\n}\nfunction getMiddlewaresByNamedRegex(buildInfoForWriting) {\n var outDir = buildInfoForWriting.outDir || \"dist\";\n var prefix = `${outDir}/middlewares/`;\n return buildInfoForWriting.manifest.allRoutes.filter(function(r) {\n return r.middlewares && r.middlewares.length > 0;\n }).map(function(r) {\n return [\n r.namedRegex,\n r.middlewares.map(function(m) {\n return m.contextKey.startsWith(prefix) ? m.contextKey.substring(prefix.length) : m.contextKey;\n })\n ];\n }).sort(function(a, b) {\n return b[0].length - a[0].length;\n });\n}\nvar buildVercelOutputDirectory = async function buildVercelOutputDirectory2(param) {\n var { apiOutput, buildInfoForWriting, clientDir, oneOptionsRoot, postBuildLogs } = param;\n var outDir = buildInfoForWriting.outDir || \"dist\";\n var vercelOutputDir = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, \".vercel/output\"));\n if (existsSync(vercelOutputDir)) {\n await remove(vercelOutputDir);\n }\n var { routeToBuildInfo } = buildInfoForWriting;\n if (apiOutput) {\n var _ref;\n var compiltedApiRoutes = ((_ref = apiOutput === null || apiOutput === void 0 ? void 0 : apiOutput.output) !== null && _ref !== void 0 ? _ref : []).filter(function(o) {\n return (0, import_ts_pattern.isMatching)({\n code: import_ts_pattern.P.string,\n facadeModuleId: import_ts_pattern.P.string\n }, o);\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = async function() {\n var route2 = _step.value;\n var compiledRoute = compiltedApiRoutes.find(function(compiled) {\n var flag = compiled.facadeModuleId.includes(route2.file.replace(\"./\", \"\"));\n return flag;\n });\n if (compiledRoute) {\n postBuildLogs.push(`[one.build][vercel] generating serverless function for apiRoute ${route2.page}`);\n await (0, import_createApiServerlessFunction.createApiServerlessFunction)(route2, compiledRoute.code, oneOptionsRoot, postBuildLogs, outDir);\n } else {\n console.warn(\"\\n \\u{1F528}[one.build][vercel] apiRoute missing code compilation for\", route2.file);\n }\n };\n for (var _iterator = buildInfoForWriting.manifest.apiRoutes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) await _loop();\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var vercelOutputFunctionsDir = (0, import_path.join)(oneOptionsRoot, \".vercel/output/functions\");\n await ensureDir(vercelOutputFunctionsDir);\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = buildInfoForWriting.manifest.pageRoutes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var route = _step1.value;\n switch (route.type) {\n case \"ssr\": {\n var builtPageRoute = routeToBuildInfo[route.file];\n if (builtPageRoute) {\n postBuildLogs.push(`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`);\n await (0, import_createSsrServerlessFunction.createSsrServerlessFunction)(route, buildInfoForWriting, oneOptionsRoot, postBuildLogs);\n }\n break;\n }\n default:\n break;\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 var distMiddlewareDir = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, outDir, \"middlewares\"));\n if (existsSync(distMiddlewareDir)) {\n var vercelMiddlewareDir = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, \".vercel/output/functions/_middleware.func\"));\n await ensureDir(vercelMiddlewareDir);\n postBuildLogs.push(`[one.build][vercel] copying middlewares from ${distMiddlewareDir} to ${vercelMiddlewareDir}`);\n await moveAllFiles((0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, outDir, \"middlewares\")), vercelMiddlewareDir);\n var vercelMiddlewarePackageJsonFilePath = (0, import_path.resolve)((0, import_path.join)(vercelMiddlewareDir, \"package.json\"));\n postBuildLogs.push(`[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`);\n await writeJSON(vercelMiddlewarePackageJsonFilePath, import_vc_package_base.serverlessVercelPackageJson);\n var wrappedMiddlewareEntryPointFilename = \"_wrapped_middleware.js\";\n var wrappedMiddlewareEntryPointPath = (0, import_path.resolve)((0, import_path.join)(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename));\n var middlewaresByNamedRegex = getMiddlewaresByNamedRegex(buildInfoForWriting);\n var middlewaresToVariableNameMap = middlewaresByNamedRegex.reduce(function(acc, param2) {\n var [namedRegex, middlewares] = param2;\n ;\n (Array.isArray(middlewares) ? middlewares : [\n middlewares\n ]).forEach(function(middleware) {\n var middlewareVariableName = middleware.replace(/\\.[a-z]+$/, \"\").replaceAll(\"/\", \"_\");\n acc[middleware] = middlewareVariableName;\n });\n return acc;\n }, {});\n await import_fs_extra.default.writeFile(wrappedMiddlewareEntryPointPath, `\nconst middlewaresByNamedRegex = ${JSON.stringify(middlewaresByNamedRegex)}\n${Object.entries(middlewaresToVariableNameMap).map(function(param2) {\n var [path, variableName] = param2;\n return `import ${variableName} from './${path}'`;\n }).join(\"\\n\")}\n\nfunction getMiddleware(path) {\n switch (path){\n ${Object.entries(middlewaresToVariableNameMap).map(function(param2) {\n var [path, variableName] = param2;\n return `case '${path}': return ${variableName}`;\n }).join(\"\\n\")}\n default: return null\n }\n}\n\nconst next = (e) => {\n const t = new Headers(null == e ? void 0 : e.headers)\n t.set('x-middleware-next', '1')\n return new Response(null, { ...e, headers: t })\n}\n\nconst wrappedMiddlewareFunction = (request, event) => {\n const url = new URL(request.url)\n const pathname = url.pathname\n \n // Find matching middlewares for this request\n const matchingMiddlewares = [...middlewaresByNamedRegex\n .filter(([namedRegex]) => new RegExp(namedRegex).test(pathname))\n .reduce((prev, current) => prev.length > current[1]?.length ? prev : current[1], [])];\n \n // Import and execute the middleware function\n const boundNext = () => {\n if (matchingMiddlewares.length === 0) {\n return next(request)\n }\n \n const middleware = getMiddleware(matchingMiddlewares.shift())\n return middleware ? middleware({request, event, next: boundNext}) : next(request)\n };\n return boundNext()\n}\n\nexport { wrappedMiddlewareFunction as default }\n `);\n var middlewareVercelConfigFilePath = (0, import_path.resolve)((0, import_path.join)(vercelMiddlewareDir, \".vc-config.json\"));\n postBuildLogs.push(`[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`);\n await writeJSON(middlewareVercelConfigFilePath, {\n runtime: \"edge\",\n // Seems that middlewares only work with edge runtime\n entrypoint: wrappedMiddlewareEntryPointFilename\n });\n }\n var vercelOutputStaticDir = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, \".vercel/output/static\"));\n await ensureDir(vercelOutputStaticDir);\n postBuildLogs.push(`[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`);\n await moveAllFiles(clientDir, vercelOutputStaticDir);\n var ssrLoaderRoutes = buildInfoForWriting.manifest.pageRoutes.filter(function(r) {\n return r.type === \"ssr\";\n }).map(function(r) {\n var pagePath = (0, import_getPathFromRoute.getPathFromRoute)(r) || \"/\";\n var cleanPath = pagePath.slice(1).replace(/\\//g, \"_\");\n var paramPattern = /\\[(?:\\.\\.\\.)?(\\w+)\\]/g;\n var loaderPattern = cleanPath.replace(paramPattern, \"(?<$1>[^_]+)\");\n var src = `^/assets/${loaderPattern}(?:_refetch_\\\\d+)?_\\\\d+_vxrn_loader\\\\.js$`;\n var dest = `${pagePath}?__loader=1`;\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = cleanPath.matchAll(paramPattern)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var [, paramName] = _step2.value;\n dest += `&${paramName}=$${paramName}`;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return {\n src,\n dest\n };\n });\n var spaRoutes = buildInfoForWriting.manifest.pageRoutes.filter(function(route2) {\n return route2.type === \"spa\" && !route2.isNotFound;\n }).flatMap(function(route2) {\n var _routeToBuildInfo_route_file;\n var htmlPath = (_routeToBuildInfo_route_file = routeToBuildInfo[route2.file]) === null || _routeToBuildInfo_route_file === void 0 ? void 0 : _routeToBuildInfo_route_file.htmlPath;\n return htmlPath ? [\n {\n src: route2.namedRegex,\n dest: htmlPath\n }\n ] : [];\n });\n var vercelConfigFilePath = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, \".vercel/output\", \"config.json\"));\n await writeJSON(vercelConfigFilePath, {\n ...import_vc_build_output_config_base.vercelBuildOutputConfigBase,\n routes: [\n ...import_vc_build_output_config_base.vercelBuildOutputConfigBase.routes,\n ...existsSync(distMiddlewareDir) ? [\n {\n src: \"/(.*)\",\n middlewarePath: \"_middleware\",\n continue: true\n }\n ] : [],\n {\n handle: \"rewrite\"\n },\n // SSR loader routes must come before dynamic page routes\n ...ssrLoaderRoutes,\n ...spaRoutes,\n ...buildInfoForWriting.manifest.allRoutes.filter(function(r) {\n return r.routeKeys && Object.keys(r.routeKeys).length > 0;\n }).map(function(r) {\n return {\n src: r.namedRegex,\n dest: `${(0, import_getPathFromRoute.getPathFromRoute)(r) || \"/\"}?${Object.entries(r.routeKeys).map(function(param2) {\n var [k, v] = param2;\n return `${k}=$${v}`;\n }).join(\"&\")}`\n };\n })\n ]\n });\n postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);\n};\n//# sourceMappingURL=buildVercelOutputDirectory.js.map\n"],"mappings":"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"}
@@ -97,11 +97,14 @@ async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, pos
97
97
  headers: new Headers(req.headers || {}),
98
98
  });
99
99
 
100
- // Reconstruct the original path by replacing :param placeholders with actual values
101
- // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)
100
+ // Reconstruct the original path by replacing [param] placeholders with actual values
101
+ // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)
102
102
  let originalPath = url.pathname;
103
103
  for (const [key, value] of Object.entries(routeParams)) {
104
- originalPath = originalPath.replace(\`:\${key}\`, String(value));
104
+ originalPath = originalPath.replace(
105
+ new RegExp(\`(\\\\[|%5B)(\\\\.\\\\.\\\\.)?\${key}(\\\\]|%5D)\`, 'i'),
106
+ () => (Array.isArray(value) ? value.join('/') : value)
107
+ );
105
108
  }
106
109
 
107
110
  const host = url.hostname;
@@ -99,11 +99,14 @@ async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, pos
99
99
  headers: new Headers(req.headers || {}),
100
100
  });
101
101
 
102
- // Reconstruct the original path by replacing :param placeholders with actual values
103
- // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)
102
+ // Reconstruct the original path by replacing [param] placeholders with actual values
103
+ // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)
104
104
  let originalPath = url.pathname;
105
105
  for (const [key, value] of Object.entries(routeParams)) {
106
- originalPath = originalPath.replace(\`:\${key}\`, String(value));
106
+ originalPath = originalPath.replace(
107
+ new RegExp(\`(\\\\[|%5B)(\\\\.\\\\.\\\\.)?\${key}(\\\\]|%5D)\`, 'i'),
108
+ () => (Array.isArray(value) ? value.join('/') : value)
109
+ );
107
110
  }
108
111
 
109
112
  const host = url.hostname;
@@ -99,11 +99,14 @@ async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, pos
99
99
  headers: new Headers(req.headers || {}),
100
100
  });
101
101
 
102
- // Reconstruct the original path by replacing :param placeholders with actual values
103
- // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)
102
+ // Reconstruct the original path by replacing [param] placeholders with actual values
103
+ // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)
104
104
  let originalPath = url.pathname;
105
105
  for (const [key, value] of Object.entries(routeParams)) {
106
- originalPath = originalPath.replace(\`:\${key}\`, String(value));
106
+ originalPath = originalPath.replace(
107
+ new RegExp(\`(\\\\[|%5B)(\\\\.\\\\.\\\\.)?\${key}(\\\\]|%5D)\`, 'i'),
108
+ () => (Array.isArray(value) ? value.join('/') : value)
109
+ );
107
110
  }
108
111
 
109
112
  const host = url.hostname;
@@ -1 +1 @@
1
- {"version":3,"file":"createSsrServerlessFunction.native.js","names":[],"sources":["cjs/vercel/build/generate/createSsrServerlessFunction.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar createSsrServerlessFunction_exports = {};\n__export(createSsrServerlessFunction_exports, {\n createSsrServerlessFunction: () => createSsrServerlessFunction\n});\nmodule.exports = __toCommonJS(createSsrServerlessFunction_exports);\nvar import_path = require(\"path\");\nvar import_fs_extra = __toESM(require(\"fs-extra\"), 1);\nvar import_vc_config_base = require(\"../config/vc-config-base\");\nvar import_vc_package_base = require(\"../config/vc-package-base\");\nvar import_getPathFromRoute = require(\"../getPathFromRoute\");\nasync function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {\n try {\n var path = (0, import_getPathFromRoute.getPathFromRoute)(route, {\n includeIndex: true\n });\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);\n var buildInfoAsString = JSON.stringify(buildInfo);\n var funcFolder = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, `.vercel/output/functions/${path}.func`));\n await import_fs_extra.default.ensureDir(funcFolder);\n var outDir = buildInfo.outDir || \"dist\";\n var distServerFrom = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, outDir, \"server\"));\n var distServerTo = (0, import_path.resolve)((0, import_path.join)(funcFolder, \"server\"));\n await import_fs_extra.default.ensureDir(distServerTo);\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`);\n await import_fs_extra.default.copy(distServerFrom, distServerTo);\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json`);\n await import_fs_extra.default.writeFile((0, import_path.join)(funcFolder, \"buildInfo.js\"), `export default ${buildInfoAsString}`);\n await import_fs_extra.default.ensureDir((0, import_path.join)(funcFolder, \"entrypoint\"));\n var entrypointFilePath = (0, import_path.resolve)((0, import_path.join)(funcFolder, \"entrypoint\", \"index.js\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`);\n await import_fs_extra.default.writeFile(entrypointFilePath, `\n const buildInfoConfig = await import('../buildInfo.js');\n const entry = await import('../server/_virtual_one-entry.js');\n const routeFile = ${JSON.stringify(route.file)}\n\n const handler = async (req, res) => {\n // console.debug(\"req.url\", req.url);\n const url = new URL(req.url, \\`https://\\${process.env.VERCEL_URL}\\`);\n\n // Check if this is a loader request (routed here by config.json rewrite)\n const isLoaderRequest = url.searchParams.get('__loader') === '1';\n\n // Extract route params - from URL path match OR from query params (for loader requests)\n const routePattern = ${JSON.stringify(route.page)};\n const paramNames = [];\n const regexPattern = routePattern\n .replace(/\\\\[\\\\.\\\\.\\\\.(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: true }); return '(.+)'; })\n .replace(/\\\\[(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: false }); return '([^/]+)'; });\n\n const routeParams = {};\n\n // First try to get params from query string (set by Vercel rewrite rules)\n // This handles both loader requests and regular page requests that went through rewrites\n for (const param of paramNames) {\n const value = url.searchParams.get(param.name);\n if (value) {\n routeParams[param.name] = param.catch ? value.split('/') : value;\n }\n }\n\n // If no params found in query string, try extracting from URL path\n if (Object.keys(routeParams).length === 0) {\n const match = url.pathname.match(new RegExp(\\`^\\${regexPattern}$\\`));\n if (match) {\n paramNames.forEach((param, index) => {\n const value = match[index + 1];\n routeParams[param.name] = param.catch ? value.split('/') : value;\n });\n }\n }\n\n // Create a proper Request object for SSR loaders\n const request = new Request(url.toString(), {\n method: req.method || 'GET',\n headers: new Headers(req.headers || {}),\n });\n\n // Reconstruct the original path by replacing :param placeholders with actual values\n // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)\n let originalPath = url.pathname;\n for (const [key, value] of Object.entries(routeParams)) {\n originalPath = originalPath.replace(\\`:\\${key}\\`, String(value));\n }\n\n const host = url.hostname;\n let subdomain;\n if (host && host !== 'localhost' && !/^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$/.test(host)) {\n const parts = host.split('.');\n if (parts.length >= 3) subdomain = parts.slice(0, -2).join('.');\n }\n\n const loaderProps = {\n path: originalPath,\n params: routeParams,\n subdomain,\n request,\n }\n\n const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';\n // const routeFile = \\`.\\${url.pathname}\\${postfix}\\`;\n let route = buildInfoConfig.default.routeToBuildInfo[routeFile];\n\n // If we cannot find the route by direct match, try to find it by looking it up in the\n // pathToRoute mapping. Currently this handles cases such as \"(some-group)/index.tsx\",\n // \"index.web.tsx\".\n if (!route) {\n const routeName = buildInfoConfig.default.pathToRoute[url.pathname];\n route = buildInfoConfig.default.routeToBuildInfo[routeName];\n }\n\n const exported = await import(route.serverJsPath.replace('${outDir}/','../'))\n const loaderData = await exported.loader?.(loaderProps)\n\n // For loader requests, return the loader data as a JavaScript module\n if (isLoaderRequest) {\n res.setHeader('Content-Type', 'application/javascript; charset=utf-8')\n res.setHeader('Cache-Control', 'no-store')\n res.end(\\`export function loader() { return \\${JSON.stringify(loaderData)} }\\`)\n return\n }\n\n // For page requests, render the full HTML\n const render = entry.default.render;\n const preloads = route.preloads\n const css = route.css || []\n const rendered = await render({\n mode: route.type,\n loaderData,\n loaderProps,\n path: loaderProps?.path || '/',\n preloads,\n css,\n })\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n // https://vercel.com/docs/deployments/skew-protection#supported-frameworks__\n if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {\n res.setHeader('Set-Cookie', [\n \\`__vdpl=\\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\\`,\n ]);\n }\n res.end(rendered)\n }\n\n export default handler;\n `);\n var packageJsonFilePath = (0, import_path.resolve)((0, import_path.join)(funcFolder, \"package.json\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`);\n await import_fs_extra.default.writeJSON(packageJsonFilePath, import_vc_package_base.serverlessVercelPackageJson);\n var vcConfigFilePath = (0, import_path.resolve)((0, import_path.join)(funcFolder, \".vc-config.json\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`);\n return import_fs_extra.default.writeJson(vcConfigFilePath, {\n ...import_vc_config_base.serverlessVercelNodeJsConfig,\n handler: \"entrypoint/index.js\",\n environment: {\n ...import_vc_config_base.serverlessVercelNodeJsConfig.environment,\n ONE_DEFAULT_RENDER_MODE: \"ssr\"\n }\n });\n } catch (e) {\n console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);\n }\n}\n//# sourceMappingURL=createSsrServerlessFunction.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"createSsrServerlessFunction.native.js","names":[],"sources":["cjs/vercel/build/generate/createSsrServerlessFunction.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar createSsrServerlessFunction_exports = {};\n__export(createSsrServerlessFunction_exports, {\n createSsrServerlessFunction: () => createSsrServerlessFunction\n});\nmodule.exports = __toCommonJS(createSsrServerlessFunction_exports);\nvar import_path = require(\"path\");\nvar import_fs_extra = __toESM(require(\"fs-extra\"), 1);\nvar import_vc_config_base = require(\"../config/vc-config-base\");\nvar import_vc_package_base = require(\"../config/vc-package-base\");\nvar import_getPathFromRoute = require(\"../getPathFromRoute\");\nasync function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {\n try {\n var path = (0, import_getPathFromRoute.getPathFromRoute)(route, {\n includeIndex: true\n });\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);\n var buildInfoAsString = JSON.stringify(buildInfo);\n var funcFolder = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, `.vercel/output/functions/${path}.func`));\n await import_fs_extra.default.ensureDir(funcFolder);\n var outDir = buildInfo.outDir || \"dist\";\n var distServerFrom = (0, import_path.resolve)((0, import_path.join)(oneOptionsRoot, outDir, \"server\"));\n var distServerTo = (0, import_path.resolve)((0, import_path.join)(funcFolder, \"server\"));\n await import_fs_extra.default.ensureDir(distServerTo);\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`);\n await import_fs_extra.default.copy(distServerFrom, distServerTo);\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json`);\n await import_fs_extra.default.writeFile((0, import_path.join)(funcFolder, \"buildInfo.js\"), `export default ${buildInfoAsString}`);\n await import_fs_extra.default.ensureDir((0, import_path.join)(funcFolder, \"entrypoint\"));\n var entrypointFilePath = (0, import_path.resolve)((0, import_path.join)(funcFolder, \"entrypoint\", \"index.js\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`);\n await import_fs_extra.default.writeFile(entrypointFilePath, `\n const buildInfoConfig = await import('../buildInfo.js');\n const entry = await import('../server/_virtual_one-entry.js');\n const routeFile = ${JSON.stringify(route.file)}\n\n const handler = async (req, res) => {\n // console.debug(\"req.url\", req.url);\n const url = new URL(req.url, \\`https://\\${process.env.VERCEL_URL}\\`);\n\n // Check if this is a loader request (routed here by config.json rewrite)\n const isLoaderRequest = url.searchParams.get('__loader') === '1';\n\n // Extract route params - from URL path match OR from query params (for loader requests)\n const routePattern = ${JSON.stringify(route.page)};\n const paramNames = [];\n const regexPattern = routePattern\n .replace(/\\\\[\\\\.\\\\.\\\\.(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: true }); return '(.+)'; })\n .replace(/\\\\[(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: false }); return '([^/]+)'; });\n\n const routeParams = {};\n\n // First try to get params from query string (set by Vercel rewrite rules)\n // This handles both loader requests and regular page requests that went through rewrites\n for (const param of paramNames) {\n const value = url.searchParams.get(param.name);\n if (value) {\n routeParams[param.name] = param.catch ? value.split('/') : value;\n }\n }\n\n // If no params found in query string, try extracting from URL path\n if (Object.keys(routeParams).length === 0) {\n const match = url.pathname.match(new RegExp(\\`^\\${regexPattern}$\\`));\n if (match) {\n paramNames.forEach((param, index) => {\n const value = match[index + 1];\n routeParams[param.name] = param.catch ? value.split('/') : value;\n });\n }\n }\n\n // Create a proper Request object for SSR loaders\n const request = new Request(url.toString(), {\n method: req.method || 'GET',\n headers: new Headers(req.headers || {}),\n });\n\n // Reconstruct the original path by replacing [param] placeholders with actual values\n // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)\n let originalPath = url.pathname;\n for (const [key, value] of Object.entries(routeParams)) {\n originalPath = originalPath.replace(\n new RegExp(\\`(\\\\\\\\[|%5B)(\\\\\\\\.\\\\\\\\.\\\\\\\\.)?\\${key}(\\\\\\\\]|%5D)\\`, 'i'),\n () => (Array.isArray(value) ? value.join('/') : value)\n );\n }\n\n const host = url.hostname;\n let subdomain;\n if (host && host !== 'localhost' && !/^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$/.test(host)) {\n const parts = host.split('.');\n if (parts.length >= 3) subdomain = parts.slice(0, -2).join('.');\n }\n\n const loaderProps = {\n path: originalPath,\n params: routeParams,\n subdomain,\n request,\n }\n\n const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';\n // const routeFile = \\`.\\${url.pathname}\\${postfix}\\`;\n let route = buildInfoConfig.default.routeToBuildInfo[routeFile];\n\n // If we cannot find the route by direct match, try to find it by looking it up in the\n // pathToRoute mapping. Currently this handles cases such as \"(some-group)/index.tsx\",\n // \"index.web.tsx\".\n if (!route) {\n const routeName = buildInfoConfig.default.pathToRoute[url.pathname];\n route = buildInfoConfig.default.routeToBuildInfo[routeName];\n }\n\n const exported = await import(route.serverJsPath.replace('${outDir}/','../'))\n const loaderData = await exported.loader?.(loaderProps)\n\n // For loader requests, return the loader data as a JavaScript module\n if (isLoaderRequest) {\n res.setHeader('Content-Type', 'application/javascript; charset=utf-8')\n res.setHeader('Cache-Control', 'no-store')\n res.end(\\`export function loader() { return \\${JSON.stringify(loaderData)} }\\`)\n return\n }\n\n // For page requests, render the full HTML\n const render = entry.default.render;\n const preloads = route.preloads\n const css = route.css || []\n const rendered = await render({\n mode: route.type,\n loaderData,\n loaderProps,\n path: loaderProps?.path || '/',\n preloads,\n css,\n })\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n // https://vercel.com/docs/deployments/skew-protection#supported-frameworks__\n if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {\n res.setHeader('Set-Cookie', [\n \\`__vdpl=\\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\\`,\n ]);\n }\n res.end(rendered)\n }\n\n export default handler;\n `);\n var packageJsonFilePath = (0, import_path.resolve)((0, import_path.join)(funcFolder, \"package.json\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`);\n await import_fs_extra.default.writeJSON(packageJsonFilePath, import_vc_package_base.serverlessVercelPackageJson);\n var vcConfigFilePath = (0, import_path.resolve)((0, import_path.join)(funcFolder, \".vc-config.json\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`);\n return import_fs_extra.default.writeJson(vcConfigFilePath, {\n ...import_vc_config_base.serverlessVercelNodeJsConfig,\n handler: \"entrypoint/index.js\",\n environment: {\n ...import_vc_config_base.serverlessVercelNodeJsConfig.environment,\n ONE_DEFAULT_RENDER_MODE: \"ssr\"\n }\n });\n } catch (e) {\n console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);\n }\n}\n//# sourceMappingURL=createSsrServerlessFunction.js.map\n"],"mappings":";;;AACA,IAAI,WAAW,OAAO;AACtB,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO;AAC1B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,WAAW,KAAK,YAAY,YAAY,SAAS,OAAO,OAAO,SAAS,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,YAKnG,cAAc,CAAC,OAAO,CAAC,IAAI,aAAa,UAAU,QAAQ,WAAW;CAAE,OAAO;CAAK,YAAY;AAAK,CAAC,IAAI,QACzG,GACF;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,sCAAsC,CAAC;AAC3C,SAAS,qCAAqC,EAC5C,mCAAmC,4BACrC,CAAC;AACD,OAAO,UAAU,aAAa,mCAAmC;AACjE,IAAI,cAAc,QAAQ,MAAM;AAChC,IAAI,kBAAkB,QAAQ,QAAQ,UAAU,GAAG,CAAC;AACpD,IAAI,wBAAwB,QAAQ,oCAA0B;AAC9D,IAAI,yBAAyB,QAAQ,qCAA2B;AAChE,IAAI,0BAA0B,QAAQ,+BAAqB;AAC3D,eAAe,4BAA4B,OAAO,WAAW,gBAAgB,eAAe;CAC1F,IAAI;EACF,IAAI,QAAQ,GAAG,wBAAwB,iBAAgB,CAAE,OAAO,EAC9D,cAAc,KAChB,CAAC;EACD,cAAc,KAAK,yDAAyD,MAAM;EAClF,IAAI,oBAAoB,KAAK,UAAU,SAAS;EAChD,IAAI,cAAc,GAAG,YAAY,QAAO,EAAG,GAAG,YAAY,KAAI,CAAE,gBAAgB,4BAA4B,KAAK,MAAM,CAAC;EACxH,MAAM,gBAAgB,QAAQ,UAAU,UAAU;EAClD,IAAI,SAAS,UAAU,UAAU;EACjC,IAAI,kBAAkB,GAAG,YAAY,QAAO,EAAG,GAAG,YAAY,KAAI,CAAE,gBAAgB,QAAQ,QAAQ,CAAC;EACrG,IAAI,gBAAgB,GAAG,YAAY,QAAO,EAAG,GAAG,YAAY,KAAI,CAAE,YAAY,QAAQ,CAAC;EACvF,MAAM,gBAAgB,QAAQ,UAAU,YAAY;EACpD,cAAc,KAAK,+EAA+E,eAAe,MAAM,cAAc;EACrI,MAAM,gBAAgB,QAAQ,KAAK,gBAAgB,YAAY;EAC/D,cAAc,KAAK,wEAAwE;EAC3F,MAAM,gBAAgB,QAAQ,WAAW,GAAG,YAAY,KAAI,CAAE,YAAY,cAAc,GAAG,kBAAkB,mBAAmB;EAChI,MAAM,gBAAgB,QAAQ,WAAW,GAAG,YAAY,KAAI,CAAE,YAAY,YAAY,CAAC;EACvF,IAAI,sBAAsB,GAAG,YAAY,QAAO,EAAG,GAAG,YAAY,KAAI,CAAE,YAAY,cAAc,UAAU,CAAC;EAC7G,cAAc,KAAK,yEAAyE,oBAAoB;EAChH,MAAM,gBAAgB,QAAQ,UAAU,oBAAoB;;;sBAG1C,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;2BAUtB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAsEU,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCpE;EACC,IAAI,uBAAuB,GAAG,YAAY,QAAO,EAAG,GAAG,YAAY,KAAI,CAAE,YAAY,cAAc,CAAC;EACpG,cAAc,KAAK,2EAA2E,qBAAqB;EACnH,MAAM,gBAAgB,QAAQ,UAAU,qBAAqB,uBAAuB,2BAA2B;EAC/G,IAAI,oBAAoB,GAAG,YAAY,QAAO,EAAG,GAAG,YAAY,KAAI,CAAE,YAAY,iBAAiB,CAAC;EACpG,cAAc,KAAK,8EAA8E,kBAAkB;EACnH,OAAO,gBAAgB,QAAQ,UAAU,kBAAkB;GACzD,GAAG,sBAAsB;GACzB,SAAS;GACT,aAAa;IACX,GAAG,sBAAsB,6BAA6B;IACtD,yBAAyB;GAC3B;EACF,CAAC;CACH,SAAS,GAAG;EACV,QAAQ,MAAM,+EAA+E,MAAM,QAAQ,CAAC;CAC9G;AACF"}
@@ -23,7 +23,12 @@ __export(getPathFromRoute_exports, { getPathFromRoute: () => getPathFromRoute })
23
23
  module.exports = __toCommonJS(getPathFromRoute_exports);
24
24
  var import_getPathnameFromFilePath = require("../../utils/getPathnameFromFilePath.cjs");
25
25
  function getPathFromRoute(route, options = {}) {
26
- return (0, import_getPathnameFromFilePath.getPathnameFromFilePath)(route.file, {}, false, {
26
+ const params = {};
27
+ for (const [param, inner] of route.file.matchAll(/\[([^\]]+)\]/g)) {
28
+ params[inner] = param;
29
+ params[inner.replace(/^\.\.\./, "")] = param;
30
+ }
31
+ return (0, import_getPathnameFromFilePath.getPathnameFromFilePath)(route.file, params, false, {
27
32
  ...options,
28
33
  preserveExtensions: true
29
34
  }).replace(/^\.\//, "/").replace(/\/+$/, "");
@@ -26,7 +26,29 @@ module.exports = __toCommonJS(getPathFromRoute_exports);
26
26
  var import_getPathnameFromFilePath = require("../../utils/getPathnameFromFilePath.native.js");
27
27
  function getPathFromRoute(route) {
28
28
  var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
29
- return (0, import_getPathnameFromFilePath.getPathnameFromFilePath)(route.file, {}, false, {
29
+ var params = {};
30
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
31
+ try {
32
+ for (var _iterator = route.file.matchAll(/\[([^\]]+)\]/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
33
+ var [param, inner] = _step.value;
34
+ params[inner] = param;
35
+ params[inner.replace(/^\.\.\./, "")] = param;
36
+ }
37
+ } catch (err) {
38
+ _didIteratorError = true;
39
+ _iteratorError = err;
40
+ } finally {
41
+ try {
42
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
43
+ _iterator.return();
44
+ }
45
+ } finally {
46
+ if (_didIteratorError) {
47
+ throw _iteratorError;
48
+ }
49
+ }
50
+ }
51
+ return (0, import_getPathnameFromFilePath.getPathnameFromFilePath)(route.file, params, false, {
30
52
  ...options,
31
53
  preserveExtensions: true
32
54
  }).replace(/^\.\//, "/").replace(/\/+$/, "");
@@ -26,7 +26,29 @@ module.exports = __toCommonJS(getPathFromRoute_exports);
26
26
  var import_getPathnameFromFilePath = require("../../utils/getPathnameFromFilePath.native.js");
27
27
  function getPathFromRoute(route) {
28
28
  var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
29
- return (0, import_getPathnameFromFilePath.getPathnameFromFilePath)(route.file, {}, false, {
29
+ var params = {};
30
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
31
+ try {
32
+ for (var _iterator = route.file.matchAll(/\[([^\]]+)\]/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
33
+ var [param, inner] = _step.value;
34
+ params[inner] = param;
35
+ params[inner.replace(/^\.\.\./, "")] = param;
36
+ }
37
+ } catch (err) {
38
+ _didIteratorError = true;
39
+ _iteratorError = err;
40
+ } finally {
41
+ try {
42
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
43
+ _iterator.return();
44
+ }
45
+ } finally {
46
+ if (_didIteratorError) {
47
+ throw _iteratorError;
48
+ }
49
+ }
50
+ }
51
+ return (0, import_getPathnameFromFilePath.getPathnameFromFilePath)(route.file, params, false, {
30
52
  ...options,
31
53
  preserveExtensions: true
32
54
  }).replace(/^\.\//, "/").replace(/\/+$/, "");
@@ -1 +1 @@
1
- {"version":3,"file":"getPathFromRoute.native.js","names":[],"sources":["cjs/vercel/build/getPathFromRoute.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar getPathFromRoute_exports = {};\n__export(getPathFromRoute_exports, {\n getPathFromRoute: () => getPathFromRoute\n});\nmodule.exports = __toCommonJS(getPathFromRoute_exports);\nvar import_getPathnameFromFilePath = require(\"../../utils/getPathnameFromFilePath\");\nfunction getPathFromRoute(route) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n return (0, import_getPathnameFromFilePath.getPathnameFromFilePath)(route.file, {}, false, {\n ...options,\n preserveExtensions: true\n }).replace(/^\\.\\//, \"/\").replace(/\\/+$/, \"\");\n}\n//# sourceMappingURL=getPathFromRoute.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,2BAA2B,CAAC;AAChC,SAAS,0BAA0B,EACjC,wBAAwB,iBAC1B,CAAC;AACD,OAAO,UAAU,aAAa,wBAAwB;AACtD,IAAI,iCAAiC,QAAQ,+CAAqC;AAClF,SAAS,iBAAiB,OAAO;CAC/B,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;CAChF,QAAQ,GAAG,+BAA+B,wBAAuB,CAAE,MAAM,MAAM,CAAC,GAAG,OAAO;EACxF,GAAG;EACH,oBAAoB;CACtB,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,QAAQ,QAAQ,EAAE;AAC7C"}
1
+ {"version":3,"file":"getPathFromRoute.native.js","names":[],"sources":["cjs/vercel/build/getPathFromRoute.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar getPathFromRoute_exports = {};\n__export(getPathFromRoute_exports, {\n getPathFromRoute: () => getPathFromRoute\n});\nmodule.exports = __toCommonJS(getPathFromRoute_exports);\nvar import_getPathnameFromFilePath = require(\"../../utils/getPathnameFromFilePath\");\nfunction getPathFromRoute(route) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var params = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = route.file.matchAll(/\\[([^\\]]+)\\]/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [param, inner] = _step.value;\n params[inner] = param;\n params[inner.replace(/^\\.\\.\\./, \"\")] = param;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return (0, import_getPathnameFromFilePath.getPathnameFromFilePath)(route.file, params, false, {\n ...options,\n preserveExtensions: true\n }).replace(/^\\.\\//, \"/\").replace(/\\/+$/, \"\");\n}\n//# sourceMappingURL=getPathFromRoute.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,2BAA2B,CAAC;AAChC,SAAS,0BAA0B,EACjC,wBAAwB,iBAC1B,CAAC;AACD,OAAO,UAAU,aAAa,wBAAwB;AACtD,IAAI,iCAAiC,QAAQ,+CAAqC;AAClF,SAAS,iBAAiB,OAAO;CAC/B,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;CAChF,IAAI,SAAS,CAAC;CACd,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,KAAK,IAAI,YAAY,MAAM,KAAK,SAAS,eAAe,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;GACrL,IAAI,CAAC,OAAO,SAAS,MAAM;GAC3B,OAAO,SAAS;GAChB,OAAO,MAAM,QAAQ,WAAW,EAAE,KAAK;EACzC;CACF,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,QAAQ,GAAG,+BAA+B,wBAAuB,CAAE,MAAM,MAAM,QAAQ,OAAO;EAC5F,GAAG;EACH,oBAAoB;CACtB,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,QAAQ,QAAQ,EAAE;AAC7C"}
@@ -137,15 +137,12 @@ export { wrappedMiddlewareFunction as default }
137
137
  const ssrLoaderRoutes = buildInfoForWriting.manifest.pageRoutes.filter((r) => r.type === "ssr").map((r) => {
138
138
  const pagePath = getPathFromRoute(r) || "/";
139
139
  const cleanPath = pagePath.slice(1).replace(/\//g, "_");
140
- const loaderPattern = cleanPath.replace(/:([^_]+)/g, "(?<$1>[^_]+)");
140
+ const paramPattern = /\[(?:\.\.\.)?(\w+)\]/g;
141
+ const loaderPattern = cleanPath.replace(paramPattern, "(?<$1>[^_]+)");
141
142
  const src = `^/assets/${loaderPattern}(?:_refetch_\\d+)?_\\d+_vxrn_loader\\.js$`;
142
143
  let dest = `${pagePath}?__loader=1`;
143
- const paramMatches = cleanPath.match(/:([^_]+)/g);
144
- if (paramMatches) {
145
- for (const match of paramMatches) {
146
- const paramName = match.slice(1);
147
- dest += `&${paramName}=$${paramName}`;
148
- }
144
+ for (const [, paramName] of cleanPath.matchAll(paramPattern)) {
145
+ dest += `&${paramName}=$${paramName}`;
149
146
  }
150
147
  return {
151
148
  src,
@@ -1 +1 @@
1
- {"version":3,"file":"buildVercelOutputDirectory.js","names":[],"sources":["esm/vercel/build/buildVercelOutputDirectory.js"],"sourcesContent":["import { join, resolve } from \"node:path\";\nimport FSExtra from \"fs-extra\";\nimport { isMatching, P } from \"ts-pattern\";\nimport { vercelBuildOutputConfigBase } from \"./config/vc-build-output-config-base\";\nimport { serverlessVercelPackageJson } from \"./config/vc-package-base\";\nimport { createApiServerlessFunction } from \"./generate/createApiServerlessFunction\";\nimport { createSsrServerlessFunction } from \"./generate/createSsrServerlessFunction\";\nimport { getPathFromRoute } from \"./getPathFromRoute\";\nconst { copy, ensureDir, existsSync, remove, writeJSON } = FSExtra;\nasync function moveAllFiles(src, dest) {\n try {\n await copy(src, dest, { overwrite: true, errorOnExist: false });\n } catch (err) {\n console.error(\"Error moving files:\", err);\n }\n}\nfunction getMiddlewaresByNamedRegex(buildInfoForWriting) {\n const outDir = buildInfoForWriting.outDir || \"dist\";\n const prefix = `${outDir}/middlewares/`;\n return buildInfoForWriting.manifest.allRoutes.filter((r) => r.middlewares && r.middlewares.length > 0).map((r) => [\n r.namedRegex,\n r.middlewares.map(\n (m) => m.contextKey.startsWith(prefix) ? m.contextKey.substring(prefix.length) : m.contextKey\n )\n ]).sort((a, b) => b[0].length - a[0].length);\n}\nconst buildVercelOutputDirectory = async ({\n apiOutput,\n buildInfoForWriting,\n clientDir,\n oneOptionsRoot,\n postBuildLogs\n}) => {\n const outDir = buildInfoForWriting.outDir || \"dist\";\n const vercelOutputDir = resolve(join(oneOptionsRoot, \".vercel/output\"));\n if (existsSync(vercelOutputDir)) {\n await remove(vercelOutputDir);\n }\n const { routeToBuildInfo } = buildInfoForWriting;\n if (apiOutput) {\n const compiltedApiRoutes = (apiOutput?.output ?? []).filter(\n (o) => isMatching({ code: P.string, facadeModuleId: P.string }, o)\n );\n for (const route of buildInfoForWriting.manifest.apiRoutes) {\n const compiledRoute = compiltedApiRoutes.find((compiled) => {\n const flag = compiled.facadeModuleId.includes(route.file.replace(\"./\", \"\"));\n return flag;\n });\n if (compiledRoute) {\n postBuildLogs.push(\n `[one.build][vercel] generating serverless function for apiRoute ${route.page}`\n );\n await createApiServerlessFunction(\n route,\n compiledRoute.code,\n oneOptionsRoot,\n postBuildLogs,\n outDir\n );\n } else {\n console.warn(\n \"\\n \\u{1F528}[one.build][vercel] apiRoute missing code compilation for\",\n route.file\n );\n }\n }\n }\n const vercelOutputFunctionsDir = join(oneOptionsRoot, \".vercel/output/functions\");\n await ensureDir(vercelOutputFunctionsDir);\n for (const route of buildInfoForWriting.manifest.pageRoutes) {\n switch (route.type) {\n case \"ssr\": {\n const builtPageRoute = routeToBuildInfo[route.file];\n if (builtPageRoute) {\n postBuildLogs.push(\n `[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`\n );\n await createSsrServerlessFunction(\n route,\n buildInfoForWriting,\n oneOptionsRoot,\n postBuildLogs\n );\n }\n break;\n }\n default:\n break;\n }\n }\n const distMiddlewareDir = resolve(join(oneOptionsRoot, outDir, \"middlewares\"));\n if (existsSync(distMiddlewareDir)) {\n const vercelMiddlewareDir = resolve(\n join(oneOptionsRoot, \".vercel/output/functions/_middleware.func\")\n );\n await ensureDir(vercelMiddlewareDir);\n postBuildLogs.push(\n `[one.build][vercel] copying middlewares from ${distMiddlewareDir} to ${vercelMiddlewareDir}`\n );\n await moveAllFiles(\n resolve(join(oneOptionsRoot, outDir, \"middlewares\")),\n vercelMiddlewareDir\n );\n const vercelMiddlewarePackageJsonFilePath = resolve(\n join(vercelMiddlewareDir, \"package.json\")\n );\n postBuildLogs.push(\n `[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`\n );\n await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson);\n const wrappedMiddlewareEntryPointFilename = \"_wrapped_middleware.js\";\n const wrappedMiddlewareEntryPointPath = resolve(\n join(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename)\n );\n const middlewaresByNamedRegex = getMiddlewaresByNamedRegex(buildInfoForWriting);\n const middlewaresToVariableNameMap = middlewaresByNamedRegex.reduce(\n (acc, [namedRegex, middlewares]) => {\n ;\n (Array.isArray(middlewares) ? middlewares : [middlewares]).forEach(\n (middleware) => {\n const middlewareVariableName = middleware.replace(/\\.[a-z]+$/, \"\").replaceAll(\"/\", \"_\");\n acc[middleware] = middlewareVariableName;\n }\n );\n return acc;\n },\n {}\n );\n await FSExtra.writeFile(\n wrappedMiddlewareEntryPointPath,\n `\nconst middlewaresByNamedRegex = ${JSON.stringify(middlewaresByNamedRegex)}\n${Object.entries(middlewaresToVariableNameMap).map(([path, variableName]) => `import ${variableName} from './${path}'`).join(\"\\n\")}\n\nfunction getMiddleware(path) {\n switch (path){\n ${Object.entries(middlewaresToVariableNameMap).map(([path, variableName]) => `case '${path}': return ${variableName}`).join(\"\\n\")}\n default: return null\n }\n}\n\nconst next = (e) => {\n const t = new Headers(null == e ? void 0 : e.headers)\n t.set('x-middleware-next', '1')\n return new Response(null, { ...e, headers: t })\n}\n\nconst wrappedMiddlewareFunction = (request, event) => {\n const url = new URL(request.url)\n const pathname = url.pathname\n \n // Find matching middlewares for this request\n const matchingMiddlewares = [...middlewaresByNamedRegex\n .filter(([namedRegex]) => new RegExp(namedRegex).test(pathname))\n .reduce((prev, current) => prev.length > current[1]?.length ? prev : current[1], [])];\n \n // Import and execute the middleware function\n const boundNext = () => {\n if (matchingMiddlewares.length === 0) {\n return next(request)\n }\n \n const middleware = getMiddleware(matchingMiddlewares.shift())\n return middleware ? middleware({request, event, next: boundNext}) : next(request)\n };\n return boundNext()\n}\n\nexport { wrappedMiddlewareFunction as default }\n `\n );\n const middlewareVercelConfigFilePath = resolve(\n join(vercelMiddlewareDir, \".vc-config.json\")\n );\n postBuildLogs.push(\n `[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`\n );\n await writeJSON(middlewareVercelConfigFilePath, {\n runtime: \"edge\",\n // Seems that middlewares only work with edge runtime\n entrypoint: wrappedMiddlewareEntryPointFilename\n });\n }\n const vercelOutputStaticDir = resolve(join(oneOptionsRoot, \".vercel/output/static\"));\n await ensureDir(vercelOutputStaticDir);\n postBuildLogs.push(\n `[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`\n );\n await moveAllFiles(clientDir, vercelOutputStaticDir);\n const ssrLoaderRoutes = buildInfoForWriting.manifest.pageRoutes.filter((r) => r.type === \"ssr\").map((r) => {\n const pagePath = getPathFromRoute(r) || \"/\";\n const cleanPath = pagePath.slice(1).replace(/\\//g, \"_\");\n const loaderPattern = cleanPath.replace(/:([^_]+)/g, \"(?<$1>[^_]+)\");\n const src = `^/assets/${loaderPattern}(?:_refetch_\\\\d+)?_\\\\d+_vxrn_loader\\\\.js$`;\n let dest = `${pagePath}?__loader=1`;\n const paramMatches = cleanPath.match(/:([^_]+)/g);\n if (paramMatches) {\n for (const match of paramMatches) {\n const paramName = match.slice(1);\n dest += `&${paramName}=$${paramName}`;\n }\n }\n return { src, dest };\n });\n const spaRoutes = buildInfoForWriting.manifest.pageRoutes.filter((route) => route.type === \"spa\" && !route.isNotFound).flatMap((route) => {\n const htmlPath = routeToBuildInfo[route.file]?.htmlPath;\n return htmlPath ? [{ src: route.namedRegex, dest: htmlPath }] : [];\n });\n const vercelConfigFilePath = resolve(\n join(oneOptionsRoot, \".vercel/output\", \"config.json\")\n );\n await writeJSON(vercelConfigFilePath, {\n ...vercelBuildOutputConfigBase,\n routes: [\n ...vercelBuildOutputConfigBase.routes,\n ...existsSync(distMiddlewareDir) ? [\n {\n src: \"/(.*)\",\n middlewarePath: \"_middleware\",\n continue: true\n }\n ] : [],\n {\n handle: \"rewrite\"\n },\n // SSR loader routes must come before dynamic page routes\n ...ssrLoaderRoutes,\n ...spaRoutes,\n ...buildInfoForWriting.manifest.allRoutes.filter((r) => r.routeKeys && Object.keys(r.routeKeys).length > 0).map((r) => ({\n src: r.namedRegex,\n dest: `${getPathFromRoute(r) || \"/\"}?${Object.entries(r.routeKeys).map(([k, v]) => `${k}=$${v}`).join(\"&\")}`\n }))\n ]\n });\n postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);\n};\nexport {\n buildVercelOutputDirectory\n};\n//# sourceMappingURL=buildVercelOutputDirectory.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"buildVercelOutputDirectory.js","names":[],"sources":["esm/vercel/build/buildVercelOutputDirectory.js"],"sourcesContent":["import { join, resolve } from \"node:path\";\nimport FSExtra from \"fs-extra\";\nimport { isMatching, P } from \"ts-pattern\";\nimport { vercelBuildOutputConfigBase } from \"./config/vc-build-output-config-base\";\nimport { serverlessVercelPackageJson } from \"./config/vc-package-base\";\nimport { createApiServerlessFunction } from \"./generate/createApiServerlessFunction\";\nimport { createSsrServerlessFunction } from \"./generate/createSsrServerlessFunction\";\nimport { getPathFromRoute } from \"./getPathFromRoute\";\nconst { copy, ensureDir, existsSync, remove, writeJSON } = FSExtra;\nasync function moveAllFiles(src, dest) {\n try {\n await copy(src, dest, { overwrite: true, errorOnExist: false });\n } catch (err) {\n console.error(\"Error moving files:\", err);\n }\n}\nfunction getMiddlewaresByNamedRegex(buildInfoForWriting) {\n const outDir = buildInfoForWriting.outDir || \"dist\";\n const prefix = `${outDir}/middlewares/`;\n return buildInfoForWriting.manifest.allRoutes.filter((r) => r.middlewares && r.middlewares.length > 0).map((r) => [\n r.namedRegex,\n r.middlewares.map(\n (m) => m.contextKey.startsWith(prefix) ? m.contextKey.substring(prefix.length) : m.contextKey\n )\n ]).sort((a, b) => b[0].length - a[0].length);\n}\nconst buildVercelOutputDirectory = async ({\n apiOutput,\n buildInfoForWriting,\n clientDir,\n oneOptionsRoot,\n postBuildLogs\n}) => {\n const outDir = buildInfoForWriting.outDir || \"dist\";\n const vercelOutputDir = resolve(join(oneOptionsRoot, \".vercel/output\"));\n if (existsSync(vercelOutputDir)) {\n await remove(vercelOutputDir);\n }\n const { routeToBuildInfo } = buildInfoForWriting;\n if (apiOutput) {\n const compiltedApiRoutes = (apiOutput?.output ?? []).filter(\n (o) => isMatching({ code: P.string, facadeModuleId: P.string }, o)\n );\n for (const route of buildInfoForWriting.manifest.apiRoutes) {\n const compiledRoute = compiltedApiRoutes.find((compiled) => {\n const flag = compiled.facadeModuleId.includes(route.file.replace(\"./\", \"\"));\n return flag;\n });\n if (compiledRoute) {\n postBuildLogs.push(\n `[one.build][vercel] generating serverless function for apiRoute ${route.page}`\n );\n await createApiServerlessFunction(\n route,\n compiledRoute.code,\n oneOptionsRoot,\n postBuildLogs,\n outDir\n );\n } else {\n console.warn(\n \"\\n \\u{1F528}[one.build][vercel] apiRoute missing code compilation for\",\n route.file\n );\n }\n }\n }\n const vercelOutputFunctionsDir = join(oneOptionsRoot, \".vercel/output/functions\");\n await ensureDir(vercelOutputFunctionsDir);\n for (const route of buildInfoForWriting.manifest.pageRoutes) {\n switch (route.type) {\n case \"ssr\": {\n const builtPageRoute = routeToBuildInfo[route.file];\n if (builtPageRoute) {\n postBuildLogs.push(\n `[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`\n );\n await createSsrServerlessFunction(\n route,\n buildInfoForWriting,\n oneOptionsRoot,\n postBuildLogs\n );\n }\n break;\n }\n default:\n break;\n }\n }\n const distMiddlewareDir = resolve(join(oneOptionsRoot, outDir, \"middlewares\"));\n if (existsSync(distMiddlewareDir)) {\n const vercelMiddlewareDir = resolve(\n join(oneOptionsRoot, \".vercel/output/functions/_middleware.func\")\n );\n await ensureDir(vercelMiddlewareDir);\n postBuildLogs.push(\n `[one.build][vercel] copying middlewares from ${distMiddlewareDir} to ${vercelMiddlewareDir}`\n );\n await moveAllFiles(\n resolve(join(oneOptionsRoot, outDir, \"middlewares\")),\n vercelMiddlewareDir\n );\n const vercelMiddlewarePackageJsonFilePath = resolve(\n join(vercelMiddlewareDir, \"package.json\")\n );\n postBuildLogs.push(\n `[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`\n );\n await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson);\n const wrappedMiddlewareEntryPointFilename = \"_wrapped_middleware.js\";\n const wrappedMiddlewareEntryPointPath = resolve(\n join(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename)\n );\n const middlewaresByNamedRegex = getMiddlewaresByNamedRegex(buildInfoForWriting);\n const middlewaresToVariableNameMap = middlewaresByNamedRegex.reduce(\n (acc, [namedRegex, middlewares]) => {\n ;\n (Array.isArray(middlewares) ? middlewares : [middlewares]).forEach(\n (middleware) => {\n const middlewareVariableName = middleware.replace(/\\.[a-z]+$/, \"\").replaceAll(\"/\", \"_\");\n acc[middleware] = middlewareVariableName;\n }\n );\n return acc;\n },\n {}\n );\n await FSExtra.writeFile(\n wrappedMiddlewareEntryPointPath,\n `\nconst middlewaresByNamedRegex = ${JSON.stringify(middlewaresByNamedRegex)}\n${Object.entries(middlewaresToVariableNameMap).map(([path, variableName]) => `import ${variableName} from './${path}'`).join(\"\\n\")}\n\nfunction getMiddleware(path) {\n switch (path){\n ${Object.entries(middlewaresToVariableNameMap).map(([path, variableName]) => `case '${path}': return ${variableName}`).join(\"\\n\")}\n default: return null\n }\n}\n\nconst next = (e) => {\n const t = new Headers(null == e ? void 0 : e.headers)\n t.set('x-middleware-next', '1')\n return new Response(null, { ...e, headers: t })\n}\n\nconst wrappedMiddlewareFunction = (request, event) => {\n const url = new URL(request.url)\n const pathname = url.pathname\n \n // Find matching middlewares for this request\n const matchingMiddlewares = [...middlewaresByNamedRegex\n .filter(([namedRegex]) => new RegExp(namedRegex).test(pathname))\n .reduce((prev, current) => prev.length > current[1]?.length ? prev : current[1], [])];\n \n // Import and execute the middleware function\n const boundNext = () => {\n if (matchingMiddlewares.length === 0) {\n return next(request)\n }\n \n const middleware = getMiddleware(matchingMiddlewares.shift())\n return middleware ? middleware({request, event, next: boundNext}) : next(request)\n };\n return boundNext()\n}\n\nexport { wrappedMiddlewareFunction as default }\n `\n );\n const middlewareVercelConfigFilePath = resolve(\n join(vercelMiddlewareDir, \".vc-config.json\")\n );\n postBuildLogs.push(\n `[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`\n );\n await writeJSON(middlewareVercelConfigFilePath, {\n runtime: \"edge\",\n // Seems that middlewares only work with edge runtime\n entrypoint: wrappedMiddlewareEntryPointFilename\n });\n }\n const vercelOutputStaticDir = resolve(join(oneOptionsRoot, \".vercel/output/static\"));\n await ensureDir(vercelOutputStaticDir);\n postBuildLogs.push(\n `[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`\n );\n await moveAllFiles(clientDir, vercelOutputStaticDir);\n const ssrLoaderRoutes = buildInfoForWriting.manifest.pageRoutes.filter((r) => r.type === \"ssr\").map((r) => {\n const pagePath = getPathFromRoute(r) || \"/\";\n const cleanPath = pagePath.slice(1).replace(/\\//g, \"_\");\n const paramPattern = /\\[(?:\\.\\.\\.)?(\\w+)\\]/g;\n const loaderPattern = cleanPath.replace(paramPattern, \"(?<$1>[^_]+)\");\n const src = `^/assets/${loaderPattern}(?:_refetch_\\\\d+)?_\\\\d+_vxrn_loader\\\\.js$`;\n let dest = `${pagePath}?__loader=1`;\n for (const [, paramName] of cleanPath.matchAll(paramPattern)) {\n dest += `&${paramName}=$${paramName}`;\n }\n return { src, dest };\n });\n const spaRoutes = buildInfoForWriting.manifest.pageRoutes.filter((route) => route.type === \"spa\" && !route.isNotFound).flatMap((route) => {\n const htmlPath = routeToBuildInfo[route.file]?.htmlPath;\n return htmlPath ? [{ src: route.namedRegex, dest: htmlPath }] : [];\n });\n const vercelConfigFilePath = resolve(\n join(oneOptionsRoot, \".vercel/output\", \"config.json\")\n );\n await writeJSON(vercelConfigFilePath, {\n ...vercelBuildOutputConfigBase,\n routes: [\n ...vercelBuildOutputConfigBase.routes,\n ...existsSync(distMiddlewareDir) ? [\n {\n src: \"/(.*)\",\n middlewarePath: \"_middleware\",\n continue: true\n }\n ] : [],\n {\n handle: \"rewrite\"\n },\n // SSR loader routes must come before dynamic page routes\n ...ssrLoaderRoutes,\n ...spaRoutes,\n ...buildInfoForWriting.manifest.allRoutes.filter((r) => r.routeKeys && Object.keys(r.routeKeys).length > 0).map((r) => ({\n src: r.namedRegex,\n dest: `${getPathFromRoute(r) || \"/\"}?${Object.entries(r.routeKeys).map(([k, v]) => `${k}=$${v}`).join(\"&\")}`\n }))\n ]\n });\n postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);\n};\nexport {\n buildVercelOutputDirectory\n};\n//# sourceMappingURL=buildVercelOutputDirectory.js.map\n"],"mappings":"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"}
@@ -193,30 +193,27 @@ export { wrappedMiddlewareFunction as default }
193
193
  }).map(function(r) {
194
194
  var pagePath = getPathFromRoute(r) || "/";
195
195
  var cleanPath = pagePath.slice(1).replace(/\//g, "_");
196
- var loaderPattern = cleanPath.replace(/:([^_]+)/g, "(?<$1>[^_]+)");
196
+ var paramPattern = /\[(?:\.\.\.)?(\w+)\]/g;
197
+ var loaderPattern = cleanPath.replace(paramPattern, "(?<$1>[^_]+)");
197
198
  var src = `^/assets/${loaderPattern}(?:_refetch_\\d+)?_\\d+_vxrn_loader\\.js$`;
198
199
  var dest = `${pagePath}?__loader=1`;
199
- var paramMatches = cleanPath.match(/:([^_]+)/g);
200
- if (paramMatches) {
201
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
200
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
201
+ try {
202
+ for (var _iterator2 = cleanPath.matchAll(paramPattern)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
203
+ var [, paramName] = _step2.value;
204
+ dest += `&${paramName}=$${paramName}`;
205
+ }
206
+ } catch (err) {
207
+ _didIteratorError2 = true;
208
+ _iteratorError2 = err;
209
+ } finally {
202
210
  try {
203
- for (var _iterator2 = paramMatches[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
204
- var match = _step2.value;
205
- var paramName = match.slice(1);
206
- dest += `&${paramName}=$${paramName}`;
211
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
212
+ _iterator2.return();
207
213
  }
208
- } catch (err) {
209
- _didIteratorError2 = true;
210
- _iteratorError2 = err;
211
214
  } finally {
212
- try {
213
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
214
- _iterator2.return();
215
- }
216
- } finally {
217
- if (_didIteratorError2) {
218
- throw _iteratorError2;
219
- }
215
+ if (_didIteratorError2) {
216
+ throw _iteratorError2;
220
217
  }
221
218
  }
222
219
  }
@@ -1 +1 @@
1
- {"version":3,"file":"buildVercelOutputDirectory.native.js","names":[],"sources":["esm/vercel/build/buildVercelOutputDirectory.native.js"],"sourcesContent":["import { join, resolve } from \"path\";\nimport FSExtra from \"fs-extra\";\nimport { isMatching, P } from \"ts-pattern\";\nimport { vercelBuildOutputConfigBase } from \"./config/vc-build-output-config-base\";\nimport { serverlessVercelPackageJson } from \"./config/vc-package-base\";\nimport { createApiServerlessFunction } from \"./generate/createApiServerlessFunction\";\nimport { createSsrServerlessFunction } from \"./generate/createSsrServerlessFunction\";\nimport { getPathFromRoute } from \"./getPathFromRoute\";\nvar { copy, ensureDir, existsSync, remove, writeJSON } = FSExtra;\nasync function moveAllFiles(src, dest) {\n try {\n await copy(src, dest, {\n overwrite: true,\n errorOnExist: false\n });\n } catch (err) {\n console.error(\"Error moving files:\", err);\n }\n}\nfunction getMiddlewaresByNamedRegex(buildInfoForWriting) {\n var outDir = buildInfoForWriting.outDir || \"dist\";\n var prefix = `${outDir}/middlewares/`;\n return buildInfoForWriting.manifest.allRoutes.filter(function(r) {\n return r.middlewares && r.middlewares.length > 0;\n }).map(function(r) {\n return [\n r.namedRegex,\n r.middlewares.map(function(m) {\n return m.contextKey.startsWith(prefix) ? m.contextKey.substring(prefix.length) : m.contextKey;\n })\n ];\n }).sort(function(a, b) {\n return b[0].length - a[0].length;\n });\n}\nvar buildVercelOutputDirectory = async function buildVercelOutputDirectory2(param) {\n var { apiOutput, buildInfoForWriting, clientDir, oneOptionsRoot, postBuildLogs } = param;\n var outDir = buildInfoForWriting.outDir || \"dist\";\n var vercelOutputDir = resolve(join(oneOptionsRoot, \".vercel/output\"));\n if (existsSync(vercelOutputDir)) {\n await remove(vercelOutputDir);\n }\n var { routeToBuildInfo } = buildInfoForWriting;\n if (apiOutput) {\n var _ref;\n var compiltedApiRoutes = ((_ref = apiOutput === null || apiOutput === void 0 ? void 0 : apiOutput.output) !== null && _ref !== void 0 ? _ref : []).filter(function(o) {\n return isMatching({\n code: P.string,\n facadeModuleId: P.string\n }, o);\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = async function() {\n var route2 = _step.value;\n var compiledRoute = compiltedApiRoutes.find(function(compiled) {\n var flag = compiled.facadeModuleId.includes(route2.file.replace(\"./\", \"\"));\n return flag;\n });\n if (compiledRoute) {\n postBuildLogs.push(`[one.build][vercel] generating serverless function for apiRoute ${route2.page}`);\n await createApiServerlessFunction(route2, compiledRoute.code, oneOptionsRoot, postBuildLogs, outDir);\n } else {\n console.warn(\"\\n \\u{1F528}[one.build][vercel] apiRoute missing code compilation for\", route2.file);\n }\n };\n for (var _iterator = buildInfoForWriting.manifest.apiRoutes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) await _loop();\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var vercelOutputFunctionsDir = join(oneOptionsRoot, \".vercel/output/functions\");\n await ensureDir(vercelOutputFunctionsDir);\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = buildInfoForWriting.manifest.pageRoutes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var route = _step1.value;\n switch (route.type) {\n case \"ssr\": {\n var builtPageRoute = routeToBuildInfo[route.file];\n if (builtPageRoute) {\n postBuildLogs.push(`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`);\n await createSsrServerlessFunction(route, buildInfoForWriting, oneOptionsRoot, postBuildLogs);\n }\n break;\n }\n default:\n break;\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 var distMiddlewareDir = resolve(join(oneOptionsRoot, outDir, \"middlewares\"));\n if (existsSync(distMiddlewareDir)) {\n var vercelMiddlewareDir = resolve(join(oneOptionsRoot, \".vercel/output/functions/_middleware.func\"));\n await ensureDir(vercelMiddlewareDir);\n postBuildLogs.push(`[one.build][vercel] copying middlewares from ${distMiddlewareDir} to ${vercelMiddlewareDir}`);\n await moveAllFiles(resolve(join(oneOptionsRoot, outDir, \"middlewares\")), vercelMiddlewareDir);\n var vercelMiddlewarePackageJsonFilePath = resolve(join(vercelMiddlewareDir, \"package.json\"));\n postBuildLogs.push(`[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`);\n await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson);\n var wrappedMiddlewareEntryPointFilename = \"_wrapped_middleware.js\";\n var wrappedMiddlewareEntryPointPath = resolve(join(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename));\n var middlewaresByNamedRegex = getMiddlewaresByNamedRegex(buildInfoForWriting);\n var middlewaresToVariableNameMap = middlewaresByNamedRegex.reduce(function(acc, param2) {\n var [namedRegex, middlewares] = param2;\n ;\n (Array.isArray(middlewares) ? middlewares : [\n middlewares\n ]).forEach(function(middleware) {\n var middlewareVariableName = middleware.replace(/\\.[a-z]+$/, \"\").replaceAll(\"/\", \"_\");\n acc[middleware] = middlewareVariableName;\n });\n return acc;\n }, {});\n await FSExtra.writeFile(wrappedMiddlewareEntryPointPath, `\nconst middlewaresByNamedRegex = ${JSON.stringify(middlewaresByNamedRegex)}\n${Object.entries(middlewaresToVariableNameMap).map(function(param2) {\n var [path, variableName] = param2;\n return `import ${variableName} from './${path}'`;\n }).join(\"\\n\")}\n\nfunction getMiddleware(path) {\n switch (path){\n ${Object.entries(middlewaresToVariableNameMap).map(function(param2) {\n var [path, variableName] = param2;\n return `case '${path}': return ${variableName}`;\n }).join(\"\\n\")}\n default: return null\n }\n}\n\nconst next = (e) => {\n const t = new Headers(null == e ? void 0 : e.headers)\n t.set('x-middleware-next', '1')\n return new Response(null, { ...e, headers: t })\n}\n\nconst wrappedMiddlewareFunction = (request, event) => {\n const url = new URL(request.url)\n const pathname = url.pathname\n \n // Find matching middlewares for this request\n const matchingMiddlewares = [...middlewaresByNamedRegex\n .filter(([namedRegex]) => new RegExp(namedRegex).test(pathname))\n .reduce((prev, current) => prev.length > current[1]?.length ? prev : current[1], [])];\n \n // Import and execute the middleware function\n const boundNext = () => {\n if (matchingMiddlewares.length === 0) {\n return next(request)\n }\n \n const middleware = getMiddleware(matchingMiddlewares.shift())\n return middleware ? middleware({request, event, next: boundNext}) : next(request)\n };\n return boundNext()\n}\n\nexport { wrappedMiddlewareFunction as default }\n `);\n var middlewareVercelConfigFilePath = resolve(join(vercelMiddlewareDir, \".vc-config.json\"));\n postBuildLogs.push(`[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`);\n await writeJSON(middlewareVercelConfigFilePath, {\n runtime: \"edge\",\n // Seems that middlewares only work with edge runtime\n entrypoint: wrappedMiddlewareEntryPointFilename\n });\n }\n var vercelOutputStaticDir = resolve(join(oneOptionsRoot, \".vercel/output/static\"));\n await ensureDir(vercelOutputStaticDir);\n postBuildLogs.push(`[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`);\n await moveAllFiles(clientDir, vercelOutputStaticDir);\n var ssrLoaderRoutes = buildInfoForWriting.manifest.pageRoutes.filter(function(r) {\n return r.type === \"ssr\";\n }).map(function(r) {\n var pagePath = getPathFromRoute(r) || \"/\";\n var cleanPath = pagePath.slice(1).replace(/\\//g, \"_\");\n var loaderPattern = cleanPath.replace(/:([^_]+)/g, \"(?<$1>[^_]+)\");\n var src = `^/assets/${loaderPattern}(?:_refetch_\\\\d+)?_\\\\d+_vxrn_loader\\\\.js$`;\n var dest = `${pagePath}?__loader=1`;\n var paramMatches = cleanPath.match(/:([^_]+)/g);\n if (paramMatches) {\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = paramMatches[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var match = _step2.value;\n var paramName = match.slice(1);\n dest += `&${paramName}=$${paramName}`;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n return {\n src,\n dest\n };\n });\n var spaRoutes = buildInfoForWriting.manifest.pageRoutes.filter(function(route2) {\n return route2.type === \"spa\" && !route2.isNotFound;\n }).flatMap(function(route2) {\n var _routeToBuildInfo_route_file;\n var htmlPath = (_routeToBuildInfo_route_file = routeToBuildInfo[route2.file]) === null || _routeToBuildInfo_route_file === void 0 ? void 0 : _routeToBuildInfo_route_file.htmlPath;\n return htmlPath ? [\n {\n src: route2.namedRegex,\n dest: htmlPath\n }\n ] : [];\n });\n var vercelConfigFilePath = resolve(join(oneOptionsRoot, \".vercel/output\", \"config.json\"));\n await writeJSON(vercelConfigFilePath, {\n ...vercelBuildOutputConfigBase,\n routes: [\n ...vercelBuildOutputConfigBase.routes,\n ...existsSync(distMiddlewareDir) ? [\n {\n src: \"/(.*)\",\n middlewarePath: \"_middleware\",\n continue: true\n }\n ] : [],\n {\n handle: \"rewrite\"\n },\n // SSR loader routes must come before dynamic page routes\n ...ssrLoaderRoutes,\n ...spaRoutes,\n ...buildInfoForWriting.manifest.allRoutes.filter(function(r) {\n return r.routeKeys && Object.keys(r.routeKeys).length > 0;\n }).map(function(r) {\n return {\n src: r.namedRegex,\n dest: `${getPathFromRoute(r) || \"/\"}?${Object.entries(r.routeKeys).map(function(param2) {\n var [k, v] = param2;\n return `${k}=$${v}`;\n }).join(\"&\")}`\n };\n })\n ]\n });\n postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);\n};\nexport {\n buildVercelOutputDirectory\n};\n//# sourceMappingURL=buildVercelOutputDirectory.js.map\n"],"mappings":";;;;;;;;;;AAQA,IAAI,EAAE,MAAM,WAAW,YAAY,QAAQ,cAAc;AACzD,eAAe,aAAa,KAAK,MAAM;CACrC,IAAI;EACF,MAAM,KAAK,KAAK,MAAM;GACpB,WAAW;GACX,cAAc;EAChB,CAAC;CACH,SAAS,KAAK;EACZ,QAAQ,MAAM,uBAAuB,GAAG;CAC1C;AACF;AACA,SAAS,2BAA2B,qBAAqB;CACvD,IAAI,SAAS,oBAAoB,UAAU;CAC3C,IAAI,SAAS,GAAG,OAAO;CACvB,OAAO,oBAAoB,SAAS,UAAU,OAAO,SAAS,GAAG;EAC/D,OAAO,EAAE,eAAe,EAAE,YAAY,SAAS;CACjD,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG;EACjB,OAAO,CACL,EAAE,YACF,EAAE,YAAY,IAAI,SAAS,GAAG;GAC5B,OAAO,EAAE,WAAW,WAAW,MAAM,IAAI,EAAE,WAAW,UAAU,OAAO,MAAM,IAAI,EAAE;EACrF,CAAC,CACH;CACF,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,GAAG;EACrB,OAAO,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;CAC5B,CAAC;AACH;AACA,IAAI,6BAA6B,eAAe,4BAA4B,OAAO;CACjF,IAAI,EAAE,WAAW,qBAAqB,WAAW,gBAAgB,kBAAkB;CACnF,IAAI,SAAS,oBAAoB,UAAU;CAC3C,IAAI,kBAAkB,QAAQ,KAAK,gBAAgB,gBAAgB,CAAC;CACpE,IAAI,WAAW,eAAe,GAAG;EAC/B,MAAM,OAAO,eAAe;CAC9B;CACA,IAAI,EAAE,qBAAqB;CAC3B,IAAI,WAAW;EACb,IAAI;EACJ,IAAI,uBAAuB,OAAO,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,YAAY,QAAQ,SAAS,KAAK,IAAI,OAAO,CAAC,EAAC,CAAE,OAAO,SAAS,GAAG;GACpK,OAAO,WAAW;IAChB,MAAM,EAAE;IACR,gBAAgB,EAAE;GACpB,GAAG,CAAC;EACN,CAAC;EACD,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,IAAI,QAAQ,iBAAiB;IAC3B,IAAI,SAAS,MAAM;IACnB,IAAI,gBAAgB,mBAAmB,KAAK,SAAS,UAAU;KAC7D,IAAI,OAAO,SAAS,eAAe,SAAS,OAAO,KAAK,QAAQ,MAAM,EAAE,CAAC;KACzE,OAAO;IACT,CAAC;IACD,IAAI,eAAe;KACjB,cAAc,KAAK,mEAAmE,OAAO,MAAM;KACnG,MAAM,4BAA4B,QAAQ,cAAc,MAAM,gBAAgB,eAAe,MAAM;IACrG,OAAO;KACL,QAAQ,KAAK,kEAAyE,OAAO,IAAI;IACnG;GACF;GACA,KAAK,IAAI,YAAY,oBAAoB,SAAS,UAAU,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM,MAAM,MAAM;EACvM,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;CACF;CACA,IAAI,2BAA2B,KAAK,gBAAgB,0BAA0B;CAC9E,MAAM,UAAU,wBAAwB;CACxC,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;CAC1F,IAAI;EACF,KAAK,IAAI,aAAa,oBAAoB,SAAS,WAAW,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;GAC9L,IAAI,QAAQ,OAAO;GACnB,QAAQ,MAAM,MAAd;IACE,KAAK,OAAO;KACV,IAAI,iBAAiB,iBAAiB,MAAM;KAC5C,IAAI,gBAAgB;MAClB,cAAc,KAAK,wDAAwD,MAAM,KAAK,QAAQ,MAAM,MAAM;MAC1G,MAAM,4BAA4B,OAAO,qBAAqB,gBAAgB,aAAa;KAC7F;KACA;IACF;IACA,SACE;GACJ;EACF;CACF,SAAS,KAAK;EACZ,qBAAqB;EACrB,kBAAkB;CACpB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;IAC5D,WAAW,OAAO;GACpB;EACF,UAAU;GACR,IAAI,oBAAoB;IACtB,MAAM;GACR;EACF;CACF;CACA,IAAI,oBAAoB,QAAQ,KAAK,gBAAgB,QAAQ,aAAa,CAAC;CAC3E,IAAI,WAAW,iBAAiB,GAAG;EACjC,IAAI,sBAAsB,QAAQ,KAAK,gBAAgB,2CAA2C,CAAC;EACnG,MAAM,UAAU,mBAAmB;EACnC,cAAc,KAAK,gDAAgD,kBAAkB,MAAM,qBAAqB;EAChH,MAAM,aAAa,QAAQ,KAAK,gBAAgB,QAAQ,aAAa,CAAC,GAAG,mBAAmB;EAC5F,IAAI,sCAAsC,QAAQ,KAAK,qBAAqB,cAAc,CAAC;EAC3F,cAAc,KAAK,+CAA+C,qCAAqC;EACvG,MAAM,UAAU,qCAAqC,2BAA2B;EAChF,IAAI,sCAAsC;EAC1C,IAAI,kCAAkC,QAAQ,KAAK,qBAAqB,mCAAmC,CAAC;EAC5G,IAAI,0BAA0B,2BAA2B,mBAAmB;EAC5E,IAAI,+BAA+B,wBAAwB,OAAO,SAAS,KAAK,QAAQ;GACtF,IAAI,CAAC,YAAY,eAAe;GAChC;GACA,CAAC,MAAM,QAAQ,WAAW,IAAI,cAAc,CAC1C,WACF,EAAC,CAAE,QAAQ,SAAS,YAAY;IAC9B,IAAI,yBAAyB,WAAW,QAAQ,aAAa,EAAE,CAAC,CAAC,WAAW,KAAK,GAAG;IACpF,IAAI,cAAc;GACpB,CAAC;GACD,OAAO;EACT,GAAG,CAAC,CAAC;EACL,MAAM,QAAQ,UAAU,iCAAiC;kCAC3B,KAAK,UAAU,uBAAuB,EAAE;EACxE,OAAO,QAAQ,4BAA4B,CAAC,CAAC,IAAI,SAAS,QAAQ;GAC9D,IAAI,CAAC,MAAM,gBAAgB;GAC3B,OAAO,UAAU,aAAa,WAAW,KAAK;EAChD,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;;;;QAIV,OAAO,QAAQ,4BAA4B,CAAC,CAAC,IAAI,SAAS,QAAQ;GACpE,IAAI,CAAC,MAAM,gBAAgB;GAC3B,OAAO,SAAS,KAAK,YAAY;EACnC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCf;EACC,IAAI,iCAAiC,QAAQ,KAAK,qBAAqB,iBAAiB,CAAC;EACzF,cAAc,KAAK,kDAAkD,gCAAgC;EACrG,MAAM,UAAU,gCAAgC;GAC9C,SAAS;GAET,YAAY;EACd,CAAC;CACH;CACA,IAAI,wBAAwB,QAAQ,KAAK,gBAAgB,uBAAuB,CAAC;CACjF,MAAM,UAAU,qBAAqB;CACrC,cAAc,KAAK,iDAAiD,UAAU,MAAM,uBAAuB;CAC3G,MAAM,aAAa,WAAW,qBAAqB;CACnD,IAAI,kBAAkB,oBAAoB,SAAS,WAAW,OAAO,SAAS,GAAG;EAC/E,OAAO,EAAE,SAAS;CACpB,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG;EACjB,IAAI,WAAW,iBAAiB,CAAC,KAAK;EACtC,IAAI,YAAY,SAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,OAAO,GAAG;EACpD,IAAI,gBAAgB,UAAU,QAAQ,aAAa,cAAc;EACjE,IAAI,MAAM,YAAY,cAAc;EACpC,IAAI,OAAO,GAAG,SAAS;EACvB,IAAI,eAAe,UAAU,MAAM,WAAW;EAC9C,IAAI,cAAc;GAChB,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;GAC1F,IAAI;IACF,KAAK,IAAI,aAAa,aAAa,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;KACnK,IAAI,QAAQ,OAAO;KACnB,IAAI,YAAY,MAAM,MAAM,CAAC;KAC7B,QAAQ,IAAI,UAAU,IAAI;IAC5B;GACF,SAAS,KAAK;IACZ,qBAAqB;IACrB,kBAAkB;GACpB,UAAU;IACR,IAAI;KACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;MAC5D,WAAW,OAAO;KACpB;IACF,UAAU;KACR,IAAI,oBAAoB;MACtB,MAAM;KACR;IACF;GACF;EACF;EACA,OAAO;GACL;GACA;EACF;CACF,CAAC;CACD,IAAI,YAAY,oBAAoB,SAAS,WAAW,OAAO,SAAS,QAAQ;EAC9E,OAAO,OAAO,SAAS,SAAS,CAAC,OAAO;CAC1C,CAAC,CAAC,CAAC,QAAQ,SAAS,QAAQ;EAC1B,IAAI;EACJ,IAAI,YAAY,+BAA+B,iBAAiB,OAAO,WAAW,QAAQ,iCAAiC,KAAK,IAAI,KAAK,IAAI,6BAA6B;EAC1K,OAAO,WAAW,CAChB;GACE,KAAK,OAAO;GACZ,MAAM;EACR,CACF,IAAI,CAAC;CACP,CAAC;CACD,IAAI,uBAAuB,QAAQ,KAAK,gBAAgB,kBAAkB,aAAa,CAAC;CACxF,MAAM,UAAU,sBAAsB;EACpC,GAAG;EACH,QAAQ;GACN,GAAG,4BAA4B;GAC/B,GAAG,WAAW,iBAAiB,IAAI,CACjC;IACE,KAAK;IACL,gBAAgB;IAChB,UAAU;GACZ,CACF,IAAI,CAAC;GACL,EACE,QAAQ,UACV;GAEA,GAAG;GACH,GAAG;GACH,GAAG,oBAAoB,SAAS,UAAU,OAAO,SAAS,GAAG;IAC3D,OAAO,EAAE,aAAa,OAAO,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS;GAC1D,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG;IACjB,OAAO;KACL,KAAK,EAAE;KACP,MAAM,GAAG,iBAAiB,CAAC,KAAK,IAAI,GAAG,OAAO,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,SAAS,QAAQ;MACtF,IAAI,CAAC,GAAG,KAAK;MACb,OAAO,GAAG,EAAE,IAAI;KAClB,CAAC,CAAC,CAAC,KAAK,GAAG;IACb;GACF,CAAC;EACH;CACF,CAAC;CACD,cAAc,KAAK,uCAAuC,sBAAsB;AAClF"}
1
+ {"version":3,"file":"buildVercelOutputDirectory.native.js","names":[],"sources":["esm/vercel/build/buildVercelOutputDirectory.native.js"],"sourcesContent":["import { join, resolve } from \"path\";\nimport FSExtra from \"fs-extra\";\nimport { isMatching, P } from \"ts-pattern\";\nimport { vercelBuildOutputConfigBase } from \"./config/vc-build-output-config-base\";\nimport { serverlessVercelPackageJson } from \"./config/vc-package-base\";\nimport { createApiServerlessFunction } from \"./generate/createApiServerlessFunction\";\nimport { createSsrServerlessFunction } from \"./generate/createSsrServerlessFunction\";\nimport { getPathFromRoute } from \"./getPathFromRoute\";\nvar { copy, ensureDir, existsSync, remove, writeJSON } = FSExtra;\nasync function moveAllFiles(src, dest) {\n try {\n await copy(src, dest, {\n overwrite: true,\n errorOnExist: false\n });\n } catch (err) {\n console.error(\"Error moving files:\", err);\n }\n}\nfunction getMiddlewaresByNamedRegex(buildInfoForWriting) {\n var outDir = buildInfoForWriting.outDir || \"dist\";\n var prefix = `${outDir}/middlewares/`;\n return buildInfoForWriting.manifest.allRoutes.filter(function(r) {\n return r.middlewares && r.middlewares.length > 0;\n }).map(function(r) {\n return [\n r.namedRegex,\n r.middlewares.map(function(m) {\n return m.contextKey.startsWith(prefix) ? m.contextKey.substring(prefix.length) : m.contextKey;\n })\n ];\n }).sort(function(a, b) {\n return b[0].length - a[0].length;\n });\n}\nvar buildVercelOutputDirectory = async function buildVercelOutputDirectory2(param) {\n var { apiOutput, buildInfoForWriting, clientDir, oneOptionsRoot, postBuildLogs } = param;\n var outDir = buildInfoForWriting.outDir || \"dist\";\n var vercelOutputDir = resolve(join(oneOptionsRoot, \".vercel/output\"));\n if (existsSync(vercelOutputDir)) {\n await remove(vercelOutputDir);\n }\n var { routeToBuildInfo } = buildInfoForWriting;\n if (apiOutput) {\n var _ref;\n var compiltedApiRoutes = ((_ref = apiOutput === null || apiOutput === void 0 ? void 0 : apiOutput.output) !== null && _ref !== void 0 ? _ref : []).filter(function(o) {\n return isMatching({\n code: P.string,\n facadeModuleId: P.string\n }, o);\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = async function() {\n var route2 = _step.value;\n var compiledRoute = compiltedApiRoutes.find(function(compiled) {\n var flag = compiled.facadeModuleId.includes(route2.file.replace(\"./\", \"\"));\n return flag;\n });\n if (compiledRoute) {\n postBuildLogs.push(`[one.build][vercel] generating serverless function for apiRoute ${route2.page}`);\n await createApiServerlessFunction(route2, compiledRoute.code, oneOptionsRoot, postBuildLogs, outDir);\n } else {\n console.warn(\"\\n \\u{1F528}[one.build][vercel] apiRoute missing code compilation for\", route2.file);\n }\n };\n for (var _iterator = buildInfoForWriting.manifest.apiRoutes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) await _loop();\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var vercelOutputFunctionsDir = join(oneOptionsRoot, \".vercel/output/functions\");\n await ensureDir(vercelOutputFunctionsDir);\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = buildInfoForWriting.manifest.pageRoutes[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var route = _step1.value;\n switch (route.type) {\n case \"ssr\": {\n var builtPageRoute = routeToBuildInfo[route.file];\n if (builtPageRoute) {\n postBuildLogs.push(`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`);\n await createSsrServerlessFunction(route, buildInfoForWriting, oneOptionsRoot, postBuildLogs);\n }\n break;\n }\n default:\n break;\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 var distMiddlewareDir = resolve(join(oneOptionsRoot, outDir, \"middlewares\"));\n if (existsSync(distMiddlewareDir)) {\n var vercelMiddlewareDir = resolve(join(oneOptionsRoot, \".vercel/output/functions/_middleware.func\"));\n await ensureDir(vercelMiddlewareDir);\n postBuildLogs.push(`[one.build][vercel] copying middlewares from ${distMiddlewareDir} to ${vercelMiddlewareDir}`);\n await moveAllFiles(resolve(join(oneOptionsRoot, outDir, \"middlewares\")), vercelMiddlewareDir);\n var vercelMiddlewarePackageJsonFilePath = resolve(join(vercelMiddlewareDir, \"package.json\"));\n postBuildLogs.push(`[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`);\n await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson);\n var wrappedMiddlewareEntryPointFilename = \"_wrapped_middleware.js\";\n var wrappedMiddlewareEntryPointPath = resolve(join(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename));\n var middlewaresByNamedRegex = getMiddlewaresByNamedRegex(buildInfoForWriting);\n var middlewaresToVariableNameMap = middlewaresByNamedRegex.reduce(function(acc, param2) {\n var [namedRegex, middlewares] = param2;\n ;\n (Array.isArray(middlewares) ? middlewares : [\n middlewares\n ]).forEach(function(middleware) {\n var middlewareVariableName = middleware.replace(/\\.[a-z]+$/, \"\").replaceAll(\"/\", \"_\");\n acc[middleware] = middlewareVariableName;\n });\n return acc;\n }, {});\n await FSExtra.writeFile(wrappedMiddlewareEntryPointPath, `\nconst middlewaresByNamedRegex = ${JSON.stringify(middlewaresByNamedRegex)}\n${Object.entries(middlewaresToVariableNameMap).map(function(param2) {\n var [path, variableName] = param2;\n return `import ${variableName} from './${path}'`;\n }).join(\"\\n\")}\n\nfunction getMiddleware(path) {\n switch (path){\n ${Object.entries(middlewaresToVariableNameMap).map(function(param2) {\n var [path, variableName] = param2;\n return `case '${path}': return ${variableName}`;\n }).join(\"\\n\")}\n default: return null\n }\n}\n\nconst next = (e) => {\n const t = new Headers(null == e ? void 0 : e.headers)\n t.set('x-middleware-next', '1')\n return new Response(null, { ...e, headers: t })\n}\n\nconst wrappedMiddlewareFunction = (request, event) => {\n const url = new URL(request.url)\n const pathname = url.pathname\n \n // Find matching middlewares for this request\n const matchingMiddlewares = [...middlewaresByNamedRegex\n .filter(([namedRegex]) => new RegExp(namedRegex).test(pathname))\n .reduce((prev, current) => prev.length > current[1]?.length ? prev : current[1], [])];\n \n // Import and execute the middleware function\n const boundNext = () => {\n if (matchingMiddlewares.length === 0) {\n return next(request)\n }\n \n const middleware = getMiddleware(matchingMiddlewares.shift())\n return middleware ? middleware({request, event, next: boundNext}) : next(request)\n };\n return boundNext()\n}\n\nexport { wrappedMiddlewareFunction as default }\n `);\n var middlewareVercelConfigFilePath = resolve(join(vercelMiddlewareDir, \".vc-config.json\"));\n postBuildLogs.push(`[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`);\n await writeJSON(middlewareVercelConfigFilePath, {\n runtime: \"edge\",\n // Seems that middlewares only work with edge runtime\n entrypoint: wrappedMiddlewareEntryPointFilename\n });\n }\n var vercelOutputStaticDir = resolve(join(oneOptionsRoot, \".vercel/output/static\"));\n await ensureDir(vercelOutputStaticDir);\n postBuildLogs.push(`[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`);\n await moveAllFiles(clientDir, vercelOutputStaticDir);\n var ssrLoaderRoutes = buildInfoForWriting.manifest.pageRoutes.filter(function(r) {\n return r.type === \"ssr\";\n }).map(function(r) {\n var pagePath = getPathFromRoute(r) || \"/\";\n var cleanPath = pagePath.slice(1).replace(/\\//g, \"_\");\n var paramPattern = /\\[(?:\\.\\.\\.)?(\\w+)\\]/g;\n var loaderPattern = cleanPath.replace(paramPattern, \"(?<$1>[^_]+)\");\n var src = `^/assets/${loaderPattern}(?:_refetch_\\\\d+)?_\\\\d+_vxrn_loader\\\\.js$`;\n var dest = `${pagePath}?__loader=1`;\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = cleanPath.matchAll(paramPattern)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var [, paramName] = _step2.value;\n dest += `&${paramName}=$${paramName}`;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return {\n src,\n dest\n };\n });\n var spaRoutes = buildInfoForWriting.manifest.pageRoutes.filter(function(route2) {\n return route2.type === \"spa\" && !route2.isNotFound;\n }).flatMap(function(route2) {\n var _routeToBuildInfo_route_file;\n var htmlPath = (_routeToBuildInfo_route_file = routeToBuildInfo[route2.file]) === null || _routeToBuildInfo_route_file === void 0 ? void 0 : _routeToBuildInfo_route_file.htmlPath;\n return htmlPath ? [\n {\n src: route2.namedRegex,\n dest: htmlPath\n }\n ] : [];\n });\n var vercelConfigFilePath = resolve(join(oneOptionsRoot, \".vercel/output\", \"config.json\"));\n await writeJSON(vercelConfigFilePath, {\n ...vercelBuildOutputConfigBase,\n routes: [\n ...vercelBuildOutputConfigBase.routes,\n ...existsSync(distMiddlewareDir) ? [\n {\n src: \"/(.*)\",\n middlewarePath: \"_middleware\",\n continue: true\n }\n ] : [],\n {\n handle: \"rewrite\"\n },\n // SSR loader routes must come before dynamic page routes\n ...ssrLoaderRoutes,\n ...spaRoutes,\n ...buildInfoForWriting.manifest.allRoutes.filter(function(r) {\n return r.routeKeys && Object.keys(r.routeKeys).length > 0;\n }).map(function(r) {\n return {\n src: r.namedRegex,\n dest: `${getPathFromRoute(r) || \"/\"}?${Object.entries(r.routeKeys).map(function(param2) {\n var [k, v] = param2;\n return `${k}=$${v}`;\n }).join(\"&\")}`\n };\n })\n ]\n });\n postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);\n};\nexport {\n buildVercelOutputDirectory\n};\n//# sourceMappingURL=buildVercelOutputDirectory.js.map\n"],"mappings":"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"}
@@ -69,11 +69,14 @@ async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, pos
69
69
  headers: new Headers(req.headers || {}),
70
70
  });
71
71
 
72
- // Reconstruct the original path by replacing :param placeholders with actual values
73
- // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)
72
+ // Reconstruct the original path by replacing [param] placeholders with actual values
73
+ // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)
74
74
  let originalPath = url.pathname;
75
75
  for (const [key, value] of Object.entries(routeParams)) {
76
- originalPath = originalPath.replace(\`:\${key}\`, String(value));
76
+ originalPath = originalPath.replace(
77
+ new RegExp(\`(\\\\[|%5B)(\\\\.\\\\.\\\\.)?\${key}(\\\\]|%5D)\`, 'i'),
78
+ () => (Array.isArray(value) ? value.join('/') : value)
79
+ );
77
80
  }
78
81
 
79
82
  const host = url.hostname;
@@ -1 +1 @@
1
- {"version":3,"file":"createSsrServerlessFunction.js","names":[],"sources":["esm/vercel/build/generate/createSsrServerlessFunction.js"],"sourcesContent":["import { join, resolve } from \"node:path\";\nimport fs from \"fs-extra\";\nimport { serverlessVercelNodeJsConfig } from \"../config/vc-config-base\";\nimport { serverlessVercelPackageJson } from \"../config/vc-package-base\";\nimport { getPathFromRoute } from \"../getPathFromRoute\";\nasync function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {\n try {\n const path = getPathFromRoute(route, { includeIndex: true });\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);\n const buildInfoAsString = JSON.stringify(buildInfo);\n const funcFolder = resolve(\n join(oneOptionsRoot, `.vercel/output/functions/${path}.func`)\n );\n await fs.ensureDir(funcFolder);\n const outDir = buildInfo.outDir || \"dist\";\n const distServerFrom = resolve(join(oneOptionsRoot, outDir, \"server\"));\n const distServerTo = resolve(join(funcFolder, \"server\"));\n await fs.ensureDir(distServerTo);\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`\n );\n await fs.copy(distServerFrom, distServerTo);\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json`\n );\n await fs.writeFile(\n join(funcFolder, \"buildInfo.js\"),\n `export default ${buildInfoAsString}`\n );\n await fs.ensureDir(join(funcFolder, \"entrypoint\"));\n const entrypointFilePath = resolve(join(funcFolder, \"entrypoint\", \"index.js\"));\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`\n );\n await fs.writeFile(\n entrypointFilePath,\n `\n const buildInfoConfig = await import('../buildInfo.js');\n const entry = await import('../server/_virtual_one-entry.js');\n const routeFile = ${JSON.stringify(route.file)}\n\n const handler = async (req, res) => {\n // console.debug(\"req.url\", req.url);\n const url = new URL(req.url, \\`https://\\${process.env.VERCEL_URL}\\`);\n\n // Check if this is a loader request (routed here by config.json rewrite)\n const isLoaderRequest = url.searchParams.get('__loader') === '1';\n\n // Extract route params - from URL path match OR from query params (for loader requests)\n const routePattern = ${JSON.stringify(route.page)};\n const paramNames = [];\n const regexPattern = routePattern\n .replace(/\\\\[\\\\.\\\\.\\\\.(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: true }); return '(.+)'; })\n .replace(/\\\\[(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: false }); return '([^/]+)'; });\n\n const routeParams = {};\n\n // First try to get params from query string (set by Vercel rewrite rules)\n // This handles both loader requests and regular page requests that went through rewrites\n for (const param of paramNames) {\n const value = url.searchParams.get(param.name);\n if (value) {\n routeParams[param.name] = param.catch ? value.split('/') : value;\n }\n }\n\n // If no params found in query string, try extracting from URL path\n if (Object.keys(routeParams).length === 0) {\n const match = url.pathname.match(new RegExp(\\`^\\${regexPattern}$\\`));\n if (match) {\n paramNames.forEach((param, index) => {\n const value = match[index + 1];\n routeParams[param.name] = param.catch ? value.split('/') : value;\n });\n }\n }\n\n // Create a proper Request object for SSR loaders\n const request = new Request(url.toString(), {\n method: req.method || 'GET',\n headers: new Headers(req.headers || {}),\n });\n\n // Reconstruct the original path by replacing :param placeholders with actual values\n // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)\n let originalPath = url.pathname;\n for (const [key, value] of Object.entries(routeParams)) {\n originalPath = originalPath.replace(\\`:\\${key}\\`, String(value));\n }\n\n const host = url.hostname;\n let subdomain;\n if (host && host !== 'localhost' && !/^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$/.test(host)) {\n const parts = host.split('.');\n if (parts.length >= 3) subdomain = parts.slice(0, -2).join('.');\n }\n\n const loaderProps = {\n path: originalPath,\n params: routeParams,\n subdomain,\n request,\n }\n\n const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';\n // const routeFile = \\`.\\${url.pathname}\\${postfix}\\`;\n let route = buildInfoConfig.default.routeToBuildInfo[routeFile];\n\n // If we cannot find the route by direct match, try to find it by looking it up in the\n // pathToRoute mapping. Currently this handles cases such as \"(some-group)/index.tsx\",\n // \"index.web.tsx\".\n if (!route) {\n const routeName = buildInfoConfig.default.pathToRoute[url.pathname];\n route = buildInfoConfig.default.routeToBuildInfo[routeName];\n }\n\n const exported = await import(route.serverJsPath.replace('${outDir}/','../'))\n const loaderData = await exported.loader?.(loaderProps)\n\n // For loader requests, return the loader data as a JavaScript module\n if (isLoaderRequest) {\n res.setHeader('Content-Type', 'application/javascript; charset=utf-8')\n res.setHeader('Cache-Control', 'no-store')\n res.end(\\`export function loader() { return \\${JSON.stringify(loaderData)} }\\`)\n return\n }\n\n // For page requests, render the full HTML\n const render = entry.default.render;\n const preloads = route.preloads\n const css = route.css || []\n const rendered = await render({\n mode: route.type,\n loaderData,\n loaderProps,\n path: loaderProps?.path || '/',\n preloads,\n css,\n })\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n // https://vercel.com/docs/deployments/skew-protection#supported-frameworks__\n if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {\n res.setHeader('Set-Cookie', [\n \\`__vdpl=\\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\\`,\n ]);\n }\n res.end(rendered)\n }\n\n export default handler;\n `\n );\n const packageJsonFilePath = resolve(join(funcFolder, \"package.json\"));\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`\n );\n await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson);\n const vcConfigFilePath = resolve(join(funcFolder, \".vc-config.json\"));\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`\n );\n return fs.writeJson(vcConfigFilePath, {\n ...serverlessVercelNodeJsConfig,\n handler: \"entrypoint/index.js\",\n environment: {\n ...serverlessVercelNodeJsConfig.environment,\n ONE_DEFAULT_RENDER_MODE: \"ssr\"\n }\n });\n } catch (e) {\n console.error(\n `[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`,\n e\n );\n }\n}\nexport {\n createSsrServerlessFunction\n};\n//# sourceMappingURL=createSsrServerlessFunction.js.map\n"],"mappings":";;;;;;;AAKA,eAAe,4BAA4B,OAAO,WAAW,gBAAgB,eAAe;CAC1F,IAAI;EACF,MAAM,OAAO,iBAAiB,OAAO,EAAE,cAAc,KAAK,CAAC;EAC3D,cAAc,KAAK,yDAAyD,MAAM;EAClF,MAAM,oBAAoB,KAAK,UAAU,SAAS;EAClD,MAAM,aAAa,QACjB,KAAK,gBAAgB,4BAA4B,KAAK,MAAM,CAC9D;EACA,MAAM,GAAG,UAAU,UAAU;EAC7B,MAAM,SAAS,UAAU,UAAU;EACnC,MAAM,iBAAiB,QAAQ,KAAK,gBAAgB,QAAQ,QAAQ,CAAC;EACrE,MAAM,eAAe,QAAQ,KAAK,YAAY,QAAQ,CAAC;EACvD,MAAM,GAAG,UAAU,YAAY;EAC/B,cAAc,KACZ,+EAA+E,eAAe,MAAM,cACtG;EACA,MAAM,GAAG,KAAK,gBAAgB,YAAY;EAC1C,cAAc,KACZ,wEACF;EACA,MAAM,GAAG,UACP,KAAK,YAAY,cAAc,GAC/B,kBAAkB,mBACpB;EACA,MAAM,GAAG,UAAU,KAAK,YAAY,YAAY,CAAC;EACjD,MAAM,qBAAqB,QAAQ,KAAK,YAAY,cAAc,UAAU,CAAC;EAC7E,cAAc,KACZ,yEAAyE,oBAC3E;EACA,MAAM,GAAG,UACP,oBACA;;;sBAGgB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;2BAUtB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAmEU,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCnE;EACA,MAAM,sBAAsB,QAAQ,KAAK,YAAY,cAAc,CAAC;EACpE,cAAc,KACZ,2EAA2E,qBAC7E;EACA,MAAM,GAAG,UAAU,qBAAqB,2BAA2B;EACnE,MAAM,mBAAmB,QAAQ,KAAK,YAAY,iBAAiB,CAAC;EACpE,cAAc,KACZ,8EAA8E,kBAChF;EACA,OAAO,GAAG,UAAU,kBAAkB;GACpC,GAAG;GACH,SAAS;GACT,aAAa;IACX,GAAG,6BAA6B;IAChC,yBAAyB;GAC3B;EACF,CAAC;CACH,SAAS,GAAG;EACV,QAAQ,MACN,+EAA+E,MAAM,QACrF,CACF;CACF;AACF"}
1
+ {"version":3,"file":"createSsrServerlessFunction.js","names":[],"sources":["esm/vercel/build/generate/createSsrServerlessFunction.js"],"sourcesContent":["import { join, resolve } from \"node:path\";\nimport fs from \"fs-extra\";\nimport { serverlessVercelNodeJsConfig } from \"../config/vc-config-base\";\nimport { serverlessVercelPackageJson } from \"../config/vc-package-base\";\nimport { getPathFromRoute } from \"../getPathFromRoute\";\nasync function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {\n try {\n const path = getPathFromRoute(route, { includeIndex: true });\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);\n const buildInfoAsString = JSON.stringify(buildInfo);\n const funcFolder = resolve(\n join(oneOptionsRoot, `.vercel/output/functions/${path}.func`)\n );\n await fs.ensureDir(funcFolder);\n const outDir = buildInfo.outDir || \"dist\";\n const distServerFrom = resolve(join(oneOptionsRoot, outDir, \"server\"));\n const distServerTo = resolve(join(funcFolder, \"server\"));\n await fs.ensureDir(distServerTo);\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`\n );\n await fs.copy(distServerFrom, distServerTo);\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json`\n );\n await fs.writeFile(\n join(funcFolder, \"buildInfo.js\"),\n `export default ${buildInfoAsString}`\n );\n await fs.ensureDir(join(funcFolder, \"entrypoint\"));\n const entrypointFilePath = resolve(join(funcFolder, \"entrypoint\", \"index.js\"));\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`\n );\n await fs.writeFile(\n entrypointFilePath,\n `\n const buildInfoConfig = await import('../buildInfo.js');\n const entry = await import('../server/_virtual_one-entry.js');\n const routeFile = ${JSON.stringify(route.file)}\n\n const handler = async (req, res) => {\n // console.debug(\"req.url\", req.url);\n const url = new URL(req.url, \\`https://\\${process.env.VERCEL_URL}\\`);\n\n // Check if this is a loader request (routed here by config.json rewrite)\n const isLoaderRequest = url.searchParams.get('__loader') === '1';\n\n // Extract route params - from URL path match OR from query params (for loader requests)\n const routePattern = ${JSON.stringify(route.page)};\n const paramNames = [];\n const regexPattern = routePattern\n .replace(/\\\\[\\\\.\\\\.\\\\.(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: true }); return '(.+)'; })\n .replace(/\\\\[(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: false }); return '([^/]+)'; });\n\n const routeParams = {};\n\n // First try to get params from query string (set by Vercel rewrite rules)\n // This handles both loader requests and regular page requests that went through rewrites\n for (const param of paramNames) {\n const value = url.searchParams.get(param.name);\n if (value) {\n routeParams[param.name] = param.catch ? value.split('/') : value;\n }\n }\n\n // If no params found in query string, try extracting from URL path\n if (Object.keys(routeParams).length === 0) {\n const match = url.pathname.match(new RegExp(\\`^\\${regexPattern}$\\`));\n if (match) {\n paramNames.forEach((param, index) => {\n const value = match[index + 1];\n routeParams[param.name] = param.catch ? value.split('/') : value;\n });\n }\n }\n\n // Create a proper Request object for SSR loaders\n const request = new Request(url.toString(), {\n method: req.method || 'GET',\n headers: new Headers(req.headers || {}),\n });\n\n // Reconstruct the original path by replacing [param] placeholders with actual values\n // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)\n let originalPath = url.pathname;\n for (const [key, value] of Object.entries(routeParams)) {\n originalPath = originalPath.replace(\n new RegExp(\\`(\\\\\\\\[|%5B)(\\\\\\\\.\\\\\\\\.\\\\\\\\.)?\\${key}(\\\\\\\\]|%5D)\\`, 'i'),\n () => (Array.isArray(value) ? value.join('/') : value)\n );\n }\n\n const host = url.hostname;\n let subdomain;\n if (host && host !== 'localhost' && !/^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$/.test(host)) {\n const parts = host.split('.');\n if (parts.length >= 3) subdomain = parts.slice(0, -2).join('.');\n }\n\n const loaderProps = {\n path: originalPath,\n params: routeParams,\n subdomain,\n request,\n }\n\n const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';\n // const routeFile = \\`.\\${url.pathname}\\${postfix}\\`;\n let route = buildInfoConfig.default.routeToBuildInfo[routeFile];\n\n // If we cannot find the route by direct match, try to find it by looking it up in the\n // pathToRoute mapping. Currently this handles cases such as \"(some-group)/index.tsx\",\n // \"index.web.tsx\".\n if (!route) {\n const routeName = buildInfoConfig.default.pathToRoute[url.pathname];\n route = buildInfoConfig.default.routeToBuildInfo[routeName];\n }\n\n const exported = await import(route.serverJsPath.replace('${outDir}/','../'))\n const loaderData = await exported.loader?.(loaderProps)\n\n // For loader requests, return the loader data as a JavaScript module\n if (isLoaderRequest) {\n res.setHeader('Content-Type', 'application/javascript; charset=utf-8')\n res.setHeader('Cache-Control', 'no-store')\n res.end(\\`export function loader() { return \\${JSON.stringify(loaderData)} }\\`)\n return\n }\n\n // For page requests, render the full HTML\n const render = entry.default.render;\n const preloads = route.preloads\n const css = route.css || []\n const rendered = await render({\n mode: route.type,\n loaderData,\n loaderProps,\n path: loaderProps?.path || '/',\n preloads,\n css,\n })\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n // https://vercel.com/docs/deployments/skew-protection#supported-frameworks__\n if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {\n res.setHeader('Set-Cookie', [\n \\`__vdpl=\\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\\`,\n ]);\n }\n res.end(rendered)\n }\n\n export default handler;\n `\n );\n const packageJsonFilePath = resolve(join(funcFolder, \"package.json\"));\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`\n );\n await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson);\n const vcConfigFilePath = resolve(join(funcFolder, \".vc-config.json\"));\n postBuildLogs.push(\n `[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`\n );\n return fs.writeJson(vcConfigFilePath, {\n ...serverlessVercelNodeJsConfig,\n handler: \"entrypoint/index.js\",\n environment: {\n ...serverlessVercelNodeJsConfig.environment,\n ONE_DEFAULT_RENDER_MODE: \"ssr\"\n }\n });\n } catch (e) {\n console.error(\n `[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`,\n e\n );\n }\n}\nexport {\n createSsrServerlessFunction\n};\n//# sourceMappingURL=createSsrServerlessFunction.js.map\n"],"mappings":";;;;;;;AAKA,eAAe,4BAA4B,OAAO,WAAW,gBAAgB,eAAe;CAC1F,IAAI;EACF,MAAM,OAAO,iBAAiB,OAAO,EAAE,cAAc,KAAK,CAAC;EAC3D,cAAc,KAAK,yDAAyD,MAAM;EAClF,MAAM,oBAAoB,KAAK,UAAU,SAAS;EAClD,MAAM,aAAa,QACjB,KAAK,gBAAgB,4BAA4B,KAAK,MAAM,CAC9D;EACA,MAAM,GAAG,UAAU,UAAU;EAC7B,MAAM,SAAS,UAAU,UAAU;EACnC,MAAM,iBAAiB,QAAQ,KAAK,gBAAgB,QAAQ,QAAQ,CAAC;EACrE,MAAM,eAAe,QAAQ,KAAK,YAAY,QAAQ,CAAC;EACvD,MAAM,GAAG,UAAU,YAAY;EAC/B,cAAc,KACZ,+EAA+E,eAAe,MAAM,cACtG;EACA,MAAM,GAAG,KAAK,gBAAgB,YAAY;EAC1C,cAAc,KACZ,wEACF;EACA,MAAM,GAAG,UACP,KAAK,YAAY,cAAc,GAC/B,kBAAkB,mBACpB;EACA,MAAM,GAAG,UAAU,KAAK,YAAY,YAAY,CAAC;EACjD,MAAM,qBAAqB,QAAQ,KAAK,YAAY,cAAc,UAAU,CAAC;EAC7E,cAAc,KACZ,yEAAyE,oBAC3E;EACA,MAAM,GAAG,UACP,oBACA;;;sBAGgB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;2BAUtB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAsEU,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCnE;EACA,MAAM,sBAAsB,QAAQ,KAAK,YAAY,cAAc,CAAC;EACpE,cAAc,KACZ,2EAA2E,qBAC7E;EACA,MAAM,GAAG,UAAU,qBAAqB,2BAA2B;EACnE,MAAM,mBAAmB,QAAQ,KAAK,YAAY,iBAAiB,CAAC;EACpE,cAAc,KACZ,8EAA8E,kBAChF;EACA,OAAO,GAAG,UAAU,kBAAkB;GACpC,GAAG;GACH,SAAS;GACT,aAAa;IACX,GAAG,6BAA6B;IAChC,yBAAyB;GAC3B;EACF,CAAC;CACH,SAAS,GAAG;EACV,QAAQ,MACN,+EAA+E,MAAM,QACrF,CACF;CACF;AACF"}
@@ -69,11 +69,14 @@ async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, pos
69
69
  headers: new Headers(req.headers || {}),
70
70
  });
71
71
 
72
- // Reconstruct the original path by replacing :param placeholders with actual values
73
- // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)
72
+ // Reconstruct the original path by replacing [param] placeholders with actual values
73
+ // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)
74
74
  let originalPath = url.pathname;
75
75
  for (const [key, value] of Object.entries(routeParams)) {
76
- originalPath = originalPath.replace(\`:\${key}\`, String(value));
76
+ originalPath = originalPath.replace(
77
+ new RegExp(\`(\\\\[|%5B)(\\\\.\\\\.\\\\.)?\${key}(\\\\]|%5D)\`, 'i'),
78
+ () => (Array.isArray(value) ? value.join('/') : value)
79
+ );
77
80
  }
78
81
 
79
82
  const host = url.hostname;
@@ -1 +1 @@
1
- {"version":3,"file":"createSsrServerlessFunction.native.js","names":[],"sources":["esm/vercel/build/generate/createSsrServerlessFunction.native.js"],"sourcesContent":["import { join, resolve } from \"path\";\nimport fs from \"fs-extra\";\nimport { serverlessVercelNodeJsConfig } from \"../config/vc-config-base\";\nimport { serverlessVercelPackageJson } from \"../config/vc-package-base\";\nimport { getPathFromRoute } from \"../getPathFromRoute\";\nasync function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {\n try {\n var path = getPathFromRoute(route, {\n includeIndex: true\n });\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);\n var buildInfoAsString = JSON.stringify(buildInfo);\n var funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${path}.func`));\n await fs.ensureDir(funcFolder);\n var outDir = buildInfo.outDir || \"dist\";\n var distServerFrom = resolve(join(oneOptionsRoot, outDir, \"server\"));\n var distServerTo = resolve(join(funcFolder, \"server\"));\n await fs.ensureDir(distServerTo);\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`);\n await fs.copy(distServerFrom, distServerTo);\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json`);\n await fs.writeFile(join(funcFolder, \"buildInfo.js\"), `export default ${buildInfoAsString}`);\n await fs.ensureDir(join(funcFolder, \"entrypoint\"));\n var entrypointFilePath = resolve(join(funcFolder, \"entrypoint\", \"index.js\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`);\n await fs.writeFile(entrypointFilePath, `\n const buildInfoConfig = await import('../buildInfo.js');\n const entry = await import('../server/_virtual_one-entry.js');\n const routeFile = ${JSON.stringify(route.file)}\n\n const handler = async (req, res) => {\n // console.debug(\"req.url\", req.url);\n const url = new URL(req.url, \\`https://\\${process.env.VERCEL_URL}\\`);\n\n // Check if this is a loader request (routed here by config.json rewrite)\n const isLoaderRequest = url.searchParams.get('__loader') === '1';\n\n // Extract route params - from URL path match OR from query params (for loader requests)\n const routePattern = ${JSON.stringify(route.page)};\n const paramNames = [];\n const regexPattern = routePattern\n .replace(/\\\\[\\\\.\\\\.\\\\.(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: true }); return '(.+)'; })\n .replace(/\\\\[(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: false }); return '([^/]+)'; });\n\n const routeParams = {};\n\n // First try to get params from query string (set by Vercel rewrite rules)\n // This handles both loader requests and regular page requests that went through rewrites\n for (const param of paramNames) {\n const value = url.searchParams.get(param.name);\n if (value) {\n routeParams[param.name] = param.catch ? value.split('/') : value;\n }\n }\n\n // If no params found in query string, try extracting from URL path\n if (Object.keys(routeParams).length === 0) {\n const match = url.pathname.match(new RegExp(\\`^\\${regexPattern}$\\`));\n if (match) {\n paramNames.forEach((param, index) => {\n const value = match[index + 1];\n routeParams[param.name] = param.catch ? value.split('/') : value;\n });\n }\n }\n\n // Create a proper Request object for SSR loaders\n const request = new Request(url.toString(), {\n method: req.method || 'GET',\n headers: new Headers(req.headers || {}),\n });\n\n // Reconstruct the original path by replacing :param placeholders with actual values\n // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)\n let originalPath = url.pathname;\n for (const [key, value] of Object.entries(routeParams)) {\n originalPath = originalPath.replace(\\`:\\${key}\\`, String(value));\n }\n\n const host = url.hostname;\n let subdomain;\n if (host && host !== 'localhost' && !/^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$/.test(host)) {\n const parts = host.split('.');\n if (parts.length >= 3) subdomain = parts.slice(0, -2).join('.');\n }\n\n const loaderProps = {\n path: originalPath,\n params: routeParams,\n subdomain,\n request,\n }\n\n const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';\n // const routeFile = \\`.\\${url.pathname}\\${postfix}\\`;\n let route = buildInfoConfig.default.routeToBuildInfo[routeFile];\n\n // If we cannot find the route by direct match, try to find it by looking it up in the\n // pathToRoute mapping. Currently this handles cases such as \"(some-group)/index.tsx\",\n // \"index.web.tsx\".\n if (!route) {\n const routeName = buildInfoConfig.default.pathToRoute[url.pathname];\n route = buildInfoConfig.default.routeToBuildInfo[routeName];\n }\n\n const exported = await import(route.serverJsPath.replace('${outDir}/','../'))\n const loaderData = await exported.loader?.(loaderProps)\n\n // For loader requests, return the loader data as a JavaScript module\n if (isLoaderRequest) {\n res.setHeader('Content-Type', 'application/javascript; charset=utf-8')\n res.setHeader('Cache-Control', 'no-store')\n res.end(\\`export function loader() { return \\${JSON.stringify(loaderData)} }\\`)\n return\n }\n\n // For page requests, render the full HTML\n const render = entry.default.render;\n const preloads = route.preloads\n const css = route.css || []\n const rendered = await render({\n mode: route.type,\n loaderData,\n loaderProps,\n path: loaderProps?.path || '/',\n preloads,\n css,\n })\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n // https://vercel.com/docs/deployments/skew-protection#supported-frameworks__\n if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {\n res.setHeader('Set-Cookie', [\n \\`__vdpl=\\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\\`,\n ]);\n }\n res.end(rendered)\n }\n\n export default handler;\n `);\n var packageJsonFilePath = resolve(join(funcFolder, \"package.json\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`);\n await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson);\n var vcConfigFilePath = resolve(join(funcFolder, \".vc-config.json\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`);\n return fs.writeJson(vcConfigFilePath, {\n ...serverlessVercelNodeJsConfig,\n handler: \"entrypoint/index.js\",\n environment: {\n ...serverlessVercelNodeJsConfig.environment,\n ONE_DEFAULT_RENDER_MODE: \"ssr\"\n }\n });\n } catch (e) {\n console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);\n }\n}\nexport {\n createSsrServerlessFunction\n};\n//# sourceMappingURL=createSsrServerlessFunction.js.map\n"],"mappings":";;;;;;;AAKA,eAAe,4BAA4B,OAAO,WAAW,gBAAgB,eAAe;CAC1F,IAAI;EACF,IAAI,OAAO,iBAAiB,OAAO,EACjC,cAAc,KAChB,CAAC;EACD,cAAc,KAAK,yDAAyD,MAAM;EAClF,IAAI,oBAAoB,KAAK,UAAU,SAAS;EAChD,IAAI,aAAa,QAAQ,KAAK,gBAAgB,4BAA4B,KAAK,MAAM,CAAC;EACtF,MAAM,GAAG,UAAU,UAAU;EAC7B,IAAI,SAAS,UAAU,UAAU;EACjC,IAAI,iBAAiB,QAAQ,KAAK,gBAAgB,QAAQ,QAAQ,CAAC;EACnE,IAAI,eAAe,QAAQ,KAAK,YAAY,QAAQ,CAAC;EACrD,MAAM,GAAG,UAAU,YAAY;EAC/B,cAAc,KAAK,+EAA+E,eAAe,MAAM,cAAc;EACrI,MAAM,GAAG,KAAK,gBAAgB,YAAY;EAC1C,cAAc,KAAK,wEAAwE;EAC3F,MAAM,GAAG,UAAU,KAAK,YAAY,cAAc,GAAG,kBAAkB,mBAAmB;EAC1F,MAAM,GAAG,UAAU,KAAK,YAAY,YAAY,CAAC;EACjD,IAAI,qBAAqB,QAAQ,KAAK,YAAY,cAAc,UAAU,CAAC;EAC3E,cAAc,KAAK,yEAAyE,oBAAoB;EAChH,MAAM,GAAG,UAAU,oBAAoB;;;sBAGrB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;2BAUtB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAmEU,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCpE;EACC,IAAI,sBAAsB,QAAQ,KAAK,YAAY,cAAc,CAAC;EAClE,cAAc,KAAK,2EAA2E,qBAAqB;EACnH,MAAM,GAAG,UAAU,qBAAqB,2BAA2B;EACnE,IAAI,mBAAmB,QAAQ,KAAK,YAAY,iBAAiB,CAAC;EAClE,cAAc,KAAK,8EAA8E,kBAAkB;EACnH,OAAO,GAAG,UAAU,kBAAkB;GACpC,GAAG;GACH,SAAS;GACT,aAAa;IACX,GAAG,6BAA6B;IAChC,yBAAyB;GAC3B;EACF,CAAC;CACH,SAAS,GAAG;EACV,QAAQ,MAAM,+EAA+E,MAAM,QAAQ,CAAC;CAC9G;AACF"}
1
+ {"version":3,"file":"createSsrServerlessFunction.native.js","names":[],"sources":["esm/vercel/build/generate/createSsrServerlessFunction.native.js"],"sourcesContent":["import { join, resolve } from \"path\";\nimport fs from \"fs-extra\";\nimport { serverlessVercelNodeJsConfig } from \"../config/vc-config-base\";\nimport { serverlessVercelPackageJson } from \"../config/vc-package-base\";\nimport { getPathFromRoute } from \"../getPathFromRoute\";\nasync function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {\n try {\n var path = getPathFromRoute(route, {\n includeIndex: true\n });\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);\n var buildInfoAsString = JSON.stringify(buildInfo);\n var funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${path}.func`));\n await fs.ensureDir(funcFolder);\n var outDir = buildInfo.outDir || \"dist\";\n var distServerFrom = resolve(join(oneOptionsRoot, outDir, \"server\"));\n var distServerTo = resolve(join(funcFolder, \"server\"));\n await fs.ensureDir(distServerTo);\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`);\n await fs.copy(distServerFrom, distServerTo);\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json`);\n await fs.writeFile(join(funcFolder, \"buildInfo.js\"), `export default ${buildInfoAsString}`);\n await fs.ensureDir(join(funcFolder, \"entrypoint\"));\n var entrypointFilePath = resolve(join(funcFolder, \"entrypoint\", \"index.js\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`);\n await fs.writeFile(entrypointFilePath, `\n const buildInfoConfig = await import('../buildInfo.js');\n const entry = await import('../server/_virtual_one-entry.js');\n const routeFile = ${JSON.stringify(route.file)}\n\n const handler = async (req, res) => {\n // console.debug(\"req.url\", req.url);\n const url = new URL(req.url, \\`https://\\${process.env.VERCEL_URL}\\`);\n\n // Check if this is a loader request (routed here by config.json rewrite)\n const isLoaderRequest = url.searchParams.get('__loader') === '1';\n\n // Extract route params - from URL path match OR from query params (for loader requests)\n const routePattern = ${JSON.stringify(route.page)};\n const paramNames = [];\n const regexPattern = routePattern\n .replace(/\\\\[\\\\.\\\\.\\\\.(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: true }); return '(.+)'; })\n .replace(/\\\\[(\\\\w+)\\\\]/g, (_, name) => { paramNames.push({ name, catch: false }); return '([^/]+)'; });\n\n const routeParams = {};\n\n // First try to get params from query string (set by Vercel rewrite rules)\n // This handles both loader requests and regular page requests that went through rewrites\n for (const param of paramNames) {\n const value = url.searchParams.get(param.name);\n if (value) {\n routeParams[param.name] = param.catch ? value.split('/') : value;\n }\n }\n\n // If no params found in query string, try extracting from URL path\n if (Object.keys(routeParams).length === 0) {\n const match = url.pathname.match(new RegExp(\\`^\\${regexPattern}$\\`));\n if (match) {\n paramNames.forEach((param, index) => {\n const value = match[index + 1];\n routeParams[param.name] = param.catch ? value.split('/') : value;\n });\n }\n }\n\n // Create a proper Request object for SSR loaders\n const request = new Request(url.toString(), {\n method: req.method || 'GET',\n headers: new Headers(req.headers || {}),\n });\n\n // Reconstruct the original path by replacing [param] placeholders with actual values\n // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)\n let originalPath = url.pathname;\n for (const [key, value] of Object.entries(routeParams)) {\n originalPath = originalPath.replace(\n new RegExp(\\`(\\\\\\\\[|%5B)(\\\\\\\\.\\\\\\\\.\\\\\\\\.)?\\${key}(\\\\\\\\]|%5D)\\`, 'i'),\n () => (Array.isArray(value) ? value.join('/') : value)\n );\n }\n\n const host = url.hostname;\n let subdomain;\n if (host && host !== 'localhost' && !/^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$/.test(host)) {\n const parts = host.split('.');\n if (parts.length >= 3) subdomain = parts.slice(0, -2).join('.');\n }\n\n const loaderProps = {\n path: originalPath,\n params: routeParams,\n subdomain,\n request,\n }\n\n const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';\n // const routeFile = \\`.\\${url.pathname}\\${postfix}\\`;\n let route = buildInfoConfig.default.routeToBuildInfo[routeFile];\n\n // If we cannot find the route by direct match, try to find it by looking it up in the\n // pathToRoute mapping. Currently this handles cases such as \"(some-group)/index.tsx\",\n // \"index.web.tsx\".\n if (!route) {\n const routeName = buildInfoConfig.default.pathToRoute[url.pathname];\n route = buildInfoConfig.default.routeToBuildInfo[routeName];\n }\n\n const exported = await import(route.serverJsPath.replace('${outDir}/','../'))\n const loaderData = await exported.loader?.(loaderProps)\n\n // For loader requests, return the loader data as a JavaScript module\n if (isLoaderRequest) {\n res.setHeader('Content-Type', 'application/javascript; charset=utf-8')\n res.setHeader('Cache-Control', 'no-store')\n res.end(\\`export function loader() { return \\${JSON.stringify(loaderData)} }\\`)\n return\n }\n\n // For page requests, render the full HTML\n const render = entry.default.render;\n const preloads = route.preloads\n const css = route.css || []\n const rendered = await render({\n mode: route.type,\n loaderData,\n loaderProps,\n path: loaderProps?.path || '/',\n preloads,\n css,\n })\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n // https://vercel.com/docs/deployments/skew-protection#supported-frameworks__\n if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {\n res.setHeader('Set-Cookie', [\n \\`__vdpl=\\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\\`,\n ]);\n }\n res.end(rendered)\n }\n\n export default handler;\n `);\n var packageJsonFilePath = resolve(join(funcFolder, \"package.json\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`);\n await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson);\n var vcConfigFilePath = resolve(join(funcFolder, \".vc-config.json\"));\n postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`);\n return fs.writeJson(vcConfigFilePath, {\n ...serverlessVercelNodeJsConfig,\n handler: \"entrypoint/index.js\",\n environment: {\n ...serverlessVercelNodeJsConfig.environment,\n ONE_DEFAULT_RENDER_MODE: \"ssr\"\n }\n });\n } catch (e) {\n console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);\n }\n}\nexport {\n createSsrServerlessFunction\n};\n//# sourceMappingURL=createSsrServerlessFunction.js.map\n"],"mappings":";;;;;;;AAKA,eAAe,4BAA4B,OAAO,WAAW,gBAAgB,eAAe;CAC1F,IAAI;EACF,IAAI,OAAO,iBAAiB,OAAO,EACjC,cAAc,KAChB,CAAC;EACD,cAAc,KAAK,yDAAyD,MAAM;EAClF,IAAI,oBAAoB,KAAK,UAAU,SAAS;EAChD,IAAI,aAAa,QAAQ,KAAK,gBAAgB,4BAA4B,KAAK,MAAM,CAAC;EACtF,MAAM,GAAG,UAAU,UAAU;EAC7B,IAAI,SAAS,UAAU,UAAU;EACjC,IAAI,iBAAiB,QAAQ,KAAK,gBAAgB,QAAQ,QAAQ,CAAC;EACnE,IAAI,eAAe,QAAQ,KAAK,YAAY,QAAQ,CAAC;EACrD,MAAM,GAAG,UAAU,YAAY;EAC/B,cAAc,KAAK,+EAA+E,eAAe,MAAM,cAAc;EACrI,MAAM,GAAG,KAAK,gBAAgB,YAAY;EAC1C,cAAc,KAAK,wEAAwE;EAC3F,MAAM,GAAG,UAAU,KAAK,YAAY,cAAc,GAAG,kBAAkB,mBAAmB;EAC1F,MAAM,GAAG,UAAU,KAAK,YAAY,YAAY,CAAC;EACjD,IAAI,qBAAqB,QAAQ,KAAK,YAAY,cAAc,UAAU,CAAC;EAC3E,cAAc,KAAK,yEAAyE,oBAAoB;EAChH,MAAM,GAAG,UAAU,oBAAoB;;;sBAGrB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;2BAUtB,KAAK,UAAU,MAAM,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAsEU,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCpE;EACC,IAAI,sBAAsB,QAAQ,KAAK,YAAY,cAAc,CAAC;EAClE,cAAc,KAAK,2EAA2E,qBAAqB;EACnH,MAAM,GAAG,UAAU,qBAAqB,2BAA2B;EACnE,IAAI,mBAAmB,QAAQ,KAAK,YAAY,iBAAiB,CAAC;EAClE,cAAc,KAAK,8EAA8E,kBAAkB;EACnH,OAAO,GAAG,UAAU,kBAAkB;GACpC,GAAG;GACH,SAAS;GACT,aAAa;IACX,GAAG,6BAA6B;IAChC,yBAAyB;GAC3B;EACF,CAAC;CACH,SAAS,GAAG;EACV,QAAQ,MAAM,+EAA+E,MAAM,QAAQ,CAAC;CAC9G;AACF"}
@@ -1,7 +1,12 @@
1
1
  import { getPathnameFromFilePath } from "../../utils/getPathnameFromFilePath.mjs";
2
2
 
3
3
  function getPathFromRoute(route, options = {}) {
4
- return getPathnameFromFilePath(route.file, {}, false, {
4
+ const params = {};
5
+ for (const [param, inner] of route.file.matchAll(/\[([^\]]+)\]/g)) {
6
+ params[inner] = param;
7
+ params[inner.replace(/^\.\.\./, "")] = param;
8
+ }
9
+ return getPathnameFromFilePath(route.file, params, false, {
5
10
  ...options,
6
11
  preserveExtensions: true
7
12
  }).replace(/^\.\//, "/").replace(/\/+$/, "");
@@ -1 +1 @@
1
- {"version":3,"file":"getPathFromRoute.js","names":[],"sources":["esm/vercel/build/getPathFromRoute.js"],"sourcesContent":["import { getPathnameFromFilePath } from \"../../utils/getPathnameFromFilePath\";\nfunction getPathFromRoute(route, options = {}) {\n return getPathnameFromFilePath(route.file, {}, false, {\n ...options,\n preserveExtensions: true\n }).replace(/^\\.\\//, \"/\").replace(/\\/+$/, \"\");\n}\nexport {\n getPathFromRoute\n};\n//# sourceMappingURL=getPathFromRoute.js.map\n"],"mappings":";;;AACA,SAAS,iBAAiB,OAAO,UAAU,CAAC,GAAG;CAC7C,OAAO,wBAAwB,MAAM,MAAM,CAAC,GAAG,OAAO;EACpD,GAAG;EACH,oBAAoB;CACtB,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,QAAQ,QAAQ,EAAE;AAC7C"}
1
+ {"version":3,"file":"getPathFromRoute.js","names":[],"sources":["esm/vercel/build/getPathFromRoute.js"],"sourcesContent":["import { getPathnameFromFilePath } from \"../../utils/getPathnameFromFilePath\";\nfunction getPathFromRoute(route, options = {}) {\n const params = {};\n for (const [param, inner] of route.file.matchAll(/\\[([^\\]]+)\\]/g)) {\n params[inner] = param;\n params[inner.replace(/^\\.\\.\\./, \"\")] = param;\n }\n return getPathnameFromFilePath(route.file, params, false, {\n ...options,\n preserveExtensions: true\n }).replace(/^\\.\\//, \"/\").replace(/\\/+$/, \"\");\n}\nexport {\n getPathFromRoute\n};\n//# sourceMappingURL=getPathFromRoute.js.map\n"],"mappings":";;;AACA,SAAS,iBAAiB,OAAO,UAAU,CAAC,GAAG;CAC7C,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,CAAC,OAAO,UAAU,MAAM,KAAK,SAAS,eAAe,GAAG;EACjE,OAAO,SAAS;EAChB,OAAO,MAAM,QAAQ,WAAW,EAAE,KAAK;CACzC;CACA,OAAO,wBAAwB,MAAM,MAAM,QAAQ,OAAO;EACxD,GAAG;EACH,oBAAoB;CACtB,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,QAAQ,QAAQ,EAAE;AAC7C"}
@@ -2,7 +2,29 @@ import { getPathnameFromFilePath } from "../../utils/getPathnameFromFilePath.nat
2
2
 
3
3
  function getPathFromRoute(route) {
4
4
  var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
5
- return getPathnameFromFilePath(route.file, {}, false, {
5
+ var params = {};
6
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
7
+ try {
8
+ for (var _iterator = route.file.matchAll(/\[([^\]]+)\]/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
9
+ var [param, inner] = _step.value;
10
+ params[inner] = param;
11
+ params[inner.replace(/^\.\.\./, "")] = param;
12
+ }
13
+ } catch (err) {
14
+ _didIteratorError = true;
15
+ _iteratorError = err;
16
+ } finally {
17
+ try {
18
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
19
+ _iterator.return();
20
+ }
21
+ } finally {
22
+ if (_didIteratorError) {
23
+ throw _iteratorError;
24
+ }
25
+ }
26
+ }
27
+ return getPathnameFromFilePath(route.file, params, false, {
6
28
  ...options,
7
29
  preserveExtensions: true
8
30
  }).replace(/^\.\//, "/").replace(/\/+$/, "");
@@ -1 +1 @@
1
- {"version":3,"file":"getPathFromRoute.native.js","names":[],"sources":["esm/vercel/build/getPathFromRoute.native.js"],"sourcesContent":["import { getPathnameFromFilePath } from \"../../utils/getPathnameFromFilePath\";\nfunction getPathFromRoute(route) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n return getPathnameFromFilePath(route.file, {}, false, {\n ...options,\n preserveExtensions: true\n }).replace(/^\\.\\//, \"/\").replace(/\\/+$/, \"\");\n}\nexport {\n getPathFromRoute\n};\n//# sourceMappingURL=getPathFromRoute.js.map\n"],"mappings":";;;AACA,SAAS,iBAAiB,OAAO;CAC/B,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;CAChF,OAAO,wBAAwB,MAAM,MAAM,CAAC,GAAG,OAAO;EACpD,GAAG;EACH,oBAAoB;CACtB,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,QAAQ,QAAQ,EAAE;AAC7C"}
1
+ {"version":3,"file":"getPathFromRoute.native.js","names":[],"sources":["esm/vercel/build/getPathFromRoute.native.js"],"sourcesContent":["import { getPathnameFromFilePath } from \"../../utils/getPathnameFromFilePath\";\nfunction getPathFromRoute(route) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var params = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = route.file.matchAll(/\\[([^\\]]+)\\]/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [param, inner] = _step.value;\n params[inner] = param;\n params[inner.replace(/^\\.\\.\\./, \"\")] = param;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return getPathnameFromFilePath(route.file, params, false, {\n ...options,\n preserveExtensions: true\n }).replace(/^\\.\\//, \"/\").replace(/\\/+$/, \"\");\n}\nexport {\n getPathFromRoute\n};\n//# sourceMappingURL=getPathFromRoute.js.map\n"],"mappings":";;;AACA,SAAS,iBAAiB,OAAO;CAC/B,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;CAChF,IAAI,SAAS,CAAC;CACd,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,KAAK,IAAI,YAAY,MAAM,KAAK,SAAS,eAAe,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;GACrL,IAAI,CAAC,OAAO,SAAS,MAAM;GAC3B,OAAO,SAAS;GAChB,OAAO,MAAM,QAAQ,WAAW,EAAE,KAAK;EACzC;CACF,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,OAAO,wBAAwB,MAAM,MAAM,QAAQ,OAAO;EACxD,GAAG;EACH,oBAAoB;CACtB,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,QAAQ,QAAQ,EAAE;AAC7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "2.7.0",
3
+ "version": "2.7.1",
4
4
  "description": "One is a React framework for web, iOS, and Android apps.",
5
5
  "license": "BSD-3-Clause",
6
6
  "sideEffects": [
@@ -236,18 +236,18 @@
236
236
  "@react-navigation/native-stack": "8.0.0-alpha.59",
237
237
  "@react-navigation/routers": "8.0.0-alpha.21",
238
238
  "@ungap/structured-clone": "^1.2.0",
239
- "@vxrn/color-scheme": "2.7.0",
240
- "@vxrn/compiler": "2.7.0",
241
- "@vxrn/resolve": "2.7.0",
242
- "@vxrn/tslib-lite": "2.7.0",
243
- "@vxrn/use-isomorphic-layout-effect": "2.7.0",
244
- "@vxrn/utils": "2.7.0",
245
- "@vxrn/vite-plugin-metro": "2.7.0",
239
+ "@vxrn/color-scheme": "2.7.1",
240
+ "@vxrn/compiler": "2.7.1",
241
+ "@vxrn/resolve": "2.7.1",
242
+ "@vxrn/tslib-lite": "2.7.1",
243
+ "@vxrn/use-isomorphic-layout-effect": "2.7.1",
244
+ "@vxrn/utils": "2.7.1",
245
+ "@vxrn/vite-plugin-metro": "2.7.1",
246
246
  "babel-dead-code-elimination": "1.0.10",
247
247
  "babel-plugin-module-resolver": "^5.0.2",
248
248
  "citty": "^0.1.6",
249
249
  "core-js": "^3.38.1",
250
- "create-vxrn": "2.7.0",
250
+ "create-vxrn": "2.7.1",
251
251
  "escape-string-regexp": "^5.0.0",
252
252
  "fast-deep-equal": "^3.1.3",
253
253
  "fast-glob": "^3.3.3",
@@ -269,7 +269,7 @@
269
269
  "tsconfig-paths": "^4",
270
270
  "use-latest-callback": "^0.2.3",
271
271
  "vite": "^8.2.2",
272
- "vxrn": "2.7.0",
272
+ "vxrn": "2.7.1",
273
273
  "web-streams-polyfill": "^4.3.0",
274
274
  "ws": "^8.21.0",
275
275
  "xxhashjs": "^0.2.2"
@@ -337,7 +337,7 @@
337
337
  "@types/react-dom": "^19.2.2",
338
338
  "@types/react-test-renderer": "^19.1.0",
339
339
  "@types/xxhashjs": "^0.2.4",
340
- "@vxrn/emitter": "2.7.0",
340
+ "@vxrn/emitter": "2.7.1",
341
341
  "depcheck": "^1.4.7",
342
342
  "esbuild": "^0.25.12",
343
343
  "immer": "^10.1.1",
@@ -513,7 +513,7 @@
513
513
  }
514
514
  }
515
515
  },
516
- "releaseSourceCommit": "c3cd8830a7de8c60de78420b946a6ee56ef01ea0",
516
+ "releaseSourceCommit": "6ef95da2c405283333f006f28f09fff8591f2ae4",
517
517
  "repository": {
518
518
  "type": "git",
519
519
  "url": "git+https://github.com/onejs/one.git",
@@ -233,14 +233,15 @@ export { wrappedMiddlewareFunction as default }
233
233
  const pagePath = getPathFromRoute(r) || '/'
234
234
  // Convert page path to loader asset pattern
235
235
  // /ssr-page -> ssr-page
236
- // /dynamic/:id -> dynamic_:id (getPathFromRoute converts [id] to :id)
236
+ // /dynamic/[id] -> dynamic_[id]
237
237
  const cleanPath = pagePath.slice(1).replace(/\//g, '_')
238
+ const paramPattern = /\[(?:\.\.\.)?(\w+)\]/g
238
239
 
239
240
  // Build regex pattern for the loader asset
240
- // Replace :param with capture groups for dynamic segments
241
- // The loader URL pattern uses the actual param value, not :param
241
+ // Replace [param] with capture groups for dynamic segments
242
+ // The loader URL pattern uses the actual param value, not [param]
242
243
  // e.g., /dynamic/123 -> /assets/dynamic_123_12345_vxrn_loader.js
243
- const loaderPattern = cleanPath.replace(/:([^_]+)/g, '(?<$1>[^_]+)')
244
+ const loaderPattern = cleanPath.replace(paramPattern, '(?<$1>[^_]+)')
244
245
 
245
246
  // Match the loader file pattern: {path}_{cacheKey}_vxrn_loader.js
246
247
  // Also handle _refetch_ pattern for cache busting
@@ -248,12 +249,8 @@ export { wrappedMiddlewareFunction as default }
248
249
 
249
250
  // Build destination with captured params
250
251
  let dest = `${pagePath}?__loader=1`
251
- const paramMatches = cleanPath.match(/:([^_]+)/g)
252
- if (paramMatches) {
253
- for (const match of paramMatches) {
254
- const paramName = match.slice(1) // remove leading :
255
- dest += `&${paramName}=$${paramName}`
256
- }
252
+ for (const [, paramName] of cleanPath.matchAll(paramPattern)) {
253
+ dest += `&${paramName}=$${paramName}`
257
254
  }
258
255
 
259
256
  return { src, dest }
@@ -94,11 +94,14 @@ export async function createSsrServerlessFunction(
94
94
  headers: new Headers(req.headers || {}),
95
95
  });
96
96
 
97
- // Reconstruct the original path by replacing :param placeholders with actual values
98
- // The pathname might be the rewritten path (e.g., /dynamic/:id instead of /dynamic/123)
97
+ // Reconstruct the original path by replacing [param] placeholders with actual values
98
+ // The pathname might be the rewritten path (e.g., /dynamic/[id] instead of /dynamic/123)
99
99
  let originalPath = url.pathname;
100
100
  for (const [key, value] of Object.entries(routeParams)) {
101
- originalPath = originalPath.replace(\`:$\{key}\`, String(value));
101
+ originalPath = originalPath.replace(
102
+ new RegExp(\`(\\\\[|%5B)(\\\\.\\\\.\\\\.)?$\{key}(\\\\]|%5D)\`, 'i'),
103
+ () => (Array.isArray(value) ? value.join('/') : value)
104
+ );
102
105
  }
103
106
 
104
107
  const host = url.hostname;
@@ -1,11 +1,20 @@
1
1
  import { getPathnameFromFilePath } from '../../utils/getPathnameFromFilePath'
2
2
  import type { RouteInfo } from '../../vite/types'
3
3
 
4
+ // the path of a route's function folder and of the rewrites that point at it. vercel
5
+ // reads no param syntax from the folder (config.json rewrites do the matching), so
6
+ // params stay as written ([id], [...slug]): windows can't create `:` or `*` in a path
4
7
  export function getPathFromRoute(
5
8
  route: RouteInfo<string>,
6
9
  options: { includeIndex?: boolean } = {}
7
10
  ) {
8
- return getPathnameFromFilePath(route.file, {}, false, {
11
+ const params: Record<string, string> = {}
12
+ for (const [param, inner] of route.file.matchAll(/\[([^\]]+)\]/g)) {
13
+ // getPathnameFromFilePath looks up a catch-all as ...slug in dirnames, slug in file names
14
+ params[inner] = param
15
+ params[inner.replace(/^\.\.\./, '')] = param
16
+ }
17
+ return getPathnameFromFilePath(route.file, params, false, {
9
18
  ...options,
10
19
  preserveExtensions: true,
11
20
  })
@@ -1 +1 @@
1
- {"version":3,"file":"buildVercelOutputDirectory.d.ts","sourceRoot":"","sources":["../../../src/vercel/build/buildVercelOutputDirectory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAkC3C,eAAO,MAAM,0BAA0B,kFAMpC;IACD,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,mBAAmB,EAAE,GAAG,CAAC,SAAS,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,kBA0PA,CAAA"}
1
+ {"version":3,"file":"buildVercelOutputDirectory.d.ts","sourceRoot":"","sources":["../../../src/vercel/build/buildVercelOutputDirectory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAkC3C,eAAO,MAAM,0BAA0B,kFAMpC;IACD,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,mBAAmB,EAAE,GAAG,CAAC,SAAS,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,kBAuPA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createSsrServerlessFunction.d.ts","sourceRoot":"","sources":["../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAOzD,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EACxB,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EAAE,iBAmLxB"}
1
+ {"version":3,"file":"createSsrServerlessFunction.d.ts","sourceRoot":"","sources":["../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAOzD,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EACxB,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EAAE,iBAsLxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPathFromRoute.d.ts","sourceRoot":"","sources":["../../../src/vercel/build/getPathFromRoute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EACxB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,UAQzC"}
1
+ {"version":3,"file":"getPathFromRoute.d.ts","sourceRoot":"","sources":["../../../src/vercel/build/getPathFromRoute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKjD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EACxB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,UAczC"}