one 1.1.450 → 1.1.451
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 +15 -22
- package/dist/cjs/cli/build.js +14 -31
- package/dist/cjs/cli/build.js.map +1 -1
- package/dist/cjs/cli/build.native.js +15 -24
- package/dist/cjs/cli/build.native.js.map +2 -2
- package/dist/cjs/cli.cjs +0 -4
- package/dist/cjs/cli.js +0 -4
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/cli.native.js +0 -4
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/serve.cjs +1 -2
- package/dist/cjs/serve.js +1 -2
- package/dist/cjs/serve.js.map +1 -1
- package/dist/cjs/serve.native.js +1 -2
- package/dist/cjs/serve.native.js.map +2 -2
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.cjs +103 -0
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.js +102 -0
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.js.map +6 -0
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +111 -0
- package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +6 -0
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.cjs +33 -0
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.js +30 -0
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.js.map +6 -0
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js +35 -0
- package/dist/cjs/vercel/build/config/vc-build-output-config-base.native.js.map +6 -0
- package/dist/cjs/vercel/build/config/vc-config-base.cjs +45 -0
- package/dist/cjs/vercel/build/config/vc-config-base.js +40 -0
- package/dist/cjs/vercel/build/config/vc-config-base.js.map +6 -0
- package/dist/cjs/vercel/build/config/vc-config-base.native.js +33 -0
- package/dist/cjs/vercel/build/config/vc-config-base.native.js.map +6 -0
- package/dist/cjs/vercel/build/config/vc-package-base.cjs +28 -0
- package/dist/cjs/vercel/build/config/vc-package-base.js +21 -0
- package/dist/cjs/vercel/build/config/vc-package-base.js.map +6 -0
- package/dist/cjs/vercel/build/config/vc-package-base.native.js +28 -0
- package/dist/cjs/vercel/build/config/vc-package-base.native.js.map +6 -0
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.cjs +58 -0
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js +63 -0
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.js.map +6 -0
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js +52 -0
- package/dist/cjs/vercel/build/generate/createApiServerlessFunction.native.js.map +6 -0
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.cjs +103 -0
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js +106 -0
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.js.map +6 -0
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js +95 -0
- package/dist/cjs/vercel/build/generate/createSsrServerlessFunction.native.js.map +6 -0
- package/dist/cjs/vite/one-server-only.cjs +3 -1
- package/dist/cjs/vite/one-server-only.js +1 -1
- package/dist/cjs/vite/one-server-only.js.map +1 -1
- package/dist/cjs/vite/types.native.js.map +1 -1
- package/dist/esm/cli/build.js +14 -30
- package/dist/esm/cli/build.js.map +1 -1
- package/dist/esm/cli/build.mjs +15 -22
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +16 -25
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/cli.js +0 -4
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/cli.mjs +0 -4
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/cli.native.js +0 -4
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/serve.js +1 -2
- package/dist/esm/serve.js.map +1 -1
- package/dist/esm/serve.mjs +1 -2
- package/dist/esm/serve.mjs.map +1 -1
- package/dist/esm/serve.native.js +1 -2
- package/dist/esm/serve.native.js.map +1 -1
- package/dist/esm/vercel/build/buildVercelOutputDirectory.js +85 -0
- package/dist/esm/vercel/build/buildVercelOutputDirectory.js.map +6 -0
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs +69 -0
- package/dist/esm/vercel/build/buildVercelOutputDirectory.mjs.map +1 -0
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +107 -0
- package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.js +14 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.js.map +6 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs +10 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.mjs.map +1 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js +10 -0
- package/dist/esm/vercel/build/config/vc-build-output-config-base.native.js.map +1 -0
- package/dist/esm/vercel/build/config/vc-config-base.js +24 -0
- package/dist/esm/vercel/build/config/vc-config-base.js.map +6 -0
- package/dist/esm/vercel/build/config/vc-config-base.mjs +22 -0
- package/dist/esm/vercel/build/config/vc-config-base.mjs.map +1 -0
- package/dist/esm/vercel/build/config/vc-config-base.native.js +10 -0
- package/dist/esm/vercel/build/config/vc-config-base.native.js.map +1 -0
- package/dist/esm/vercel/build/config/vc-package-base.js +5 -0
- package/dist/esm/vercel/build/config/vc-package-base.js.map +6 -0
- package/dist/esm/vercel/build/config/vc-package-base.mjs +5 -0
- package/dist/esm/vercel/build/config/vc-package-base.mjs.map +1 -0
- package/dist/esm/vercel/build/config/vc-package-base.native.js +5 -0
- package/dist/esm/vercel/build/config/vc-package-base.native.js.map +1 -0
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.js +42 -0
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.js.map +6 -0
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs +24 -0
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.mjs.map +1 -0
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js +24 -0
- package/dist/esm/vercel/build/generate/createApiServerlessFunction.native.js.map +1 -0
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js +85 -0
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.js.map +6 -0
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs +69 -0
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.mjs.map +1 -0
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js +69 -0
- package/dist/esm/vercel/build/generate/createSsrServerlessFunction.native.js.map +1 -0
- package/dist/esm/vite/one-server-only.js +1 -1
- package/dist/esm/vite/one-server-only.js.map +1 -1
- package/dist/esm/vite/one-server-only.mjs +3 -1
- package/dist/esm/vite/one-server-only.mjs.map +1 -1
- package/package.json +9 -8
- package/src/cli/build.ts +34 -31
- package/src/cli.ts +0 -4
- package/src/serve.ts +0 -1
- package/src/server/createRoutesManifest.ts +1 -1
- package/src/vercel/build/buildVercelOutputDirectory.ts +126 -0
- package/src/vercel/build/config/vc-build-output-config-base.ts +12 -0
- package/src/vercel/build/config/vc-config-base.ts +22 -0
- package/src/vercel/build/config/vc-package-base.ts +1 -0
- package/src/vercel/build/generate/createApiServerlessFunction.ts +66 -0
- package/src/vercel/build/generate/createSsrServerlessFunction.ts +108 -0
- package/src/vite/one-server-only.tsx +6 -1
- package/src/vite/types.ts +2 -3
- package/types/cli/build.d.ts.map +1 -1
- package/types/serve.d.ts +1 -8
- package/types/serve.d.ts.map +1 -1
- package/types/server/createRoutesManifest.d.ts +1 -1
- package/types/server/createRoutesManifest.d.ts.map +1 -1
- package/types/vercel/build/buildVercelOutputDirectory.d.ts +10 -0
- package/types/vercel/build/buildVercelOutputDirectory.d.ts.map +1 -0
- package/types/vercel/build/config/vc-build-output-config-base.d.ts +8 -0
- package/types/vercel/build/config/vc-build-output-config-base.d.ts.map +1 -0
- package/types/vercel/build/config/vc-config-base.d.ts +9 -0
- package/types/vercel/build/config/vc-config-base.d.ts.map +1 -0
- package/types/vercel/build/config/vc-package-base.d.ts +4 -0
- package/types/vercel/build/config/vc-package-base.d.ts.map +1 -0
- package/types/vercel/build/generate/createApiServerlessFunction.d.ts +2 -0
- package/types/vercel/build/generate/createApiServerlessFunction.d.ts.map +1 -0
- package/types/vercel/build/generate/createSsrServerlessFunction.d.ts +3 -0
- package/types/vercel/build/generate/createSsrServerlessFunction.d.ts.map +1 -0
- package/types/vite/one-server-only.d.ts.map +1 -1
- package/types/vite/types.d.ts +3 -3
- package/types/vite/types.d.ts.map +1 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["join","resolve","fs","serverlessVercelPackageJson","serverlessVercelNodeJsConfig","createApiServerlessFunction","pageName","code","oneOptionsRoot","postBuildLogs","push","funcFolder","ensureDir","includes","copy","distAssetsFolder","entrypointFilePath","writeFile","packageJsonFilePath","writeJSON","writeJson","handler","e","console","error"],"sources":["../../../../../src/vercel/build/generate/createApiServerlessFunction.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAA,EAAMC,OAAA,QAAe;AAE9B,OAAOC,EAAA,MAAQ;AAEf,SAASC,2BAAA,QAAmC;AAC5C,SAASC,4BAAA,QAAoC;AAI7C,eAAsBC,4BACpBC,QAAA,EACAC,IAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACFA,aAAA,CAAcC,IAAA,CAAK,6DAA6DJ,QAAQ,EAAE;IAE1F,IAAAK,UAAM,GAAAX,IAAa,CAAAQ,cAAK,QAAgB,8BAAQF,QAA4B,OAAQ;IACpF,MAAMJ,EAAA,CAAGU,SAAA,CAAUD,UAAU,GAEzBJ,IAAA,CAAKM,QAAA,CAAS,OAAO,MACvBJ,aAAA,CAAcC,IAAA,yFAAAJ,QAAA,WAAAJ,EAAA,CAAAY,IAAA,CAAAb,OAAA,CAAAD,IAAA,CAAAQ,cAAA,yCAAAP,OAAA,CAAAD,IAAA,CAAAW,UAAA;IAAA,IACZI,gBAAA,GAAAd,OAAA,CAAAD,IAAA,CAAAW,UAAA;IACFF,aACS,CAAAC,IAAA,0EAAAK,gBAAA,WAAAb,EAAA,CAAAY,IAAA,CAAAb,OAAA,CAAAD,IAAA,CAAAQ,cAAA,6BAAAO,gBAAA,SAAAb,EAAA,CAAAU,SAAA,CAAAX,OAAA,CAAAD,IAAA,CAAAW,UAAA;IAAA,IACPK,kBAAa,GAAAf,OAAgB,CAAAD,IAAM,CAAAW,UAAM,cAAgB,YAAQ;IAAAF,aACzD,CAAAC,IAAK,0EAAoCM,kBAAA,WAAAd,EAAA,CAAAe,SAAA,CAAAD,kBAAA,EAAAT,IAAA;IACnD,IAAAW,mBAAA,GAAAjB,OAAA,CAAAD,IAAA,CAAAW,UAAA;IAGF,OAAMF,aAAA,CAAAC,IAAmB,4EAAkCQ,mBAAA,WAAAhB,EAAA,CAAAiB,SAAA,CAAAD,mBAAA,EAAAf,2BAAA,GAAAM,aAAA,CAAAC,IAAA,+EAAAV,IAAA,CAAAW,UAAA,yBAAAT,EAAA,CAAAkB,SAAA,CAAApB,IAAA,CAAAW,UAAA;MAC3D,GAAAP,4BAAc;MACZiB,OAAA;IACF;EAIA,SAAMC,CAAA;IACNC,OAAA,CAAAC,KAAA,CAAc,+EAAAlB,QAAA,IAAAgB,CAAA;EAAA;AAC+E;AAI7F,SACAjB,2BAAc","ignoreList":[]}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
import fs from "fs-extra";
|
2
|
+
import { join, resolve } from "node:path";
|
3
|
+
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base";
|
4
|
+
import { serverlessVercelPackageJson } from "../config/vc-package-base";
|
5
|
+
async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot, postBuildLogs) {
|
6
|
+
try {
|
7
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
|
8
|
+
const buildInfoAsString = JSON.stringify(buildInfo), funcFolder = resolve(
|
9
|
+
join(oneOptionsRoot, "dist", `.vercel/output/functions/${pageName}.func`)
|
10
|
+
);
|
11
|
+
await fs.ensureDir(funcFolder);
|
12
|
+
const distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")), distServerTo = resolve(join(funcFolder, "server"));
|
13
|
+
await fs.ensureDir(distServerTo), postBuildLogs.push(
|
14
|
+
`[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`
|
15
|
+
), await fs.copy(distServerFrom, distServerTo), postBuildLogs.push("[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json"), await fs.writeFile(join(funcFolder, "buildInfo.js"), `export default ${buildInfoAsString}`), await fs.ensureDir(join(funcFolder, "entrypoint"));
|
16
|
+
const entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
|
17
|
+
postBuildLogs.push(
|
18
|
+
`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`
|
19
|
+
), await fs.writeFile(
|
20
|
+
entrypointFilePath,
|
21
|
+
`
|
22
|
+
const buildInfoConfig = await import('../buildInfo.js');
|
23
|
+
const entry = await import('../server/_virtual_one-entry.js');
|
24
|
+
|
25
|
+
const handler = async (req, res) => {
|
26
|
+
// console.debug("req.url", req.url);
|
27
|
+
const url = new URL(req.url, \`https://\${process.env.VERCEL_URL}\`);
|
28
|
+
const loaderProps = {
|
29
|
+
path: url.pathname,
|
30
|
+
params: Object.fromEntries(url.searchParams.entries())
|
31
|
+
}
|
32
|
+
const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
|
33
|
+
const routeFile = \`.\${url.pathname}\${postfix}\`;
|
34
|
+
const route = buildInfoConfig.default.routeToBuildInfo[routeFile];
|
35
|
+
|
36
|
+
const render = entry.default.render;
|
37
|
+
const exported = await import(route.serverJsPath.replace('dist/','../'))
|
38
|
+
const loaderData = await exported.loader?.(loaderProps)
|
39
|
+
const preloads = route.preloads
|
40
|
+
const rendered = await render({
|
41
|
+
mode: route.type,
|
42
|
+
loaderData,
|
43
|
+
loaderProps,
|
44
|
+
path: loaderProps?.path || '/',
|
45
|
+
preloads,
|
46
|
+
})
|
47
|
+
res.setHeader('Content-Type', 'text/html; charset=utf-8')
|
48
|
+
// https://vercel.com/docs/deployments/skew-protection#supported-frameworks__
|
49
|
+
if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {
|
50
|
+
res.setHeader('Set-Cookie', [
|
51
|
+
\`__vdpl=\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\`,
|
52
|
+
]);
|
53
|
+
}
|
54
|
+
res.end(rendered)
|
55
|
+
}
|
56
|
+
|
57
|
+
export default handler;
|
58
|
+
`
|
59
|
+
);
|
60
|
+
const packageJsonFilePath = resolve(join(funcFolder, "package.json"));
|
61
|
+
postBuildLogs.push(
|
62
|
+
`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`
|
63
|
+
), await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson);
|
64
|
+
const vcConfigFilePath = resolve(join(funcFolder, ".vc-config.json"));
|
65
|
+
return postBuildLogs.push(
|
66
|
+
`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`
|
67
|
+
), fs.writeJson(vcConfigFilePath, {
|
68
|
+
...serverlessVercelNodeJsConfig,
|
69
|
+
handler: "entrypoint/index.js",
|
70
|
+
environment: {
|
71
|
+
...serverlessVercelNodeJsConfig.environment,
|
72
|
+
ONE_DEFAULT_RENDER_MODE: "ssr"
|
73
|
+
}
|
74
|
+
});
|
75
|
+
} catch (e) {
|
76
|
+
console.error(
|
77
|
+
`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`,
|
78
|
+
e
|
79
|
+
);
|
80
|
+
}
|
81
|
+
}
|
82
|
+
export {
|
83
|
+
createSsrServerlessFunction
|
84
|
+
};
|
85
|
+
//# sourceMappingURL=createSsrServerlessFunction.js.map
|
@@ -0,0 +1,6 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../../../src/vercel/build/generate/createSsrServerlessFunction.ts"],
|
4
|
+
"mappings": "AAAA,OAAO,QAAQ;AACf,SAAS,MAAM,eAAe;AAC9B,SAAS,oCAAoC;AAC7C,SAAS,mCAAmC;AAK5C,eAAsB,4BACpB,UACA,WACA,gBACA,eACA;AACA,MAAI;AACF,kBAAc,KAAK,6DAA6D,QAAQ,EAAE;AAE1F,UAAM,oBAAoB,KAAK,UAAU,SAAS,GAC5C,aAAa;AAAA,MACjB,KAAK,gBAAgB,QAAQ,4BAA4B,QAAQ,OAAO;AAAA,IAC1E;AACA,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;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,IAsCF;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,QAAQ;AAAA,MACvF;AAAA,IACF;AAAA,EACF;AACF;",
|
5
|
+
"names": []
|
6
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import fs from "fs-extra";
|
2
|
+
import { join, resolve } from "node:path";
|
3
|
+
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.mjs";
|
4
|
+
import { serverlessVercelPackageJson } from "../config/vc-package-base.mjs";
|
5
|
+
async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot, postBuildLogs) {
|
6
|
+
try {
|
7
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
|
8
|
+
const buildInfoAsString = JSON.stringify(buildInfo),
|
9
|
+
funcFolder = resolve(join(oneOptionsRoot, "dist", `.vercel/output/functions/${pageName}.func`));
|
10
|
+
await fs.ensureDir(funcFolder);
|
11
|
+
const distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")),
|
12
|
+
distServerTo = resolve(join(funcFolder, "server"));
|
13
|
+
await fs.ensureDir(distServerTo), postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`), await fs.copy(distServerFrom, distServerTo), postBuildLogs.push("[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json"), await fs.writeFile(join(funcFolder, "buildInfo.js"), `export default ${buildInfoAsString}`), await fs.ensureDir(join(funcFolder, "entrypoint"));
|
14
|
+
const entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
|
15
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, `
|
16
|
+
const buildInfoConfig = await import('../buildInfo.js');
|
17
|
+
const entry = await import('../server/_virtual_one-entry.js');
|
18
|
+
|
19
|
+
const handler = async (req, res) => {
|
20
|
+
// console.debug("req.url", req.url);
|
21
|
+
const url = new URL(req.url, \`https://\${process.env.VERCEL_URL}\`);
|
22
|
+
const loaderProps = {
|
23
|
+
path: url.pathname,
|
24
|
+
params: Object.fromEntries(url.searchParams.entries())
|
25
|
+
}
|
26
|
+
const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
|
27
|
+
const routeFile = \`.\${url.pathname}\${postfix}\`;
|
28
|
+
const route = buildInfoConfig.default.routeToBuildInfo[routeFile];
|
29
|
+
|
30
|
+
const render = entry.default.render;
|
31
|
+
const exported = await import(route.serverJsPath.replace('dist/','../'))
|
32
|
+
const loaderData = await exported.loader?.(loaderProps)
|
33
|
+
const preloads = route.preloads
|
34
|
+
const rendered = await render({
|
35
|
+
mode: route.type,
|
36
|
+
loaderData,
|
37
|
+
loaderProps,
|
38
|
+
path: loaderProps?.path || '/',
|
39
|
+
preloads,
|
40
|
+
})
|
41
|
+
res.setHeader('Content-Type', 'text/html; charset=utf-8')
|
42
|
+
// https://vercel.com/docs/deployments/skew-protection#supported-frameworks__
|
43
|
+
if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {
|
44
|
+
res.setHeader('Set-Cookie', [
|
45
|
+
\`__vdpl=\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\`,
|
46
|
+
]);
|
47
|
+
}
|
48
|
+
res.end(rendered)
|
49
|
+
}
|
50
|
+
|
51
|
+
export default handler;
|
52
|
+
`);
|
53
|
+
const packageJsonFilePath = resolve(join(funcFolder, "package.json"));
|
54
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`), await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson);
|
55
|
+
const vcConfigFilePath = resolve(join(funcFolder, ".vc-config.json"));
|
56
|
+
return postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`), fs.writeJson(vcConfigFilePath, {
|
57
|
+
...serverlessVercelNodeJsConfig,
|
58
|
+
handler: "entrypoint/index.js",
|
59
|
+
environment: {
|
60
|
+
...serverlessVercelNodeJsConfig.environment,
|
61
|
+
ONE_DEFAULT_RENDER_MODE: "ssr"
|
62
|
+
}
|
63
|
+
});
|
64
|
+
} catch (e) {
|
65
|
+
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`, e);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
export { createSsrServerlessFunction };
|
69
|
+
//# sourceMappingURL=createSsrServerlessFunction.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","createSsrServerlessFunction","pageName","buildInfo","oneOptionsRoot","postBuildLogs","push","buildInfoAsString","JSON","stringify","funcFolder","ensureDir","distServerFrom","distServerTo","copy","writeFile","entrypointFilePath","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;AAK5C,eAAsBC,4BACpBC,QAAA,EACAC,SAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACFA,aAAA,CAAcC,IAAA,CAAK,6DAA6DJ,QAAQ,EAAE;IAE1F,MAAMK,iBAAA,GAAoBC,IAAA,CAAKC,SAAA,CAAUN,SAAS;MAC5CO,UAAA,GAAaZ,OAAA,CACjBD,IAAA,CAAKO,cAAA,EAAgB,QAAQ,4BAA4BF,QAAQ,OAAO,CAC1E;IACA,MAAMN,EAAA,CAAGe,SAAA,CAAUD,UAAU;IAE7B,MAAME,cAAA,GAAiBd,OAAA,CAAQD,IAAA,CAAKO,cAAA,EAAgB,QAAQ,QAAQ,CAAC;MAC/DS,YAAA,GAAef,OAAA,CAAQD,IAAA,CAAKa,UAAA,EAAY,QAAQ,CAAC;IACvD,MAAMd,EAAA,CAAGe,SAAA,CAAUE,YAAY,GAC/BR,aAAA,CAAcC,IAAA,CACZ,+EAA+EM,cAAc,OAAOC,YAAY,EAClH,GACA,MAAMjB,EAAA,CAAGkB,IAAA,CAAKF,cAAA,EAAgBC,YAAY,GAE1CR,aAAA,CAAcC,IAAA,CAAK,wEAAwE,GAC3F,MAAMV,EAAA,CAAGmB,SAAA,CAAUlB,IAAA,CAAKa,UAAA,EAAY,cAAc,GAAG,kBAAkBH,iBAAiB,EAAE,GAE1F,MAAMX,EAAA,CAAGe,SAAA,CAAUd,IAAA,CAAKa,UAAA,EAAY,YAAY,CAAC;IACjD,MAAMM,kBAAA,GAAqBlB,OAAA,CAAQD,IAAA,CAAKa,UAAA,EAAY,cAAc,UAAU,CAAC;IAC7EL,aAAA,CAAcC,IAAA,CACZ,yEAAyEU,kBAAkB,EAC7F,GACA,MAAMpB,EAAA,CAAGmB,SAAA,CACPC,kBAAA,EACA;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,GAsCF;IAEA,MAAMC,mBAAA,GAAsBnB,OAAA,CAAQD,IAAA,CAAKa,UAAA,EAAY,cAAc,CAAC;IACpEL,aAAA,CAAcC,IAAA,CACZ,2EAA2EW,mBAAmB,EAChG,GACA,MAAMrB,EAAA,CAAGsB,SAAA,CAAUD,mBAAA,EAAqBjB,2BAA2B;IAInE,MAAMmB,gBAAA,GAAmBrB,OAAA,CAAQD,IAAA,CAAKa,UAAA,EAAY,iBAAiB,CAAC;IACpE,OAAAL,aAAA,CAAcC,IAAA,CACZ,8EAA8Ea,gBAAgB,EAChG,GACOvB,EAAA,CAAGwB,SAAA,CAAUD,gBAAA,EAAkB;MACpC,GAAGpB,4BAAA;MACHsB,OAAA,EAAS;MACTC,WAAA,EAAa;QACX,GAAGvB,4BAAA,CAA6BuB,WAAA;QAChCC,uBAAA,EAAyB;MAC3B;IACF,CAAC;EACH,SAASC,CAAA,EAAG;IACVC,OAAA,CAAQC,KAAA,CACN,+EAA+ExB,QAAQ,IACvFsB,CACF;EACF;AACF","ignoreList":[]}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import fs from "fs-extra";
|
2
|
+
import { join, resolve } from "node:path";
|
3
|
+
import { serverlessVercelNodeJsConfig } from "../config/vc-config-base.native.js";
|
4
|
+
import { serverlessVercelPackageJson } from "../config/vc-package-base.native.js";
|
5
|
+
async function createSsrServerlessFunction(pageName, buildInfo, oneOptionsRoot, postBuildLogs) {
|
6
|
+
try {
|
7
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] pageName: ${pageName}`);
|
8
|
+
var buildInfoAsString = JSON.stringify(buildInfo),
|
9
|
+
funcFolder = resolve(join(oneOptionsRoot, "dist", `.vercel/output/functions/${pageName}.func`));
|
10
|
+
await fs.ensureDir(funcFolder);
|
11
|
+
var distServerFrom = resolve(join(oneOptionsRoot, "dist", "server")),
|
12
|
+
distServerTo = resolve(join(funcFolder, "server"));
|
13
|
+
await fs.ensureDir(distServerTo), postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] copy server dist files from ${distServerFrom} to ${distServerTo}`), await fs.copy(distServerFrom, distServerTo), postBuildLogs.push("[one.build][vercel.createSsrServerlessFunction] writing buildInfo.json"), await fs.writeFile(join(funcFolder, "buildInfo.js"), `export default ${buildInfoAsString}`), await fs.ensureDir(join(funcFolder, "entrypoint"));
|
14
|
+
var entrypointFilePath = resolve(join(funcFolder, "entrypoint", "index.js"));
|
15
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing entrypoint to ${entrypointFilePath}`), await fs.writeFile(entrypointFilePath, `
|
16
|
+
const buildInfoConfig = await import('../buildInfo.js');
|
17
|
+
const entry = await import('../server/_virtual_one-entry.js');
|
18
|
+
|
19
|
+
const handler = async (req, res) => {
|
20
|
+
// console.debug("req.url", req.url);
|
21
|
+
const url = new URL(req.url, \`https://\${process.env.VERCEL_URL}\`);
|
22
|
+
const loaderProps = {
|
23
|
+
path: url.pathname,
|
24
|
+
params: Object.fromEntries(url.searchParams.entries())
|
25
|
+
}
|
26
|
+
const postfix = url.pathname.endsWith('/') ? 'index.tsx' : '+ssr.tsx';
|
27
|
+
const routeFile = \`.\${url.pathname}\${postfix}\`;
|
28
|
+
const route = buildInfoConfig.default.routeToBuildInfo[routeFile];
|
29
|
+
|
30
|
+
const render = entry.default.render;
|
31
|
+
const exported = await import(route.serverJsPath.replace('dist/','../'))
|
32
|
+
const loaderData = await exported.loader?.(loaderProps)
|
33
|
+
const preloads = route.preloads
|
34
|
+
const rendered = await render({
|
35
|
+
mode: route.type,
|
36
|
+
loaderData,
|
37
|
+
loaderProps,
|
38
|
+
path: loaderProps?.path || '/',
|
39
|
+
preloads,
|
40
|
+
})
|
41
|
+
res.setHeader('Content-Type', 'text/html; charset=utf-8')
|
42
|
+
// https://vercel.com/docs/deployments/skew-protection#supported-frameworks__
|
43
|
+
if (process.env.VERCEL_SKEW_PROTECTION_ENABLED === '1') {
|
44
|
+
res.setHeader('Set-Cookie', [
|
45
|
+
\`__vdpl=\${process.env.VERCEL_DEPLOYMENT_ID}; HttpOnly\`,
|
46
|
+
]);
|
47
|
+
}
|
48
|
+
res.end(rendered)
|
49
|
+
}
|
50
|
+
|
51
|
+
export default handler;
|
52
|
+
`);
|
53
|
+
var packageJsonFilePath = resolve(join(funcFolder, "package.json"));
|
54
|
+
postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing package.json to ${packageJsonFilePath}`), await fs.writeJSON(packageJsonFilePath, serverlessVercelPackageJson);
|
55
|
+
var vcConfigFilePath = resolve(join(funcFolder, ".vc-config.json"));
|
56
|
+
return postBuildLogs.push(`[one.build][vercel.createSsrServerlessFunction] writing .vc-config.json to ${vcConfigFilePath}`), fs.writeJson(vcConfigFilePath, {
|
57
|
+
...serverlessVercelNodeJsConfig,
|
58
|
+
handler: "entrypoint/index.js",
|
59
|
+
environment: {
|
60
|
+
...serverlessVercelNodeJsConfig.environment,
|
61
|
+
ONE_DEFAULT_RENDER_MODE: "ssr"
|
62
|
+
}
|
63
|
+
});
|
64
|
+
} catch (e) {
|
65
|
+
console.error(`[one.build][vercel.createSsrServerlessFunction] failed to generate func for ${pageName}`, e);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
export { createSsrServerlessFunction };
|
69
|
+
//# sourceMappingURL=createSsrServerlessFunction.native.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["fs","join","resolve","serverlessVercelNodeJsConfig","serverlessVercelPackageJson","createSsrServerlessFunction","pageName","buildInfo","oneOptionsRoot","postBuildLogs","push","buildInfoAsString","JSON","stringify","funcFolder","ensureDir","distServerFrom","distServerTo","copy","writeFile","entrypointFilePath","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;AAK5C,eAAsBC,4BACpBC,QAAA,EACAC,SAAA,EACAC,cAAA,EACAC,aAAA,EACA;EACA,IAAI;IACFA,aAAA,CAAcC,IAAA,CAAK,6DAA6DJ,QAAQ,EAAE;IAE1F,IAAAK,iBAAM,GAAAC,IAAoB,CAAAC,SAAK,CAAAN,SAAU;MAASO,UAC5C,GAAAZ,OAAa,CAAAD,IAAA,CAAAO,cAAA,sCAAAF,QAAA;IAAA,MACjBN,EAAK,CAAAe,SAAA,CAAAD,UAAgB;IACvB,IAAAE,cAAA,GAAAd,OAAA,CAAAD,IAAA,CAAAO,cAAA;MAAAS,YAAA,GAAAf,OAAA,CAAAD,IAAA,CAAAa,UAAA;IACA,MAAMd,EAAA,CAAGe,SAAA,CAAUE,YAAU,GAAAR,aAAA,CAAAC,IAAA,gFAAAM,cAAA,OAAAC,YAAA,WAAAjB,EAAA,CAAAkB,IAAA,CAAAF,cAAA,EAAAC,YAAA,GAAAR,aAAA,CAAAC,IAAA,kFAAAV,EAAA,CAAAmB,SAAA,CAAAlB,IAAA,CAAAa,UAAA,qCAAAH,iBAAA,WAAAX,EAAA,CAAAe,SAAA,CAAAd,IAAA,CAAAa,UAAA;IAE7B,IAAAM,kBAAM,GAAiBlB,OAAQ,CAAAD,IAAK,CAAAa,UAAA,cAAwB,YACtD;IACNL,aAAS,CAAAC,IAAA,CAAU,yEACLU,kBAAA,WAAApB,EAAA,CAAAmB,SAAA,CAAAC,kBAAA;AAAA;AACoG;AAQlH;AACA;AAAc;AAC+E;AAEpF;AACP;AACA;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,GAAAnB,OAAA,CAAAD,IAAA,CAAAa,UAAA;IAAAL,aAAA,CAAAC,IAAA,4EAAAW,mBAAA,WAAArB,EAAA,CAAAsB,SAAA,CAAAD,mBAAA,EAAAjB,2BAAA;IAAA,IAAAmB,gBAAA,GAAArB,OAAA,CAAAD,IAAA,CAAAa,UAAA;IAAA,OAAAL,aAAA,CAAAC,IAAA,+EAAAa,gBAAA,KAAAvB,EAAA,CAAAwB,SAAA,CAAAD,gBAAA;MAAA,GAAApB,4BAAA;MAAAsB,OAAA;MAAAC,WAAA;QAAA,GAAAvB,4BAAA,CAAAuB,WAAA;QAsCFC,uBAAA;MAEA;IACA;EAAc,SACZC,CAAA;IACFC,OACA,CAAAC,KAAS,gFAA0DxB,QAAA,IAAAsB,CAAA;EAInE;AACA;AAAc,SACkFvB,2BAE5E","ignoreList":[]}
|
@@ -25,7 +25,7 @@ function mergeHeaders(onto, from) {
|
|
25
25
|
});
|
26
26
|
}
|
27
27
|
function ensureAsyncLocalID() {
|
28
|
-
const id = requestAsyncLocalStore?.getStore();
|
28
|
+
const id = process.env.VERCEL ? { _id: Math.random() } : requestAsyncLocalStore?.getStore();
|
29
29
|
if (!id)
|
30
30
|
throw new Error("Internal One error, no AsyncLocalStorage id!");
|
31
31
|
return id;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
3
|
"sources": ["../../../src/vite/one-server-only.tsx"],
|
4
|
-
"mappings": "AAQA,SAAS,yBAAyB;AAClC,SAAS,0BAA0B;AAKnC,MAAM,MAAM,gCACN,OAAO,MAAM,WAAW,GAAG,GAE3B,oBAAoB;AAAA,EACxB,IAAI,UAAU;AACZ,QAAI,KAAK,EAAG,QAAO,KAAK;AACxB,UAAM,IAAI,IAAI,kBAAkB;AAChC,sBAAW,GAAG,IAAI,GACX;AAAA,EACT;AACF,GAEa,yBACX,QAAQ,IAAI,qBAAqB,QAAQ,kBAAkB,UAAU,MAEjE,WAAW,oBAAI,QAAsB,GAE9B,oBACV,WAAW,2BAAkD;AAEhE,WAAW,4BAA+B;AAE1C,eAAsB,yBAA4B,IAA4C;AAC5F,QAAM,KAAK,EAAE,KAAK,KAAK,OAAO,EAAE;AAChC,MAAI,MAAS;AACb,eAAM,kBAAkB,QAAS,IAAI,IAAI,YAAY;AACnD,UAAM,MAAM,GAAG,EAAE;AAAA,EACnB,CAAC,GACM;AACT;AAEA,eAAsB,mBAAmB,IAAgC;AACvE,QAAM,KAAK,mBAAmB,GACxB,UAAU,kBAAkB,IAAI,EAAE,KAAK,IAAI,QAAQ;AACzD,oBAAkB,IAAI,IAAI,OAAO,GACjC,GAAG,OAAO;AACZ;AAEO,SAAS,aAAa,MAAe,MAAe;AACzD,OAAK,QAAQ,CAAC,OAAOA,SAAQ;AAC3B,IAAI,UAAU,UAAa,UAAU,cACnC,KAAK,OAAOA,IAAG,IAEf,KAAK,OAAOA,MAAK,KAAK;AAAA,EAE1B,CAAC;AACH;AAEO,SAAS,qBAAqB;
|
4
|
+
"mappings": "AAQA,SAAS,yBAAyB;AAClC,SAAS,0BAA0B;AAKnC,MAAM,MAAM,gCACN,OAAO,MAAM,WAAW,GAAG,GAE3B,oBAAoB;AAAA,EACxB,IAAI,UAAU;AACZ,QAAI,KAAK,EAAG,QAAO,KAAK;AACxB,UAAM,IAAI,IAAI,kBAAkB;AAChC,sBAAW,GAAG,IAAI,GACX;AAAA,EACT;AACF,GAEa,yBACX,QAAQ,IAAI,qBAAqB,QAAQ,kBAAkB,UAAU,MAEjE,WAAW,oBAAI,QAAsB,GAE9B,oBACV,WAAW,2BAAkD;AAEhE,WAAW,4BAA+B;AAE1C,eAAsB,yBAA4B,IAA4C;AAC5F,QAAM,KAAK,EAAE,KAAK,KAAK,OAAO,EAAE;AAChC,MAAI,MAAS;AACb,eAAM,kBAAkB,QAAS,IAAI,IAAI,YAAY;AACnD,UAAM,MAAM,GAAG,EAAE;AAAA,EACnB,CAAC,GACM;AACT;AAEA,eAAsB,mBAAmB,IAAgC;AACvE,QAAM,KAAK,mBAAmB,GACxB,UAAU,kBAAkB,IAAI,EAAE,KAAK,IAAI,QAAQ;AACzD,oBAAkB,IAAI,IAAI,OAAO,GACjC,GAAG,OAAO;AACZ;AAEO,SAAS,aAAa,MAAe,MAAe;AACzD,OAAK,QAAQ,CAAC,OAAOA,SAAQ;AAC3B,IAAI,UAAU,UAAa,UAAU,cACnC,KAAK,OAAOA,IAAG,IAEf,KAAK,OAAOA,MAAK,KAAK;AAAA,EAE1B,CAAC;AACH;AAEO,SAAS,qBAAqB;AAMnC,QAAM,KAAK,QAAQ,IAAI,SAAS,EAAE,KAAK,KAAK,OAAO,EAAE,IAAI,wBAAwB,SAAS;AAE1F,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,8CAA8C;AAGhE,SAAO;AACT;AAIA,MAAM,iBAAiB,oBAAI,QAAgC;AAEpD,SAAS,iBAAiB,MAAyB;AACxD,MAAI,QAAQ,IAAI,qBAAqB,OAAO;AAC1C,UAAM,KAAK,mBAAmB;AAC9B,IAAK,eAAe,IAAI,EAAE,KACxB,eAAe,IAAI,IAAI,CAAC,CAAC;AAG3B,UAAM,UAAU,eAAe,IAAI,EAAE;AACrC,WAAO,OAAO,SAAS,IAAI;AAAA,EAC7B;AACE,UAAM,IAAI,MAAM,uCAAuC;AAE3D;AAEO,SAAS,mBAAmB;AASjC,UARa,MAAM;AACjB,QAAI,QAAQ,IAAI,qBAAqB,OAAO;AAC1C,YAAM,KAAK,mBAAmB;AAC9B,aAAO,eAAe,IAAI,EAAE;AAAA,IAC9B;AACA,WAAO,WAAW,kBAAkB;AAAA,EACtC,GAAG;AAGL;AAEO,SAAS,mBAAmB;AACjC,MAAI,QAAQ,IAAI,qBAAqB;AACnC,QAAI;AACF,YAAM,aAAa,WAAW;AAC9B,UAAI;AACF,eAAO,eAAe,IAAI,WAAW,CAAC;AAAA,IAE1C,QAAQ;AAAA,IAER;AAGF,SAAO,iBAAiB;AAC1B;AAQO,SAAS,cACdA,MACA,OACA;AACA,MAAI,QAAQ,IAAI,qBAAqB,OAAO;AAC1C,UAAM,UAAU,iBAAiB;AACjC,qBAAiB;AAAA,MACf,gBAAgB;AAAA,QACd,GAAG,SAAS;AAAA,QACZ,CAACA,IAAG,GAAG;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AACE,UAAM,IAAI,MAAM,2BAA2B,QAAQ,IAAI,gBAAgB,eAAe;AAE1F;AAKO,SAAS,cAAcA,MAA2B;AACvD,MAAI,QAAQ,IAAI,qBAAqB;AACnC,UAAM,IAAI,MAAM,oCAAoC;AAEtD,MAAI,QAAQ,IAAI,qBAAqB;AACnC,WAAO,iBAAiB,GAAG,iBAAiBA,IAAG;AAEnD;",
|
5
5
|
"names": ["key"]
|
6
6
|
}
|
@@ -33,7 +33,9 @@ function mergeHeaders(onto, from) {
|
|
33
33
|
});
|
34
34
|
}
|
35
35
|
function ensureAsyncLocalID() {
|
36
|
-
const id =
|
36
|
+
const id = process.env.VERCEL ? {
|
37
|
+
_id: Math.random()
|
38
|
+
} : requestAsyncLocalStore?.getStore();
|
37
39
|
if (!id) throw new Error("Internal One error, no AsyncLocalStorage id!");
|
38
40
|
return id;
|
39
41
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["AsyncLocalStorage","SERVER_CONTEXT_KEY","key","read","globalThis","ASYNC_LOCAL_STORE","current","_","requestAsyncLocalStore","process","env","VITE_ENVIRONMENT","newCache","WeakMap","asyncHeadersCache","__vxrnasyncHeadersCache","runWithAsyncLocalContext","cb","id","_id","Math","random","out","run","setResponseHeaders","ensureAsyncLocalID","headers","get","Headers","set","mergeHeaders","onto","from","forEach","value","key2","delete","append","getStore","Error","serverContexts","setServerContext","data","has","context","Object","assign","getServerContext","useServerContext","useContext","__vxrnGetContextFromReactContext","setServerData","postRenderData","getServerData"],"sources":["../../../src/vite/one-server-only.tsx"],"sourcesContent":[null],"mappings":"AAQA,SAASA,iBAAA,QAAyB;AAClC,SAASC,kBAAA,QAA0B;AAKnC,MAAMC,GAAA,GAAM;EACNC,IAAA,GAAOA,CAAA,KAAMC,UAAA,CAAWF,GAAG;EAE3BG,iBAAA,GAAoB;IACxB,IAAIC,QAAA,EAAU;MACZ,IAAIH,IAAA,CAAK,GAAG,OAAOA,IAAA,CAAK;MACxB,MAAMI,CAAA,GAAI,IAAIP,iBAAA,CAAkB;MAChC,OAAAI,UAAA,CAAWF,GAAG,IAAIK,CAAA,EACXA,CAAA;IACT;EACF;EAEaC,sBAAA,GACXC,OAAA,CAAQC,GAAA,CAAIC,gBAAA,KAAqB,QAAQN,iBAAA,CAAkBC,OAAA,GAAU;EAEjEM,QAAA,GAAW,mBAAIC,OAAA,CAAsB;EAE9BC,iBAAA,GACVV,UAAA,CAAWW,uBAAA,IAAkDH,QAAA;AAEhER,UAAA,CAAWW,uBAAA,KAA+BD,iBAAA;AAE1C,eAAsBE,yBAA4BC,EAAA,EAA4C;EAC5F,MAAMC,EAAA,GAAK;IAAEC,GAAA,EAAKC,IAAA,CAAKC,MAAA,CAAO;EAAE;EAChC,IAAIC,GAAA,GAAS;EACb,aAAMjB,iBAAA,CAAkBC,OAAA,CAASiB,GAAA,CAAIL,EAAA,EAAI,YAAY;IACnDI,GAAA,GAAM,MAAML,EAAA,CAAGC,EAAE;EACnB,CAAC,GACMI,GAAA;AACT;AAEA,eAAsBE,mBAAmBP,EAAA,EAAgC;EACvE,MAAMC,EAAA,GAAKO,kBAAA,CAAmB;IACxBC,OAAA,GAAUZ,iBAAA,CAAkBa,GAAA,CAAIT,EAAE,KAAK,IAAIU,OAAA,CAAQ;EACzDd,iBAAA,CAAkBe,GAAA,CAAIX,EAAA,EAAIQ,OAAO,GACjCT,EAAA,CAAGS,OAAO;AACZ;AAEO,SAASI,aAAaC,IAAA,EAAeC,IAAA,EAAe;EACzDA,IAAA,CAAKC,OAAA,CAAQ,CAACC,KAAA,EAAOC,IAAA,KAAQ;IACvBD,KAAA,KAAU,UAAaA,KAAA,KAAU,cACnCH,IAAA,CAAKK,MAAA,CAAOD,IAAG,IAEfJ,IAAA,CAAKM,MAAA,CAAOF,IAAA,EAAKD,KAAK;EAE1B,CAAC;AACH;AAEO,SAAST,mBAAA,EAAqB;
|
1
|
+
{"version":3,"names":["AsyncLocalStorage","SERVER_CONTEXT_KEY","key","read","globalThis","ASYNC_LOCAL_STORE","current","_","requestAsyncLocalStore","process","env","VITE_ENVIRONMENT","newCache","WeakMap","asyncHeadersCache","__vxrnasyncHeadersCache","runWithAsyncLocalContext","cb","id","_id","Math","random","out","run","setResponseHeaders","ensureAsyncLocalID","headers","get","Headers","set","mergeHeaders","onto","from","forEach","value","key2","delete","append","VERCEL","getStore","Error","serverContexts","setServerContext","data","has","context","Object","assign","getServerContext","useServerContext","useContext","__vxrnGetContextFromReactContext","setServerData","postRenderData","getServerData"],"sources":["../../../src/vite/one-server-only.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "one",
|
3
|
-
"version": "1.1.
|
3
|
+
"version": "1.1.451",
|
4
4
|
"license": "BSD-3-Clause",
|
5
5
|
"sideEffects": [
|
6
6
|
"setup.mjs",
|
@@ -94,15 +94,15 @@
|
|
94
94
|
"@react-navigation/routers": "~7",
|
95
95
|
"@swc/core": "^1.10.4",
|
96
96
|
"@ungap/structured-clone": "^1.2.0",
|
97
|
-
"@vxrn/compiler": "1.1.
|
98
|
-
"@vxrn/resolve": "1.1.
|
99
|
-
"@vxrn/tslib-lite": "1.1.
|
100
|
-
"@vxrn/universal-color-scheme": "1.1.
|
101
|
-
"@vxrn/use-isomorphic-layout-effect": "1.1.
|
97
|
+
"@vxrn/compiler": "1.1.451",
|
98
|
+
"@vxrn/resolve": "1.1.451",
|
99
|
+
"@vxrn/tslib-lite": "1.1.451",
|
100
|
+
"@vxrn/universal-color-scheme": "1.1.451",
|
101
|
+
"@vxrn/use-isomorphic-layout-effect": "1.1.451",
|
102
102
|
"babel-dead-code-elimination": "^1.0.9",
|
103
103
|
"citty": "^0.1.6",
|
104
104
|
"core-js": "^3.38.1",
|
105
|
-
"create-vxrn": "1.1.
|
105
|
+
"create-vxrn": "1.1.451",
|
106
106
|
"escape-string-regexp": "^5.0.0",
|
107
107
|
"expo-linking": "~6.3.1",
|
108
108
|
"expo-modules-core": "2.1.2",
|
@@ -124,11 +124,12 @@
|
|
124
124
|
"react-native-safe-area-context": "4.10.5",
|
125
125
|
"react-native-screens": "4.4.0",
|
126
126
|
"react-scan": "^0.1.3",
|
127
|
+
"ts-pattern": "^5.6.2",
|
127
128
|
"use-latest-callback": "^0.2.3",
|
128
129
|
"vite": "^6.1.0",
|
129
130
|
"vite-plugin-barrel": "^0.4.1",
|
130
131
|
"vite-tsconfig-paths": "^5.0.1",
|
131
|
-
"vxrn": "1.1.
|
132
|
+
"vxrn": "1.1.451",
|
132
133
|
"ws": "^8.18.0",
|
133
134
|
"xxhashjs": "^0.2.2"
|
134
135
|
},
|
package/src/cli/build.ts
CHANGED
@@ -12,6 +12,7 @@ import {
|
|
12
12
|
build as vxrnBuild,
|
13
13
|
type ClientManifestEntry,
|
14
14
|
} from 'vxrn'
|
15
|
+
|
15
16
|
import * as constants from '../constants'
|
16
17
|
import { setServerGlobals } from '../server/setServerGlobals'
|
17
18
|
import { toAbsolute } from '../utils/toAbsolute'
|
@@ -19,11 +20,13 @@ import { getManifest } from '../vite/getManifest'
|
|
19
20
|
import { loadUserOneOptions } from '../vite/loadConfig'
|
20
21
|
import { runWithAsyncLocalContext } from '../vite/one-server-only'
|
21
22
|
import type { One, RouteInfo } from '../vite/types'
|
23
|
+
import { buildVercelOutputDirectory } from '../vercel/build/buildVercelOutputDirectory'
|
24
|
+
|
22
25
|
import { buildPage } from './buildPage'
|
23
26
|
import { checkNodeVersion } from './checkNodeVersion'
|
24
27
|
import { labelProcess } from './label-process'
|
25
28
|
|
26
|
-
const { ensureDir } = FSExtra
|
29
|
+
const { ensureDir, writeJSON } = FSExtra
|
27
30
|
|
28
31
|
process.on('uncaughtException', (err) => {
|
29
32
|
console.error(err?.message || err)
|
@@ -187,9 +190,10 @@ export async function build(args: {
|
|
187
190
|
return output as RollupOutput
|
188
191
|
}
|
189
192
|
|
193
|
+
let apiOutput: RollupOutput | null = null
|
190
194
|
if (manifest.apiRoutes.length) {
|
191
195
|
console.info(`\n 🔨 build api routes\n`)
|
192
|
-
await buildCustomRoutes('api', manifest.apiRoutes)
|
196
|
+
apiOutput = await buildCustomRoutes('api', manifest.apiRoutes)
|
193
197
|
}
|
194
198
|
|
195
199
|
const builtMiddlewares: Record<string, string> = {}
|
@@ -483,50 +487,49 @@ export async function build(args: {
|
|
483
487
|
constants: JSON.parse(JSON.stringify({ ...constants })) as any,
|
484
488
|
}
|
485
489
|
|
486
|
-
await
|
490
|
+
await writeJSON(toAbsolute(`dist/buildInfo.json`), buildInfoForWriting)
|
487
491
|
|
488
492
|
let postBuildLogs: string[] = []
|
489
493
|
|
490
|
-
const platform = oneOptions.web?.deploy
|
494
|
+
const platform = oneOptions.web?.deploy
|
495
|
+
postBuildLogs.push(`[one.build] platform ${platform}`)
|
491
496
|
|
492
497
|
switch (platform) {
|
493
498
|
case 'vercel': {
|
494
|
-
await
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
postBuildLogs.push(`wrote vercel entry to: ${join('.', 'dist', 'index.js')}`)
|
502
|
-
postBuildLogs.push(`point vercel outputDirectory to dist`)
|
499
|
+
await buildVercelOutputDirectory({
|
500
|
+
apiOutput,
|
501
|
+
buildInfoForWriting,
|
502
|
+
clientDir,
|
503
|
+
oneOptionsRoot: options.root,
|
504
|
+
postBuildLogs,
|
505
|
+
})
|
503
506
|
|
504
507
|
break
|
505
508
|
}
|
506
509
|
|
507
|
-
case 'cloudflare': {
|
508
|
-
|
509
|
-
|
510
|
-
|
510
|
+
// case 'cloudflare': {
|
511
|
+
// await FSExtra.writeFile(
|
512
|
+
// join(options.root, 'dist', 'worker.js'),
|
513
|
+
// `import { serve } from 'one/serve-worker'
|
511
514
|
|
512
|
-
const buildInfo = ${JSON.stringify(buildInfoForWriting)}
|
515
|
+
// const buildInfo = ${JSON.stringify(buildInfoForWriting)}
|
513
516
|
|
514
|
-
const handler = await serve(buildInfo)
|
517
|
+
// const handler = await serve(buildInfo)
|
515
518
|
|
516
|
-
export default {
|
517
|
-
|
518
|
-
}`
|
519
|
-
|
519
|
+
// export default {
|
520
|
+
// fetch: handler.fetch,
|
521
|
+
// }`
|
522
|
+
// )
|
520
523
|
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
compatibility_date = "2024-12-05"
|
525
|
-
`
|
526
|
-
|
524
|
+
// await FSExtra.writeFile(
|
525
|
+
// join(options.root, 'dist', 'wrangler.toml'),
|
526
|
+
// `assets = { directory = "client" }
|
527
|
+
// compatibility_date = "2024-12-05"
|
528
|
+
// `
|
529
|
+
// )
|
527
530
|
|
528
|
-
|
529
|
-
}
|
531
|
+
// break
|
532
|
+
// }
|
530
533
|
}
|
531
534
|
|
532
535
|
if (process.env.VXRN_ANALYZE_BUNDLE) {
|
package/src/cli.ts
CHANGED
@@ -138,9 +138,6 @@ const serveCommand = defineCommand({
|
|
138
138
|
port: {
|
139
139
|
type: 'string',
|
140
140
|
},
|
141
|
-
platform: {
|
142
|
-
type: 'string',
|
143
|
-
},
|
144
141
|
compress: {
|
145
142
|
type: 'boolean',
|
146
143
|
},
|
@@ -154,7 +151,6 @@ const serveCommand = defineCommand({
|
|
154
151
|
port: args.port ? +args.port : undefined,
|
155
152
|
host: args.host,
|
156
153
|
compress: args.compress,
|
157
|
-
platform: args.platform === 'vercel' ? 'vercel' : 'node',
|
158
154
|
loadEnv: !!args.loadEnv,
|
159
155
|
})
|
160
156
|
},
|
package/src/serve.ts
CHANGED
@@ -3,7 +3,7 @@ import { getServerManifest } from './getServerManifest'
|
|
3
3
|
|
4
4
|
import type { One, RouteInfo } from '../vite/types'
|
5
5
|
|
6
|
-
export {
|
6
|
+
export type { Options } from '../router/getRoutes'
|
7
7
|
|
8
8
|
export type RouteInfoCompiled = RouteInfo & {
|
9
9
|
compiledRegex: RegExp
|
@@ -0,0 +1,126 @@
|
|
1
|
+
import { join, resolve } from 'node:path'
|
2
|
+
|
3
|
+
import FSExtra from 'fs-extra'
|
4
|
+
import type { RollupOutput } from 'rollup'
|
5
|
+
import { isMatching, P } from 'ts-pattern'
|
6
|
+
|
7
|
+
import { createApiServerlessFunction } from './generate/createApiServerlessFunction'
|
8
|
+
import { createSsrServerlessFunction } from './generate/createSsrServerlessFunction'
|
9
|
+
import { serverlessVercelNodeJsConfig } from './config/vc-config-base'
|
10
|
+
import { serverlessVercelPackageJson } from './config/vc-package-base'
|
11
|
+
import { vercelBuildOutputConfig } from './config/vc-build-output-config-base'
|
12
|
+
|
13
|
+
import type { One } from '../../vite/types'
|
14
|
+
|
15
|
+
const { copy, ensureDir, writeJSON } = FSExtra
|
16
|
+
|
17
|
+
async function moveAllFiles(src: string, dest: string) {
|
18
|
+
try {
|
19
|
+
await copy(src, dest, { overwrite: true, errorOnExist: false })
|
20
|
+
} catch (err) {
|
21
|
+
console.error('Error moving files:', err)
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
export const buildVercelOutputDirectory = async ({
|
26
|
+
apiOutput,
|
27
|
+
buildInfoForWriting,
|
28
|
+
clientDir,
|
29
|
+
oneOptionsRoot,
|
30
|
+
postBuildLogs,
|
31
|
+
}: {
|
32
|
+
apiOutput: RollupOutput | null
|
33
|
+
buildInfoForWriting: One.BuildInfo
|
34
|
+
clientDir: string
|
35
|
+
oneOptionsRoot: string
|
36
|
+
postBuildLogs: string[]
|
37
|
+
}) => {
|
38
|
+
const { routeToBuildInfo } = buildInfoForWriting
|
39
|
+
if (apiOutput) {
|
40
|
+
const compiltedApiRoutes = (apiOutput?.output ?? []).filter((o) =>
|
41
|
+
isMatching({ code: P.string, facadeModuleId: P.string }, o)
|
42
|
+
)
|
43
|
+
for (const route of buildInfoForWriting.manifest.apiRoutes) {
|
44
|
+
const compiledRoute = compiltedApiRoutes.find((compiled) => {
|
45
|
+
const flag = compiled.facadeModuleId.includes(route.file.replace('./', ''))
|
46
|
+
return flag
|
47
|
+
})
|
48
|
+
if (compiledRoute) {
|
49
|
+
postBuildLogs.push(
|
50
|
+
`[one.build][vercel] generating serverless function for apiRoute ${route.page}`
|
51
|
+
)
|
52
|
+
await createApiServerlessFunction(
|
53
|
+
route.page,
|
54
|
+
compiledRoute.code,
|
55
|
+
oneOptionsRoot,
|
56
|
+
postBuildLogs
|
57
|
+
)
|
58
|
+
} else {
|
59
|
+
console.warn('\n 🔨[one.build][vercel] apiRoute missing code compilation for', route.file)
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
const vercelOutputFunctionsDir = join(oneOptionsRoot, 'dist', `.vercel/output/functions`)
|
65
|
+
await ensureDir(vercelOutputFunctionsDir)
|
66
|
+
|
67
|
+
for (const route of buildInfoForWriting.manifest.pageRoutes) {
|
68
|
+
switch (route.type) {
|
69
|
+
case 'ssr': {
|
70
|
+
// Server Side Rendered
|
71
|
+
const builtPageRoute = routeToBuildInfo[route.file]
|
72
|
+
if (builtPageRoute) {
|
73
|
+
postBuildLogs.push(
|
74
|
+
`[one.build][vercel] generate serverless function for ${route.page} with ${route.type}`
|
75
|
+
)
|
76
|
+
await createSsrServerlessFunction(
|
77
|
+
route.page,
|
78
|
+
buildInfoForWriting,
|
79
|
+
oneOptionsRoot,
|
80
|
+
postBuildLogs
|
81
|
+
)
|
82
|
+
}
|
83
|
+
break
|
84
|
+
}
|
85
|
+
default:
|
86
|
+
// no-op, these will be copied from built dist/client into .vercel/output/static
|
87
|
+
// postBuildLogs.push(`[one.build][vercel] pageRoute will be copied to .vercel/output/static for ${route.page} with ${route.type}`)
|
88
|
+
break
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
const vercelMiddlewareDir = join(oneOptionsRoot, 'dist', '.vercel/output/functions/_middleware')
|
93
|
+
await ensureDir(vercelMiddlewareDir)
|
94
|
+
postBuildLogs.push(
|
95
|
+
`[one.build][vercel] copying middlewares from ${join(oneOptionsRoot, 'dist', 'middlewares')} to ${vercelMiddlewareDir}`
|
96
|
+
)
|
97
|
+
await moveAllFiles(resolve(join(oneOptionsRoot, 'dist', 'middlewares')), vercelMiddlewareDir)
|
98
|
+
const vercelMiddlewarePackageJsonFilePath = resolve(join(vercelMiddlewareDir, 'index.js'))
|
99
|
+
postBuildLogs.push(
|
100
|
+
`[one.build][vercel] writing package.json to ${vercelMiddlewarePackageJsonFilePath}`
|
101
|
+
)
|
102
|
+
await writeJSON(vercelMiddlewarePackageJsonFilePath, serverlessVercelPackageJson)
|
103
|
+
postBuildLogs.push(
|
104
|
+
`[one.build][vercel] writing .vc-config.json to ${join(vercelMiddlewareDir, '.vc-config.json')}`
|
105
|
+
)
|
106
|
+
await writeJSON(resolve(join(vercelMiddlewareDir, '.vc-config.json')), {
|
107
|
+
...serverlessVercelNodeJsConfig,
|
108
|
+
handler: '_middleware.js',
|
109
|
+
})
|
110
|
+
|
111
|
+
const vercelOutputStaticDir = resolve(join(oneOptionsRoot, 'dist', '.vercel/output/static'))
|
112
|
+
await ensureDir(vercelOutputStaticDir)
|
113
|
+
|
114
|
+
postBuildLogs.push(
|
115
|
+
`[one.build][vercel] copying static files from ${clientDir} to ${vercelOutputStaticDir}`
|
116
|
+
)
|
117
|
+
await moveAllFiles(clientDir, vercelOutputStaticDir)
|
118
|
+
|
119
|
+
// Documentation - Vercel Build Output v3 config.json
|
120
|
+
// https://vercel.com/docs/build-output-api/v3/configuration#config.json-supported-properties
|
121
|
+
const vercelConfigFilePath = resolve(
|
122
|
+
join(oneOptionsRoot, 'dist', '.vercel/output', 'config.json')
|
123
|
+
)
|
124
|
+
await writeJSON(vercelConfigFilePath, vercelBuildOutputConfig)
|
125
|
+
postBuildLogs.push(`[one.build] wrote vercel config to: ${vercelConfigFilePath}`)
|
126
|
+
}
|