one 1.12.1 → 1.12.3
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/Root.cjs +7 -1
- package/dist/cjs/Root.js +7 -2
- package/dist/cjs/Root.js.map +1 -1
- package/dist/cjs/Root.native.js +8 -2
- package/dist/cjs/Root.native.js.map +1 -1
- package/dist/cjs/cli/build.cjs +24 -10
- package/dist/cjs/cli/build.js +24 -9
- package/dist/cjs/cli/build.js.map +1 -1
- package/dist/cjs/cli/build.native.js +29 -14
- package/dist/cjs/cli/build.native.js.map +1 -1
- package/dist/cjs/createApp.cjs +2 -2
- package/dist/cjs/createApp.js +2 -2
- package/dist/cjs/createApp.js.map +1 -1
- package/dist/cjs/createHandleRequest.cjs +5 -1
- package/dist/cjs/createHandleRequest.js +6 -2
- package/dist/cjs/createHandleRequest.js.map +1 -1
- package/dist/cjs/createHandleRequest.native.js +5 -1
- package/dist/cjs/createHandleRequest.native.js.map +1 -1
- package/dist/cjs/fork/SSRNavigationContainer.cjs +18 -9
- package/dist/cjs/fork/SSRNavigationContainer.js +17 -6
- package/dist/cjs/fork/SSRNavigationContainer.js.map +1 -1
- package/dist/cjs/fork/SSRNavigationContainer.native.js +21 -10
- package/dist/cjs/fork/SSRNavigationContainer.native.js.map +1 -1
- package/dist/cjs/router/linkingConfig.cjs +2 -1
- package/dist/cjs/router/linkingConfig.js +2 -2
- package/dist/cjs/router/linkingConfig.js.map +1 -1
- package/dist/cjs/router/linkingConfig.native.js +2 -1
- package/dist/cjs/router/linkingConfig.native.js.map +1 -1
- package/dist/cjs/serve.cjs +67 -28
- package/dist/cjs/serve.js +68 -28
- package/dist/cjs/serve.js.map +1 -1
- package/dist/cjs/serve.native.js +96 -35
- package/dist/cjs/serve.native.js.map +1 -1
- package/dist/cjs/server/oneServe.cjs +112 -39
- package/dist/cjs/server/oneServe.js +94 -41
- package/dist/cjs/server/oneServe.js.map +2 -2
- package/dist/cjs/server/oneServe.native.js +180 -80
- package/dist/cjs/server/oneServe.native.js.map +1 -1
- package/dist/cjs/utils/evictOldest.cjs +34 -0
- package/dist/cjs/utils/evictOldest.js +29 -0
- package/dist/cjs/utils/evictOldest.js.map +6 -0
- package/dist/cjs/utils/evictOldest.native.js +34 -0
- package/dist/cjs/utils/evictOldest.native.js.map +1 -0
- package/dist/cjs/utils/isResponse.cjs +1 -1
- package/dist/cjs/utils/isResponse.js +1 -1
- package/dist/cjs/utils/isResponse.js.map +1 -1
- package/dist/cjs/utils/isResponse.native.js +1 -1
- package/dist/cjs/utils/isResponse.native.js.map +1 -1
- package/dist/cjs/vite/one-server-only.cjs +9 -6
- package/dist/cjs/vite/one-server-only.js +8 -7
- package/dist/cjs/vite/one-server-only.js.map +1 -1
- package/dist/cjs/vite/resolveResponse.cjs +17 -4
- package/dist/cjs/vite/resolveResponse.js +15 -2
- package/dist/cjs/vite/resolveResponse.js.map +1 -1
- package/dist/cjs/vite/resolveResponse.native.js +17 -4
- package/dist/cjs/vite/resolveResponse.native.js.map +1 -1
- package/dist/esm/Root.js +7 -1
- package/dist/esm/Root.js.map +1 -1
- package/dist/esm/Root.mjs +7 -1
- package/dist/esm/Root.mjs.map +1 -1
- package/dist/esm/Root.native.js +7 -1
- package/dist/esm/Root.native.js.map +1 -1
- package/dist/esm/cli/build.js +24 -9
- package/dist/esm/cli/build.js.map +1 -1
- package/dist/esm/cli/build.mjs +26 -12
- package/dist/esm/cli/build.mjs.map +1 -1
- package/dist/esm/cli/build.native.js +29 -14
- package/dist/esm/cli/build.native.js.map +1 -1
- package/dist/esm/createApp.js +2 -2
- package/dist/esm/createApp.js.map +1 -1
- package/dist/esm/createApp.mjs +2 -2
- package/dist/esm/createApp.mjs.map +1 -1
- package/dist/esm/createHandleRequest.js +6 -2
- package/dist/esm/createHandleRequest.js.map +1 -1
- package/dist/esm/createHandleRequest.mjs +5 -2
- package/dist/esm/createHandleRequest.mjs.map +1 -1
- package/dist/esm/createHandleRequest.native.js +5 -2
- package/dist/esm/createHandleRequest.native.js.map +1 -1
- package/dist/esm/fork/SSRNavigationContainer.js +17 -6
- package/dist/esm/fork/SSRNavigationContainer.js.map +1 -1
- package/dist/esm/fork/SSRNavigationContainer.mjs +18 -9
- package/dist/esm/fork/SSRNavigationContainer.mjs.map +1 -1
- package/dist/esm/fork/SSRNavigationContainer.native.js +21 -10
- package/dist/esm/fork/SSRNavigationContainer.native.js.map +1 -1
- package/dist/esm/router/linkingConfig.js +2 -1
- package/dist/esm/router/linkingConfig.js.map +1 -1
- package/dist/esm/router/linkingConfig.mjs +2 -1
- package/dist/esm/router/linkingConfig.mjs.map +1 -1
- package/dist/esm/router/linkingConfig.native.js +2 -1
- package/dist/esm/router/linkingConfig.native.js.map +1 -1
- package/dist/esm/serve.js +68 -28
- package/dist/esm/serve.js.map +1 -1
- package/dist/esm/serve.mjs +67 -28
- package/dist/esm/serve.mjs.map +1 -1
- package/dist/esm/serve.native.js +96 -35
- package/dist/esm/serve.native.js.map +1 -1
- package/dist/esm/server/oneServe.js +95 -42
- package/dist/esm/server/oneServe.js.map +2 -2
- package/dist/esm/server/oneServe.mjs +113 -40
- package/dist/esm/server/oneServe.mjs.map +1 -1
- package/dist/esm/server/oneServe.native.js +181 -81
- package/dist/esm/server/oneServe.native.js.map +1 -1
- package/dist/esm/utils/evictOldest.js +13 -0
- package/dist/esm/utils/evictOldest.js.map +6 -0
- package/dist/esm/utils/evictOldest.mjs +11 -0
- package/dist/esm/utils/evictOldest.mjs.map +1 -0
- package/dist/esm/utils/evictOldest.native.js +8 -0
- package/dist/esm/utils/evictOldest.native.js.map +1 -0
- package/dist/esm/utils/isResponse.js +1 -1
- package/dist/esm/utils/isResponse.js.map +1 -1
- package/dist/esm/utils/isResponse.mjs +1 -1
- package/dist/esm/utils/isResponse.mjs.map +1 -1
- package/dist/esm/utils/isResponse.native.js +1 -1
- package/dist/esm/utils/isResponse.native.js.map +1 -1
- package/dist/esm/vite/one-server-only.js +8 -7
- package/dist/esm/vite/one-server-only.js.map +1 -1
- package/dist/esm/vite/one-server-only.mjs +9 -6
- package/dist/esm/vite/one-server-only.mjs.map +1 -1
- package/dist/esm/vite/resolveResponse.js +15 -2
- package/dist/esm/vite/resolveResponse.js.map +1 -1
- package/dist/esm/vite/resolveResponse.mjs +16 -4
- package/dist/esm/vite/resolveResponse.mjs.map +1 -1
- package/dist/esm/vite/resolveResponse.native.js +16 -4
- package/dist/esm/vite/resolveResponse.native.js.map +1 -1
- package/package.json +13 -11
- package/src/Root.tsx +14 -1
- package/src/cli/build.ts +38 -12
- package/src/createApp.tsx +8 -2
- package/src/createHandleRequest.ts +9 -2
- package/src/fork/SSRNavigationContainer.tsx +30 -7
- package/src/router/linkingConfig.ts +2 -2
- package/src/serve.ts +134 -48
- package/src/server/oneServe.ts +153 -47
- package/src/utils/evictOldest.ts +13 -0
- package/src/utils/isResponse.ts +4 -4
- package/src/vite/one-server-only.tsx +25 -11
- package/src/vite/resolveResponse.ts +20 -1
- package/src/vite/types.ts +20 -2
- package/types/Root.d.ts.map +1 -1
- package/types/cli/build.d.ts.map +1 -1
- package/types/createApp.d.ts.map +1 -1
- package/types/createHandleRequest.d.ts +4 -0
- package/types/createHandleRequest.d.ts.map +1 -1
- package/types/fork/SSRNavigationContainer.d.ts.map +1 -1
- package/types/router/linkingConfig.d.ts.map +1 -1
- package/types/serve.d.ts.map +1 -1
- package/types/server/oneServe.d.ts.map +1 -1
- package/types/utils/evictOldest.d.ts +6 -0
- package/types/utils/evictOldest.d.ts.map +1 -0
- package/types/vite/one-server-only.d.ts +9 -3
- package/types/vite/one-server-only.d.ts.map +1 -1
- package/types/vite/resolveResponse.d.ts +4 -0
- package/types/vite/resolveResponse.d.ts.map +1 -1
- package/types/vite/types.d.ts +18 -2
- package/types/vite/types.d.ts.map +1 -1
package/dist/esm/serve.js
CHANGED
|
@@ -8,40 +8,80 @@ process.on("uncaughtException", (err) => {
|
|
|
8
8
|
});
|
|
9
9
|
async function serve(args = {}) {
|
|
10
10
|
if (args.cluster) {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
11
|
+
const { cpus, platform } = await import("node:os"), numWorkers = typeof args.cluster == "number" ? args.cluster : cpus().length, [major, minor] = process.versions.node.split(".").map(Number);
|
|
12
|
+
return !["win32", "darwin"].includes(platform()) && (major > 22 || major === 22 && minor >= 12 || major >= 23) ? await serveWithReusePort(args, numWorkers) : await serveWithCluster(args, numWorkers);
|
|
13
|
+
}
|
|
14
|
+
return await startWorker(args);
|
|
15
|
+
}
|
|
16
|
+
async function serveWithReusePort(args, numWorkers) {
|
|
17
|
+
const { fork } = await import("node:child_process");
|
|
18
|
+
console.info(`[one] cluster: starting ${numWorkers} workers (SO_REUSEPORT)`);
|
|
19
|
+
const workers = [];
|
|
20
|
+
let recentCrashes = 0, lastCrashTime = 0;
|
|
21
|
+
function spawnWorker() {
|
|
22
|
+
const child = fork(
|
|
23
|
+
process.argv[1],
|
|
24
|
+
process.argv.slice(2).filter((a) => !a.startsWith("--cluster")),
|
|
25
|
+
{
|
|
26
|
+
env: { ...process.env, ONE_CLUSTER_WORKER: "1" },
|
|
27
|
+
stdio: "inherit"
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
workers.push(child), child.on("exit", (code, signal) => {
|
|
31
|
+
const idx = workers.indexOf(child);
|
|
32
|
+
if (idx >= 0 && workers.splice(idx, 1), code === 0 || signal === "SIGTERM" || signal === "SIGINT") return;
|
|
33
|
+
const now = Date.now();
|
|
34
|
+
now - lastCrashTime < 5e3 ? recentCrashes++ : recentCrashes = 1, lastCrashTime = now, recentCrashes > numWorkers * 2 && (console.error("[one] too many worker crashes, stopping"), process.exit(1)), console.error(
|
|
35
|
+
`[one] worker ${child.pid} died (code ${code}, signal ${signal}), restarting`
|
|
36
|
+
), setTimeout(spawnWorker, Math.min(recentCrashes * 500, 5e3));
|
|
37
|
+
});
|
|
33
38
|
}
|
|
34
|
-
|
|
39
|
+
for (let i = 0; i < numWorkers; i++)
|
|
40
|
+
spawnWorker();
|
|
41
|
+
const shutdown = () => {
|
|
42
|
+
for (const w of workers)
|
|
43
|
+
w.kill("SIGTERM");
|
|
44
|
+
setTimeout(() => process.exit(0), 5e3);
|
|
45
|
+
};
|
|
46
|
+
process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown), await new Promise(() => {
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async function serveWithCluster(args, numWorkers) {
|
|
50
|
+
const cluster = await import("node:cluster");
|
|
51
|
+
if (cluster.default.isPrimary) {
|
|
52
|
+
console.info(`[one] cluster: starting ${numWorkers} workers (IPC)`);
|
|
53
|
+
for (let i = 0; i < numWorkers; i++)
|
|
54
|
+
cluster.default.fork();
|
|
55
|
+
let recentCrashes = 0, lastCrashTime = 0;
|
|
56
|
+
cluster.default.on("exit", (worker, code, signal) => {
|
|
57
|
+
if (code === 0 || signal === "SIGTERM" || signal === "SIGINT") return;
|
|
58
|
+
const now = Date.now();
|
|
59
|
+
now - lastCrashTime < 5e3 ? recentCrashes++ : recentCrashes = 1, lastCrashTime = now, recentCrashes > numWorkers * 2 && (console.error("[one] too many worker crashes, stopping"), process.exit(1)), console.error(
|
|
60
|
+
`[one] worker ${worker.process.pid} died (code ${code}, signal ${signal}), restarting`
|
|
61
|
+
), setTimeout(() => cluster.default.fork(), Math.min(recentCrashes * 500, 5e3));
|
|
62
|
+
});
|
|
63
|
+
const shutdown = () => {
|
|
64
|
+
for (const id in cluster.default.workers)
|
|
65
|
+
cluster.default.workers[id]?.process.kill("SIGTERM");
|
|
66
|
+
setTimeout(() => process.exit(0), 5e3);
|
|
67
|
+
};
|
|
68
|
+
process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
return await startWorker(args);
|
|
72
|
+
}
|
|
73
|
+
async function startWorker(args) {
|
|
74
|
+
const outDir = args?.outDir || (FSExtra.existsSync("buildInfo.json") ? "." : null) || "dist", buildInfo = await FSExtra.readJSON(`${outDir}/buildInfo.json`), { oneOptions } = buildInfo;
|
|
35
75
|
setServerGlobals(), setupBuildInfo(buildInfo), ensureExists(oneOptions);
|
|
36
76
|
const { labelProcess } = await import("./cli/label-process"), { removeUndefined } = await import("./utils/removeUndefined"), { loadEnv, serve: vxrnServe, serveStaticAssets } = await import("vxrn/serve"), { oneServe } = await import("./server/oneServe");
|
|
37
|
-
return labelProcess("serve"), args
|
|
77
|
+
return labelProcess("serve"), args?.loadEnv && await loadEnv("production"), await vxrnServe({
|
|
38
78
|
outDir: buildInfo.outDir || outDir,
|
|
39
|
-
app: args
|
|
79
|
+
app: args?.app,
|
|
40
80
|
...oneOptions.server,
|
|
41
81
|
...removeUndefined({
|
|
42
|
-
port: args
|
|
43
|
-
host: args
|
|
44
|
-
compress: args
|
|
82
|
+
port: args?.port ? +args.port : void 0,
|
|
83
|
+
host: args?.host,
|
|
84
|
+
compress: args?.compress
|
|
45
85
|
}),
|
|
46
86
|
async beforeRegisterRoutes(options, app) {
|
|
47
87
|
await oneServe(oneOptions, buildInfo, app, { serveStaticAssets });
|
package/dist/esm/serve.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/serve.ts"],
|
|
4
|
-
"mappings": "AAAA,OAAO;AAEP,OAAO,aAAa;AAGpB,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAG7B,QAAQ,GAAG,qBAAqB,CAAC,QAAQ;AACvC,UAAQ,MAAM,4BAA4B,KAAK,SAAS,GAAG;AAC7D,CAAC;AAED,eAAsB,MACpB,OAII,CAAC,GACL;AAEA,MAAI,KAAK,SAAS;AAChB,UAAM,UAAU,MAAM,OAAO,cAAc,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/serve.mjs
CHANGED
|
@@ -8,30 +8,69 @@ process.on("uncaughtException", err => {
|
|
|
8
8
|
});
|
|
9
9
|
async function serve(args = {}) {
|
|
10
10
|
if (args.cluster) {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} = await import("node:os")
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
11
|
+
const {
|
|
12
|
+
cpus,
|
|
13
|
+
platform
|
|
14
|
+
} = await import("node:os"),
|
|
15
|
+
numWorkers = typeof args.cluster == "number" ? args.cluster : cpus().length,
|
|
16
|
+
[major, minor] = process.versions.node.split(".").map(Number);
|
|
17
|
+
return !["win32", "darwin"].includes(platform()) && (major > 22 || major === 22 && minor >= 12 || major >= 23) ? await serveWithReusePort(args, numWorkers) : await serveWithCluster(args, numWorkers);
|
|
18
|
+
}
|
|
19
|
+
return await startWorker(args);
|
|
20
|
+
}
|
|
21
|
+
async function serveWithReusePort(args, numWorkers) {
|
|
22
|
+
const {
|
|
23
|
+
fork
|
|
24
|
+
} = await import("node:child_process");
|
|
25
|
+
console.info(`[one] cluster: starting ${numWorkers} workers (SO_REUSEPORT)`);
|
|
26
|
+
const workers = [];
|
|
27
|
+
let recentCrashes = 0,
|
|
28
|
+
lastCrashTime = 0;
|
|
29
|
+
function spawnWorker() {
|
|
30
|
+
const child = fork(process.argv[1], process.argv.slice(2).filter(a => !a.startsWith("--cluster")), {
|
|
31
|
+
env: {
|
|
32
|
+
...process.env,
|
|
33
|
+
ONE_CLUSTER_WORKER: "1"
|
|
34
|
+
},
|
|
35
|
+
stdio: "inherit"
|
|
36
|
+
});
|
|
37
|
+
workers.push(child), child.on("exit", (code, signal) => {
|
|
38
|
+
const idx = workers.indexOf(child);
|
|
39
|
+
if (idx >= 0 && workers.splice(idx, 1), code === 0 || signal === "SIGTERM" || signal === "SIGINT") return;
|
|
40
|
+
const now = Date.now();
|
|
41
|
+
now - lastCrashTime < 5e3 ? recentCrashes++ : recentCrashes = 1, lastCrashTime = now, recentCrashes > numWorkers * 2 && (console.error("[one] too many worker crashes, stopping"), process.exit(1)), console.error(`[one] worker ${child.pid} died (code ${code}, signal ${signal}), restarting`), setTimeout(spawnWorker, Math.min(recentCrashes * 500, 5e3));
|
|
42
|
+
});
|
|
33
43
|
}
|
|
34
|
-
|
|
44
|
+
for (let i = 0; i < numWorkers; i++) spawnWorker();
|
|
45
|
+
const shutdown = () => {
|
|
46
|
+
for (const w of workers) w.kill("SIGTERM");
|
|
47
|
+
setTimeout(() => process.exit(0), 5e3);
|
|
48
|
+
};
|
|
49
|
+
process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown), await new Promise(() => {});
|
|
50
|
+
}
|
|
51
|
+
async function serveWithCluster(args, numWorkers) {
|
|
52
|
+
const cluster = await import("node:cluster");
|
|
53
|
+
if (cluster.default.isPrimary) {
|
|
54
|
+
console.info(`[one] cluster: starting ${numWorkers} workers (IPC)`);
|
|
55
|
+
for (let i = 0; i < numWorkers; i++) cluster.default.fork();
|
|
56
|
+
let recentCrashes = 0,
|
|
57
|
+
lastCrashTime = 0;
|
|
58
|
+
cluster.default.on("exit", (worker, code, signal) => {
|
|
59
|
+
if (code === 0 || signal === "SIGTERM" || signal === "SIGINT") return;
|
|
60
|
+
const now = Date.now();
|
|
61
|
+
now - lastCrashTime < 5e3 ? recentCrashes++ : recentCrashes = 1, lastCrashTime = now, recentCrashes > numWorkers * 2 && (console.error("[one] too many worker crashes, stopping"), process.exit(1)), console.error(`[one] worker ${worker.process.pid} died (code ${code}, signal ${signal}), restarting`), setTimeout(() => cluster.default.fork(), Math.min(recentCrashes * 500, 5e3));
|
|
62
|
+
});
|
|
63
|
+
const shutdown = () => {
|
|
64
|
+
for (const id in cluster.default.workers) cluster.default.workers[id]?.process.kill("SIGTERM");
|
|
65
|
+
setTimeout(() => process.exit(0), 5e3);
|
|
66
|
+
};
|
|
67
|
+
process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
return await startWorker(args);
|
|
71
|
+
}
|
|
72
|
+
async function startWorker(args) {
|
|
73
|
+
const outDir = args?.outDir || (FSExtra.existsSync("buildInfo.json") ? "." : null) || "dist",
|
|
35
74
|
buildInfo = await FSExtra.readJSON(`${outDir}/buildInfo.json`),
|
|
36
75
|
{
|
|
37
76
|
oneOptions
|
|
@@ -51,14 +90,14 @@ async function serve(args = {}) {
|
|
|
51
90
|
{
|
|
52
91
|
oneServe
|
|
53
92
|
} = await import("./server/oneServe.mjs");
|
|
54
|
-
return labelProcess("serve"), args
|
|
93
|
+
return labelProcess("serve"), args?.loadEnv && (await loadEnv("production")), await vxrnServe({
|
|
55
94
|
outDir: buildInfo.outDir || outDir,
|
|
56
|
-
app: args
|
|
95
|
+
app: args?.app,
|
|
57
96
|
...oneOptions.server,
|
|
58
97
|
...removeUndefined({
|
|
59
|
-
port: args
|
|
60
|
-
host: args
|
|
61
|
-
compress: args
|
|
98
|
+
port: args?.port ? +args.port : void 0,
|
|
99
|
+
host: args?.host,
|
|
100
|
+
compress: args?.compress
|
|
62
101
|
}),
|
|
63
102
|
async beforeRegisterRoutes(options, app) {
|
|
64
103
|
await oneServe(oneOptions, buildInfo, app, {
|
package/dist/esm/serve.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FSExtra","setServerGlobals","setupBuildInfo","ensureExists","process","on","err","console","error","stack","serve","args","cluster","cpus","
|
|
1
|
+
{"version":3,"names":["FSExtra","setServerGlobals","setupBuildInfo","ensureExists","process","on","err","console","error","stack","serve","args","cluster","cpus","platform","numWorkers","length","major","minor","versions","node","split","map","Number","includes","serveWithReusePort","serveWithCluster","startWorker","fork","info","workers","recentCrashes","lastCrashTime","spawnWorker","child","argv","slice","filter","a","startsWith","env","ONE_CLUSTER_WORKER","stdio","push","code","signal","idx","indexOf","splice","now","Date","exit","pid","setTimeout","Math","min","i","shutdown","w","kill","Promise","default","isPrimary","worker","id","outDir","existsSync","buildInfo","readJSON","oneOptions","labelProcess","removeUndefined","loadEnv","vxrnServe","serveStaticAssets","oneServe","app","server","port","host","compress","beforeRegisterRoutes","options","afterRegisterRoutes"],"sources":["../../src/serve.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/serve.native.js
CHANGED
|
@@ -9,38 +9,99 @@ process.on("uncaughtException", function (err) {
|
|
|
9
9
|
async function serve() {
|
|
10
10
|
var args = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
11
11
|
if (args.cluster) {
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
} = await import("os")
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
12
|
+
var {
|
|
13
|
+
cpus,
|
|
14
|
+
platform
|
|
15
|
+
} = await import("os"),
|
|
16
|
+
numWorkers = typeof args.cluster == "number" ? args.cluster : cpus().length,
|
|
17
|
+
[major, minor] = process.versions.node.split(".").map(Number),
|
|
18
|
+
canReusePort = !["win32", "darwin"].includes(platform()) && (major > 22 || major === 22 && minor >= 12 || major >= 23);
|
|
19
|
+
return canReusePort ? await serveWithReusePort(args, numWorkers) : await serveWithCluster(args, numWorkers);
|
|
20
|
+
}
|
|
21
|
+
return await startWorker(args);
|
|
22
|
+
}
|
|
23
|
+
async function serveWithReusePort(args, numWorkers) {
|
|
24
|
+
var {
|
|
25
|
+
fork
|
|
26
|
+
} = await import("child_process");
|
|
27
|
+
console.info(`[one] cluster: starting ${numWorkers} workers (SO_REUSEPORT)`);
|
|
28
|
+
var workers = [],
|
|
29
|
+
recentCrashes = 0,
|
|
30
|
+
lastCrashTime = 0;
|
|
31
|
+
function spawnWorker() {
|
|
32
|
+
var child = fork(process.argv[1], process.argv.slice(2).filter(function (a) {
|
|
33
|
+
return !a.startsWith("--cluster");
|
|
34
|
+
}), {
|
|
35
|
+
env: {
|
|
36
|
+
...process.env,
|
|
37
|
+
ONE_CLUSTER_WORKER: "1"
|
|
38
|
+
},
|
|
39
|
+
stdio: "inherit"
|
|
40
|
+
});
|
|
41
|
+
workers.push(child), child.on("exit", function (code, signal) {
|
|
42
|
+
var idx = workers.indexOf(child);
|
|
43
|
+
if (idx >= 0 && workers.splice(idx, 1), !(code === 0 || signal === "SIGTERM" || signal === "SIGINT")) {
|
|
44
|
+
var now = Date.now();
|
|
45
|
+
now - lastCrashTime < 5e3 ? recentCrashes++ : recentCrashes = 1, lastCrashTime = now, recentCrashes > numWorkers * 2 && (console.error("[one] too many worker crashes, stopping"), process.exit(1)), console.error(`[one] worker ${child.pid} died (code ${code}, signal ${signal}), restarting`), setTimeout(spawnWorker, Math.min(recentCrashes * 500, 5e3));
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
for (var i = 0; i < numWorkers; i++) spawnWorker();
|
|
50
|
+
var shutdown = function () {
|
|
51
|
+
var _iteratorNormalCompletion = !0,
|
|
52
|
+
_didIteratorError = !1,
|
|
53
|
+
_iteratorError = void 0;
|
|
54
|
+
try {
|
|
55
|
+
for (var _iterator = workers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
56
|
+
var w = _step.value;
|
|
57
|
+
w.kill("SIGTERM");
|
|
58
|
+
}
|
|
59
|
+
} catch (err) {
|
|
60
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
61
|
+
} finally {
|
|
62
|
+
try {
|
|
63
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
64
|
+
} finally {
|
|
65
|
+
if (_didIteratorError) throw _iteratorError;
|
|
66
|
+
}
|
|
41
67
|
}
|
|
68
|
+
setTimeout(function () {
|
|
69
|
+
return process.exit(0);
|
|
70
|
+
}, 5e3);
|
|
71
|
+
};
|
|
72
|
+
process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown), await new Promise(function () {});
|
|
73
|
+
}
|
|
74
|
+
async function serveWithCluster(args, numWorkers) {
|
|
75
|
+
var cluster = await import("cluster");
|
|
76
|
+
if (cluster.default.isPrimary) {
|
|
77
|
+
console.info(`[one] cluster: starting ${numWorkers} workers (IPC)`);
|
|
78
|
+
for (var i = 0; i < numWorkers; i++) cluster.default.fork();
|
|
79
|
+
var recentCrashes = 0,
|
|
80
|
+
lastCrashTime = 0;
|
|
81
|
+
cluster.default.on("exit", function (worker, code, signal) {
|
|
82
|
+
if (!(code === 0 || signal === "SIGTERM" || signal === "SIGINT")) {
|
|
83
|
+
var now = Date.now();
|
|
84
|
+
now - lastCrashTime < 5e3 ? recentCrashes++ : recentCrashes = 1, lastCrashTime = now, recentCrashes > numWorkers * 2 && (console.error("[one] too many worker crashes, stopping"), process.exit(1)), console.error(`[one] worker ${worker.process.pid} died (code ${code}, signal ${signal}), restarting`), setTimeout(function () {
|
|
85
|
+
return cluster.default.fork();
|
|
86
|
+
}, Math.min(recentCrashes * 500, 5e3));
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
var shutdown = function () {
|
|
90
|
+
for (var id in cluster.default.workers) {
|
|
91
|
+
var _cluster_default_workers_id;
|
|
92
|
+
(_cluster_default_workers_id = cluster.default.workers[id]) === null || _cluster_default_workers_id === void 0 || _cluster_default_workers_id.process.kill("SIGTERM");
|
|
93
|
+
}
|
|
94
|
+
setTimeout(function () {
|
|
95
|
+
return process.exit(0);
|
|
96
|
+
}, 5e3);
|
|
97
|
+
};
|
|
98
|
+
process.on("SIGINT", shutdown), process.on("SIGTERM", shutdown);
|
|
99
|
+
return;
|
|
42
100
|
}
|
|
43
|
-
|
|
101
|
+
return await startWorker(args);
|
|
102
|
+
}
|
|
103
|
+
async function startWorker(args) {
|
|
104
|
+
var outDir = args?.outDir || (FSExtra.existsSync("buildInfo.json") ? "." : null) || "dist",
|
|
44
105
|
buildInfo = await FSExtra.readJSON(`${outDir}/buildInfo.json`),
|
|
45
106
|
{
|
|
46
107
|
oneOptions
|
|
@@ -60,14 +121,14 @@ async function serve() {
|
|
|
60
121
|
{
|
|
61
122
|
oneServe
|
|
62
123
|
} = await import("./server/oneServe.native.js");
|
|
63
|
-
return labelProcess("serve"), args
|
|
124
|
+
return labelProcess("serve"), args?.loadEnv && (await loadEnv("production")), await vxrnServe({
|
|
64
125
|
outDir: buildInfo.outDir || outDir,
|
|
65
|
-
app: args
|
|
126
|
+
app: args?.app,
|
|
66
127
|
...oneOptions.server,
|
|
67
128
|
...removeUndefined({
|
|
68
|
-
port: args
|
|
69
|
-
host: args
|
|
70
|
-
compress: args
|
|
129
|
+
port: args?.port ? +args.port : void 0,
|
|
130
|
+
host: args?.host,
|
|
131
|
+
compress: args?.compress
|
|
71
132
|
}),
|
|
72
133
|
async beforeRegisterRoutes(options, app) {
|
|
73
134
|
await oneServe(oneOptions, buildInfo, app, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FSExtra","setServerGlobals","setupBuildInfo","ensureExists","process","on","err","console","error","stack","serve","args","arguments","length","cluster","cpus","
|
|
1
|
+
{"version":3,"names":["FSExtra","setServerGlobals","setupBuildInfo","ensureExists","process","on","err","console","error","stack","serve","args","arguments","length","cluster","cpus","platform","numWorkers","major","minor","versions","node","split","map","Number","canReusePort","includes","serveWithReusePort","serveWithCluster","startWorker","fork","info","workers","recentCrashes","lastCrashTime","spawnWorker","child","argv","slice","filter","a","startsWith","env","ONE_CLUSTER_WORKER","stdio","push","code","signal","idx","indexOf","splice","now","Date","exit","pid","setTimeout","Math","min","i","shutdown","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","w","value","kill","return","Promise","default","isPrimary","worker","id","_cluster_default_workers_id"],"sources":["../../src/serve.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|