fullnative 0.2.0 → 1.0.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.
- package/CHANGELOG.md +30 -0
- package/MIGRATION.md +161 -0
- package/README.md +128 -34
- package/dist/core/env/env.d.ts +37 -5
- package/dist/core/env/env.d.ts.map +1 -1
- package/dist/core/env/env.js +27 -6
- package/dist/core/env/env.js.map +1 -1
- package/dist/core/env/index.d.ts +1 -1
- package/dist/core/env/index.d.ts.map +1 -1
- package/dist/core/env/index.js.map +1 -1
- package/dist/core/file/File.d.ts +13 -11
- package/dist/core/file/File.d.ts.map +1 -1
- package/dist/core/file/File.js +15 -14
- package/dist/core/file/File.js.map +1 -1
- package/dist/core/file/Folder.d.ts +11 -11
- package/dist/core/file/Folder.d.ts.map +1 -1
- package/dist/core/file/Folder.js +44 -27
- package/dist/core/file/Folder.js.map +1 -1
- package/dist/core/index.d.ts +2 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/process/Command.d.ts +19 -0
- package/dist/core/process/Command.d.ts.map +1 -1
- package/dist/core/process/Command.js +36 -1
- package/dist/core/process/Command.js.map +1 -1
- package/dist/core/process/Result.d.ts +10 -2
- package/dist/core/process/Result.d.ts.map +1 -1
- package/dist/core/process/Result.js +12 -2
- package/dist/core/process/Result.js.map +1 -1
- package/dist/core/process/types.d.ts +4 -0
- package/dist/core/process/types.d.ts.map +1 -1
- package/dist/core/shell/Shell.d.ts +33 -5
- package/dist/core/shell/Shell.d.ts.map +1 -1
- package/dist/core/shell/Shell.js +49 -7
- package/dist/core/shell/Shell.js.map +1 -1
- package/dist/core/shell/types.d.ts +7 -3
- package/dist/core/shell/types.d.ts.map +1 -1
- package/dist/core/utils/index.d.ts +4 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/index.js +4 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/sleep.d.ts +14 -0
- package/dist/core/utils/sleep.d.ts.map +1 -0
- package/dist/core/utils/sleep.js +16 -0
- package/dist/core/utils/sleep.js.map +1 -0
- package/dist/core/utils/tempDir.d.ts +59 -0
- package/dist/core/utils/tempDir.d.ts.map +1 -0
- package/dist/core/utils/tempDir.js +92 -0
- package/dist/core/utils/tempDir.js.map +1 -0
- package/dist/core/utils/timeout.d.ts +40 -0
- package/dist/core/utils/timeout.d.ts.map +1 -0
- package/dist/core/utils/timeout.js +54 -0
- package/dist/core/utils/timeout.js.map +1 -0
- package/package.json +3 -2
|
@@ -71,6 +71,21 @@ export class Command {
|
|
|
71
71
|
withTimeout(ms) {
|
|
72
72
|
return new Command(this._command, this._args, { ...this._options, timeout: ms });
|
|
73
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Crea una nueva instancia de `Command` asociada a un `AbortSignal`.
|
|
76
|
+
* Cuando la señal se aborta, el proceso se matará con `SIGTERM`.
|
|
77
|
+
*
|
|
78
|
+
* La señal **no** se pasa al `spawn()` nativo: se cablea manualmente para
|
|
79
|
+
* que el proceso quede marcado como detenido (`stopped === true`) y la
|
|
80
|
+
* espera finalice con un `Result` normal en lugar de emitir un error
|
|
81
|
+
* `AbortError` del child.
|
|
82
|
+
*
|
|
83
|
+
* @param signal - Señal que controla la cancelación del proceso.
|
|
84
|
+
* @returns Un nuevo `Command` inmutable con la señal configurada.
|
|
85
|
+
*/
|
|
86
|
+
withAbort(signal) {
|
|
87
|
+
return new Command(this._command, this._args, { ...this._options, signal });
|
|
88
|
+
}
|
|
74
89
|
/**
|
|
75
90
|
* Crea una nueva instancia de `Command` que envía datos por stdin al iniciar.
|
|
76
91
|
*
|
|
@@ -97,10 +112,16 @@ export class Command {
|
|
|
97
112
|
* Inicia el comando y devuelve un `LiveProcess` para interactuar en vivo
|
|
98
113
|
* con stdin/stdout/stderr.
|
|
99
114
|
*
|
|
115
|
+
* Si hay una señal de aborto configurada (`withAbort`), se cablea
|
|
116
|
+
* manualmente para matar el proceso con `SIGTERM` al abortar (la señal no
|
|
117
|
+
* se pasa al `spawn()` nativo, que emitiría un error `AbortError` y no
|
|
118
|
+
* marcaría el proceso como detenido). El listener se limpia con el
|
|
119
|
+
* evento `exit` o `error` del child para no filtrar.
|
|
120
|
+
*
|
|
100
121
|
* @returns Un `LiveProcess` que envuelve el proceso hijo recién iniciado.
|
|
101
122
|
*/
|
|
102
123
|
spawn() {
|
|
103
|
-
const { timeout, input, rejectOnNonZero, ...spawnOpts } = this._options;
|
|
124
|
+
const { timeout, input, rejectOnNonZero, signal, ...spawnOpts } = this._options;
|
|
104
125
|
const child = spawn(this._command, [...this._args], spawnOpts);
|
|
105
126
|
const handle = new LiveProcess(this._command, this._args, child);
|
|
106
127
|
if (input !== undefined && child.stdin) {
|
|
@@ -113,6 +134,20 @@ export class Command {
|
|
|
113
134
|
handle.kill("SIGTERM");
|
|
114
135
|
}, timeout).unref();
|
|
115
136
|
}
|
|
137
|
+
if (signal) {
|
|
138
|
+
const onAbort = () => {
|
|
139
|
+
if (handle.running)
|
|
140
|
+
handle.kill("SIGTERM");
|
|
141
|
+
};
|
|
142
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
143
|
+
const cleanup = () => {
|
|
144
|
+
signal.removeEventListener("abort", onAbort);
|
|
145
|
+
child.off("exit", cleanup);
|
|
146
|
+
child.off("error", cleanup);
|
|
147
|
+
};
|
|
148
|
+
child.on("exit", cleanup);
|
|
149
|
+
child.on("error", cleanup);
|
|
150
|
+
}
|
|
116
151
|
return handle;
|
|
117
152
|
}
|
|
118
153
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../src/core/process/Command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C;;;GAGG;AACH,MAAM,OAAO,OAAO;IACD,QAAQ,CAAS;IACjB,KAAK,CAAoB;IACzB,QAAQ,CAAiB;IAE1C;;;;;;OAMG;IACH,YAAY,OAAe,EAAE,OAA0B,EAAE,EAAE,UAA0B,EAAE;QACrF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,8BAA8B;IAC9B,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,IAAc;QACxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;OAKG;IACH,EAAE,CAAC,GAAW;QACZ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,GAA2B;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE;YAC5C,GAAG,IAAI,CAAC,QAAQ;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAqB;QAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;OAMG;IACH,YAAY;QACV,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE;YAC5C,GAAG,IAAI,CAAC,QAAQ;YAChB,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../src/core/process/Command.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,10 +35,18 @@ export declare class Result {
|
|
|
35
35
|
*/
|
|
36
36
|
get output(): string;
|
|
37
37
|
/**
|
|
38
|
-
* Devuelve las líneas de stdout separadas por saltos de línea
|
|
39
|
-
* `\r\n`),
|
|
38
|
+
* Devuelve **todas** las líneas de stdout separadas por saltos de línea
|
|
39
|
+
* (`\n` o `\r\n`), incluidas las vacías (comportamiento estándar de
|
|
40
|
+
* `String.split`). Una salida terminada en salto de línea produce una
|
|
41
|
+
* línea vacía al final.
|
|
40
42
|
*/
|
|
41
43
|
get lines(): string[];
|
|
44
|
+
/**
|
|
45
|
+
* Devuelve las líneas no vacías de stdout separadas por saltos de línea
|
|
46
|
+
* (`\n` o `\r\n`). Ignora las líneas vacías, incluida la que produce la
|
|
47
|
+
* salida terminada en salto de línea.
|
|
48
|
+
*/
|
|
49
|
+
get nonEmptyLines(): string[];
|
|
42
50
|
/**
|
|
43
51
|
* Parsea stdout como JSON y lo devuelve como tipo `T`.
|
|
44
52
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../../src/core/process/Result.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,MAAM;aAaC,OAAO,EAAE,MAAM;aACf,IAAI,EAAE,SAAS,MAAM,EAAE;aACvB,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,MAAM;aACd,QAAQ,EAAE,MAAM,GAAG,IAAI;aACvB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;aAC7B,UAAU,EAAE,MAAM;IAlBpC;;;;;;;;;;OAUG;gBAEe,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM;IAGpC,2DAA2D;IAC3D,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,uEAAuE;IACvE,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED
|
|
1
|
+
{"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../../src/core/process/Result.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,MAAM;aAaC,OAAO,EAAE,MAAM;aACf,IAAI,EAAE,SAAS,MAAM,EAAE;aACvB,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,MAAM;aACd,QAAQ,EAAE,MAAM,GAAG,IAAI;aACvB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;aAC7B,UAAU,EAAE,MAAM;IAlBpC;;;;;;;;;;OAUG;gBAEe,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM;IAGpC,2DAA2D;IAC3D,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,uEAAuE;IACvE,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;OAKG;IACH,IAAI,KAAK,IAAI,MAAM,EAAE,CAEpB;IAED;;;;OAIG;IACH,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED;;;;;;;;;OASG;IACH,IAAI,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC;IAItB;;;;;OAKG;IACH,aAAa,IAAI,IAAI;CAUtB"}
|
|
@@ -50,10 +50,20 @@ export class Result {
|
|
|
50
50
|
return (this.stdout + this.stderr).trimEnd();
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
|
-
* Devuelve las líneas de stdout separadas por saltos de línea
|
|
54
|
-
* `\r\n`),
|
|
53
|
+
* Devuelve **todas** las líneas de stdout separadas por saltos de línea
|
|
54
|
+
* (`\n` o `\r\n`), incluidas las vacías (comportamiento estándar de
|
|
55
|
+
* `String.split`). Una salida terminada en salto de línea produce una
|
|
56
|
+
* línea vacía al final.
|
|
55
57
|
*/
|
|
56
58
|
get lines() {
|
|
59
|
+
return this.stdout.split(/\r?\n/);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Devuelve las líneas no vacías de stdout separadas por saltos de línea
|
|
63
|
+
* (`\n` o `\r\n`). Ignora las líneas vacías, incluida la que produce la
|
|
64
|
+
* salida terminada en salto de línea.
|
|
65
|
+
*/
|
|
66
|
+
get nonEmptyLines() {
|
|
57
67
|
return this.stdout.split(/\r?\n/).filter(Boolean);
|
|
58
68
|
}
|
|
59
69
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.js","sourceRoot":"","sources":["../../../src/core/process/Result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IAaC;IACA;IACA;IACA;IACA;IACA;IACA;IAlBlB;;;;;;;;;;OAUG;IACH,YACkB,OAAe,EACf,IAAuB,EACvB,MAAc,EACd,MAAc,EACd,QAAuB,EACvB,MAA6B,EAC7B,UAAkB;QANlB,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAmB;QACvB,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAe;QACvB,WAAM,GAAN,MAAM,CAAuB;QAC7B,eAAU,GAAV,UAAU,CAAQ;IACjC,CAAC;IAEJ,2DAA2D;IAC3D,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,uEAAuE;IACvE,IAAI,MAAM;QACR,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"Result.js","sourceRoot":"","sources":["../../../src/core/process/Result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IAaC;IACA;IACA;IACA;IACA;IACA;IACA;IAlBlB;;;;;;;;;;OAUG;IACH,YACkB,OAAe,EACf,IAAuB,EACvB,MAAc,EACd,MAAc,EACd,QAAuB,EACvB,MAA6B,EAC7B,UAAkB;QANlB,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAmB;QACvB,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAe;QACvB,WAAM,GAAN,MAAM,CAAuB;QAC7B,eAAU,GAAV,UAAU,CAAQ;IACjC,CAAC;IAEJ,2DAA2D;IAC3D,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,uEAAuE;IACvE,IAAI,MAAM;QACR,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACX,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;gBACtD,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -5,6 +5,10 @@ import type { SpawnOptions } from "node:child_process";
|
|
|
5
5
|
* Extiende las opciones nativas de `child_process.spawn` con campos
|
|
6
6
|
* adicionales para controlar timeout, entrada por stdin y comportamiento
|
|
7
7
|
* ante códigos de salida distintos de cero.
|
|
8
|
+
*
|
|
9
|
+
* Si se define `signal` (heredado de `SpawnOptions`), no se pasa al
|
|
10
|
+
* `spawn()` nativo: se cablea manualmente para matar el proceso con
|
|
11
|
+
* `SIGTERM` al abortar y marcarlo como detenido (`stopped === true`).
|
|
8
12
|
*/
|
|
9
13
|
export interface ProcessOptions extends SpawnOptions {
|
|
10
14
|
/** Tiempo máximo de ejecución en ms antes de matar el proceso automáticamente. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/process/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/process/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,gFAAgF;IAChF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
|
|
@@ -39,7 +39,7 @@ export declare class Shell {
|
|
|
39
39
|
/**
|
|
40
40
|
* Crea una nueva sesión de shell.
|
|
41
41
|
*
|
|
42
|
-
* @param options - Configuración de la sesión (cwd, env
|
|
42
|
+
* @param options - Configuración de la sesión (cwd, env).
|
|
43
43
|
*/
|
|
44
44
|
constructor(options?: ShellConfig);
|
|
45
45
|
/** Directorio de trabajo actual de la sesión. */
|
|
@@ -53,10 +53,14 @@ export declare class Shell {
|
|
|
53
53
|
/**
|
|
54
54
|
* Cambia el directorio de trabajo de la sesión.
|
|
55
55
|
*
|
|
56
|
-
*
|
|
56
|
+
* La ruta `target` se resuelve contra el cwd actual de la sesión (como
|
|
57
|
+
* haría el comando `cd` del shell): si es relativa, se resuelve sobre
|
|
58
|
+
* `_cwd`; si es absoluta, se adopta tal cual.
|
|
59
|
+
*
|
|
60
|
+
* @param target - Ruta del nuevo directorio (absoluta o relativa al cwd actual).
|
|
57
61
|
* @returns `this` para encadenamiento.
|
|
58
62
|
*/
|
|
59
|
-
cd(
|
|
63
|
+
cd(target: string): this;
|
|
60
64
|
/**
|
|
61
65
|
* Establece una variable de entorno para los próximos comandos.
|
|
62
66
|
*
|
|
@@ -93,6 +97,10 @@ export declare class Shell {
|
|
|
93
97
|
* valor interpolado no es de un tipo soportado (string, number, boolean,
|
|
94
98
|
* array, null/undefined).
|
|
95
99
|
*
|
|
100
|
+
* El quoting generado sigue el estilo POSIX (`sh`/`bash`), por lo que los
|
|
101
|
+
* scripts resultantes **no** son seguros para `cmd.exe` en Windows, donde
|
|
102
|
+
* las reglas de escapado son distintas.
|
|
103
|
+
*
|
|
96
104
|
* @example
|
|
97
105
|
* const name = "world";
|
|
98
106
|
* await sh.$`echo hello ${name}`;
|
|
@@ -127,14 +135,20 @@ export declare class Shell {
|
|
|
127
135
|
/**
|
|
128
136
|
* Ejecuta una serie de comandos en pipeline (stdout de uno al stdin del siguiente).
|
|
129
137
|
* Devuelve el resultado del último comando. Lanza `TypeError` si no se pasa
|
|
130
|
-
* ningún comando
|
|
138
|
+
* ningún comando, o si falta el `stdout` o el `stdin` necesarios en algún
|
|
139
|
+
* salto del pipeline.
|
|
140
|
+
*
|
|
141
|
+
* Si un comando del pipeline no puede iniciarse, el promise rechaza con
|
|
142
|
+
* `ProcessError` (sin crash del proceso host): los streams pipeados llevan
|
|
143
|
+
* listeners de error seguros que absorben fallos como `EPIPE`.
|
|
131
144
|
*
|
|
132
145
|
* @example
|
|
133
146
|
* const r = await sh.pipe("cat file.txt", "grep foo", "wc -l");
|
|
134
147
|
*
|
|
135
148
|
* @param scripts - Comandos a ejecutar en pipeline.
|
|
136
149
|
* @returns El resultado del último comando del pipeline.
|
|
137
|
-
* @throws {TypeError} Cuando `scripts` está vacío
|
|
150
|
+
* @throws {TypeError} Cuando `scripts` está vacío, o falta un stream
|
|
151
|
+
* (`stdout`/`stdin`) necesario en algún salto del pipeline.
|
|
138
152
|
*/
|
|
139
153
|
pipe(...scripts: string[]): Promise<Result>;
|
|
140
154
|
/**
|
|
@@ -226,6 +240,20 @@ export declare class Shell {
|
|
|
226
240
|
* @returns La última `HistoryItem`, o `undefined` si el historial está vacío.
|
|
227
241
|
*/
|
|
228
242
|
lastCommand(): HistoryItem | undefined;
|
|
243
|
+
/**
|
|
244
|
+
* Adjunta listeners de error "seguros" a los streams de un salto de
|
|
245
|
+
* pipeline, de modo que errores de stream (p. ej. `EPIPE` cuando el
|
|
246
|
+
* consumidor muere antes de tiempo, o un stdin cerrado tras un spawn
|
|
247
|
+
* fallido) se absorban silenciosamente en lugar de propagarse como
|
|
248
|
+
* errores no manejados que crashean el proceso host.
|
|
249
|
+
*
|
|
250
|
+
* Los fallos de spawn siguen su curso normal: `LiveProcess.wait()`
|
|
251
|
+
* rechaza con `ProcessError`.
|
|
252
|
+
*
|
|
253
|
+
* @param source - Stream legible (stdout del comando emisor).
|
|
254
|
+
* @param target - Stream escribible (stdin del comando receptor).
|
|
255
|
+
*/
|
|
256
|
+
private static attachPipeErrorGuards;
|
|
229
257
|
/**
|
|
230
258
|
* Construye las `ProcessOptions` base incluyendo `cwd` y `env` de la sesión.
|
|
231
259
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shell.d.ts","sourceRoot":"","sources":["../../../src/core/shell/Shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,KAAK,MAAM,EACX,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Shell.d.ts","sourceRoot":"","sources":["../../../src/core/shell/Shell.ts"],"names":[],"mappings":"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"}
|
package/dist/core/shell/Shell.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Process, } from "../process/index.js";
|
|
2
2
|
import { Job } from "./Job.js";
|
|
3
3
|
import * as crypto from "node:crypto";
|
|
4
|
+
import * as path from "node:path";
|
|
4
5
|
/**
|
|
5
6
|
* Facade que representa una sesión de shell para ejecutar comandos
|
|
6
7
|
* de forma cómoda. Mantiene estado (cwd, env, aliases, historial) y
|
|
@@ -39,7 +40,7 @@ export class Shell {
|
|
|
39
40
|
/**
|
|
40
41
|
* Crea una nueva sesión de shell.
|
|
41
42
|
*
|
|
42
|
-
* @param options - Configuración de la sesión (cwd, env
|
|
43
|
+
* @param options - Configuración de la sesión (cwd, env).
|
|
43
44
|
*/
|
|
44
45
|
constructor(options = {}) {
|
|
45
46
|
this._proc = new Process();
|
|
@@ -67,11 +68,15 @@ export class Shell {
|
|
|
67
68
|
/**
|
|
68
69
|
* Cambia el directorio de trabajo de la sesión.
|
|
69
70
|
*
|
|
70
|
-
*
|
|
71
|
+
* La ruta `target` se resuelve contra el cwd actual de la sesión (como
|
|
72
|
+
* haría el comando `cd` del shell): si es relativa, se resuelve sobre
|
|
73
|
+
* `_cwd`; si es absoluta, se adopta tal cual.
|
|
74
|
+
*
|
|
75
|
+
* @param target - Ruta del nuevo directorio (absoluta o relativa al cwd actual).
|
|
71
76
|
* @returns `this` para encadenamiento.
|
|
72
77
|
*/
|
|
73
|
-
cd(
|
|
74
|
-
this._cwd = path;
|
|
78
|
+
cd(target) {
|
|
79
|
+
this._cwd = path.resolve(this._cwd, target);
|
|
75
80
|
return this;
|
|
76
81
|
}
|
|
77
82
|
/**
|
|
@@ -123,6 +128,10 @@ export class Shell {
|
|
|
123
128
|
* valor interpolado no es de un tipo soportado (string, number, boolean,
|
|
124
129
|
* array, null/undefined).
|
|
125
130
|
*
|
|
131
|
+
* El quoting generado sigue el estilo POSIX (`sh`/`bash`), por lo que los
|
|
132
|
+
* scripts resultantes **no** son seguros para `cmd.exe` en Windows, donde
|
|
133
|
+
* las reglas de escapado son distintas.
|
|
134
|
+
*
|
|
126
135
|
* @example
|
|
127
136
|
* const name = "world";
|
|
128
137
|
* await sh.$`echo hello ${name}`;
|
|
@@ -176,14 +185,20 @@ export class Shell {
|
|
|
176
185
|
/**
|
|
177
186
|
* Ejecuta una serie de comandos en pipeline (stdout de uno al stdin del siguiente).
|
|
178
187
|
* Devuelve el resultado del último comando. Lanza `TypeError` si no se pasa
|
|
179
|
-
* ningún comando
|
|
188
|
+
* ningún comando, o si falta el `stdout` o el `stdin` necesarios en algún
|
|
189
|
+
* salto del pipeline.
|
|
190
|
+
*
|
|
191
|
+
* Si un comando del pipeline no puede iniciarse, el promise rechaza con
|
|
192
|
+
* `ProcessError` (sin crash del proceso host): los streams pipeados llevan
|
|
193
|
+
* listeners de error seguros que absorben fallos como `EPIPE`.
|
|
180
194
|
*
|
|
181
195
|
* @example
|
|
182
196
|
* const r = await sh.pipe("cat file.txt", "grep foo", "wc -l");
|
|
183
197
|
*
|
|
184
198
|
* @param scripts - Comandos a ejecutar en pipeline.
|
|
185
199
|
* @returns El resultado del último comando del pipeline.
|
|
186
|
-
* @throws {TypeError} Cuando `scripts` está vacío
|
|
200
|
+
* @throws {TypeError} Cuando `scripts` está vacío, o falta un stream
|
|
201
|
+
* (`stdout`/`stdin`) necesario en algún salto del pipeline.
|
|
187
202
|
*/
|
|
188
203
|
async pipe(...scripts) {
|
|
189
204
|
if (scripts.length === 0) {
|
|
@@ -193,7 +208,13 @@ export class Shell {
|
|
|
193
208
|
return this.run(scripts[0]);
|
|
194
209
|
const handles = scripts.map((s) => this._proc.spawnScript(this.resolveAliases(s), this.buildOptions()));
|
|
195
210
|
for (let i = 0; i < handles.length - 1; i++) {
|
|
196
|
-
handles[i].stdout
|
|
211
|
+
const source = handles[i].stdout;
|
|
212
|
+
const target = handles[i + 1].stdin;
|
|
213
|
+
if (!source || !target) {
|
|
214
|
+
throw new TypeError(`pipe requires stdout on command ${i} and stdin on command ${i + 1}`);
|
|
215
|
+
}
|
|
216
|
+
Shell.attachPipeErrorGuards(source, target);
|
|
217
|
+
source.pipe(target);
|
|
197
218
|
}
|
|
198
219
|
const results = await Promise.all(handles.map((h) => h.wait()));
|
|
199
220
|
return results[results.length - 1];
|
|
@@ -353,6 +374,27 @@ export class Shell {
|
|
|
353
374
|
return this._history[this._history.length - 1];
|
|
354
375
|
}
|
|
355
376
|
// ─── Private helpers ─────────────────────────────────────────────
|
|
377
|
+
/**
|
|
378
|
+
* Adjunta listeners de error "seguros" a los streams de un salto de
|
|
379
|
+
* pipeline, de modo que errores de stream (p. ej. `EPIPE` cuando el
|
|
380
|
+
* consumidor muere antes de tiempo, o un stdin cerrado tras un spawn
|
|
381
|
+
* fallido) se absorban silenciosamente en lugar de propagarse como
|
|
382
|
+
* errores no manejados que crashean el proceso host.
|
|
383
|
+
*
|
|
384
|
+
* Los fallos de spawn siguen su curso normal: `LiveProcess.wait()`
|
|
385
|
+
* rechaza con `ProcessError`.
|
|
386
|
+
*
|
|
387
|
+
* @param source - Stream legible (stdout del comando emisor).
|
|
388
|
+
* @param target - Stream escribible (stdin del comando receptor).
|
|
389
|
+
*/
|
|
390
|
+
static attachPipeErrorGuards(source, target) {
|
|
391
|
+
const swallow = () => {
|
|
392
|
+
/* Error de stream absorbido a propósito: el pipeline termina con un
|
|
393
|
+
`Result` fallido, no debe crashear el proceso host. */
|
|
394
|
+
};
|
|
395
|
+
source.on("error", swallow);
|
|
396
|
+
target.on("error", swallow);
|
|
397
|
+
}
|
|
356
398
|
/**
|
|
357
399
|
* Construye las `ProcessOptions` base incluyendo `cwd` y `env` de la sesión.
|
|
358
400
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shell.js","sourceRoot":"","sources":["../../../src/core/shell/Shell.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,GAIR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Shell.js","sourceRoot":"","sources":["../../../src/core/shell/Shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Opciones de configuración para una sesión de Shell.
|
|
3
|
+
*
|
|
4
|
+
* El shell concreto que interpreta los scripts no se configura aquí: se
|
|
5
|
+
* elige automáticamente en `Process.shell()` / `Process.spawnScript()`
|
|
6
|
+
* (`/bin/sh` en Unix, `cmd.exe` en Windows).
|
|
7
|
+
*/
|
|
2
8
|
export interface ShellConfig {
|
|
3
9
|
/** Directorio de trabajo inicial. Por defecto, `process.cwd()`. */
|
|
4
10
|
cwd?: string;
|
|
5
11
|
/** Variables de entorno adicionales. */
|
|
6
12
|
env?: Record<string, string>;
|
|
7
|
-
/** Shell a utilizar. Por defecto, `/bin/sh` o `cmd.exe`. */
|
|
8
|
-
shell?: string;
|
|
9
13
|
}
|
|
10
14
|
/** Entrada del historial de comandos ejecutados. */
|
|
11
15
|
export interface HistoryItem {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/shell/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/shell/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,SAAS,EAAE,IAAI,CAAC;IAChB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2DAA2D;IAC3D,EAAE,EAAE,OAAO,CAAC;CACb;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pausa la ejecución asíncrona durante `ms` milisegundos.
|
|
3
|
+
*
|
|
4
|
+
* Es la primitiva básica de espera: no lanza errores y siempre resuelve
|
|
5
|
+
* (incluso con `ms` en 0 o negativo, que resuelve en el siguiente tick).
|
|
6
|
+
*
|
|
7
|
+
* @param ms Milisegundos a esperar antes de resolver.
|
|
8
|
+
* @returns Una promesa que se resuelve a `void` cuando expira el temporizador.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* await sleep(200); // espera 200 ms antes de continuar
|
|
12
|
+
*/
|
|
13
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=sleep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../../src/core/utils/sleep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pausa la ejecución asíncrona durante `ms` milisegundos.
|
|
3
|
+
*
|
|
4
|
+
* Es la primitiva básica de espera: no lanza errores y siempre resuelve
|
|
5
|
+
* (incluso con `ms` en 0 o negativo, que resuelve en el siguiente tick).
|
|
6
|
+
*
|
|
7
|
+
* @param ms Milisegundos a esperar antes de resolver.
|
|
8
|
+
* @returns Una promesa que se resuelve a `void` cuando expira el temporizador.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* await sleep(200); // espera 200 ms antes de continuar
|
|
12
|
+
*/
|
|
13
|
+
export function sleep(ms) {
|
|
14
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=sleep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../../src/core/utils/sleep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Folder } from "../file/Folder.js";
|
|
2
|
+
/**
|
|
3
|
+
* Opciones de creación de un directorio temporal.
|
|
4
|
+
*/
|
|
5
|
+
export interface TempDirOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Prefijo del nombre del directorio; se combinan `os.tmpdir()`, el prefijo
|
|
8
|
+
* y 6 caracteres aleatorios (vía `fs.mkdtemp`).
|
|
9
|
+
*
|
|
10
|
+
* Default `"fullnative-"`.
|
|
11
|
+
*/
|
|
12
|
+
prefix?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Si `true`, el directorio **no** se registra para el auto-cleanup del
|
|
15
|
+
* `exit` del proceso: persiste tras el cierre y su eliminación queda a
|
|
16
|
+
* cargo del usuario (normalmente con `dispose()`).
|
|
17
|
+
*
|
|
18
|
+
* Default `false`.
|
|
19
|
+
*/
|
|
20
|
+
keep?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Directorio temporal gestionado, creado con `fs.mkdtemp` bajo `os.tmpdir()`.
|
|
24
|
+
*
|
|
25
|
+
* Extiende `Folder`, así que hereda toda la API de directorios (`list`,
|
|
26
|
+
* `createFile`, `walk`, etc.). Añade `dispose()` para eliminarlo bajo demanda:
|
|
27
|
+
* `dispose()` es idempotente y quita la ruta del registro del auto-cleanup,
|
|
28
|
+
* así que no hay doble intento de borrado al salir del proceso.
|
|
29
|
+
*/
|
|
30
|
+
export declare class TempDir extends Folder {
|
|
31
|
+
/** Indica si el directorio fue creado con `keep: true`. */
|
|
32
|
+
readonly keep: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* @param dirPath Ruta (absoluta) del directorio temporal.
|
|
35
|
+
* @param keep `true` si se creó con `keep: true` (sin auto-cleanup).
|
|
36
|
+
*/
|
|
37
|
+
constructor(dirPath: string, keep?: boolean);
|
|
38
|
+
/**
|
|
39
|
+
* Elimina el directorio y todo su contenido del disco
|
|
40
|
+
* (`fs.rm` con `recursive` y `force`) y lo saca del registro de
|
|
41
|
+
* auto-cleanup. No falla si ya no existe.
|
|
42
|
+
*/
|
|
43
|
+
dispose(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Crea un directorio temporal único bajo `os.tmpdir()` con `fs.mkdtemp`.
|
|
47
|
+
*
|
|
48
|
+
* Por defecto (`keep: false`) la ruta se registra y un hook **único** de
|
|
49
|
+
* `process.once("exit")` la elimina automáticamente al finalizar el proceso
|
|
50
|
+
* (un solo listener para todos los tempdirs, nunca uno por creación), con
|
|
51
|
+
* `rmSync` recursive + force.
|
|
52
|
+
*
|
|
53
|
+
* @param options Opciones `prefix` (default `"fullnative-"`) y `keep`
|
|
54
|
+
* (default `false`).
|
|
55
|
+
* @returns Una promesa con la instancia `TempDir`; el directorio ya existe
|
|
56
|
+
* en disco al resolverse.
|
|
57
|
+
*/
|
|
58
|
+
export declare function tempDir(options?: TempDirOptions): Promise<TempDir>;
|
|
59
|
+
//# sourceMappingURL=tempDir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempDir.d.ts","sourceRoot":"","sources":["../../../src/core/utils/tempDir.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAwC3C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,OAAQ,SAAQ,MAAM;IACjC,2DAA2D;IAC3D,SAAgB,IAAI,EAAE,OAAO,CAAC;IAE9B;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,IAAI,UAAQ;IAKzC;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E"}
|