node-or-bun 0.0.0-stage → 0.2.0

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/LICENSE +21 -0
  3. package/README.md +110 -2
  4. package/dist/adapters/bun.d.ts +12 -0
  5. package/dist/adapters/bun.d.ts.map +1 -0
  6. package/dist/adapters/bun.js +263 -0
  7. package/dist/adapters/bun.js.map +1 -0
  8. package/dist/adapters/node.d.ts +11 -0
  9. package/dist/adapters/node.d.ts.map +1 -0
  10. package/dist/adapters/node.js +233 -0
  11. package/dist/adapters/node.js.map +1 -0
  12. package/dist/contract.d.ts +39 -0
  13. package/dist/contract.d.ts.map +1 -0
  14. package/dist/contract.js +4 -0
  15. package/dist/contract.js.map +1 -0
  16. package/dist/errors.d.ts +27 -0
  17. package/dist/errors.d.ts.map +1 -0
  18. package/dist/errors.js +25 -0
  19. package/dist/errors.js.map +1 -0
  20. package/dist/executor.d.ts +3 -0
  21. package/dist/executor.d.ts.map +1 -0
  22. package/dist/executor.js +281 -0
  23. package/dist/executor.js.map +1 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +4 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/internal/capture.d.ts +9 -0
  29. package/dist/internal/capture.d.ts.map +1 -0
  30. package/dist/internal/capture.js +58 -0
  31. package/dist/internal/capture.js.map +1 -0
  32. package/dist/internal/classification.d.ts +31 -0
  33. package/dist/internal/classification.d.ts.map +1 -0
  34. package/dist/internal/classification.js +61 -0
  35. package/dist/internal/classification.js.map +1 -0
  36. package/dist/internal/input.d.ts +9 -0
  37. package/dist/internal/input.d.ts.map +1 -0
  38. package/dist/internal/input.js +62 -0
  39. package/dist/internal/input.js.map +1 -0
  40. package/dist/internal/settlement.d.ts +15 -0
  41. package/dist/internal/settlement.d.ts.map +1 -0
  42. package/dist/internal/settlement.js +39 -0
  43. package/dist/internal/settlement.js.map +1 -0
  44. package/dist/internal/termination.d.ts +8 -0
  45. package/dist/internal/termination.d.ts.map +1 -0
  46. package/dist/internal/termination.js +22 -0
  47. package/dist/internal/termination.js.map +1 -0
  48. package/dist/testing/conformance.d.ts +12 -0
  49. package/dist/testing/conformance.d.ts.map +1 -0
  50. package/dist/testing/conformance.js +439 -0
  51. package/dist/testing/conformance.js.map +1 -0
  52. package/package.json +63 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { CompletionCause, Exit, Launch, ProcessAdapter, ProcessExecutor, ProcessRunResult, Request, RunningProcess, } from "./contract.js";
