one 2.7.0 → 2.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +4 -7
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.cjs +16 -19
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +16 -19
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.cjs +6 -3
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.cjs +6 -3
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js +6 -3
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
- package/dist/cjs/vercel/build/getPathFromRoute.cjs +6 -1
- package/dist/cjs/vercel/build/getPathFromRoute.native.cjs +23 -1
- package/dist/cjs/vercel/build/getPathFromRoute.native.js +23 -1
- package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +4 -7
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +16 -19
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs +6 -3
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs.map +1 -1
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js +6 -3
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
- package/dist/esm/vercel/build/getPathFromRoute.mjs +6 -1
- package/dist/esm/vercel/build/getPathFromRoute.mjs.map +1 -1
- package/dist/esm/vercel/build/getPathFromRoute.native.js +23 -1
- package/dist/esm/vercel/build/getPathFromRoute.native.js.map +1 -1
- package/package.json +12 -12
- package/src/vercel/build/buildVercelOutputDirectory.ts +7 -10
- package/src/vercel/build/generate/createSsrServerlessFunction.ts +6 -3
- package/src/vercel/build/getPathFromRoute.ts +10 -1
- package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -1
- package/types/vercel/build/generate/createSsrServerlessFunction.d.ts.map +1 -1
- 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
|
|
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
|
|
172
|
-
|
|
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
|
|
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
|
|
230
|
-
|
|
231
|
-
var
|
|
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
|
-
|
|
234
|
-
|
|
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
|
-
|
|
243
|
-
|
|
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
|
|
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
|
|
230
|
-
|
|
231
|
-
var
|
|
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
|
-
|
|
234
|
-
|
|
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
|
-
|
|
243
|
-
|
|
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
|
|
101
|
-
// The pathname might be the rewritten path (e.g., /dynamic
|
|
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(
|
|
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
|
|
103
|
-
// The pathname might be the rewritten path (e.g., /dynamic
|
|
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(
|
|
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
|
|
103
|
-
// The pathname might be the rewritten path (e.g., /dynamic
|
|
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(
|
|
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":"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"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
|
144
|
-
|
|
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":";;;;;;;;;;AAQA,MAAM,EAAE,MAAM,WAAW,YAAY,QAAQ,cAAc;AAC3D,eAAe,aAAa,KAAK,MAAM;CACrC,IAAI;EACF,MAAM,KAAK,KAAK,MAAM;GAAE,WAAW;GAAM,cAAc;EAAM,CAAC;CAChE,SAAS,KAAK;EACZ,QAAQ,MAAM,uBAAuB,GAAG;CAC1C;AACF;AACA,SAAS,2BAA2B,qBAAqB;CACvD,MAAM,SAAS,oBAAoB,UAAU;CAC7C,MAAM,SAAS,GAAG,OAAO;CACzB,OAAO,oBAAoB,SAAS,UAAU,QAAQ,MAAM,EAAE,eAAe,EAAE,YAAY,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAChH,EAAE,YACF,EAAE,YAAY,KACX,MAAM,EAAE,WAAW,WAAW,MAAM,IAAI,EAAE,WAAW,UAAU,OAAO,MAAM,IAAI,EAAE,UACrF,CACF,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM;AAC7C;AACA,MAAM,6BAA6B,OAAO,EACxC,WACA,qBACA,WACA,gBACA,oBACI;CACJ,MAAM,SAAS,oBAAoB,UAAU;CAC7C,MAAM,kBAAkB,QAAQ,KAAK,gBAAgB,gBAAgB,CAAC;CACtE,IAAI,WAAW,eAAe,GAAG;EAC/B,MAAM,OAAO,eAAe;CAC9B;CACA,MAAM,EAAE,qBAAqB;CAC7B,IAAI,WAAW;EACb,MAAM,sBAAsB,WAAW,UAAU,CAAC,EAAC,CAAE,QAClD,MAAM,WAAW;GAAE,MAAM,EAAE;GAAQ,gBAAgB,EAAE;EAAO,GAAG,CAAC,CACnE;EACA,KAAK,MAAM,SAAS,oBAAoB,SAAS,WAAW;GAC1D,MAAM,gBAAgB,mBAAmB,MAAM,aAAa;IAC1D,MAAM,OAAO,SAAS,eAAe,SAAS,MAAM,KAAK,QAAQ,MAAM,EAAE,CAAC;IAC1E,OAAO;GACT,CAAC;GACD,IAAI,eAAe;IACjB,cAAc,KACZ,mEAAmE,MAAM,MAC3E;IACA,MAAM,4BACJ,OACA,cAAc,MACd,gBACA,eACA,MACF;GACF,OAAO;IACL,QAAQ,KACN,kEACA,MAAM,IACR;GACF;EACF;CACF;CACA,MAAM,2BAA2B,KAAK,gBAAgB,0BAA0B;CAChF,MAAM,UAAU,wBAAwB;CACxC,KAAK,MAAM,SAAS,oBAAoB,SAAS,YAAY;EAC3D,QAAQ,MAAM,MAAd;GACE,KAAK,OAAO;IACV,MAAM,iBAAiB,iBAAiB,MAAM;IAC9C,IAAI,gBAAgB;KAClB,cAAc,KACZ,wDAAwD,MAAM,KAAK,QAAQ,MAAM,MACnF;KACA,MAAM,4BACJ,OACA,qBACA,gBACA,aACF;IACF;IACA;GACF;GACA,SACE;EACJ;CACF;CACA,MAAM,oBAAoB,QAAQ,KAAK,gBAAgB,QAAQ,aAAa,CAAC;CAC7E,IAAI,WAAW,iBAAiB,GAAG;EACjC,MAAM,sBAAsB,QAC1B,KAAK,gBAAgB,2CAA2C,CAClE;EACA,MAAM,UAAU,mBAAmB;EACnC,cAAc,KACZ,gDAAgD,kBAAkB,MAAM,qBAC1E;EACA,MAAM,aACJ,QAAQ,KAAK,gBAAgB,QAAQ,aAAa,CAAC,GACnD,mBACF;EACA,MAAM,sCAAsC,QAC1C,KAAK,qBAAqB,cAAc,CAC1C;EACA,cAAc,KACZ,+CAA+C,qCACjD;EACA,MAAM,UAAU,qCAAqC,2BAA2B;EAChF,MAAM,sCAAsC;EAC5C,MAAM,kCAAkC,QACtC,KAAK,qBAAqB,mCAAmC,CAC/D;EACA,MAAM,0BAA0B,2BAA2B,mBAAmB;EAC9E,MAAM,+BAA+B,wBAAwB,QAC1D,KAAK,CAAC,YAAY,iBAAiB;GAClC;GACA,CAAC,MAAM,QAAQ,WAAW,IAAI,cAAc,CAAC,WAAW,EAAC,CAAE,SACxD,eAAe;IACd,MAAM,yBAAyB,WAAW,QAAQ,aAAa,EAAE,CAAC,CAAC,WAAW,KAAK,GAAG;IACtF,IAAI,cAAc;GACpB,CACF;GACA,OAAO;EACT,GACA,CAAC,CACH;EACA,MAAM,QAAQ,UACZ,iCACA;kCAC4B,KAAK,UAAU,uBAAuB,EAAE;EACxE,OAAO,QAAQ,4BAA4B,CAAC,CAAC,KAAK,CAAC,MAAM,kBAAkB,UAAU,aAAa,WAAW,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;;;;QAI3H,OAAO,QAAQ,4BAA4B,CAAC,CAAC,KAAK,CAAC,MAAM,kBAAkB,SAAS,KAAK,YAAY,cAAc,CAAC,CAAC,KAAK,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCpI;EACA,MAAM,iCAAiC,QACrC,KAAK,qBAAqB,iBAAiB,CAC7C;EACA,cAAc,KACZ,kDAAkD,gCACpD;EACA,MAAM,UAAU,gCAAgC;GAC9C,SAAS;GAET,YAAY;EACd,CAAC;CACH;CACA,MAAM,wBAAwB,QAAQ,KAAK,gBAAgB,uBAAuB,CAAC;CACnF,MAAM,UAAU,qBAAqB;CACrC,cAAc,KACZ,iDAAiD,UAAU,MAAM,uBACnE;CACA,MAAM,aAAa,WAAW,qBAAqB;CACnD,MAAM,kBAAkB,oBAAoB,SAAS,WAAW,QAAQ,MAAM,EAAE,SAAS,KAAK,CAAC,CAAC,KAAK,MAAM;EACzG,MAAM,WAAW,iBAAiB,CAAC,KAAK;EACxC,MAAM,YAAY,SAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,OAAO,GAAG;EACtD,MAAM,gBAAgB,UAAU,QAAQ,aAAa,cAAc;EACnE,MAAM,MAAM,YAAY,cAAc;EACtC,IAAI,OAAO,GAAG,SAAS;EACvB,MAAM,eAAe,UAAU,MAAM,WAAW;EAChD,IAAI,cAAc;GAChB,KAAK,MAAM,SAAS,cAAc;IAChC,MAAM,YAAY,MAAM,MAAM,CAAC;IAC/B,QAAQ,IAAI,UAAU,IAAI;GAC5B;EACF;EACA,OAAO;GAAE;GAAK;EAAK;CACrB,CAAC;CACD,MAAM,YAAY,oBAAoB,SAAS,WAAW,QAAQ,UAAU,MAAM,SAAS,SAAS,CAAC,MAAM,UAAU,CAAC,CAAC,SAAS,UAAU;EACxI,MAAM,WAAW,iBAAiB,MAAM,KAAK,EAAE;EAC/C,OAAO,WAAW,CAAC;GAAE,KAAK,MAAM;GAAY,MAAM;EAAS,CAAC,IAAI,CAAC;CACnE,CAAC;CACD,MAAM,uBAAuB,QAC3B,KAAK,gBAAgB,kBAAkB,aAAa,CACtD;CACA,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,QAAQ,MAAM,EAAE,aAAa,OAAO,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO;IACtH,KAAK,EAAE;IACP,MAAM,GAAG,iBAAiB,CAAC,KAAK,IAAI,GAAG,OAAO,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG;GAC3G,EAAE;EACJ;CACF,CAAC;CACD,cAAc,KAAK,uCAAuC,sBAAsB;AAClF"}
|
|
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":";;;;;;;;;;AAQA,MAAM,EAAE,MAAM,WAAW,YAAY,QAAQ,cAAc;AAC3D,eAAe,aAAa,KAAK,MAAM;CACrC,IAAI;EACF,MAAM,KAAK,KAAK,MAAM;GAAE,WAAW;GAAM,cAAc;EAAM,CAAC;CAChE,SAAS,KAAK;EACZ,QAAQ,MAAM,uBAAuB,GAAG;CAC1C;AACF;AACA,SAAS,2BAA2B,qBAAqB;CACvD,MAAM,SAAS,oBAAoB,UAAU;CAC7C,MAAM,SAAS,GAAG,OAAO;CACzB,OAAO,oBAAoB,SAAS,UAAU,QAAQ,MAAM,EAAE,eAAe,EAAE,YAAY,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAChH,EAAE,YACF,EAAE,YAAY,KACX,MAAM,EAAE,WAAW,WAAW,MAAM,IAAI,EAAE,WAAW,UAAU,OAAO,MAAM,IAAI,EAAE,UACrF,CACF,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM;AAC7C;AACA,MAAM,6BAA6B,OAAO,EACxC,WACA,qBACA,WACA,gBACA,oBACI;CACJ,MAAM,SAAS,oBAAoB,UAAU;CAC7C,MAAM,kBAAkB,QAAQ,KAAK,gBAAgB,gBAAgB,CAAC;CACtE,IAAI,WAAW,eAAe,GAAG;EAC/B,MAAM,OAAO,eAAe;CAC9B;CACA,MAAM,EAAE,qBAAqB;CAC7B,IAAI,WAAW;EACb,MAAM,sBAAsB,WAAW,UAAU,CAAC,EAAC,CAAE,QAClD,MAAM,WAAW;GAAE,MAAM,EAAE;GAAQ,gBAAgB,EAAE;EAAO,GAAG,CAAC,CACnE;EACA,KAAK,MAAM,SAAS,oBAAoB,SAAS,WAAW;GAC1D,MAAM,gBAAgB,mBAAmB,MAAM,aAAa;IAC1D,MAAM,OAAO,SAAS,eAAe,SAAS,MAAM,KAAK,QAAQ,MAAM,EAAE,CAAC;IAC1E,OAAO;GACT,CAAC;GACD,IAAI,eAAe;IACjB,cAAc,KACZ,mEAAmE,MAAM,MAC3E;IACA,MAAM,4BACJ,OACA,cAAc,MACd,gBACA,eACA,MACF;GACF,OAAO;IACL,QAAQ,KACN,kEACA,MAAM,IACR;GACF;EACF;CACF;CACA,MAAM,2BAA2B,KAAK,gBAAgB,0BAA0B;CAChF,MAAM,UAAU,wBAAwB;CACxC,KAAK,MAAM,SAAS,oBAAoB,SAAS,YAAY;EAC3D,QAAQ,MAAM,MAAd;GACE,KAAK,OAAO;IACV,MAAM,iBAAiB,iBAAiB,MAAM;IAC9C,IAAI,gBAAgB;KAClB,cAAc,KACZ,wDAAwD,MAAM,KAAK,QAAQ,MAAM,MACnF;KACA,MAAM,4BACJ,OACA,qBACA,gBACA,aACF;IACF;IACA;GACF;GACA,SACE;EACJ;CACF;CACA,MAAM,oBAAoB,QAAQ,KAAK,gBAAgB,QAAQ,aAAa,CAAC;CAC7E,IAAI,WAAW,iBAAiB,GAAG;EACjC,MAAM,sBAAsB,QAC1B,KAAK,gBAAgB,2CAA2C,CAClE;EACA,MAAM,UAAU,mBAAmB;EACnC,cAAc,KACZ,gDAAgD,kBAAkB,MAAM,qBAC1E;EACA,MAAM,aACJ,QAAQ,KAAK,gBAAgB,QAAQ,aAAa,CAAC,GACnD,mBACF;EACA,MAAM,sCAAsC,QAC1C,KAAK,qBAAqB,cAAc,CAC1C;EACA,cAAc,KACZ,+CAA+C,qCACjD;EACA,MAAM,UAAU,qCAAqC,2BAA2B;EAChF,MAAM,sCAAsC;EAC5C,MAAM,kCAAkC,QACtC,KAAK,qBAAqB,mCAAmC,CAC/D;EACA,MAAM,0BAA0B,2BAA2B,mBAAmB;EAC9E,MAAM,+BAA+B,wBAAwB,QAC1D,KAAK,CAAC,YAAY,iBAAiB;GAClC;GACA,CAAC,MAAM,QAAQ,WAAW,IAAI,cAAc,CAAC,WAAW,EAAC,CAAE,SACxD,eAAe;IACd,MAAM,yBAAyB,WAAW,QAAQ,aAAa,EAAE,CAAC,CAAC,WAAW,KAAK,GAAG;IACtF,IAAI,cAAc;GACpB,CACF;GACA,OAAO;EACT,GACA,CAAC,CACH;EACA,MAAM,QAAQ,UACZ,iCACA;kCAC4B,KAAK,UAAU,uBAAuB,EAAE;EACxE,OAAO,QAAQ,4BAA4B,CAAC,CAAC,KAAK,CAAC,MAAM,kBAAkB,UAAU,aAAa,WAAW,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;;;;QAI3H,OAAO,QAAQ,4BAA4B,CAAC,CAAC,KAAK,CAAC,MAAM,kBAAkB,SAAS,KAAK,YAAY,cAAc,CAAC,CAAC,KAAK,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCpI;EACA,MAAM,iCAAiC,QACrC,KAAK,qBAAqB,iBAAiB,CAC7C;EACA,cAAc,KACZ,kDAAkD,gCACpD;EACA,MAAM,UAAU,gCAAgC;GAC9C,SAAS;GAET,YAAY;EACd,CAAC;CACH;CACA,MAAM,wBAAwB,QAAQ,KAAK,gBAAgB,uBAAuB,CAAC;CACnF,MAAM,UAAU,qBAAqB;CACrC,cAAc,KACZ,iDAAiD,UAAU,MAAM,uBACnE;CACA,MAAM,aAAa,WAAW,qBAAqB;CACnD,MAAM,kBAAkB,oBAAoB,SAAS,WAAW,QAAQ,MAAM,EAAE,SAAS,KAAK,CAAC,CAAC,KAAK,MAAM;EACzG,MAAM,WAAW,iBAAiB,CAAC,KAAK;EACxC,MAAM,YAAY,SAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,OAAO,GAAG;EACtD,MAAM,eAAe;EACrB,MAAM,gBAAgB,UAAU,QAAQ,cAAc,cAAc;EACpE,MAAM,MAAM,YAAY,cAAc;EACtC,IAAI,OAAO,GAAG,SAAS;EACvB,KAAK,MAAM,GAAG,cAAc,UAAU,SAAS,YAAY,GAAG;GAC5D,QAAQ,IAAI,UAAU,IAAI;EAC5B;EACA,OAAO;GAAE;GAAK;EAAK;CACrB,CAAC;CACD,MAAM,YAAY,oBAAoB,SAAS,WAAW,QAAQ,UAAU,MAAM,SAAS,SAAS,CAAC,MAAM,UAAU,CAAC,CAAC,SAAS,UAAU;EACxI,MAAM,WAAW,iBAAiB,MAAM,KAAK,EAAE;EAC/C,OAAO,WAAW,CAAC;GAAE,KAAK,MAAM;GAAY,MAAM;EAAS,CAAC,IAAI,CAAC;CACnE,CAAC;CACD,MAAM,uBAAuB,QAC3B,KAAK,gBAAgB,kBAAkB,aAAa,CACtD;CACA,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,QAAQ,MAAM,EAAE,aAAa,OAAO,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO;IACtH,KAAK,EAAE;IACP,MAAM,GAAG,iBAAiB,CAAC,KAAK,IAAI,GAAG,OAAO,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG;GAC3G,EAAE;EACJ;CACF,CAAC;CACD,cAAc,KAAK,uCAAuC,sBAAsB;AAClF"}
|
|
@@ -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
|
|
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
|
|
200
|
-
|
|
201
|
-
var
|
|
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
|
-
|
|
204
|
-
|
|
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
|
-
|
|
213
|
-
|
|
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":"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"}
|
|
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
|
|
73
|
-
// The pathname might be the rewritten path (e.g., /dynamic
|
|
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(
|
|
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
|
|
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
|
|
73
|
-
// The pathname might be the rewritten path (e.g., /dynamic
|
|
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(
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
|
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.
|
|
3
|
+
"version": "2.7.2",
|
|
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.
|
|
240
|
-
"@vxrn/compiler": "2.7.
|
|
241
|
-
"@vxrn/resolve": "2.7.
|
|
242
|
-
"@vxrn/tslib-lite": "2.7.
|
|
243
|
-
"@vxrn/use-isomorphic-layout-effect": "2.7.
|
|
244
|
-
"@vxrn/utils": "2.7.
|
|
245
|
-
"@vxrn/vite-plugin-metro": "2.7.
|
|
239
|
+
"@vxrn/color-scheme": "2.7.2",
|
|
240
|
+
"@vxrn/compiler": "2.7.2",
|
|
241
|
+
"@vxrn/resolve": "2.7.2",
|
|
242
|
+
"@vxrn/tslib-lite": "2.7.2",
|
|
243
|
+
"@vxrn/use-isomorphic-layout-effect": "2.7.2",
|
|
244
|
+
"@vxrn/utils": "2.7.2",
|
|
245
|
+
"@vxrn/vite-plugin-metro": "2.7.2",
|
|
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.
|
|
250
|
+
"create-vxrn": "2.7.2",
|
|
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.
|
|
272
|
+
"vxrn": "2.7.2",
|
|
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.
|
|
340
|
+
"@vxrn/emitter": "2.7.2",
|
|
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": "
|
|
516
|
+
"releaseSourceCommit": "660240b2552fe6d8d3903e927907c43ec5e3ba1e",
|
|
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
|
|
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
|
|
241
|
-
// The loader URL pattern uses the actual param value, not
|
|
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(
|
|
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
|
|
252
|
-
|
|
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
|
|
98
|
-
// The pathname might be the rewritten path (e.g., /dynamic
|
|
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(
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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;
|
|
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"}
|