@01/launcher 1.0.15 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Nodejs Process Launcher
2
2
  ## Usage
3
3
  ```ts
4
- import {launch} from '@1/launcher'
4
+ import {launch} from '@01/launcher'
5
5
 
6
6
  await launch({
7
7
  cmds:['echo', 'Hello']
package/dist/index.js CHANGED
@@ -1,310 +1,109 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory();
4
- else if(typeof define === 'function' && define.amd)
5
- define([], factory);
6
- else if(typeof exports === 'object')
7
- exports["index"] = factory();
8
- else
9
- root["index"] = factory();
10
- })(global, () => {
11
- return /******/ (() => { // webpackBootstrap
12
- /******/ "use strict";
13
- /******/ var __webpack_modules__ = ({
14
-
15
- /***/ "chalk":
16
- /***/ ((module) => {
17
-
18
- module.exports = require("chalk");
19
-
20
- /***/ }),
21
-
22
- /***/ "dotenv":
23
- /***/ ((module) => {
24
-
25
- module.exports = require("dotenv");
26
-
27
- /***/ }),
28
-
29
- /***/ "minimist":
30
- /***/ ((module) => {
31
-
32
- module.exports = require("minimist");
33
-
34
- /***/ })
35
-
36
- /******/ });
37
- /************************************************************************/
38
- /******/ // The module cache
39
- /******/ var __webpack_module_cache__ = {};
40
- /******/
41
- /******/ // The require function
42
- /******/ function __webpack_require__(moduleId) {
43
- /******/ // Check if module is in cache
44
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
45
- /******/ if (cachedModule !== undefined) {
46
- /******/ return cachedModule.exports;
47
- /******/ }
48
- /******/ // Create a new module (and put it into the cache)
49
- /******/ var module = __webpack_module_cache__[moduleId] = {
50
- /******/ // no module.id needed
51
- /******/ // no module.loaded needed
52
- /******/ exports: {}
53
- /******/ };
54
- /******/
55
- /******/ // Execute the module function
56
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
57
- /******/
58
- /******/ // Return the exports of the module
59
- /******/ return module.exports;
60
- /******/ }
61
- /******/
62
- /************************************************************************/
63
- /******/ /* webpack/runtime/define property getters */
64
- /******/ (() => {
65
- /******/ // define getter functions for harmony exports
66
- /******/ __webpack_require__.d = (exports, definition) => {
67
- /******/ for(var key in definition) {
68
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
69
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
70
- /******/ }
71
- /******/ }
72
- /******/ };
73
- /******/ })();
74
- /******/
75
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
76
- /******/ (() => {
77
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
78
- /******/ })();
79
- /******/
80
- /******/ /* webpack/runtime/make namespace object */
81
- /******/ (() => {
82
- /******/ // define __esModule on exports
83
- /******/ __webpack_require__.r = (exports) => {
84
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
85
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
86
- /******/ }
87
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
88
- /******/ };
89
- /******/ })();
90
- /******/
91
- /************************************************************************/
92
- var __webpack_exports__ = {};
93
- // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
94
- (() => {
95
- // ESM COMPAT FLAG
96
- __webpack_require__.r(__webpack_exports__);
97
-
98
- // EXPORTS
99
- __webpack_require__.d(__webpack_exports__, {
100
- launch: () => (/* reexport */ launch)
101
- });
102
-
103
- ;// CONCATENATED MODULE: external "tslib"
104
- const external_tslib_namespaceObject = require("tslib");
105
- ;// CONCATENATED MODULE: external "child_process"
106
- const external_child_process_namespaceObject = require("child_process");
107
- ;// CONCATENATED MODULE: external "readline"
108
- const external_readline_namespaceObject = require("readline");
109
- ;// CONCATENATED MODULE: external "fs"
110
- const external_fs_namespaceObject = require("fs");
111
- ;// CONCATENATED MODULE: external "path"
112
- const external_path_namespaceObject = require("path");
113
- ;// CONCATENATED MODULE: ./src/terminal.ts
114
- var terminal = {
115
- log: function () {
116
- var args = [];
117
- for (var _i = 0; _i < arguments.length; _i++) {
118
- args[_i] = arguments[_i];
119
- }
120
- process.stdout.write(args.reduce(function (acc, item) { return "".concat(acc, " ").concat(item); }) + "\n", "utf-8");
121
- }
122
- };
123
- /* harmony default export */ const src_terminal = (terminal);
124
-
125
- ;// CONCATENATED MODULE: ./src/launch-base.ts
126
-
127
- /**
128
- * Author : Nidin Vinayakan <01@01alchemist.com>
129
- */
130
- var minimist = __webpack_require__("minimist");
131
- var chalk = __webpack_require__("chalk");
132
-
133
-
134
-
135
-
136
-
137
- var cursorTo = external_readline_namespaceObject.cursorTo;
138
- var spawn = external_child_process_namespaceObject.spawn;
139
- var w = chalk.white, r = chalk.red, bgR = chalk.bgRed;
140
- var defaultOptions = {
141
- mode: "program",
142
- stdio: "inherit",
143
- exitProcessOnClose: false,
144
- };
145
- var baseDir = process.cwd();
146
- var envPath = "".concat(baseDir, "/env/").concat(process.env.USER, ".env");
147
- if (!external_fs_namespaceObject.existsSync(envPath)) {
148
- envPath = "".concat(baseDir, "/.env");
1
+ import * as S from "child_process";
2
+ import * as E from "readline";
3
+ import * as O from "fs";
4
+ import * as j from "path";
5
+ const l = {
6
+ log: (...t) => {
7
+ process.stdout.write(
8
+ t.reduce((o, e) => `${o} ${e}`) + `
9
+ `,
10
+ "utf-8"
11
+ );
12
+ }
13
+ }, k = require("minimist"), A = require("chalk"), { cursorTo: P } = E, { spawn: R } = S, { white: w, red: y, bgRed: v } = A, $ = {
14
+ mode: "program",
15
+ stdio: "inherit",
16
+ exitProcessOnClose: !1
17
+ }, g = process.cwd();
18
+ let p = `${g}/env/${process.env.USER}.env`;
19
+ O.existsSync(p) || (p = `${g}/.env`);
20
+ O.existsSync(p) && (l.log(`Loading env vars from: ${p}`), require("dotenv").config({
21
+ path: p
22
+ }));
23
+ function x(t, o) {
24
+ return Array.isArray(t) && Array.isArray(o) ? [...t, ...o] : typeof t == "object" && typeof o == "object" ? {
25
+ ...t,
26
+ ...o
27
+ } : o;
149
28
  }
150
- if (external_fs_namespaceObject.existsSync(envPath)) {
151
- src_terminal.log("Loading env vars from: ".concat(envPath));
152
- (__webpack_require__("dotenv").config)({
153
- path: envPath,
154
- });
29
+ function C(t, o, e, c) {
30
+ let n;
31
+ return o && (n = o), e && (n = x(n, e)), c && (n = x(n, c)), {
32
+ name: t,
33
+ value: n
34
+ };
155
35
  }
156
- function mergeValue(value1, value2) {
157
- if (Array.isArray(value1) && Array.isArray(value2)) {
158
- return (0,external_tslib_namespaceObject.__spreadArray)((0,external_tslib_namespaceObject.__spreadArray)([], value1, true), value2, true);
159
- }
160
- else if (typeof value1 === "object" && typeof value2 === "object") {
161
- return (0,external_tslib_namespaceObject.__assign)((0,external_tslib_namespaceObject.__assign)({}, value1), value2);
162
- }
163
- return value2;
36
+ function D(t = {}, o = []) {
37
+ const e = k(o);
38
+ return Object.keys($).concat(Object.keys(t)).concat(Object.keys(e)).map((i) => C(
39
+ i,
40
+ $[i],
41
+ t[i],
42
+ e[i]
43
+ )).reduce(
44
+ (i, s) => (i[s.name] = s.value, i),
45
+ {}
46
+ );
164
47
  }
165
- function mergeOptions(name, defaultOption, option, cliOption) {
166
- var value;
167
- if (defaultOption) {
168
- value = defaultOption;
48
+ async function q(t = {}) {
49
+ const o = t.mode === "cli" ? process.argv.slice(2) : [], e = D(t, o);
50
+ e.env && (e.env instanceof Array ? e.env : e.env.split(",")).forEach((d) => {
51
+ const [f, m] = d.split("="), r = m.indexOf("process.env.") > -1;
52
+ process.env[f] = r ? process.env[m.slice(12)] : m;
53
+ });
54
+ const c = e.cmds || process.argv.slice(2).filter((a) => a.indexOf("--cwd") === -1);
55
+ let n = g;
56
+ if (e.cwd && (n = e.cwd[0] === "/" ? e.cwd : j.resolve(g, e.cwd)), !c || c.length === 0) {
57
+ const a = e.mode === "cli", d = "Oops 😬, Did you forgot to pass";
58
+ if (a) {
59
+ const f = y(
60
+ `
61
+ ${d} ${v(
62
+ w(" program ")
63
+ )}?. Please tell me, which program you want to launch!
64
+ `
65
+ ) + `
66
+ Example: launch echo "Hello World"
67
+ `;
68
+ l.log(f), process.exit(1);
69
+ } else {
70
+ const f = y(
71
+ `${d} option ${v(
72
+ w(" cmds ")
73
+ )}?. Please tell me, which program you want to launch!
74
+ `
75
+ ) + `
76
+ Example: launch({cmds:["echo", "Hello World"]});
77
+ `;
78
+ throw new Error(f);
169
79
  }
170
- if (option) {
171
- value = mergeValue(value, option);
172
- }
173
- if (cliOption) {
174
- value = mergeValue(value, cliOption);
175
- }
176
- return {
177
- name: name,
178
- value: value,
179
- };
180
- }
181
- function getOptions(_options, args) {
182
- if (_options === void 0) { _options = {}; }
183
- if (args === void 0) { args = []; }
184
- var cliArgs = minimist(args);
185
- var optionNames = Object.keys(defaultOptions)
186
- .concat(Object.keys(_options))
187
- .concat(Object.keys(cliArgs));
188
- var mergedOptions = optionNames.map(function (optionName) {
189
- return mergeOptions(optionName, defaultOptions[optionName], _options[optionName], cliArgs[optionName]);
80
+ }
81
+ e.silent || (l.log(
82
+ "###############################################################################################################"
83
+ ), l.log("# 🚀 Launching : " + c.join(" ")), l.log("# 📂 CWD : " + n), l.log(
84
+ "###############################################################################################################"
85
+ ));
86
+ const { stdio: u, shell: i } = e, s = R(c[0], c.slice(1), {
87
+ stdio: u,
88
+ cwd: n,
89
+ shell: i
90
+ });
91
+ s.name = c[0];
92
+ function b(a) {
93
+ s && (P(process.stdout, 0), l.log(`Killing [${s.name}] instance.pid: ${s.pid}`), s.kill(a || "SIGTERM"));
94
+ }
95
+ return process.on("SIGINT", b), new Promise(function(a, d) {
96
+ let f = "", m = "";
97
+ u !== "inherit" && (s.stdout && s.stdout.on("data", function(r) {
98
+ const h = r.toString();
99
+ h && (f += h);
100
+ }), s.stderr && s.stderr.on("data", function(r) {
101
+ m = r.toString();
102
+ })), s.on("close", async (r) => {
103
+ e.exitProcessOnClose ? (l.log(`[${s.name}] exit code:${r}`), process.exit(r || void 0)) : (l.log(`[${s.name}] exit code:${r}`), r === 0 ? a(f) : d(m));
190
104
  });
191
- var flattenOptions = mergedOptions.reduce(function (acc, option) {
192
- acc[option.name] = option.value;
193
- return acc;
194
- }, {});
195
- return flattenOptions;
105
+ });
196
106
  }
197
- var launcher = {
198
- instances: [],
199
- terminateAll: function (signal) {
200
- launcher.instances.forEach(function (_instance) {
201
- src_terminal.log("Terminating [".concat(_instance.name, "] instance.pid: ").concat(_instance.pid));
202
- _instance.kill(signal || "SIGTERM");
203
- });
204
- },
107
+ export {
108
+ q as launch
205
109
  };
206
- function launch(_options) {
207
- if (_options === void 0) { _options = {}; }
208
- return (0,external_tslib_namespaceObject.__awaiter)(this, void 0, void 0, function () {
209
- function exit(signal) {
210
- if (instance) {
211
- cursorTo(process.stdout, 0);
212
- src_terminal.log("Killing [".concat(instance.name, "] instance.pid: ").concat(instance.pid));
213
- instance.kill(signal || "SIGTERM");
214
- }
215
- }
216
- var args, options, env, cmds, cwd, isCli, title, message, message, stdio, shell, instance;
217
- return (0,external_tslib_namespaceObject.__generator)(this, function (_a) {
218
- args = _options.mode === "cli" ? process.argv.slice(2) : [];
219
- options = getOptions(_options, args);
220
- if (options.env) {
221
- env = options.env instanceof Array ? options.env : options.env.split(",");
222
- env.forEach(function (element) {
223
- var _a = element.split("="), key = _a[0], value = _a[1];
224
- var isReference = value.indexOf("process.env.") > -1;
225
- process.env[key] = isReference ? process.env[value.slice(12)] : value;
226
- });
227
- }
228
- cmds = options.cmds ||
229
- process.argv.slice(2).filter(function (arg) { return arg.indexOf("--cwd") === -1; });
230
- cwd = baseDir;
231
- if (options.cwd) {
232
- cwd =
233
- options.cwd[0] === "/" ? options.cwd : external_path_namespaceObject.resolve(baseDir, options.cwd);
234
- }
235
- if (!cmds || cmds.length === 0) {
236
- isCli = options.mode === "cli";
237
- title = "Oops 😬, Did you forgot to pass";
238
- if (isCli) {
239
- message = r("\n ".concat(title, " ").concat(bgR(w(" program ")), "?. Please tell me, which program you want to launch!\n")) + "\n Example: launch echo \"Hello World\"\n";
240
- src_terminal.log(message);
241
- process.exit(1);
242
- }
243
- else {
244
- message = r("".concat(title, " option ").concat(bgR(w(" cmds ")), "?. Please tell me, which program you want to launch!\n")) + "\n Example: launch({cmds:[\"echo\", \"Hello World\"]});\n";
245
- throw new Error(message);
246
- }
247
- }
248
- if (!options.silent) {
249
- src_terminal.log("###############################################################################################################");
250
- src_terminal.log("# 🚀 Launching : " + cmds.join(" "));
251
- src_terminal.log("# 📂 CWD : " + cwd);
252
- src_terminal.log("###############################################################################################################");
253
- }
254
- stdio = options.stdio, shell = options.shell;
255
- instance = spawn(cmds[0], cmds.slice(1), {
256
- stdio: stdio,
257
- cwd: cwd,
258
- shell: shell,
259
- });
260
- instance.name = cmds[0];
261
- launcher.instances.push(instance);
262
- process.on("SIGINT", exit);
263
- return [2 /*return*/, new Promise(function (resolve, reject) {
264
- var _this = this;
265
- var output = "";
266
- var lastErrorData = "";
267
- if (stdio !== "inherit") {
268
- if (instance.stdout) {
269
- instance.stdout.on("data", function (data) {
270
- var dataStr = data.toString();
271
- if (dataStr) {
272
- output += dataStr;
273
- }
274
- });
275
- }
276
- if (instance.stderr) {
277
- instance.stderr.on("data", function (data) {
278
- lastErrorData = data.toString();
279
- });
280
- }
281
- }
282
- instance.on("close", function (code) { return (0,external_tslib_namespaceObject.__awaiter)(_this, void 0, void 0, function () {
283
- return (0,external_tslib_namespaceObject.__generator)(this, function (_a) {
284
- if (options.exitProcessOnClose) {
285
- src_terminal.log("[".concat(instance.name, "] exit code:").concat(code));
286
- process.exit(code ? code : undefined);
287
- }
288
- else {
289
- src_terminal.log("[".concat(instance.name, "] exit code:").concat(code));
290
- code === 0 ? resolve(output) : reject(lastErrorData);
291
- }
292
- return [2 /*return*/];
293
- });
294
- }); });
295
- })];
296
- });
297
- });
298
- }
299
- /* harmony default export */ const launch_base = ((/* unused pure expression or super */ null && (launch)));
300
-
301
- ;// CONCATENATED MODULE: ./src/index.ts
302
-
303
-
304
- })();
305
-
306
- /******/ return __webpack_exports__;
307
- /******/ })()
308
- ;
309
- });
310
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFRLENBQUMsSUFBSSx5QkFBZSxJQUFJLENBQUUsQ0FBQyxDQUFDO2dDQUNyRCxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDdEQ7Ozt5QkFDRixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLEVBQUM7OztDQUNKO0FBRUQsa0RBQWUsc0RBQU0sSUFBQzs7O0FDMU9RIiwic291cmNlcyI6WyIvVXNlcnMvbmlkaW4vd29ya3NwYWNlL3ByaXZhdGUvbGF1bmNoZXIvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwiL1VzZXJzL25pZGluL3dvcmtzcGFjZS9wcml2YXRlL2xhdW5jaGVyL2V4dGVybmFsJTIwY29tbW9uanMlMjAlMjJjaGFsayUyMiIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci9leHRlcm5hbCUyMGNvbW1vbmpzJTIwJTIyZG90ZW52JTIyIiwiL1VzZXJzL25pZGluL3dvcmtzcGFjZS9wcml2YXRlL2xhdW5jaGVyL2V4dGVybmFsJTIwY29tbW9uanMlMjAlMjJtaW5pbWlzdCUyMiIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci93ZWJwYWNrL2Jvb3RzdHJhcCIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lJTIwcHJvcGVydHklMjBnZXR0ZXJzIiwiL1VzZXJzL25pZGluL3dvcmtzcGFjZS9wcml2YXRlL2xhdW5jaGVyL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSUyMHNob3J0aGFuZCIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci93ZWJwYWNrL3J1bnRpbWUvbWFrZSUyMG5hbWVzcGFjZSUyMG9iamVjdCIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci9leHRlcm5hbCUyMGNvbW1vbmpzJTIwJTIydHNsaWIlMjIiLCIvVXNlcnMvbmlkaW4vd29ya3NwYWNlL3ByaXZhdGUvbGF1bmNoZXIvZXh0ZXJuYWwlMjBub2RlLWNvbW1vbmpzJTIwJTIyY2hpbGRfcHJvY2VzcyUyMiIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci9leHRlcm5hbCUyMG5vZGUtY29tbW9uanMlMjAlMjJyZWFkbGluZSUyMiIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci9leHRlcm5hbCUyMG5vZGUtY29tbW9uanMlMjAlMjJmcyUyMiIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci9leHRlcm5hbCUyMG5vZGUtY29tbW9uanMlMjAlMjJwYXRoJTIyIiwiL1VzZXJzL25pZGluL3dvcmtzcGFjZS9wcml2YXRlL2xhdW5jaGVyL3NyYy90ZXJtaW5hbC50cyIsIi9Vc2Vycy9uaWRpbi93b3Jrc3BhY2UvcHJpdmF0ZS9sYXVuY2hlci9zcmMvbGF1bmNoLWJhc2UudHMiLCIvVXNlcnMvbmlkaW4vd29ya3NwYWNlL3ByaXZhdGUvbGF1bmNoZXIvc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImluZGV4XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImluZGV4XCJdID0gZmFjdG9yeSgpO1xufSkoZ2xvYmFsLCAoKSA9PiB7XG5yZXR1cm4gIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY2hhbGtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZG90ZW52XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1pbmltaXN0XCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiY29uc3QgX19XRUJQQUNLX05BTUVTUEFDRV9PQkpFQ1RfXyA9IHJlcXVpcmUoXCJ0c2xpYlwiKTsiLCJjb25zdCBfX1dFQlBBQ0tfTkFNRVNQQUNFX09CSkVDVF9fID0gcmVxdWlyZShcImNoaWxkX3Byb2Nlc3NcIik7IiwiY29uc3QgX19XRUJQQUNLX05BTUVTUEFDRV9PQkpFQ1RfXyA9IHJlcXVpcmUoXCJyZWFkbGluZVwiKTsiLCJjb25zdCBfX1dFQlBBQ0tfTkFNRVNQQUNFX09CSkVDVF9fID0gcmVxdWlyZShcImZzXCIpOyIsImNvbnN0IF9fV0VCUEFDS19OQU1FU1BBQ0VfT0JKRUNUX18gPSByZXF1aXJlKFwicGF0aFwiKTsiLCJleHBvcnQgY29uc3QgdGVybWluYWwgPSB7XG4gIGxvZzogKC4uLmFyZ3M6IGFueSkgPT4ge1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKFxuICAgICAgYXJncy5yZWR1Y2UoKGFjYzogc3RyaW5nLCBpdGVtOiBhbnkpID0+IGAke2FjY30gJHtpdGVtfWApICsgXCJcXG5cIixcbiAgICAgIFwidXRmLThcIlxuICAgICk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB0ZXJtaW5hbDtcbiIsIi8qKlxuICogQXV0aG9yIDogTmlkaW4gVmluYXlha2FuIDwwMUAwMWFsY2hlbWlzdC5jb20+XG4gKi9cbmNvbnN0IG1pbmltaXN0ID0gcmVxdWlyZShcIm1pbmltaXN0XCIpO1xuY29uc3QgY2hhbGsgPSByZXF1aXJlKFwiY2hhbGtcIik7XG5pbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgKiBhcyByZWFkbGluZSBmcm9tIFwicmVhZGxpbmVcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHRlcm1pbmFsIGZyb20gXCIuL3Rlcm1pbmFsXCI7XG5cbmNvbnN0IHsgY3Vyc29yVG8gfSA9IHJlYWRsaW5lO1xuY29uc3QgeyBzcGF3biB9ID0gY2hpbGRfcHJvY2VzcztcbmNvbnN0IHsgd2hpdGU6IHcsIHJlZDogciwgYmdSZWQ6IGJnUiB9ID0gY2hhbGs7XG5cbnR5cGUgU3Bhd25PcHRpb25zID0gY2hpbGRfcHJvY2Vzcy5TcGF3bk9wdGlvbnM7XG5cbmludGVyZmFjZSBJbnN0YW5jZSBleHRlbmRzIGNoaWxkX3Byb2Nlc3MuQ2hpbGRQcm9jZXNzIHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG50eXBlIE9iamVjdE1hcCA9IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH07XG5cbnR5cGUgTGF1bmNoTW9kZSA9IFwicHJvZ3JhbVwiIHwgXCJjbGlcIjtcblxudHlwZSBPcHRpb25zID0ge1xuICBlbnY/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgY21kcz86IHN0cmluZ1tdO1xuICBjd2Q/OiBzdHJpbmc7XG4gIG1vZGU/OiBMYXVuY2hNb2RlO1xuICBleGl0UHJvY2Vzc09uQ2xvc2U/OiBib29sZWFuO1xuICBzaWxlbnQ/OiBib29sZWFuO1xufSAmIFNwYXduT3B0aW9ucztcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE9iamVjdE1hcCA9IHtcbiAgbW9kZTogXCJwcm9ncmFtXCIsXG4gIHN0ZGlvOiBcImluaGVyaXRcIixcbiAgZXhpdFByb2Nlc3NPbkNsb3NlOiBmYWxzZSxcbn07XG5cbmNvbnN0IGJhc2VEaXIgPSBwcm9jZXNzLmN3ZCgpO1xubGV0IGVudlBhdGggPSBgJHtiYXNlRGlyfS9lbnYvJHtwcm9jZXNzLmVudi5VU0VSfS5lbnZgO1xuaWYgKCFmcy5leGlzdHNTeW5jKGVudlBhdGgpKSB7XG4gIGVudlBhdGggPSBgJHtiYXNlRGlyfS8uZW52YDtcbn1cbmlmIChmcy5leGlzdHNTeW5jKGVudlBhdGgpKSB7XG4gIHRlcm1pbmFsLmxvZyhgTG9hZGluZyBlbnYgdmFycyBmcm9tOiAke2VudlBhdGh9YCk7XG5cbiAgcmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoe1xuICAgIHBhdGg6IGVudlBhdGgsXG4gIH0pO1xufVxuXG50eXBlIE1lcmdlZE9wdGlvbiA9IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogYW55IH07XG50eXBlIE1lcmdlZE9wdGlvbnMgPSBNZXJnZWRPcHRpb25bXTtcblxuZnVuY3Rpb24gbWVyZ2VWYWx1ZSh2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUxKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlMikpIHtcbiAgICByZXR1cm4gWy4uLnZhbHVlMSwgLi4udmFsdWUyXTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZTIgPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmFsdWUxLFxuICAgICAgLi4udmFsdWUyLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHZhbHVlMjtcbn1cbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyhcbiAgbmFtZTogc3RyaW5nLFxuICBkZWZhdWx0T3B0aW9uOiBPYmplY3RNYXAsXG4gIG9wdGlvbjogT2JqZWN0TWFwLFxuICBjbGlPcHRpb246IE9iamVjdE1hcFxuKTogTWVyZ2VkT3B0aW9uIHtcbiAgbGV0IHZhbHVlO1xuXG4gIGlmIChkZWZhdWx0T3B0aW9uKSB7XG4gICAgdmFsdWUgPSBkZWZhdWx0T3B0aW9uO1xuICB9XG5cbiAgaWYgKG9wdGlvbikge1xuICAgIHZhbHVlID0gbWVyZ2VWYWx1ZSh2YWx1ZSwgb3B0aW9uKTtcbiAgfVxuXG4gIGlmIChjbGlPcHRpb24pIHtcbiAgICB2YWx1ZSA9IG1lcmdlVmFsdWUodmFsdWUsIGNsaU9wdGlvbik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWUsXG4gICAgdmFsdWUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldE9wdGlvbnMoX29wdGlvbnM6IE9iamVjdE1hcCA9IHt9LCBhcmdzOiBzdHJpbmdbXSA9IFtdKSB7XG4gIGNvbnN0IGNsaUFyZ3MgPSBtaW5pbWlzdChhcmdzKTtcbiAgY29uc3Qgb3B0aW9uTmFtZXMgPSBPYmplY3Qua2V5cyhkZWZhdWx0T3B0aW9ucylcbiAgICAuY29uY2F0KE9iamVjdC5rZXlzKF9vcHRpb25zKSlcbiAgICAuY29uY2F0KE9iamVjdC5rZXlzKGNsaUFyZ3MpKTtcblxuICBjb25zdCBtZXJnZWRPcHRpb25zOiBNZXJnZWRPcHRpb25zID0gb3B0aW9uTmFtZXMubWFwKChvcHRpb25OYW1lKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlT3B0aW9ucyhcbiAgICAgIG9wdGlvbk5hbWUsXG4gICAgICBkZWZhdWx0T3B0aW9uc1tvcHRpb25OYW1lXSxcbiAgICAgIF9vcHRpb25zW29wdGlvbk5hbWVdLFxuICAgICAgY2xpQXJnc1tvcHRpb25OYW1lXVxuICAgICk7XG4gIH0pO1xuICBjb25zdCBmbGF0dGVuT3B0aW9uczogT3B0aW9ucyA9IG1lcmdlZE9wdGlvbnMucmVkdWNlKFxuICAgIChhY2M6IE9iamVjdE1hcCwgb3B0aW9uKSA9PiB7XG4gICAgICBhY2Nbb3B0aW9uLm5hbWVdID0gb3B0aW9uLnZhbHVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9XG4gICk7XG4gIHJldHVybiBmbGF0dGVuT3B0aW9ucztcbn1cblxuY29uc3QgbGF1bmNoZXIgPSB7XG4gIGluc3RhbmNlczogW10gYXMgSW5zdGFuY2VbXSxcbiAgdGVybWluYXRlQWxsOiAoc2lnbmFsOiBOb2RlSlMuU2lnbmFscykgPT4ge1xuICAgIGxhdW5jaGVyLmluc3RhbmNlcy5mb3JFYWNoKChfaW5zdGFuY2U6IEluc3RhbmNlKSA9PiB7XG4gICAgICB0ZXJtaW5hbC5sb2coXG4gICAgICAgIGBUZXJtaW5hdGluZyBbJHtfaW5zdGFuY2UubmFtZX1dIGluc3RhbmNlLnBpZDogJHtfaW5zdGFuY2UucGlkfWBcbiAgICAgICk7XG4gICAgICBfaW5zdGFuY2Uua2lsbChzaWduYWwgfHwgXCJTSUdURVJNXCIpO1xuICAgIH0pO1xuICB9LFxufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxhdW5jaChfb3B0aW9uczogT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgYXJncyA9IF9vcHRpb25zLm1vZGUgPT09IFwiY2xpXCIgPyBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikgOiBbXTtcbiAgY29uc3Qgb3B0aW9ucyA9IGdldE9wdGlvbnMoX29wdGlvbnMsIGFyZ3MpO1xuICBpZiAob3B0aW9ucy5lbnYpIHtcbiAgICBjb25zdCBlbnYgPVxuICAgICAgb3B0aW9ucy5lbnYgaW5zdGFuY2VvZiBBcnJheSA/IG9wdGlvbnMuZW52IDogb3B0aW9ucy5lbnYuc3BsaXQoXCIsXCIpO1xuICAgIGVudi5mb3JFYWNoKChlbGVtZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGVsZW1lbnQuc3BsaXQoXCI9XCIpO1xuICAgICAgY29uc3QgaXNSZWZlcmVuY2UgPSB2YWx1ZS5pbmRleE9mKFwicHJvY2Vzcy5lbnYuXCIpID4gLTE7XG4gICAgICBwcm9jZXNzLmVudltrZXldID0gaXNSZWZlcmVuY2UgPyBwcm9jZXNzLmVudlt2YWx1ZS5zbGljZSgxMildIDogdmFsdWU7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgY21kcyA9XG4gICAgb3B0aW9ucy5jbWRzIHx8XG4gICAgcHJvY2Vzcy5hcmd2LnNsaWNlKDIpLmZpbHRlcigoYXJnKSA9PiBhcmcuaW5kZXhPZihcIi0tY3dkXCIpID09PSAtMSk7XG4gIGxldCBjd2QgPSBiYXNlRGlyO1xuICBpZiAob3B0aW9ucy5jd2QpIHtcbiAgICBjd2QgPVxuICAgICAgb3B0aW9ucy5jd2RbMF0gPT09IFwiL1wiID8gb3B0aW9ucy5jd2QgOiBwYXRoLnJlc29sdmUoYmFzZURpciwgb3B0aW9ucy5jd2QpO1xuICB9XG5cbiAgaWYgKCFjbWRzIHx8IGNtZHMubGVuZ3RoID09PSAwKSB7XG4gICAgY29uc3QgaXNDbGkgPSBvcHRpb25zLm1vZGUgPT09IFwiY2xpXCI7XG4gICAgY29uc3QgdGl0bGUgPSBcIk9vcHMg8J+YrCwgRGlkIHlvdSBmb3Jnb3QgdG8gcGFzc1wiO1xuICAgIGlmIChpc0NsaSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIHIoXG4gICAgICAgICAgYFxcbiAke3RpdGxlfSAke2JnUihcbiAgICAgICAgICAgIHcoXCIgcHJvZ3JhbSBcIilcbiAgICAgICAgICApfT8uIFBsZWFzZSB0ZWxsIG1lLCB3aGljaCBwcm9ncmFtIHlvdSB3YW50IHRvIGxhdW5jaCFcXG5gXG4gICAgICAgICkgKyBgXFxuICAgRXhhbXBsZTogbGF1bmNoIGVjaG8gXCJIZWxsbyBXb3JsZFwiXFxuYDtcbiAgICAgIHRlcm1pbmFsLmxvZyhtZXNzYWdlKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIHIoXG4gICAgICAgICAgYCR7dGl0bGV9IG9wdGlvbiAke2JnUihcbiAgICAgICAgICAgIHcoXCIgY21kcyBcIilcbiAgICAgICAgICApfT8uIFBsZWFzZSB0ZWxsIG1lLCB3aGljaCBwcm9ncmFtIHlvdSB3YW50IHRvIGxhdW5jaCFcXG5gXG4gICAgICAgICkgKyBgXFxuICAgRXhhbXBsZTogbGF1bmNoKHtjbWRzOltcImVjaG9cIiwgXCJIZWxsbyBXb3JsZFwiXX0pO1xcbmA7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIHRlcm1pbmFsLmxvZyhcbiAgICAgIFwiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXCJcbiAgICApO1xuICAgIHRlcm1pbmFsLmxvZyhcIiMgIPCfmoAgIExhdW5jaGluZyAgIDogXCIgKyBjbWRzLmpvaW4oXCIgXCIpKTtcbiAgICB0ZXJtaW5hbC5sb2coXCIjICDwn5OCICBDV0QgICAgICAgICA6IFwiICsgY3dkKTtcbiAgICB0ZXJtaW5hbC5sb2coXG4gICAgICBcIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1wiXG4gICAgKTtcbiAgfVxuICBjb25zdCB7IHN0ZGlvLCBzaGVsbCB9ID0gb3B0aW9ucztcblxuICBjb25zdCBpbnN0YW5jZSA9IDxJbnN0YW5jZT5zcGF3bihjbWRzWzBdLCBjbWRzLnNsaWNlKDEpLCB7XG4gICAgc3RkaW8sXG4gICAgY3dkLFxuICAgIHNoZWxsLFxuICB9KTtcbiAgaW5zdGFuY2UubmFtZSA9IGNtZHNbMF07XG5cbiAgbGF1bmNoZXIuaW5zdGFuY2VzLnB1c2goaW5zdGFuY2UpO1xuXG4gIGZ1bmN0aW9uIGV4aXQoc2lnbmFsOiBOb2RlSlMuU2lnbmFscykge1xuICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgY3Vyc29yVG8ocHJvY2Vzcy5zdGRvdXQsIDApO1xuICAgICAgdGVybWluYWwubG9nKGBLaWxsaW5nIFske2luc3RhbmNlLm5hbWV9XSBpbnN0YW5jZS5waWQ6ICR7aW5zdGFuY2UucGlkfWApO1xuICAgICAgaW5zdGFuY2Uua2lsbChzaWduYWwgfHwgXCJTSUdURVJNXCIpO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3Mub24oXCJTSUdJTlRcIiwgPGFueT5leGl0KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGxldCBvdXRwdXQgPSBcIlwiO1xuICAgIGxldCBsYXN0RXJyb3JEYXRhID0gXCJcIjtcbiAgICBpZiAoc3RkaW8gIT09IFwiaW5oZXJpdFwiKSB7XG4gICAgICBpZiAoaW5zdGFuY2Uuc3Rkb3V0KSB7XG4gICAgICAgIGluc3RhbmNlLnN0ZG91dC5vbihcImRhdGFcIiwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICBjb25zdCBkYXRhU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChkYXRhU3RyKSB7XG4gICAgICAgICAgICBvdXRwdXQgKz0gZGF0YVN0cjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGluc3RhbmNlLnN0ZGVycikge1xuICAgICAgICBpbnN0YW5jZS5zdGRlcnIub24oXCJkYXRhXCIsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgbGFzdEVycm9yRGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGluc3RhbmNlLm9uKFwiY2xvc2VcIiwgYXN5bmMgKGNvZGUpID0+IHtcbiAgICAgIGlmIChvcHRpb25zLmV4aXRQcm9jZXNzT25DbG9zZSkge1xuICAgICAgICB0ZXJtaW5hbC5sb2coYFske2luc3RhbmNlLm5hbWV9XSBleGl0IGNvZGU6JHtjb2RlfWApO1xuICAgICAgICBwcm9jZXNzLmV4aXQoY29kZSA/IGNvZGUgOiB1bmRlZmluZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGVybWluYWwubG9nKGBbJHtpbnN0YW5jZS5uYW1lfV0gZXhpdCBjb2RlOiR7Y29kZX1gKTtcbiAgICAgICAgY29kZSA9PT0gMCA/IHJlc29sdmUob3V0cHV0KSA6IHJlamVjdChsYXN0RXJyb3JEYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxhdW5jaDtcbiIsImV4cG9ydCAqIGZyb20gXCIuL2xhdW5jaC1iYXNlXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
package/package.json CHANGED
@@ -1,10 +1,16 @@
1
1
  {
2
2
  "name": "@01/launcher",
3
- "version": "1.0.15",
4
- "author": "Nidin Vinayakan <01@01alchemist.com>",
5
- "repository": "https://github.com/01alchemist/launcher",
6
- "private": false,
7
- "license": "LICENSE",
3
+ "version": "1.1.0",
4
+ "author": "01 Alchemist <01@01alchemist.com>",
5
+ "publishConfig": {
6
+ "registry": "https://registry.npmjs.org"
7
+ },
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/01alchemist/web-service-lib.git",
11
+ "directory": "packages/launcher"
12
+ },
13
+ "license": "UNLICENSED",
8
14
  "keywords": [
9
15
  "process",
10
16
  "launcher",
@@ -25,9 +31,14 @@
25
31
  "launch": "./cli/index"
26
32
  },
27
33
  "scripts": {
28
- "start": "webpack --watch",
29
- "build.dev": "webpack",
30
- "build": "NODE_ENV=production webpack",
34
+ "yalc:publish": "yalc publish --push --sig",
35
+ "start": "vite",
36
+ "build.dev": "vite build",
37
+ "dev.build": "NODE_ENV=production vite build && yalc push",
38
+ "build": "NODE_ENV=production vite build",
39
+ "yalc.retreat": "yalc retreat --all",
40
+ "publish-pkg2": "../../scripts/publish-package.js $PWD",
41
+ "publish-pkg": "../../scripts/publish-package.js $PWD",
31
42
  "precommit": "lint-staged",
32
43
  "test": "echo no tests",
33
44
  "prettier": "prettier --write '**/*.{js,json,ts,gql,graphql}'",
@@ -46,20 +57,15 @@
46
57
  "tslib": "^2.6.2"
47
58
  },
48
59
  "devDependencies": {
60
+ "@01/core-tools": "^1.1.0",
49
61
  "@types/jest": "^29.5.1",
50
62
  "@types/minimist": "^1.2.2",
51
63
  "@types/node": "^20.1.7",
52
- "clean-webpack-plugin": "^4.0.0",
53
- "fs-extra": "8.1.0",
54
64
  "jest": "^29.5.0",
55
65
  "jest-cli": "^29.5.0",
56
66
  "prettier": "^2.8.8",
57
67
  "terser": "^5.17.4",
58
68
  "ts-jest": "^29.1.0",
59
- "ts-loader": "^9.4.2",
60
- "typescript": "^5.0.4",
61
- "webpack": "^5.83.1",
62
- "webpack-cli": "^5.1.1",
63
- "webpack-node-externals": "^3.0.0"
69
+ "typescript": "^5.0.4"
64
70
  }
65
71
  }
package/dist/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./launch-base";
@@ -1,14 +0,0 @@
1
- /// <reference types="node" />
2
- import * as child_process from "child_process";
3
- type SpawnOptions = child_process.SpawnOptions;
4
- type LaunchMode = "program" | "cli";
5
- type Options = {
6
- env?: string | string[];
7
- cmds?: string[];
8
- cwd?: string;
9
- mode?: LaunchMode;
10
- exitProcessOnClose?: boolean;
11
- silent?: boolean;
12
- } & SpawnOptions;
13
- export declare function launch(_options?: Options): Promise<string>;
14
- export default launch;
@@ -1,4 +0,0 @@
1
- export declare const terminal: {
2
- log: (...args: any) => void;
3
- };
4
- export default terminal;