@twilio/flex-dev-utils 5.0.1-beta.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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/axios.d.ts +6 -0
  4. package/dist/axios.js +18 -0
  5. package/dist/axios.js.map +1 -0
  6. package/dist/credentials.d.ts +40 -0
  7. package/dist/credentials.js +241 -0
  8. package/dist/credentials.js.map +1 -0
  9. package/dist/env.d.ts +1 -0
  10. package/dist/env.js +13 -0
  11. package/dist/env.js.map +1 -0
  12. package/dist/errors/index.d.ts +6 -0
  13. package/dist/errors/index.js +19 -0
  14. package/dist/errors/index.js.map +1 -0
  15. package/dist/errors/lib/FlexPluginError.d.ts +7 -0
  16. package/dist/errors/lib/FlexPluginError.js +54 -0
  17. package/dist/errors/lib/FlexPluginError.js.map +1 -0
  18. package/dist/errors/lib/UserActionError.d.ts +5 -0
  19. package/dist/errors/lib/UserActionError.js +35 -0
  20. package/dist/errors/lib/UserActionError.js.map +1 -0
  21. package/dist/errors/lib/ValidationError.d.ts +3 -0
  22. package/dist/errors/lib/ValidationError.js +30 -0
  23. package/dist/errors/lib/ValidationError.js.map +1 -0
  24. package/dist/exit.d.ts +8 -0
  25. package/dist/exit.js +18 -0
  26. package/dist/exit.js.map +1 -0
  27. package/dist/fs.d.ts +318 -0
  28. package/dist/fs.js +797 -0
  29. package/dist/fs.js.map +1 -0
  30. package/dist/http/index.d.ts +1 -0
  31. package/dist/http/index.js +10 -0
  32. package/dist/http/index.js.map +1 -0
  33. package/dist/http/lib/http.d.ts +114 -0
  34. package/dist/http/lib/http.js +337 -0
  35. package/dist/http/lib/http.js.map +1 -0
  36. package/dist/index.d.ts +25 -0
  37. package/dist/index.js +93 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/keychain.d.ts +25 -0
  40. package/dist/keychain.js +84 -0
  41. package/dist/keychain.js.map +1 -0
  42. package/dist/lodash.d.ts +13 -0
  43. package/dist/lodash.js +30 -0
  44. package/dist/lodash.js.map +1 -0
  45. package/dist/logger/index.d.ts +13 -0
  46. package/dist/logger/index.js +52 -0
  47. package/dist/logger/index.js.map +1 -0
  48. package/dist/logger/lib/boxen.d.ts +38 -0
  49. package/dist/logger/lib/boxen.js +85 -0
  50. package/dist/logger/lib/boxen.js.map +1 -0
  51. package/dist/logger/lib/columnify.d.ts +2 -0
  52. package/dist/logger/lib/columnify.js +8 -0
  53. package/dist/logger/lib/columnify.js.map +1 -0
  54. package/dist/logger/lib/logger.d.ts +157 -0
  55. package/dist/logger/lib/logger.js +354 -0
  56. package/dist/logger/lib/logger.js.map +1 -0
  57. package/dist/logger/lib/strings.d.ts +16 -0
  58. package/dist/logger/lib/strings.js +33 -0
  59. package/dist/logger/lib/strings.js.map +1 -0
  60. package/dist/logger/lib/table.d.ts +25 -0
  61. package/dist/logger/lib/table.js +75 -0
  62. package/dist/logger/lib/table.js.map +1 -0
  63. package/dist/open.d.ts +2 -0
  64. package/dist/open.js +9 -0
  65. package/dist/open.js.map +1 -0
  66. package/dist/prints.d.ts +11 -0
  67. package/dist/prints.js +47 -0
  68. package/dist/prints.js.map +1 -0
  69. package/dist/progress/index.d.ts +1 -0
  70. package/dist/progress/index.js +9 -0
  71. package/dist/progress/index.js.map +1 -0
  72. package/dist/progress/lib/progress.d.ts +21 -0
  73. package/dist/progress/lib/progress.js +118 -0
  74. package/dist/progress/lib/progress.js.map +1 -0
  75. package/dist/questions/index.d.ts +1 -0
  76. package/dist/questions/index.js +12 -0
  77. package/dist/questions/index.js.map +1 -0
  78. package/dist/questions/lib/inquirer.d.ts +39 -0
  79. package/dist/questions/lib/inquirer.js +136 -0
  80. package/dist/questions/lib/inquirer.js.map +1 -0
  81. package/dist/random.d.ts +15 -0
  82. package/dist/random.js +28 -0
  83. package/dist/random.js.map +1 -0
  84. package/dist/runner.d.ts +8 -0
  85. package/dist/runner.js +98 -0
  86. package/dist/runner.js.map +1 -0
  87. package/dist/semver.d.ts +9 -0
  88. package/dist/semver.js +36 -0
  89. package/dist/semver.js.map +1 -0
  90. package/dist/sids.d.ts +48 -0
  91. package/dist/sids.js +50 -0
  92. package/dist/sids.js.map +1 -0
  93. package/dist/spawn/index.d.ts +4 -0
  94. package/dist/spawn/index.js +15 -0
  95. package/dist/spawn/index.js.map +1 -0
  96. package/dist/spawn/lib/node.d.ts +9 -0
  97. package/dist/spawn/lib/node.js +74 -0
  98. package/dist/spawn/lib/node.js.map +1 -0
  99. package/dist/spawn/lib/npm.d.ts +9 -0
  100. package/dist/spawn/lib/npm.js +74 -0
  101. package/dist/spawn/lib/npm.js.map +1 -0
  102. package/dist/spawn/lib/spawn.d.ts +22 -0
  103. package/dist/spawn/lib/spawn.js +111 -0
  104. package/dist/spawn/lib/spawn.js.map +1 -0
  105. package/dist/spawn/lib/yarn.d.ts +9 -0
  106. package/dist/spawn/lib/yarn.js +74 -0
  107. package/dist/spawn/lib/yarn.js.map +1 -0
  108. package/dist/updateNotifier.d.ts +6 -0
  109. package/dist/updateNotifier.js +20 -0
  110. package/dist/updateNotifier.js.map +1 -0
  111. package/dist/urls.d.ts +28 -0
  112. package/dist/urls.js +147 -0
  113. package/dist/urls.js.map +1 -0
  114. package/dist/validators.d.ts +42 -0
  115. package/dist/validators.js +78 -0
  116. package/dist/validators.js.map +1 -0
  117. package/package.json +86 -0
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.yarn = exports.npm = exports.node = exports.spawn = void 0;
7
+ var spawn_1 = require("./lib/spawn");
8
+ Object.defineProperty(exports, "spawn", { enumerable: true, get: function () { return __importDefault(spawn_1).default; } });
9
+ var node_1 = require("./lib/node");
10
+ Object.defineProperty(exports, "node", { enumerable: true, get: function () { return __importDefault(node_1).default; } });
11
+ var npm_1 = require("./lib/npm");
12
+ Object.defineProperty(exports, "npm", { enumerable: true, get: function () { return __importDefault(npm_1).default; } });
13
+ var yarn_1 = require("./lib/yarn");
14
+ Object.defineProperty(exports, "yarn", { enumerable: true, get: function () { return __importDefault(yarn_1).default; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spawn/index.ts"],"names":[],"mappings":";;;;;;AAAA,qCAA0E;AAAjE,+GAAA,OAAO,OAAS;AACzB,mCAA6C;AAApC,6GAAA,OAAO,OAAQ;AACxB,iCAA2C;AAAlC,2GAAA,OAAO,OAAO;AACvB,mCAA6C;AAApC,6GAAA,OAAO,OAAQ"}
@@ -0,0 +1,9 @@
1
+ import { SpawnPromise } from './spawn';
2
+ /**
3
+ * Spawns a node
4
+ *
5
+ * @param args the spawn arguments
6
+ * @param options the spawn options
7
+ */
8
+ declare const node: (args: string[], options?: object) => SpawnPromise;
9
+ export default node;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __generator = (this && this.__generator) || function (thisArg, body) {
31
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
32
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
33
+ function verb(n) { return function (v) { return step([n, v]); }; }
34
+ function step(op) {
35
+ if (f) throw new TypeError("Generator is already executing.");
36
+ while (_) try {
37
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
38
+ if (y = 0, t) op = [op[0] & 2, t.value];
39
+ switch (op[0]) {
40
+ case 0: case 1: t = op; break;
41
+ case 4: _.label++; return { value: op[1], done: false };
42
+ case 5: _.label++; y = op[1]; op = [0]; continue;
43
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
44
+ default:
45
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
46
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
47
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
48
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
49
+ if (t[2]) _.ops.pop();
50
+ _.trys.pop(); continue;
51
+ }
52
+ op = body.call(thisArg, _);
53
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
54
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
55
+ }
56
+ };
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ /* eslint-disable import/no-unused-modules, @typescript-eslint/ban-types, @typescript-eslint/promise-function-async */
59
+ var spawn_1 = __importStar(require("./spawn"));
60
+ /**
61
+ * Spawns a node
62
+ *
63
+ * @param args the spawn arguments
64
+ * @param options the spawn options
65
+ */
66
+ // @ts-ignore
67
+ var node = function (args, options) {
68
+ if (options === void 0) { options = spawn_1.DefaultOptions; }
69
+ return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
70
+ return [2 /*return*/, spawn_1.default('node', args, options)];
71
+ }); });
72
+ };
73
+ exports.default = node;
74
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/spawn/lib/node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sHAAsH;AACtH,+CAA8D;AAE9D;;;;;GAKG;AACH,aAAa;AACb,IAAM,IAAI,GAAG,UAAO,IAAc,EAAE,OAAgC;IAAhC,wBAAA,EAAA,UAAkB,sBAAc;;QAAmB,sBAAA,eAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,EAAA;;CAAA,CAAC;AAEpH,kBAAe,IAAI,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { SpawnPromise } from './spawn';
2
+ /**
3
+ * Spawns an npm
4
+ *
5
+ * @param args the spawn arguments
6
+ * @param options the spawn options
7
+ */
8
+ declare const npm: (args: string[], options?: object) => SpawnPromise;
9
+ export default npm;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __generator = (this && this.__generator) || function (thisArg, body) {
31
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
32
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
33
+ function verb(n) { return function (v) { return step([n, v]); }; }
34
+ function step(op) {
35
+ if (f) throw new TypeError("Generator is already executing.");
36
+ while (_) try {
37
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
38
+ if (y = 0, t) op = [op[0] & 2, t.value];
39
+ switch (op[0]) {
40
+ case 0: case 1: t = op; break;
41
+ case 4: _.label++; return { value: op[1], done: false };
42
+ case 5: _.label++; y = op[1]; op = [0]; continue;
43
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
44
+ default:
45
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
46
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
47
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
48
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
49
+ if (t[2]) _.ops.pop();
50
+ _.trys.pop(); continue;
51
+ }
52
+ op = body.call(thisArg, _);
53
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
54
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
55
+ }
56
+ };
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ /* eslint-disable import/no-unused-modules, @typescript-eslint/ban-types, @typescript-eslint/promise-function-async */
59
+ var spawn_1 = __importStar(require("./spawn"));
60
+ /**
61
+ * Spawns an npm
62
+ *
63
+ * @param args the spawn arguments
64
+ * @param options the spawn options
65
+ */
66
+ // @ts-ignore
67
+ var npm = function (args, options) {
68
+ if (options === void 0) { options = spawn_1.DefaultOptions; }
69
+ return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
70
+ return [2 /*return*/, spawn_1.default('npm', args, options)];
71
+ }); });
72
+ };
73
+ exports.default = npm;
74
+ //# sourceMappingURL=npm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.js","sourceRoot":"","sources":["../../../src/spawn/lib/npm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sHAAsH;AACtH,+CAA8D;AAE9D;;;;;GAKG;AACH,aAAa;AACb,IAAM,GAAG,GAAG,UAAO,IAAc,EAAE,OAAgC;IAAhC,wBAAA,EAAA,UAAkB,sBAAc;;QAAmB,sBAAA,eAAK,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAA;;CAAA,CAAC;AAElH,kBAAe,GAAG,CAAC"}
@@ -0,0 +1,22 @@
1
+ /// <reference types="node" />
2
+ export declare const DefaultOptions: {
3
+ stdio: string;
4
+ };
5
+ export interface SpawnReturn {
6
+ exitCode: number;
7
+ stdout: string;
8
+ stderr: string;
9
+ }
10
+ export declare type SpawnPromise = {
11
+ cancel: () => void;
12
+ kill: (signal?: NodeJS.Signals | number) => boolean;
13
+ } & Promise<SpawnReturn>;
14
+ /**
15
+ * A wrapper for spawn
16
+ *
17
+ * @param cmd the shell command node vs yarn to use
18
+ * @param args the spawn arguments
19
+ * @param options the spawn options
20
+ */
21
+ declare const spawn: (cmd: string, args: string[], options?: object) => SpawnPromise;
22
+ export default spawn;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.DefaultOptions = void 0;
54
+ /* eslint-disable import/no-unused-modules, @typescript-eslint/ban-types, @typescript-eslint/promise-function-async */
55
+ var os_1 = __importDefault(require("os"));
56
+ var execa_1 = __importDefault(require("execa"));
57
+ var logger_1 = require("../../logger");
58
+ exports.DefaultOptions = { stdio: 'inherit' };
59
+ /**
60
+ * A wrapper for spawn
61
+ *
62
+ * @param cmd the shell command node vs yarn to use
63
+ * @param args the spawn arguments
64
+ * @param options the spawn options
65
+ */
66
+ // @ts-ignore
67
+ var spawn = function (cmd, args, options) {
68
+ if (options === void 0) { options = exports.DefaultOptions; }
69
+ return __awaiter(void 0, void 0, void 0, function () {
70
+ var defaultOptions, spawnOptions, subProcess, cancel, kill, promise;
71
+ return __generator(this, function (_a) {
72
+ defaultOptions = {
73
+ shell: process.env.SHELL,
74
+ };
75
+ // see https://stackoverflow.com/questions/37459717/error-spawn-enoent-on-windows/37487465
76
+ if (os_1.default.platform() === 'win32') {
77
+ // @ts-ignore
78
+ defaultOptions.shell = true;
79
+ }
80
+ spawnOptions = __assign(__assign({}, defaultOptions), options);
81
+ subProcess = execa_1.default(cmd, args, spawnOptions);
82
+ cancel = subProcess.cancel, kill = subProcess.kill;
83
+ promise = subProcess
84
+ .then(function (_a) {
85
+ var signal = _a.signal, exitCode = _a.exitCode, stdout = _a.stdout, stderr = _a.stderr;
86
+ if (signal === 'SIGKILL') {
87
+ logger_1.logger.error(logger_1.singleLineString('The script has failed because the process exited too early.', 'This probably means the system ran out of memory or someone called', '`kill -9` on the process.'));
88
+ }
89
+ else if (signal === 'SIGTERM') {
90
+ logger_1.logger.warning(logger_1.singleLineString('The script has failed because the process exited too early.', 'Someone might have called `kill` or `killall`, or the system could', 'be shutting down.'));
91
+ }
92
+ return {
93
+ exitCode: exitCode || 0,
94
+ stdout: stdout || '',
95
+ stderr: stderr || '',
96
+ };
97
+ })
98
+ .catch(function (e) {
99
+ logger_1.logger.debug(e);
100
+ return {
101
+ exitCode: e.exitCode || 1,
102
+ stderr: e.message || '',
103
+ stdout: '',
104
+ };
105
+ });
106
+ return [2 /*return*/, Object.assign(promise, { cancel: cancel, kill: kill })];
107
+ });
108
+ });
109
+ };
110
+ exports.default = spawn;
111
+ //# sourceMappingURL=spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/spawn/lib/spawn.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sHAAsH;AACtH,0CAAoB;AAEpB,gDAA0B;AAE1B,uCAAwD;AAE3C,QAAA,cAAc,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAanD;;;;;;GAMG;AACH,aAAa;AACb,IAAM,KAAK,GAAG,UAAO,GAAW,EAAE,IAAc,EAAE,OAAgC;IAAhC,wBAAA,EAAA,UAAkB,sBAAc;;;;YAC1E,cAAc,GAAG;gBACrB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK;aACzB,CAAC;YACF,0FAA0F;YAC1F,IAAI,YAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;gBAC7B,aAAa;gBACb,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC;aAC7B;YACK,YAAY,yBAAQ,cAAc,GAAK,OAAO,CAAE,CAAC;YAEjD,UAAU,GAAG,eAAK,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YAC1C,MAAM,GAAW,UAAU,OAArB,EAAE,IAAI,GAAK,UAAU,KAAf,CAAgB;YAE9B,OAAO,GAAG,UAAU;iBACvB,IAAI,CAAC,UAAC,EAAoC;oBAAlC,MAAM,YAAA,EAAE,QAAQ,cAAA,EAAE,MAAM,YAAA,EAAE,MAAM,YAAA;gBACvC,IAAI,MAAM,KAAK,SAAS,EAAE;oBACxB,eAAM,CAAC,KAAK,CACV,yBAAgB,CACd,6DAA6D,EAC7D,oEAAoE,EACpE,2BAA2B,CAC5B,CACF,CAAC;iBACH;qBAAM,IAAI,MAAM,KAAK,SAAS,EAAE;oBAC/B,eAAM,CAAC,OAAO,CACZ,yBAAgB,CACd,6DAA6D,EAC7D,oEAAoE,EACpE,mBAAmB,CACpB,CACF,CAAC;iBACH;gBAED,OAAO;oBACL,QAAQ,EAAE,QAAQ,IAAI,CAAC;oBACvB,MAAM,EAAE,MAAM,IAAI,EAAE;oBACpB,MAAM,EAAE,MAAM,IAAI,EAAE;iBACrB,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,UAAC,CAAC;gBACP,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAEhB,OAAO;oBACL,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC;oBACzB,MAAM,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;oBACvB,MAAM,EAAE,EAAE;iBACX,CAAC;YACJ,CAAC,CAAC,CAAC;YAEL,sBAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,QAAA,EAAE,IAAI,MAAA,EAAE,CAAC,EAAC;;;CACjD,CAAC;AAEF,kBAAe,KAAK,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { SpawnPromise } from './spawn';
2
+ /**
3
+ * Spawns a yarn
4
+ *
5
+ * @param args the spawn arguments
6
+ * @param options the spawn options
7
+ */
8
+ declare const yarn: (args: string[], options?: object) => SpawnPromise;
9
+ export default yarn;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __generator = (this && this.__generator) || function (thisArg, body) {
31
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
32
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
33
+ function verb(n) { return function (v) { return step([n, v]); }; }
34
+ function step(op) {
35
+ if (f) throw new TypeError("Generator is already executing.");
36
+ while (_) try {
37
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
38
+ if (y = 0, t) op = [op[0] & 2, t.value];
39
+ switch (op[0]) {
40
+ case 0: case 1: t = op; break;
41
+ case 4: _.label++; return { value: op[1], done: false };
42
+ case 5: _.label++; y = op[1]; op = [0]; continue;
43
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
44
+ default:
45
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
46
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
47
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
48
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
49
+ if (t[2]) _.ops.pop();
50
+ _.trys.pop(); continue;
51
+ }
52
+ op = body.call(thisArg, _);
53
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
54
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
55
+ }
56
+ };
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ /* eslint-disable import/no-unused-modules, @typescript-eslint/ban-types, @typescript-eslint/promise-function-async */
59
+ var spawn_1 = __importStar(require("./spawn"));
60
+ /**
61
+ * Spawns a yarn
62
+ *
63
+ * @param args the spawn arguments
64
+ * @param options the spawn options
65
+ */
66
+ // @ts-ignore
67
+ var yarn = function (args, options) {
68
+ if (options === void 0) { options = spawn_1.DefaultOptions; }
69
+ return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
70
+ return [2 /*return*/, spawn_1.default('yarn', args, options)];
71
+ }); });
72
+ };
73
+ exports.default = yarn;
74
+ //# sourceMappingURL=yarn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yarn.js","sourceRoot":"","sources":["../../../src/spawn/lib/yarn.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sHAAsH;AACtH,+CAA8D;AAE9D;;;;;GAKG;AACH,aAAa;AACb,IAAM,IAAI,GAAG,UAAO,IAAc,EAAE,OAAgC;IAAhC,wBAAA,EAAA,UAAkB,sBAAc;;QAAmB,sBAAA,eAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,EAAA;;CAAA,CAAC;AAEpH,kBAAe,IAAI,CAAC"}
@@ -0,0 +1,6 @@
1
+ import updateNotifier from 'update-notifier';
2
+ export default updateNotifier;
3
+ /**
4
+ * Checks for update for the package
5
+ */
6
+ export declare const checkForUpdate: (customMessage?: updateNotifier.NotifyOptions | undefined) => void;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.checkForUpdate = void 0;
7
+ var update_notifier_1 = __importDefault(require("update-notifier"));
8
+ var fs_1 = require("./fs");
9
+ exports.default = update_notifier_1.default;
10
+ /**
11
+ * Checks for update for the package
12
+ */
13
+ /* istanbul ignore next */
14
+ // eslint-disable-next-line import/no-unused-modules
15
+ var checkForUpdate = function (customMessage) {
16
+ var pkg = module.parent ? fs_1.readPackageJson(fs_1.findUp(module.parent.filename, 'package.json')) : fs_1.readAppPackageJson();
17
+ update_notifier_1.default({ pkg: pkg }).notify(customMessage);
18
+ };
19
+ exports.checkForUpdate = checkForUpdate;
20
+ //# sourceMappingURL=updateNotifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateNotifier.js","sourceRoot":"","sources":["../src/updateNotifier.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAgE;AAEhE,2BAAmE;AAEnE,kBAAe,yBAAc,CAAC;AAE9B;;GAEG;AACH,0BAA0B;AAC1B,oDAAoD;AAC7C,IAAM,cAAc,GAAG,UAAC,aAA6B;IAC1D,IAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAe,CAAC,WAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAkB,EAAE,CAAC;IAEnH,yBAAc,CAAC,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB"}
package/dist/urls.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ import url from 'url';
2
+ export interface ServiceUrl {
3
+ url: string;
4
+ port: number;
5
+ host: string;
6
+ }
7
+ interface InternalServiceUrls {
8
+ local: ServiceUrl;
9
+ network: ServiceUrl;
10
+ }
11
+ export declare const DEFAULT_PORT = 3000;
12
+ /**
13
+ * Returns the default port
14
+ * @param port optional port parameter
15
+ */
16
+ export declare const getDefaultPort: (port?: string | undefined) => number;
17
+ /**
18
+ * Finds the first available
19
+ *
20
+ * @param startPort
21
+ */
22
+ export declare const findPort: (startPort?: number) => Promise<number>;
23
+ /**
24
+ * Returns the local and network urls
25
+ * @param port the port the server is running on
26
+ */
27
+ export declare const getLocalAndNetworkUrls: (port: number) => InternalServiceUrls;
28
+ export default url;
package/dist/urls.js ADDED
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.getLocalAndNetworkUrls = exports.findPort = exports.getDefaultPort = exports.DEFAULT_PORT = void 0;
43
+ var url_1 = __importDefault(require("url"));
44
+ var net_1 = __importDefault(require("net"));
45
+ var address_1 = __importDefault(require("address"));
46
+ var env_1 = require("./env");
47
+ exports.DEFAULT_PORT = 3000;
48
+ /**
49
+ * Finds whether the port is available
50
+ *
51
+ * @param port the port to check
52
+ * @private
53
+ */
54
+ /* istanbul ignore next */
55
+ var _findPort = function (port) { return __awaiter(void 0, void 0, void 0, function () {
56
+ return __generator(this, function (_a) {
57
+ return [2 /*return*/, new Promise(function (resolve, reject) {
58
+ var server = net_1.default.createConnection({ port: port });
59
+ /*
60
+ * If we can connect, port is not free
61
+ * If we cannot connect (i.e. on('error')), then port is free
62
+ */
63
+ server
64
+ .on('connect', function () {
65
+ server.end();
66
+ reject();
67
+ })
68
+ .on('error', function () { return resolve(port); });
69
+ })];
70
+ });
71
+ }); };
72
+ /**
73
+ * Returns the default port
74
+ * @param port optional port parameter
75
+ */
76
+ var getDefaultPort = function (port) {
77
+ if (port) {
78
+ var numeric = parseInt(port, 10);
79
+ if (isNaN(numeric)) {
80
+ return exports.DEFAULT_PORT;
81
+ }
82
+ return numeric;
83
+ }
84
+ return exports.DEFAULT_PORT;
85
+ };
86
+ exports.getDefaultPort = getDefaultPort;
87
+ /**
88
+ * Finds the first available
89
+ *
90
+ * @param startPort
91
+ */
92
+ /* istanbul ignore next */
93
+ var findPort = function (startPort) {
94
+ if (startPort === void 0) { startPort = 3000; }
95
+ return __awaiter(void 0, void 0, void 0, function () {
96
+ var e_1;
97
+ return __generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ _a.trys.push([0, 2, , 3]);
101
+ return [4 /*yield*/, Promise.all([_findPort(startPort)])];
102
+ case 1:
103
+ _a.sent();
104
+ return [2 /*return*/, startPort];
105
+ case 2:
106
+ e_1 = _a.sent();
107
+ return [2 /*return*/, exports.findPort(startPort + 1)];
108
+ case 3: return [2 /*return*/];
109
+ }
110
+ });
111
+ });
112
+ };
113
+ exports.findPort = findPort;
114
+ /**
115
+ * Returns the local and network urls
116
+ * @param port the port the server is running on
117
+ */
118
+ var getLocalAndNetworkUrls = function (port) {
119
+ var protocol = env_1.env.isHTTPS() ? 'https' : 'http';
120
+ var localUrl = url_1.default.format({
121
+ protocol: protocol,
122
+ port: port,
123
+ hostname: 'localhost',
124
+ pathname: '/',
125
+ });
126
+ var networkUrl = url_1.default.format({
127
+ protocol: protocol,
128
+ port: port,
129
+ hostname: address_1.default.ip(),
130
+ pathname: '/',
131
+ });
132
+ return {
133
+ local: {
134
+ url: localUrl,
135
+ port: port,
136
+ host: '0.0.0.0',
137
+ },
138
+ network: {
139
+ url: networkUrl,
140
+ port: port,
141
+ host: address_1.default.ip(),
142
+ },
143
+ };
144
+ };
145
+ exports.getLocalAndNetworkUrls = getLocalAndNetworkUrls;
146
+ exports.default = url_1.default;
147
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAsB;AACtB,4CAAsB;AAEtB,oDAA8B;AAE9B,6BAA4B;AAYf,QAAA,YAAY,GAAG,IAAI,CAAC;AAEjC;;;;;GAKG;AACH,0BAA0B;AAC1B,IAAM,SAAS,GAAG,UAAO,IAAY;;QACnC,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;gBACjC,IAAM,MAAM,GAAG,aAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC;gBAE9C;;;mBAGG;gBACH,MAAM;qBACH,EAAE,CAAC,SAAS,EAAE;oBACb,MAAM,CAAC,GAAG,EAAE,CAAC;oBACb,MAAM,EAAE,CAAC;gBACX,CAAC,CAAC;qBACD,EAAE,CAAC,OAAO,EAAE,cAAM,OAAA,OAAO,CAAC,IAAI,CAAC,EAAb,CAAa,CAAC,CAAC;YACtC,CAAC,CAAC,EAAC;;KACJ,CAAC;AAEF;;;GAGG;AACI,IAAM,cAAc,GAAG,UAAC,IAAa;IAC1C,IAAI,IAAI,EAAE;QACR,IAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;YAClB,OAAO,oBAAY,CAAC;SACrB;QAED,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,oBAAY,CAAC;AACtB,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB;AAEF;;;;GAIG;AACH,0BAA0B;AACnB,IAAM,QAAQ,GAAG,UAAO,SAAwB;IAAxB,0BAAA,EAAA,gBAAwB;;;;;;;oBAEnD,qBAAM,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAA;;oBAAzC,SAAyC,CAAC;oBAC1C,sBAAO,SAAS,EAAC;;;oBAEjB,sBAAO,gBAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,EAAC;;;;;CAElC,CAAC;AAPW,QAAA,QAAQ,YAOnB;AAEF;;;GAGG;AACI,IAAM,sBAAsB,GAAG,UAAC,IAAY;IACjD,IAAM,QAAQ,GAAG,SAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAElD,IAAM,QAAQ,GAAG,aAAG,CAAC,MAAM,CAAC;QAC1B,QAAQ,UAAA;QACR,IAAI,MAAA;QACJ,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC;IACH,IAAM,UAAU,GAAG,aAAG,CAAC,MAAM,CAAC;QAC5B,QAAQ,UAAA;QACR,IAAI,MAAA;QACJ,QAAQ,EAAE,iBAAO,CAAC,EAAE,EAAE;QACtB,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE;YACL,GAAG,EAAE,QAAQ;YACb,IAAI,MAAA;YACJ,IAAI,EAAE,SAAS;SAChB;QACD,OAAO,EAAE;YACP,GAAG,EAAE,UAAU;YACf,IAAI,MAAA;YACJ,IAAI,EAAE,iBAAO,CAAC,EAAE,EAAE;SACnB;KACF,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,sBAAsB,0BA4BjC;AAEF,kBAAe,aAAG,CAAC"}