2
+ export { PROCESS_CAPTURE_LIMIT_BYTES, PROCESS_CLEANUP_STEP_MS, PROCESS_TIMEOUT_MAX_MS, } from "./contract.js";
3
+ export { ProcessRuntimeError, isProcessRuntimeError, processError, } from "./errors.js";
4
+ export type { ProcessErrorCode, ProcessInitiatingCause, ProcessRuntimeErrorOptions, ProcessRuntimeFacts, } from "./errors.js";
5
+ export { createProcessExecutor } from "./executor.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,IAAI,EACJ,MAAM,EACN,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { PROCESS_CAPTURE_LIMIT_BYTES, PROCESS_CLEANUP_STEP_MS, PROCESS_TIMEOUT_MAX_MS, } from "./contract.js";
2
+ export { ProcessRuntimeError, isProcessRuntimeError, processError, } from "./errors.js";
3
+ export { createProcessExecutor } from "./executor.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,GACb,MAAM,aAAa,CAAC;AAOrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type CaptureRead = {
2
+ readonly bytes: Uint8Array;
3
+ readonly overflow: boolean;
4
+ readonly normalEof: boolean;
5
+ };
6
+ export declare const concatBytes: (chunks: readonly Uint8Array[], length: number) => Uint8Array;
7
+ export declare const decodeCapture: (bytes: Uint8Array, strictUtf8: boolean, streamName: "stdout" | "stderr") => string;
8
+ export declare const drainCapture: (stream: AsyncIterable<Uint8Array>, onProblem: (error: unknown) => void) => Promise<CaptureRead>;
9
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/internal/capture.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B,CAAC;AASF,eAAO,MAAM,WAAW,WAAY,SAAS,UAAU,EAAE,UAAU,MAAM,KAAG,UAQ3E,CAAC;AAEF,eAAO,MAAM,aAAa,UACjB,UAAU,cACL,OAAO,cACP,QAAQ,GAAG,QAAQ,KAC9B,MASF,CAAC;AAEF,eAAO,MAAM,YAAY,WACf,aAAa,CAAC,UAAU,CAAC,aACtB,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAClC,OAAO,CAAC,WAAW,CA2BrB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { PROCESS_CAPTURE_LIMIT_BYTES } from "../contract.js";
2
+ import { processError } from "../errors.js";
3
+ const copyChunk = (value) => {
4
+ if (!(value instanceof Uint8Array)) {
5
+ throw processError("stream", "capture stream yielded a non-byte chunk");
6
+ }
7
+ return new Uint8Array(value);
8
+ };
9
+ export const concatBytes = (chunks, length) => {
10
+ const result = new Uint8Array(length);
11
+ let offset = 0;
12
+ for (const chunk of chunks) {
13
+ result.set(chunk, offset);
14
+ offset += chunk.byteLength;
15
+ }
16
+ return result;
17
+ };
18
+ export const decodeCapture = (bytes, strictUtf8, streamName) => {
19
+ try {
20
+ return new TextDecoder("utf-8", {
21
+ fatal: strictUtf8,
22
+ ignoreBOM: true,
23
+ }).decode(bytes);
24
+ }
25
+ catch (cause) {
26
+ throw processError("invalid-output", `${streamName} is not valid UTF-8`, cause);
27
+ }
28
+ };
29
+ export const drainCapture = async (stream, onProblem) => {
30
+ const chunks = [];
31
+ let length = 0;
32
+ let overflow = false;
33
+ try {
34
+ for await (const value of stream) {
35
+ const chunk = copyChunk(value);
36
+ if (overflow) {
37
+ continue;
38
+ }
39
+ const remaining = PROCESS_CAPTURE_LIMIT_BYTES - length;
40
+ const accepted = chunk.byteLength <= remaining ? chunk : chunk.subarray(0, Math.max(0, remaining));
41
+ if (accepted.byteLength > 0) {
42
+ chunks.push(accepted);
43
+ length += accepted.byteLength;
44
+ }
45
+ if (chunk.byteLength > remaining) {
46
+ overflow = true;
47
+ onProblem(processError("output-limit", "captured output exceeded 4 MiB"));
48
+ }
49
+ }
50
+ }
51
+ catch (cause) {
52
+ // Preserve the stream-specific reason at the executor boundary.
53
+ onProblem(cause);
54
+ return { bytes: concatBytes(chunks, length), overflow, normalEof: false };
55
+ }
56
+ return { bytes: concatBytes(chunks, length), overflow, normalEof: true };
57
+ };
58
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/internal/capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Exit } from "../contract.js";
2
+ import { ProcessRuntimeError, type ProcessErrorCode, type ProcessInitiatingCause, type ProcessRuntimeFacts } from "../errors.js";
3
+ export type InitiatingFailure = {
4
+ readonly cause: ProcessInitiatingCause;
5
+ readonly code: ProcessErrorCode;
6
+ readonly error: ProcessRuntimeError;
7
+ };
8
+ export type ClassificationInput = {
9
+ readonly initiatingFailure?: InitiatingFailure | undefined;
10
+ readonly cleanupFailure?: {
11
+ readonly reason: unknown;
12
+ } | undefined;
13
+ readonly decodeFailure?: ProcessRuntimeError | undefined;
14
+ readonly lateFailureCodes: readonly ProcessErrorCode[];
15
+ readonly observedExit: Exit | null;
16
+ readonly completionRequestedBeforeExitObservation: boolean;
17
+ readonly outputBounded: boolean;
18
+ };
19
+ /**
20
+ * The fixed facts-outside classifier from plan v4 section 3.2. Cleanup/forced
21
+ * EOF closure wins; otherwise the first initiating failure wins; otherwise a
22
+ * normal observed exit is a result and strict decode failure is `invalid-output`.
23
+ */
24
+ export declare const classifyProcessOutcome: ({ initiatingFailure, cleanupFailure, decodeFailure, lateFailureCodes, observedExit, completionRequestedBeforeExitObservation, outputBounded, }: ClassificationInput) => {
25
+ readonly kind: "result";
26
+ readonly facts: ProcessRuntimeFacts;
27
+ } | {
28
+ readonly kind: "error";
29
+ readonly error: ProcessRuntimeError;
30
+ };
31
+ //# sourceMappingURL=classification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classification.d.ts","sourceRoot":"","sources":["../../src/internal/classification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACvD,QAAQ,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,wCAAwC,EAAE,OAAO,CAAC;IAC3D,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC,CAAC;AAqBF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,mJAQhC,mBAAmB,KAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;CAqDhE,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { ProcessRuntimeError, } from "../errors.js";
2
+ const facts = ({ initiatingFailure, lateFailureCodes, observedExit, completionRequestedBeforeExitObservation, outputBounded, incompleteCustody, }) => Object.freeze({
3
+ initiatingCause: initiatingFailure?.cause ?? (observedExit === null ? null : "exit"),
4
+ completionRequestedBeforeExitObservation,
5
+ observedExit,
6
+ lateFailureCodes: Object.freeze([...lateFailureCodes]),
7
+ outputBounded,
8
+ incompleteCustody,
9
+ });
10
+ /**
11
+ * The fixed facts-outside classifier from plan v4 section 3.2. Cleanup/forced
12
+ * EOF closure wins; otherwise the first initiating failure wins; otherwise a
13
+ * normal observed exit is a result and strict decode failure is `invalid-output`.
14
+ */
15
+ export const classifyProcessOutcome = ({ initiatingFailure, cleanupFailure, decodeFailure, lateFailureCodes, observedExit, completionRequestedBeforeExitObservation, outputBounded, }) => {
16
+ const shared = {
17
+ initiatingFailure,
18
+ lateFailureCodes,
19
+ observedExit,
20
+ completionRequestedBeforeExitObservation,
21
+ outputBounded,
22
+ };
23
+ if (cleanupFailure !== undefined) {
24
+ return {
25
+ kind: "error",
26
+ error: new ProcessRuntimeError("cleanup", "process cleanup did not complete", {
27
+ cause: cleanupFailure.reason,
28
+ initiatingError: initiatingFailure?.error ?? null,
29
+ facts: facts({ ...shared, incompleteCustody: true }),
30
+ }),
31
+ };
32
+ }
33
+ if (initiatingFailure !== undefined) {
34
+ return {
35
+ kind: "error",
36
+ error: new ProcessRuntimeError(initiatingFailure.code, initiatingFailure.error.message, {
37
+ cause: initiatingFailure.error.cause,
38
+ initiatingError: initiatingFailure.error,
39
+ facts: facts({ ...shared, incompleteCustody: false }),
40
+ }),
41
+ };
42
+ }
43
+ if (decodeFailure !== undefined) {
44
+ return {
45
+ kind: "error",
46
+ error: new ProcessRuntimeError("invalid-output", decodeFailure.message, {
47
+ cause: decodeFailure.cause,
48
+ initiatingError: decodeFailure,
49
+ facts: {
50
+ ...facts({ ...shared, incompleteCustody: false }),
51
+ initiatingCause: "decode",
52
+ },
53
+ }),
54
+ };
55
+ }
56
+ return {
57
+ kind: "result",
58
+ facts: facts({ ...shared, incompleteCustody: false }),
59
+ };
60
+ };
61
+ //# sourceMappingURL=classification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classification.js","sourceRoot":"","sources":["../../src/internal/classification.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,GAIpB,MAAM,cAAc,CAAC;AAkBtB,MAAM,KAAK,GAAG,CAAC,EACb,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,wCAAwC,EACxC,aAAa,EACb,iBAAiB,GAGlB,EAAuB,EAAE,CACxB,MAAM,CAAC,MAAM,CAAC;IACZ,eAAe,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,wCAAwC;IACxC,YAAY;IACZ,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACtD,aAAa;IACb,iBAAiB;CAClB,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,wCAAwC,EACxC,aAAa,GACO,EAE8C,EAAE;IACpE,MAAM,MAAM,GAAG;QACb,iBAAiB;QACjB,gBAAgB;QAChB,YAAY;QACZ,wCAAwC;QACxC,aAAa;KACd,CAAC;IAEF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,mBAAmB,CAAC,SAAS,EAAE,kCAAkC,EAAE;gBAC5E,KAAK,EAAE,cAAc,CAAC,MAAM;gBAC5B,eAAe,EAAE,iBAAiB,EAAE,KAAK,IAAI,IAAI;gBACjD,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;aACrD,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,mBAAmB,CAC5B,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAC/B;gBACE,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK;gBACpC,eAAe,EAAE,iBAAiB,CAAC,KAAK;gBACxC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;aACtD,CACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,EAAE;gBACtE,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,eAAe,EAAE,aAAa;gBAC9B,KAAK,EAAE;oBACL,GAAG,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;oBACjD,eAAe,EAAE,QAAQ;iBAC1B;aACF,CAAC;SACH,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Launch, Request } from "../contract.js";
2
+ export type RequestSnapshot = {
3
+ readonly launch: Launch;
4
+ readonly signal: AbortSignal | undefined;
5
+ readonly timeoutMs: number | undefined;
6
+ readonly strictUtf8: boolean;
7
+ };
8
+ export declare const snapshotRequest: (request: Request) => RequestSnapshot;
9
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/internal/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAItD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,CAAC;AA4BF,eAAO,MAAM,eAAe,YAAa,OAAO,KAAG,eAuClD,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { PROCESS_TIMEOUT_MAX_MS } from "../contract.js";
2
+ import { processError } from "../errors.js";
3
+ const hasNul = (value) => value.includes("\u0000");
4
+ const validateString = (value, field) => {
5
+ if (typeof value !== "string" || value.length === 0 || hasNul(value)) {
6
+ throw processError("invalid-input", `${field} must be a non-empty string without NUL`);
7
+ }
8
+ return value;
9
+ };
10
+ const snapshotEnvironment = (value) => {
11
+ if (value === undefined) {
12
+ return undefined;
13
+ }
14
+ const entries = Object.entries(value);
15
+ const validated = [];
16
+ for (const [key, entryValue] of entries) {
17
+ if (typeof key !== "string" || typeof entryValue !== "string" || hasNul(key) || hasNul(entryValue)) {
18
+ throw processError("invalid-input", "environment entries must be strings without NUL");
19
+ }
20
+ validated.push([key, entryValue]);
21
+ }
22
+ return Object.freeze(Object.fromEntries(validated));
23
+ };
24
+ export const snapshotRequest = (request) => {
25
+ if (request === null || typeof request !== "object") {
26
+ throw processError("invalid-input", "request must be an object");
27
+ }
28
+ const command = validateString(request.command, "command");
29
+ if (!Array.isArray(request.args)) {
30
+ throw processError("invalid-input", "args must be an array");
31
+ }
32
+ const args = [];
33
+ for (let index = 0; index < request.args.length; index += 1) {
34
+ const arg = request.args[index];
35
+ if (typeof arg !== "string" || hasNul(arg)) {
36
+ throw processError("invalid-input", `args[${index}] must be a string without NUL`);
37
+ }
38
+ args.push(arg);
39
+ }
40
+ const cwd = validateString(request.cwd, "cwd");
41
+ const environment = snapshotEnvironment(request.environment);
42
+ const timeoutMs = request.timeoutMs;
43
+ if (timeoutMs !== undefined &&
44
+ (!Number.isInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > PROCESS_TIMEOUT_MAX_MS)) {
45
+ throw processError("invalid-input", "timeoutMs must be an integer in 1..2147483647");
46
+ }
47
+ if (request.strictUtf8 !== undefined && typeof request.strictUtf8 !== "boolean") {
48
+ throw processError("invalid-input", "strictUtf8 must be a boolean");
49
+ }
50
+ return Object.freeze({
51
+ launch: Object.freeze({
52
+ command,
53
+ args: Object.freeze(args),
54
+ cwd,
55
+ ...(environment === undefined ? {} : { environment }),
56
+ }),
57
+ signal: request.signal,
58
+ timeoutMs,
59
+ strictUtf8: request.strictUtf8 ?? false,
60
+ });
61
+ };
62
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/internal/input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export type Settlement<T> = {
2
+ readonly status: "fulfilled";
3
+ readonly value: T;
4
+ } | {
5
+ readonly status: "rejected";
6
+ readonly reason: unknown;
7
+ };
8
+ export type BoundedSettlement<T> = Settlement<T> | {
9
+ readonly status: "timeout";
10
+ };
11
+ export declare const settleOperation: <T>(operation: () => T | PromiseLike<T>) => Promise<Settlement<Awaited<T>>>;
12
+ export declare const settleWithin: <T>(operation: () => T | PromiseLike<T>, timeoutMs: number) => Promise<BoundedSettlement<Awaited<T>>>;
13
+ export declare const rejectedReasons: (settlements: readonly Settlement<unknown>[]) => unknown[];
14
+ export declare const withCause: <T extends object>(error: T, cause: unknown) => T;
15
+ //# sourceMappingURL=settlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../../src/internal/settlement.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,IACpB;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAC3B,UAAU,CAAC,CAAC,CAAC,GACb;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAEnC,eAAO,MAAM,eAAe,GAAU,CAAC,aAC1B,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAClC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAMhC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,CAAC,aACvB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,aACxB,MAAM,KAChB,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAmBvC,CAAC;AAEF,eAAO,MAAM,eAAe,gBACb,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,KAC1C,OAAO,EAGP,CAAC;AAEJ,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,SAAS,CAAC,SAAS,OAAO,KAAG,CAOtE,CAAC"}
@@ -0,0 +1,39 @@
1
+ export const settleOperation = async (operation) => {
2
+ try {
3
+ return { status: "fulfilled", value: await operation() };
4
+ }
5
+ catch (reason) {
6
+ return { status: "rejected", reason };
7
+ }
8
+ };
9
+ export const settleWithin = async (operation, timeoutMs) => {
10
+ let timer;
11
+ const timeout = new Promise((resolve) => {
12
+ timer = setTimeout(() => resolve({ status: "timeout" }), timeoutMs);
13
+ });
14
+ try {
15
+ return await Promise.race([
16
+ Promise.resolve()
17
+ .then(operation)
18
+ .then((value) => ({ status: "fulfilled", value })),
19
+ timeout,
20
+ ]);
21
+ }
22
+ catch (reason) {
23
+ return { status: "rejected", reason };
24
+ }
25
+ finally {
26
+ if (timer !== undefined)
27
+ clearTimeout(timer);
28
+ }
29
+ };
30
+ export const rejectedReasons = (settlements) => settlements.flatMap((settlement) => settlement.status === "rejected" ? [settlement.reason] : []);
31
+ export const withCause = (error, cause) => {
32
+ Object.defineProperty(error, "cause", {
33
+ value: cause,
34
+ configurable: true,
35
+ writable: true,
36
+ });
37
+ return error;
38
+ };
39
+ //# sourceMappingURL=settlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.js","sourceRoot":"","sources":["../../src/internal/settlement.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,SAAmC,EACF,EAAE;IACnC,IAAI,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,EAAE,EAAE,CAAC;IAC3D,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,SAAmC,EACnC,SAAiB,EACuB,EAAE;IAC1C,IAAI,KAAgD,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAgC,CAAC,OAAO,EAAE,EAAE;QACrE,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CACvB;YACE,OAAO,CAAC,OAAO,EAAE;iBACd,IAAI,CAAC,SAAS,CAAC;iBACf,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,WAAoB,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,OAAO;SACoC,CAC9C,CAAC;IACJ,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,WAA2C,EAChC,EAAE,CACb,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CACjC,UAAU,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAC5D,CAAC;AAEJ,MAAM,CAAC,MAAM,SAAS,GAAG,CAAmB,KAAQ,EAAE,KAAc,EAAK,EAAE;IACzE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;QACpC,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type DirectChildCleanupInput = {
2
+ readonly cause: "exited" | "cancelled" | "timeout" | "failed";
3
+ readonly isTerminal: () => boolean;
4
+ readonly waitForTerminal: (timeoutMs: number) => Promise<boolean>;
5
+ readonly terminate: (signal: "SIGTERM" | "SIGKILL") => void;
6
+ };
7
+ export declare const cleanupDirectChild: ({ cause, isTerminal, waitForTerminal, terminate, }: DirectChildCleanupInput) => Promise<void>;
8
+ //# sourceMappingURL=termination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"termination.d.ts","sourceRoot":"","sources":["../../src/internal/termination.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,uDAK5B,uBAAuB,KAAG,OAAO,CAAC,IAAI,CAiBxC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { PROCESS_CLEANUP_STEP_MS } from "../contract.js";
2
+ import { processError } from "../errors.js";
3
+ export const cleanupDirectChild = async ({ cause, isTerminal, waitForTerminal, terminate, }) => {
4
+ if (cause === "exited" || isTerminal()) {
5
+ return;
6
+ }
7
+ try {
8
+ terminate("SIGTERM");
9
+ if (await waitForTerminal(PROCESS_CLEANUP_STEP_MS)) {
10
+ return;
11
+ }
12
+ terminate("SIGKILL");
13
+ if (await waitForTerminal(PROCESS_CLEANUP_STEP_MS)) {
14
+ return;
15
+ }
16
+ }
17
+ catch (error) {
18
+ throw processError("cleanup", "direct child termination failed", error);
19
+ }
20
+ throw processError("cleanup", "direct child terminal observation timed out");
21
+ };
22
+ //# sourceMappingURL=termination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"termination.js","sourceRoot":"","sources":["../../src/internal/termination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAS5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,KAAK,EACL,UAAU,EACV,eAAe,EACf,SAAS,GACe,EAAiB,EAAE;IAC3C,IAAI,KAAK,KAAK,QAAQ,IAAI,UAAU,EAAE,EAAE,CAAC;QACvC,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,IAAI,MAAM,eAAe,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;QACD,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,IAAI,MAAM,eAAe,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACnD,OAAO;QACT,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,CAAC,SAAS,EAAE,iCAAiC,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,YAAY,CAAC,SAAS,EAAE,6CAA6C,CAAC,CAAC;AAC/E,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ProcessAdapter } from "../contract.js";
2
+ export type ConformanceAdapterMode = "normal" | "setup-failure" | "cleanup-failure" | "setup-cleanup-failure" | "pre-retain-failure" | "partial-hooks";
3
+ export type ConformanceAdapterFactory = (mode: ConformanceAdapterMode) => ProcessAdapter;
4
+ export type ConformanceOptions = {
5
+ readonly adapterFactory: ConformanceAdapterFactory;
6
+ readonly command: string;
7
+ readonly fixturePath: string;
8
+ readonly workingDirectory: string;
9
+ readonly supportsSignalExit: boolean;
10
+ };
11
+ export declare const runProcessRuntimeConformance: (options: ConformanceOptions) => Promise<void>;
12
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../src/testing/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,cAAc,EAA6C,MAAM,gBAAgB,CAAC;AAKvH,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,eAAe,GACf,iBAAiB,GACjB,uBAAuB,GACvB,oBAAoB,GACpB,eAAe,CAAC;AAEpB,MAAM,MAAM,yBAAyB,GAAG,CACtC,IAAI,EAAE,sBAAsB,KACzB,cAAc,CAAC;AAEpB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;CACtC,CAAC;AAyWF,eAAO,MAAM,4BAA4B,YAC9B,kBAAkB,KAC1B,OAAO,CAAC,IAAI,CA8Od,CAAC"}