@alwaysai/device-agent 0.0.2

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 (151) hide show
  1. package/lib/application-control/application-control.d.ts +41 -0
  2. package/lib/application-control/application-control.d.ts.map +1 -0
  3. package/lib/application-control/application-control.js +197 -0
  4. package/lib/application-control/application-control.js.map +1 -0
  5. package/lib/application-control/models.d.ts +12 -0
  6. package/lib/application-control/models.d.ts.map +1 -0
  7. package/lib/application-control/models.js +44 -0
  8. package/lib/application-control/models.js.map +1 -0
  9. package/lib/application-control/utils.d.ts +16 -0
  10. package/lib/application-control/utils.d.ts.map +1 -0
  11. package/lib/application-control/utils.js +62 -0
  12. package/lib/application-control/utils.js.map +1 -0
  13. package/lib/constants.d.ts +15 -0
  14. package/lib/constants.d.ts.map +1 -0
  15. package/lib/constants.js +22 -0
  16. package/lib/constants.js.map +1 -0
  17. package/lib/device-control/device-control.d.ts +4 -0
  18. package/lib/device-control/device-control.d.ts.map +1 -0
  19. package/lib/device-control/device-control.js +20 -0
  20. package/lib/device-control/device-control.js.map +1 -0
  21. package/lib/docker/docker-cmd.d.ts +4 -0
  22. package/lib/docker/docker-cmd.d.ts.map +1 -0
  23. package/lib/docker/docker-cmd.js +16 -0
  24. package/lib/docker/docker-cmd.js.map +1 -0
  25. package/lib/docker/docker-compose-cmd.d.ts +5 -0
  26. package/lib/docker/docker-compose-cmd.d.ts.map +1 -0
  27. package/lib/docker/docker-compose-cmd.js +16 -0
  28. package/lib/docker/docker-compose-cmd.js.map +1 -0
  29. package/lib/environment.d.ts +4 -0
  30. package/lib/environment.d.ts.map +1 -0
  31. package/lib/environment.js +21 -0
  32. package/lib/environment.js.map +1 -0
  33. package/lib/index.d.ts +3 -0
  34. package/lib/index.d.ts.map +1 -0
  35. package/lib/index.js +19 -0
  36. package/lib/index.js.map +1 -0
  37. package/lib/root.d.ts +2 -0
  38. package/lib/root.d.ts.map +1 -0
  39. package/lib/root.js +18 -0
  40. package/lib/root.js.map +1 -0
  41. package/lib/subcommands/app/app.d.ts +36 -0
  42. package/lib/subcommands/app/app.d.ts.map +1 -0
  43. package/lib/subcommands/app/app.js +218 -0
  44. package/lib/subcommands/app/app.js.map +1 -0
  45. package/lib/subcommands/app/index.d.ts +2 -0
  46. package/lib/subcommands/app/index.d.ts.map +1 -0
  47. package/lib/subcommands/app/index.js +23 -0
  48. package/lib/subcommands/app/index.js.map +1 -0
  49. package/lib/subcommands/device-control.d.ts +2 -0
  50. package/lib/subcommands/device-control.d.ts.map +1 -0
  51. package/lib/subcommands/device-control.js +19 -0
  52. package/lib/subcommands/device-control.js.map +1 -0
  53. package/lib/subcommands/index.d.ts +2 -0
  54. package/lib/subcommands/index.d.ts.map +1 -0
  55. package/lib/subcommands/index.js +14 -0
  56. package/lib/subcommands/index.js.map +1 -0
  57. package/lib/subcommands/login.d.ts +5 -0
  58. package/lib/subcommands/login.d.ts.map +1 -0
  59. package/lib/subcommands/login.js +27 -0
  60. package/lib/subcommands/login.js.map +1 -0
  61. package/lib/subcommands/test-app.d.ts +5 -0
  62. package/lib/subcommands/test-app.d.ts.map +1 -0
  63. package/lib/subcommands/test-app.js +33 -0
  64. package/lib/subcommands/test-app.js.map +1 -0
  65. package/lib/util/copy-dir.d.ts +5 -0
  66. package/lib/util/copy-dir.d.ts.map +1 -0
  67. package/lib/util/copy-dir.js +14 -0
  68. package/lib/util/copy-dir.js.map +1 -0
  69. package/lib/util/run-cli-cmd.d.ts +5 -0
  70. package/lib/util/run-cli-cmd.d.ts.map +1 -0
  71. package/lib/util/run-cli-cmd.js +24 -0
  72. package/lib/util/run-cli-cmd.js.map +1 -0
  73. package/lib/util/spawner/gnu-spawner.d.ts +9 -0
  74. package/lib/util/spawner/gnu-spawner.d.ts.map +1 -0
  75. package/lib/util/spawner/gnu-spawner.js +102 -0
  76. package/lib/util/spawner/gnu-spawner.js.map +1 -0
  77. package/lib/util/spawner/js-spawner.d.ts +5 -0
  78. package/lib/util/spawner/js-spawner.d.ts.map +1 -0
  79. package/lib/util/spawner/js-spawner.js +89 -0
  80. package/lib/util/spawner/js-spawner.js.map +1 -0
  81. package/lib/util/spawner/types.d.ts +28 -0
  82. package/lib/util/spawner/types.d.ts.map +1 -0
  83. package/lib/util/spawner/types.js +3 -0
  84. package/lib/util/spawner/types.js.map +1 -0
  85. package/lib/util/spawner-base/index.d.ts +17 -0
  86. package/lib/util/spawner-base/index.d.ts.map +1 -0
  87. package/lib/util/spawner-base/index.js +30 -0
  88. package/lib/util/spawner-base/index.js.map +1 -0
  89. package/lib/util/spawner-base/run-foreground-sync.d.ts +3 -0
  90. package/lib/util/spawner-base/run-foreground-sync.d.ts.map +1 -0
  91. package/lib/util/spawner-base/run-foreground-sync.js +18 -0
  92. package/lib/util/spawner-base/run-foreground-sync.js.map +1 -0
  93. package/lib/util/spawner-base/run-foreground.d.ts +3 -0
  94. package/lib/util/spawner-base/run-foreground.d.ts.map +1 -0
  95. package/lib/util/spawner-base/run-foreground.js +49 -0
  96. package/lib/util/spawner-base/run-foreground.js.map +1 -0
  97. package/lib/util/spawner-base/run-streaming.d.ts +4 -0
  98. package/lib/util/spawner-base/run-streaming.d.ts.map +1 -0
  99. package/lib/util/spawner-base/run-streaming.js +35 -0
  100. package/lib/util/spawner-base/run-streaming.js.map +1 -0
  101. package/lib/util/spawner-base/run.d.ts +4 -0
  102. package/lib/util/spawner-base/run.d.ts.map +1 -0
  103. package/lib/util/spawner-base/run.js +56 -0
  104. package/lib/util/spawner-base/run.js.map +1 -0
  105. package/lib/web/index.html +229 -0
  106. package/lib/web/static/Karla.css +18 -0
  107. package/lib/web/static/bootstrap-4.3.1.min.css +7 -0
  108. package/lib/web/static/bootstrap-4.3.1.min.js +7 -0
  109. package/lib/web/static/favicon.ico +0 -0
  110. package/lib/web/static/jquery-3.3.1.slim.min.js +2 -0
  111. package/lib/web/static/popper-1.14.7.min.js +5 -0
  112. package/lib/web/web-interface.d.ts +2 -0
  113. package/lib/web/web-interface.d.ts.map +1 -0
  114. package/lib/web/web-interface.js +74 -0
  115. package/lib/web/web-interface.js.map +1 -0
  116. package/package.json +89 -0
  117. package/readme.md +104 -0
  118. package/src/application-control/application-control.ts +233 -0
  119. package/src/application-control/models.ts +40 -0
  120. package/src/application-control/utils.ts +64 -0
  121. package/src/constants.ts +29 -0
  122. package/src/device-control/device-control.ts +16 -0
  123. package/src/docker/docker-cmd.ts +12 -0
  124. package/src/docker/docker-compose-cmd.ts +12 -0
  125. package/src/environment.ts +20 -0
  126. package/src/index.ts +18 -0
  127. package/src/root.ts +18 -0
  128. package/src/subcommands/app/app.ts +216 -0
  129. package/src/subcommands/app/index.ts +32 -0
  130. package/src/subcommands/device-control.ts +16 -0
  131. package/src/subcommands/index.ts +11 -0
  132. package/src/subcommands/login.ts +24 -0
  133. package/src/subcommands/test-app.ts +30 -0
  134. package/src/util/copy-dir.ts +10 -0
  135. package/src/util/run-cli-cmd.ts +18 -0
  136. package/src/util/spawner/gnu-spawner.ts +114 -0
  137. package/src/util/spawner/js-spawner.ts +110 -0
  138. package/src/util/spawner/types.ts +28 -0
  139. package/src/util/spawner-base/index.ts +28 -0
  140. package/src/util/spawner-base/run-foreground-sync.ts +16 -0
  141. package/src/util/spawner-base/run-foreground.ts +49 -0
  142. package/src/util/spawner-base/run-streaming.ts +40 -0
  143. package/src/util/spawner-base/run.ts +60 -0
  144. package/src/web/index.html +229 -0
  145. package/src/web/static/Karla.css +18 -0
  146. package/src/web/static/bootstrap-4.3.1.min.css +7 -0
  147. package/src/web/static/bootstrap-4.3.1.min.js +7 -0
  148. package/src/web/static/favicon.ico +0 -0
  149. package/src/web/static/jquery-3.3.1.slim.min.js +2 -0
  150. package/src/web/static/popper-1.14.7.min.js +5 -0
  151. package/src/web/web-interface.ts +89 -0
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GnuSpawner = void 0;
4
+ const coded_error_1 = require("@carnesen/coded-error");
5
+ const { Readable } = require('stream');
6
+ function GnuSpawner(context) {
7
+ const { resolvePath, run, runForegroundSync, runForeground, runStreaming } = context;
8
+ return {
9
+ run,
10
+ runForegroundSync,
11
+ runForeground,
12
+ runStreaming,
13
+ resolvePath,
14
+ readdir,
15
+ async readFile(path) {
16
+ const output = await run({
17
+ exe: 'cat',
18
+ args: [resolvePath(path)],
19
+ });
20
+ return output;
21
+ },
22
+ async writeFile(path, data) {
23
+ await run({
24
+ exe: 'dd',
25
+ args: [`of=${resolvePath(path)}`],
26
+ input: Readable.from(data),
27
+ });
28
+ },
29
+ async rename(oldPath, newPath) {
30
+ await run({
31
+ exe: 'mv',
32
+ args: [resolvePath(oldPath), resolvePath(newPath)],
33
+ });
34
+ },
35
+ mkdirp,
36
+ rimraf,
37
+ sanatizedrimraf,
38
+ tar,
39
+ untar,
40
+ exists,
41
+ };
42
+ async function mkdirp(path) {
43
+ await run({ exe: 'mkdir', args: ['-p', resolvePath(path)] });
44
+ }
45
+ async function readdir(path) {
46
+ let output;
47
+ const resolvedPath = resolvePath(path);
48
+ try {
49
+ output = await run({ exe: 'ls', args: ['-A1', resolvedPath] });
50
+ // ^^ The output looks like '/foo/bar.txt' if path is an existing file
51
+ // Else it looks like 'a b c' if the path is a directory with files/subdirs a, b, c.
52
+ }
53
+ catch (ex) {
54
+ if (ex &&
55
+ typeof ex.message === 'string' &&
56
+ ex.message.includes('No such file or directory')) {
57
+ ex.code = 'ENOENT';
58
+ }
59
+ throw ex;
60
+ }
61
+ if (output.startsWith('/')) {
62
+ throw new coded_error_1.CodedError(`ENOTDIR: not a directory "${resolvedPath}"`, 'ENOTDIR');
63
+ }
64
+ return output.length > 0 ? output.split('\n') : [];
65
+ }
66
+ async function rimraf(path) {
67
+ await run({ exe: 'rm', args: ['-rf', resolvePath(path)] });
68
+ }
69
+ async function sanatizedrimraf(path) {
70
+ const sanatizedPath = resolvePath(path).replace('*', '');
71
+ await run({ exe: 'rm', args: ['-rf', sanatizedPath] });
72
+ }
73
+ async function tar(...paths) {
74
+ return await runStreaming({
75
+ exe: 'tar',
76
+ args: ['-cz', ...paths],
77
+ cwd: resolvePath(),
78
+ });
79
+ }
80
+ async function untar(input, cwd = '.') {
81
+ await run({
82
+ exe: 'tar',
83
+ args: ['-xz'],
84
+ cwd,
85
+ input,
86
+ });
87
+ }
88
+ async function exists(path) {
89
+ if (!path) {
90
+ throw new Error('"path" is required');
91
+ }
92
+ try {
93
+ await run({ exe: 'stat', args: [resolvePath(path)] });
94
+ return true;
95
+ }
96
+ catch (ex) {
97
+ return false;
98
+ }
99
+ }
100
+ }
101
+ exports.GnuSpawner = GnuSpawner;
102
+ //# sourceMappingURL=gnu-spawner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gnu-spawner.js","sourceRoot":"","sources":["../../../src/util/spawner/gnu-spawner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Spawner } from './types';
2
+ export declare function JsSpawner(context?: {
3
+ path?: string;
4
+ }): Spawner;
5
+ //# sourceMappingURL=js-spawner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-spawner.d.ts","sourceRoot":"","sources":["../../../src/util/spawner/js-spawner.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAO,MAAM,SAAS,CAAC;AAKvC,wBAAgB,SAAS,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAyFlE"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsSpawner = void 0;
4
+ const fs_1 = require("fs");
5
+ const util_1 = require("util");
6
+ const path_1 = require("path");
7
+ const tarJs = require("tar");
8
+ const mkdirpJs = require("mkdirp");
9
+ const rimrafJs = require("rimraf");
10
+ const spawner_base_1 = require("../spawner-base");
11
+ const gnu_spawner_1 = require("./gnu-spawner");
12
+ const pump = require("pump");
13
+ function JsSpawner(context = {}) {
14
+ const gnuSpawner = (0, gnu_spawner_1.GnuSpawner)(Object.assign({ resolvePath }, (0, spawner_base_1.SpawnerBase)(translate)));
15
+ return Object.assign(Object.assign({}, gnuSpawner), { resolvePath,
16
+ readdir,
17
+ async readFile(path) {
18
+ return await (0, util_1.promisify)(fs_1.readFile)(resolvePath(path), { encoding: 'utf8' });
19
+ },
20
+ async writeFile(path, data) {
21
+ await (0, util_1.promisify)(fs_1.writeFile)(resolvePath(path), data, { encoding: 'utf8' });
22
+ },
23
+ mkdirp,
24
+ rimraf,
25
+ tar,
26
+ async rename(oldPath, newPath) {
27
+ await (0, util_1.promisify)(fs_1.rename)(resolvePath(oldPath), resolvePath(newPath));
28
+ },
29
+ async untar(input, cwd) {
30
+ await new Promise((resolve, reject) => {
31
+ const writable = tarJs.extract({ cwd: resolvePath(cwd) });
32
+ pump(input, writable, err => {
33
+ if (err) {
34
+ reject(err);
35
+ }
36
+ else {
37
+ resolve();
38
+ }
39
+ });
40
+ });
41
+ },
42
+ exists });
43
+ function resolvePath(...paths) {
44
+ return (0, path_1.resolve)(context.path || '', ...paths.map(path => path || ''));
45
+ }
46
+ function translate(cmd) {
47
+ if (cmd.superuser) {
48
+ throw new Error(`${JsSpawner.name} does not support cmd option "superuser"`);
49
+ }
50
+ const translated = Object.assign({}, cmd);
51
+ if (cmd.cwd) {
52
+ translated.cwd = resolvePath(cmd.cwd);
53
+ }
54
+ return translated;
55
+ }
56
+ async function mkdirp(path = '') {
57
+ await mkdirpJs(resolvePath(path));
58
+ }
59
+ async function rimraf(path = '') {
60
+ await (0, util_1.promisify)(rimrafJs)(resolvePath(path));
61
+ }
62
+ function readdir(path = '') {
63
+ return (0, util_1.promisify)(fs_1.readdir)(resolvePath(path));
64
+ }
65
+ async function tar(...paths) {
66
+ for (const path in paths) {
67
+ if ((0, path_1.isAbsolute)(path)) {
68
+ throw new Error('Paths passed to spawner.tar must not be absolute');
69
+ }
70
+ }
71
+ const packageStream = tarJs.create({ sync: true, gzip: true, cwd: resolvePath() }, paths);
72
+ // ^^ The @types for tar.create are not correct
73
+ return packageStream;
74
+ }
75
+ async function exists(path) {
76
+ if (!path) {
77
+ throw new Error('path is mandatory');
78
+ }
79
+ try {
80
+ await (0, util_1.promisify)(fs_1.access)(resolvePath(path));
81
+ return true;
82
+ }
83
+ catch (ex) {
84
+ return false;
85
+ }
86
+ }
87
+ }
88
+ exports.JsSpawner = JsSpawner;
89
+ //# sourceMappingURL=js-spawner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-spawner.js","sourceRoot":"","sources":["../../../src/util/spawner/js-spawner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /// <reference types="node" />
2
+ export declare type Cmd = {
3
+ exe: string;
4
+ args?: string[];
5
+ cwd?: string;
6
+ tty?: boolean;
7
+ input?: NodeJS.ReadableStream;
8
+ superuser?: boolean;
9
+ };
10
+ export declare type Translate = (cmd: Cmd) => Cmd;
11
+ export declare type Spawner = {
12
+ run: (cmd: Cmd) => Promise<string>;
13
+ runForegroundSync: (cmd: Cmd) => void;
14
+ runForeground: (cmd: Cmd) => Promise<number | undefined | void>;
15
+ runStreaming: (cmd: Cmd) => Promise<NodeJS.ReadableStream>;
16
+ resolvePath: (...paths: (string | undefined)[]) => string;
17
+ readdir: (path?: string) => Promise<string[]>;
18
+ readFile: (path: string) => Promise<string>;
19
+ writeFile: (path: string, data: string) => Promise<void>;
20
+ mkdirp: (path?: string) => Promise<void>;
21
+ rename: (oldPath: string, newPath: string) => Promise<void>;
22
+ rimraf: (path?: string) => Promise<void>;
23
+ sanatizedrimraf: (path?: string) => Promise<void>;
24
+ tar: (...paths: string[]) => Promise<NodeJS.ReadableStream>;
25
+ untar: (input: NodeJS.ReadableStream, cwd?: string) => Promise<void>;
26
+ exists: (path: string) => Promise<boolean>;
27
+ };
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/util/spawner/types.ts"],"names":[],"mappings":";AAAA,oBAAY,GAAG,GAAG;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,oBAAY,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC;AAE1C,oBAAY,OAAO,GAAG;IACpB,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACtC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IAChE,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3D,WAAW,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC;IAC1D,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5D,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/util/spawner/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ import { run } from './run';
3
+ import { runForegroundSync } from './run-foreground-sync';
4
+ import { runStreaming } from './run-streaming';
5
+ import { Cmd } from '../spawner/types';
6
+ export declare function SpawnerBase(translate: (cmd: Cmd) => Cmd): {
7
+ run(cmd: Cmd): Promise<string>;
8
+ runForeground(cmd: Cmd): Promise<number | void | undefined>;
9
+ runForegroundSync(cmd: Cmd): void;
10
+ runStreaming(cmd: Cmd): Promise<NodeJS.ReadableStream>;
11
+ };
12
+ export declare const spawnerBase: {
13
+ run: typeof run;
14
+ runForegroundSync: typeof runForegroundSync;
15
+ runStreaming: typeof runStreaming;
16
+ };
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/util/spawner-base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,wBAAgB,WAAW,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG;aAE3C,GAAG;uBAGO,GAAG;2BAGC,GAAG;sBAGR,GAAG;EAIxB;AAED,eAAO,MAAM,WAAW;;;;CAIvB,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.spawnerBase = exports.SpawnerBase = void 0;
4
+ const run_1 = require("./run");
5
+ const run_foreground_sync_1 = require("./run-foreground-sync");
6
+ const run_foreground_1 = require("./run-foreground");
7
+ const run_streaming_1 = require("./run-streaming");
8
+ function SpawnerBase(translate) {
9
+ return {
10
+ run(cmd) {
11
+ return (0, run_1.run)(translate(cmd));
12
+ },
13
+ runForeground(cmd) {
14
+ return (0, run_foreground_1.runForeground)(translate(cmd));
15
+ },
16
+ runForegroundSync(cmd) {
17
+ return (0, run_foreground_sync_1.runForegroundSync)(translate(cmd));
18
+ },
19
+ runStreaming(cmd) {
20
+ return (0, run_streaming_1.runStreaming)(translate(cmd));
21
+ },
22
+ };
23
+ }
24
+ exports.SpawnerBase = SpawnerBase;
25
+ exports.spawnerBase = {
26
+ run: run_1.run,
27
+ runForegroundSync: run_foreground_sync_1.runForegroundSync,
28
+ runStreaming: run_streaming_1.runStreaming,
29
+ };
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/spawner-base/index.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,+DAA0D;AAC1D,qDAAiD;AACjD,mDAA+C;AAG/C,SAAgB,WAAW,CAAC,SAA4B;IACtD,OAAO;QACL,GAAG,CAAC,GAAQ;YACV,OAAO,IAAA,SAAG,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,aAAa,CAAC,GAAQ;YACpB,OAAO,IAAA,8BAAa,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,iBAAiB,CAAC,GAAQ;YACxB,OAAO,IAAA,uCAAiB,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,YAAY,CAAC,GAAQ;YACnB,OAAO,IAAA,4BAAY,EAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC;AAfD,kCAeC;AAEY,QAAA,WAAW,GAAG;IACzB,GAAG,EAAH,SAAG;IACH,iBAAiB,EAAjB,uCAAiB;IACjB,YAAY,EAAZ,4BAAY;CACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Cmd } from '../spawner/types';
2
+ export declare function runForegroundSync(cmd: Cmd): void;
3
+ //# sourceMappingURL=run-foreground-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-foreground-sync.d.ts","sourceRoot":"","sources":["../../../src/util/spawner-base/run-foreground-sync.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,QAUzC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runForegroundSync = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const winston = require('winston');
6
+ function runForegroundSync(cmd) {
7
+ const optString = cmd.args ? cmd.args.join(' ') : '';
8
+ winston.debug(`${cmd.exe} ${optString}`);
9
+ const out = (0, child_process_1.spawnSync)(cmd.exe, cmd.args || [], {
10
+ cwd: cmd.cwd,
11
+ stdio: 'inherit',
12
+ });
13
+ if (out.error) {
14
+ throw out.error;
15
+ }
16
+ }
17
+ exports.runForegroundSync = runForegroundSync;
18
+ //# sourceMappingURL=run-foreground-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-foreground-sync.js","sourceRoot":"","sources":["../../../src/util/spawner-base/run-foreground-sync.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAInC,SAAgB,iBAAiB,CAAC,GAAQ;IACxC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAA,yBAAS,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE;QAC7C,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,KAAK,EAAE;QACb,MAAM,GAAG,CAAC,KAAK,CAAC;KACjB;AACH,CAAC;AAVD,8CAUC"}
@@ -0,0 +1,3 @@
1
+ import { Cmd } from '../spawner/types';
2
+ export declare function runForeground(cmd: Cmd): Promise<number | void | undefined>;
3
+ //# sourceMappingURL=run-foreground.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-foreground.d.ts","sourceRoot":"","sources":["../../../src/util/spawner-base/run-foreground.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAMvC,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,sCAyC3C"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runForeground = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const signalExit = require("signal-exit");
6
+ const rKill = require("tree-kill");
7
+ const alwayscli_1 = require("@alwaysai/alwayscli");
8
+ const environment_1 = require("../../environment");
9
+ async function runForeground(cmd) {
10
+ const childProcess = (0, child_process_1.spawn)(cmd.exe, cmd.args || [], {
11
+ cwd: cmd.cwd,
12
+ stdio: 'inherit',
13
+ });
14
+ // Kill child when parent exits
15
+ signalExit(() => {
16
+ if (environment_1.ALWAYSAI_OS_PLATFORM === 'darwin') {
17
+ childProcess.kill('SIGINT');
18
+ // ensures the main process gets killed by the correct signal - this will only activate with a ctrl + c
19
+ // when it hits the siginit it will then activate the on exit signal and finish
20
+ process.on('SIGINT', () => {
21
+ if (childProcess.pid !== undefined) {
22
+ rKill(childProcess.pid, 'SIGINT', (error) => {
23
+ if (error) {
24
+ throw new alwayscli_1.CliTerseError(`Failed to kill child process {error.name} {error.message}`);
25
+ }
26
+ });
27
+ }
28
+ });
29
+ }
30
+ else {
31
+ childProcess.kill();
32
+ }
33
+ });
34
+ return await new Promise((resolve, reject) => {
35
+ childProcess.on('error', err => {
36
+ reject(err);
37
+ });
38
+ childProcess.on('exit', code => {
39
+ if (code) {
40
+ resolve(code);
41
+ }
42
+ else {
43
+ resolve();
44
+ }
45
+ });
46
+ });
47
+ }
48
+ exports.runForeground = runForeground;
49
+ //# sourceMappingURL=run-foreground.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-foreground.js","sourceRoot":"","sources":["../../../src/util/spawner-base/run-foreground.ts"],"names":[],"mappings":";;;AAAA,iDAAsC;AAEtC,0CAA2C;AAC3C,mCAAoC;AACpC,mDAAoD;AACpD,mDAAyD;AAElD,KAAK,UAAU,aAAa,CAAC,GAAQ;IAC1C,MAAM,YAAY,GAAG,IAAA,qBAAK,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE;QAClD,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,kCAAoB,KAAK,QAAQ,EAAE;YACrC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,uGAAuG;YACvG,+EAA+E;YAC/E,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACxB,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE;oBAClC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,KAAyB,EAAE,EAAE;wBAC9D,IAAI,KAAK,EAAE;4BACT,MAAM,IAAI,yBAAa,CACrB,2DAA2D,CAC5D,CAAC;yBACH;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,YAAY,CAAC,IAAI,EAAE,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YAC7B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YAC7B,IAAI,IAAI,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;iBAAM;gBACL,OAAO,EAAE,CAAC;aACX;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAzCD,sCAyCC"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ import { Cmd } from '../spawner/types';
3
+ export declare function runStreaming(cmd: Cmd): Promise<NodeJS.ReadableStream>;
4
+ //# sourceMappingURL=run-streaming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-streaming.d.ts","sourceRoot":"","sources":["../../../src/util/spawner-base/run-streaming.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,kCAiCpC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runStreaming = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const signalExit = require("signal-exit");
6
+ function runStreaming(cmd) {
7
+ return new Promise((resolve, reject) => {
8
+ const child = (0, child_process_1.spawn)(cmd.exe, cmd.args || [], {
9
+ cwd: cmd.cwd,
10
+ });
11
+ signalExit(() => {
12
+ child.kill();
13
+ });
14
+ if (cmd.input) {
15
+ cmd.input.pipe(child.stdin);
16
+ }
17
+ const errChunks = [];
18
+ function stderrChunkHandler(chunk) {
19
+ errChunks.push(chunk);
20
+ }
21
+ child.stderr.on('data', stderrChunkHandler);
22
+ child.on('error', (err) => {
23
+ if (err && !err.stderr) {
24
+ err.stderr = Buffer.concat(errChunks).toString();
25
+ }
26
+ reject(err);
27
+ });
28
+ child.stdout.once('readable', () => {
29
+ resolve(child.stdout);
30
+ child.stderr.removeListener('data', stderrChunkHandler);
31
+ });
32
+ });
33
+ }
34
+ exports.runStreaming = runStreaming;
35
+ //# sourceMappingURL=run-streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-streaming.js","sourceRoot":"","sources":["../../../src/util/spawner-base/run-streaming.ts"],"names":[],"mappings":";;;AAAA,iDAAsC;AAEtC,0CAA2C;AAI3C,SAAgB,YAAY,CAAC,GAAQ;IACnC,OAAO,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE;YAC3C,GAAG,EAAE,GAAG,CAAC,GAAG;SACb,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACd,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,KAAK,EAAE;YACb,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC7B;QAED,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,SAAS,kBAAkB,CAAC,KAAa;YACvC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAE5C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC7B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;gBACtB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;aAClD;YACD,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;YACjC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAjCD,oCAiCC"}
@@ -0,0 +1,4 @@
1
+ import { Cmd } from '../spawner/types';
2
+ export declare const PROCESS_EXITED_WITH_NON_ZERO_STATUS_CODE = "Process exited with non-zero status code";
3
+ export declare function run(cmd: Cmd): Promise<string>;
4
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/util/spawner-base/run.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,eAAO,MAAM,wCAAwC,6CACT,CAAC;AAE7C,wBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,mBAiDjC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = exports.PROCESS_EXITED_WITH_NON_ZERO_STATUS_CODE = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const signalExit = require("signal-exit");
6
+ const alwayscli_1 = require("@alwaysai/alwayscli");
7
+ exports.PROCESS_EXITED_WITH_NON_ZERO_STATUS_CODE = 'Process exited with non-zero status code';
8
+ async function run(cmd) {
9
+ return new Promise((resolve, reject) => {
10
+ const optString = cmd.args ? cmd.args.join(' ') : '';
11
+ const child = (0, child_process_1.spawn)(cmd.exe, cmd.args || [], { cwd: cmd.cwd });
12
+ signalExit(() => {
13
+ child.kill();
14
+ });
15
+ if (cmd.input) {
16
+ cmd.input.pipe(child.stdin);
17
+ }
18
+ // TODO: Limit buffer size
19
+ const outChunks = [];
20
+ const allChunks = []; // stderr and stdout
21
+ child.stdout.on('data', chunk => {
22
+ outChunks.push(chunk);
23
+ allChunks.push(chunk);
24
+ });
25
+ child.stderr.on('data', chunk => {
26
+ allChunks.push(chunk);
27
+ });
28
+ child.on('error', err => {
29
+ reject(err);
30
+ });
31
+ child.on('close', code => {
32
+ if (code === 0) {
33
+ const str = Buffer.concat(outChunks).toString('utf8');
34
+ if (str.endsWith('\n')) {
35
+ resolve(str.slice(0, -1));
36
+ }
37
+ else {
38
+ resolve(str);
39
+ }
40
+ }
41
+ else if (code !== null) {
42
+ let message = `${exports.PROCESS_EXITED_WITH_NON_ZERO_STATUS_CODE} ${code.toString()}`;
43
+ message += '\n\n';
44
+ message += `$ ${cmd.exe} ${cmd.args ? cmd.args.join(' ') : ''}`;
45
+ message += '\n\n';
46
+ message += Buffer.concat(allChunks).toString('utf8');
47
+ reject(new alwayscli_1.CliTerseError(message));
48
+ }
49
+ else {
50
+ reject(new alwayscli_1.CliTerseError('Close code is undefined!'));
51
+ }
52
+ });
53
+ });
54
+ }
55
+ exports.run = run;
56
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/util/spawner-base/run.ts"],"names":[],"mappings":";;;AAAA,iDAAsC;AACtC,0CAA2C;AAE3C,mDAAoD;AAIvC,QAAA,wCAAwC,GACnD,0CAA0C,CAAC;AAEtC,KAAK,UAAU,GAAG,CAAC,GAAQ;IAChC,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,UAAU,CAAC,GAAG,EAAE;YACd,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,KAAK,EAAE;YACb,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC7B;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAa,EAAE,CAAC,CAAC,oBAAoB;QAEpD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtD,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3B;qBAAM;oBACL,OAAO,CAAC,GAAG,CAAC,CAAC;iBACd;aACF;iBAAM,IAAI,IAAI,KAAK,IAAI,EAAE;gBACxB,IAAI,OAAO,GAAG,GAAG,gDAAwC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC/E,OAAO,IAAI,MAAM,CAAC;gBAClB,OAAO,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAChE,OAAO,IAAI,MAAM,CAAC;gBAClB,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,yBAAa,CAAC,OAAO,CAAC,CAAC,CAAC;aACpC;iBAAM;gBACL,MAAM,CAAC,IAAI,yBAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC;aACvD;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAjDD,kBAiDC"}