@dbx-tools/core 0.9.69 → 0.9.71
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/index.ts +3 -3
- package/lib/index.d.ts +3 -3
- package/lib/index.js +2 -2
- package/lib/src/exec.d.ts +38 -6
- package/lib/src/exec.js +287 -2
- package/lib/src/project-utils.d.ts +41 -1
- package/lib/src/project-utils.js +149 -27
- package/package.json +2 -2
- package/src/exec.ts +378 -6
- package/src/project-utils.ts +225 -24
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/core";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.71";
|
|
7
7
|
export * as bin from "./src/bin.ts";
|
|
8
8
|
export * as brandFiles from "./src/brand-files.ts";
|
|
9
9
|
export * as bundle from "./src/bundle.ts";
|
|
@@ -21,6 +21,6 @@ export { MAX_TCP_PORT, ENV_ONLY, valueSchema, bundleResourceSchema, bundleEnvEnt
|
|
|
21
21
|
export type { ConfigMapValue, ConfigData, ConfigSource, ConfigOptions, ConfigFile } from "./src/config-utils.ts";
|
|
22
22
|
export type { DependencyResolverOptions, DependencyInfo, ResolvedNpmVersion, NpmSpecifierInput, ResolvedNpmDependencies, MissingDependencyInfo } from "./src/dependency-resolver.ts";
|
|
23
23
|
export { COMMAND_NOT_FOUND_EXIT_CODE } from "./src/exec.ts";
|
|
24
|
-
export type { ExecStdio, LineHandler, LineOutputOptions, StdioOption, ExecResult, ChildProcessResult, ExecOptions, SyncExecStdio, SyncExecOptions, SpawnArgs } from "./src/exec.ts";
|
|
24
|
+
export type { ExecStdio, LineHandler, LineOutputOptions, StdioOption, ExecResult, ChildProcessResult, ExecOptions, KillOptions, SyncExecStdio, SyncExecOptions, SpawnArgs } from "./src/exec.ts";
|
|
25
25
|
export type { FileLockBackend, FileLockAcquisition, FileLockOptions, FileLockLease } from "./src/file-lock.ts";
|
|
26
|
-
export type { ProjectContext, NpmRegistryOptions } from "./src/project-utils.ts";
|
|
26
|
+
export type { ProjectContext, ProjectGhRemote, ProjectGhAccount, ResolveProjectGhAccountOptions, NpmRegistryOptions } from "./src/project-utils.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/core";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.71";
|
|
3
3
|
export * as bin from "./src/bin.ts";
|
|
4
4
|
export * as brandFiles from "./src/brand-files.ts";
|
|
5
5
|
export * as bundle from "./src/bundle.ts";
|
|
@@ -17,6 +17,6 @@ export { MAX_TCP_PORT, ENV_ONLY, valueSchema, bundleResourceSchema, bundleEnvEnt
|
|
|
17
17
|
export type { ConfigMapValue, ConfigData, ConfigSource, ConfigOptions, ConfigFile } from "./src/config-utils.ts";
|
|
18
18
|
export type { DependencyResolverOptions, DependencyInfo, ResolvedNpmVersion, NpmSpecifierInput, ResolvedNpmDependencies, MissingDependencyInfo } from "./src/dependency-resolver.ts";
|
|
19
19
|
export { COMMAND_NOT_FOUND_EXIT_CODE } from "./src/exec.ts";
|
|
20
|
-
export type { ExecStdio, LineHandler, LineOutputOptions, StdioOption, ExecResult, ChildProcessResult, ExecOptions, SyncExecStdio, SyncExecOptions, SpawnArgs } from "./src/exec.ts";
|
|
20
|
+
export type { ExecStdio, LineHandler, LineOutputOptions, StdioOption, ExecResult, ChildProcessResult, ExecOptions, KillOptions, SyncExecStdio, SyncExecOptions, SpawnArgs } from "./src/exec.ts";
|
|
21
21
|
export type { FileLockBackend, FileLockAcquisition, FileLockOptions, FileLockLease } from "./src/file-lock.ts";
|
|
22
|
-
export type { ProjectContext, NpmRegistryOptions } from "./src/project-utils.ts";
|
|
22
|
+
export type { ProjectContext, ProjectGhRemote, ProjectGhAccount, ResolveProjectGhAccountOptions, NpmRegistryOptions } from "./src/project-utils.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/core";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.71";
|
|
6
6
|
export * as bin from "./src/bin.js";
|
|
7
7
|
export * as brandFiles from "./src/brand-files.js";
|
|
8
8
|
export * as bundle from "./src/bundle.js";
|
|
@@ -16,4 +16,4 @@ export * as projectUtils from "./src/project-utils.js";
|
|
|
16
16
|
export { BrandContextSchema, defaultBrandContext, parseBrandContext, brandContextJsonSchema, brandContextPrompt } from "./src/brand-files.js";
|
|
17
17
|
export { MAX_TCP_PORT, ENV_ONLY, valueSchema, bundleResourceSchema, bundleEnvEntrySchema, bundleAppSchema, appEnvEntrySchema, appSchema } from "./src/config-utils.js";
|
|
18
18
|
export { COMMAND_NOT_FOUND_EXIT_CODE } from "./src/exec.js";
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxrQkFBa0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssUUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3ZLLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvY29yZVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjcxXCI7XG5leHBvcnQgKiBhcyBiaW4gZnJvbSBcIi4vc3JjL2Jpbi50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRGaWxlcyBmcm9tIFwiLi9zcmMvYnJhbmQtZmlsZXMudHNcIjtcbmV4cG9ydCAqIGFzIGJ1bmRsZSBmcm9tIFwiLi9zcmMvYnVuZGxlLnRzXCI7XG5leHBvcnQgKiBhcyBjb25maWdVdGlscyBmcm9tIFwiLi9zcmMvY29uZmlnLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBkZXBlbmRlbmN5UmVzb2x2ZXIgZnJvbSBcIi4vc3JjL2RlcGVuZGVuY3ktcmVzb2x2ZXIudHNcIjtcbmV4cG9ydCAqIGFzIGV4ZWMgZnJvbSBcIi4vc3JjL2V4ZWMudHNcIjtcbmV4cG9ydCAqIGFzIGZpbGUgZnJvbSBcIi4vc3JjL2ZpbGUudHNcIjtcbmV4cG9ydCAqIGFzIGZpbGVMb2NrIGZyb20gXCIuL3NyYy9maWxlLWxvY2sudHNcIjtcbmV4cG9ydCAqIGFzIHByb2Nlc3NMb2NrIGZyb20gXCIuL3NyYy9wcm9jZXNzLWxvY2sudHNcIjtcbmV4cG9ydCAqIGFzIHByb2plY3RVdGlscyBmcm9tIFwiLi9zcmMvcHJvamVjdC11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCaW5Db250ZXh0LCBCaW5TZWxlY3Rpb25Db250ZXh0LCBCaW5TZWxlY3RvciwgQmluVmVyc2lvbk91dHB1dCwgQmluVmVyc2lvblBhcnNlciwgQmluT3B0aW9ucywgQmluUGFja2FnZU9wdGlvbnMsIEJpblVybFJlc29sdmVDb250ZXh0LCBCaW5Tb3VyY2UsIEJpblVybCB9IGZyb20gXCIuL3NyYy9iaW4udHNcIjtcbmV4cG9ydCB7IEJyYW5kQ29udGV4dFNjaGVtYSwgZGVmYXVsdEJyYW5kQ29udGV4dCwgcGFyc2VCcmFuZENvbnRleHQsIGJyYW5kQ29udGV4dEpzb25TY2hlbWEsIGJyYW5kQ29udGV4dFByb21wdCB9IGZyb20gXCIuL3NyYy9icmFuZC1maWxlcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCcmFuZENvbnRleHQsIEJyYW5kQ29udGV4dElucHV0IH0gZnJvbSBcIi4vc3JjL2JyYW5kLWZpbGVzLnRzXCI7XG5leHBvcnQgeyBNQVhfVENQX1BPUlQsIEVOVl9PTkxZLCB2YWx1ZVNjaGVtYSwgYnVuZGxlUmVzb3VyY2VTY2hlbWEsIGJ1bmRsZUVudkVudHJ5U2NoZW1hLCBidW5kbGVBcHBTY2hlbWEsIGFwcEVudkVudHJ5U2NoZW1hLCBhcHBTY2hlbWEgfSBmcm9tIFwiLi9zcmMvY29uZmlnLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IENvbmZpZ01hcFZhbHVlLCBDb25maWdEYXRhLCBDb25maWdTb3VyY2UsIENvbmZpZ09wdGlvbnMsIENvbmZpZ0ZpbGUgfSBmcm9tIFwiLi9zcmMvY29uZmlnLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IERlcGVuZGVuY3lSZXNvbHZlck9wdGlvbnMsIERlcGVuZGVuY3lJbmZvLCBSZXNvbHZlZE5wbVZlcnNpb24sIE5wbVNwZWNpZmllcklucHV0LCBSZXNvbHZlZE5wbURlcGVuZGVuY2llcywgTWlzc2luZ0RlcGVuZGVuY3lJbmZvIH0gZnJvbSBcIi4vc3JjL2RlcGVuZGVuY3ktcmVzb2x2ZXIudHNcIjtcbmV4cG9ydCB7IENPTU1BTkRfTk9UX0ZPVU5EX0VYSVRfQ09ERSB9IGZyb20gXCIuL3NyYy9leGVjLnRzXCI7XG5leHBvcnQgdHlwZSB7IEV4ZWNTdGRpbywgTGluZUhhbmRsZXIsIExpbmVPdXRwdXRPcHRpb25zLCBTdGRpb09wdGlvbiwgRXhlY1Jlc3VsdCwgQ2hpbGRQcm9jZXNzUmVzdWx0LCBFeGVjT3B0aW9ucywgS2lsbE9wdGlvbnMsIFN5bmNFeGVjU3RkaW8sIFN5bmNFeGVjT3B0aW9ucywgU3Bhd25BcmdzIH0gZnJvbSBcIi4vc3JjL2V4ZWMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRmlsZUxvY2tCYWNrZW5kLCBGaWxlTG9ja0FjcXVpc2l0aW9uLCBGaWxlTG9ja09wdGlvbnMsIEZpbGVMb2NrTGVhc2UgfSBmcm9tIFwiLi9zcmMvZmlsZS1sb2NrLnRzXCI7XG5leHBvcnQgdHlwZSB7IFByb2plY3RDb250ZXh0LCBQcm9qZWN0R2hSZW1vdGUsIFByb2plY3RHaEFjY291bnQsIFJlc29sdmVQcm9qZWN0R2hBY2NvdW50T3B0aW9ucywgTnBtUmVnaXN0cnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3Byb2plY3QtdXRpbHMudHNcIjtcbiJdfQ==
|
package/lib/src/exec.d.ts
CHANGED
|
@@ -98,17 +98,16 @@ export type ExecResult = {
|
|
|
98
98
|
* This is additive - the object still satisfies `Promise<ExecResult>`, so every
|
|
99
99
|
* existing `await spawn(...)` / `spawn(...).then(...)` caller is unchanged. What
|
|
100
100
|
* is new is that the same value is the live child: callers that want to supervise
|
|
101
|
-
* it
|
|
102
|
-
* spawn.
|
|
103
|
-
* supervises both a bare `ChildProcess` (e.g. portr) and a `spawn()` result.
|
|
101
|
+
* it can read `.pid`, call `.kill(signal)`, and listen for `exit` without a
|
|
102
|
+
* second spawn.
|
|
104
103
|
*
|
|
105
104
|
* @example Await it (unchanged)
|
|
106
105
|
* const { stdout } = await spawn("git", ["rev-parse", "HEAD"], { stdout: "capture" });
|
|
107
106
|
*
|
|
108
107
|
* @example Supervise it
|
|
109
108
|
* const proc = spawn("bun", ["src/server.ts"]);
|
|
110
|
-
*
|
|
111
|
-
* const { exitCode } = await proc;
|
|
109
|
+
* const shutdown = () => kill(proc);
|
|
110
|
+
* const { exitCode } = await proc;
|
|
112
111
|
*/
|
|
113
112
|
export type ChildProcessResult = ChildProcess & Promise<ExecResult>;
|
|
114
113
|
/** Options for {@link spawn}. Extends `SpawnOptions` except `stdio`, which is driven by `stdin` / `stdout` / `stderr`. */
|
|
@@ -126,6 +125,19 @@ export type ExecOptions = Omit<SpawnOptions, "stdio"> & {
|
|
|
126
125
|
*/
|
|
127
126
|
trim?: boolean;
|
|
128
127
|
};
|
|
128
|
+
/** Graceful and forced shutdown policy for {@link kill}. */
|
|
129
|
+
export interface KillOptions {
|
|
130
|
+
/** Signal sent to the snapshotted process tree. `false` skips this phase. Defaults to `SIGTERM`. */
|
|
131
|
+
gracefulSignal?: NodeJS.Signals | false;
|
|
132
|
+
/** Time to wait for graceful shutdown. Defaults to 10 seconds. */
|
|
133
|
+
gracefulTimeoutMs?: number;
|
|
134
|
+
/** Signal sent to survivors. `false` disables forced termination. Defaults to `SIGKILL`. */
|
|
135
|
+
forceSignal?: NodeJS.Signals | false;
|
|
136
|
+
/** Time to poll and force newly discovered descendants. Defaults to 4 seconds. */
|
|
137
|
+
forceTimeoutMs?: number;
|
|
138
|
+
/** Interval used to refresh and poll the process tree. Defaults to 100 milliseconds. */
|
|
139
|
+
pollIntervalMs?: number;
|
|
140
|
+
}
|
|
129
141
|
/** Stdio mode for {@link spawnSync} (no per-line callbacks). */
|
|
130
142
|
export type SyncExecStdio = ExecStdio | "capture";
|
|
131
143
|
/** Options for {@link spawnSync}. Same shape as {@link ExecOptions} but without line-handler stdio. */
|
|
@@ -145,6 +157,26 @@ export type SyncExecOptions = Omit<SpawnOptions, "stdio"> & {
|
|
|
145
157
|
};
|
|
146
158
|
/** Supported command, argument-array, variadic-argument, and options call forms. */
|
|
147
159
|
export type SpawnArgs<T extends SpawnOptions> = [command: string, ...args: string[]] | [command: string, args: readonly string[]] | [command: string, args: readonly string[], options: T] | [command: string, ...argsAndOptions: [...string[], T]];
|
|
160
|
+
/**
|
|
161
|
+
* Stop a child process and descendants discovered through operating-system
|
|
162
|
+
* process snapshots.
|
|
163
|
+
*
|
|
164
|
+
* The initial tree is retained before signaling so descendants remain
|
|
165
|
+
* targetable after their parent exits or they are reparented. Polling refreshes
|
|
166
|
+
* the process table, merges newly created descendants, and sends each one the
|
|
167
|
+
* active shutdown signal once. Either phase can be disabled for graceful-only
|
|
168
|
+
* or force-only termination. macOS and other POSIX platforms use `ps`; Windows
|
|
169
|
+
* uses the built-in PowerShell CIM process provider.
|
|
170
|
+
*
|
|
171
|
+
* Windows does not implement POSIX signal semantics. Node terminates processes
|
|
172
|
+
* unconditionally for supported signals there, including `SIGTERM`.
|
|
173
|
+
*
|
|
174
|
+
* @param child - Root child process whose snapshotted tree should stop
|
|
175
|
+
* @param options - Graceful signal, force signal, timeout, and polling policy
|
|
176
|
+
* @throws When the process table cannot be captured, a signal cannot be sent,
|
|
177
|
+
* or identity-matched processes remain after the final enabled phase
|
|
178
|
+
*/
|
|
179
|
+
export declare function kill(child: ChildProcess, options?: KillOptions): Promise<void>;
|
|
148
180
|
/**
|
|
149
181
|
* Spawn a subprocess. Returns the LIVE child handle that is ALSO a
|
|
150
182
|
* `Promise<ExecResult>` resolving on exit - see {@link ChildProcessResult}.
|
|
@@ -154,7 +186,7 @@ export type SpawnArgs<T extends SpawnOptions> = [command: string, ...args: strin
|
|
|
154
186
|
* or rejects (spawn error other than a missing executable, or `check` on non-zero
|
|
155
187
|
* exit). Existing `await spawn(...)` callers are unaffected. The handle half lets a
|
|
156
188
|
* caller supervise the process (`.pid`, `.kill(signal)`, `exit` event) without a
|
|
157
|
-
* second spawn
|
|
189
|
+
* second spawn.
|
|
158
190
|
*
|
|
159
191
|
* @param command - Executable to run (resolved on `PATH` when `shell` is set on options)
|
|
160
192
|
* @param args - Arguments passed verbatim to the executable
|