@cenk1cenk2/oclif-common 3.9.8 → 3.9.10
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/dist/index.d.ts +423 -52
- package/dist/index.js +1298 -22
- package/package.json +1 -1
- package/dist/base.command-d3038122.d.ts +0 -77
- package/dist/commands/base.command.d.ts +0 -24
- package/dist/commands/base.command.js +0 -174
- package/dist/commands/config.command.d.ts +0 -71
- package/dist/commands/config.command.js +0 -60
- package/dist/commands/index.d.ts +0 -34
- package/dist/commands/index.js +0 -18
- package/dist/constants/file.constants.d.ts +0 -5
- package/dist/constants/file.constants.js +0 -30
- package/dist/constants/global-flags.constants.d.ts +0 -5
- package/dist/constants/global-flags.constants.js +0 -53
- package/dist/constants/help-groups.constants.d.ts +0 -5
- package/dist/constants/help-groups.constants.js +0 -30
- package/dist/constants/index.d.ts +0 -4
- package/dist/constants/index.js +0 -19
- package/dist/hooks/index.d.ts +0 -6
- package/dist/hooks/index.js +0 -19
- package/dist/hooks/not-found.hook.d.ts +0 -5
- package/dist/hooks/not-found.hook.js +0 -37
- package/dist/hooks/store.hook.d.ts +0 -7
- package/dist/hooks/store.hook.js +0 -31
- package/dist/hooks/update-notifier.hook.d.ts +0 -5
- package/dist/hooks/update-notifier.hook.js +0 -37
- package/dist/interfaces/class.interface.d.ts +0 -3
- package/dist/interfaces/class.interface.js +0 -15
- package/dist/interfaces/config-command.interface.d.ts +0 -12
- package/dist/interfaces/config-command.interface.js +0 -15
- package/dist/interfaces/index.d.ts +0 -10
- package/dist/interfaces/index.js +0 -20
- package/dist/interfaces/oclif.interface.d.ts +0 -9
- package/dist/interfaces/oclif.interface.js +0 -27
- package/dist/interfaces/type-helper.interface.d.ts +0 -8
- package/dist/interfaces/type-helper.interface.js +0 -15
- package/dist/lib/config/config.constants.d.ts +0 -8
- package/dist/lib/config/config.constants.js +0 -33
- package/dist/lib/config/config.interface.d.ts +0 -15
- package/dist/lib/config/config.interface.js +0 -15
- package/dist/lib/config/config.service.d.ts +0 -24
- package/dist/lib/config/config.service.js +0 -172
- package/dist/lib/config/index.d.ts +0 -24
- package/dist/lib/config/index.js +0 -18
- package/dist/lib/fs/filesystem.service.d.ts +0 -28
- package/dist/lib/fs/filesystem.service.js +0 -162
- package/dist/lib/fs/index.d.ts +0 -2
- package/dist/lib/fs/index.js +0 -17
- package/dist/lib/index.d.ts +0 -29
- package/dist/lib/index.js +0 -23
- package/dist/lib/locker/index.d.ts +0 -4
- package/dist/lib/locker/index.js +0 -18
- package/dist/lib/locker/locker.interface.d.ts +0 -17
- package/dist/lib/locker/locker.interface.js +0 -15
- package/dist/lib/locker/locker.service.d.ts +0 -30
- package/dist/lib/locker/locker.service.js +0 -170
- package/dist/lib/parser/env-parser.service.d.ts +0 -13
- package/dist/lib/parser/env-parser.service.js +0 -62
- package/dist/lib/parser/index.d.ts +0 -8
- package/dist/lib/parser/index.js +0 -21
- package/dist/lib/parser/json-parser.service.d.ts +0 -12
- package/dist/lib/parser/json-parser.service.js +0 -52
- package/dist/lib/parser/parser.interface.d.ts +0 -7
- package/dist/lib/parser/parser.interface.js +0 -15
- package/dist/lib/parser/parser.service.d.ts +0 -21
- package/dist/lib/parser/parser.service.js +0 -87
- package/dist/lib/parser/yaml-parser.service.d.ts +0 -12
- package/dist/lib/parser/yaml-parser.service.js +0 -53
- package/dist/lib/setup.d.ts +0 -3
- package/dist/lib/setup.js +0 -60
- package/dist/lib/store/index.d.ts +0 -2
- package/dist/lib/store/index.js +0 -18
- package/dist/lib/store/store.interface.d.ts +0 -5
- package/dist/lib/store/store.interface.js +0 -15
- package/dist/lib/store/store.service.d.ts +0 -12
- package/dist/lib/store/store.service.js +0 -48
- package/dist/lib/validator/index.d.ts +0 -5
- package/dist/lib/validator/index.js +0 -18
- package/dist/lib/validator/validator.interface.d.ts +0 -9
- package/dist/lib/validator/validator.interface.js +0 -15
- package/dist/lib/validator/validator.service.d.ts +0 -16
- package/dist/lib/validator/validator.service.js +0 -77
- package/dist/utils/color.d.ts +0 -5
- package/dist/utils/color.js +0 -34
- package/dist/utils/defaults.d.ts +0 -11
- package/dist/utils/defaults.js +0 -47
- package/dist/utils/environment.d.ts +0 -7
- package/dist/utils/environment.js +0 -44
- package/dist/utils/index.d.ts +0 -17
- package/dist/utils/index.js +0 -34
- package/dist/utils/logger/index.d.ts +0 -10
- package/dist/utils/logger/index.js +0 -21
- package/dist/utils/logger/listr-logger.d.ts +0 -20
- package/dist/utils/logger/listr-logger.js +0 -60
- package/dist/utils/logger/logger.constants.d.ts +0 -20
- package/dist/utils/logger/logger.constants.js +0 -48
- package/dist/utils/logger/logger.d.ts +0 -31
- package/dist/utils/logger/logger.interface.d.ts +0 -16
- package/dist/utils/logger/logger.interface.js +0 -15
- package/dist/utils/logger/logger.js +0 -200
- package/dist/utils/logger/pipe/index.d.ts +0 -9
- package/dist/utils/logger/pipe/index.js +0 -19
- package/dist/utils/logger/pipe/pipe-process-to-listr.d.ts +0 -6
- package/dist/utils/logger/pipe/pipe-process-to-listr.js +0 -43
- package/dist/utils/logger/pipe/pipe-process-to-logger.d.ts +0 -13
- package/dist/utils/logger/pipe/pipe-process-to-logger.interface.d.ts +0 -16
- package/dist/utils/logger/pipe/pipe-process-to-logger.interface.js +0 -15
- package/dist/utils/logger/pipe/pipe-process-to-logger.js +0 -80
- package/dist/utils/merge.constants.d.ts +0 -6
- package/dist/utils/merge.constants.js +0 -31
- package/dist/utils/merge.d.ts +0 -8
- package/dist/utils/merge.js +0 -47
package/dist/index.js
CHANGED
|
@@ -1,22 +1,1298 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
4
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
5
|
+
}) : x)(function(x) {
|
|
6
|
+
if (typeof require !== "undefined")
|
|
7
|
+
return require.apply(this, arguments);
|
|
8
|
+
throw new Error('Dynamic require of "' + x + '" is not supported');
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
// src/commands/base.command.ts
|
|
12
|
+
var _core = require('@oclif/core');
|
|
13
|
+
var _listr2 = require('listr2');
|
|
14
|
+
var _readline = require('readline');
|
|
15
|
+
require('reflect-metadata');
|
|
16
|
+
|
|
17
|
+
// src/constants/file.constants.ts
|
|
18
|
+
var FileConstants = /* @__PURE__ */ ((FileConstants2) => {
|
|
19
|
+
FileConstants2["CONFIG_SERVICE_DEFAULTS_DIR"] = "config";
|
|
20
|
+
return FileConstants2;
|
|
21
|
+
})(FileConstants || {});
|
|
22
|
+
|
|
23
|
+
// src/constants/help-groups.constants.ts
|
|
24
|
+
var HelpGroups = /* @__PURE__ */ ((HelpGroups2) => {
|
|
25
|
+
HelpGroups2["CLI"] = "CLI";
|
|
26
|
+
return HelpGroups2;
|
|
27
|
+
})(HelpGroups || {});
|
|
28
|
+
|
|
29
|
+
// src/interfaces/oclif.interface.ts
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
// src/utils/logger/listr-logger.ts
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
// src/utils/logger/logger.ts
|
|
36
|
+
|
|
37
|
+
var _os = require('os');
|
|
38
|
+
var _winston = require('winston'); var _winston2 = _interopRequireDefault(_winston);
|
|
39
|
+
|
|
40
|
+
// src/utils/logger/logger.constants.ts
|
|
41
|
+
var LogLevels = /* @__PURE__ */ ((LogLevels2) => {
|
|
42
|
+
LogLevels2["SILENT"] = "SILENT";
|
|
43
|
+
LogLevels2["DIRECT"] = "DIRECT";
|
|
44
|
+
LogLevels2["FATAL"] = "FATAL";
|
|
45
|
+
LogLevels2["ERROR"] = "ERROR";
|
|
46
|
+
LogLevels2["WARN"] = "WARN";
|
|
47
|
+
LogLevels2["INFO"] = "INFO";
|
|
48
|
+
LogLevels2["VERBOSE"] = "VERBOSE";
|
|
49
|
+
LogLevels2["DEBUG"] = "DEBUG";
|
|
50
|
+
LogLevels2["TRACE"] = "TRACE";
|
|
51
|
+
return LogLevels2;
|
|
52
|
+
})(LogLevels || {});
|
|
53
|
+
var LogFieldStatus = /* @__PURE__ */ ((LogFieldStatus2) => {
|
|
54
|
+
LogFieldStatus2["RUN"] = "run";
|
|
55
|
+
LogFieldStatus2["END"] = "end";
|
|
56
|
+
LogFieldStatus2["STAGE"] = "stage";
|
|
57
|
+
LogFieldStatus2["EXIT"] = "exit";
|
|
58
|
+
LogFieldStatus2["TERMINATE"] = "terminate";
|
|
59
|
+
return LogFieldStatus2;
|
|
60
|
+
})(LogFieldStatus || {});
|
|
61
|
+
|
|
62
|
+
// src/lib/config/config.service.ts
|
|
63
|
+
var _objectpathimmutable = require('object-path-immutable'); var _objectpathimmutable2 = _interopRequireDefault(_objectpathimmutable);
|
|
64
|
+
var _path = require('path');
|
|
65
|
+
|
|
66
|
+
// src/lib/parser/env-parser.service.ts
|
|
67
|
+
|
|
68
|
+
var _EnvironmentVariableParser = class {
|
|
69
|
+
constructor() {
|
|
70
|
+
this.LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;
|
|
71
|
+
if (_EnvironmentVariableParser.instance) {
|
|
72
|
+
return _EnvironmentVariableParser.instance;
|
|
73
|
+
}
|
|
74
|
+
_EnvironmentVariableParser.instance = this;
|
|
75
|
+
this.logger = new Logger(this.constructor.name);
|
|
76
|
+
this.logger.trace("Created a new instance.");
|
|
77
|
+
}
|
|
78
|
+
parse(data) {
|
|
79
|
+
try {
|
|
80
|
+
return data.toString().split(_os.EOL).reduce((o, line) => {
|
|
81
|
+
const match = this.LINE.exec(line);
|
|
82
|
+
const key = match[1];
|
|
83
|
+
const value = _nullishCoalesce(match[2], () => ( ""));
|
|
84
|
+
return {
|
|
85
|
+
...o,
|
|
86
|
+
[key]: value
|
|
87
|
+
};
|
|
88
|
+
}, {});
|
|
89
|
+
} catch (e) {
|
|
90
|
+
this.logger.trace("Error during parsing environment file: %s", e.message);
|
|
91
|
+
throw e;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
stringify(data) {
|
|
95
|
+
return Object.entries(data).map(([k, v]) => `${k}=${v}`).join(_os.EOL) + _os.EOL;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
var EnvironmentVariableParser = _EnvironmentVariableParser;
|
|
99
|
+
__name(EnvironmentVariableParser, "EnvironmentVariableParser");
|
|
100
|
+
EnvironmentVariableParser.extensions = ["env"];
|
|
101
|
+
|
|
102
|
+
// src/lib/parser/json-parser.service.ts
|
|
103
|
+
var _JsonParser = class {
|
|
104
|
+
constructor() {
|
|
105
|
+
if (_JsonParser.instance) {
|
|
106
|
+
return _JsonParser.instance;
|
|
107
|
+
}
|
|
108
|
+
_JsonParser.instance = this;
|
|
109
|
+
this.logger = new Logger(this.constructor.name);
|
|
110
|
+
this.logger.trace("Created a new instance.");
|
|
111
|
+
}
|
|
112
|
+
parse(data) {
|
|
113
|
+
try {
|
|
114
|
+
return JSON.parse(data.toString());
|
|
115
|
+
} catch (e) {
|
|
116
|
+
this.logger.trace("Error during parsing JSON file: %s", e.message);
|
|
117
|
+
throw e;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
stringify(data) {
|
|
121
|
+
return JSON.stringify(data, null, 2);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
var JsonParser = _JsonParser;
|
|
125
|
+
__name(JsonParser, "JsonParser");
|
|
126
|
+
JsonParser.extensions = ["json"];
|
|
127
|
+
|
|
128
|
+
// src/lib/parser/yaml-parser.service.ts
|
|
129
|
+
var _yaml = require('yaml');
|
|
130
|
+
var _YamlParser = class {
|
|
131
|
+
constructor() {
|
|
132
|
+
if (_YamlParser.instance) {
|
|
133
|
+
return _YamlParser.instance;
|
|
134
|
+
}
|
|
135
|
+
_YamlParser.instance = this;
|
|
136
|
+
this.logger = new Logger(this.constructor.name);
|
|
137
|
+
this.logger.trace("Created a new instance.");
|
|
138
|
+
}
|
|
139
|
+
parse(data) {
|
|
140
|
+
try {
|
|
141
|
+
return _yaml.parse.call(void 0, data.toString());
|
|
142
|
+
} catch (e) {
|
|
143
|
+
this.logger.trace("Error during parsing YAML file: %s", e.message);
|
|
144
|
+
throw e;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
stringify(data) {
|
|
148
|
+
return _yaml.stringify.call(void 0, data, { prettyErrors: true });
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
var YamlParser = _YamlParser;
|
|
152
|
+
__name(YamlParser, "YamlParser");
|
|
153
|
+
YamlParser.extensions = ["yaml", "yml"];
|
|
154
|
+
|
|
155
|
+
// src/lib/fs/filesystem.service.ts
|
|
156
|
+
var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
|
|
157
|
+
|
|
158
|
+
var FileSystemService = class {
|
|
159
|
+
constructor() {
|
|
160
|
+
if (FileSystemService.instance) {
|
|
161
|
+
return FileSystemService.instance;
|
|
162
|
+
} else {
|
|
163
|
+
FileSystemService.instance = this;
|
|
164
|
+
this.logger = new Logger(this.constructor.name);
|
|
165
|
+
this.logger.trace("Created a new instance.");
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
exists(path) {
|
|
169
|
+
return _fsextra2.default.existsSync(path);
|
|
170
|
+
}
|
|
171
|
+
stats(path) {
|
|
172
|
+
return _fsextra2.default.statSync(path, { throwIfNoEntry: true });
|
|
173
|
+
}
|
|
174
|
+
dirname(path) {
|
|
175
|
+
return _path.dirname.call(void 0, path);
|
|
176
|
+
}
|
|
177
|
+
extname(path) {
|
|
178
|
+
return _path.extname.call(void 0, path);
|
|
179
|
+
}
|
|
180
|
+
async read(file) {
|
|
181
|
+
try {
|
|
182
|
+
const raw = await _fsextra2.default.readFile(file, "utf-8");
|
|
183
|
+
return raw;
|
|
184
|
+
} catch (e) {
|
|
185
|
+
throw new Error(`Error while reading file from "${file}": ${e.message}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
readSync(file) {
|
|
189
|
+
try {
|
|
190
|
+
const raw = _fsextra2.default.readFileSync(file, "utf-8");
|
|
191
|
+
return raw;
|
|
192
|
+
} catch (e) {
|
|
193
|
+
throw new Error(`Error while reading file from "${file}": ${e.message}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
async write(file, data, options = {}) {
|
|
197
|
+
try {
|
|
198
|
+
await _fsextra2.default.writeFile(file, data, { encoding: "utf-8", ...options });
|
|
199
|
+
} catch (e) {
|
|
200
|
+
throw new Error(`Error while writing file to "${file}": ${e.message}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
writeSync(file, data, options = {}) {
|
|
204
|
+
try {
|
|
205
|
+
_fsextra2.default.writeFileSync(file, data, { encoding: "utf-8", ...options });
|
|
206
|
+
} catch (e) {
|
|
207
|
+
throw new Error(`Error while writing file to "${file}": ${e.message}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async append(file, data, options) {
|
|
211
|
+
try {
|
|
212
|
+
await _fsextra2.default.appendFile(file, data, options);
|
|
213
|
+
} catch (e) {
|
|
214
|
+
throw new Error(`Error while appending to file "${file}": ${e.message}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
appendSync(file, data) {
|
|
218
|
+
try {
|
|
219
|
+
_fsextra2.default.appendFileSync(file, data);
|
|
220
|
+
} catch (e) {
|
|
221
|
+
throw new Error(`Error while appending to file "${file}": ${e.message}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async remove(file, options) {
|
|
225
|
+
try {
|
|
226
|
+
await _fsextra2.default.rm(file, options);
|
|
227
|
+
} catch (e) {
|
|
228
|
+
throw new Error(`Error while deleting the file "${file}": ${e.message}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
removeSync(file, options) {
|
|
232
|
+
try {
|
|
233
|
+
_fsextra2.default.rmSync(file, options);
|
|
234
|
+
} catch (e) {
|
|
235
|
+
throw new Error(`Error while deleting the file "${file}": ${e.message}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
async emptyDir(directory) {
|
|
239
|
+
try {
|
|
240
|
+
await _fsextra2.default.emptyDir(directory);
|
|
241
|
+
} catch (e) {
|
|
242
|
+
throw new Error(`Error while emptying the directory "${directory}": ${e.message}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
emptyDirSync(directory) {
|
|
246
|
+
try {
|
|
247
|
+
_fsextra2.default.emptyDirSync(directory);
|
|
248
|
+
} catch (e) {
|
|
249
|
+
throw new Error(`Error while emptying the directory "${directory}": ${e.message}`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
async removeDir(directory) {
|
|
253
|
+
try {
|
|
254
|
+
await _fsextra2.default.rmdir(directory);
|
|
255
|
+
} catch (e) {
|
|
256
|
+
throw new Error(`Error while removing the directory "${directory}": ${e.message}`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
removeDirSync(directory) {
|
|
260
|
+
try {
|
|
261
|
+
_fsextra2.default.rmdirSync(directory);
|
|
262
|
+
} catch (e) {
|
|
263
|
+
throw new Error(`Error while removing the directory "${directory}": ${e.message}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
async mkdir(directory) {
|
|
267
|
+
try {
|
|
268
|
+
await _fsextra2.default.mkdirp(directory);
|
|
269
|
+
} catch (e) {
|
|
270
|
+
throw new Error(`Error while creating the directory "${directory}": ${e.message}`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
mkdirSync(directory) {
|
|
274
|
+
try {
|
|
275
|
+
_fsextra2.default.mkdirSync(directory);
|
|
276
|
+
} catch (e) {
|
|
277
|
+
throw new Error(`Error while creating the directory "${directory}": ${e.message}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
__name(FileSystemService, "FileSystemService");
|
|
282
|
+
|
|
283
|
+
// src/lib/parser/parser.service.ts
|
|
284
|
+
var ParserService = class {
|
|
285
|
+
constructor(parsers) {
|
|
286
|
+
this.parsers = [YamlParser, JsonParser, EnvironmentVariableParser];
|
|
287
|
+
if (ParserService.instance) {
|
|
288
|
+
return ParserService.instance;
|
|
289
|
+
} else {
|
|
290
|
+
if (parsers) {
|
|
291
|
+
this.parsers = parsers;
|
|
292
|
+
}
|
|
293
|
+
this.logger = new Logger(this.constructor.name);
|
|
294
|
+
this.fs = new FileSystemService();
|
|
295
|
+
ParserService.instance = this;
|
|
296
|
+
this.logger.trace("Created a new instance.");
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
getParser(file) {
|
|
300
|
+
const ext = (file.includes(".") ? this.fs.extname(file) : file).replace(/^\./, "");
|
|
301
|
+
const Parser = this.parsers.find((parser) => parser.extensions.includes(ext));
|
|
302
|
+
if (!Parser) {
|
|
303
|
+
throw new Error(`Parser for the extension is not configured: ${ext}`);
|
|
304
|
+
}
|
|
305
|
+
return new Parser();
|
|
306
|
+
}
|
|
307
|
+
setParsers(...parsers) {
|
|
308
|
+
this.parsers = parsers;
|
|
309
|
+
this.logger.trace(
|
|
310
|
+
"Set parsers: %s",
|
|
311
|
+
this.parsers.map((p) => p.name)
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
addParsers(...parsers) {
|
|
315
|
+
this.parsers.push(...parsers);
|
|
316
|
+
this.logger.trace(
|
|
317
|
+
"Added parser, current parsers: %s",
|
|
318
|
+
this.parsers.map((p) => p.name)
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
async read(file) {
|
|
322
|
+
return this.parse(file, await this.fs.read(file));
|
|
323
|
+
}
|
|
324
|
+
async write(file, data) {
|
|
325
|
+
return this.fs.write(file, await this.stringify(file, data));
|
|
326
|
+
}
|
|
327
|
+
parse(file, data) {
|
|
328
|
+
const parser = this.getParser(file);
|
|
329
|
+
this.logger.trace("Parsing file: %s -> %s", file, parser.constructor.name);
|
|
330
|
+
return parser.parse(data);
|
|
331
|
+
}
|
|
332
|
+
stringify(file, data) {
|
|
333
|
+
const parser = this.getParser(file);
|
|
334
|
+
this.logger.trace("Stringifying file: %s -> %s", file, parser.constructor.name);
|
|
335
|
+
return parser.stringify(data);
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
__name(ParserService, "ParserService");
|
|
339
|
+
|
|
340
|
+
// src/utils/color.ts
|
|
341
|
+
var _colorette = require('colorette'); var colorette = _interopRequireWildcard(_colorette);
|
|
342
|
+
var color = colorette.createColors({ useColor: true });
|
|
343
|
+
|
|
344
|
+
// src/utils/environment.ts
|
|
345
|
+
function isVerbose(logLevel) {
|
|
346
|
+
return logLevel === "VERBOSE" /* VERBOSE */;
|
|
347
|
+
}
|
|
348
|
+
__name(isVerbose, "isVerbose");
|
|
349
|
+
function isDebug(logLevel) {
|
|
350
|
+
return ["DEBUG" /* DEBUG */, "TRACE" /* TRACE */].includes(logLevel);
|
|
351
|
+
}
|
|
352
|
+
__name(isDebug, "isDebug");
|
|
353
|
+
function isSilent(logLevel) {
|
|
354
|
+
return logLevel === "SILENT" /* SILENT */;
|
|
355
|
+
}
|
|
356
|
+
__name(isSilent, "isSilent");
|
|
357
|
+
|
|
358
|
+
// src/utils/merge.constants.ts
|
|
359
|
+
var MergeStrategy = /* @__PURE__ */ ((MergeStrategy2) => {
|
|
360
|
+
MergeStrategy2["OVERWRITE"] = "OVERWRITE";
|
|
361
|
+
MergeStrategy2["EXTEND"] = "EXTEND";
|
|
362
|
+
return MergeStrategy2;
|
|
363
|
+
})(MergeStrategy || {});
|
|
364
|
+
|
|
365
|
+
// src/utils/merge.ts
|
|
366
|
+
var _deepmerge = require('deepmerge'); var _deepmerge2 = _interopRequireDefault(_deepmerge);
|
|
367
|
+
function merge(strategy, ...source) {
|
|
368
|
+
return _deepmerge2.default.all(source, {
|
|
369
|
+
arrayMerge: strategy === "EXTEND" /* EXTEND */ ? (dest, src) => [...dest, ...src].filter(uniqueFilter) : (_, src) => src
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
__name(merge, "merge");
|
|
373
|
+
function uniqueFilter(value, index, self) {
|
|
374
|
+
return self.indexOf(value) === index;
|
|
375
|
+
}
|
|
376
|
+
__name(uniqueFilter, "uniqueFilter");
|
|
377
|
+
|
|
378
|
+
// src/utils/defaults.ts
|
|
379
|
+
function setCtxDefaults(ctx, ...defaults) {
|
|
380
|
+
_optionalChain([defaults, 'optionalAccess', _2 => _2.forEach, 'call', _3 => _3((i) => {
|
|
381
|
+
if (typeof i === "object" && !Array.isArray(i)) {
|
|
382
|
+
Object.assign(ctx, i);
|
|
383
|
+
}
|
|
384
|
+
})]);
|
|
385
|
+
}
|
|
386
|
+
__name(setCtxDefaults, "setCtxDefaults");
|
|
387
|
+
function setCtxAssign(ctx, ...assigns) {
|
|
388
|
+
assigns.forEach((assign) => {
|
|
389
|
+
_optionalChain([assign, 'optionalAccess', _4 => _4.keys, 'access', _5 => _5.forEach, 'call', _6 => _6((i) => {
|
|
390
|
+
if (assign.from[i]) {
|
|
391
|
+
ctx[i] = assign.from[i];
|
|
392
|
+
}
|
|
393
|
+
})]);
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
__name(setCtxAssign, "setCtxAssign");
|
|
397
|
+
|
|
398
|
+
// src/utils/index.ts
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
// src/lib/config/config.service.ts
|
|
402
|
+
var ConfigService = class {
|
|
403
|
+
constructor(oclif, command, config) {
|
|
404
|
+
this.oclif = oclif;
|
|
405
|
+
this.command = command;
|
|
406
|
+
if (ConfigService.instance) {
|
|
407
|
+
return ConfigService.instance;
|
|
408
|
+
}
|
|
409
|
+
this.root = this.oclif.root;
|
|
410
|
+
this.defaults = _path.join.call(void 0, this.oclif.root, "config" /* CONFIG_SERVICE_DEFAULTS_DIR */);
|
|
411
|
+
this.logger = new Logger(this.constructor.name, { level: config.logLevel });
|
|
412
|
+
Object.assign(this, config);
|
|
413
|
+
this.recalculate();
|
|
414
|
+
this.parser = new ParserService();
|
|
415
|
+
ConfigService.instance = this;
|
|
416
|
+
this.logger.trace("Created a new instance.");
|
|
417
|
+
}
|
|
418
|
+
async read(path) {
|
|
419
|
+
const config = await this.parser.read(path);
|
|
420
|
+
this.logger.trace("Read config from: %s", path);
|
|
421
|
+
return config;
|
|
422
|
+
}
|
|
423
|
+
async extend(paths, strategy = "OVERWRITE" /* OVERWRITE */) {
|
|
424
|
+
this.logger.trace("Will generate config from: %o with %s", paths, strategy);
|
|
425
|
+
const configs = (await Promise.all(
|
|
426
|
+
paths.map(async (path) => {
|
|
427
|
+
try {
|
|
428
|
+
const config = typeof path === "string" ? await this.parser.read(path) : path;
|
|
429
|
+
this.logger.trace("Extending config from: %s", path);
|
|
430
|
+
return config;
|
|
431
|
+
} catch (e) {
|
|
432
|
+
this.logger.trace("Failed to extend config from: %s", e.message);
|
|
433
|
+
}
|
|
434
|
+
})
|
|
435
|
+
)).filter(Boolean);
|
|
436
|
+
return this.merge(configs, strategy);
|
|
437
|
+
}
|
|
438
|
+
merge(configs, strategy = "OVERWRITE" /* OVERWRITE */) {
|
|
439
|
+
if (configs.length === 0) {
|
|
440
|
+
throw new Error("Nothing to merge, configuration files are empty.");
|
|
441
|
+
}
|
|
442
|
+
return merge(strategy, ...configs);
|
|
443
|
+
}
|
|
444
|
+
async env(definition, config) {
|
|
445
|
+
const env = typeof definition === "string" ? await this.parser.read(definition) : definition;
|
|
446
|
+
this.logger.trace("Environment variable extensions read: %o", definition);
|
|
447
|
+
const iter = /* @__PURE__ */ __name(async (obj, parent) => {
|
|
448
|
+
const data = await Promise.all(
|
|
449
|
+
Object.entries(obj).map(async ([key, value]) => {
|
|
450
|
+
const location = [..._nullishCoalesce(parent, () => ( [])), key];
|
|
451
|
+
if (typeof value === "string") {
|
|
452
|
+
return [{ key: location, env: value }];
|
|
453
|
+
} else if (typeof value === "object") {
|
|
454
|
+
let extensions;
|
|
455
|
+
if ("__element" /* ELEMENT */ in value) {
|
|
456
|
+
extensions = await iter(value["__element" /* ELEMENT */], [...location, "__element" /* ELEMENT */]);
|
|
457
|
+
this.logger.trace("Expanding location to elements: %s -> %s", location, extensions.map((extension) => extension.key.join(".")).join(", "));
|
|
458
|
+
}
|
|
459
|
+
if ("__name" /* NAME */ in value && "__format" /* PARSER */ in value) {
|
|
460
|
+
const variable = [
|
|
461
|
+
{
|
|
462
|
+
key: location,
|
|
463
|
+
env: value["__name" /* NAME */],
|
|
464
|
+
parser: value["__format" /* PARSER */],
|
|
465
|
+
extensions
|
|
466
|
+
}
|
|
467
|
+
];
|
|
468
|
+
return variable;
|
|
469
|
+
} else {
|
|
470
|
+
return iter(value, location);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
})
|
|
474
|
+
);
|
|
475
|
+
return data.flatMap((d) => d).filter(Boolean);
|
|
476
|
+
}, "iter");
|
|
477
|
+
const parsed = await iter(env);
|
|
478
|
+
const cb = /* @__PURE__ */ __name((config2, variable, data) => {
|
|
479
|
+
if (variable.parser) {
|
|
480
|
+
try {
|
|
481
|
+
data = this.parser.parse(variable.parser, data);
|
|
482
|
+
} catch (e) {
|
|
483
|
+
this.logger.trace("Can not parse environment environment variable for config: %s -> %s with %s", variable.key.join("."), variable.env, variable.parser);
|
|
484
|
+
throw e;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
this.logger.trace("Overwriting config with environment variable: %s -> %s", variable.key.join("."), variable.env);
|
|
488
|
+
return _objectpathimmutable2.default.set(config2, variable.key, data);
|
|
489
|
+
}, "cb");
|
|
490
|
+
parsed.forEach((variable) => {
|
|
491
|
+
let data;
|
|
492
|
+
data = process.env[variable.env];
|
|
493
|
+
if (data) {
|
|
494
|
+
config = cb(config, variable, data);
|
|
495
|
+
}
|
|
496
|
+
if (variable.extensions && variable.extensions.length > 0) {
|
|
497
|
+
const timeout = 6e4;
|
|
498
|
+
const startedAt = Date.now();
|
|
499
|
+
for (let i = 0; i < Infinity; i++) {
|
|
500
|
+
if (Date.now() - startedAt > timeout) {
|
|
501
|
+
throw new Error(`Timed-out in ${timeout}ms while looking for element environment variables.`);
|
|
502
|
+
}
|
|
503
|
+
const extensions = variable.extensions.map((extension) => {
|
|
504
|
+
const clone = JSON.parse(JSON.stringify(extension));
|
|
505
|
+
clone.env = clone.env.replace("${i}" /* ELEMENT_REPLACER */, i.toString());
|
|
506
|
+
clone.key[clone.key.findIndex((value) => value === "__element" /* ELEMENT */)] = i.toString();
|
|
507
|
+
data = process.env[clone.env];
|
|
508
|
+
if (!data) {
|
|
509
|
+
this.logger.trace("No extension for environment variable: %s -> %s", clone.key.join("."), clone.env);
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
512
|
+
config = cb(config, clone, data);
|
|
513
|
+
return true;
|
|
514
|
+
}).filter(Boolean);
|
|
515
|
+
if (extensions.length === 0) {
|
|
516
|
+
this.logger.trace("No more extensions for environment variables: %s -> %d", variable.key.join("."), i);
|
|
517
|
+
break;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
});
|
|
522
|
+
return config;
|
|
523
|
+
}
|
|
524
|
+
async write(path, data) {
|
|
525
|
+
return this.parser.write(path, data);
|
|
526
|
+
}
|
|
527
|
+
recalculate() {
|
|
528
|
+
this.isVerbose = isVerbose(this.logLevel);
|
|
529
|
+
this.isDebug = isDebug(this.logLevel);
|
|
530
|
+
this.isSilent = isSilent(this.logLevel);
|
|
531
|
+
}
|
|
532
|
+
};
|
|
533
|
+
__name(ConfigService, "ConfigService");
|
|
534
|
+
|
|
535
|
+
// src/lib/locker/locker.service.ts
|
|
536
|
+
|
|
537
|
+
var LockerService = class {
|
|
538
|
+
constructor(file, parser, root, context) {
|
|
539
|
+
this.file = file;
|
|
540
|
+
this.parser = parser;
|
|
541
|
+
this.root = root;
|
|
542
|
+
this.toLock = [];
|
|
543
|
+
this.toUnlock = [];
|
|
544
|
+
this.fs = new FileSystemService();
|
|
545
|
+
this.logger = new Logger(_nullishCoalesce(context, () => ( this.constructor.name)));
|
|
546
|
+
if (!this.parser) {
|
|
547
|
+
const parser2 = new ParserService();
|
|
548
|
+
this.parser = parser2.getParser(file);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
hasLock() {
|
|
552
|
+
return this.toLock.length > 0;
|
|
553
|
+
}
|
|
554
|
+
hasUnlock() {
|
|
555
|
+
return this.toUnlock.length > 0;
|
|
556
|
+
}
|
|
557
|
+
addLock(...data) {
|
|
558
|
+
this.toLock = [...this.toLock, ...data];
|
|
559
|
+
}
|
|
560
|
+
addUnlock(...data) {
|
|
561
|
+
this.toUnlock = [...this.toUnlock, ...data];
|
|
562
|
+
}
|
|
563
|
+
async lockAll() {
|
|
564
|
+
if (this.hasLock()) {
|
|
565
|
+
await this.lock(...this.toLock);
|
|
566
|
+
this.toLock = [];
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
async unlockAll() {
|
|
570
|
+
if (this.toUnlock.length > 0) {
|
|
571
|
+
await this.unlock(...this.toUnlock);
|
|
572
|
+
this.toUnlock = [];
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
async all() {
|
|
576
|
+
await this.unlockAll();
|
|
577
|
+
await this.lockAll();
|
|
578
|
+
}
|
|
579
|
+
async lock(...data) {
|
|
580
|
+
let lock = await _asyncNullishCoalesce(await this.tryRead(), async () => ( {}));
|
|
581
|
+
data.forEach((d) => {
|
|
582
|
+
if (_optionalChain([d, 'optionalAccess', _7 => _7.enabled]) === false) {
|
|
583
|
+
return;
|
|
584
|
+
} else if (!_optionalChain([d, 'optionalAccess', _8 => _8.data]) || Array.isArray(_optionalChain([d, 'optionalAccess', _9 => _9.data])) && d.data.length === 0 || typeof _optionalChain([d, 'optionalAccess', _10 => _10.data]) === "object" && Object.keys(d.data).length === 0) {
|
|
585
|
+
return;
|
|
586
|
+
}
|
|
587
|
+
const path = this.buildPath(d);
|
|
588
|
+
if (_optionalChain([d, 'optionalAccess', _11 => _11.merge])) {
|
|
589
|
+
let parsed;
|
|
590
|
+
if (typeof d.data === "object") {
|
|
591
|
+
parsed = merge(d.merge, _objectpathimmutable2.default.get(lock, path, Array.isArray(d.data) ? [] : {}), d.data);
|
|
592
|
+
} else {
|
|
593
|
+
this.logger.warn('"%s" path with type "%s" is not mergeable.', path, typeof d.data);
|
|
594
|
+
parsed = d.data;
|
|
595
|
+
}
|
|
596
|
+
lock = _objectpathimmutable2.default.set(lock, path, parsed);
|
|
597
|
+
this.logger.verbose("Merge lock: %s -> %o", path, d.data);
|
|
598
|
+
} else {
|
|
599
|
+
lock = _objectpathimmutable2.default.set(lock, path, d.data);
|
|
600
|
+
this.logger.verbose("Override lock: %s -> %o", path, d.data);
|
|
601
|
+
}
|
|
602
|
+
});
|
|
603
|
+
await this.write(lock);
|
|
604
|
+
}
|
|
605
|
+
async unlock(...data) {
|
|
606
|
+
let lock = await this.tryRead();
|
|
607
|
+
if (!lock) {
|
|
608
|
+
this.logger.verbose("Lock file not found. Nothing to unlock.");
|
|
609
|
+
return;
|
|
610
|
+
}
|
|
611
|
+
if (data.length > 0) {
|
|
612
|
+
data.forEach((d) => {
|
|
613
|
+
if (_optionalChain([d, 'optionalAccess', _12 => _12.enabled]) === false) {
|
|
614
|
+
return;
|
|
615
|
+
}
|
|
616
|
+
const path = this.buildPath(d);
|
|
617
|
+
lock = _objectpathimmutable2.default.del(lock, path);
|
|
618
|
+
this.logger.verbose("Unlocked: %s", path);
|
|
619
|
+
for (let i = path.length - 1; i >= 0; i--) {
|
|
620
|
+
const parentPath = path.slice(0, i);
|
|
621
|
+
const parent = _objectpathimmutable2.default.get(lock, parentPath);
|
|
622
|
+
if (!parent || Array.isArray(parent) && parent.length === 0 || typeof parent === "object" && Object.keys(parent).length === 0) {
|
|
623
|
+
this.logger.verbose("Unlocked parent: %s -> %s", path, parentPath);
|
|
624
|
+
lock = _objectpathimmutable2.default.del(lock, parentPath);
|
|
625
|
+
} else {
|
|
626
|
+
break;
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
});
|
|
630
|
+
} else {
|
|
631
|
+
lock = _objectpathimmutable2.default.del(lock, this.root);
|
|
632
|
+
this.logger.verbose("Unlocked module: %s", this.root);
|
|
633
|
+
}
|
|
634
|
+
await this.write(_nullishCoalesce(lock, () => ( {})));
|
|
635
|
+
}
|
|
636
|
+
async read() {
|
|
637
|
+
return this.parser.parse(await this.fs.read(this.file));
|
|
638
|
+
}
|
|
639
|
+
async tryRead() {
|
|
640
|
+
try {
|
|
641
|
+
return this.parser.parse(await this.fs.read(this.file));
|
|
642
|
+
} catch (e2) {
|
|
643
|
+
this.logger.trace("Can not read lockfile: %s", this.file);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
async write(data) {
|
|
647
|
+
if (!data || Array.isArray(data) && data.length === 0 || typeof data === "object" && Object.keys(data).length === 0) {
|
|
648
|
+
this.logger.trace("Trying to write empty lock file, deleting it instead: %s", this.file);
|
|
649
|
+
return this.fs.remove(this.file);
|
|
650
|
+
}
|
|
651
|
+
return this.fs.write(this.file, this.parser.stringify(data));
|
|
652
|
+
}
|
|
653
|
+
buildPath(d) {
|
|
654
|
+
if (_optionalChain([d, 'optionalAccess', _13 => _13.root]) !== true && _optionalChain([this, 'access', _14 => _14.root, 'optionalAccess', _15 => _15.length])) {
|
|
655
|
+
return [...this.root, ...this.normalizePath(d.path)];
|
|
656
|
+
}
|
|
657
|
+
return this.normalizePath(d.path);
|
|
658
|
+
}
|
|
659
|
+
normalizePath(path) {
|
|
660
|
+
if (Array.isArray(path)) {
|
|
661
|
+
return path.map((p) => p.toString());
|
|
662
|
+
} else if (typeof path === "string") {
|
|
663
|
+
return path.split(".");
|
|
664
|
+
}
|
|
665
|
+
return [];
|
|
666
|
+
}
|
|
667
|
+
};
|
|
668
|
+
__name(LockerService, "LockerService");
|
|
669
|
+
|
|
670
|
+
// src/lib/store/store.service.ts
|
|
671
|
+
var StoreService = class {
|
|
672
|
+
constructor() {
|
|
673
|
+
this.store = {};
|
|
674
|
+
if (StoreService.instance) {
|
|
675
|
+
return StoreService.instance;
|
|
676
|
+
} else {
|
|
677
|
+
StoreService.instance = this;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
has(key) {
|
|
681
|
+
return !!this.store[key];
|
|
682
|
+
}
|
|
683
|
+
get(key) {
|
|
684
|
+
return this.store[key];
|
|
685
|
+
}
|
|
686
|
+
set(key, data) {
|
|
687
|
+
this.store[key] = data;
|
|
688
|
+
return data;
|
|
689
|
+
}
|
|
690
|
+
};
|
|
691
|
+
__name(StoreService, "StoreService");
|
|
692
|
+
|
|
693
|
+
// src/lib/validator/validator.service.ts
|
|
694
|
+
var _classtransformer = require('class-transformer');
|
|
695
|
+
var _classvalidator = require('class-validator');
|
|
696
|
+
var ValidatorService = class {
|
|
697
|
+
constructor(options) {
|
|
698
|
+
this.options = options;
|
|
699
|
+
if (ValidatorService.instance) {
|
|
700
|
+
return ValidatorService.instance;
|
|
701
|
+
}
|
|
702
|
+
this.options = {
|
|
703
|
+
validator: {
|
|
704
|
+
skipMissingProperties: true,
|
|
705
|
+
whitelist: false,
|
|
706
|
+
always: true,
|
|
707
|
+
enableDebugMessages: true
|
|
708
|
+
},
|
|
709
|
+
transformer: { enableImplicitConversion: true },
|
|
710
|
+
..._nullishCoalesce(options, () => ( {}))
|
|
711
|
+
};
|
|
712
|
+
this.logger = new Logger(this.constructor.name);
|
|
713
|
+
ValidatorService.instance = this;
|
|
714
|
+
this.logger.trace("Created a new instance.");
|
|
715
|
+
}
|
|
716
|
+
async validate(classType, object, options) {
|
|
717
|
+
const classObject = _classtransformer.plainToClass.call(void 0, classType, object, { ...this.options.transformer, ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _16 => _16.transformer]), () => ( {})) });
|
|
718
|
+
const errors = await _classvalidator.validate.call(void 0, classObject, { ...this.options.validator, ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _17 => _17.validator]), () => ( {})) });
|
|
719
|
+
if (errors.length) {
|
|
720
|
+
errors.forEach((error) => {
|
|
721
|
+
this.logValidationError(error);
|
|
722
|
+
});
|
|
723
|
+
throw new Error("Validation failed.");
|
|
724
|
+
}
|
|
725
|
+
return classObject;
|
|
726
|
+
}
|
|
727
|
+
validateSync(classType, object, options) {
|
|
728
|
+
const classObject = _classtransformer.plainToClass.call(void 0, classType, object, { ...this.options.transformer, ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _18 => _18.transformer]), () => ( {})) });
|
|
729
|
+
const errors = _classvalidator.validateSync.call(void 0, classObject, { ...this.options.validator, ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _19 => _19.validator]), () => ( {})) });
|
|
730
|
+
if (errors.length) {
|
|
731
|
+
errors.forEach((error) => {
|
|
732
|
+
this.logValidationError(error);
|
|
733
|
+
});
|
|
734
|
+
throw new Error("Validation failed.");
|
|
735
|
+
}
|
|
736
|
+
return classObject;
|
|
737
|
+
}
|
|
738
|
+
logValidationError(err) {
|
|
739
|
+
this.logger.error('Field "%s" failed validation with value "%s": %o', err.property, err.value, err.constraints);
|
|
740
|
+
}
|
|
741
|
+
};
|
|
742
|
+
__name(ValidatorService, "ValidatorService");
|
|
743
|
+
|
|
744
|
+
// src/lib/setup.ts
|
|
745
|
+
function setup() {
|
|
746
|
+
const inspect = process.argv.indexOf("--inspect");
|
|
747
|
+
if (inspect !== -1) {
|
|
748
|
+
__require("inspector").open();
|
|
749
|
+
process.argv.splice(inspect, 1);
|
|
750
|
+
}
|
|
751
|
+
const verbose = process.argv.indexOf("--verbose");
|
|
752
|
+
if (verbose !== -1) {
|
|
753
|
+
process.env.LOG_LEVEL = "verbose";
|
|
754
|
+
process.argv.splice(verbose, 1);
|
|
755
|
+
}
|
|
756
|
+
const debug = process.argv.indexOf("--debug");
|
|
757
|
+
if (debug !== -1) {
|
|
758
|
+
process.env.LOG_LEVEL = "debug";
|
|
759
|
+
process.argv.splice(debug, 1);
|
|
760
|
+
}
|
|
761
|
+
const trace = process.argv.indexOf("--trace");
|
|
762
|
+
if (trace !== -1) {
|
|
763
|
+
process.env.LOG_LEVEL = "trace";
|
|
764
|
+
process.argv.splice(trace, 1);
|
|
765
|
+
}
|
|
766
|
+
const silent = process.argv.indexOf("--silent");
|
|
767
|
+
if (silent !== -1) {
|
|
768
|
+
process.env.LOG_LEVEL = "silent";
|
|
769
|
+
process.argv.splice(silent, 1);
|
|
770
|
+
}
|
|
771
|
+
const sourceMaps = process.argv.indexOf("--source-map");
|
|
772
|
+
if (sourceMaps !== -1) {
|
|
773
|
+
__require("source-map-support").install();
|
|
774
|
+
process.argv.splice(sourceMaps, 1);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
__name(setup, "setup");
|
|
778
|
+
|
|
779
|
+
// src/utils/logger/logger.ts
|
|
780
|
+
var Logger = class {
|
|
781
|
+
constructor(context, options) {
|
|
782
|
+
this.context = context;
|
|
783
|
+
this.options = options;
|
|
784
|
+
if (Logger.instance) {
|
|
785
|
+
this.logger = Logger.instance;
|
|
786
|
+
} else if (context === ConfigService.name) {
|
|
787
|
+
const level = Object.values(LogLevels).includes(_optionalChain([options, 'optionalAccess', _20 => _20.level])) ? options.level : "INFO" /* INFO */;
|
|
788
|
+
this.options = {
|
|
789
|
+
useIcons: true,
|
|
790
|
+
...options,
|
|
791
|
+
level
|
|
792
|
+
};
|
|
793
|
+
this.logger = this.initiateLogger();
|
|
794
|
+
this.trace("Logger singleton initiated from context: %s", context);
|
|
795
|
+
Logger.instance = this.logger;
|
|
796
|
+
} else {
|
|
797
|
+
throw new Error("Logger can only be initiated inside the config service context!");
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
log(level, data, ...args) {
|
|
801
|
+
return this.parseMessage(level, data, args);
|
|
802
|
+
}
|
|
803
|
+
direct(data, ...args) {
|
|
804
|
+
return this.parseMessage("DIRECT" /* DIRECT */, data, args);
|
|
805
|
+
}
|
|
806
|
+
fatal(data, ...args) {
|
|
807
|
+
return this.parseMessage("FATAL" /* FATAL */, data, args);
|
|
808
|
+
}
|
|
809
|
+
error(data, ...args) {
|
|
810
|
+
return this.parseMessage("ERROR" /* ERROR */, data, args);
|
|
811
|
+
}
|
|
812
|
+
warn(data, ...args) {
|
|
813
|
+
return this.parseMessage("WARN" /* WARN */, data, args);
|
|
814
|
+
}
|
|
815
|
+
info(data, ...args) {
|
|
816
|
+
return this.parseMessage("INFO" /* INFO */, data, args);
|
|
817
|
+
}
|
|
818
|
+
debug(data, ...args) {
|
|
819
|
+
return this.parseMessage("DEBUG" /* DEBUG */, data, args);
|
|
820
|
+
}
|
|
821
|
+
verbose(data, ...args) {
|
|
822
|
+
return this.parseMessage("VERBOSE" /* VERBOSE */, data, args);
|
|
823
|
+
}
|
|
824
|
+
trace(data, ...args) {
|
|
825
|
+
return this.parseMessage("TRACE" /* TRACE */, data, args);
|
|
826
|
+
}
|
|
827
|
+
run(data, ...args) {
|
|
828
|
+
return this.parseMessage("INFO" /* INFO */, data, args, { status: "run" /* RUN */ });
|
|
829
|
+
}
|
|
830
|
+
end(data, ...args) {
|
|
831
|
+
return this.parseMessage("INFO" /* INFO */, data, args, { status: "end" /* END */ });
|
|
832
|
+
}
|
|
833
|
+
stage(data, ...args) {
|
|
834
|
+
return this.parseMessage("TRACE" /* TRACE */, data, args, { status: "stage" /* STAGE */ });
|
|
835
|
+
}
|
|
836
|
+
initiateLogger() {
|
|
837
|
+
const logFormat = _winston.format.printf(({ level, message, context, status }) => {
|
|
838
|
+
let multiLineMessage;
|
|
839
|
+
multiLineMessage = message.split(_os.EOL);
|
|
840
|
+
multiLineMessage = multiLineMessage.filter((msg) => msg.trim() !== "").filter(Boolean);
|
|
841
|
+
multiLineMessage = multiLineMessage.map((msg) => {
|
|
842
|
+
return this.logColoring({
|
|
843
|
+
level,
|
|
844
|
+
message: msg,
|
|
845
|
+
context,
|
|
846
|
+
status
|
|
847
|
+
});
|
|
848
|
+
});
|
|
849
|
+
return multiLineMessage.join(_os.EOL);
|
|
850
|
+
});
|
|
851
|
+
const logger = _winston2.default.createLogger({
|
|
852
|
+
level: this.options.level,
|
|
853
|
+
format: _winston.format.combine(_winston.format.splat(), _winston.format.json({ space: 2 }), _winston.format.prettyPrint(), logFormat),
|
|
854
|
+
levels: Object.values(LogLevels).reduce((o, level, i) => {
|
|
855
|
+
return {
|
|
856
|
+
...o,
|
|
857
|
+
[level]: i
|
|
858
|
+
};
|
|
859
|
+
}, {}),
|
|
860
|
+
silent: this.options.level === "SILENT" /* SILENT */,
|
|
861
|
+
transports: [
|
|
862
|
+
new _winston.transports.Console({
|
|
863
|
+
stderrLevels: ["FATAL" /* FATAL */, "ERROR" /* ERROR */]
|
|
864
|
+
})
|
|
865
|
+
]
|
|
866
|
+
});
|
|
867
|
+
logger.log("TRACE" /* TRACE */, "Initiated new logger with level: %s", this.options.level, { context: this.constructor.name });
|
|
868
|
+
return logger;
|
|
869
|
+
}
|
|
870
|
+
parseMessage(level, data, args, format2) {
|
|
871
|
+
if (!this.logger && !Logger.instance) {
|
|
872
|
+
return;
|
|
873
|
+
} else if (Logger.instance) {
|
|
874
|
+
this.logger = Logger.instance;
|
|
875
|
+
}
|
|
876
|
+
this.logger.log(level, data.toString(), ..._nullishCoalesce(args, () => ( [])), { context: this.context, ..._nullishCoalesce(format2, () => ( {})) });
|
|
877
|
+
}
|
|
878
|
+
logColoring({ level, message, context, status }) {
|
|
879
|
+
let icon;
|
|
880
|
+
let coloring = /* @__PURE__ */ __name((input) => {
|
|
881
|
+
return input;
|
|
882
|
+
}, "coloring");
|
|
883
|
+
let msgColoring = /* @__PURE__ */ __name((input) => {
|
|
884
|
+
return input;
|
|
885
|
+
}, "msgColoring");
|
|
886
|
+
switch (level) {
|
|
887
|
+
case "DIRECT" /* DIRECT */:
|
|
888
|
+
return message;
|
|
889
|
+
case "FATAL" /* FATAL */:
|
|
890
|
+
coloring = /* @__PURE__ */ __name((input) => color.red(input), "coloring");
|
|
891
|
+
if (_optionalChain([this, 'access', _21 => _21.options, 'optionalAccess', _22 => _22.useIcons])) {
|
|
892
|
+
icon = _listr2.figures.checkboxOn;
|
|
893
|
+
}
|
|
894
|
+
break;
|
|
895
|
+
case "ERROR" /* ERROR */:
|
|
896
|
+
coloring = color.red;
|
|
897
|
+
if (_optionalChain([this, 'access', _23 => _23.options, 'optionalAccess', _24 => _24.useIcons])) {
|
|
898
|
+
icon = _listr2.figures.cross;
|
|
899
|
+
}
|
|
900
|
+
break;
|
|
901
|
+
case "WARN" /* WARN */:
|
|
902
|
+
coloring = color.yellow;
|
|
903
|
+
if (_optionalChain([this, 'access', _25 => _25.options, 'optionalAccess', _26 => _26.useIcons])) {
|
|
904
|
+
icon = _listr2.figures.warning;
|
|
905
|
+
}
|
|
906
|
+
break;
|
|
907
|
+
case "INFO" /* INFO */:
|
|
908
|
+
coloring = color.green;
|
|
909
|
+
if (_optionalChain([this, 'access', _27 => _27.options, 'optionalAccess', _28 => _28.useIcons])) {
|
|
910
|
+
icon = _listr2.figures.pointerSmall;
|
|
911
|
+
}
|
|
912
|
+
break;
|
|
913
|
+
case "VERBOSE" /* VERBOSE */:
|
|
914
|
+
coloring = color.dim;
|
|
915
|
+
if (_optionalChain([this, 'access', _29 => _29.options, 'optionalAccess', _30 => _30.useIcons])) {
|
|
916
|
+
icon = "\u2607";
|
|
917
|
+
}
|
|
918
|
+
break;
|
|
919
|
+
case "DEBUG" /* DEBUG */:
|
|
920
|
+
coloring = color.cyan;
|
|
921
|
+
msgColoring = color.dim;
|
|
922
|
+
if (_optionalChain([this, 'access', _31 => _31.options, 'optionalAccess', _32 => _32.useIcons])) {
|
|
923
|
+
icon = "\uF188";
|
|
924
|
+
}
|
|
925
|
+
break;
|
|
926
|
+
case "TRACE" /* TRACE */:
|
|
927
|
+
coloring = color.magenta;
|
|
928
|
+
msgColoring = color.dim;
|
|
929
|
+
if (_optionalChain([this, 'access', _33 => _33.options, 'optionalAccess', _34 => _34.useIcons])) {
|
|
930
|
+
icon = "\u26B1";
|
|
931
|
+
}
|
|
932
|
+
break;
|
|
933
|
+
}
|
|
934
|
+
if (!icon) {
|
|
935
|
+
icon = `[${level.at(0).toUpperCase()}]`;
|
|
936
|
+
}
|
|
937
|
+
return `${coloring(icon)}${context ? " " + coloring(`[${context}]`) : ""}${status ? " " + coloring(`[${status}]`) : ""} ${msgColoring(message)}`;
|
|
938
|
+
}
|
|
939
|
+
};
|
|
940
|
+
__name(Logger, "Logger");
|
|
941
|
+
|
|
942
|
+
// src/utils/logger/listr-logger.ts
|
|
943
|
+
var ListrLogger = class extends _listr2.Logger {
|
|
944
|
+
constructor(context) {
|
|
945
|
+
super();
|
|
946
|
+
this.logger = new Logger(context);
|
|
947
|
+
}
|
|
948
|
+
fail(message) {
|
|
949
|
+
this.logger.error(message);
|
|
950
|
+
}
|
|
951
|
+
skip(message) {
|
|
952
|
+
this.logger.warn(message, { status: "skip" });
|
|
953
|
+
}
|
|
954
|
+
success(message) {
|
|
955
|
+
this.logger.info(message, { status: "end" });
|
|
956
|
+
}
|
|
957
|
+
data(message) {
|
|
958
|
+
this.logger.info(message);
|
|
959
|
+
}
|
|
960
|
+
start(message) {
|
|
961
|
+
this.logger.info(message, { status: "run" });
|
|
962
|
+
}
|
|
963
|
+
title(message) {
|
|
964
|
+
this.logger.info(message);
|
|
965
|
+
}
|
|
966
|
+
retry(message) {
|
|
967
|
+
this.logger.warn(message, { status: "retry" });
|
|
968
|
+
}
|
|
969
|
+
rollback(message) {
|
|
970
|
+
this.logger.error(message, { status: "rollback" });
|
|
971
|
+
}
|
|
972
|
+
};
|
|
973
|
+
__name(ListrLogger, "ListrLogger");
|
|
974
|
+
|
|
975
|
+
// src/utils/logger/pipe/pipe-process-to-listr.ts
|
|
976
|
+
var _through = require('through'); var _through2 = _interopRequireDefault(_through);
|
|
977
|
+
function pipeProcessThroughListr(task, instance) {
|
|
978
|
+
const logOut = _through2.default.call(void 0, (chunk) => {
|
|
979
|
+
task.output = _optionalChain([chunk, 'optionalAccess', _35 => _35.toString, 'call', _36 => _36("utf-8"), 'access', _37 => _37.trim, 'call', _38 => _38()]);
|
|
980
|
+
});
|
|
981
|
+
instance.stdout.pipe(logOut);
|
|
982
|
+
instance.stderr.pipe(logOut);
|
|
983
|
+
return instance;
|
|
984
|
+
}
|
|
985
|
+
__name(pipeProcessThroughListr, "pipeProcessThroughListr");
|
|
986
|
+
|
|
987
|
+
// src/utils/logger/pipe/pipe-process-to-logger.ts
|
|
988
|
+
|
|
989
|
+
function pipeProcessToLogger(logger, instance, options) {
|
|
990
|
+
options = {
|
|
991
|
+
start: "INFO" /* INFO */,
|
|
992
|
+
end: "INFO" /* INFO */,
|
|
993
|
+
stdout: "INFO" /* INFO */,
|
|
994
|
+
stderr: "WARN" /* WARN */,
|
|
995
|
+
...options
|
|
996
|
+
};
|
|
997
|
+
if (options.start) {
|
|
998
|
+
logger.run(instance.spawnargs.join(" "), { level: options.start, context: options.context });
|
|
999
|
+
}
|
|
1000
|
+
if (instance.stdout) {
|
|
1001
|
+
instance.stdout.pipe(
|
|
1002
|
+
_through2.default.call(void 0, (chunk) => {
|
|
1003
|
+
logger.log(options.stdout, chunk, { context: options.context });
|
|
1004
|
+
})
|
|
1005
|
+
);
|
|
1006
|
+
}
|
|
1007
|
+
if (instance.stderr) {
|
|
1008
|
+
instance.stderr.pipe(
|
|
1009
|
+
_through2.default.call(void 0, (chunk) => {
|
|
1010
|
+
logger.log(options.stderr, chunk, { context: options.context });
|
|
1011
|
+
})
|
|
1012
|
+
);
|
|
1013
|
+
}
|
|
1014
|
+
void instance.on("exit", (code, signal) => {
|
|
1015
|
+
const message = `Process ended with code ${code}${signal ? ` and signal ${signal}` : ""}.`;
|
|
1016
|
+
logger.debug(message, { context: options.context });
|
|
1017
|
+
if (options.end) {
|
|
1018
|
+
logger.end(instance.spawnargs.join(" "), { level: options.end, context: options.context });
|
|
1019
|
+
}
|
|
1020
|
+
if (_optionalChain([options, 'optionalAccess', _39 => _39.callback])) {
|
|
1021
|
+
options.callback();
|
|
1022
|
+
}
|
|
1023
|
+
});
|
|
1024
|
+
void instance.on("error", (error) => {
|
|
1025
|
+
logger.fatal(error.message, { context: options.context });
|
|
1026
|
+
logger.debug(error.stack, { context: options.context });
|
|
1027
|
+
if (_optionalChain([options, 'optionalAccess', _40 => _40.callback])) {
|
|
1028
|
+
options.callback(error);
|
|
1029
|
+
}
|
|
1030
|
+
});
|
|
1031
|
+
return instance;
|
|
1032
|
+
}
|
|
1033
|
+
__name(pipeProcessToLogger, "pipeProcessToLogger");
|
|
1034
|
+
|
|
1035
|
+
// src/constants/global-flags.constants.ts
|
|
1036
|
+
var CLI_FLAGS = {
|
|
1037
|
+
["log-level"]: _core.Flags.enum({
|
|
1038
|
+
default: "INFO" /* INFO */,
|
|
1039
|
+
env: "LOG_LEVEL",
|
|
1040
|
+
description: "Set the log level of the application.",
|
|
1041
|
+
options: [...Object.values(LogLevels).map((level) => level.toLowerCase())],
|
|
1042
|
+
helpGroup: "CLI" /* CLI */,
|
|
1043
|
+
parse: async (input) => _optionalChain([input, 'optionalAccess', _41 => _41.toUpperCase, 'call', _42 => _42()])
|
|
1044
|
+
}),
|
|
1045
|
+
ci: _core.Flags.boolean({
|
|
1046
|
+
default: false,
|
|
1047
|
+
hidden: true,
|
|
1048
|
+
env: "CI",
|
|
1049
|
+
description: "Instruct whether this is running the CI/CD configuration.",
|
|
1050
|
+
helpGroup: "CLI" /* CLI */
|
|
1051
|
+
}),
|
|
1052
|
+
json: _core.Flags.boolean({
|
|
1053
|
+
default: false,
|
|
1054
|
+
hidden: true,
|
|
1055
|
+
env: "JSON",
|
|
1056
|
+
description: "Put the CLI to respond in JSON.",
|
|
1057
|
+
helpGroup: "CLI" /* CLI */
|
|
1058
|
+
})
|
|
1059
|
+
};
|
|
1060
|
+
|
|
1061
|
+
// src/commands/base.command.ts
|
|
1062
|
+
var Command = class extends _core.Command {
|
|
1063
|
+
constructor() {
|
|
1064
|
+
super(...arguments);
|
|
1065
|
+
this.flags = {};
|
|
1066
|
+
this.args = {};
|
|
1067
|
+
}
|
|
1068
|
+
shouldRunBefore() {
|
|
1069
|
+
}
|
|
1070
|
+
shouldRunAfter(_ctx) {
|
|
1071
|
+
}
|
|
1072
|
+
run() {
|
|
1073
|
+
throw new Error("The command should have a run function to do something!");
|
|
1074
|
+
}
|
|
1075
|
+
async _run() {
|
|
1076
|
+
let result;
|
|
1077
|
+
try {
|
|
1078
|
+
delete process.env[this.config.scopedEnvVarKey("REDIRECTED")];
|
|
1079
|
+
await this.init();
|
|
1080
|
+
result = await this.run();
|
|
1081
|
+
await this.finally();
|
|
1082
|
+
} catch (error) {
|
|
1083
|
+
await this.catch(error, 127);
|
|
1084
|
+
}
|
|
1085
|
+
if (result && this.jsonEnabled()) {
|
|
1086
|
+
_core.CliUx.ux.styledJSON(this.toSuccessJson(result));
|
|
1087
|
+
}
|
|
1088
|
+
return result;
|
|
1089
|
+
}
|
|
1090
|
+
exit(code) {
|
|
1091
|
+
this.logger.trace("Code -> %d", code, { status: "exit" /* EXIT */ });
|
|
1092
|
+
process.exit(_nullishCoalesce(code, () => ( 0)));
|
|
1093
|
+
}
|
|
1094
|
+
runTasks() {
|
|
1095
|
+
return this.tasks.runAll();
|
|
1096
|
+
}
|
|
1097
|
+
prompt(options) {
|
|
1098
|
+
return _listr2.createPrompt.call(void 0, options, {
|
|
1099
|
+
error: true,
|
|
1100
|
+
stdout: process.stdout
|
|
1101
|
+
});
|
|
1102
|
+
}
|
|
1103
|
+
setCtxDefaults(...defaults) {
|
|
1104
|
+
setCtxDefaults(this.tasks.options.ctx, ...defaults);
|
|
1105
|
+
this.logger.trace("Updated context with defaults: %o", this.tasks.options.ctx, { status: "ctx" });
|
|
1106
|
+
}
|
|
1107
|
+
setCtxAssign(...assigns) {
|
|
1108
|
+
setCtxAssign(this.tasks.options.ctx, ...assigns);
|
|
1109
|
+
this.logger.trace("Updated context with assign: %o", this.tasks.options.ctx, { status: "ctx" });
|
|
1110
|
+
}
|
|
1111
|
+
pipeProcessToLogger(instance, options) {
|
|
1112
|
+
return pipeProcessToLogger(this.logger, instance, options);
|
|
1113
|
+
}
|
|
1114
|
+
pipeProcessThroughListr(task, instance) {
|
|
1115
|
+
return pipeProcessThroughListr(task, instance);
|
|
1116
|
+
}
|
|
1117
|
+
async init() {
|
|
1118
|
+
this.constructor.flags = Object.assign({}, CLI_FLAGS, this.constructor.flags);
|
|
1119
|
+
await super.init();
|
|
1120
|
+
let err;
|
|
1121
|
+
try {
|
|
1122
|
+
const { flags, args } = await this.parse();
|
|
1123
|
+
this.flags = flags;
|
|
1124
|
+
this.args = args;
|
|
1125
|
+
} catch (e) {
|
|
1126
|
+
err = e;
|
|
1127
|
+
}
|
|
1128
|
+
this.cs = new ConfigService(this.config, this.ctor, {
|
|
1129
|
+
logLevel: this.flags["log-level"],
|
|
1130
|
+
ci: this.flags.ci,
|
|
1131
|
+
json: this.flags.json
|
|
1132
|
+
});
|
|
1133
|
+
this.context = this.cs.command.id ? this.cs.command.id : this.cs.command.name;
|
|
1134
|
+
this.logger = new Logger(null, { level: this.cs.logLevel });
|
|
1135
|
+
this.store = new StoreService();
|
|
1136
|
+
this.greet();
|
|
1137
|
+
if (err) {
|
|
1138
|
+
throw err;
|
|
1139
|
+
}
|
|
1140
|
+
this.logger.stage("Initiating services.");
|
|
1141
|
+
this.parser = new ParserService();
|
|
1142
|
+
this.fs = new FileSystemService();
|
|
1143
|
+
this.validator = new ValidatorService();
|
|
1144
|
+
this.tasks = new (0, _listr2.Manager)({
|
|
1145
|
+
rendererFallback: this.cs.isDebug,
|
|
1146
|
+
rendererSilent: this.cs.isSilent,
|
|
1147
|
+
nonTTYRendererOptions: {
|
|
1148
|
+
logEmptyTitle: false,
|
|
1149
|
+
logTitleChange: false,
|
|
1150
|
+
logger: ListrLogger
|
|
1151
|
+
},
|
|
1152
|
+
ctx: {}
|
|
1153
|
+
});
|
|
1154
|
+
if (this.cs.oclif.windows) {
|
|
1155
|
+
_readline.createInterface.call(void 0, {
|
|
1156
|
+
input: process.stdin,
|
|
1157
|
+
output: process.stdout
|
|
1158
|
+
}).on("SIGINT", () => {
|
|
1159
|
+
process.kill(process.pid, "SIGINT");
|
|
1160
|
+
});
|
|
1161
|
+
}
|
|
1162
|
+
const terminate = /* @__PURE__ */ __name(() => {
|
|
1163
|
+
this.logger.fatal("Caught terminate signal.", { status: "terminate" /* TERMINATE */ });
|
|
1164
|
+
process.exit(1);
|
|
1165
|
+
}, "terminate");
|
|
1166
|
+
process.on("SIGINT", terminate);
|
|
1167
|
+
process.on("SIGTERM", terminate);
|
|
1168
|
+
this.logger.stage("Running shouldRunBefore.");
|
|
1169
|
+
await this.shouldRunBefore();
|
|
1170
|
+
this.logger.stage("Finished shouldRunBefore.");
|
|
1171
|
+
}
|
|
1172
|
+
async finally() {
|
|
1173
|
+
this.logger.stage("Running tasks.");
|
|
1174
|
+
const ctx = await this.runTasks();
|
|
1175
|
+
this.logger.stage("Finished tasks.");
|
|
1176
|
+
this.logger.stage("Running shouldRunAfter.");
|
|
1177
|
+
await this.shouldRunAfter(ctx);
|
|
1178
|
+
this.logger.stage("Finished shouldRunAfter.");
|
|
1179
|
+
return { ctx };
|
|
1180
|
+
}
|
|
1181
|
+
catch(e, exit) {
|
|
1182
|
+
if (!this.logger) {
|
|
1183
|
+
console.error("Logger has not been initiated yet!");
|
|
1184
|
+
console.error(e.message);
|
|
1185
|
+
console.debug(e.stack);
|
|
1186
|
+
}
|
|
1187
|
+
this.logger.fatal(e.message);
|
|
1188
|
+
this.logger.debug(e.stack, { context: "crash" });
|
|
1189
|
+
if (exit > 0) {
|
|
1190
|
+
this.exit(exit);
|
|
1191
|
+
}
|
|
1192
|
+
return;
|
|
1193
|
+
}
|
|
1194
|
+
greet() {
|
|
1195
|
+
if (this.cs.isSilent || this.cs.json) {
|
|
1196
|
+
return;
|
|
1197
|
+
}
|
|
1198
|
+
const logo = _nullishCoalesce(this.store.get("logo"), () => ( `${this.cs.oclif.name} v${this.cs.oclif.version}`));
|
|
1199
|
+
this.logger.direct(logo);
|
|
1200
|
+
if (!this.store.has("logo")) {
|
|
1201
|
+
this.logger.direct("-".repeat(logo.length));
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1204
|
+
};
|
|
1205
|
+
__name(Command, "Command");
|
|
1206
|
+
|
|
1207
|
+
// src/commands/config.command.ts
|
|
1208
|
+
var ConfigCommand = class extends Command {
|
|
1209
|
+
constructor() {
|
|
1210
|
+
super(...arguments);
|
|
1211
|
+
this.ux = _core.CliUx.ux;
|
|
1212
|
+
}
|
|
1213
|
+
async run() {
|
|
1214
|
+
this.logger.stage("Setting up config command.");
|
|
1215
|
+
const setup2 = await this.setup();
|
|
1216
|
+
this.choices = setup2.choices;
|
|
1217
|
+
this.locker = setup2.locker;
|
|
1218
|
+
this.logger.stage("User selection for configuration.");
|
|
1219
|
+
const response = await this.select();
|
|
1220
|
+
this.logger.stage("Will run selection: %s", response);
|
|
1221
|
+
return this.choices[response].bind(this)();
|
|
1222
|
+
}
|
|
1223
|
+
setup() {
|
|
1224
|
+
throw new Error("The command should be setup first!");
|
|
1225
|
+
}
|
|
1226
|
+
table(...options) {
|
|
1227
|
+
this.ux.table(...options);
|
|
1228
|
+
}
|
|
1229
|
+
async select() {
|
|
1230
|
+
const response = await this.prompt({
|
|
1231
|
+
type: "Select",
|
|
1232
|
+
message: "Please select what to do with the configuration.",
|
|
1233
|
+
choices: Object.keys(this.choices)
|
|
1234
|
+
});
|
|
1235
|
+
return response;
|
|
1236
|
+
}
|
|
1237
|
+
};
|
|
1238
|
+
__name(ConfigCommand, "ConfigCommand");
|
|
1239
|
+
|
|
1240
|
+
// src/hooks/not-found.hook.ts
|
|
1241
|
+
|
|
1242
|
+
var notFoundHook = /* @__PURE__ */ __name(async (opts) => {
|
|
1243
|
+
const logger = new Logger(opts.config.name);
|
|
1244
|
+
logger.fatal("Command not found. Take a look at help. You can also use --[h]elp flag for subcommands.", { custom: opts.config.name });
|
|
1245
|
+
logger.direct("");
|
|
1246
|
+
const help = new (0, _core.Help)(opts.config);
|
|
1247
|
+
await help.showHelp(["--all"]);
|
|
1248
|
+
process.exit(127);
|
|
1249
|
+
}, "notFoundHook");
|
|
1250
|
+
|
|
1251
|
+
// src/hooks/update-notifier.hook.ts
|
|
1252
|
+
var _updatenotifier = require('update-notifier'); var _updatenotifier2 = _interopRequireDefault(_updatenotifier);
|
|
1253
|
+
var updateNotifierHook = /* @__PURE__ */ __name(async (opts) => {
|
|
1254
|
+
_updatenotifier2.default.call(void 0, { pkg: { name: opts.config.name, version: opts.config.version } }).notify({ isGlobal: true });
|
|
1255
|
+
}, "updateNotifierHook");
|
|
1256
|
+
|
|
1257
|
+
// src/hooks/store.hook.ts
|
|
1258
|
+
var storeHook = /* @__PURE__ */ __name((cb) => async (opts) => {
|
|
1259
|
+
cb(opts, new StoreService());
|
|
1260
|
+
}, "storeHook");
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
|
|
1283
|
+
|
|
1284
|
+
|
|
1285
|
+
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
|
|
1289
|
+
|
|
1290
|
+
|
|
1291
|
+
|
|
1292
|
+
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
|
|
1297
|
+
|
|
1298
|
+
exports.CLI_FLAGS = CLI_FLAGS; exports.CliUx = _core.CliUx; exports.Command = Command; exports.ConfigCommand = ConfigCommand; exports.ConfigService = ConfigService; exports.EnvironmentVariableParser = EnvironmentVariableParser; exports.FileConstants = FileConstants; exports.FileSystemService = FileSystemService; exports.Flags = _core.Flags; exports.HelpGroups = HelpGroups; exports.JsonParser = JsonParser; exports.ListrLogger = ListrLogger; exports.LockerService = LockerService; exports.LogFieldStatus = LogFieldStatus; exports.LogLevels = LogLevels; exports.Logger = Logger; exports.MergeStrategy = MergeStrategy; exports.ParserService = ParserService; exports.StoreService = StoreService; exports.ValidatorService = ValidatorService; exports.YamlParser = YamlParser; exports.color = color; exports.fs = _fsextra2.default; exports.isDebug = isDebug; exports.isSilent = isSilent; exports.isVerbose = isVerbose; exports.merge = merge; exports.notFoundHook = notFoundHook; exports.pipeProcessThroughListr = pipeProcessThroughListr; exports.pipeProcessToLogger = pipeProcessToLogger; exports.setCtxAssign = setCtxAssign; exports.setCtxDefaults = setCtxDefaults; exports.setup = setup; exports.storeHook = storeHook; exports.uniqueFilter = uniqueFilter; exports.updateNotifierHook = updateNotifierHook;
|