@antelopejs/core 1.13.0 → 1.13.2
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/core/cli/cli-ui.js +1 -1
- package/dist/core/cli/cli-ui.js.map +1 -1
- package/dist/core/cli/commands/config/keys.d.ts +1 -0
- package/dist/core/cli/commands/config/keys.js +24 -1
- package/dist/core/cli/commands/config/keys.js.map +1 -1
- package/dist/core/cli/commands/config/set-action.js +19 -6
- package/dist/core/cli/commands/config/set-action.js.map +1 -1
- package/dist/core/cli/commands/module/init-action.js +20 -30
- package/dist/core/cli/commands/module/init-action.js.map +1 -1
- package/dist/core/cli/commands/module/test-action.js +20 -0
- package/dist/core/cli/commands/module/test-action.js.map +1 -1
- package/dist/core/cli/commands/plugins.js +0 -1
- package/dist/core/cli/commands/plugins.js.map +1 -1
- package/dist/core/cli/commands/project/dev-action.js +5 -2
- package/dist/core/cli/commands/project/dev-action.js.map +1 -1
- package/dist/core/cli/commands/project/init-action.js +13 -17
- package/dist/core/cli/commands/project/init-action.js.map +1 -1
- package/dist/core/cli/common.js +3 -3
- package/dist/core/cli/common.js.map +1 -1
- package/dist/core/cli/full-cli.js +4 -2
- package/dist/core/cli/full-cli.js.map +1 -1
- package/dist/core/cli/git-url.d.ts +1 -0
- package/dist/core/cli/git-url.js +17 -0
- package/dist/core/cli/git-url.js.map +1 -0
- package/dist/core/cli/help.d.ts +0 -2
- package/dist/core/cli/help.js +9 -31
- package/dist/core/cli/help.js.map +1 -1
- package/dist/core/cli/index.js +3 -2
- package/dist/core/cli/index.js.map +1 -1
- package/dist/core/cli/options.d.ts +1 -0
- package/dist/core/cli/options.js +1 -0
- package/dist/core/cli/options.js.map +1 -1
- package/dist/core/cli/output/capabilities.js +12 -16
- package/dist/core/cli/output/capabilities.js.map +1 -1
- package/dist/core/cli/output/flags.d.ts +2 -0
- package/dist/core/cli/output/flags.js +12 -0
- package/dist/core/cli/output/flags.js.map +1 -0
- package/dist/core/cli/output/format.d.ts +2 -0
- package/dist/core/cli/output/format.js +29 -0
- package/dist/core/cli/output/format.js.map +1 -1
- package/dist/core/cli/output/tasks.js +8 -1
- package/dist/core/cli/output/tasks.js.map +1 -1
- package/dist/core/cli/output/types.d.ts +2 -1
- package/dist/core/cli/output/ui.js +87 -23
- package/dist/core/cli/output/ui.js.map +1 -1
- package/dist/core/cli/output/verbosity.d.ts +3 -0
- package/dist/core/cli/output/verbosity.js +13 -1
- package/dist/core/cli/output/verbosity.js.map +1 -1
- package/dist/core/cli/plugin-arguments.d.ts +1 -0
- package/dist/core/cli/plugin-arguments.js +23 -2
- package/dist/core/cli/plugin-arguments.js.map +1 -1
- package/dist/core/cli/public.d.ts +3 -3
- package/dist/core/cli/public.js +4 -3
- package/dist/core/cli/public.js.map +1 -1
- package/dist/core/cli/version-check.js +2 -1
- package/dist/core/cli/version-check.js.map +1 -1
- package/dist/core/module-manifest.d.ts +1 -0
- package/dist/core/module-manifest.js.map +1 -1
- package/dist/core/runtime/launch-sequence.js +13 -5
- package/dist/core/runtime/launch-sequence.js.map +1 -1
- package/dist/core/runtime/process-claim.d.ts +7 -0
- package/dist/core/runtime/process-claim.js +111 -0
- package/dist/core/runtime/process-claim.js.map +1 -0
- package/dist/core/runtime/project-launch.js +2 -66
- package/dist/core/runtime/project-launch.js.map +1 -1
- package/dist/core/shutdown/process-tree.d.ts +1 -0
- package/dist/core/shutdown/process-tree.js +9 -0
- package/dist/core/shutdown/process-tree.js.map +1 -1
- package/dist/core/shutdown/shutdown-manager.d.ts +12 -4
- package/dist/core/shutdown/shutdown-manager.js +70 -36
- package/dist/core/shutdown/shutdown-manager.js.map +1 -1
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.js +15 -1
- package/dist/logging/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ModuleManager } from "../module-manager";
|
|
2
|
+
import type { RuntimePolicy } from "./runtime-policy";
|
|
3
|
+
import { type ShutdownHandler, ShutdownManager } from "../shutdown";
|
|
4
|
+
export declare function getActiveShutdownManager(): ShutdownManager | undefined;
|
|
5
|
+
export declare function createShutdownManager(policy: RuntimePolicy): ShutdownManager;
|
|
6
|
+
export declare function registerModuleShutdownHandler(shutdownManager: ShutdownManager, manager: ModuleManager): ShutdownHandler;
|
|
7
|
+
export declare function claimProcess(shutdownManager: ShutdownManager, policy: RuntimePolicy): void;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getActiveShutdownManager = getActiveShutdownManager;
|
|
4
|
+
exports.createShutdownManager = createShutdownManager;
|
|
5
|
+
exports.registerModuleShutdownHandler = registerModuleShutdownHandler;
|
|
6
|
+
exports.claimProcess = claimProcess;
|
|
7
|
+
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
8
|
+
const tasks_1 = require("../cli/output/tasks");
|
|
9
|
+
const runtime_bootstrap_1 = require("./runtime-bootstrap");
|
|
10
|
+
const shutdown_1 = require("../shutdown");
|
|
11
|
+
const Logger = new logging_1.Logging.Channel("loader");
|
|
12
|
+
const SHUTDOWN_PRIORITY_MODULES = 30;
|
|
13
|
+
const SHUTDOWN_PRIORITY_CHILD_PROCESSES = 15;
|
|
14
|
+
const SHUTDOWN_PRIORITY_CLEANUP = 10;
|
|
15
|
+
const STOPPING_LABELS = {
|
|
16
|
+
SIGINT: "Stopping the project (Ctrl+C again to force)",
|
|
17
|
+
SIGTERM: "Stopping the project",
|
|
18
|
+
};
|
|
19
|
+
const STOPPED_LABEL = "Stopped the project";
|
|
20
|
+
const TIMED_OUT_LABEL = "Stopped the project after the shutdown timed out";
|
|
21
|
+
const FORCED_LABEL = "Stopped the project without waiting for its shutdown";
|
|
22
|
+
const activeShutdownManagers = [];
|
|
23
|
+
function getActiveShutdownManager() {
|
|
24
|
+
return activeShutdownManagers.at(-1);
|
|
25
|
+
}
|
|
26
|
+
function setActiveShutdownManager(shutdownManager) {
|
|
27
|
+
releaseActiveShutdownManager(shutdownManager);
|
|
28
|
+
activeShutdownManagers.at(-1)?.removeSignalHandlers();
|
|
29
|
+
activeShutdownManagers.push(shutdownManager);
|
|
30
|
+
shutdownManager.setupSignalHandlers();
|
|
31
|
+
}
|
|
32
|
+
function releaseActiveShutdownManager(shutdownManager) {
|
|
33
|
+
const index = activeShutdownManagers.indexOf(shutdownManager);
|
|
34
|
+
if (index === -1) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const wasActive = index === activeShutdownManagers.length - 1;
|
|
38
|
+
activeShutdownManagers.splice(index, 1);
|
|
39
|
+
shutdownManager.removeSignalHandlers();
|
|
40
|
+
if (wasActive) {
|
|
41
|
+
activeShutdownManagers.at(-1)?.setupSignalHandlers();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function createStopListener(isReported) {
|
|
45
|
+
let task;
|
|
46
|
+
return {
|
|
47
|
+
onStopping: (signal) => {
|
|
48
|
+
task = isReported
|
|
49
|
+
? (0, tasks_1.getProcessTasks)().start(STOPPING_LABELS[signal])
|
|
50
|
+
: undefined;
|
|
51
|
+
},
|
|
52
|
+
onStopped: (hasTimedOut) => {
|
|
53
|
+
if (hasTimedOut) {
|
|
54
|
+
task?.warn(TIMED_OUT_LABEL);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
task?.succeed(STOPPED_LABEL);
|
|
58
|
+
},
|
|
59
|
+
onForced: () => {
|
|
60
|
+
(0, shutdown_1.killProcessTree)();
|
|
61
|
+
task?.warn(FORCED_LABEL);
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function createShutdownManager(policy) {
|
|
66
|
+
return new shutdown_1.ShutdownManager(shutdown_1.DEFAULT_SHUTDOWN_TIMEOUT_MS, process, createStopListener(policy.terminal));
|
|
67
|
+
}
|
|
68
|
+
async function shutdownModules(manager) {
|
|
69
|
+
const errors = [];
|
|
70
|
+
try {
|
|
71
|
+
await manager.stopAll();
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
errors.push(error);
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
await manager.destroyAll();
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
errors.push(error);
|
|
81
|
+
}
|
|
82
|
+
if (errors.length > 0) {
|
|
83
|
+
throw new AggregateError(errors, "Shutdown failed");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function registerModuleShutdownHandler(shutdownManager, manager) {
|
|
87
|
+
const handler = () => shutdownModules(manager);
|
|
88
|
+
shutdownManager.register(handler, SHUTDOWN_PRIORITY_MODULES);
|
|
89
|
+
return handler;
|
|
90
|
+
}
|
|
91
|
+
function registerChildProcessCleanup(shutdownManager) {
|
|
92
|
+
shutdownManager.register(async () => {
|
|
93
|
+
const terminated = await (0, shutdown_1.terminateProcessTree)();
|
|
94
|
+
if (terminated.length > 0) {
|
|
95
|
+
Logger.Debug(`Terminated ${terminated.length} leftover child process(es): ${terminated.join(", ")}`);
|
|
96
|
+
}
|
|
97
|
+
}, SHUTDOWN_PRIORITY_CHILD_PROCESSES);
|
|
98
|
+
}
|
|
99
|
+
function claimProcess(shutdownManager, policy) {
|
|
100
|
+
if (policy.signals) {
|
|
101
|
+
registerChildProcessCleanup(shutdownManager);
|
|
102
|
+
}
|
|
103
|
+
shutdownManager.register(async () => {
|
|
104
|
+
releaseActiveShutdownManager(shutdownManager);
|
|
105
|
+
(0, runtime_bootstrap_1.releaseProcessShutdownManager)(shutdownManager);
|
|
106
|
+
}, SHUTDOWN_PRIORITY_CLEANUP);
|
|
107
|
+
if (policy.signals) {
|
|
108
|
+
setActiveShutdownManager(shutdownManager);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=process-claim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-claim.js","sourceRoot":"","sources":["../../../src/core/runtime/process-claim.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,74 +37,18 @@ exports.startProject = startProject;
|
|
|
37
37
|
exports.launchFromBuild = launchFromBuild;
|
|
38
38
|
const node_stream_1 = require("node:stream");
|
|
39
39
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
40
|
+
const process_claim_1 = require("./process-claim");
|
|
40
41
|
const runtime_bootstrap_1 = require("./runtime-bootstrap");
|
|
41
42
|
const config_paths_1 = require("../config/config-paths");
|
|
42
|
-
const shutdown_1 = require("../shutdown");
|
|
43
43
|
const runtime_policy_1 = require("./runtime-policy");
|
|
44
44
|
const launch_sequence_1 = require("./launch-sequence");
|
|
45
45
|
const Logger = new logging_1.Logging.Channel("loader");
|
|
46
46
|
const MAX_STREAM_LISTENERS = 20;
|
|
47
47
|
const INTERACTIVE_PROMPT = "> ";
|
|
48
|
-
const SHUTDOWN_PRIORITY_MODULES = 30;
|
|
49
48
|
const SHUTDOWN_PRIORITY_RESOURCES = 20;
|
|
50
|
-
const SHUTDOWN_PRIORITY_CHILD_PROCESSES = 15;
|
|
51
49
|
const SHUTDOWN_PRIORITY_CLEANUP = 10;
|
|
52
50
|
const UNSUPPORTED_ARTIFACT_OPTIONS_WARNING = "Watch and interactive modes are only available when launching from configuration; ignoring them for this build artifact launch.";
|
|
53
51
|
node_stream_1.Writable.prototype.setMaxListeners(MAX_STREAM_LISTENERS);
|
|
54
|
-
const activeShutdownManagers = [];
|
|
55
|
-
function setActiveShutdownManager(shutdownManager) {
|
|
56
|
-
releaseActiveShutdownManager(shutdownManager);
|
|
57
|
-
activeShutdownManagers.at(-1)?.removeSignalHandlers();
|
|
58
|
-
activeShutdownManagers.push(shutdownManager);
|
|
59
|
-
shutdownManager.setupSignalHandlers();
|
|
60
|
-
}
|
|
61
|
-
function releaseActiveShutdownManager(shutdownManager) {
|
|
62
|
-
const index = activeShutdownManagers.indexOf(shutdownManager);
|
|
63
|
-
if (index === -1) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
const wasActive = index === activeShutdownManagers.length - 1;
|
|
67
|
-
activeShutdownManagers.splice(index, 1);
|
|
68
|
-
shutdownManager.removeSignalHandlers();
|
|
69
|
-
if (wasActive) {
|
|
70
|
-
activeShutdownManagers.at(-1)?.setupSignalHandlers();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
function registerModuleShutdownHandler(shutdownManager, manager) {
|
|
74
|
-
shutdownManager.register(() => shutdownModules(manager), SHUTDOWN_PRIORITY_MODULES);
|
|
75
|
-
}
|
|
76
|
-
async function shutdownModules(manager) {
|
|
77
|
-
const errors = [];
|
|
78
|
-
try {
|
|
79
|
-
await manager.stopAll();
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
errors.push(error);
|
|
83
|
-
}
|
|
84
|
-
try {
|
|
85
|
-
await manager.destroyAll();
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
errors.push(error);
|
|
89
|
-
}
|
|
90
|
-
if (errors.length > 0) {
|
|
91
|
-
throw new AggregateError(errors, "Shutdown failed");
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function registerChildProcessCleanup(shutdownManager) {
|
|
95
|
-
shutdownManager.register(async () => {
|
|
96
|
-
const terminated = await (0, shutdown_1.terminateProcessTree)();
|
|
97
|
-
if (terminated.length > 0) {
|
|
98
|
-
Logger.Debug(`Terminated ${terminated.length} leftover child process(es): ${terminated.join(", ")}`);
|
|
99
|
-
}
|
|
100
|
-
}, SHUTDOWN_PRIORITY_CHILD_PROCESSES);
|
|
101
|
-
}
|
|
102
|
-
function registerShutdownCleanup(shutdownManager) {
|
|
103
|
-
shutdownManager.register(async () => {
|
|
104
|
-
releaseActiveShutdownManager(shutdownManager);
|
|
105
|
-
(0, runtime_bootstrap_1.releaseProcessShutdownManager)(shutdownManager);
|
|
106
|
-
}, SHUTDOWN_PRIORITY_CLEANUP);
|
|
107
|
-
}
|
|
108
52
|
function keepRunningThroughFailedReloads(shutdownManager) {
|
|
109
53
|
const withdraw = (0, runtime_bootstrap_1.tolerateInvalidatedModuleWork)();
|
|
110
54
|
shutdownManager.register(async () => {
|
|
@@ -151,11 +95,6 @@ async function setupWatching(manager, fs, projectFolder, env, options, shutdownM
|
|
|
151
95
|
}
|
|
152
96
|
async function setupPostLaunchFeatures(started, projectFolder, env, options) {
|
|
153
97
|
const { manager, shutdownManager } = started;
|
|
154
|
-
registerModuleShutdownHandler(shutdownManager, manager);
|
|
155
|
-
if (started.policy.signals) {
|
|
156
|
-
registerChildProcessCleanup(shutdownManager);
|
|
157
|
-
}
|
|
158
|
-
registerShutdownCleanup(shutdownManager);
|
|
159
98
|
if (!started.dev && (options.watch || options.interactive)) {
|
|
160
99
|
Logger.Warn(UNSUPPORTED_ARTIFACT_OPTIONS_WARNING);
|
|
161
100
|
}
|
|
@@ -170,9 +109,6 @@ async function setupPostLaunchFeatures(started, projectFolder, env, options) {
|
|
|
170
109
|
}, SHUTDOWN_PRIORITY_RESOURCES);
|
|
171
110
|
repl.start(INTERACTIVE_PROMPT);
|
|
172
111
|
}
|
|
173
|
-
if (started.policy.signals) {
|
|
174
|
-
setActiveShutdownManager(shutdownManager);
|
|
175
|
-
}
|
|
176
112
|
}
|
|
177
113
|
async function startProject(prepare, projectFolder, env, options, policy = runtime_policy_1.DEFAULT_RUNTIME_POLICY) {
|
|
178
114
|
const started = await (0, launch_sequence_1.runLaunchSequence)(prepare, projectFolder, env, options, policy);
|
|
@@ -191,7 +127,7 @@ async function restartProject(projectFolder, env, options) {
|
|
|
191
127
|
return;
|
|
192
128
|
isRestarting = true;
|
|
193
129
|
try {
|
|
194
|
-
const activeShutdownManager =
|
|
130
|
+
const activeShutdownManager = (0, process_claim_1.getActiveShutdownManager)();
|
|
195
131
|
if (activeShutdownManager) {
|
|
196
132
|
await activeShutdownManager.shutdown();
|
|
197
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-launch.js","sourceRoot":"","sources":["../../../src/core/runtime/project-launch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"project-launch.js","sourceRoot":"","sources":["../../../src/core/runtime/project-launch.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,6 @@ export interface ProcessTreeOptions {
|
|
|
8
8
|
gracePeriodMs?: number;
|
|
9
9
|
}
|
|
10
10
|
export declare function collectDescendants(rootPid: number, options?: ProcessTreeOptions): number[];
|
|
11
|
+
export declare function killProcessTree(rootPid?: number, options?: ProcessTreeOptions): number[];
|
|
11
12
|
export declare function terminateProcessTree(rootPid?: number, options?: ProcessTreeOptions): Promise<number[]>;
|
|
12
13
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.collectDescendants = collectDescendants;
|
|
4
|
+
exports.killProcessTree = killProcessTree;
|
|
4
5
|
exports.terminateProcessTree = terminateProcessTree;
|
|
5
6
|
const node_fs_1 = require("node:fs");
|
|
6
7
|
const PROC_PATH = "/proc";
|
|
@@ -92,6 +93,14 @@ function collectDescendants(rootPid, options = {}) {
|
|
|
92
93
|
}
|
|
93
94
|
return descendants;
|
|
94
95
|
}
|
|
96
|
+
function killProcessTree(rootPid = process.pid, options = {}) {
|
|
97
|
+
const kill = options.kill ?? defaultKill;
|
|
98
|
+
const descendants = collectDescendants(rootPid, options);
|
|
99
|
+
for (const pid of descendants) {
|
|
100
|
+
signal(pid, "SIGKILL", kill);
|
|
101
|
+
}
|
|
102
|
+
return descendants;
|
|
103
|
+
}
|
|
95
104
|
async function terminateProcessTree(rootPid = process.pid, options = {}) {
|
|
96
105
|
const descendants = collectDescendants(rootPid, options);
|
|
97
106
|
if (descendants.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../../src/core/shutdown/process-tree.ts"],"names":[],"mappings":";;AAqFA,gDAqCC;AAeD,oDA4BC;
|
|
1
|
+
{"version":3,"file":"process-tree.js","sourceRoot":"","sources":["../../../src/core/shutdown/process-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
export type ShutdownHandler = () => Promise<void> | void;
|
|
2
|
-
type ProcessSignal = "SIGINT" | "SIGTERM";
|
|
2
|
+
export type ProcessSignal = "SIGINT" | "SIGTERM";
|
|
3
3
|
export interface ProcessSignalSource {
|
|
4
4
|
on(signal: ProcessSignal, listener: () => void): unknown;
|
|
5
5
|
removeListener(signal: ProcessSignal, listener: () => void): unknown;
|
|
6
6
|
}
|
|
7
|
+
export interface SignalShutdownListener {
|
|
8
|
+
onStopping(signal: ProcessSignal): void;
|
|
9
|
+
onStopped(hasTimedOut: boolean): void;
|
|
10
|
+
onForced(signal: ProcessSignal): void;
|
|
11
|
+
}
|
|
7
12
|
export declare const DEFAULT_SHUTDOWN_TIMEOUT_MS = 10000;
|
|
13
|
+
export declare const SHUTDOWN_CLEANUP_TIMEOUT_MS = 3000;
|
|
8
14
|
export declare class ShutdownManager {
|
|
9
15
|
private timeoutMs;
|
|
10
16
|
private signalSource;
|
|
17
|
+
private signalListener;
|
|
11
18
|
private handlers;
|
|
12
19
|
private isShuttingDown;
|
|
13
20
|
private shutdownPromise?;
|
|
@@ -15,7 +22,7 @@ export declare class ShutdownManager {
|
|
|
15
22
|
private sigintHandler?;
|
|
16
23
|
private sigtermHandler?;
|
|
17
24
|
private seenSignals;
|
|
18
|
-
constructor(timeoutMs?: number, signalSource?: ProcessSignalSource);
|
|
25
|
+
constructor(timeoutMs?: number, signalSource?: ProcessSignalSource, signalListener?: SignalShutdownListener);
|
|
19
26
|
register(handler: ShutdownHandler, priority: number): void;
|
|
20
27
|
unregister(handler: ShutdownHandler): void;
|
|
21
28
|
shutdown(exitCode?: number): Promise<void>;
|
|
@@ -24,9 +31,10 @@ export declare class ShutdownManager {
|
|
|
24
31
|
removeSignalHandlers(): void;
|
|
25
32
|
private detachSignalHandler;
|
|
26
33
|
private handleSignal;
|
|
34
|
+
private handleSignalDuringShutdown;
|
|
27
35
|
private updateRequestedExitCode;
|
|
28
36
|
private executeShutdown;
|
|
29
|
-
private runHandlersWithTimeout;
|
|
30
37
|
private executeHandlers;
|
|
38
|
+
private runHandlersWithin;
|
|
39
|
+
private runHandler;
|
|
31
40
|
}
|
|
32
|
-
export {};
|
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ShutdownManager = exports.DEFAULT_SHUTDOWN_TIMEOUT_MS = void 0;
|
|
3
|
+
exports.ShutdownManager = exports.SHUTDOWN_CLEANUP_TIMEOUT_MS = exports.DEFAULT_SHUTDOWN_TIMEOUT_MS = void 0;
|
|
4
4
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
5
|
+
const exit_codes_1 = require("../cli/exit-codes");
|
|
5
6
|
const Logger = new logging_1.Logging.Channel("shutdown");
|
|
6
7
|
exports.DEFAULT_SHUTDOWN_TIMEOUT_MS = 10000;
|
|
7
|
-
|
|
8
|
-
const
|
|
8
|
+
exports.SHUTDOWN_CLEANUP_TIMEOUT_MS = 3000;
|
|
9
|
+
const MILLISECONDS_PER_SECOND = 1000;
|
|
10
|
+
const SIGNAL_EXIT_CODES = {
|
|
11
|
+
SIGINT: exit_codes_1.CANCELLED_EXIT_CODE,
|
|
12
|
+
SIGTERM: exit_codes_1.SUCCESS_EXIT_CODE,
|
|
13
|
+
};
|
|
14
|
+
const FORCED_EXIT_CODES = {
|
|
15
|
+
SIGINT: exit_codes_1.CANCELLED_EXIT_CODE,
|
|
16
|
+
SIGTERM: exit_codes_1.FAILURE_EXIT_CODE,
|
|
17
|
+
};
|
|
18
|
+
const SILENT_LISTENER = {
|
|
19
|
+
onStopping: () => undefined,
|
|
20
|
+
onStopped: () => undefined,
|
|
21
|
+
onForced: () => undefined,
|
|
22
|
+
};
|
|
23
|
+
function settleWithin(work, timeoutMs) {
|
|
24
|
+
let timer;
|
|
25
|
+
const timeout = new Promise((resolve) => {
|
|
26
|
+
timer = setTimeout(() => resolve(false), timeoutMs);
|
|
27
|
+
});
|
|
28
|
+
return Promise.race([work.then(() => true), timeout]).finally(() => clearTimeout(timer));
|
|
29
|
+
}
|
|
9
30
|
class ShutdownManager {
|
|
10
31
|
timeoutMs;
|
|
11
32
|
signalSource;
|
|
33
|
+
signalListener;
|
|
12
34
|
handlers = [];
|
|
13
35
|
isShuttingDown = false;
|
|
14
36
|
shutdownPromise;
|
|
@@ -16,9 +38,10 @@ class ShutdownManager {
|
|
|
16
38
|
sigintHandler;
|
|
17
39
|
sigtermHandler;
|
|
18
40
|
seenSignals = new Set();
|
|
19
|
-
constructor(timeoutMs = exports.DEFAULT_SHUTDOWN_TIMEOUT_MS, signalSource = process) {
|
|
41
|
+
constructor(timeoutMs = exports.DEFAULT_SHUTDOWN_TIMEOUT_MS, signalSource = process, signalListener = SILENT_LISTENER) {
|
|
20
42
|
this.timeoutMs = timeoutMs;
|
|
21
43
|
this.signalSource = signalSource;
|
|
44
|
+
this.signalListener = signalListener;
|
|
22
45
|
}
|
|
23
46
|
register(handler, priority) {
|
|
24
47
|
this.handlers.push({ handler, priority });
|
|
@@ -61,17 +84,22 @@ class ShutdownManager {
|
|
|
61
84
|
}
|
|
62
85
|
handleSignal(signal) {
|
|
63
86
|
if (this.isShuttingDown) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
87
|
+
this.handleSignalDuringShutdown(signal);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
this.seenSignals.add(signal);
|
|
91
|
+
this.signalListener.onStopping(signal);
|
|
92
|
+
void this.shutdown(SIGNAL_EXIT_CODES[signal]);
|
|
93
|
+
}
|
|
94
|
+
handleSignalDuringShutdown(signal) {
|
|
95
|
+
if (this.seenSignals.has(signal)) {
|
|
96
|
+
Logger.Warn(`Received ${signal} during shutdown. Forcing process exit.`);
|
|
97
|
+
this.signalListener.onForced(signal);
|
|
98
|
+
process.exit(FORCED_EXIT_CODES[signal]);
|
|
71
99
|
return;
|
|
72
100
|
}
|
|
73
101
|
this.seenSignals.add(signal);
|
|
74
|
-
|
|
102
|
+
Logger.Info(`Received ${signal} during graceful shutdown; ignoring (already shutting down).`);
|
|
75
103
|
}
|
|
76
104
|
updateRequestedExitCode(exitCode) {
|
|
77
105
|
if (typeof exitCode !== "number") {
|
|
@@ -81,42 +109,48 @@ class ShutdownManager {
|
|
|
81
109
|
this.requestedExitCode = exitCode;
|
|
82
110
|
return;
|
|
83
111
|
}
|
|
84
|
-
if (this.requestedExitCode ===
|
|
85
|
-
exitCode !==
|
|
112
|
+
if (this.requestedExitCode === exit_codes_1.SUCCESS_EXIT_CODE &&
|
|
113
|
+
exitCode !== exit_codes_1.SUCCESS_EXIT_CODE) {
|
|
86
114
|
this.requestedExitCode = exitCode;
|
|
87
115
|
}
|
|
88
116
|
}
|
|
89
117
|
async executeShutdown() {
|
|
90
|
-
await this.
|
|
118
|
+
const hasTimedOut = await this.executeHandlers();
|
|
119
|
+
if (this.seenSignals.size > 0) {
|
|
120
|
+
this.signalListener.onStopped(hasTimedOut);
|
|
121
|
+
}
|
|
91
122
|
if (typeof this.requestedExitCode === "number") {
|
|
92
123
|
process.exit(this.requestedExitCode);
|
|
93
124
|
}
|
|
94
125
|
}
|
|
95
|
-
runHandlersWithTimeout() {
|
|
96
|
-
let timeout;
|
|
97
|
-
const timeoutPromise = new Promise((resolve) => {
|
|
98
|
-
timeout = setTimeout(() => {
|
|
99
|
-
Logger.Error("Shutdown timed out, forcing completion");
|
|
100
|
-
resolve();
|
|
101
|
-
}, this.timeoutMs);
|
|
102
|
-
});
|
|
103
|
-
return Promise.race([this.executeHandlers(), timeoutPromise]).finally(() => {
|
|
104
|
-
if (timeout) {
|
|
105
|
-
clearTimeout(timeout);
|
|
106
|
-
}
|
|
107
|
-
this.handlers = [];
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
126
|
async executeHandlers() {
|
|
111
127
|
const sortedHandlers = [...this.handlers].sort((left, right) => right.priority - left.priority);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
128
|
+
this.handlers = [];
|
|
129
|
+
const run = await this.runHandlersWithin(sortedHandlers, this.timeoutMs);
|
|
130
|
+
if (!run.hasTimedOut) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
Logger.Error(`Shutdown timed out after ${this.timeoutMs / MILLISECONDS_PER_SECOND}s, abandoning the handler still running`);
|
|
134
|
+
await this.runHandlersWithin(run.remaining, exports.SHUTDOWN_CLEANUP_TIMEOUT_MS);
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
async runHandlersWithin(handlers, timeoutMs) {
|
|
138
|
+
const deadline = Date.now() + timeoutMs;
|
|
139
|
+
for (const [index, { handler }] of handlers.entries()) {
|
|
140
|
+
const hasSettled = await settleWithin(this.runHandler(handler), deadline - Date.now());
|
|
141
|
+
if (!hasSettled) {
|
|
142
|
+
return { hasTimedOut: true, remaining: handlers.slice(index + 1) };
|
|
118
143
|
}
|
|
119
144
|
}
|
|
145
|
+
return { hasTimedOut: false, remaining: [] };
|
|
146
|
+
}
|
|
147
|
+
async runHandler(handler) {
|
|
148
|
+
try {
|
|
149
|
+
await handler();
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
Logger.Error("Shutdown handler error:", error);
|
|
153
|
+
}
|
|
120
154
|
}
|
|
121
155
|
}
|
|
122
156
|
exports.ShutdownManager = ShutdownManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-manager.js","sourceRoot":"","sources":["../../../src/core/shutdown/shutdown-manager.ts"],"names":[],"mappings":";;;AAAA,gEAA6D;
|
|
1
|
+
{"version":3,"file":"shutdown-manager.js","sourceRoot":"","sources":["../../../src/core/shutdown/shutdown-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/logging/index.d.ts
CHANGED
|
@@ -2,5 +2,7 @@ import type { AntelopeLogging } from "@antelopejs/interface-core/config";
|
|
|
2
2
|
export declare const levelNames: Record<number, string>;
|
|
3
3
|
export declare const levelMap: Record<string, number>;
|
|
4
4
|
export declare const defaultConfigLogging: AntelopeLogging;
|
|
5
|
+
export type LogAudience = "app" | "cli";
|
|
5
6
|
export declare function setupAntelopeProjectLogging(config?: AntelopeLogging): void;
|
|
7
|
+
export declare function setLogAudience(audience: LogAudience): void;
|
|
6
8
|
export declare function addChannelFilter(channel: string, level: number): void;
|
package/dist/logging/index.js
CHANGED
|
@@ -5,11 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.defaultConfigLogging = exports.levelMap = exports.levelNames = void 0;
|
|
7
7
|
exports.setupAntelopeProjectLogging = setupAntelopeProjectLogging;
|
|
8
|
+
exports.setLogAudience = setLogAudience;
|
|
8
9
|
exports.addChannelFilter = addChannelFilter;
|
|
9
10
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
10
11
|
const listener_1 = __importDefault(require("@antelopejs/interface-core/logging/listener"));
|
|
11
12
|
const object_1 = require("../utils/object");
|
|
12
13
|
const tasks_1 = require("../core/cli/output/tasks");
|
|
14
|
+
const capabilities_1 = require("../core/cli/output/capabilities");
|
|
13
15
|
const logging_utils_1 = require("../core/cli/logging-utils");
|
|
14
16
|
const log_template_1 = require("./log-template");
|
|
15
17
|
const DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
@@ -44,8 +46,13 @@ exports.defaultConfigLogging = {
|
|
|
44
46
|
},
|
|
45
47
|
dateFormat: DEFAULT_DATE_FORMAT,
|
|
46
48
|
};
|
|
49
|
+
const LOG_ROUTES = {
|
|
50
|
+
app: { standard: "result", error: "feedback" },
|
|
51
|
+
cli: { standard: "feedback", error: "feedback" },
|
|
52
|
+
};
|
|
47
53
|
let eventLogUnregister = null;
|
|
48
54
|
let loggingConfig = exports.defaultConfigLogging;
|
|
55
|
+
let logAudience = "app";
|
|
49
56
|
const channelCache = {};
|
|
50
57
|
const channelFilters = {};
|
|
51
58
|
function resolveLevelValue(level) {
|
|
@@ -141,9 +148,13 @@ function formatLogLine(log, module) {
|
|
|
141
148
|
dateFormat: loggingConfig.dateFormat || DEFAULT_DATE_FORMAT,
|
|
142
149
|
});
|
|
143
150
|
}
|
|
151
|
+
function logChannel(levelId) {
|
|
152
|
+
const route = LOG_ROUTES[logAudience];
|
|
153
|
+
return levelId >= exports.levelMap.error ? route.error : route.standard;
|
|
154
|
+
}
|
|
144
155
|
function writeLogLine(log, module) {
|
|
145
156
|
const message = formatLogLine(log, module);
|
|
146
|
-
const stream = log.levelId
|
|
157
|
+
const stream = (0, capabilities_1.processStreams)()[logChannel(log.levelId)];
|
|
147
158
|
(0, tasks_1.getProcessTasks)().write(stream, `${message}\n`);
|
|
148
159
|
}
|
|
149
160
|
let attributingModule = false;
|
|
@@ -189,6 +200,9 @@ function setupAntelopeProjectLogging(config) {
|
|
|
189
200
|
configureFilters();
|
|
190
201
|
registerLogHandler();
|
|
191
202
|
}
|
|
203
|
+
function setLogAudience(audience) {
|
|
204
|
+
logAudience = audience;
|
|
205
|
+
}
|
|
192
206
|
function addChannelFilter(channel, level) {
|
|
193
207
|
channelFilters[channel] = level;
|
|
194
208
|
clearChannelCache();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antelopejs/core",
|
|
3
|
-
"version": "1.13.
|
|
3
|
+
"version": "1.13.2",
|
|
4
4
|
"description": "TypeScript framework extending hexagonal architecture across your application and its ecosystem through explicit contracts and replaceable modules.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"antelopejs",
|