one 1.1.483 → 1.1.485
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/createHandleRequest.cjs +2 -1
- package/dist/cjs/createHandleRequest.js +2 -1
- package/dist/cjs/createHandleRequest.js.map +1 -1
- package/dist/cjs/createHandleRequest.native.js +4 -2
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- 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/server/oneServe.cjs +8 -13
- package/dist/cjs/server/oneServe.js +11 -14
- package/dist/cjs/server/oneServe.js.map +1 -1
- package/dist/cjs/server/oneServe.native.js +20 -23
- package/dist/cjs/server/oneServe.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/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.cjs +1 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js +1 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +3 -1
- package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +2 -2
- 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/createHandleRequest.js +2 -1
- package/dist/esm/createHandleRequest.js.map +1 -1
- package/dist/esm/createHandleRequest.mjs +1 -1
- package/dist/esm/createHandleRequest.mjs.map +1 -1
- package/dist/esm/createHandleRequest.native.js +1 -1
- package/dist/esm/createHandleRequest.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/server/oneServe.js +17 -15
- package/dist/esm/server/oneServe.js.map +1 -1
- package/dist/esm/server/oneServe.mjs +9 -14
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js +21 -24
- package/dist/esm/server/oneServe.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/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js +2 -2
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs +2 -2
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs.map +1 -1
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +4 -2
- package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
- package/package.json +9 -8
- package/src/cli/build.ts +3 -57
- package/src/createHandleRequest.ts +1 -1
- package/src/server/createRoutesManifest.ts +1 -0
- package/src/server/getServerManifest.ts +12 -3
- package/src/server/oneServe.ts +23 -18
- 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/plugins/generateFileSystemRouteTypesPlugin.tsx +9 -2
- package/src/vite/types.ts +1 -0
- package/types/cli/build.d.ts.map +1 -1
- package/types/createHandleRequest.d.ts +1 -0
- package/types/createHandleRequest.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/server/oneServe.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/plugins/generateFileSystemRouteTypesPlugin.d.ts.map +1 -1
- package/types/vite/types.d.ts +1 -0
- package/types/vite/types.d.ts.map +1 -1
@@ -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":[]}
|
@@ -2,10 +2,12 @@ import fs from "fs-extra";
|
|
2
2
|
import { join, resolve } from "node:path";
|
3
3
|
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base";
|
4
4
|
import { serverlessVercelPackageJson } from "../config/vc-package-base";
|
5
|
-
|
5
|
+
import { getPathFromRoute } from "../getPathFromRoute";
|
6
|
+
async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {
|
6
7
|
try {
|
7
|
-
|
8
|
-
|
8
|
+
const path = getPathFromRoute(route);
|
9
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);
|
10
|
+
const buildInfoAsString = JSON.stringify(buildInfo), funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${path}.func`));
|
9
11
|
await fs.ensureDir(funcFolder);
|
10
12
|
const distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")), distServerTo = resolve(join(funcFolder, "server"));
|
11
13
|
await fs.ensureDir(distServerTo), postBuildLogs.push(
|
@@ -19,6 +21,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
19
21
|
`
|
20
22
|
const buildInfoConfig = await import('../buildInfo.js');
|
21
23
|
const entry = await import('../server/_virtual_one-entry.js');
|
24
|
+
const routeFile = ${JSON.stringify(route.file)}
|
22
25
|
|
23
26
|
const handler = async (req, res) => {
|
24
27
|
// console.debug("req.url", req.url);
|
@@ -28,7 +31,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
28
31
|
params: Object.fromEntries(url.searchParams.entries())
|
29
32
|
}
|
30
33
|
const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
|
31
|
-
const routeFile = \`.\${url.pathname}\${postfix}\`;
|
34
|
+
// const routeFile = \`.\${url.pathname}\${postfix}\`;
|
32
35
|
let route = buildInfoConfig.default.routeToBuildInfo[routeFile];
|
33
36
|
|
34
37
|
// If we cannot find the route by direct match, try to find it by looking it up in the
|
@@ -80,7 +83,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
80
83
|
});
|
81
84
|
} catch (e) {
|
82
85
|
console.error(
|
83
|
-
`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${
|
86
|
+
`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`,
|
84
87
|
e
|
85
88
|
);
|
86
89
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
3
|
"sources": ["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],
|
4
|
-
"mappings": "AAAA,OAAO,QAAQ;AACf,SAAS,MAAM,eAAe;AAC9B,SAAS,oCAAoC;AAC7C,SAAS,mCAAmC;
|
4
|
+
"mappings": "AAAA,OAAO,QAAQ;AACf,SAAS,MAAM,eAAe;AAC9B,SAAS,oCAAoC;AAC7C,SAAS,mCAAmC;AAE5C,SAAS,wBAAwB;AAIjC,eAAsB,4BACpB,OACA,WACA,gBACA,eACA;AACA,MAAI;AACF,UAAM,OAAO,iBAAiB,KAAK;AACnC,kBAAc,KAAK,yDAAyD,IAAI,EAAE;AAElF,UAAM,oBAAoB,KAAK,UAAU,SAAS,GAC5C,aAAa,QAAQ,KAAK,gBAAgB,4BAA4B,IAAI,OAAO,CAAC;AACxF,UAAM,GAAG,UAAU,UAAU;AAE7B,UAAM,iBAAiB,QAAQ,KAAK,gBAAgB,QAAQ,QAAQ,CAAC,GAC/D,eAAe,QAAQ,KAAK,YAAY,QAAQ,CAAC;AACvD,UAAM,GAAG,UAAU,YAAY,GAC/B,cAAc;AAAA,MACZ,+EAA+E,cAAc,OAAO,YAAY;AAAA,IAClH,GACA,MAAM,GAAG,KAAK,gBAAgB,YAAY,GAE1C,cAAc,KAAK,wEAAwE,GAC3F,MAAM,GAAG,UAAU,KAAK,YAAY,cAAc,GAAG,kBAAkB,iBAAiB,EAAE,GAE1F,MAAM,GAAG,UAAU,KAAK,YAAY,YAAY,CAAC;AACjD,UAAM,qBAAqB,QAAQ,KAAK,YAAY,cAAc,UAAU,CAAC;AAC7E,kBAAc;AAAA,MACZ,yEAAyE,kBAAkB;AAAA,IAC7F,GACA,MAAM,GAAG;AAAA,MACP;AAAA,MACA;AAAA;AAAA;AAAA,sBAGgB,KAAK,UAAU,MAAM,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA4C5C;AAEA,UAAM,sBAAsB,QAAQ,KAAK,YAAY,cAAc,CAAC;AACpE,kBAAc;AAAA,MACZ,2EAA2E,mBAAmB;AAAA,IAChG,GACA,MAAM,GAAG,UAAU,qBAAqB,2BAA2B;AAInE,UAAM,mBAAmB,QAAQ,KAAK,YAAY,iBAAiB,CAAC;AACpE,yBAAc;AAAA,MACZ,8EAA8E,gBAAgB;AAAA,IAChG,GACO,GAAG,UAAU,kBAAkB;AAAA,MACpC,GAAG;AAAA,MACH,SAAS;AAAA,MACT,aAAa;AAAA,QACX,GAAG,6BAA6B;AAAA,QAChC,yBAAyB;AAAA,MAC3B;AAAA,IACF,CAAC;AAAA,EACH,SAAS,GAAG;AACV,YAAQ;AAAA,MACN,+EAA+E,MAAM,IAAI;AAAA,MACzF;AAAA,IACF;AAAA,EACF;AACF;",
|
5
5
|
"names": []
|
6
6
|
}
|
@@ -2,11 +2,13 @@ import fs from "fs-extra";
|
|
2
2
|
import { join, resolve } from "node:path";
|
3
3
|
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.mjs";
|
4
4
|
import { serverlessVercelPackageJson } from "../config/vc-package-base.mjs";
|
5
|
-
|
5
|
+
import { getPathFromRoute } from "../getPathFromRoute.mjs";
|
6
|
+
async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {
|
6
7
|
try {
|
7
|
-
|
8
|
+
const path = getPathFromRoute(route);
|
9
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);
|
8
10
|
const buildInfoAsString = JSON.stringify(buildInfo),
|
9
|
-
funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${
|
11
|
+
funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${path}.func`));
|
10
12
|
await fs.ensureDir(funcFolder);
|
11
13
|
const distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")),
|
12
14
|
distServerTo = resolve(join(funcFolder, "server"));
|
@@ -15,6 +17,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
15
17
|
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, `
|
16
18
|
const buildInfoConfig = await import('../buildInfo.js');
|
17
19
|
const entry = await import('../server/_virtual_one-entry.js');
|
20
|
+
const routeFile = ${JSON.stringify(route.file)}
|
18
21
|
|
19
22
|
const handler = async (req, res) => {
|
20
23
|
// console.debug("req.url", req.url);
|
@@ -24,7 +27,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
24
27
|
params: Object.fromEntries(url.searchParams.entries())
|
25
28
|
}
|
26
29
|
const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
|
27
|
-
const routeFile = \`.\${url.pathname}\${postfix}\`;
|
30
|
+
// const routeFile = \`.\${url.pathname}\${postfix}\`;
|
28
31
|
let route = buildInfoConfig.default.routeToBuildInfo[routeFile];
|
29
32
|
|
30
33
|
// If we cannot find the route by direct match, try to find it by looking it up in the
|
@@ -70,7 +73,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
70
73
|
}
|
71
74
|
});
|
72
75
|
} catch (e) {
|
73
|
-
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${
|
76
|
+
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);
|
74
77
|
}
|
75
78
|
}
|
76
79
|
export { createSsrServerlessFunction };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","createSsrServerlessFunction","
|
1
|
+
{"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","getPathFromRoute","createSsrServerlessFunction","route","buildInfo","oneOptionsRoot","postBuildLogs","path","push","buildInfoAsString","JSON","stringify","funcFolder","ensureDir","distServerFrom","distServerTo","copy","writeFile","entrypointFilePath","file","packageJsonFilePath","writeJSON","vcConfigFilePath","writeJson","handler","environment","ONE_DEFAULT_RENDER_MODE","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,EAAA,MAAQ;AACf,SAASC,IAAA,EAAMC,OAAA,QAAe;AAC9B,SAASC,4BAAA,QAAoC;AAC7C,SAASC,2BAAA,QAAmC;AAE5C,SAASC,gBAAA,QAAwB;AAIjC,eAAsBC,4BACpBC,KAAA,EACAC,SAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACF,MAAMC,IAAA,GAAON,gBAAA,CAAiBE,KAAK;IACnCG,aAAA,CAAcE,IAAA,CAAK,yDAAyDD,IAAI,EAAE;IAElF,MAAME,iBAAA,GAAoBC,IAAA,CAAKC,SAAA,CAAUP,SAAS;MAC5CQ,UAAA,GAAad,OAAA,CAAQD,IAAA,CAAKQ,cAAA,EAAgB,4BAA4BE,IAAI,OAAO,CAAC;IACxF,MAAMX,EAAA,CAAGiB,SAAA,CAAUD,UAAU;IAE7B,MAAME,cAAA,GAAiBhB,OAAA,CAAQD,IAAA,CAAKQ,cAAA,EAAgB,QAAQ,QAAQ,CAAC;MAC/DU,YAAA,GAAejB,OAAA,CAAQD,IAAA,CAAKe,UAAA,EAAY,QAAQ,CAAC;IACvD,MAAMhB,EAAA,CAAGiB,SAAA,CAAUE,YAAY,GAC/BT,aAAA,CAAcE,IAAA,CACZ,+EAA+EM,cAAc,OAAOC,YAAY,EAClH,GACA,MAAMnB,EAAA,CAAGoB,IAAA,CAAKF,cAAA,EAAgBC,YAAY,GAE1CT,aAAA,CAAcE,IAAA,CAAK,wEAAwE,GAC3F,MAAMZ,EAAA,CAAGqB,SAAA,CAAUpB,IAAA,CAAKe,UAAA,EAAY,cAAc,GAAG,kBAAkBH,iBAAiB,EAAE,GAE1F,MAAMb,EAAA,CAAGiB,SAAA,CAAUhB,IAAA,CAAKe,UAAA,EAAY,YAAY,CAAC;IACjD,MAAMM,kBAAA,GAAqBpB,OAAA,CAAQD,IAAA,CAAKe,UAAA,EAAY,cAAc,UAAU,CAAC;IAC7EN,aAAA,CAAcE,IAAA,CACZ,yEAAyEU,kBAAkB,EAC7F,GACA,MAAMtB,EAAA,CAAGqB,SAAA,CACPC,kBAAA,EACA;AAAA;AAAA;AAAA,sBAGgBR,IAAA,CAAKC,SAAA,CAAUR,KAAA,CAAMgB,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA4C5C;IAEA,MAAMC,mBAAA,GAAsBtB,OAAA,CAAQD,IAAA,CAAKe,UAAA,EAAY,cAAc,CAAC;IACpEN,aAAA,CAAcE,IAAA,CACZ,2EAA2EY,mBAAmB,EAChG,GACA,MAAMxB,EAAA,CAAGyB,SAAA,CAAUD,mBAAA,EAAqBpB,2BAA2B;IAInE,MAAMsB,gBAAA,GAAmBxB,OAAA,CAAQD,IAAA,CAAKe,UAAA,EAAY,iBAAiB,CAAC;IACpE,OAAAN,aAAA,CAAcE,IAAA,CACZ,8EAA8Ec,gBAAgB,EAChG,GACO1B,EAAA,CAAG2B,SAAA,CAAUD,gBAAA,EAAkB;MACpC,GAAGvB,4BAAA;MACHyB,OAAA,EAAS;MACTC,WAAA,EAAa;QACX,GAAG1B,4BAAA,CAA6B0B,WAAA;QAChCC,uBAAA,EAAyB;MAC3B;IACF,CAAC;EACH,SAASC,CAAA,EAAG;IACVC,OAAA,CAAQC,KAAA,CACN,+EAA+E1B,KAAA,CAAMgB,IAAI,IACzFQ,CACF;EACF;AACF","ignoreList":[]}
|
@@ -2,11 +2,13 @@ import fs from "fs-extra";
|
|
2
2
|
import { join, resolve } from "node:path";
|
3
3
|
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.native.js";
|
4
4
|
import { serverlessVercelPackageJson } from "../config/vc-package-base.native.js";
|
5
|
-
|
5
|
+
import { getPathFromRoute } from "../getPathFromRoute.native.js";
|
6
|
+
async function createSsrServerlessFunction(route, buildInfo, oneOptionsRoot, postBuildLogs) {
|
6
7
|
try {
|
7
|
-
|
8
|
+
var path = getPathFromRoute(route);
|
9
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] path: ${path}`);
|
8
10
|
var buildInfoAsString = JSON.stringify(buildInfo),
|
9
|
-
funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${
|
11
|
+
funcFolder = resolve(join(oneOptionsRoot, `.vercel/output/functions/${path}.func`));
|
10
12
|
await fs.ensureDir(funcFolder);
|
11
13
|
var distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")),
|
12
14
|
distServerTo = resolve(join(funcFolder, "server"));
|
@@ -15,6 +17,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
15
17
|
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, `
|
16
18
|
const buildInfoConfig = await import('../buildInfo.js');
|
17
19
|
const entry = await import('../server/_virtual_one-entry.js');
|
20
|
+
const routeFile = ${JSON.stringify(route.file)}
|
18
21
|
|
19
22
|
const handler = async (req, res) => {
|
20
23
|
// console.debug("req.url", req.url);
|
@@ -24,7 +27,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
24
27
|
params: Object.fromEntries(url.searchParams.entries())
|
25
28
|
}
|
26
29
|
const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
|
27
|
-
const routeFile = \`.\${url.pathname}\${postfix}\`;
|
30
|
+
// const routeFile = \`.\${url.pathname}\${postfix}\`;
|
28
31
|
let route = buildInfoConfig.default.routeToBuildInfo[routeFile];
|
29
32
|
|
30
33
|
// If we cannot find the route by direct match, try to find it by looking it up in the
|
@@ -70,7 +73,7 @@ async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot,
|
|
70
73
|
}
|
71
74
|
});
|
72
75
|
} catch (e) {
|
73
|
-
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${
|
76
|
+
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${route.file}`, e);
|
74
77
|
}
|
75
78
|
}
|
76
79
|
export { createSsrServerlessFunction };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","createSsrServerlessFunction","
|
1
|
+
{"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","getPathFromRoute","createSsrServerlessFunction","route","buildInfo","oneOptionsRoot","postBuildLogs","path","push","buildInfoAsString","JSON","stringify","funcFolder","ensureDir","distServerFrom","distServerTo","copy","writeFile","entrypointFilePath","file","packageJsonFilePath","writeJSON","vcConfigFilePath","writeJson","handler","environment","ONE_DEFAULT_RENDER_MODE","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,EAAA,MAAQ;AACf,SAASC,IAAA,EAAMC,OAAA,QAAe;AAC9B,SAASC,4BAAA,QAAoC;AAC7C,SAASC,2BAAA,QAAmC;AAE5C,SAASC,gBAAA,QAAwB;AAIjC,eAAsBC,4BACpBC,KAAA,EACAC,SAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACF,IAAAC,IAAM,GAAAN,gBAAO,CAAAE,KAAiB;IAC9BG,aAAA,CAAcE,IAAA,CAAK,yDAAyDD,IAAI,EAAE;IAElF,IAAAE,iBAAM,GAAAC,IAAoB,CAAAC,SAAK,CAAAP,SAAU;MAASQ,UAC5C,GAAAd,OAAa,CAAAD,IAAQ,CAAAQ,cAAK,8BAAgBE,IAA4B,OAAI,EAAO;IACvF,MAAMX,EAAA,CAAGiB,SAAA,CAAUD,UAAU;IAE7B,IAAAE,cAAM,GAAAhB,OAAiB,CAAAD,IAAQ,CAAAQ,cAAK,QAAgB,UAAQ,EAAQ;MAACU,YAC/D,GAAAjB,OAAe,CAAAD,IAAQ,CAAAe,UAAK,UAAY,EAAQ;IACtD,MAAMhB,EAAA,CAAGiB,SAAA,CAAUE,YAAY,GAC/BT,aAAA,CAAcE,IAAA,gFAAAM,cAAA,OAAAC,YAAA,WAAAnB,EAAA,CAAAoB,IAAA,CAAAF,cAAA,EAAAC,YAAA,GAAAT,aAAA,CAAAE,IAAA,kFAAAZ,EAAA,CAAAqB,SAAA,CAAApB,IAAA,CAAAe,UAAA,qCAAAH,iBAAA,WAAAb,EAAA,CAAAiB,SAAA,CAAAhB,IAAA,CAAAe,UAAA;IAAA,IACZM,kBAAA,GAAApB,OAAA,CAAAD,IAAA,CAAAe,UAAA;IACFN,aACS,CAAAE,IAAK,0EAEKU,kBAAA,WAAAtB,EAAA,CAAAqB,SAAA,CAAAC,kBACV;AAGT;AACA;AAAc,sBACZR,IAAA,CAAAC,SAAA,CAAAR,KAAA,CAAAgB,IAAA;AAA2F;AAEpF;AACP;AACA;AAAA;AAAA;AAG0C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAAA,IAAAC,mBAAA,GAAAtB,OAAA,CAAAD,IAAA,CAAAe,UAAA;IAAAN,aAAA,CAAAE,IAAA,4EAAAY,mBAAA,WAAAxB,EAAA,CAAAyB,SAAA,CAAAD,mBAAA,EAAApB,2BAAA;IAAA,IAAAsB,gBAAA,GAAAxB,OAAA,CAAAD,IAAA,CAAAe,UAAA;IAAA,OAAAN,aAAA,CAAAE,IAAA,+EAAAc,gBAAA,KAAA1B,EAAA,CAAA2B,SAAA,CAAAD,gBAAA;MAAA,GAAAvB,4BAAA;MAAAyB,OAAA;MA4C5CC,WAAA;QAEA,GAAM1B,4BAAsB,CAAQ0B,WAAK;QACzCC,uBAAc;MACZ;IACF;EAKA,SAAMC,CAAA;IACNC,OAAA,CAAAC,KAAA,gFAAc1B,KAAA,CAAAgB,IAAA,IAAAQ,CAAA;EAAA;AACkF;AAE1D,SACjCzB,2BACM","ignoreList":[]}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { getPathnameFromFilePath } from "../../utils/getPathnameFromFilePath";
|
2
|
+
function getPathFromRoute(route) {
|
3
|
+
return getPathnameFromFilePath(route.file, {}, !1, { preserveExtensions: !0 }).replace(/^\.\//, "/").replace(/\/+$/, "");
|
4
|
+
}
|
5
|
+
export {
|
6
|
+
getPathFromRoute
|
7
|
+
};
|
8
|
+
//# sourceMappingURL=getPathFromRoute.js.map
|
@@ -0,0 +1,6 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../../src/vercel/build/getPathFromRoute.ts"],
|
4
|
+
"mappings": "AAAA,SAAS,+BAA+B;AAGjC,SAAS,iBAAiB,OAA0B;AACzD,SAAO,wBAAwB,MAAM,MAAM,CAAC,GAAG,IAAO,EAAE,oBAAoB,GAAK,CAAC,EAC/E,QAAQ,SAAS,GAAG,EACpB,QAAQ,QAAQ,EAAE;AACvB;",
|
5
|
+
"names": []
|
6
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { getPathnameFromFilePath } from "../../utils/getPathnameFromFilePath.mjs";
|
2
|
+
function getPathFromRoute(route) {
|
3
|
+
return getPathnameFromFilePath(route.file, {}, !1, {
|
4
|
+
preserveExtensions: !0
|
5
|
+
}).replace(/^\.\//, "/").replace(/\/+$/, "");
|
6
|
+
}
|
7
|
+
export { getPathFromRoute };
|
8
|
+
//# sourceMappingURL=getPathFromRoute.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["getPathnameFromFilePath","getPathFromRoute","route","file","preserveExtensions","replace"],"sources":["../../../../src/vercel/build/getPathFromRoute.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,uBAAA,QAA+B;AAGjC,SAASC,iBAAiBC,KAAA,EAA0B;EACzD,OAAOF,uBAAA,CAAwBE,KAAA,CAAMC,IAAA,EAAM,CAAC,GAAG,IAAO;IAAEC,kBAAA,EAAoB;EAAK,CAAC,EAC/EC,OAAA,CAAQ,SAAS,GAAG,EACpBA,OAAA,CAAQ,QAAQ,EAAE;AACvB","ignoreList":[]}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { getPathnameFromFilePath } from "../../utils/getPathnameFromFilePath.native.js";
|
2
|
+
function getPathFromRoute(route) {
|
3
|
+
return getPathnameFromFilePath(route.file, {}, !1, {
|
4
|
+
preserveExtensions: !0
|
5
|
+
}).replace(/^\.\//, "/").replace(/\/+$/, "");
|
6
|
+
}
|
7
|
+
export { getPathFromRoute };
|
8
|
+
//# sourceMappingURL=getPathFromRoute.native.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["getPathnameFromFilePath","getPathFromRoute","route","file","preserveExtensions"],"sources":["../../../../src/vercel/build/getPathFromRoute.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,uBAAA,QAA+B;AAGjC,SAASC,iBAAiBC,KAAA,EAA0B;EACzD,OAAOF,uBAAA,CAAwBE,KAAA,CAAMC,IAAA,EAAM,CAAC,GAAG,IAAO;IAGxDC,kBAAA","ignoreList":[]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { join } from "node:path";
|
1
|
+
import { dirname, join } from "node:path";
|
2
2
|
import { debounce } from "perfect-debounce";
|
3
3
|
import { generateRouteTypes } from "../../typed-routes/generateRouteTypes";
|
4
4
|
import { getRouterRootFromOneOptions } from "../../utils/getRouterRootFromOneOptions";
|
@@ -8,7 +8,7 @@ function generateFileSystemRouteTypesPlugin(options) {
|
|
8
8
|
enforce: "post",
|
9
9
|
apply: "serve",
|
10
10
|
configureServer(server) {
|
11
|
-
const appDir = join(process.cwd(), getRouterRootFromOneOptions(options)), outFile = join(process.cwd(), "routes.d.ts"), routerRoot = getRouterRootFromOneOptions(options), fileWatcherChangeListener = debounce(async (type, path) => {
|
11
|
+
const appDir = join(process.cwd(), getRouterRootFromOneOptions(options)), outFile = dirname(appDir) !== process.cwd() ? (console.warn("Seems that the router root has been customized and is in a nested folder. For now we will generate the routes.d.ts file beside the app folder. This behavior might be changed in the future."), join(dirname(appDir), "routes.d.ts")) : join(process.cwd(), "routes.d.ts"), routerRoot = getRouterRootFromOneOptions(options), fileWatcherChangeListener = debounce(async (type, path) => {
|
12
12
|
(type === "add" || type === "delete") && path.startsWith(appDir) && generateRouteTypes(outFile, routerRoot);
|
13
13
|
}, 100);
|
14
14
|
return server.watcher.addListener("all", fileWatcherChangeListener), () => {
|