one 1.1.483 → 1.1.484
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cli/build.cjs +5 -41
- package/dist/cjs/cli/build.js +4 -44
- package/dist/cjs/cli/build.js.map +1 -1
- package/dist/cjs/cli/build.native.js +4 -42
- package/dist/cjs/cli/build.native.js.map +2 -2
- package/dist/cjs/server/createRoutesManifest.js.map +1 -1
- package/dist/cjs/server/createRoutesManifest.native.js.map +1 -1
- package/dist/cjs/server/getServerManifest.cjs +15 -7
- package/dist/cjs/server/getServerManifest.js +17 -8
- package/dist/cjs/server/getServerManifest.js.map +1 -1
- package/dist/cjs/server/getServerManifest.native.js +8 -5
- package/dist/cjs/server/getServerManifest.native.js.map +2 -2
- package/dist/cjs/utils/getPathnameFromFilePath.cjs +76 -0
- package/dist/cjs/utils/getPathnameFromFilePath.js +70 -0
- package/dist/cjs/utils/getPathnameFromFilePath.js.map +6 -0
- package/dist/cjs/utils/getPathnameFromFilePath.native.js +73 -0
- package/dist/cjs/utils/getPathnameFromFilePath.native.js.map +6 -0
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +38 -8
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.js +48 -17
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.js.map +1 -1
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +50 -7
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +2 -2
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.cjs +9 -6
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.js +7 -6
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.js.map +1 -1
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js +4 -9
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +2 -2
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.cjs +54 -9
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js +83 -15
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js.map +2 -2
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js +73 -9
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +2 -2
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.cjs +9 -6
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js +8 -6
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js +8 -6
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +2 -2
- package/dist/cjs/vercel/build/getPathFromRoute.cjs +31 -0
- package/dist/cjs/vercel/build/getPathFromRoute.js +24 -0
- package/dist/cjs/vercel/build/getPathFromRoute.js.map +6 -0
- package/dist/cjs/vercel/build/getPathFromRoute.native.js +31 -0
- package/dist/cjs/vercel/build/getPathFromRoute.native.js.map +6 -0
- package/dist/esm/cli/build.js +4 -43
- package/dist/esm/cli/build.js.map +1 -1
- package/dist/esm/cli/build.mjs +4 -40
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +4 -43
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/server/createRoutesManifest.js.map +1 -1
- package/dist/esm/server/createRoutesManifest.mjs.map +1 -1
- package/dist/esm/server/createRoutesManifest.native.js.map +1 -1
- package/dist/esm/server/getServerManifest.js +17 -8
- package/dist/esm/server/getServerManifest.js.map +1 -1
- package/dist/esm/server/getServerManifest.mjs +15 -7
- package/dist/esm/server/getServerManifest.mjs.map +1 -1
- package/dist/esm/server/getServerManifest.native.js +8 -4
- package/dist/esm/server/getServerManifest.native.js.map +1 -1
- package/dist/esm/utils/getPathnameFromFilePath.js +46 -0
- package/dist/esm/utils/getPathnameFromFilePath.js.map +6 -0
- package/dist/esm/utils/getPathnameFromFilePath.mjs +42 -0
- package/dist/esm/utils/getPathnameFromFilePath.mjs.map +1 -0
- package/dist/esm/utils/getPathnameFromFilePath.native.js +45 -0
- package/dist/esm/utils/getPathnameFromFilePath.native.js.map +1 -0
- package/dist/esm/vercel/build/buildVercelOutputDirectory.js +49 -18
- package/dist/esm/vercel/build/buildVercelOutputDirectory.js.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +38 -8
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +45 -8
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.js +7 -6
- package/dist/esm/vercel/build/config/vc-build-output-config-base.js.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs +9 -6
- package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs.map +1 -1
- package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js +3 -6
- package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js.map +1 -1
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.js +88 -13
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.js.map +1 -1
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs +53 -8
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs.map +1 -1
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js +52 -8
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -1
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js +8 -5
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js.map +1 -1
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs +8 -5
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs.map +1 -1
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js +8 -5
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -1
- package/dist/esm/vercel/build/getPathFromRoute.js +8 -0
- package/dist/esm/vercel/build/getPathFromRoute.js.map +6 -0
- package/dist/esm/vercel/build/getPathFromRoute.mjs +8 -0
- package/dist/esm/vercel/build/getPathFromRoute.mjs.map +1 -0
- package/dist/esm/vercel/build/getPathFromRoute.native.js +8 -0
- package/dist/esm/vercel/build/getPathFromRoute.native.js.map +1 -0
- package/package.json +9 -8
- package/src/cli/build.ts +3 -57
- package/src/server/createRoutesManifest.ts +1 -0
- package/src/server/getServerManifest.ts +12 -3
- package/src/utils/getPathnameFromFilePath.ts +62 -0
- package/src/vercel/build/buildVercelOutputDirectory.ts +55 -20
- package/src/vercel/build/config/vc-build-output-config-base.ts +6 -5
- package/src/vercel/build/generate/createApiServerlessFunction.ts +138 -12
- package/src/vercel/build/generate/createSsrServerlessFunction.ts +9 -6
- package/src/vercel/build/getPathFromRoute.ts +8 -0
- package/src/vite/types.ts +1 -0
- package/types/cli/build.d.ts.map +1 -1
- package/types/server/createRoutesManifest.d.ts +1 -0
- package/types/server/createRoutesManifest.d.ts.map +1 -1
- package/types/server/getServerManifest.d.ts +1 -0
- package/types/server/getServerManifest.d.ts.map +1 -1
- package/types/utils/getPathnameFromFilePath.d.ts +4 -0
- package/types/utils/getPathnameFromFilePath.d.ts.map +1 -0
- package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -1
- package/types/vercel/build/config/vc-build-output-config-base.d.ts +2 -5
- package/types/vercel/build/config/vc-build-output-config-base.d.ts.map +1 -1
- package/types/vercel/build/generate/createApiServerlessFunction.d.ts +2 -1
- package/types/vercel/build/generate/createApiServerlessFunction.d.ts.map +1 -1
- package/types/vercel/build/generate/createSsrServerlessFunction.d.ts +2 -2
- package/types/vercel/build/generate/createSsrServerlessFunction.d.ts.map +1 -1
- package/types/vercel/build/getPathFromRoute.d.ts +3 -0
- package/types/vercel/build/getPathFromRoute.d.ts.map +1 -0
- package/types/vite/types.d.ts +1 -0
- package/types/vite/types.d.ts.map +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["join","resolve","FSExtra","isMatching","P","createApiServerlessFunction","createSsrServerlessFunction","
|
1
|
+
{"version":3,"names":["join","resolve","FSExtra","isMatching","P","createApiServerlessFunction","createSsrServerlessFunction","serverlessVercelPackageJson","vercelBuildOutputConfigBase","getPathFromRoute","copy","ensureDir","existsSync","writeJSON","moveAllFiles","src","dest","overwrite","errorOnExist","err","console","error","buildVercelOutputDirectory","apiOutput","buildInfoForWriting","clientDir","oneOptionsRoot","postBuildLogs","routeToBuildInfo","compiltedApiRoutes","output","filter","o","code","string","facadeModuleId","route","manifest","apiRoutes","compiledRoute","find","compiled","includes","file","replace","push","page","warn","vercelOutputFunctionsDir","pageRoutes","type","distMiddlewareDir","vercelMiddlewareDir","vercelMiddlewarePackageJsonFilePath","wrappedMiddlewareEntryPointFilename","wrappedMiddlewareEntryPointPath","writeFile","middlewareVercelConfigFilePath","runtime","entrypoint","vercelOutputStaticDir","vercelConfigFilePath","routes","middlewarePath","continue","handle","allRoutes","r","routeKeys","Object","keys","length","map","namedRegex","entries","k","v"],"sources":["../../../../src/vercel/build/buildVercelOutputDirectory.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
@@ -3,9 +3,9 @@ import FSExtra from "fs-extra";
|
|
3
3
|
import { isMatching, P } from "ts-pattern";
|
4
4
|
import { createApiServerlessFunction } from "./generate/createApiServerlessFunction.native.js";
|
5
5
|
import { createSsrServerlessFunction } from "./generate/createSsrServerlessFunction.native.js";
|
6
|
-
import { serverlessVercelNodeJsConfig } from "./config/vc-config-base.native.js";
|
7
6
|
import { serverlessVercelPackageJson } from "./config/vc-package-base.native.js";
|
8
|
-
import {
|
7
|
+
import { vercelBuildOutputConfigBase } from "./config/vc-build-output-config-base.native.js";
|
8
|
+
import { getPathFromRoute } from "./getPathFromRoute.native.js";
|
9
9
|
var {
|
10
10
|
copy,
|
11
11
|
ensureDir,
|
@@ -51,7 +51,7 @@ var buildVercelOutputDirectory = async function (param) {
|
|
51
51
|
var flag = compiled.facadeModuleId.includes(route2.file.replace("./", ""));
|
52
52
|
return flag;
|
53
53
|
});
|
54
|
-
compiledRoute ? (postBuildLogs.push(`[one.build][vercel] generating serverless function for apiRoute ${route2.page}`), await createApiServerlessFunction(route2
|
54
|
+
compiledRoute ? (postBuildLogs.push(`[one.build][vercel] generating serverless function for apiRoute ${route2.page}`), await createApiServerlessFunction(route2, compiledRoute.code, oneOptionsRoot, postBuildLogs)) : console.warn(`
|
55
55
|
\u{1F528}[one.build][vercel] apiRoute missing code compilation for`, route2.file);
|
56
56
|
}, _iterator = buildInfoForWriting.manifest.apiRoutes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) await _loop();
|
57
57
|
} catch (err) {
|
@@ -76,7 +76,7 @@ var buildVercelOutputDirectory = async function (param) {
|
|
76
76
|
case "ssr":
|
77
77
|
{
|
78
78
|
var builtPageRoute = routeToBuildInfo[route.file];
|
79
|
-
builtPageRoute && (postBuildLogs.push(`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`), await createSsrServerlessFunction(route
|
79
|
+
builtPageRoute && (postBuildLogs.push(`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`), await createSsrServerlessFunction(route, buildInfoForWriting, oneOptionsRoot, postBuildLogs));
|
80
80
|
break;
|
81
81
|
}
|
82
82
|
default:
|
@@ -94,20 +94,57 @@ var buildVercelOutputDirectory = async function (param) {
|
|
94
94
|
}
|
95
95
|
var distMiddlewareDir = resolve(join(oneOptionsRoot, "dist", "middlewares"));
|
96
96
|
if (existsSync(distMiddlewareDir)) {
|
97
|
-
var vercelMiddlewareDir = resolve(join(oneOptionsRoot, ".vercel/output/functions/_middleware"));
|
97
|
+
var vercelMiddlewareDir = resolve(join(oneOptionsRoot, ".vercel/output/functions/_middleware.func"));
|
98
98
|
await ensureDir(vercelMiddlewareDir), postBuildLogs.push(`[one.build][vercel] copying middlewares from ${distMiddlewareDir} to ${vercelMiddlewareDir}`), await moveAllFiles(resolve(join(oneOptionsRoot, "dist", "middlewares")), vercelMiddlewareDir);
|
99
99
|
var vercelMiddlewarePackageJsonFilePath = resolve(join(vercelMiddlewareDir, "index.js"));
|
100
100
|
postBuildLogs.push(`[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`), await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson);
|
101
|
+
var wrappedMiddlewareEntryPointFilename = "_wrapped_middleware.js",
|
102
|
+
wrappedMiddlewareEntryPointPath = resolve(join(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename));
|
103
|
+
await FSExtra.writeFile(wrappedMiddlewareEntryPointPath, `
|
104
|
+
import middlewareFunction from './_middleware.js'
|
105
|
+
|
106
|
+
const next = (e) => {
|
107
|
+
const t = new Headers(null == e ? void 0 : e.headers)
|
108
|
+
t.set('x-middleware-next', '1')
|
109
|
+
return new Response(null, { ...e, headers: t })
|
110
|
+
}
|
111
|
+
|
112
|
+
const wrappedMiddlewareFunction = (request, event) => {
|
113
|
+
return middlewareFunction({ request, event, next })
|
114
|
+
}
|
115
|
+
|
116
|
+
export { wrappedMiddlewareFunction as default }
|
117
|
+
`);
|
101
118
|
var middlewareVercelConfigFilePath = resolve(join(vercelMiddlewareDir, ".vc-config.json"));
|
102
119
|
postBuildLogs.push(`[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`), await writeJSON(middlewareVercelConfigFilePath, {
|
103
|
-
|
104
|
-
|
120
|
+
runtime: "edge",
|
121
|
+
// Seems that middlewares only work with edge runtime
|
122
|
+
entrypoint: wrappedMiddlewareEntryPointFilename
|
105
123
|
});
|
106
124
|
}
|
107
125
|
var vercelOutputStaticDir = resolve(join(oneOptionsRoot, ".vercel/output/static"));
|
108
126
|
await ensureDir(vercelOutputStaticDir), postBuildLogs.push(`[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`), await moveAllFiles(clientDir, vercelOutputStaticDir);
|
109
127
|
var vercelConfigFilePath = resolve(join(oneOptionsRoot, ".vercel/output", "config.json"));
|
110
|
-
await writeJSON(vercelConfigFilePath,
|
128
|
+
await writeJSON(vercelConfigFilePath, {
|
129
|
+
...vercelBuildOutputConfigBase,
|
130
|
+
routes: [...vercelBuildOutputConfigBase.routes, ...(existsSync(distMiddlewareDir) ? [{
|
131
|
+
src: "/(.*)",
|
132
|
+
middlewarePath: "_middleware",
|
133
|
+
continue: !0
|
134
|
+
}] : []), {
|
135
|
+
handle: "rewrite"
|
136
|
+
}, ...buildInfoForWriting.manifest.allRoutes.filter(function (r) {
|
137
|
+
return r.routeKeys && Object.keys(r.routeKeys).length > 0;
|
138
|
+
}).map(function (r) {
|
139
|
+
return {
|
140
|
+
src: r.namedRegex,
|
141
|
+
dest: `${getPathFromRoute(r)}?${Object.entries(r.routeKeys).map(function (param2) {
|
142
|
+
var [k, v] = param2;
|
143
|
+
return `${k}=$${v}`;
|
144
|
+
}).join("&")}`
|
145
|
+
};
|
146
|
+
})]
|
147
|
+
}), postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`);
|
111
148
|
};
|
112
149
|
export { buildVercelOutputDirectory };
|
113
150
|
//# sourceMappingURL=buildVercelOutputDirectory.native.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["join","resolve","FSExtra","isMatching","P","createApiServerlessFunction","createSsrServerlessFunction","
|
1
|
+
{"version":3,"names":["join","resolve","FSExtra","isMatching","P","createApiServerlessFunction","createSsrServerlessFunction","serverlessVercelPackageJson","vercelBuildOutputConfigBase","getPathFromRoute","copy","ensureDir","existsSync","writeJSON","moveAllFiles","src","dest","overwrite","errorOnExist","err","console","error","buildVercelOutputDirectory","param","apiOutput","buildInfoForWriting","clientDir","oneOptionsRoot","postBuildLogs","routeToBuildInfo","_apiOutput_output","compiltedApiRoutes","output","filter","o","code","string","facadeModuleId","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","route2","_step","value","compiledRoute","find","compiled","flag","includes","file","replace","push","page","warn","_iterator","manifest","apiRoutes","Symbol","iterator","next","done","return","vercelOutputFunctionsDir","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","pageRoutes","_step1","route","type","builtPageRoute","distMiddlewareDir","vercelMiddlewareDir","vercelMiddlewarePackageJsonFilePath","wrappedMiddlewareEntryPointFilename","wrappedMiddlewareEntryPointPath","writeFile","middlewareVercelConfigFilePath","runtime","entrypoint","vercelOutputStaticDir","vercelConfigFilePath","routes","middlewarePath","continue","handle","allRoutes","r","routeKeys","Object","keys","length"],"sources":["../../../../src/vercel/build/buildVercelOutputDirectory.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
@@ -1,14 +1,15 @@
|
|
1
|
-
const
|
1
|
+
const vercelBuildOutputConfigBase = {
|
2
2
|
version: 3,
|
3
3
|
// https://vercel.com/docs/build-output-api/v3/configuration#routes
|
4
4
|
routes: [
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
// Not sure if we really need this, but having this seems to break the 'rewrite's we will add to handle dynamic routes.
|
6
|
+
// {
|
7
|
+
// src: '/(.*)',
|
8
|
+
// status: 200,
|
9
|
+
// },
|
9
10
|
]
|
10
11
|
};
|
11
12
|
export {
|
12
|
-
|
13
|
+
vercelBuildOutputConfigBase
|
13
14
|
};
|
14
15
|
//# sourceMappingURL=vc-build-output-config-base.js.map
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
3
|
"sources": ["../../../../../src/vercel/build/config/vc-build-output-config-base.ts"],
|
4
|
-
"mappings": "AAEO,MAAM,
|
4
|
+
"mappings": "AAEO,MAAM,8BAA8B;AAAA,EACzC,SAAS;AAAA;AAAA,EAET,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMR;AACF;",
|
5
5
|
"names": []
|
6
6
|
}
|
@@ -1,10 +1,13 @@
|
|
1
|
-
const
|
1
|
+
const vercelBuildOutputConfigBase = {
|
2
2
|
version: 3,
|
3
3
|
// https://vercel.com/docs/build-output-api/v3/configuration#routes
|
4
|
-
routes: [
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
routes: [
|
5
|
+
// Not sure if we really need this, but having this seems to break the 'rewrite's we will add to handle dynamic routes.
|
6
|
+
// {
|
7
|
+
// src: '/(.*)',
|
8
|
+
// status: 200,
|
9
|
+
// },
|
10
|
+
]
|
8
11
|
};
|
9
|
-
export {
|
12
|
+
export { vercelBuildOutputConfigBase };
|
10
13
|
//# sourceMappingURL=vc-build-output-config-base.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["vercelBuildOutputConfigBase","version","routes"],"sources":["../../../../../src/vercel/build/config/vc-build-output-config-base.ts"],"sourcesContent":[null],"mappings":"AAEO,MAAMA,2BAAA,GAA8B;EACzCC,OAAA,EAAS;EAAA;EAETC,MAAA,EAAQ;IAAA;IAAA;IAAA;IAAA;IAAA;EAAA;AAOV","ignoreList":[]}
|
@@ -1,10 +1,7 @@
|
|
1
|
-
var
|
1
|
+
var vercelBuildOutputConfigBase = {
|
2
2
|
version: 3,
|
3
3
|
// https://vercel.com/docs/build-output-api/v3/configuration#routes
|
4
|
-
routes: [
|
5
|
-
src: "/(.*)",
|
6
|
-
status: 200
|
7
|
-
}]
|
4
|
+
routes: []
|
8
5
|
};
|
9
|
-
export {
|
6
|
+
export { vercelBuildOutputConfigBase };
|
10
7
|
//# sourceMappingURL=vc-build-output-config-base.native.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["vercelBuildOutputConfigBase","version","routes"],"sources":["../../../../../src/vercel/build/config/vc-build-output-config-base.ts"],"sourcesContent":[null],"mappings":"AAEO,IAAAA,2BAAM;EACXC,OAAA,EAAS;EAAA;EAETC,MAAA,EAAQ;AAAA;AAAA,SAAAF,2BAAA","ignoreList":[]}
|
@@ -1,25 +1,36 @@
|
|
1
|
-
import { join, resolve } from "node:path";
|
1
|
+
import { dirname, join, resolve } from "node:path";
|
2
|
+
import FSExtra from "fs-extra";
|
3
|
+
import { resolvePath } from "@vxrn/resolve";
|
4
|
+
import parser from "@babel/parser";
|
5
|
+
import traverse from "@babel/traverse";
|
6
|
+
import t from "@babel/types";
|
7
|
+
import generator from "@babel/generator";
|
2
8
|
import fs from "fs-extra";
|
3
9
|
import { serverlessVercelPackageJson } from "../config/vc-package-base";
|
4
10
|
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base";
|
5
|
-
|
11
|
+
import { getPathFromRoute } from "../getPathFromRoute";
|
12
|
+
async function createApiServerlessFunction(route, code, oneOptionsRoot, postBuildLogs) {
|
6
13
|
try {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
const path = getPathFromRoute(route);
|
15
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${path}`);
|
16
|
+
const funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${path}.func`);
|
17
|
+
if (await fs.ensureDir(funcFolder), code.includes("react")) {
|
18
|
+
postBuildLogs.push(
|
19
|
+
`[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${path}`
|
20
|
+
);
|
21
|
+
const reactPath = dirname(resolvePath("react/package.json", oneOptionsRoot));
|
22
|
+
await fs.copy(resolve(reactPath), resolve(join(funcFolder, "node_modules", "react")));
|
23
|
+
}
|
15
24
|
const distAssetsFolder = resolve(join(funcFolder, "assets"));
|
16
25
|
postBuildLogs.push(
|
17
26
|
`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`
|
18
|
-
)
|
27
|
+
);
|
28
|
+
const sourceAssetsFolder = resolve(join(oneOptionsRoot, "dist", "api", "assets"));
|
29
|
+
await FSExtra.pathExists(sourceAssetsFolder) && await fs.copy(sourceAssetsFolder, distAssetsFolder), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
|
19
30
|
const entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
|
20
31
|
postBuildLogs.push(
|
21
32
|
`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`
|
22
|
-
), await fs.writeFile(entrypointFilePath, code);
|
33
|
+
), await fs.writeFile(entrypointFilePath, wrapHandlerFunctions(code));
|
23
34
|
const packageJsonFilePath = resolve(join(funcFolder, "package.json"));
|
24
35
|
return postBuildLogs.push(
|
25
36
|
`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`
|
@@ -31,11 +42,75 @@ async function createApiServerlessFunction(pageName, code, oneOptionsRoot, postB
|
|
31
42
|
});
|
32
43
|
} catch (e) {
|
33
44
|
console.error(
|
34
|
-
`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${
|
45
|
+
`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`,
|
35
46
|
e
|
36
47
|
);
|
37
48
|
}
|
38
49
|
}
|
50
|
+
function wrapHandlerFunctions(code) {
|
51
|
+
const ast = parser.parse(code, {
|
52
|
+
sourceType: "module"
|
53
|
+
});
|
54
|
+
return traverse.default(ast, {
|
55
|
+
FunctionDeclaration(path) {
|
56
|
+
const { node } = path, functionNamesToHandle = [
|
57
|
+
"GET",
|
58
|
+
"POST",
|
59
|
+
"PUT",
|
60
|
+
"PATCH",
|
61
|
+
"DELETE",
|
62
|
+
"HEAD",
|
63
|
+
"OPTIONS"
|
64
|
+
// TODO: more possibilities?
|
65
|
+
];
|
66
|
+
if (!node.id || !functionNamesToHandle.includes(node.id.name) || node.extra && node.extra.isWrapper || node.extra && node.extra.isWrapped) return;
|
67
|
+
const originalName = `orig_${node.id.name}`, originalFunction = t.functionDeclaration(
|
68
|
+
t.identifier(originalName),
|
69
|
+
node.params,
|
70
|
+
node.body,
|
71
|
+
node.generator,
|
72
|
+
node.async
|
73
|
+
), requestIdentifier = t.identifier("request"), wrapperParams = [requestIdentifier], urlIdentifier = t.identifier("url"), paramsIdentifier = t.identifier("params"), urlDecl = t.variableDeclaration("const", [
|
74
|
+
t.variableDeclarator(
|
75
|
+
urlIdentifier,
|
76
|
+
t.newExpression(t.identifier("URL"), [
|
77
|
+
t.memberExpression(requestIdentifier, t.identifier("url"))
|
78
|
+
])
|
79
|
+
)
|
80
|
+
]), paramsDecl = t.variableDeclaration("const", [
|
81
|
+
t.variableDeclarator(
|
82
|
+
paramsIdentifier,
|
83
|
+
t.callExpression(
|
84
|
+
t.memberExpression(t.identifier("Object"), t.identifier("fromEntries")),
|
85
|
+
[
|
86
|
+
t.callExpression(
|
87
|
+
t.memberExpression(
|
88
|
+
t.memberExpression(
|
89
|
+
urlIdentifier,
|
90
|
+
t.identifier("searchParams")
|
91
|
+
),
|
92
|
+
t.identifier("entries")
|
93
|
+
),
|
94
|
+
[]
|
95
|
+
)
|
96
|
+
]
|
97
|
+
)
|
98
|
+
)
|
99
|
+
]), callOrigFnStatement = t.callExpression(t.identifier(originalName), [
|
100
|
+
requestIdentifier,
|
101
|
+
t.objectExpression([t.objectProperty(t.identifier("params"), paramsIdentifier)])
|
102
|
+
]), wrapperFunction = t.functionDeclaration(
|
103
|
+
t.identifier(node.id.name + ""),
|
104
|
+
wrapperParams,
|
105
|
+
t.blockStatement([urlDecl, paramsDecl, t.returnStatement(callOrigFnStatement)])
|
106
|
+
// No need to care if the wrapper function should be async,
|
107
|
+
// since we didn't use any await in the wrapper function, and we'll
|
108
|
+
// just return what the original function returns.
|
109
|
+
);
|
110
|
+
node.extra = node.extra || {}, node.extra.isWrapped = !0, wrapperFunction.extra = wrapperFunction.extra || {}, wrapperFunction.extra.isWrapper = !0, path.parentPath.isExportNamedDeclaration() ? path.replaceWithMultiple([originalFunction, t.exportNamedDeclaration(wrapperFunction, [])]) : path.replaceWithMultiple([originalFunction, wrapperFunction]);
|
111
|
+
}
|
112
|
+
}), generator.default(ast, {}).code;
|
113
|
+
}
|
39
114
|
export {
|
40
115
|
createApiServerlessFunction
|
41
116
|
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
3
|
"sources": ["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],
|
4
|
-
"mappings": "AAAA,SAAS,MAAM,eAAe;
|
4
|
+
"mappings": "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",
|
5
5
|
"names": []
|
6
6
|
}
|
@@ -1,24 +1,69 @@
|
|
1
|
-
import { join, resolve } from "node:path";
|
1
|
+
import { dirname, join, resolve } from "node:path";
|
2
|
+
import FSExtra from "fs-extra";
|
3
|
+
import { resolvePath } from "@vxrn/resolve";
|
4
|
+
import parser from "@babel/parser";
|
5
|
+
import traverse from "@babel/traverse";
|
6
|
+
import t from "@babel/types";
|
7
|
+
import generator from "@babel/generator";
|
2
8
|
import fs from "fs-extra";
|
3
9
|
import { serverlessVercelPackageJson } from "../config/vc-package-base.mjs";
|
4
10
|
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.mjs";
|
5
|
-
|
11
|
+
import { getPathFromRoute } from "../getPathFromRoute.mjs";
|
12
|
+
async function createApiServerlessFunction(route, code, oneOptionsRoot, postBuildLogs) {
|
6
13
|
try {
|
7
|
-
|
8
|
-
|
9
|
-
|
14
|
+
const path = getPathFromRoute(route);
|
15
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${path}`);
|
16
|
+
const funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${path}.func`);
|
17
|
+
if (await fs.ensureDir(funcFolder), code.includes("react")) {
|
18
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${path}`);
|
19
|
+
const reactPath = dirname(resolvePath("react/package.json", oneOptionsRoot));
|
20
|
+
await fs.copy(resolve(reactPath), resolve(join(funcFolder, "node_modules", "react")));
|
21
|
+
}
|
10
22
|
const distAssetsFolder = resolve(join(funcFolder, "assets"));
|
11
|
-
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`)
|
23
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`);
|
24
|
+
const sourceAssetsFolder = resolve(join(oneOptionsRoot, "dist", "api", "assets"));
|
25
|
+
(await FSExtra.pathExists(sourceAssetsFolder)) && (await fs.copy(sourceAssetsFolder, distAssetsFolder)), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
|
12
26
|
const entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
|
13
|
-
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, code);
|
27
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, wrapHandlerFunctions(code));
|
14
28
|
const packageJsonFilePath = resolve(join(funcFolder, "package.json"));
|
15
29
|
return postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`), await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson), postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${join(funcFolder, ".vc-config.json")}`), fs.writeJson(join(funcFolder, ".vc-config.json"), {
|
16
30
|
...serverlessVercelNodeJsConfig,
|
17
31
|
handler: "entrypoint/index.js"
|
18
32
|
});
|
19
33
|
} catch (e) {
|
20
|
-
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${
|
34
|
+
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);
|
21
35
|
}
|
22
36
|
}
|
37
|
+
function wrapHandlerFunctions(code) {
|
38
|
+
const ast = parser.parse(code, {
|
39
|
+
sourceType: "module"
|
40
|
+
});
|
41
|
+
return traverse.default(ast, {
|
42
|
+
FunctionDeclaration(path) {
|
43
|
+
const {
|
44
|
+
node
|
45
|
+
} = path,
|
46
|
+
functionNamesToHandle = ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"
|
47
|
+
// TODO: more possibilities?
|
48
|
+
];
|
49
|
+
if (!node.id || !functionNamesToHandle.includes(node.id.name) || node.extra && node.extra.isWrapper || node.extra && node.extra.isWrapped) return;
|
50
|
+
const originalName = `orig_${node.id.name}`,
|
51
|
+
originalFunction = t.functionDeclaration(t.identifier(originalName), node.params, node.body, node.generator, node.async),
|
52
|
+
requestIdentifier = t.identifier("request"),
|
53
|
+
wrapperParams = [requestIdentifier],
|
54
|
+
urlIdentifier = t.identifier("url"),
|
55
|
+
paramsIdentifier = t.identifier("params"),
|
56
|
+
urlDecl = t.variableDeclaration("const", [t.variableDeclarator(urlIdentifier, t.newExpression(t.identifier("URL"), [t.memberExpression(requestIdentifier, t.identifier("url"))]))]),
|
57
|
+
paramsDecl = t.variableDeclaration("const", [t.variableDeclarator(paramsIdentifier, t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("fromEntries")), [t.callExpression(t.memberExpression(t.memberExpression(urlIdentifier, t.identifier("searchParams")), t.identifier("entries")), [])]))]),
|
58
|
+
callOrigFnStatement = t.callExpression(t.identifier(originalName), [requestIdentifier, t.objectExpression([t.objectProperty(t.identifier("params"), paramsIdentifier)])]),
|
59
|
+
wrapperFunction = t.functionDeclaration(t.identifier(node.id.name + ""), wrapperParams, t.blockStatement([urlDecl, paramsDecl, t.returnStatement(callOrigFnStatement)])
|
60
|
+
// No need to care if the wrapper function should be async,
|
61
|
+
// since we didn't use any await in the wrapper function, and we'll
|
62
|
+
// just return what the original function returns.
|
63
|
+
);
|
64
|
+
node.extra = node.extra || {}, node.extra.isWrapped = !0, wrapperFunction.extra = wrapperFunction.extra || {}, wrapperFunction.extra.isWrapper = !0, path.parentPath.isExportNamedDeclaration() ? path.replaceWithMultiple([originalFunction, t.exportNamedDeclaration(wrapperFunction, [])]) : path.replaceWithMultiple([originalFunction, wrapperFunction]);
|
65
|
+
}
|
66
|
+
}), generator.default(ast, {}).code;
|
67
|
+
}
|
23
68
|
export { createApiServerlessFunction };
|
24
69
|
//# sourceMappingURL=createApiServerlessFunction.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["join","resolve","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","createApiServerlessFunction","
|
1
|
+
{"version":3,"names":["dirname","join","resolve","FSExtra","resolvePath","parser","traverse","t","generator","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","getPathFromRoute","createApiServerlessFunction","route","code","oneOptionsRoot","postBuildLogs","path","push","funcFolder","ensureDir","includes","reactPath","copy","distAssetsFolder","sourceAssetsFolder","pathExists","entrypointFilePath","writeFile","wrapHandlerFunctions","packageJsonFilePath","writeJSON","writeJson","handler","e","console","error","file","ast","parse","sourceType","default","FunctionDeclaration","node","functionNamesToHandle","id","name","extra","isWrapper","isWrapped","originalName","originalFunction","functionDeclaration","identifier","params","body","async","requestIdentifier","wrapperParams","urlIdentifier","paramsIdentifier","urlDecl","variableDeclaration","variableDeclarator","newExpression","memberExpression","paramsDecl","callExpression","callOrigFnStatement","objectExpression","objectProperty","wrapperFunction","blockStatement","returnStatement","parentPath","isExportNamedDeclaration","replaceWithMultiple","exportNamedDeclaration"],"sources":["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
@@ -1,24 +1,68 @@
|
|
1
|
-
import { join, resolve } from "node:path";
|
1
|
+
import { dirname, join, resolve } from "node:path";
|
2
|
+
import FSExtra from "fs-extra";
|
3
|
+
import { resolvePath } from "@vxrn/resolve";
|
4
|
+
import parser from "@babel/parser";
|
5
|
+
import traverse from "@babel/traverse";
|
6
|
+
import t from "@babel/types";
|
7
|
+
import generator from "@babel/generator";
|
2
8
|
import fs from "fs-extra";
|
3
9
|
import { serverlessVercelPackageJson } from "../config/vc-package-base.native.js";
|
4
10
|
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.native.js";
|
5
|
-
|
11
|
+
import { getPathFromRoute } from "../getPathFromRoute.native.js";
|
12
|
+
async function createApiServerlessFunction(route, code, oneOptionsRoot, postBuildLogs) {
|
6
13
|
try {
|
7
|
-
|
8
|
-
|
9
|
-
|
14
|
+
var path = getPathFromRoute(route);
|
15
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${path}`);
|
16
|
+
var funcFolder = join(oneOptionsRoot, `.vercel/output/functions/${path}.func`);
|
17
|
+
if (await fs.ensureDir(funcFolder), code.includes("react")) {
|
18
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] detected react in depenency tree for ${path}`);
|
19
|
+
var reactPath = dirname(resolvePath("react/package.json", oneOptionsRoot));
|
20
|
+
await fs.copy(resolve(reactPath), resolve(join(funcFolder, "node_modules", "react")));
|
21
|
+
}
|
10
22
|
var distAssetsFolder = resolve(join(funcFolder, "assets"));
|
11
|
-
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`)
|
23
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy shared assets to ${distAssetsFolder}`);
|
24
|
+
var sourceAssetsFolder = resolve(join(oneOptionsRoot, "dist", "api", "assets"));
|
25
|
+
(await FSExtra.pathExists(sourceAssetsFolder)) && (await fs.copy(sourceAssetsFolder, distAssetsFolder)), await fs.ensureDir(resolve(join(funcFolder, "entrypoint")));
|
12
26
|
var entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
|
13
|
-
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, code);
|
27
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, wrapHandlerFunctions(code));
|
14
28
|
var packageJsonFilePath = resolve(join(funcFolder, "package.json"));
|
15
29
|
return postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`), await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson), postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${join(funcFolder, ".vc-config.json")}`), fs.writeJson(join(funcFolder, ".vc-config.json"), {
|
16
30
|
...serverlessVercelNodeJsConfig,
|
17
31
|
handler: "entrypoint/index.js"
|
18
32
|
});
|
19
33
|
} catch (e) {
|
20
|
-
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${
|
34
|
+
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);
|
21
35
|
}
|
22
36
|
}
|
37
|
+
function wrapHandlerFunctions(code) {
|
38
|
+
var ast = parser.parse(code, {
|
39
|
+
sourceType: "module"
|
40
|
+
});
|
41
|
+
traverse.default(ast, {
|
42
|
+
FunctionDeclaration(path) {
|
43
|
+
var {
|
44
|
+
node
|
45
|
+
} = path,
|
46
|
+
functionNamesToHandle = ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"];
|
47
|
+
if (!(!node.id || !functionNamesToHandle.includes(node.id.name)) && !(node.extra && node.extra.isWrapper) && !(node.extra && node.extra.isWrapped)) {
|
48
|
+
var originalName = `orig_${node.id.name}`,
|
49
|
+
originalFunction = t.functionDeclaration(t.identifier(originalName), node.params, node.body, node.generator, node.async),
|
50
|
+
requestIdentifier = t.identifier("request"),
|
51
|
+
wrapperParams = [requestIdentifier],
|
52
|
+
urlIdentifier = t.identifier("url"),
|
53
|
+
paramsIdentifier = t.identifier("params"),
|
54
|
+
urlDecl = t.variableDeclaration("const", [t.variableDeclarator(urlIdentifier, t.newExpression(t.identifier("URL"), /* Node.js global */
|
55
|
+
[t.memberExpression(requestIdentifier, t.identifier("url"))]))]),
|
56
|
+
paramsDecl = t.variableDeclaration("const", [t.variableDeclarator(paramsIdentifier, t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("fromEntries")), [t.callExpression(t.memberExpression(t.memberExpression(urlIdentifier, t.identifier("searchParams")), /* url.searchParams */
|
57
|
+
t.identifier("entries")), [])]))]),
|
58
|
+
callOrigFnStatement = t.callExpression(t.identifier(originalName), [requestIdentifier, t.objectExpression([t.objectProperty(t.identifier("params"), paramsIdentifier)])]),
|
59
|
+
wrapperFunction = t.functionDeclaration(t.identifier(node.id.name + ""), wrapperParams, t.blockStatement([urlDecl, paramsDecl, t.returnStatement(callOrigFnStatement)]));
|
60
|
+
node.extra = node.extra || {}, node.extra.isWrapped = !0, wrapperFunction.extra = wrapperFunction.extra || {}, wrapperFunction.extra.isWrapper = !0, path.parentPath.isExportNamedDeclaration() ? path.replaceWithMultiple([originalFunction, t.exportNamedDeclaration(wrapperFunction, [])]) : path.replaceWithMultiple([originalFunction, wrapperFunction]);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
});
|
64
|
+
var output = generator.default(ast, {}).code;
|
65
|
+
return output;
|
66
|
+
}
|
23
67
|
export { createApiServerlessFunction };
|
24
68
|
//# sourceMappingURL=createApiServerlessFunction.native.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["join","resolve","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","createApiServerlessFunction","
|
1
|
+
{"version":3,"names":["dirname","join","resolve","FSExtra","resolvePath","parser","traverse","t","generator","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","getPathFromRoute","createApiServerlessFunction","route","code","oneOptionsRoot","postBuildLogs","path","push","funcFolder","ensureDir","includes","reactPath","copy","distAssetsFolder","sourceAssetsFolder","pathExists","entrypointFilePath","writeFile","wrapHandlerFunctions","packageJsonFilePath","writeJSON","writeJson","handler","e","console","error","file","ast","parse","sourceType","default","FunctionDeclaration","node","functionNamesToHandle","id","name","extra","isWrapper","isWrapped","originalName","originalFunction","functionDeclaration","identifier","params","body","async","requestIdentifier","wrapperParams","urlIdentifier","paramsIdentifier","urlDecl","variableDeclaration","variableDeclarator","newExpression","memberExpression","paramsDecl","callExpression","callOrigFnStatement","objectExpression","objectProperty","wrapperFunction","blockStatement","returnStatement","parentPath","isExportNamedDeclaration","replaceWithMultiple","exportNamedDeclaration","output"],"sources":["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|