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.
Files changed (55) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/MIGRATION.md +161 -0
  3. package/README.md +128 -34
  4. package/dist/core/env/env.d.ts +37 -5
  5. package/dist/core/env/env.d.ts.map +1 -1
  6. package/dist/core/env/env.js +27 -6
  7. package/dist/core/env/env.js.map +1 -1
  8. package/dist/core/env/index.d.ts +1 -1
  9. package/dist/core/env/index.d.ts.map +1 -1
  10. package/dist/core/env/index.js.map +1 -1
  11. package/dist/core/file/File.d.ts +13 -11
  12. package/dist/core/file/File.d.ts.map +1 -1
  13. package/dist/core/file/File.js +15 -14
  14. package/dist/core/file/File.js.map +1 -1
  15. package/dist/core/file/Folder.d.ts +11 -11
  16. package/dist/core/file/Folder.d.ts.map +1 -1
  17. package/dist/core/file/Folder.js +44 -27
  18. package/dist/core/file/Folder.js.map +1 -1
  19. package/dist/core/index.d.ts +2 -1
  20. package/dist/core/index.d.ts.map +1 -1
  21. package/dist/core/index.js +1 -0
  22. package/dist/core/index.js.map +1 -1
  23. package/dist/core/process/Command.d.ts +19 -0
  24. package/dist/core/process/Command.d.ts.map +1 -1
  25. package/dist/core/process/Command.js +36 -1
  26. package/dist/core/process/Command.js.map +1 -1
  27. package/dist/core/process/Result.d.ts +10 -2
  28. package/dist/core/process/Result.d.ts.map +1 -1
  29. package/dist/core/process/Result.js +12 -2
  30. package/dist/core/process/Result.js.map +1 -1
  31. package/dist/core/process/types.d.ts +4 -0
  32. package/dist/core/process/types.d.ts.map +1 -1
  33. package/dist/core/shell/Shell.d.ts +33 -5
  34. package/dist/core/shell/Shell.d.ts.map +1 -1
  35. package/dist/core/shell/Shell.js +49 -7
  36. package/dist/core/shell/Shell.js.map +1 -1
  37. package/dist/core/shell/types.d.ts +7 -3
  38. package/dist/core/shell/types.d.ts.map +1 -1
  39. package/dist/core/utils/index.d.ts +4 -0
  40. package/dist/core/utils/index.d.ts.map +1 -0
  41. package/dist/core/utils/index.js +4 -0
  42. package/dist/core/utils/index.js.map +1 -0
  43. package/dist/core/utils/sleep.d.ts +14 -0
  44. package/dist/core/utils/sleep.d.ts.map +1 -0
  45. package/dist/core/utils/sleep.js +16 -0
  46. package/dist/core/utils/sleep.js.map +1 -0
  47. package/dist/core/utils/tempDir.d.ts +59 -0
  48. package/dist/core/utils/tempDir.d.ts.map +1 -0
  49. package/dist/core/utils/tempDir.js +92 -0
  50. package/dist/core/utils/tempDir.js.map +1 -0
  51. package/dist/core/utils/timeout.d.ts +40 -0
  52. package/dist/core/utils/timeout.d.ts.map +1 -0
  53. package/dist/core/utils/timeout.js +54 -0
  54. package/dist/core/utils/timeout.js.map +1 -0
  55. 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":"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"}
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 (`\n` o
39
- * `\r\n`), excluyendo las líneas vacías.
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;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,EAAE,CAEpB;IAED;;;;;;;;;OASG;IACH,IAAI,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC;IAItB;;;;;OAKG;IACH,aAAa,IAAI,IAAI;CAUtB"}
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 (`\n` o
54
- * `\r\n`), excluyendo las líneas vacías.
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;;;OAGG;IACH,IAAI,KAAK;QACP,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"}
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;;;;;;GAMG;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"}
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, shell).
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
- * @param path - Ruta del nuevo directorio de trabajo.
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(path: string): this;
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":"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"}
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;AAKvE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,kBAAkB,CAAS;IAEnC;;;;OAIG;gBACS,OAAO,GAAE,WAAgB;IAQrC,iDAAiD;IACjD,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,sDAAsD;IACtD,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhC;IAED,sDAAsD;IACtD,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpC;IAED,uDAAuD;IACvD,IAAI,OAAO,IAAI,SAAS,WAAW,EAAE,CAEpC;IAID;;;;;;;;;OASG;IACH,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKxB;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrC;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKxB;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK1C;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO3B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,CAAC,CACC,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,OAAO,EAAE,GACnB,OAAO,CAAC,MAAM,CAAC;IAWlB;;;;;;OAMG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpE;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;IAMxC;;;;;;;;;;;;;;;;;OAiBG;IACG,IAAI,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BjD;;;;;;;;;OASG;IACG,KAAK,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpD;;;;;;OAMG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMnE;;;;;;OAMG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQrE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,GAAG;IA6B7C,8EAA8E;IAC9E,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAEnC;IAED,8CAA8C;IAC9C,IAAI,UAAU,IAAI,SAAS,GAAG,EAAE,CAE/B;IAED;;;;OAIG;IACH,OAAO,CAAC,MAAM,GAAE,MAAM,CAAC,OAAmB,GAAG,IAAI;IAMjD;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAMlC;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C;;;;;OAKG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMpD,uCAAuC;IACvC,YAAY,IAAI,IAAI;IAIpB;;;;OAIG;IACH,WAAW,IAAI,WAAW,GAAG,SAAS;IAMtC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAYpC;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IActB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK;IAcb;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAcrB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;OAGG;IACH,OAAO,CAAC,aAAa;CAetB"}
@@ -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, shell).
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
- * @param path - Ruta del nuevo directorio de trabajo.
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(path) {
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?.pipe(handles[i + 1].stdin);
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":"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"}
1
+ {"version":3,"file":"Shell.js","sourceRoot":"","sources":["../../../src/core/shell/Shell.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
- /** Opciones de configuración para una sesión de Shell. */
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,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;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"}
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,4 @@
1
+ export { sleep } from "./sleep.js";
2
+ export { timeout, TimeoutError } from "./timeout.js";
3
+ export { tempDir, TempDir, type TempDirOptions } from "./tempDir.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export { sleep } from "./sleep.js";
2
+ export { timeout, TimeoutError } from "./timeout.js";
3
+ export { tempDir, TempDir } from "./tempDir.js";
4
+ //# sourceMappingURL=index.js.map
@@ -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"}