@start9labs/start-sdk 0.4.0-beta.51 → 0.4.0-beta.52
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/base/lib/actions/input/builder/inputSpec.d.ts +126 -5
- package/base/lib/actions/input/builder/inputSpec.js +219 -9
- package/base/lib/actions/input/builder/inputSpec.js.map +1 -1
- package/base/lib/actions/input/builder/list.d.ts +21 -0
- package/base/lib/actions/input/builder/list.js +21 -0
- package/base/lib/actions/input/builder/list.js.map +1 -1
- package/base/lib/actions/input/builder/value.d.ts +54 -0
- package/base/lib/actions/input/builder/value.js +56 -1
- package/base/lib/actions/input/builder/value.js.map +1 -1
- package/base/lib/actions/input/builder/variants.d.ts +11 -0
- package/base/lib/actions/input/builder/variants.js +17 -2
- package/base/lib/actions/input/builder/variants.js.map +1 -1
- package/base/lib/actions/input/inputSpecConstants.d.ts +203 -5
- package/base/lib/actions/input/inputSpecConstants.js +118 -38
- package/base/lib/actions/input/inputSpecConstants.js.map +1 -1
- package/base/lib/actions/input/inputSpecTypes.d.ts +99 -0
- package/base/lib/actions/input/inputSpecTypes.js +6 -1
- package/base/lib/actions/input/inputSpecTypes.js.map +1 -1
- package/base/lib/actions/setupActions.d.ts +6 -3
- package/base/lib/actions/setupActions.js +6 -3
- package/base/lib/actions/setupActions.js.map +1 -1
- package/base/lib/exver/index.d.ts +233 -2
- package/base/lib/exver/index.js +197 -3
- package/base/lib/exver/index.js.map +1 -1
- package/base/lib/index.d.ts +23 -1
- package/base/lib/index.js +3 -2
- package/base/lib/index.js.map +1 -1
- package/base/lib/inits/setupInit.d.ts +17 -0
- package/base/lib/inits/setupInit.js +7 -0
- package/base/lib/inits/setupInit.js.map +1 -1
- package/base/lib/inits/setupUninit.d.ts +12 -0
- package/base/lib/inits/setupUninit.js +7 -0
- package/base/lib/inits/setupUninit.js.map +1 -1
- package/base/lib/osBindings/ServerHostname.d.ts +1 -0
- package/base/lib/osBindings/ServerHostname.js +4 -0
- package/base/lib/osBindings/ServerHostname.js.map +1 -0
- package/base/lib/osBindings/ServerInfo.d.ts +1 -0
- package/base/lib/osBindings/SetServerHostnameParams.d.ts +4 -0
- package/base/lib/osBindings/SetServerHostnameParams.js +4 -0
- package/base/lib/osBindings/SetServerHostnameParams.js.map +1 -0
- package/base/lib/osBindings/SetupExecuteParams.d.ts +3 -1
- package/base/lib/osBindings/SmtpSecurity.d.ts +1 -0
- package/base/lib/osBindings/SmtpSecurity.js +4 -0
- package/base/lib/osBindings/SmtpSecurity.js.map +1 -0
- package/base/lib/osBindings/SmtpValue.d.ts +4 -2
- package/base/lib/osBindings/SmtpValue.js +0 -1
- package/base/lib/osBindings/SmtpValue.js.map +1 -1
- package/base/lib/osBindings/StartOsRecoveryInfo.d.ts +2 -2
- package/base/lib/osBindings/TestSmtpParams.d.ts +4 -2
- package/base/lib/osBindings/TestSmtpParams.js +0 -1
- package/base/lib/osBindings/TestSmtpParams.js.map +1 -1
- package/base/lib/osBindings/index.d.ts +3 -1
- package/base/lib/s9pk/index.d.ts +66 -0
- package/base/lib/s9pk/index.js +70 -1
- package/base/lib/s9pk/index.js.map +1 -1
- package/base/lib/types.d.ts +68 -2
- package/base/lib/types.js +14 -0
- package/base/lib/types.js.map +1 -1
- package/base/lib/util/asError.d.ts +8 -0
- package/base/lib/util/asError.js +8 -0
- package/base/lib/util/asError.js.map +1 -1
- package/base/lib/util/deepEqual.d.ts +15 -0
- package/base/lib/util/deepEqual.js +15 -0
- package/base/lib/util/deepEqual.js.map +1 -1
- package/base/lib/util/deepMerge.d.ts +18 -0
- package/base/lib/util/deepMerge.js +18 -0
- package/base/lib/util/deepMerge.js.map +1 -1
- package/base/lib/util/getDefaultString.d.ts +8 -0
- package/base/lib/util/getDefaultString.js +8 -0
- package/base/lib/util/getDefaultString.js.map +1 -1
- package/base/lib/util/graph.d.ts +57 -0
- package/base/lib/util/graph.js +47 -0
- package/base/lib/util/graph.js.map +1 -1
- package/base/lib/util/inMs.d.ts +15 -0
- package/base/lib/util/inMs.js +15 -0
- package/base/lib/util/inMs.js.map +1 -1
- package/base/lib/util/ip.d.ts +81 -0
- package/base/lib/util/ip.js +81 -0
- package/base/lib/util/ip.js.map +1 -1
- package/base/lib/util/once.d.ts +13 -0
- package/base/lib/util/once.js +13 -0
- package/base/lib/util/once.js.map +1 -1
- package/base/lib/util/patterns.d.ts +11 -0
- package/base/lib/util/patterns.js +11 -0
- package/base/lib/util/patterns.js.map +1 -1
- package/base/lib/util/regexes.d.ts +38 -0
- package/base/lib/util/regexes.js +38 -0
- package/base/lib/util/regexes.js.map +1 -1
- package/base/lib/util/splitCommand.d.ts +14 -0
- package/base/lib/util/splitCommand.js +14 -0
- package/base/lib/util/splitCommand.js.map +1 -1
- package/base/lib/util/stringFromStdErrOut.d.ts +7 -0
- package/base/lib/util/stringFromStdErrOut.js +7 -0
- package/base/lib/util/stringFromStdErrOut.js.map +1 -1
- package/base/lib/util/typeHelpers.d.ts +35 -0
- package/base/lib/util/typeHelpers.js +7 -0
- package/base/lib/util/typeHelpers.js.map +1 -1
- package/package/lib/StartSdk.d.ts +328 -2
- package/package/lib/StartSdk.js +142 -1
- package/package/lib/StartSdk.js.map +1 -1
- package/package/lib/backup/Backups.d.ts +71 -0
- package/package/lib/backup/Backups.js +69 -0
- package/package/lib/backup/Backups.js.map +1 -1
- package/package/lib/backup/setupBackups.d.ts +14 -0
- package/package/lib/backup/setupBackups.js +9 -0
- package/package/lib/backup/setupBackups.js.map +1 -1
- package/package/lib/health/HealthCheck.d.ts +16 -0
- package/package/lib/health/HealthCheck.js +15 -0
- package/package/lib/health/HealthCheck.js.map +1 -1
- package/package/lib/health/checkFns/HealthCheckResult.d.ts +6 -0
- package/package/lib/health/checkFns/index.d.ts +8 -0
- package/package/lib/health/checkFns/index.js +8 -0
- package/package/lib/health/checkFns/index.js.map +1 -1
- package/package/lib/mainFn/CommandController.d.ts +29 -0
- package/package/lib/mainFn/CommandController.js +29 -0
- package/package/lib/mainFn/CommandController.js.map +1 -1
- package/package/lib/mainFn/Daemon.d.ts +38 -2
- package/package/lib/mainFn/Daemon.js +38 -2
- package/package/lib/mainFn/Daemon.js.map +1 -1
- package/package/lib/mainFn/Daemons.d.ts +31 -0
- package/package/lib/mainFn/Daemons.js +13 -0
- package/package/lib/mainFn/Daemons.js.map +1 -1
- package/package/lib/mainFn/Mounts.d.ts +38 -0
- package/package/lib/mainFn/Mounts.js +38 -0
- package/package/lib/mainFn/Mounts.js.map +1 -1
- package/package/lib/mainFn/index.d.ts +1 -0
- package/package/lib/mainFn/index.js +1 -0
- package/package/lib/mainFn/index.js.map +1 -1
- package/package/lib/manifest/setupManifest.d.ts +9 -0
- package/package/lib/manifest/setupManifest.js +9 -0
- package/package/lib/manifest/setupManifest.js.map +1 -1
- package/package/lib/test/output.sdk.d.ts +192 -2
- package/package/lib/util/SubContainer.d.ts +46 -0
- package/package/lib/util/SubContainer.js +10 -0
- package/package/lib/util/SubContainer.js.map +1 -1
- package/package/lib/util/fileHelper.d.ts +41 -8
- package/package/lib/util/fileHelper.js +6 -4
- package/package/lib/util/fileHelper.js.map +1 -1
- package/package/lib/version/VersionGraph.d.ts +61 -0
- package/package/lib/version/VersionGraph.js +61 -0
- package/package/lib/version/VersionGraph.js.map +1 -1
- package/package/lib/version/VersionInfo.d.ts +17 -0
- package/package/lib/version/VersionInfo.js +12 -0
- package/package/lib/version/VersionInfo.js.map +1 -1
- package/package/package.json +3 -2
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupBackups.js","sourceRoot":"","sources":["../../../../package/lib/backup/setupBackups.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"setupBackups.js","sourceRoot":"","sources":["../../../../package/lib/backup/setupBackups.ts"],"names":[],"mappings":";;AA4BA,oCAwBC;AApDD,uCAAmC;AAmBnC;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAC1B,OAA8B;IAE9B,IAAI,cAAkE,CAAA;IACtE,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;QAChC,cAAc,GAAG,OAAO,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC,iBAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,CAAA;IAC5D,CAAC;IACD,MAAM,MAAM,GAAoB;QAC9B,IAAI,YAAY;YACd,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACxB,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACtE,CAAC,CAAmC,CAAA;QACtC,CAAC;QACD,IAAI,WAAW;YACb,OAAO;gBACL,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;oBAC5B,OAAO,CAAC,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAChE,CAAC;aACF,CAAA;QACH,CAAC;KACF,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { Effects, HealthCheckId } from '../../../base/lib/types';
|
|
|
2
2
|
import { HealthCheckResult } from './checkFns/HealthCheckResult';
|
|
3
3
|
import { Trigger } from '../trigger';
|
|
4
4
|
import { Drop } from '../util';
|
|
5
|
+
/** Parameters for creating a health check */
|
|
5
6
|
export type HealthCheckParams = {
|
|
6
7
|
id: HealthCheckId;
|
|
7
8
|
name: string;
|
|
@@ -9,6 +10,13 @@ export type HealthCheckParams = {
|
|
|
9
10
|
gracePeriod?: number;
|
|
10
11
|
fn(): Promise<HealthCheckResult> | HealthCheckResult;
|
|
11
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* A periodic health check that reports daemon readiness to the StartOS UI.
|
|
15
|
+
*
|
|
16
|
+
* Polls at an interval controlled by a {@link Trigger}, reporting results as
|
|
17
|
+
* "starting" (during the grace period), "success", or "failure". Automatically
|
|
18
|
+
* pauses when the daemon is stopped and resumes when restarted.
|
|
19
|
+
*/
|
|
12
20
|
export declare class HealthCheck extends Drop {
|
|
13
21
|
private started;
|
|
14
22
|
private setStarted;
|
|
@@ -17,8 +25,16 @@ export declare class HealthCheck extends Drop {
|
|
|
17
25
|
private currentValue;
|
|
18
26
|
private promise;
|
|
19
27
|
private constructor();
|
|
28
|
+
/**
|
|
29
|
+
* Create a new HealthCheck instance and begin its polling loop.
|
|
30
|
+
* @param effects - The effects context for reporting health status
|
|
31
|
+
* @param options - Health check configuration (ID, name, check function, trigger, grace period)
|
|
32
|
+
* @returns A new HealthCheck instance
|
|
33
|
+
*/
|
|
20
34
|
static of(effects: Effects, options: HealthCheckParams): HealthCheck;
|
|
35
|
+
/** Signal that the daemon is running, enabling health check polling */
|
|
21
36
|
start(): void;
|
|
37
|
+
/** Signal that the daemon has stopped, pausing health check polling */
|
|
22
38
|
stop(): void;
|
|
23
39
|
onDrop(): void;
|
|
24
40
|
}
|
|
@@ -3,6 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.HealthCheck = void 0;
|
|
4
4
|
const defaultTrigger_1 = require("../trigger/defaultTrigger");
|
|
5
5
|
const util_1 = require("../util");
|
|
6
|
+
/**
|
|
7
|
+
* A periodic health check that reports daemon readiness to the StartOS UI.
|
|
8
|
+
*
|
|
9
|
+
* Polls at an interval controlled by a {@link Trigger}, reporting results as
|
|
10
|
+
* "starting" (during the grace period), "success", or "failure". Automatically
|
|
11
|
+
* pauses when the daemon is stopped and resumes when restarted.
|
|
12
|
+
*/
|
|
6
13
|
class HealthCheck extends util_1.Drop {
|
|
7
14
|
constructor(effects, o) {
|
|
8
15
|
super();
|
|
@@ -78,14 +85,22 @@ class HealthCheck extends util_1.Drop {
|
|
|
78
85
|
}
|
|
79
86
|
});
|
|
80
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Create a new HealthCheck instance and begin its polling loop.
|
|
90
|
+
* @param effects - The effects context for reporting health status
|
|
91
|
+
* @param options - Health check configuration (ID, name, check function, trigger, grace period)
|
|
92
|
+
* @returns A new HealthCheck instance
|
|
93
|
+
*/
|
|
81
94
|
static of(effects, options) {
|
|
82
95
|
return new HealthCheck(effects, options);
|
|
83
96
|
}
|
|
97
|
+
/** Signal that the daemon is running, enabling health check polling */
|
|
84
98
|
start() {
|
|
85
99
|
if (this.started)
|
|
86
100
|
return;
|
|
87
101
|
this.setStarted(performance.now());
|
|
88
102
|
}
|
|
103
|
+
/** Signal that the daemon has stopped, pausing health check polling */
|
|
89
104
|
stop() {
|
|
90
105
|
if (!this.started)
|
|
91
106
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HealthCheck.js","sourceRoot":"","sources":["../../../../package/lib/health/HealthCheck.ts"],"names":[],"mappings":";;;AAIA,8DAA0D;AAC1D,kCAA6C;
|
|
1
|
+
{"version":3,"file":"HealthCheck.js","sourceRoot":"","sources":["../../../../package/lib/health/HealthCheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
import { T } from '../../../../base/lib';
|
|
2
|
+
/**
|
|
3
|
+
* The result of a single health check invocation.
|
|
4
|
+
*
|
|
5
|
+
* Contains a `result` field ("success", "failure", or "starting") and an optional `message`.
|
|
6
|
+
* This is the unnamed variant -- the health check name is added by the framework.
|
|
7
|
+
*/
|
|
2
8
|
export type HealthCheckResult = Omit<T.NamedHealthCheckResult, 'name'>;
|
|
@@ -2,6 +2,14 @@ import { runHealthScript } from './runHealthScript';
|
|
|
2
2
|
export { checkPortListening } from './checkPortListening';
|
|
3
3
|
export { HealthCheckResult } from './HealthCheckResult';
|
|
4
4
|
export { checkWebUrl } from './checkWebUrl';
|
|
5
|
+
/**
|
|
6
|
+
* Create a promise that rejects after the specified timeout.
|
|
7
|
+
* Useful for racing against long-running health checks.
|
|
8
|
+
*
|
|
9
|
+
* @param ms - Timeout duration in milliseconds
|
|
10
|
+
* @param options.message - Custom error message (defaults to "Timed out")
|
|
11
|
+
* @returns A promise that never resolves, only rejects after the timeout
|
|
12
|
+
*/
|
|
5
13
|
export declare function timeoutPromise(ms: number, { message }?: {
|
|
6
14
|
message?: string | undefined;
|
|
7
15
|
}): Promise<never>;
|
|
@@ -8,6 +8,14 @@ var checkPortListening_1 = require("./checkPortListening");
|
|
|
8
8
|
Object.defineProperty(exports, "checkPortListening", { enumerable: true, get: function () { return checkPortListening_1.checkPortListening; } });
|
|
9
9
|
var checkWebUrl_1 = require("./checkWebUrl");
|
|
10
10
|
Object.defineProperty(exports, "checkWebUrl", { enumerable: true, get: function () { return checkWebUrl_1.checkWebUrl; } });
|
|
11
|
+
/**
|
|
12
|
+
* Create a promise that rejects after the specified timeout.
|
|
13
|
+
* Useful for racing against long-running health checks.
|
|
14
|
+
*
|
|
15
|
+
* @param ms - Timeout duration in milliseconds
|
|
16
|
+
* @param options.message - Custom error message (defaults to "Timed out")
|
|
17
|
+
* @returns A promise that never resolves, only rejects after the timeout
|
|
18
|
+
*/
|
|
11
19
|
function timeoutPromise(ms, { message = 'Timed out' } = {}) {
|
|
12
20
|
return new Promise((resolve, reject) => setTimeout(() => reject(new Error(message)), ms));
|
|
13
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../package/lib/health/checkFns/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../package/lib/health/checkFns/index.ts"],"names":[],"mappings":";;;AAaA,wCAIC;AAjBD,uDAAmD;AAkB1C,gGAlBA,iCAAe,OAkBA;AAjBxB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAE3B,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AAEpB;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,EAAU,EAAE,EAAE,OAAO,GAAG,WAAW,EAAE,GAAG,EAAE;IACvE,OAAO,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAC5C,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CACjD,CAAA;AACH,CAAC"}
|
|
@@ -2,6 +2,15 @@ import * as T from '../../../base/lib/types';
|
|
|
2
2
|
import { SubContainer } from '../util/SubContainer';
|
|
3
3
|
import { Drop } from '../util';
|
|
4
4
|
import { DaemonCommandType } from './Daemons';
|
|
5
|
+
/**
|
|
6
|
+
* Low-level controller for a single running process inside a subcontainer (or as a JS function).
|
|
7
|
+
*
|
|
8
|
+
* Manages the child process lifecycle: spawning, waiting, and signal-based termination.
|
|
9
|
+
* Used internally by {@link Daemon} to manage individual command executions.
|
|
10
|
+
*
|
|
11
|
+
* @typeParam Manifest - The service manifest type
|
|
12
|
+
* @typeParam C - The subcontainer type, or `null` for JS-only commands
|
|
13
|
+
*/
|
|
5
14
|
export declare class CommandController<Manifest extends T.SDKManifest, C extends SubContainer<Manifest> | null> extends Drop {
|
|
6
15
|
readonly runningAnswer: Promise<null>;
|
|
7
16
|
private state;
|
|
@@ -9,10 +18,30 @@ export declare class CommandController<Manifest extends T.SDKManifest, C extends
|
|
|
9
18
|
private process;
|
|
10
19
|
readonly sigtermTimeout: number;
|
|
11
20
|
private constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Factory method to create a new CommandController.
|
|
23
|
+
*
|
|
24
|
+
* Returns a curried async function: `(effects, subcontainer, exec) => CommandController`.
|
|
25
|
+
* If the exec spec has an `fn` property, runs the function; otherwise spawns a shell command
|
|
26
|
+
* in the subcontainer.
|
|
27
|
+
*/
|
|
12
28
|
static of<Manifest extends T.SDKManifest, C extends SubContainer<Manifest> | null>(): (effects: T.Effects, subcontainer: C, exec: DaemonCommandType<Manifest, C>) => Promise<CommandController<Manifest, C>>;
|
|
29
|
+
/**
|
|
30
|
+
* Wait for the command to finish. Optionally terminate after a timeout.
|
|
31
|
+
* @param options.timeout - Milliseconds to wait before terminating. Defaults to no timeout.
|
|
32
|
+
*/
|
|
13
33
|
wait({ timeout }?: {
|
|
14
34
|
timeout?: number | undefined;
|
|
15
35
|
}): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Terminate the running command by sending a signal.
|
|
38
|
+
*
|
|
39
|
+
* Sends the specified signal (default: SIGTERM), then escalates to SIGKILL
|
|
40
|
+
* after the timeout expires. Destroys the subcontainer after the process exits.
|
|
41
|
+
*
|
|
42
|
+
* @param options.signal - The signal to send (default: SIGTERM)
|
|
43
|
+
* @param options.timeout - Milliseconds before escalating to SIGKILL
|
|
44
|
+
*/
|
|
16
45
|
term({ signal, timeout }?: {
|
|
17
46
|
signal?: NodeJS.Signals | undefined;
|
|
18
47
|
timeout?: number | undefined;
|
|
@@ -39,6 +39,15 @@ const types_1 = require("../../../base/lib/types");
|
|
|
39
39
|
const T = __importStar(require("../../../base/lib/types"));
|
|
40
40
|
const util_1 = require("../util");
|
|
41
41
|
const fs = __importStar(require("node:fs/promises"));
|
|
42
|
+
/**
|
|
43
|
+
* Low-level controller for a single running process inside a subcontainer (or as a JS function).
|
|
44
|
+
*
|
|
45
|
+
* Manages the child process lifecycle: spawning, waiting, and signal-based termination.
|
|
46
|
+
* Used internally by {@link Daemon} to manage individual command executions.
|
|
47
|
+
*
|
|
48
|
+
* @typeParam Manifest - The service manifest type
|
|
49
|
+
* @typeParam C - The subcontainer type, or `null` for JS-only commands
|
|
50
|
+
*/
|
|
42
51
|
class CommandController extends util_1.Drop {
|
|
43
52
|
constructor(runningAnswer, state, subcontainer, process, sigtermTimeout = _1.DEFAULT_SIGTERM_TIMEOUT) {
|
|
44
53
|
super();
|
|
@@ -48,6 +57,13 @@ class CommandController extends util_1.Drop {
|
|
|
48
57
|
this.process = process;
|
|
49
58
|
this.sigtermTimeout = sigtermTimeout;
|
|
50
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Factory method to create a new CommandController.
|
|
62
|
+
*
|
|
63
|
+
* Returns a curried async function: `(effects, subcontainer, exec) => CommandController`.
|
|
64
|
+
* If the exec spec has an `fn` property, runs the function; otherwise spawns a shell command
|
|
65
|
+
* in the subcontainer.
|
|
66
|
+
*/
|
|
51
67
|
static of() {
|
|
52
68
|
return async (effects, subcontainer, exec) => {
|
|
53
69
|
try {
|
|
@@ -126,6 +142,10 @@ class CommandController extends util_1.Drop {
|
|
|
126
142
|
}
|
|
127
143
|
};
|
|
128
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Wait for the command to finish. Optionally terminate after a timeout.
|
|
147
|
+
* @param options.timeout - Milliseconds to wait before terminating. Defaults to no timeout.
|
|
148
|
+
*/
|
|
129
149
|
async wait({ timeout = types_1.NO_TIMEOUT } = {}) {
|
|
130
150
|
if (timeout > 0)
|
|
131
151
|
setTimeout(() => {
|
|
@@ -150,6 +170,15 @@ class CommandController extends util_1.Drop {
|
|
|
150
170
|
await this.subcontainer?.destroy();
|
|
151
171
|
}
|
|
152
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Terminate the running command by sending a signal.
|
|
175
|
+
*
|
|
176
|
+
* Sends the specified signal (default: SIGTERM), then escalates to SIGKILL
|
|
177
|
+
* after the timeout expires. Destroys the subcontainer after the process exits.
|
|
178
|
+
*
|
|
179
|
+
* @param options.signal - The signal to send (default: SIGTERM)
|
|
180
|
+
* @param options.timeout - Milliseconds before escalating to SIGKILL
|
|
181
|
+
*/
|
|
153
182
|
async term({ signal = types_1.SIGTERM, timeout = this.sigtermTimeout } = {}) {
|
|
154
183
|
try {
|
|
155
184
|
if (!this.state.exited) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandController.js","sourceRoot":"","sources":["../../../../package/lib/mainFn/CommandController.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CommandController.js","sourceRoot":"","sources":["../../../../package/lib/mainFn/CommandController.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,14 @@ import { CommandController } from './CommandController';
|
|
|
5
5
|
import { DaemonCommandType } from './Daemons';
|
|
6
6
|
import { Oneshot } from './Oneshot';
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* A managed long-running process wrapper around {@link CommandController}.
|
|
9
|
+
*
|
|
10
|
+
* When started, the daemon automatically restarts its underlying command on failure
|
|
11
|
+
* with exponential backoff (up to 30 seconds). When stopped, the command is terminated
|
|
12
|
+
* gracefully. Implements {@link Drop} for automatic cleanup when the context is left.
|
|
13
|
+
*
|
|
14
|
+
* @typeParam Manifest - The service manifest type
|
|
15
|
+
* @typeParam C - The subcontainer type, or `null` for JS-only daemons
|
|
10
16
|
*/
|
|
11
17
|
export declare class Daemon<Manifest extends T.SDKManifest, C extends SubContainer<Manifest> | null = SubContainer<Manifest> | null> extends Drop {
|
|
12
18
|
private subcontainer;
|
|
@@ -18,16 +24,46 @@ export declare class Daemon<Manifest extends T.SDKManifest, C extends SubContain
|
|
|
18
24
|
private exiting;
|
|
19
25
|
private onExitFns;
|
|
20
26
|
protected constructor(subcontainer: C, startCommand: () => Promise<CommandController<Manifest, C>>, oneshot?: boolean);
|
|
27
|
+
/** Returns true if this daemon is a one-shot process (exits after success) */
|
|
21
28
|
isOneshot(): this is Oneshot<Manifest>;
|
|
29
|
+
/**
|
|
30
|
+
* Factory method to create a new Daemon.
|
|
31
|
+
*
|
|
32
|
+
* Returns a curried function: `(effects, subcontainer, exec) => Daemon`.
|
|
33
|
+
* The daemon auto-terminates when the effects context is left.
|
|
34
|
+
*/
|
|
22
35
|
static of<Manifest extends T.SDKManifest>(): <C extends SubContainer<Manifest> | null>(effects: T.Effects, subcontainer: C, exec: DaemonCommandType<Manifest, C>) => Daemon<Manifest, SubContainer<Manifest, T.Effects> | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Start the daemon. If it is already running, this is a no-op.
|
|
38
|
+
*
|
|
39
|
+
* The daemon will automatically restart on failure with increasing backoff
|
|
40
|
+
* until {@link term} is called.
|
|
41
|
+
*/
|
|
23
42
|
start(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Terminate the daemon, stopping its underlying command.
|
|
45
|
+
*
|
|
46
|
+
* Sends the configured signal (default SIGTERM) and waits for the process to exit.
|
|
47
|
+
* Optionally destroys the subcontainer after termination.
|
|
48
|
+
*
|
|
49
|
+
* @param termOptions - Optional termination settings
|
|
50
|
+
* @param termOptions.signal - The signal to send (default: SIGTERM)
|
|
51
|
+
* @param termOptions.timeout - Milliseconds to wait before SIGKILL
|
|
52
|
+
* @param termOptions.destroySubcontainer - Whether to destroy the subcontainer after exit
|
|
53
|
+
*/
|
|
24
54
|
term(termOptions?: {
|
|
25
55
|
signal?: NodeJS.Signals | undefined;
|
|
26
56
|
timeout?: number | undefined;
|
|
27
57
|
destroySubcontainer?: boolean;
|
|
28
58
|
}): Promise<void>;
|
|
59
|
+
/** Get a reference-counted handle to the daemon's subcontainer, or null if there is none */
|
|
29
60
|
subcontainerRc(): SubContainerRc<Manifest> | null;
|
|
61
|
+
/** Check whether this daemon shares the same subcontainer as another daemon */
|
|
30
62
|
sharesSubcontainerWith(other: Daemon<Manifest, SubContainer<Manifest> | null>): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Register a callback to be invoked each time the daemon's process exits.
|
|
65
|
+
* @param fn - Callback receiving `true` on clean exit, `false` on error
|
|
66
|
+
*/
|
|
31
67
|
onExit(fn: (success: boolean) => void): void;
|
|
32
68
|
onDrop(): void;
|
|
33
69
|
}
|
|
@@ -7,8 +7,14 @@ const CommandController_1 = require("./CommandController");
|
|
|
7
7
|
const TIMEOUT_INCREMENT_MS = 1000;
|
|
8
8
|
const MAX_TIMEOUT_MS = 30000;
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* A managed long-running process wrapper around {@link CommandController}.
|
|
11
|
+
*
|
|
12
|
+
* When started, the daemon automatically restarts its underlying command on failure
|
|
13
|
+
* with exponential backoff (up to 30 seconds). When stopped, the command is terminated
|
|
14
|
+
* gracefully. Implements {@link Drop} for automatic cleanup when the context is left.
|
|
15
|
+
*
|
|
16
|
+
* @typeParam Manifest - The service manifest type
|
|
17
|
+
* @typeParam C - The subcontainer type, or `null` for JS-only daemons
|
|
12
18
|
*/
|
|
13
19
|
class Daemon extends util_1.Drop {
|
|
14
20
|
constructor(subcontainer, startCommand, oneshot = false) {
|
|
@@ -22,9 +28,16 @@ class Daemon extends util_1.Drop {
|
|
|
22
28
|
this.exiting = null;
|
|
23
29
|
this.onExitFns = [];
|
|
24
30
|
}
|
|
31
|
+
/** Returns true if this daemon is a one-shot process (exits after success) */
|
|
25
32
|
isOneshot() {
|
|
26
33
|
return this.oneshot;
|
|
27
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Factory method to create a new Daemon.
|
|
37
|
+
*
|
|
38
|
+
* Returns a curried function: `(effects, subcontainer, exec) => Daemon`.
|
|
39
|
+
* The daemon auto-terminates when the effects context is left.
|
|
40
|
+
*/
|
|
28
41
|
static of() {
|
|
29
42
|
return (effects, subcontainer, exec) => {
|
|
30
43
|
let subc = subcontainer;
|
|
@@ -38,6 +51,12 @@ class Daemon extends util_1.Drop {
|
|
|
38
51
|
return res;
|
|
39
52
|
};
|
|
40
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Start the daemon. If it is already running, this is a no-op.
|
|
56
|
+
*
|
|
57
|
+
* The daemon will automatically restart on failure with increasing backoff
|
|
58
|
+
* until {@link term} is called.
|
|
59
|
+
*/
|
|
41
60
|
async start() {
|
|
42
61
|
if (this.commandController) {
|
|
43
62
|
return;
|
|
@@ -85,6 +104,17 @@ class Daemon extends util_1.Drop {
|
|
|
85
104
|
console.error((0, asError_1.asError)(err));
|
|
86
105
|
});
|
|
87
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Terminate the daemon, stopping its underlying command.
|
|
109
|
+
*
|
|
110
|
+
* Sends the configured signal (default SIGTERM) and waits for the process to exit.
|
|
111
|
+
* Optionally destroys the subcontainer after termination.
|
|
112
|
+
*
|
|
113
|
+
* @param termOptions - Optional termination settings
|
|
114
|
+
* @param termOptions.signal - The signal to send (default: SIGTERM)
|
|
115
|
+
* @param termOptions.timeout - Milliseconds to wait before SIGKILL
|
|
116
|
+
* @param termOptions.destroySubcontainer - Whether to destroy the subcontainer after exit
|
|
117
|
+
*/
|
|
88
118
|
async term(termOptions) {
|
|
89
119
|
this.shouldBeRunning = false;
|
|
90
120
|
this.exitedSuccess = false;
|
|
@@ -101,12 +131,18 @@ class Daemon extends util_1.Drop {
|
|
|
101
131
|
this.exiting = null;
|
|
102
132
|
}
|
|
103
133
|
}
|
|
134
|
+
/** Get a reference-counted handle to the daemon's subcontainer, or null if there is none */
|
|
104
135
|
subcontainerRc() {
|
|
105
136
|
return this.subcontainer?.rc() ?? null;
|
|
106
137
|
}
|
|
138
|
+
/** Check whether this daemon shares the same subcontainer as another daemon */
|
|
107
139
|
sharesSubcontainerWith(other) {
|
|
108
140
|
return this.subcontainer?.guid === other.subcontainer?.guid;
|
|
109
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Register a callback to be invoked each time the daemon's process exits.
|
|
144
|
+
* @param fn - Callback receiving `true` on clean exit, `false` on error
|
|
145
|
+
*/
|
|
110
146
|
onExit(fn) {
|
|
111
147
|
this.onExitFns.push(fn);
|
|
112
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Daemon.js","sourceRoot":"","sources":["../../../../package/lib/mainFn/Daemon.ts"],"names":[],"mappings":";;;AACA,4DAAwD;AACxD,kCAA8B;AAM9B,2DAAuD;AAIvD,MAAM,oBAAoB,GAAG,IAAI,CAAA;AACjC,MAAM,cAAc,GAAG,KAAK,CAAA;AAC5B
|
|
1
|
+
{"version":3,"file":"Daemon.js","sourceRoot":"","sources":["../../../../package/lib/mainFn/Daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,15 @@ export { CommandController } from './CommandController';
|
|
|
8
8
|
import { HealthDaemon } from './HealthDaemon';
|
|
9
9
|
import { Daemon } from './Daemon';
|
|
10
10
|
import { CommandController } from './CommandController';
|
|
11
|
+
/** Promisified version of `child_process.exec` */
|
|
11
12
|
export declare const cpExec: typeof CP.exec.__promisify__;
|
|
13
|
+
/** Promisified version of `child_process.execFile` */
|
|
12
14
|
export declare const cpExecFile: typeof CP.execFile.__promisify__;
|
|
15
|
+
/**
|
|
16
|
+
* Configuration for a daemon's health-check readiness probe.
|
|
17
|
+
*
|
|
18
|
+
* Determines how the system knows when a daemon is healthy and ready to serve.
|
|
19
|
+
*/
|
|
13
20
|
export type Ready = {
|
|
14
21
|
/** A human-readable display name for the health check. If null, the health check itself will be from the UI */
|
|
15
22
|
display: string | null;
|
|
@@ -36,6 +43,10 @@ export type Ready = {
|
|
|
36
43
|
gracePeriod?: number;
|
|
37
44
|
trigger?: Trigger;
|
|
38
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Options for running a daemon as a shell command inside a subcontainer.
|
|
48
|
+
* Includes the command to run, optional signal/timeout, environment, user, and stdio callbacks.
|
|
49
|
+
*/
|
|
39
50
|
export type ExecCommandOptions = {
|
|
40
51
|
command: T.CommandType;
|
|
41
52
|
sigtermTimeout?: number;
|
|
@@ -48,10 +59,19 @@ export type ExecCommandOptions = {
|
|
|
48
59
|
onStdout?: (chunk: Buffer | string | any) => void;
|
|
49
60
|
onStderr?: (chunk: Buffer | string | any) => void;
|
|
50
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Options for running a daemon via an async function that may optionally return
|
|
64
|
+
* a command to execute in the subcontainer. The function receives an `AbortSignal`
|
|
65
|
+
* for cooperative cancellation.
|
|
66
|
+
*/
|
|
51
67
|
export type ExecFnOptions<Manifest extends T.SDKManifest, C extends SubContainer<Manifest> | null> = {
|
|
52
68
|
fn: (subcontainer: C, abort: AbortSignal) => Promise<C extends null ? null : ExecCommandOptions | null>;
|
|
53
69
|
sigtermTimeout?: number;
|
|
54
70
|
};
|
|
71
|
+
/**
|
|
72
|
+
* The execution specification for a daemon: either an {@link ExecFnOptions} (async function)
|
|
73
|
+
* or an {@link ExecCommandOptions} (shell command, only valid when a subcontainer is provided).
|
|
74
|
+
*/
|
|
55
75
|
export type DaemonCommandType<Manifest extends T.SDKManifest, C extends SubContainer<Manifest> | null> = ExecFnOptions<Manifest, C> | (C extends null ? never : ExecCommandOptions);
|
|
56
76
|
type NewDaemonParams<Manifest extends T.SDKManifest, C extends SubContainer<Manifest> | null> = {
|
|
57
77
|
/** What to run as the daemon: either an async fn or a commandline command to run in the subcontainer */
|
|
@@ -157,6 +177,17 @@ export declare class Daemons<Manifest extends T.SDKManifest, Ids extends string>
|
|
|
157
177
|
* @returns a new Daemons object
|
|
158
178
|
*/
|
|
159
179
|
runUntilSuccess(timeout: number | null): Promise<null>;
|
|
180
|
+
/**
|
|
181
|
+
* Gracefully terminate all daemons in reverse dependency order.
|
|
182
|
+
*
|
|
183
|
+
* Daemons with no remaining dependents are shut down first, proceeding
|
|
184
|
+
* until all daemons have been terminated. Falls back to a bulk shutdown
|
|
185
|
+
* if a dependency cycle is detected.
|
|
186
|
+
*/
|
|
160
187
|
term(): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* Start all registered daemons and their health checks.
|
|
190
|
+
* @returns This `Daemons` instance, now running
|
|
191
|
+
*/
|
|
161
192
|
build(): Promise<this>;
|
|
162
193
|
}
|
|
@@ -44,7 +44,9 @@ const HealthDaemon_1 = require("./HealthDaemon");
|
|
|
44
44
|
const Daemon_2 = require("./Daemon");
|
|
45
45
|
const CommandController_2 = require("./CommandController");
|
|
46
46
|
const Oneshot_1 = require("./Oneshot");
|
|
47
|
+
/** Promisified version of `child_process.exec` */
|
|
47
48
|
exports.cpExec = (0, node_util_1.promisify)(CP.exec);
|
|
49
|
+
/** Promisified version of `child_process.execFile` */
|
|
48
50
|
exports.cpExecFile = (0, node_util_1.promisify)(CP.execFile);
|
|
49
51
|
const runCommand = () => CommandController_2.CommandController.of();
|
|
50
52
|
exports.runCommand = runCommand;
|
|
@@ -191,6 +193,13 @@ class Daemons {
|
|
|
191
193
|
}
|
|
192
194
|
return null;
|
|
193
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Gracefully terminate all daemons in reverse dependency order.
|
|
198
|
+
*
|
|
199
|
+
* Daemons with no remaining dependents are shut down first, proceeding
|
|
200
|
+
* until all daemons have been terminated. Falls back to a bulk shutdown
|
|
201
|
+
* if a dependency cycle is detected.
|
|
202
|
+
*/
|
|
194
203
|
async term() {
|
|
195
204
|
const remaining = new Set(this.healthDaemons);
|
|
196
205
|
while (remaining.size > 0) {
|
|
@@ -218,6 +227,10 @@ class Daemons {
|
|
|
218
227
|
}));
|
|
219
228
|
}
|
|
220
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Start all registered daemons and their health checks.
|
|
232
|
+
* @returns This `Daemons` instance, now running
|
|
233
|
+
*/
|
|
221
234
|
async build() {
|
|
222
235
|
for (const daemon of this.healthDaemons) {
|
|
223
236
|
await daemon.updateStatus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Daemons.js","sourceRoot":"","sources":["../../../../package/lib/mainFn/Daemons.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,yCAAqC;AACrC,uDAAwC;AAExC,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,iDAA2D;AAC3D,qCAAiC;AACjC,2DAAuD;AACvD,uCAAmC;
|
|
1
|
+
{"version":3,"file":"Daemons.js","sourceRoot":"","sources":["../../../../package/lib/mainFn/Daemons.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,yCAAqC;AACrC,uDAAwC;AAExC,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,iDAA2D;AAC3D,qCAAiC;AACjC,2DAAuD;AACvD,uCAAmC;AAEnC,kDAAkD;AACrC,QAAA,MAAM,GAAG,IAAA,qBAAS,EAAC,EAAE,CAAC,IAAI,CAAC,CAAA;AACxC,sDAAsD;AACzC,QAAA,UAAU,GAAG,IAAA,qBAAS,EAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;AAgIzC,MAAM,UAAU,GAAG,GAAmC,EAAE,CAC7D,qCAAiB,CAAC,EAAE,EAAoC,CAAA;AAD7C,QAAA,UAAU,cACmC;AAE1D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,OAAO;IAGlB,YACW,OAAkB,EAClB,GAAU,EACV,aAAuC;QAFvC,YAAO,GAAP,OAAO,CAAW;QAClB,QAAG,GAAH,GAAG,CAAO;QACV,kBAAa,GAAb,aAAa,CAA0B;IAC/C,CAAC;IACJ;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,CAAiC,OAA+B;QACvE,OAAO,IAAI,OAAO,CAAkB,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAC9D,CAAC;IAEO,aAAa,CACnB,EAAM,EACN,MAAyE,EACzE,QAAe,EACf,KAAkC;QAElC,MAAM,YAAY,GAAG,IAAI,2BAAY,CACnC,MAAM,EACN,QAAQ;aACL,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;aACrB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EACtC,EAAE,EACF,KAAK,EACL,IAAI,CAAC,OAAO,CACb,CAAA;QACD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAiB,CAAA;QAC7C,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;QAC3D,OAAO,IAAI,OAAO,CAAqB,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,CAAA;IAC1E,CAAC;IA0BD,SAAS,CACP,EAAM,EACN,OAA6D;QAE7D,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,MAAM,GAAG,GAAG,CAAC,OAAqD,EAAE,EAAE;YACpE,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YACzB,MAAM,MAAM,GACV,QAAQ,IAAI,OAAO;gBACjB,CAAC,CAAC,OAAO,CAAC,MAAM;gBAChB,CAAC,CAAC,eAAM,CAAC,EAAE,EAAY,CACnB,IAAI,CAAC,OAAO,EACZ,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,IAAI,CACb,CAAA;YACP,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACxE,CAAC,CAAA;QACD,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;YACtB,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;YACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC;IA2BD,UAAU,CACR,EAAM,EACN,OAA8D;QAE9D,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,MAAM,GAAG,GAAG,CAAC,OAAsD,EAAE,EAAE;YACrE,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YACzB,MAAM,MAAM,GAAG,iBAAO,CAAC,EAAE,EAAY,CACnC,IAAI,CAAC,OAAO,EACZ,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,IAAI,CACb,CAAA;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,2BAAY,CAAC,CAAA;QACvE,CAAC,CAAA;QACD,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;YACtB,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;YACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC;IA0BD,cAAc,CACZ,EAAM,EACN,OAAqD;QAErD,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,MAAM,GAAG,GAAG,CAAC,OAA6C,EAAE,EAAE;YAC5D,IAAI,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAA;YACzB,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACtE,CAAC,CAAA;QACD,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;YACtB,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;YACD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,OAAsB;QAC1C,IAAI,OAAO,GAAG,CAAC,CAAO,EAAE,EAAE,GAAE,CAAC,CAAA;QAC7B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACzC,OAAO,GAAG,GAAG,CAAA;YACb,IAAI,OAAO;gBACT,UAAU,CAAC,GAAG,EAAE;oBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;yBAChC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;yBACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;oBACnB,GAAG,CAAC,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACrD,CAAC,EAAE,OAAO,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,iBAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YAC9C,EAAE,EAAE,KAAK,IAAI,EAAE;gBACb,OAAO,EAAE,CAAA;gBACT,OAAO,IAAI,CAAA;YACb,CAAC;SACF,CAAC,CAAA;QACF,MAAM,YAAY,GAAG,IAAI,2BAAY,CACnC,MAAM,EACN,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,EACvB,qBAAqB,EACrB,cAAc,EACd,IAAI,CAAC,OAAO,CACb,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAgB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;YACvE,GAAG,IAAI,CAAC,aAAa;YACrB,YAAY;SACb,CAAC,CAAC,KAAK,EAAE,CAAA;QACV,IAAI,CAAC;YACH,MAAM,GAAG,CAAA;QACX,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QACtB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAE7C,OAAO,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,4CAA4C;YAC5C,MAAM,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CACvC,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CACvD,CACJ,CAAA;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,2EAA2E;gBAC3E,OAAO,CAAC,IAAI,CACV,4DAA4D,CAC7D,CAAA;gBACD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;YAC/C,CAAC;YAED,4BAA4B;YAC5B,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;YAEzD,6DAA6D;YAC7D,MAAM,OAAO,CAAC,UAAU,CACtB,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC/B,IAAI,CAAC;oBACH,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;oBAChD,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM;wBACvC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,CAAC,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAO,CAAC,CACjD;wBACH,CAAC,CAAC,KAAK,CAAA;oBACT,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAA;gBAC5C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC,CAAC,CACH,CAAA;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,MAAM,CAAC,YAAY,EAAE,CAAA;QAC7B,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAnSD,0BAmSC"}
|
|
@@ -30,20 +30,58 @@ type DependencyOpts<Manifest extends T.SDKManifest> = {
|
|
|
30
30
|
/** Whether or not the resource should be readonly for this subcontainer */
|
|
31
31
|
readonly: boolean;
|
|
32
32
|
} & SharedOptions;
|
|
33
|
+
/**
|
|
34
|
+
* Immutable builder for declaring filesystem mounts into a subcontainer.
|
|
35
|
+
*
|
|
36
|
+
* Supports mounting volumes, static assets, dependency volumes, and backup directories.
|
|
37
|
+
* Each `mount*` method returns a new `Mounts` instance (immutable builder pattern).
|
|
38
|
+
*
|
|
39
|
+
* @typeParam Manifest - The service manifest type
|
|
40
|
+
* @typeParam Backups - Tracks whether backup mounts have been added (type-level flag)
|
|
41
|
+
*/
|
|
33
42
|
export declare class Mounts<Manifest extends T.SDKManifest, Backups extends SharedOptions = never> {
|
|
34
43
|
readonly volumes: VolumeOpts<Manifest>[];
|
|
35
44
|
readonly assets: SharedOptions[];
|
|
36
45
|
readonly dependencies: DependencyOpts<T.SDKManifest>[];
|
|
37
46
|
readonly backups: Backups[];
|
|
38
47
|
private constructor();
|
|
48
|
+
/**
|
|
49
|
+
* Create an empty Mounts builder with no mounts configured.
|
|
50
|
+
* @returns A new Mounts instance ready for chaining mount declarations
|
|
51
|
+
*/
|
|
39
52
|
static of<Manifest extends T.SDKManifest>(): Mounts<Manifest, never>;
|
|
53
|
+
/**
|
|
54
|
+
* Add a volume mount from the service's own volumes.
|
|
55
|
+
* @param options - Volume ID, mountpoint, readonly flag, and optional subpath
|
|
56
|
+
* @returns A new Mounts instance with this volume added
|
|
57
|
+
*/
|
|
40
58
|
mountVolume(options: VolumeOpts<Manifest>): Mounts<Manifest, Backups>;
|
|
59
|
+
/**
|
|
60
|
+
* Add a read-only mount of the service's packaged static assets.
|
|
61
|
+
* @param options - Mountpoint and optional subpath within the assets directory
|
|
62
|
+
* @returns A new Mounts instance with this asset mount added
|
|
63
|
+
*/
|
|
41
64
|
mountAssets(options: SharedOptions): Mounts<Manifest, Backups>;
|
|
65
|
+
/**
|
|
66
|
+
* Add a mount from a dependency package's volume.
|
|
67
|
+
* @param options - Dependency ID, volume ID, mountpoint, readonly flag, and optional subpath
|
|
68
|
+
* @returns A new Mounts instance with this dependency mount added
|
|
69
|
+
*/
|
|
42
70
|
mountDependency<DependencyManifest extends T.SDKManifest>(options: DependencyOpts<DependencyManifest>): Mounts<Manifest, Backups>;
|
|
71
|
+
/**
|
|
72
|
+
* Add a mount of the backup directory. Only valid during backup/restore operations.
|
|
73
|
+
* @param options - Mountpoint and optional subpath within the backup directory
|
|
74
|
+
* @returns A new Mounts instance with this backup mount added
|
|
75
|
+
*/
|
|
43
76
|
mountBackups(options: SharedOptions): Mounts<Manifest, {
|
|
44
77
|
subpath: string | null;
|
|
45
78
|
mountpoint: string;
|
|
46
79
|
}>;
|
|
80
|
+
/**
|
|
81
|
+
* Compile all declared mounts into the low-level mount array consumed by the subcontainer runtime.
|
|
82
|
+
* @throws If any two mounts share the same mountpoint
|
|
83
|
+
* @returns An array of `{ mountpoint, options }` objects
|
|
84
|
+
*/
|
|
47
85
|
build(): MountArray;
|
|
48
86
|
}
|
|
49
87
|
export {};
|