@eggjs/cluster 4.0.0-beta.19 → 4.0.0-beta.21
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/agent_worker.d.ts +1 -1
- package/dist/agent_worker.js +63 -50
- package/dist/app_worker.d.ts +1 -1
- package/dist/app_worker.js +165 -127
- package/dist/dirname.d.ts +1 -0
- package/dist/dirname.js +10 -10
- package/dist/error/ClusterAgentWorkerError.d.ts +9 -12
- package/dist/error/ClusterAgentWorkerError.js +19 -22
- package/dist/error/ClusterWorkerExceptionError.d.ts +6 -9
- package/dist/error/ClusterWorkerExceptionError.js +14 -17
- package/dist/error/index.d.ts +2 -0
- package/dist/error/index.js +3 -0
- package/dist/index.d.ts +5 -10
- package/dist/index.js +16 -20
- package/dist/master.d.ts +86 -92
- package/dist/master.js +543 -416
- package/dist/utils/messenger.d.ts +44 -48
- package/dist/utils/messenger.js +178 -143
- package/dist/utils/mode/base/agent.d.ts +35 -42
- package/dist/utils/mode/base/agent.js +64 -62
- package/dist/utils/mode/base/app.d.ts +45 -53
- package/dist/utils/mode/base/app.js +79 -76
- package/dist/utils/mode/impl/process/agent.d.ts +16 -20
- package/dist/utils/mode/impl/process/agent.js +101 -91
- package/dist/utils/mode/impl/process/app.d.ts +20 -11
- package/dist/utils/mode/impl/process/app.js +118 -116
- package/dist/utils/mode/impl/worker_threads/agent.d.ts +16 -20
- package/dist/utils/mode/impl/worker_threads/agent.js +82 -77
- package/dist/utils/mode/impl/worker_threads/app.d.ts +25 -12
- package/dist/utils/mode/impl/worker_threads/app.js +137 -128
- package/dist/utils/options.d.ts +76 -79
- package/dist/utils/options.js +80 -55
- package/dist/utils/terminate.d.ts +6 -0
- package/dist/utils/terminate.js +70 -51
- package/dist/utils/worker_manager.d.ts +24 -31
- package/dist/utils/worker_manager.js +74 -68
- package/package.json +6 -6
package/dist/utils/terminate.js
CHANGED
|
@@ -1,62 +1,81 @@
|
|
|
1
|
-
import { debuglog } from
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { pstree } from
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const childPids = await getChildPids(pid);
|
|
12
|
-
await Promise.all([killProcess(subProcess, timeout), killChildren(childPids, timeout)]);
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import { setTimeout as sleep } from 'node:timers/promises';
|
|
3
|
+
import { once } from 'node:events';
|
|
4
|
+
import { ChildProcess } from 'node:child_process';
|
|
5
|
+
import { pstree } from '@fengmk2/ps-tree';
|
|
6
|
+
const debug = debuglog('egg/cluster/utils/terminate');
|
|
7
|
+
export async function terminate(subProcess, timeout) {
|
|
8
|
+
const pid = subProcess.process?.pid ?? subProcess.pid;
|
|
9
|
+
const childPids = await getChildPids(pid);
|
|
10
|
+
await Promise.all([killProcess(subProcess, timeout), killChildren(childPids, timeout)]);
|
|
13
11
|
}
|
|
12
|
+
// kill process, if SIGTERM not work, try SIGKILL
|
|
14
13
|
async function killProcess(subProcess, timeout) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
// https://github.com/nodejs/node/pull/34312
|
|
15
|
+
(subProcess.process ?? subProcess).kill('SIGTERM');
|
|
16
|
+
await Promise.race([once(subProcess, 'exit'), sleep(timeout)]);
|
|
17
|
+
if (subProcess.killed) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// SIGKILL: http://man7.org/linux/man-pages/man7/signal.7.html
|
|
21
|
+
// worker: https://github.com/nodejs/node/blob/master/lib/internal/cluster/worker.js#L22
|
|
22
|
+
// subProcess.kill is wrapped to subProcess.destroy, it will wait to disconnected.
|
|
23
|
+
(subProcess.process ?? subProcess).kill('SIGKILL');
|
|
19
24
|
}
|
|
25
|
+
// kill all children processes, if SIGTERM not work, try SIGKILL
|
|
20
26
|
async function killChildren(childrenPids, timeout) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
if (childrenPids.length === 0) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
kill(childrenPids, 'SIGTERM');
|
|
31
|
+
const start = Date.now();
|
|
32
|
+
// if timeout is 1000, it will check twice.
|
|
33
|
+
const checkInterval = 400;
|
|
34
|
+
let unterminated = [];
|
|
35
|
+
while (Date.now() - start < timeout - checkInterval) {
|
|
36
|
+
await sleep(checkInterval);
|
|
37
|
+
unterminated = getUnterminatedProcesses(childrenPids);
|
|
38
|
+
if (unterminated.length === 0) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
kill(unterminated, 'SIGKILL');
|
|
32
43
|
}
|
|
33
44
|
async function getChildPids(pid) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
45
|
+
let childrenPids = [];
|
|
46
|
+
try {
|
|
47
|
+
const children = await pstree(pid);
|
|
48
|
+
childrenPids = children.map(c => parseInt(c.PID));
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
// if get children error, just ignore it
|
|
52
|
+
debug('pstree %s error: %s, ignore it', pid, err);
|
|
53
|
+
}
|
|
54
|
+
return childrenPids;
|
|
41
55
|
}
|
|
42
56
|
function kill(pids, signal) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
57
|
+
for (const pid of pids) {
|
|
58
|
+
try {
|
|
59
|
+
process.kill(pid, signal);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
// ignore
|
|
63
|
+
debug('kill %s error: %s, signal: %s, ignore it', pid, err, signal);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
48
66
|
}
|
|
49
67
|
function getUnterminatedProcesses(pids) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
68
|
+
return pids.filter(pid => {
|
|
69
|
+
try {
|
|
70
|
+
// success means it's still alive
|
|
71
|
+
process.kill(pid, 0);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
// error means it's dead
|
|
76
|
+
debug('kill %s error: %s, it still alive', pid, err);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
59
80
|
}
|
|
60
|
-
|
|
61
|
-
//#endregion
|
|
62
|
-
export { terminate };
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3Rlcm1pbmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLElBQUksS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBTXRELE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLFVBQXNCLEVBQUUsT0FBZTtJQUNyRSxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3RELE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLEdBQUksQ0FBQyxDQUFDO0lBQzNDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUYsQ0FBQztBQUVELGlEQUFpRDtBQUNqRCxLQUFLLFVBQVUsV0FBVyxDQUFDLFVBQXNCLEVBQUUsT0FBZTtJQUNoRSw0Q0FBNEM7SUFDNUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUss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
|
|
@@ -1,32 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
count(): {
|
|
26
|
-
agent: number;
|
|
27
|
-
worker: number;
|
|
28
|
-
};
|
|
29
|
-
startCheck(): void;
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { BaseAgentWorker } from './mode/base/agent.ts';
|
|
3
|
+
import { BaseAppWorker } from './mode/base/app.ts';
|
|
4
|
+
export declare class WorkerManager extends EventEmitter {
|
|
5
|
+
agent: BaseAgentWorker | null;
|
|
6
|
+
workers: Map<number, BaseAppWorker<import("worker_threads").Worker | import("cluster").Worker>>;
|
|
7
|
+
exception: number;
|
|
8
|
+
timer: NodeJS.Timeout;
|
|
9
|
+
constructor();
|
|
10
|
+
getWorkers(): number[];
|
|
11
|
+
setAgent(agent: BaseAgentWorker): void;
|
|
12
|
+
getAgent(): BaseAgentWorker<import("child_process").ChildProcess | import("worker_threads").Worker> | null;
|
|
13
|
+
deleteAgent(): void;
|
|
14
|
+
setWorker(worker: BaseAppWorker): void;
|
|
15
|
+
getWorker(workerId: number): BaseAppWorker<import("worker_threads").Worker | import("cluster").Worker> | undefined;
|
|
16
|
+
deleteWorker(workerId: number): void;
|
|
17
|
+
listWorkerIds(): number[];
|
|
18
|
+
listWorkers(): BaseAppWorker<import("worker_threads").Worker | import("cluster").Worker>[];
|
|
19
|
+
getListeningWorkerIds(): number[];
|
|
20
|
+
count(): {
|
|
21
|
+
agent: number;
|
|
22
|
+
worker: number;
|
|
23
|
+
};
|
|
24
|
+
startCheck(): void;
|
|
30
25
|
}
|
|
31
|
-
//#endregion
|
|
32
|
-
export { WorkerManager };
|
|
@@ -1,68 +1,74 @@
|
|
|
1
|
-
import { EventEmitter } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { BaseAgentWorker } from "./mode/base/agent.js";
|
|
3
|
+
import { BaseAppWorker } from "./mode/base/app.js";
|
|
4
|
+
// worker manager to record agent and worker forked by egg-cluster
|
|
5
|
+
// can do some check stuff here to monitor the healthy
|
|
6
|
+
export class WorkerManager extends EventEmitter {
|
|
7
|
+
agent;
|
|
8
|
+
workers = new Map();
|
|
9
|
+
exception = 0;
|
|
10
|
+
timer;
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
this.agent = null;
|
|
14
|
+
}
|
|
15
|
+
getWorkers() {
|
|
16
|
+
return Array.from(this.workers.keys());
|
|
17
|
+
}
|
|
18
|
+
setAgent(agent) {
|
|
19
|
+
this.agent = agent;
|
|
20
|
+
}
|
|
21
|
+
getAgent() {
|
|
22
|
+
return this.agent;
|
|
23
|
+
}
|
|
24
|
+
deleteAgent() {
|
|
25
|
+
this.agent = null;
|
|
26
|
+
}
|
|
27
|
+
setWorker(worker) {
|
|
28
|
+
this.workers.set(worker.workerId, worker);
|
|
29
|
+
}
|
|
30
|
+
getWorker(workerId) {
|
|
31
|
+
return this.workers.get(workerId);
|
|
32
|
+
}
|
|
33
|
+
deleteWorker(workerId) {
|
|
34
|
+
this.workers.delete(workerId);
|
|
35
|
+
}
|
|
36
|
+
listWorkerIds() {
|
|
37
|
+
return Array.from(this.workers.keys());
|
|
38
|
+
}
|
|
39
|
+
listWorkers() {
|
|
40
|
+
return Array.from(this.workers.values());
|
|
41
|
+
}
|
|
42
|
+
getListeningWorkerIds() {
|
|
43
|
+
const keys = [];
|
|
44
|
+
for (const [id, worker] of this.workers.entries()) {
|
|
45
|
+
if (worker.state === 'listening') {
|
|
46
|
+
keys.push(id);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return keys;
|
|
50
|
+
}
|
|
51
|
+
count() {
|
|
52
|
+
return {
|
|
53
|
+
agent: this.agent?.status === 'started' ? 1 : 0,
|
|
54
|
+
worker: this.listWorkerIds().length,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
// check agent and worker must both alive
|
|
58
|
+
// if exception appear 3 times, emit an exception event
|
|
59
|
+
startCheck() {
|
|
60
|
+
this.timer = setInterval(() => {
|
|
61
|
+
const count = this.count();
|
|
62
|
+
if (count.agent > 0 && count.worker > 0) {
|
|
63
|
+
this.exception = 0;
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.exception++;
|
|
67
|
+
if (this.exception >= 3) {
|
|
68
|
+
this.emit('exception', count);
|
|
69
|
+
clearInterval(this.timer);
|
|
70
|
+
}
|
|
71
|
+
}, 10000);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX21hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd29ya2VyX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRW5ELGtFQUFrRTtBQUNsRSxzREFBc0Q7QUFDdEQsTUFBTSxPQUFPLGFBQWMsU0FBUSxZQUFZO0lBQzdDLEtBQUssQ0FBeUI7SUFDOUIsT0FBTyxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBQzNDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDZCxLQUFLLENBQWlCO0lBRXRCO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFzQjtRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBcUI7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVksQ0FBQyxRQUFnQjtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbEQsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU87WUFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNO1NBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLHVEQUF1RDtJQUN2RCxVQUFVO1FBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO0NBQ0YifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/cluster",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.21",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"sendmessage": "^3.0.1",
|
|
46
46
|
"terminal-link": "^5.0.0",
|
|
47
47
|
"utility": "^2.5.0",
|
|
48
|
-
"@eggjs/utils": "5.0.0-beta.
|
|
48
|
+
"@eggjs/utils": "5.0.0-beta.21"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"address": "2",
|
|
@@ -55,15 +55,15 @@
|
|
|
55
55
|
"typescript": "^5.9.3",
|
|
56
56
|
"urllib": "^4.8.2",
|
|
57
57
|
"vitest": "4.0.0-beta.16",
|
|
58
|
-
"@eggjs/
|
|
59
|
-
"@eggjs/
|
|
60
|
-
"@eggjs/
|
|
58
|
+
"@eggjs/mock": "7.0.0-beta.21",
|
|
59
|
+
"@eggjs/supertest": "9.0.0-beta.21",
|
|
60
|
+
"@eggjs/tsconfig": "3.1.0-beta.21"
|
|
61
61
|
},
|
|
62
62
|
"engines": {
|
|
63
63
|
"node": ">=22.18.0"
|
|
64
64
|
},
|
|
65
65
|
"scripts": {
|
|
66
|
-
"build": "tsdown",
|
|
66
|
+
"build": "tsdown && rimraf dist && tsc -b --clean && tsc",
|
|
67
67
|
"lint": "oxlint",
|
|
68
68
|
"typecheck": "tsc --noEmit",
|
|
69
69
|
"test": "vitest run"
|