@igorjs/pure-ts 0.7.4 → 0.7.7
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/README.md +39 -745
- package/dist/async/cache.d.ts +1 -6
- package/dist/async/cache.d.ts.map +1 -1
- package/dist/async/cache.js.map +1 -1
- package/dist/async/circuit-breaker.d.ts +1 -6
- package/dist/async/circuit-breaker.d.ts.map +1 -1
- package/dist/async/circuit-breaker.js.map +1 -1
- package/dist/async/index.d.ts +56 -12
- package/dist/async/index.d.ts.map +1 -1
- package/dist/async/index.js +41 -12
- package/dist/async/index.js.map +1 -1
- package/dist/async/lazy.d.ts +6 -42
- package/dist/async/lazy.d.ts.map +1 -1
- package/dist/async/lazy.js.map +1 -1
- package/dist/async/pool.d.ts +1 -5
- package/dist/async/pool.d.ts.map +1 -1
- package/dist/async/pool.js +3 -3
- package/dist/async/pool.js.map +1 -1
- package/dist/async/rate-limiter.d.ts +1 -6
- package/dist/async/rate-limiter.d.ts.map +1 -1
- package/dist/async/rate-limiter.js.map +1 -1
- package/dist/async/retry.d.ts +7 -9
- package/dist/async/retry.d.ts.map +1 -1
- package/dist/async/retry.js.map +1 -1
- package/dist/async/semaphore.d.ts +2 -7
- package/dist/async/semaphore.d.ts.map +1 -1
- package/dist/async/semaphore.js.map +1 -1
- package/dist/async/stream.d.ts +1 -5
- package/dist/async/stream.d.ts.map +1 -1
- package/dist/async/stream.js +6 -6
- package/dist/async/stream.js.map +1 -1
- package/dist/async/task-like.d.ts +30 -0
- package/dist/async/task-like.d.ts.map +1 -0
- package/dist/async/task-like.js +13 -0
- package/dist/async/task-like.js.map +1 -0
- package/dist/async/task.d.ts +8 -62
- package/dist/async/task.d.ts.map +1 -1
- package/dist/async/task.js +1 -1
- package/dist/async/task.js.map +1 -1
- package/dist/async/timer.d.ts +1 -6
- package/dist/async/timer.d.ts.map +1 -1
- package/dist/async/timer.js +4 -4
- package/dist/async/timer.js.map +1 -1
- package/dist/client.d.ts +6 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/core/index.d.ts +21 -9
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +21 -9
- package/dist/core/index.js.map +1 -1
- package/dist/core/option.d.ts +26 -68
- package/dist/core/option.d.ts.map +1 -1
- package/dist/core/option.js +7 -20
- package/dist/core/option.js.map +1 -1
- package/dist/core/pipe.d.ts +13 -0
- package/dist/core/pipe.d.ts.map +1 -1
- package/dist/core/pipe.js.map +1 -1
- package/dist/core/result.d.ts +45 -90
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +9 -65
- package/dist/core/result.js.map +1 -1
- package/dist/data/adt.d.ts +1 -2
- package/dist/data/adt.d.ts.map +1 -1
- package/dist/data/codec.d.ts +4 -3
- package/dist/data/codec.d.ts.map +1 -1
- package/dist/data/codec.js.map +1 -1
- package/dist/data/index.d.ts +24 -5
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +11 -3
- package/dist/data/index.js.map +1 -1
- package/dist/data/internals.d.ts +2 -2
- package/dist/data/internals.d.ts.map +1 -1
- package/dist/data/list.d.ts +1 -1
- package/dist/data/non-empty-list.d.ts +1 -1
- package/dist/data/record.d.ts +1 -2
- package/dist/data/record.d.ts.map +1 -1
- package/dist/data/record.js.map +1 -1
- package/dist/data/stable-vec.d.ts +116 -0
- package/dist/data/stable-vec.d.ts.map +1 -0
- package/dist/data/stable-vec.js +184 -0
- package/dist/data/stable-vec.js.map +1 -0
- package/dist/index.d.ts +162 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/io/compression.d.ts +1 -6
- package/dist/io/compression.d.ts.map +1 -1
- package/dist/io/compression.js +3 -3
- package/dist/io/compression.js.map +1 -1
- package/dist/io/crypto.d.ts +1 -5
- package/dist/io/crypto.d.ts.map +1 -1
- package/dist/io/crypto.js +2 -2
- package/dist/io/crypto.js.map +1 -1
- package/dist/io/dns.d.ts +3 -7
- package/dist/io/dns.d.ts.map +1 -1
- package/dist/io/dns.js +3 -3
- package/dist/io/dns.js.map +1 -1
- package/dist/io/file.d.ts +1 -5
- package/dist/io/file.d.ts.map +1 -1
- package/dist/io/file.js +13 -13
- package/dist/io/file.js.map +1 -1
- package/dist/io/index.d.ts +36 -11
- package/dist/io/index.d.ts.map +1 -1
- package/dist/io/index.js +26 -10
- package/dist/io/index.js.map +1 -1
- package/dist/io/net.d.ts +1 -6
- package/dist/io/net.d.ts.map +1 -1
- package/dist/io/net.js +6 -6
- package/dist/io/net.js.map +1 -1
- package/dist/io/subprocess.d.ts +1 -6
- package/dist/io/subprocess.d.ts.map +1 -1
- package/dist/io/subprocess.js +4 -4
- package/dist/io/subprocess.js.map +1 -1
- package/dist/program.d.ts +137 -25
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +23 -5
- package/dist/program.js.map +1 -1
- package/dist/runtime/config.d.ts +4 -5
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +23 -2
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +7 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/logger.d.ts +22 -6
- package/dist/runtime/logger.d.ts.map +1 -1
- package/dist/runtime/logger.js.map +1 -1
- package/dist/runtime/platform.d.ts +2 -2
- package/dist/runtime/platform.d.ts.map +1 -1
- package/dist/runtime/platform.js.map +1 -1
- package/dist/runtime/process.d.ts +4 -2
- package/dist/runtime/process.d.ts.map +1 -1
- package/dist/runtime/process.js.map +1 -1
- package/dist/types/error.d.ts +34 -61
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/error.js.map +1 -1
- package/dist/types/index.d.ts +15 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/nominal.d.ts +1 -3
- package/dist/types/nominal.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/io/net.js
CHANGED
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
* Detects Deno (Deno.connect) first, then Node/Bun (node:net).
|
|
14
14
|
* All runtime access is structural: no type declarations imported.
|
|
15
15
|
*/
|
|
16
|
+
import { makeTask } from "../async/task-like.js";
|
|
16
17
|
import { Err, Ok } from "../core/result.js";
|
|
17
18
|
import { ErrType } from "../types/error.js";
|
|
18
19
|
// -- Error types -------------------------------------------------------------
|
|
19
20
|
/** TCP connection or communication failed. */
|
|
20
21
|
export const NetError = ErrType("NetError");
|
|
21
|
-
const mkTask = (run) => ({ run });
|
|
22
22
|
// -- Error helper ------------------------------------------------------------
|
|
23
23
|
const netErr = (e, meta) => NetError(e instanceof Error ? e.message : String(e), meta);
|
|
24
24
|
// -- Runtime detection -------------------------------------------------------
|
|
@@ -41,7 +41,7 @@ const getNodeNet = async () => {
|
|
|
41
41
|
};
|
|
42
42
|
// -- Connection wrappers -----------------------------------------------------
|
|
43
43
|
const wrapDenoConn = (conn) => ({
|
|
44
|
-
send: (data) =>
|
|
44
|
+
send: (data) => makeTask(async () => {
|
|
45
45
|
try {
|
|
46
46
|
const bytes = typeof data === "string" ? new TextEncoder().encode(data) : data;
|
|
47
47
|
await conn.write(bytes);
|
|
@@ -51,7 +51,7 @@ const wrapDenoConn = (conn) => ({
|
|
|
51
51
|
return Err(netErr(e));
|
|
52
52
|
}
|
|
53
53
|
}),
|
|
54
|
-
receive: () =>
|
|
54
|
+
receive: () => makeTask(async () => {
|
|
55
55
|
try {
|
|
56
56
|
const buf = new Uint8Array(4096);
|
|
57
57
|
const n = await conn.read(buf);
|
|
@@ -69,7 +69,7 @@ const wrapDenoConn = (conn) => ({
|
|
|
69
69
|
},
|
|
70
70
|
});
|
|
71
71
|
const wrapNodeSocket = (socket) => ({
|
|
72
|
-
send: (data) =>
|
|
72
|
+
send: (data) => makeTask(() => new Promise(resolve => {
|
|
73
73
|
socket.write(data, (err) => {
|
|
74
74
|
if (err !== undefined) {
|
|
75
75
|
resolve(Err(netErr(err)));
|
|
@@ -79,7 +79,7 @@ const wrapNodeSocket = (socket) => ({
|
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
81
|
})),
|
|
82
|
-
receive: () =>
|
|
82
|
+
receive: () => makeTask(() => new Promise(resolve => {
|
|
83
83
|
const onData = (chunk) => {
|
|
84
84
|
cleanup();
|
|
85
85
|
resolve(Ok(chunk));
|
|
@@ -159,6 +159,6 @@ const connectTcp = async (options) => {
|
|
|
159
159
|
* ```
|
|
160
160
|
*/
|
|
161
161
|
export const Net = {
|
|
162
|
-
connect: (options) =>
|
|
162
|
+
connect: (options) => makeTask(() => connectTcp(options)),
|
|
163
163
|
};
|
|
164
164
|
//# sourceMappingURL=net.js.map
|
package/dist/io/net.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/io/net.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/io/net.ts"],"names":[],"mappings":"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"}
|
package/dist/io/subprocess.d.ts
CHANGED
|
@@ -12,14 +12,10 @@
|
|
|
12
12
|
* produce Err(CommandError).
|
|
13
13
|
*
|
|
14
14
|
*/
|
|
15
|
-
import type
|
|
15
|
+
import { type TaskLike } from "../async/task-like.js";
|
|
16
16
|
import { ErrType, type ErrTypeConstructor } from "../types/error.js";
|
|
17
17
|
/** Subprocess execution failed (command not found, timeout, spawn error). */
|
|
18
18
|
export declare const CommandError: ErrTypeConstructor<"CommandError", string>;
|
|
19
|
-
/** Task-like interface for lazy async subprocess execution. */
|
|
20
|
-
interface TaskLike<T, E> {
|
|
21
|
-
readonly run: () => Promise<Result<T, E>>;
|
|
22
|
-
}
|
|
23
19
|
/** Output of a subprocess execution. */
|
|
24
20
|
export interface CommandResult {
|
|
25
21
|
/** The process exit code. */
|
|
@@ -65,5 +61,4 @@ export declare const Command: {
|
|
|
65
61
|
/** Execute a command with optional arguments and options. */
|
|
66
62
|
readonly exec: (cmd: string, args?: readonly string[], options?: CommandOptions) => TaskLike<CommandResult, ErrType<"CommandError">>;
|
|
67
63
|
};
|
|
68
|
-
export {};
|
|
69
64
|
//# sourceMappingURL=subprocess.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../src/io/subprocess.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"subprocess.d.ts","sourceRoot":"","sources":["../../src/io/subprocess.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIrE,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,kBAAkB,CAAC,cAAc,EAAE,MAAM,CAA2B,CAAC;AAIhG,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAID,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,uDAAuD;IACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,oDAAoD;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AA2WD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,EAAE;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,CACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,cAAc,KACrB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;CAyBvD,CAAC"}
|
package/dist/io/subprocess.js
CHANGED
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
* produce Err(CommandError).
|
|
13
13
|
*
|
|
14
14
|
*/
|
|
15
|
+
import { makeTask } from "../async/task-like.js";
|
|
15
16
|
import { Err, Ok } from "../core/result.js";
|
|
16
17
|
import { ErrType } from "../types/error.js";
|
|
17
18
|
// -- Error types -------------------------------------------------------------
|
|
18
19
|
/** Subprocess execution failed (command not found, timeout, spawn error). */
|
|
19
20
|
export const CommandError = ErrType("CommandError");
|
|
20
|
-
const mkTask = (run) => ({ run });
|
|
21
21
|
// -- Helpers -----------------------------------------------------------------
|
|
22
22
|
/**
|
|
23
23
|
* Build a Deno/Bun spawn options object, omitting undefined properties.
|
|
@@ -57,7 +57,7 @@ const raceTimeout = (promise, ms, cleanup) => {
|
|
|
57
57
|
});
|
|
58
58
|
};
|
|
59
59
|
// -- Execution strategies ----------------------------------------------------
|
|
60
|
-
const execDeno = (denoCommand, cmd, args, options) =>
|
|
60
|
+
const execDeno = (denoCommand, cmd, args, options) => makeTask(async () => {
|
|
61
61
|
try {
|
|
62
62
|
const spawnOpts = buildSpawnOpts(options);
|
|
63
63
|
const decoder = new TextDecoder();
|
|
@@ -117,7 +117,7 @@ const execDeno = (denoCommand, cmd, args, options) => mkTask(async () => {
|
|
|
117
117
|
return Err(CommandError(e instanceof Error ? e.message : String(e), { cmd, args }));
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
|
-
const execBun = (bun, cmd, args, options) =>
|
|
120
|
+
const execBun = (bun, cmd, args, options) => makeTask(async () => {
|
|
121
121
|
try {
|
|
122
122
|
const spawnOpts = buildSpawnOpts(options);
|
|
123
123
|
// Use async spawn when stdin or timeout is needed
|
|
@@ -171,7 +171,7 @@ const resolveNodeExecResult = (error, stdout, stderr, cmd, args, timeout) => {
|
|
|
171
171
|
}
|
|
172
172
|
return Err(CommandError(error.message, { cmd, args, code: exitCode }));
|
|
173
173
|
};
|
|
174
|
-
const execNode = (cmd, args, options) =>
|
|
174
|
+
const execNode = (cmd, args, options) => makeTask(async () => {
|
|
175
175
|
try {
|
|
176
176
|
const cp = await Function('return import("node:child_process")')();
|
|
177
177
|
// Use spawn when stdin is provided (execFile has no stdin pipe)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../src/io/subprocess.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../src/io/subprocess.ts"],"names":[],"mappings":"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"}
|
package/dist/program.d.ts
CHANGED
|
@@ -1,62 +1,150 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module program
|
|
3
3
|
*
|
|
4
|
-
* Process-lifecycle wrapper for Task-based
|
|
4
|
+
* Process-lifecycle wrapper for Task-based programs.
|
|
5
5
|
*
|
|
6
6
|
* **Why Program instead of a bare Task.run()?**
|
|
7
|
-
* Production
|
|
8
|
-
* shutdown), structured logging
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Production programs need signal handling (SIGINT/SIGTERM for graceful
|
|
8
|
+
* shutdown), structured logging, and correct exit codes. `Program`
|
|
9
|
+
* encapsulates all of this so the effect function only needs to return
|
|
10
|
+
* a `Task`, not manage process lifecycle.
|
|
11
11
|
*
|
|
12
|
-
* **
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* it
|
|
16
|
-
*
|
|
12
|
+
* **Choosing between `.run()` and `.execute()`:**
|
|
13
|
+
*
|
|
14
|
+
* `.run()` is for **long-running services** (HTTP servers, workers, daemons):
|
|
15
|
+
* it registers signal handlers, logs lifecycle events to stdout/stderr, and
|
|
16
|
+
* calls `process.exit()`. The lifecycle logs ("started", "completed") confirm
|
|
17
|
+
* the process is alive, which is valuable for service monitoring.
|
|
18
|
+
*
|
|
19
|
+
* `.execute()` is for **CLI tools and testing**:
|
|
20
|
+
* - **CLI tools** manage their own output and exit codes. Lifecycle logs
|
|
21
|
+
* ("started"/"completed") are noise for a tool that should be silent
|
|
22
|
+
* unless it has something to say. `execute()` returns the raw `Result`
|
|
23
|
+
* so the caller controls exit codes and output.
|
|
24
|
+
* - **Tests** call `execute()` to get a `Result` without process lifecycle,
|
|
25
|
+
* enabling assertions on outcomes without spawning child processes.
|
|
26
|
+
*
|
|
27
|
+
* Both methods wire the `AbortSignal` for graceful shutdown. The difference
|
|
28
|
+
* is who owns the process lifecycle: `run()` does it for you, `execute()`
|
|
29
|
+
* lets you do it yourself.
|
|
30
|
+
*
|
|
31
|
+
* @example CLI tool using execute()
|
|
32
|
+
* ```ts
|
|
33
|
+
* const app = Program('my-cli', (signal) => cli(Deno.args));
|
|
34
|
+
* const result = await app.execute();
|
|
35
|
+
* result.match({
|
|
36
|
+
* Ok: (exitCode) => Deno.exit(exitCode),
|
|
37
|
+
* Err: (msg) => { console.error(`fatal: ${msg}`); Deno.exit(1); },
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @example Long-running service using run()
|
|
42
|
+
* ```ts
|
|
43
|
+
* const main = Program('my-service', (signal) =>
|
|
44
|
+
* pipe(
|
|
45
|
+
* loadConfig(),
|
|
46
|
+
* Task.flatMap(cfg => startServer(cfg, { signal })),
|
|
47
|
+
* ),
|
|
48
|
+
* { teardownTimeoutMs: 5000 },
|
|
49
|
+
* );
|
|
50
|
+
* await main.run();
|
|
51
|
+
* ```
|
|
17
52
|
*/
|
|
18
53
|
import type { Task } from "./async/task.js";
|
|
19
54
|
import type { Result } from "./core/result.js";
|
|
55
|
+
import type { Logger } from "./runtime/logger.js";
|
|
20
56
|
/**
|
|
21
57
|
* A runnable program built on {@link Task}.
|
|
22
58
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
59
|
+
* **For services:** use `.run()` (handles signals, exit codes, lifecycle logging).
|
|
60
|
+
* **For CLI tools:** use `.execute()` (returns Result, caller owns lifecycle).
|
|
61
|
+
* **For tests:** use `.execute()` (no process.exit, returns Result for assertions).
|
|
25
62
|
*/
|
|
26
63
|
export interface Program<T, E> {
|
|
27
64
|
/**
|
|
28
65
|
* Run with full process lifecycle management.
|
|
29
66
|
*
|
|
30
|
-
*
|
|
67
|
+
* Best for **long-running services** where lifecycle logging ("started",
|
|
68
|
+
* "completed") aids monitoring and observability.
|
|
31
69
|
*
|
|
32
70
|
* - SIGINT / SIGTERM fire the `AbortSignal` passed to the effect
|
|
33
71
|
* - Second signal force-exits (code 130)
|
|
34
72
|
* - Interrupted -> `process.exit(130)` (takes priority over Ok/Err)
|
|
35
73
|
* - `Ok` -> `process.exit(0)`
|
|
36
74
|
* - `Err` -> stderr + `process.exit(1)`
|
|
75
|
+
*
|
|
76
|
+
* Pass `{ silent: true }` in options to suppress lifecycle logs while
|
|
77
|
+
* keeping signal handling and exit code management. Error logs are
|
|
78
|
+
* always emitted regardless of the silent flag.
|
|
37
79
|
*/
|
|
38
80
|
run(): Promise<void>;
|
|
39
81
|
/**
|
|
40
82
|
* Execute without process lifecycle. Returns the raw {@link Result}.
|
|
41
|
-
* No logging, no signals, no exit. Use for testing.
|
|
42
83
|
*
|
|
43
|
-
*
|
|
84
|
+
* Best for **CLI tools** and **tests**:
|
|
85
|
+
* - CLI tools that manage their own output and need non-binary exit codes
|
|
86
|
+
* (e.g., exit 0 = success, exit 1 = found issues, exit 2 = stale)
|
|
87
|
+
* - Tests that need to assert on the Result without process.exit()
|
|
88
|
+
*
|
|
89
|
+
* Accepts an optional `AbortSignal` for cancellation.
|
|
90
|
+
*
|
|
91
|
+
* @example CLI tool with custom exit codes
|
|
92
|
+
* ```ts
|
|
93
|
+
* const app = Program('lint', (signal) => runLinter(args));
|
|
94
|
+
* const result = await app.execute();
|
|
95
|
+
* result.match({
|
|
96
|
+
* Ok: (exitCode) => process.exit(exitCode),
|
|
97
|
+
* Err: (msg) => { console.error(msg); process.exit(1); },
|
|
98
|
+
* });
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @example Test assertions
|
|
102
|
+
* ```ts
|
|
103
|
+
* const result = await app.execute();
|
|
104
|
+
* assert(result.isOk);
|
|
105
|
+
* assertEquals(result.unwrap(), expectedValue);
|
|
106
|
+
* ```
|
|
44
107
|
*/
|
|
45
108
|
execute(signal?: AbortSignal): Promise<Result<T, E>>;
|
|
46
109
|
}
|
|
110
|
+
/** Configuration options for Program. */
|
|
111
|
+
export interface ProgramOptions {
|
|
112
|
+
/**
|
|
113
|
+
* Max ms to wait for the effect to complete after an interrupt signal
|
|
114
|
+
* before force-exiting. Without this, only a second signal triggers
|
|
115
|
+
* force-exit.
|
|
116
|
+
*/
|
|
117
|
+
readonly teardownTimeoutMs?: number;
|
|
118
|
+
/**
|
|
119
|
+
* Suppress lifecycle logs ("started", "completed") in `.run()`.
|
|
120
|
+
* Error and interrupt messages are always logged regardless.
|
|
121
|
+
*
|
|
122
|
+
* Useful for CLI tools that use `.run()` for signal handling but
|
|
123
|
+
* don't want service-oriented lifecycle messages in their output.
|
|
124
|
+
*
|
|
125
|
+
* Default: `false`.
|
|
126
|
+
*/
|
|
127
|
+
readonly silent?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Custom logger instance for lifecycle messages. When provided,
|
|
130
|
+
* Program uses `logger.info()` for "started"/"completed" and
|
|
131
|
+
* `logger.error()` for errors/interrupts, instead of raw
|
|
132
|
+
* `console.log`/`console.error`.
|
|
133
|
+
*
|
|
134
|
+
* Pass a silent logger (`Logger.create({ name, sink: Logger.silent })`)
|
|
135
|
+
* to suppress all output, or a JSON logger for structured production logs.
|
|
136
|
+
*
|
|
137
|
+
* Takes precedence over `silent` when both are provided.
|
|
138
|
+
*/
|
|
139
|
+
readonly logger?: Logger;
|
|
140
|
+
}
|
|
47
141
|
/**
|
|
48
142
|
* Create a named {@link Program} from a {@link Task} or an effect function.
|
|
49
143
|
*
|
|
50
144
|
* When given a function, it receives an `AbortSignal` wired to
|
|
51
145
|
* SIGINT/SIGTERM so the effect can respond to graceful shutdown.
|
|
52
146
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* @param options.teardownTimeoutMs Max ms to wait for the effect after
|
|
56
|
-
* interrupt before force-exiting. Without this, only a second signal
|
|
57
|
-
* triggers force-exit.
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
147
|
+
* @example Service with lifecycle logging (default)
|
|
60
148
|
* ```ts
|
|
61
149
|
* const main = Program('my-service', (signal) =>
|
|
62
150
|
* pipe(
|
|
@@ -70,8 +158,32 @@ export interface Program<T, E> {
|
|
|
70
158
|
* // ... on error:
|
|
71
159
|
* // [2026-03-16T10:00:01.234Z] [my-service] error: NotFound(NOT_FOUND): User not found
|
|
72
160
|
* ```
|
|
161
|
+
*
|
|
162
|
+
* @example CLI tool with silent run()
|
|
163
|
+
* ```ts
|
|
164
|
+
* const app = Program('my-cli', (signal) => cli(args), { silent: true });
|
|
165
|
+
* await app.run();
|
|
166
|
+
* // No lifecycle logs, just the CLI's own output
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* @example CLI tool with execute() (recommended for CLIs)
|
|
170
|
+
* ```ts
|
|
171
|
+
* const app = Program('my-cli', (signal) => cli(args));
|
|
172
|
+
* const result = await app.execute();
|
|
173
|
+
* result.match({
|
|
174
|
+
* Ok: (code) => process.exit(code),
|
|
175
|
+
* Err: (msg) => { console.error(`fatal: ${msg}`); process.exit(1); },
|
|
176
|
+
* });
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @example Custom logger
|
|
180
|
+
* ```ts
|
|
181
|
+
* import { Logger } from '@igorjs/pure-ts';
|
|
182
|
+
* const log = Logger.create({ name: 'api', sink: Logger.json });
|
|
183
|
+
* const main = Program('api', (signal) => startServer(signal), { logger: log });
|
|
184
|
+
* await main.run();
|
|
185
|
+
* // {"timestamp":"...","level":"info","name":"api","message":"started"}
|
|
186
|
+
* ```
|
|
73
187
|
*/
|
|
74
|
-
export declare function Program<T, E>(name: string, effect: Task<T, E> | ((signal: AbortSignal) => Task<T, E>), options?:
|
|
75
|
-
readonly teardownTimeoutMs?: number;
|
|
76
|
-
}): Program<T, E>;
|
|
188
|
+
export declare function Program<T, E>(name: string, effect: Task<T, E> | ((signal: AbortSignal) => Task<T, E>), options?: ProgramOptions): Program<T, E>;
|
|
77
189
|
//# sourceMappingURL=program.d.ts.map
|
package/dist/program.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAuBlD;;;;;;GAMG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B;;;;;;;;;;;;;;;OAeG;IACH,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACtD;AAID,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1D,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CA6Ef"}
|
package/dist/program.js
CHANGED
|
@@ -17,6 +17,24 @@ export function Program(name, effect, options) {
|
|
|
17
17
|
const toTask = typeof effect === "function" ? effect : () => effect;
|
|
18
18
|
const tag = `[${name}]`;
|
|
19
19
|
const teardownTimeoutMs = options?.teardownTimeoutMs;
|
|
20
|
+
const logger = options?.logger;
|
|
21
|
+
const silent = options?.silent ?? false;
|
|
22
|
+
const logInfo = (msg) => {
|
|
23
|
+
if (logger) {
|
|
24
|
+
logger.info(msg);
|
|
25
|
+
}
|
|
26
|
+
else if (!silent) {
|
|
27
|
+
console.log(`${ts()} ${tag} ${msg}`);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const logError = (msg) => {
|
|
31
|
+
if (logger) {
|
|
32
|
+
logger.error(msg);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.error(`${ts()} ${tag} ${msg}`);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
20
38
|
return {
|
|
21
39
|
async run() {
|
|
22
40
|
const ac = new AbortController();
|
|
@@ -26,7 +44,7 @@ export function Program(name, effect, options) {
|
|
|
26
44
|
if (interrupted)
|
|
27
45
|
process.exit(130);
|
|
28
46
|
interrupted = true;
|
|
29
|
-
|
|
47
|
+
logError("interrupted");
|
|
30
48
|
ac.abort();
|
|
31
49
|
if (teardownTimeoutMs !== undefined) {
|
|
32
50
|
teardownTimer = setTimeout(() => process.exit(130), teardownTimeoutMs);
|
|
@@ -34,7 +52,7 @@ export function Program(name, effect, options) {
|
|
|
34
52
|
};
|
|
35
53
|
process.on("SIGINT", onSignal);
|
|
36
54
|
process.on("SIGTERM", onSignal);
|
|
37
|
-
|
|
55
|
+
logInfo("started");
|
|
38
56
|
let exitCode = 0;
|
|
39
57
|
try {
|
|
40
58
|
const result = await toTask(ac.signal).run();
|
|
@@ -42,15 +60,15 @@ export function Program(name, effect, options) {
|
|
|
42
60
|
exitCode = 130;
|
|
43
61
|
}
|
|
44
62
|
else if (result.isOk) {
|
|
45
|
-
|
|
63
|
+
logInfo("completed");
|
|
46
64
|
}
|
|
47
65
|
else {
|
|
48
|
-
|
|
66
|
+
logError(`error: ${formatError(result.unwrapErr())}`);
|
|
49
67
|
exitCode = 1;
|
|
50
68
|
}
|
|
51
69
|
}
|
|
52
70
|
catch (unhandled) {
|
|
53
|
-
|
|
71
|
+
logError(`error: ${formatError(unhandled)}`);
|
|
54
72
|
exitCode = 1;
|
|
55
73
|
}
|
|
56
74
|
finally {
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/config.d.ts
CHANGED
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { Result } from "../core/result.js";
|
|
13
13
|
import type { SchemaError, SchemaType } from "../data/schema.js";
|
|
14
|
-
/** A schema shape where each field validates a string env value. */
|
|
15
|
-
type ConfigShape = Record<string, SchemaType<unknown>>;
|
|
16
|
-
/** Infer the output type from a config shape. */
|
|
17
|
-
type InferConfig<T extends ConfigShape> = {
|
|
14
|
+
/** @internal A schema shape where each field validates a string env value. */
|
|
15
|
+
export type ConfigShape = Record<string, SchemaType<unknown>>;
|
|
16
|
+
/** @internal Infer the output type from a config shape. */
|
|
17
|
+
export type InferConfig<T extends ConfigShape> = {
|
|
18
18
|
readonly [K in keyof T]: T[K] extends SchemaType<infer U> ? U : never;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
@@ -49,5 +49,4 @@ export declare const Config: {
|
|
|
49
49
|
readonly shape: T;
|
|
50
50
|
};
|
|
51
51
|
};
|
|
52
|
-
export {};
|
|
53
52
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIjE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIjE,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9D,2DAA2D;AAC3D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,IAAI;IAC/C,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACtE,CAAC;AAqCF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,MAAM,EAAE;IACnB,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,WAAW,EACnC,KAAK,EAAE,CAAC,KACL;QACH,0EAA0E;QAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACzD,iEAAiE;QACjE,QAAQ,CAAC,QAAQ,EAAE,CACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACzC,4CAA4C;QAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;KACnB,CAAC;CA8BH,CAAC"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -14,13 +14,34 @@
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
/** Typed environment variable validation and access. */
|
|
17
|
+
/** Re-exported so public signatures that reference Option are visible from this entrypoint. */
|
|
18
|
+
export type { NoneVariant, Option, OptionMatcher, SomeVariant } from "../core/option.js";
|
|
19
|
+
/** Re-exported so public signatures that reference Result are visible from this entrypoint. */
|
|
20
|
+
/** Re-exported so public signatures that reference Ok / Err are visible from this entrypoint. */
|
|
21
|
+
export type { Err, Ok, Result, ResultMatcher } from "../core/result.js";
|
|
22
|
+
/** Re-exported so public signatures that reference SchemaError / SchemaType are visible from this entrypoint. */
|
|
23
|
+
export type { SchemaError, SchemaType } from "../data/schema.js";
|
|
24
|
+
/** Re-exported so public signatures that reference ErrType / ErrTypeConstructor are visible from this entrypoint. */
|
|
25
|
+
export type { ErrType, ErrTypeConstructor } from "../types/error.js";
|
|
26
|
+
/** Typed environment variable validation and access. */
|
|
17
27
|
export { Config } from "./config.js";
|
|
28
|
+
/** Log severity levels, ordered from least to most severe. */
|
|
29
|
+
/** Options for creating a Logger instance. */
|
|
30
|
+
/** A structured log record passed to log sinks. */
|
|
31
|
+
/** Function that receives a log record and outputs it somewhere. */
|
|
32
|
+
export type { LoggerOptions, LogLevel, LogRecord, LogSink } from "./logger.js";
|
|
18
33
|
/** Structured logger with configurable levels and formatters. */
|
|
19
34
|
export { Logger } from "./logger.js";
|
|
20
35
|
/** Cross-runtime OS information (hostname, arch, memory). */
|
|
21
36
|
export { Os } from "./os.js";
|
|
22
|
-
/**
|
|
37
|
+
/** Line ending constants and normalization. */
|
|
38
|
+
/** OS-aware path manipulation without node:path dependency. */
|
|
39
|
+
/** Parsed path components (root, dir, base, ext, name). */
|
|
40
|
+
/** Runtime platform detection (isWindows, isPosix). */
|
|
23
41
|
export { Eol, Path, type PathParts, Platform } from "./platform.js";
|
|
24
|
-
/**
|
|
42
|
+
/** Heap and RSS memory usage information. */
|
|
43
|
+
export type { MemoryUsage } from "./process.js";
|
|
44
|
+
/** Cross-runtime process info, cwd, env, args, and exit namespace. */
|
|
45
|
+
/** Error returned when a process operation fails. */
|
|
25
46
|
export { Process, ProcessError } from "./process.js";
|
|
26
47
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wDAAwD;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,iEAAiE;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,6DAA6D;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wDAAwD;AAExD,+FAA+F;AAC/F,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEzF,+FAA+F;AAC/F,iGAAiG;AACjG,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,iHAAiH;AACjH,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjE,qHAAqH;AACrH,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACrE,wDAAwD;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,8DAA8D;AAC9D,8CAA8C;AAC9C,mDAAmD;AACnD,oEAAoE;AACpE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/E,iEAAiE;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,6DAA6D;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,+CAA+C;AAC/C,+DAA+D;AAC/D,2DAA2D;AAC3D,uDAAuD;AACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACpE,6CAA6C;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,sEAAsE;AACtE,qDAAqD;AACrD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -14,13 +14,18 @@
|
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
16
|
/** Typed environment variable validation and access. */
|
|
17
|
+
/** Typed environment variable validation and access. */
|
|
17
18
|
export { Config } from "./config.js";
|
|
18
19
|
/** Structured logger with configurable levels and formatters. */
|
|
19
20
|
export { Logger } from "./logger.js";
|
|
20
21
|
/** Cross-runtime OS information (hostname, arch, memory). */
|
|
21
22
|
export { Os } from "./os.js";
|
|
22
|
-
/**
|
|
23
|
+
/** Line ending constants and normalization. */
|
|
24
|
+
/** OS-aware path manipulation without node:path dependency. */
|
|
25
|
+
/** Parsed path components (root, dir, base, ext, name). */
|
|
26
|
+
/** Runtime platform detection (isWindows, isPosix). */
|
|
23
27
|
export { Eol, Path, Platform } from "./platform.js";
|
|
24
|
-
/** Cross-runtime process info, cwd, env, and exit. */
|
|
28
|
+
/** Cross-runtime process info, cwd, env, args, and exit namespace. */
|
|
29
|
+
/** Error returned when a process operation fails. */
|
|
25
30
|
export { Process, ProcessError } from "./process.js";
|
|
26
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wDAAwD;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wDAAwD;AAYxD,wDAAwD;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,iEAAiE;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,6DAA6D;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,+CAA+C;AAC/C,+DAA+D;AAC/D,2DAA2D;AAC3D,uDAAuD;AACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAkB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGpE,sEAAsE;AACtE,qDAAqD;AACrD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|