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
@@ -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":[]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "one",
|
3
|
-
"version": "1.1.
|
3
|
+
"version": "1.1.484",
|
4
4
|
"license": "BSD-3-Clause",
|
5
5
|
"sideEffects": [
|
6
6
|
"setup.mjs",
|
@@ -84,6 +84,7 @@
|
|
84
84
|
"@babel/generator": "^7.26.8",
|
85
85
|
"@babel/parser": "^7.26.8",
|
86
86
|
"@babel/traverse": "^7.26.8",
|
87
|
+
"@babel/types": "^7.26.10",
|
87
88
|
"@radix-ui/react-slot": "^1.0.2",
|
88
89
|
"@react-native-masked-view/masked-view": "^0.3.1",
|
89
90
|
"@react-navigation/bottom-tabs": "~7",
|
@@ -95,15 +96,15 @@
|
|
95
96
|
"@react-navigation/routers": "~7",
|
96
97
|
"@swc/core": "^1.10.4",
|
97
98
|
"@ungap/structured-clone": "^1.2.0",
|
98
|
-
"@vxrn/compiler": "1.1.
|
99
|
-
"@vxrn/resolve": "1.1.
|
100
|
-
"@vxrn/tslib-lite": "1.1.
|
101
|
-
"@vxrn/universal-color-scheme": "1.1.
|
102
|
-
"@vxrn/use-isomorphic-layout-effect": "1.1.
|
99
|
+
"@vxrn/compiler": "1.1.484",
|
100
|
+
"@vxrn/resolve": "1.1.484",
|
101
|
+
"@vxrn/tslib-lite": "1.1.484",
|
102
|
+
"@vxrn/universal-color-scheme": "1.1.484",
|
103
|
+
"@vxrn/use-isomorphic-layout-effect": "1.1.484",
|
103
104
|
"babel-dead-code-elimination": "^1.0.9",
|
104
105
|
"citty": "^0.1.6",
|
105
106
|
"core-js": "^3.38.1",
|
106
|
-
"create-vxrn": "1.1.
|
107
|
+
"create-vxrn": "1.1.484",
|
107
108
|
"escape-string-regexp": "^5.0.0",
|
108
109
|
"expo-linking": "~6.3.1",
|
109
110
|
"expo-modules-core": "2.1.2",
|
@@ -129,7 +130,7 @@
|
|
129
130
|
"vite": "^6.1.0",
|
130
131
|
"vite-plugin-barrel": "^0.4.1",
|
131
132
|
"vite-tsconfig-paths": "^5.0.1",
|
132
|
-
"vxrn": "1.1.
|
133
|
+
"vxrn": "1.1.484",
|
133
134
|
"ws": "^8.18.0",
|
134
135
|
"xxhashjs": "^0.2.2"
|
135
136
|
},
|
package/src/cli/build.ts
CHANGED
@@ -26,6 +26,7 @@ import { getRouterRootFromOneOptions } from '../utils/getRouterRootFromOneOption
|
|
26
26
|
import { buildPage } from './buildPage'
|
27
27
|
import { checkNodeVersion } from './checkNodeVersion'
|
28
28
|
import { labelProcess } from './label-process'
|
29
|
+
import { getPathnameFromFilePath } from '../utils/getPathnameFromFilePath'
|
29
30
|
|
30
31
|
const { ensureDir, writeJSON } = FSExtra
|
31
32
|
|
@@ -425,8 +426,7 @@ export async function build(args: {
|
|
425
426
|
}
|
426
427
|
|
427
428
|
for (const params of paramsList) {
|
428
|
-
const
|
429
|
-
const path = getPathnameFromFilePath(cleanId, params, foundRoute.type === 'ssg')
|
429
|
+
const path = getPathnameFromFilePath(relativeId, params, foundRoute.type === 'ssg')
|
430
430
|
console.info(` ↦ route ${path}`)
|
431
431
|
|
432
432
|
const built = await runWithAsyncLocalContext(async () => {
|
@@ -506,6 +506,7 @@ export async function build(args: {
|
|
506
506
|
manifest: {
|
507
507
|
pageRoutes: manifest.pageRoutes.map(createBuildManifestRoute),
|
508
508
|
apiRoutes: manifest.apiRoutes.map(createBuildManifestRoute),
|
509
|
+
allRoutes: manifest.allRoutes.map(createBuildManifestRoute),
|
509
510
|
},
|
510
511
|
routeMap,
|
511
512
|
constants: JSON.parse(JSON.stringify({ ...constants })) as any,
|
@@ -602,61 +603,6 @@ async function moveAllFiles(src: string, dest: string) {
|
|
602
603
|
}
|
603
604
|
}
|
604
605
|
|
605
|
-
function getPathnameFromFilePath(path: string, params = {}, strict = false) {
|
606
|
-
const dirname = Path.dirname(path).replace(/\([^\/]+\)/gi, '')
|
607
|
-
const file = Path.basename(path)
|
608
|
-
const fileName = file.replace(/\.[a-z]+$/, '')
|
609
|
-
|
610
|
-
function paramsError(part: string) {
|
611
|
-
throw new Error(
|
612
|
-
`[one] Params doesn't fit route:
|
613
|
-
|
614
|
-
- path: ${path}
|
615
|
-
- part: ${part}
|
616
|
-
- fileName: ${fileName}
|
617
|
-
- params:
|
618
|
-
|
619
|
-
${JSON.stringify(params, null, 2)}`
|
620
|
-
)
|
621
|
-
}
|
622
|
-
|
623
|
-
const nameWithParams = (() => {
|
624
|
-
if (fileName === 'index') {
|
625
|
-
return '/'
|
626
|
-
}
|
627
|
-
if (fileName.startsWith('[...')) {
|
628
|
-
const part = fileName.replace('[...', '').replace(']', '')
|
629
|
-
if (!params[part]) {
|
630
|
-
if (strict) {
|
631
|
-
throw paramsError(part)
|
632
|
-
}
|
633
|
-
return `/*`
|
634
|
-
}
|
635
|
-
return `/${params[part]}`
|
636
|
-
}
|
637
|
-
return `/${fileName
|
638
|
-
.split('/')
|
639
|
-
.map((part) => {
|
640
|
-
if (part[0] === '[') {
|
641
|
-
const found = params[part.slice(1, part.length - 1)]
|
642
|
-
if (!found) {
|
643
|
-
if (strict) {
|
644
|
-
throw paramsError(part)
|
645
|
-
}
|
646
|
-
|
647
|
-
return ':' + part.replace('[', '').replace(']', '')
|
648
|
-
}
|
649
|
-
return found
|
650
|
-
}
|
651
|
-
return part
|
652
|
-
})
|
653
|
-
.join('/')}`
|
654
|
-
})()
|
655
|
-
|
656
|
-
// hono path will convert +not-found etc too
|
657
|
-
return `${dirname}${nameWithParams}`.replace(/\/\/+/gi, '/')
|
658
|
-
}
|
659
|
-
|
660
606
|
function escapeRegex(string: string) {
|
661
607
|
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') // $& means the whole matched string
|
662
608
|
}
|
@@ -22,6 +22,7 @@ export type OneRouterServerManifestV1<TRegex = string> = {
|
|
22
22
|
apiRoutes: OneRouterServerManifestV1Route<TRegex>[]
|
23
23
|
middlewareRoutes: OneRouterServerManifestV1Route<TRegex>[]
|
24
24
|
pageRoutes: OneRouterServerManifestV1Route<TRegex>[]
|
25
|
+
allRoutes: OneRouterServerManifestV1Route<TRegex>[]
|
25
26
|
}
|
26
27
|
|
27
28
|
export interface Group {
|
@@ -63,7 +64,9 @@ export function getServerManifest(route: RouteNode): OneRouterServerManifestV1 {
|
|
63
64
|
return [key]
|
64
65
|
})
|
65
66
|
|
66
|
-
key =
|
67
|
+
key =
|
68
|
+
(parentSegments ? parentSegments.join('') : '') +
|
69
|
+
getContextKey(route.route).replace(/\/index$/, '') || '/'
|
67
70
|
}
|
68
71
|
|
69
72
|
return [[key, { ...route, layouts }]]
|
@@ -92,12 +95,15 @@ export function getServerManifest(route: RouteNode): OneRouterServerManifestV1 {
|
|
92
95
|
const apiRoutes: OneRouterServerManifestV1Route[] = []
|
93
96
|
const middlewareRoutes: OneRouterServerManifestV1Route[] = []
|
94
97
|
const pageRoutes: OneRouterServerManifestV1Route[] = []
|
98
|
+
const allRoutes: OneRouterServerManifestV1Route[] = []
|
95
99
|
|
96
100
|
const addedMiddlewares: Record<string, boolean> = {}
|
97
101
|
|
98
102
|
for (const [path, node] of flat) {
|
99
103
|
if (node.type === 'api') {
|
100
|
-
|
104
|
+
const route = getGeneratedNamedRouteRegex(path, node)
|
105
|
+
apiRoutes.push(route)
|
106
|
+
allRoutes.push(route)
|
101
107
|
continue
|
102
108
|
}
|
103
109
|
|
@@ -110,13 +116,16 @@ export function getServerManifest(route: RouteNode): OneRouterServerManifestV1 {
|
|
110
116
|
}
|
111
117
|
}
|
112
118
|
|
113
|
-
|
119
|
+
const route = getGeneratedNamedRouteRegex(path, node)
|
120
|
+
pageRoutes.push(route)
|
121
|
+
allRoutes.push(route)
|
114
122
|
}
|
115
123
|
|
116
124
|
return {
|
117
125
|
apiRoutes,
|
118
126
|
middlewareRoutes,
|
119
127
|
pageRoutes,
|
128
|
+
allRoutes,
|
120
129
|
}
|
121
130
|
}
|
122
131
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import Path from 'node:path'
|
2
|
+
|
3
|
+
export function getPathnameFromFilePath(
|
4
|
+
inputPath: string,
|
5
|
+
params = {},
|
6
|
+
strict = false,
|
7
|
+
options: { preserveExtensions?: boolean } = {}
|
8
|
+
) {
|
9
|
+
const path = inputPath.replace(/\+(spa|ssg|ssr|api)\.tsx?$/, '')
|
10
|
+
const dirname = Path.dirname(path).replace(/\([^\/]+\)/gi, '')
|
11
|
+
const file = Path.basename(path)
|
12
|
+
const fileName = options.preserveExtensions ? file : file.replace(/\.[a-z]+$/, '')
|
13
|
+
|
14
|
+
function paramsError(part: string) {
|
15
|
+
throw new Error(
|
16
|
+
`[one] Params doesn't fit route:
|
17
|
+
|
18
|
+
- path: ${path}
|
19
|
+
- part: ${part}
|
20
|
+
- fileName: ${fileName}
|
21
|
+
- params:
|
22
|
+
|
23
|
+
${JSON.stringify(params, null, 2)}`
|
24
|
+
)
|
25
|
+
}
|
26
|
+
|
27
|
+
const nameWithParams = (() => {
|
28
|
+
if (fileName === 'index') {
|
29
|
+
return '/'
|
30
|
+
}
|
31
|
+
if (fileName.startsWith('[...')) {
|
32
|
+
const part = fileName.replace('[...', '').replace(']', '')
|
33
|
+
if (!params[part]) {
|
34
|
+
if (strict) {
|
35
|
+
throw paramsError(part)
|
36
|
+
}
|
37
|
+
return `/*`
|
38
|
+
}
|
39
|
+
return `/${params[part]}`
|
40
|
+
}
|
41
|
+
return `/${fileName
|
42
|
+
.split('/')
|
43
|
+
.map((part) => {
|
44
|
+
if (part[0] === '[') {
|
45
|
+
const found = params[part.slice(1, part.length - 1)]
|
46
|
+
if (!found) {
|
47
|
+
if (strict) {
|
48
|
+
throw paramsError(part)
|
49
|
+
}
|
50
|
+
|
51
|
+
return ':' + part.replace('[', '').replace(']', '')
|
52
|
+
}
|
53
|
+
return found
|
54
|
+
}
|
55
|
+
return part
|
56
|
+
})
|
57
|
+
.join('/')}`
|
58
|
+
})()
|
59
|
+
|
60
|
+
// hono path will convert +not-found etc too
|
61
|
+
return `${dirname}${nameWithParams}`.replace(/\/\/+/gi, '/')
|
62
|
+
}
|
@@ -8,9 +8,10 @@ import { createApiServerlessFunction } from './generate/createApiServerlessFunct
|
|
8
8
|
import { createSsrServerlessFunction } from './generate/createSsrServerlessFunction'
|
9
9
|
import { serverlessVercelNodeJsConfig } from './config/vc-config-base'
|
10
10
|
import { serverlessVercelPackageJson } from './config/vc-package-base'
|
11
|
-
import {
|
11
|
+
import { vercelBuildOutputConfigBase } from './config/vc-build-output-config-base'
|
12
12
|
|
13
13
|
import type { One } from '../../vite/types'
|
14
|
+
import { getPathFromRoute } from './getPathFromRoute'
|
14
15
|
|
15
16
|
const { copy, ensureDir, existsSync, writeJSON } = FSExtra
|
16
17
|
|
@@ -49,21 +50,8 @@ export const buildVercelOutputDirectory = async ({
|
|
49
50
|
postBuildLogs.push(
|
50
51
|
`[one.build][vercel] generating serverless function for apiRoute ${route.page}`
|
51
52
|
)
|
52
|
-
await createApiServerlessFunction(
|
53
|
-
route.page,
|
54
|
-
compiledRoute.code,
|
55
|
-
oneOptionsRoot,
|
56
|
-
postBuildLogs
|
57
|
-
)
|
58
53
|
|
59
|
-
|
60
|
-
await createApiServerlessFunction(
|
61
|
-
route.urlCleanPath,
|
62
|
-
compiledRoute.code,
|
63
|
-
oneOptionsRoot,
|
64
|
-
postBuildLogs
|
65
|
-
)
|
66
|
-
}
|
54
|
+
await createApiServerlessFunction(route, compiledRoute.code, oneOptionsRoot, postBuildLogs)
|
67
55
|
} else {
|
68
56
|
console.warn('\n 🔨[one.build][vercel] apiRoute missing code compilation for', route.file)
|
69
57
|
}
|
@@ -83,7 +71,7 @@ export const buildVercelOutputDirectory = async ({
|
|
83
71
|
`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`
|
84
72
|
)
|
85
73
|
await createSsrServerlessFunction(
|
86
|
-
route
|
74
|
+
route,
|
87
75
|
buildInfoForWriting,
|
88
76
|
oneOptionsRoot,
|
89
77
|
postBuildLogs
|
@@ -101,7 +89,7 @@ export const buildVercelOutputDirectory = async ({
|
|
101
89
|
const distMiddlewareDir = resolve(join(oneOptionsRoot, 'dist', 'middlewares'))
|
102
90
|
if (existsSync(distMiddlewareDir)) {
|
103
91
|
const vercelMiddlewareDir = resolve(
|
104
|
-
join(oneOptionsRoot, '.vercel/output/functions/_middleware')
|
92
|
+
join(oneOptionsRoot, '.vercel/output/functions/_middleware.func')
|
105
93
|
)
|
106
94
|
await ensureDir(vercelMiddlewareDir)
|
107
95
|
postBuildLogs.push(
|
@@ -113,13 +101,35 @@ export const buildVercelOutputDirectory = async ({
|
|
113
101
|
`[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`
|
114
102
|
)
|
115
103
|
await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson)
|
104
|
+
const wrappedMiddlewareEntryPointFilename = '_wrapped_middleware.js'
|
105
|
+
const wrappedMiddlewareEntryPointPath = resolve(
|
106
|
+
join(vercelMiddlewareDir, wrappedMiddlewareEntryPointFilename)
|
107
|
+
)
|
108
|
+
await FSExtra.writeFile(
|
109
|
+
wrappedMiddlewareEntryPointPath,
|
110
|
+
`
|
111
|
+
import middlewareFunction from './_middleware.js'
|
112
|
+
|
113
|
+
const next = (e) => {
|
114
|
+
const t = new Headers(null == e ? void 0 : e.headers)
|
115
|
+
t.set('x-middleware-next', '1')
|
116
|
+
return new Response(null, { ...e, headers: t })
|
117
|
+
}
|
118
|
+
|
119
|
+
const wrappedMiddlewareFunction = (request, event) => {
|
120
|
+
return middlewareFunction({ request, event, next })
|
121
|
+
}
|
122
|
+
|
123
|
+
export { wrappedMiddlewareFunction as default }
|
124
|
+
`
|
125
|
+
)
|
116
126
|
const middlewareVercelConfigFilePath = resolve(join(vercelMiddlewareDir, '.vc-config.json'))
|
117
127
|
postBuildLogs.push(
|
118
128
|
`[one.build][vercel] writing .vc-config.json to ${middlewareVercelConfigFilePath}`
|
119
129
|
)
|
120
130
|
await writeJSON(middlewareVercelConfigFilePath, {
|
121
|
-
|
122
|
-
|
131
|
+
runtime: 'edge', // Seems that middlewares only work with edge runtime
|
132
|
+
entrypoint: wrappedMiddlewareEntryPointFilename,
|
123
133
|
})
|
124
134
|
}
|
125
135
|
|
@@ -134,6 +144,31 @@ export const buildVercelOutputDirectory = async ({
|
|
134
144
|
// Documentation - Vercel Build Output v3 config.json
|
135
145
|
// https://vercel.com/docs/build-output-api/v3/configuration#config.json-supported-properties
|
136
146
|
const vercelConfigFilePath = resolve(join(oneOptionsRoot, '.vercel/output', 'config.json'))
|
137
|
-
await writeJSON(vercelConfigFilePath,
|
147
|
+
await writeJSON(vercelConfigFilePath, {
|
148
|
+
...vercelBuildOutputConfigBase,
|
149
|
+
routes: [
|
150
|
+
...vercelBuildOutputConfigBase.routes,
|
151
|
+
...(existsSync(distMiddlewareDir)
|
152
|
+
? [
|
153
|
+
{
|
154
|
+
src: '/(.*)',
|
155
|
+
middlewarePath: '_middleware',
|
156
|
+
continue: true,
|
157
|
+
},
|
158
|
+
]
|
159
|
+
: []),
|
160
|
+
{
|
161
|
+
handle: 'rewrite',
|
162
|
+
},
|
163
|
+
...buildInfoForWriting.manifest.allRoutes
|
164
|
+
.filter((r) => r.routeKeys && Object.keys(r.routeKeys).length > 0)
|
165
|
+
.map((r) => ({
|
166
|
+
src: r.namedRegex,
|
167
|
+
dest: `${getPathFromRoute(r)}?${Object.entries(r.routeKeys)
|
168
|
+
.map(([k, v]) => `${k}=$${v}`)
|
169
|
+
.join('&')}`,
|
170
|
+
})),
|
171
|
+
],
|
172
|
+
})
|
138
173
|
postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`)
|
139
174
|
}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
// Documentation - Vercel Build Output v3 Config
|
2
2
|
// https://vercel.com/docs/build-output-api/v3/configuration#config.json-supported-properties
|
3
|
-
export const
|
3
|
+
export const vercelBuildOutputConfigBase = {
|
4
4
|
version: 3,
|
5
5
|
// https://vercel.com/docs/build-output-api/v3/configuration#routes
|
6
6
|
routes: [
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
// Not sure if we really need this, but having this seems to break the 'rewrite's we will add to handle dynamic routes.
|
8
|
+
// {
|
9
|
+
// src: '/(.*)',
|
10
|
+
// status: 200,
|
11
|
+
// },
|
11
12
|
],
|
12
13
|
}
|