runlify 0.0.1 → 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.
package/bin/runlify CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
 
3
-
4
3
  /* tslint:disable */
5
4
  // check if we're running in dev mode
6
5
  var devMode = require('fs').existsSync(`${__dirname}/../src`)
@@ -17,5 +16,3 @@ if (wantsCompiled || !devMode) {
17
16
  // run the CLI with the current process arguments
18
17
  require(`${__dirname}/../src/cli`).run(process.argv)
19
18
  }
20
-
21
-
@@ -0,0 +1,103 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var cross_spawn_1 = require("cross-spawn");
40
+ var signal_termination_1 = require("../signal-termination");
41
+ var change_case_1 = require("change-case");
42
+ var nconf = require("nconf");
43
+ var R = require("ramda");
44
+ nconf.env();
45
+ module.exports = {
46
+ name: 'env',
47
+ alias: ['e'],
48
+ run: function (toolbox) { return __awaiter(void 0, void 0, void 0, function () {
49
+ var parameters, info, envName, command, commandArgs, proc, signals;
50
+ return __generator(this, function (_a) {
51
+ parameters = toolbox.parameters, info = toolbox.print.info;
52
+ // const name = parameters.first
53
+ // await generate({
54
+ // template: 'model.ts.ejs',
55
+ // target: `models/${name}-model.ts`,
56
+ // props: { name },
57
+ // })
58
+ // // echo $SOME
59
+ // const env: Record<string, string> = {
60
+ // ...process.env,
61
+ // SOME: '000',
62
+ // }
63
+ // info(`env`)
64
+ // info(env)
65
+ // // info(JSON.stringify())
66
+ info(parameters);
67
+ envName = parameters.first;
68
+ info("envName: ".concat(envName));
69
+ nconf.file({
70
+ file: "./config/".concat(envName, ".json"),
71
+ format: {
72
+ stringify: JSON.stringify,
73
+ parse: function (str) {
74
+ return R.fromPairs(R.toPairs(JSON.parse(str)).map(function (_a) {
75
+ var key = _a[0], value = _a[1];
76
+ return [
77
+ (0, change_case_1.constantCase)(key),
78
+ value,
79
+ ];
80
+ }));
81
+ },
82
+ },
83
+ });
84
+ info("get");
85
+ info(nconf.get());
86
+ command = parameters.second;
87
+ info("command: ".concat(command));
88
+ commandArgs = parameters.array.splice(2);
89
+ info("commandArgs");
90
+ info(commandArgs);
91
+ proc = (0, cross_spawn_1.spawn)(command, commandArgs, {
92
+ stdio: 'inherit',
93
+ shell: true,
94
+ env: nconf.get(),
95
+ });
96
+ signals = new signal_termination_1.TermSignals();
97
+ signals.handleUncaughtExceptions();
98
+ signals.handleTermSignals(proc);
99
+ return [2 /*return*/];
100
+ });
101
+ }); },
102
+ };
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFtQztBQUVuQyw0REFBbUQ7QUFDbkQsMkNBQTBDO0FBQzFDLDZCQUE4QjtBQUM5Qix5QkFBMEI7QUFFMUIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFBO0FBRVgsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNmLElBQUksRUFBRSxLQUFLO0lBQ1gsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ1osR0FBRyxFQUFFLFVBQU8sT0FBdUI7OztZQUUvQixVQUFVLEdBRVIsT0FBTyxXQUZDLEVBQ0QsSUFBSSxHQUNYLE9BQU8sV0FESSxDQUNKO1lBRVgsZ0NBQWdDO1lBRWhDLG1CQUFtQjtZQUNuQiw4QkFBOEI7WUFDOUIsdUNBQXVDO1lBQ3ZDLHFCQUFxQjtZQUNyQixLQUFLO1lBRUwsZ0JBQWdCO1lBQ2hCLHdDQUF3QztZQUN4QyxvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLElBQUk7WUFDSixjQUFjO1lBQ2QsWUFBWTtZQUVaLDRCQUE0QjtZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFHVixPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtZQUNoQyxJQUFJLENBQUMsbUJBQVksT0FBTyxDQUFFLENBQUMsQ0FBQTtZQUUzQixLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNULElBQUksRUFBRSxtQkFBWSxPQUFPLFVBQU87Z0JBQ2hDLE1BQU0sRUFBRTtvQkFDTixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLEtBQUssRUFBRSxVQUFDLEdBQVc7d0JBQ2pCLE9BQUEsQ0FBQyxDQUFDLFNBQVMsQ0FDVCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxFQUFZO2dDQUFYLEdBQUcsUUFBQSxFQUFFLEtBQUssUUFBQTs0QkFBTSxPQUFBO2dDQUMvQyxJQUFBLDBCQUFZLEVBQUMsR0FBRyxDQUFDO2dDQUNqQixLQUFLOzZCQUNOO3dCQUhnRCxDQUdoRCxDQUFDLENBQ0g7b0JBTEQsQ0FLQztpQkFDSjthQUNGLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUtYLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO1lBQ2pDLElBQUksQ0FBQyxtQkFBWSxPQUFPLENBQUUsQ0FBQyxDQUFBO1lBRXJCLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBR1gsSUFBSSxHQUFHLElBQUEsbUJBQUssRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFO2dCQUN2QyxLQUFLLEVBQUUsU0FBUztnQkFDaEIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUU7YUFDakIsQ0FBQyxDQUFBO1lBR0ksT0FBTyxHQUFHLElBQUksZ0NBQVcsRUFBRSxDQUFBO1lBQ2pDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO1lBQ2xDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTs7O1NBQ2hDO0NBQ0YsQ0FBQSJ9
@@ -0,0 +1,66 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ module.exports = {
40
+ name: 'readEnv',
41
+ alias: ['r'],
42
+ run: function (toolbox) { return __awaiter(void 0, void 0, void 0, function () {
43
+ var info;
44
+ return __generator(this, function (_a) {
45
+ info = toolbox.print.info;
46
+ // const name = parameters.first
47
+ // await generate({
48
+ // template: 'model.ts.ejs',
49
+ // target: `models/${name}-model.ts`,
50
+ // props: { name },
51
+ // })
52
+ // echo $SOME
53
+ // info(JSON.stringify())
54
+ // info(process.env)
55
+ info('readEnv');
56
+ info('SOME');
57
+ info(process.env.SOME);
58
+ info('DATABASE_URI');
59
+ info(process.env.DATABASE_URI);
60
+ info('database.uri');
61
+ info(process.env['database.uri']);
62
+ return [2 /*return*/];
63
+ });
64
+ }); },
65
+ };
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZEVudi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9yZWFkRW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNmLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ1osR0FBRyxFQUFFLFVBQU8sT0FBdUI7OztZQUd0QixJQUFJLEdBQ1gsT0FBTyxXQURJLENBQ0o7WUFFWCxnQ0FBZ0M7WUFFaEMsbUJBQW1CO1lBQ25CLDhCQUE4QjtZQUM5Qix1Q0FBdUM7WUFDdkMscUJBQXFCO1lBQ3JCLEtBQUs7WUFFTCxhQUFhO1lBRWIseUJBQXlCO1lBQ3pCLG9CQUFvQjtZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7OztTQUNsQztDQUNGLENBQUEifQ==
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TermSignals = void 0;
4
+ // file from env-cmd package
5
+ var SIGNALS_TO_HANDLE = ['SIGINT', 'SIGTERM', 'SIGHUP'];
6
+ var TermSignals = /** @class */ (function () {
7
+ function TermSignals(options) {
8
+ if (options === void 0) { options = {}; }
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ this.terminateSpawnedProcessFuncHandlers = {};
11
+ this.verbose = false;
12
+ this._exitCalled = false;
13
+ this.verbose = options.verbose === true;
14
+ }
15
+ TermSignals.prototype.handleTermSignals = function (proc) {
16
+ var _this = this;
17
+ // Terminate child process if parent process receives termination events
18
+ SIGNALS_TO_HANDLE.forEach(function (signal) {
19
+ _this.terminateSpawnedProcessFuncHandlers[signal] = function (signal, code) {
20
+ _this._removeProcessListeners();
21
+ if (!_this._exitCalled) {
22
+ if (_this.verbose) {
23
+ console.info('Parent process exited with signal: ' +
24
+ signal.toString() +
25
+ '. Terminating child process...');
26
+ }
27
+ // Mark shared state so we do not run into a signal/exit loop
28
+ _this._exitCalled = true;
29
+ // Use the signal code if it is an error code
30
+ var correctSignal = void 0;
31
+ if (typeof signal === 'number') {
32
+ if (signal > (code !== null && code !== void 0 ? code : 0)) {
33
+ code = signal;
34
+ correctSignal = 'SIGINT';
35
+ }
36
+ }
37
+ else {
38
+ correctSignal = signal;
39
+ }
40
+ // Kill the child process
41
+ proc.kill(correctSignal !== null && correctSignal !== void 0 ? correctSignal : code);
42
+ // Terminate the parent process
43
+ _this._terminateProcess(code, correctSignal);
44
+ }
45
+ };
46
+ process.once(signal, _this.terminateSpawnedProcessFuncHandlers[signal]);
47
+ });
48
+ process.once('exit', this.terminateSpawnedProcessFuncHandlers.SIGTERM);
49
+ // Terminate parent process if child process receives termination events
50
+ proc.on('exit', function (code, signal) {
51
+ _this._removeProcessListeners();
52
+ if (!_this._exitCalled) {
53
+ if (_this.verbose) {
54
+ console.info("Child process exited with code: ".concat((code !== null && code !== void 0 ? code : '').toString(), " and signal:") +
55
+ (signal !== null && signal !== void 0 ? signal : '').toString() +
56
+ '. Terminating parent process...');
57
+ }
58
+ // Mark shared state so we do not run into a signal/exit loop
59
+ _this._exitCalled = true;
60
+ // Use the signal code if it is an error code
61
+ var correctSignal = void 0;
62
+ if (typeof signal === 'number') {
63
+ if (signal > (code !== null && code !== void 0 ? code : 0)) {
64
+ code = signal;
65
+ correctSignal = 'SIGINT';
66
+ }
67
+ }
68
+ else {
69
+ correctSignal = signal !== null && signal !== void 0 ? signal : undefined;
70
+ }
71
+ // Terminate the parent process
72
+ _this._terminateProcess(code, correctSignal);
73
+ }
74
+ });
75
+ };
76
+ /**
77
+ * Enables catching of unhandled exceptions
78
+ */
79
+ TermSignals.prototype.handleUncaughtExceptions = function () {
80
+ var _this = this;
81
+ process.on('uncaughtException', function (e) {
82
+ return _this._uncaughtExceptionHandler(e);
83
+ });
84
+ };
85
+ /**
86
+ * Terminate parent process helper
87
+ */
88
+ TermSignals.prototype._terminateProcess = function (code, signal) {
89
+ if (signal !== undefined) {
90
+ process.kill(process.pid, signal);
91
+ return;
92
+ }
93
+ if (code !== undefined) {
94
+ return process.exit(code);
95
+ }
96
+ throw new Error('Unable to terminate parent process successfully');
97
+ };
98
+ /**
99
+ * Exit event listener clean up helper
100
+ */
101
+ TermSignals.prototype._removeProcessListeners = function () {
102
+ var _this = this;
103
+ SIGNALS_TO_HANDLE.forEach(function (signal) {
104
+ process.removeListener(signal, _this.terminateSpawnedProcessFuncHandlers[signal]);
105
+ });
106
+ process.removeListener('exit', this.terminateSpawnedProcessFuncHandlers.SIGTERM);
107
+ };
108
+ /**
109
+ * General exception handler
110
+ */
111
+ TermSignals.prototype._uncaughtExceptionHandler = function (e) {
112
+ console.error(e.message);
113
+ process.exit(1);
114
+ };
115
+ return TermSignals;
116
+ }());
117
+ exports.TermSignals = TermSignals;
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXRlcm1pbmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NpZ25hbC10ZXJtaW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw0QkFBNEI7QUFFNUIsSUFBTSxpQkFBaUIsR0FBcUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBRTNFO0lBTUUscUJBQVksT0FBbUM7UUFBbkMsd0JBQUEsRUFBQSxZQUFtQztRQUwvQyw4REFBOEQ7UUFDN0Msd0NBQW1DLEdBQXdCLEVBQUUsQ0FBQTtRQUM3RCxZQUFPLEdBQVksS0FBSyxDQUFBO1FBQ2xDLGdCQUFXLEdBQUcsS0FBSyxDQUFBO1FBR3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUE7SUFDekMsQ0FBQztJQUVNLHVDQUFpQixHQUF4QixVQUF5QixJQUFrQjtRQUEzQyxpQkF5RUM7UUF4RUMsd0VBQXdFO1FBQ3hFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxVQUFDLE1BQU07WUFDL0IsS0FBSSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQ2pELE1BQStCLEVBQy9CLElBQVk7Z0JBRVosS0FBSSxDQUFDLHVCQUF1QixFQUFFLENBQUE7Z0JBQzlCLElBQUksQ0FBQyxLQUFJLENBQUMsV0FBVyxFQUFFO29CQUNyQixJQUFJLEtBQUksQ0FBQyxPQUFPLEVBQUU7d0JBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQ1YscUNBQXFDOzRCQUNuQyxNQUFNLENBQUMsUUFBUSxFQUFFOzRCQUNqQixnQ0FBZ0MsQ0FDbkMsQ0FBQTtxQkFDRjtvQkFDRCw2REFBNkQ7b0JBQzdELEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO29CQUN2Qiw2Q0FBNkM7b0JBQzdDLElBQUksYUFBYSxTQUE0QixDQUFBO29CQUM3QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTt3QkFD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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ /// <reference types="node" />
2
+ import { ChildProcess } from 'child_process';
3
+ export declare class TermSignals {
4
+ private readonly terminateSpawnedProcessFuncHandlers;
5
+ private readonly verbose;
6
+ _exitCalled: boolean;
7
+ constructor(options?: {
8
+ verbose?: boolean;
9
+ });
10
+ handleTermSignals(proc: ChildProcess): void;
11
+ /**
12
+ * Enables catching of unhandled exceptions
13
+ */
14
+ handleUncaughtExceptions(): void;
15
+ /**
16
+ * Terminate parent process helper
17
+ */
18
+ _terminateProcess(code?: number, signal?: NodeJS.Signals): void;
19
+ /**
20
+ * Exit event listener clean up helper
21
+ */
22
+ _removeProcessListeners(): void;
23
+ /**
24
+ * General exception handler
25
+ */
26
+ _uncaughtExceptionHandler(e: Error): void;
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runlify",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "runlify CLI",
5
5
  "private": false,
6
6
  "types": "build/types/types.d.ts",
@@ -28,16 +28,19 @@
28
28
  ],
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
- "gluegun": "latest"
31
+ "change-case": "^4.1.2",
32
+ "cross-spawn": "^7.0.3",
33
+ "gluegun": "latest",
34
+ "nconf": "^0.12.0",
35
+ "ramda": "^0.28.0"
32
36
  },
33
37
  "devDependencies": {
34
- "@types/node": "^12.7.11",
35
38
  "@types/jest": "^26.0.20",
39
+ "@types/nconf": "^0.10.2",
40
+ "@types/node": "^12.7.11",
41
+ "@types/ramda": "^0.28.13",
36
42
  "@typescript-eslint/eslint-plugin": "^4.17.0",
37
43
  "@typescript-eslint/parser": "^4.17.0",
38
- "ts-jest": "^26.5.3",
39
- "ts-node": "^9.1.1",
40
- "typescript": "^4.2.3",
41
44
  "copyfiles": "^2.4.1",
42
45
  "eslint": "^7.22.0",
43
46
  "eslint-config-prettier": "^8.1.0",
@@ -45,7 +48,10 @@
45
48
  "husky": "^5.1.3",
46
49
  "jest": "^26.6.3",
47
50
  "prettier": "^2.2.1",
48
- "pretty-quick": "^3.1.0"
51
+ "pretty-quick": "^3.1.0",
52
+ "ts-jest": "^26.5.3",
53
+ "ts-node": "^9.1.1",
54
+ "typescript": "^4.2.3"
49
55
  },
50
56
  "jest": {
51
57
  "preset": "ts-jest",