@nestia/e2e 0.3.2 → 0.3.3

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.
@@ -1,357 +1,356 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __generator = (this && this.__generator) || function (thisArg, body) {
35
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
- function verb(n) { return function (v) { return step([n, v]); }; }
38
- function step(op) {
39
- if (f) throw new TypeError("Generator is already executing.");
40
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
- 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;
42
- if (y = 0, t) op = [op[0] & 2, t.value];
43
- switch (op[0]) {
44
- case 0: case 1: t = op; break;
45
- case 4: _.label++; return { value: op[1], done: false };
46
- case 5: _.label++; y = op[1]; op = [0]; continue;
47
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
- default:
49
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
- if (t[2]) _.ops.pop();
54
- _.trys.pop(); continue;
55
- }
56
- op = body.call(thisArg, _);
57
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
- }
60
- };
61
- var __values = (this && this.__values) || function(o) {
62
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
63
- if (m) return m.call(o);
64
- if (o && typeof o.length === "number") return {
65
- next: function () {
66
- if (o && i >= o.length) o = void 0;
67
- return { value: o && o[i++], done: !o };
68
- }
69
- };
70
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
71
- };
72
- var __read = (this && this.__read) || function (o, n) {
73
- var m = typeof Symbol === "function" && o[Symbol.iterator];
74
- if (!m) return o;
75
- var i = m.call(o), r, ar = [], e;
76
- try {
77
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
78
- }
79
- catch (error) { e = { error: error }; }
80
- finally {
81
- try {
82
- if (r && !r.done && (m = i["return"])) m.call(i);
83
- }
84
- finally { if (e) throw e.error; }
85
- }
86
- return ar;
87
- };
88
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
89
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
90
- if (ar || !(i in from)) {
91
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
92
- ar[i] = from[i];
93
- }
94
- }
95
- return to.concat(ar || Array.prototype.slice.call(from));
96
- };
97
- var __importDefault = (this && this.__importDefault) || function (mod) {
98
- return (mod && mod.__esModule) ? mod : { "default": mod };
99
- };
100
- Object.defineProperty(exports, "__esModule", { value: true });
101
- exports.DynamicExecutor = void 0;
102
- var chalk_1 = __importDefault(require("chalk"));
103
- var fs_1 = __importDefault(require("fs"));
104
- var path_1 = __importDefault(require("path"));
105
- var StopWatch_1 = require("./StopWatch");
106
- /**
107
- * Dynamic Executor running prefixed functions.
108
- *
109
- * `DynamicExecutor` runs every prefixed functions in a specific directory.
110
- * However, if you want to run only specific functions, you can use
111
- * `--include` or `--exclude` option in the CLI (Command Line Interface) level.
112
- *
113
- * When you want to see example utilization cases, see the below example links.
114
- *
115
- * @example https://github.com/samchon/nestia-template/blob/master/src/test/index.ts
116
- * @example https://github.com/samchon/backend/blob/master/src/test/index.ts
117
- * @author Jeongho Nam - https://github.com/samchon
118
- */
119
- var DynamicExecutor;
120
- (function (DynamicExecutor) {
121
- var _this = this;
122
- /**
123
- * Prepare dynamic executor in strict mode.
124
- *
125
- * In strict mode, if any error occurs, the program will be terminated directly.
126
- * Otherwise, {@link validate} mode does not terminate when error occurs, but
127
- * just archive the error log.
128
- *
129
- * @param options Options of dynamic executor
130
- * @returns Runner of dynamic functions with specific location
131
- */
132
- DynamicExecutor.assert = function (options) {
133
- /**
134
- * Run dynamic executor.
135
- *
136
- * @param path Location of prefixed functions
137
- */
138
- return function (path) {
139
- return main(options)(true)(path);
140
- };
141
- };
142
- /**
143
- * Prepare dynamic executor in loose mode.
144
- *
145
- * In loose mode, the program would not be terminated even when error occurs.
146
- * Instead, the error would be archived and returns as a list. Otherwise,
147
- * {@link assert} mode terminates the program directly when error occurs.
148
- *
149
- * @param options Options of dynamic executor
150
- * @returns Runner of dynamic functions with specific location
151
- */
152
- DynamicExecutor.validate = function (options) {
153
- /**
154
- * Run dynamic executor.
155
- *
156
- * @param path Location of prefix functions
157
- * @returns List of errors
158
- */
159
- return function (path) {
160
- return main(options)(false)(path);
161
- };
162
- };
163
- var main = function (options) {
164
- return function (assert) {
165
- return function (path) { return __awaiter(_this, void 0, void 0, function () {
166
- var report, executor, iterator;
167
- var _a;
168
- return __generator(this, function (_b) {
169
- switch (_b.label) {
170
- case 0:
171
- report = {
172
- location: path,
173
- time: Date.now(),
174
- executions: [],
175
- };
176
- executor = execute(options)(report)(assert);
177
- iterator = iterate((_a = options.extension) !== null && _a !== void 0 ? _a : "js")(executor);
178
- return [4 /*yield*/, iterator(path)];
179
- case 1:
180
- _b.sent();
181
- report.time = Date.now() - report.time;
182
- return [2 /*return*/, report];
183
- }
184
- });
185
- }); };
186
- };
187
- };
188
- var iterate = function (extension) {
189
- return function (executor) {
190
- var visitor = function (path) { return __awaiter(_this, void 0, void 0, function () {
191
- var directory, directory_1, directory_1_1, file, location_1, stats, modulo, e_1_1;
192
- var e_1, _a;
193
- return __generator(this, function (_b) {
194
- var _c;
195
- switch (_b.label) {
196
- case 0: return [4 /*yield*/, fs_1.default.promises.readdir(path)];
197
- case 1:
198
- directory = _b.sent();
199
- _b.label = 2;
200
- case 2:
201
- _b.trys.push([2, 12, 13, 14]);
202
- directory_1 = __values(directory), directory_1_1 = directory_1.next();
203
- _b.label = 3;
204
- case 3:
205
- if (!!directory_1_1.done) return [3 /*break*/, 11];
206
- file = directory_1_1.value;
207
- location_1 = path_1.default.resolve("".concat(path, "/").concat(file));
208
- return [4 /*yield*/, fs_1.default.promises.lstat(location_1)];
209
- case 4:
210
- stats = _b.sent();
211
- if (!(stats.isDirectory() === true)) return [3 /*break*/, 6];
212
- return [4 /*yield*/, visitor(location_1)];
213
- case 5:
214
- _b.sent();
215
- return [3 /*break*/, 10];
216
- case 6:
217
- if (file.substr(-3) !== ".".concat(extension))
218
- return [3 /*break*/, 10];
219
- _b.label = 7;
220
- case 7: return [4 /*yield*/, (_c = location_1, Promise.resolve().then(function () { return __importStar(require(_c)); }))];
221
- case 8:
222
- modulo = _b.sent();
223
- return [4 /*yield*/, executor(location_1, modulo)];
224
- case 9:
225
- _b.sent();
226
- _b.label = 10;
227
- case 10:
228
- directory_1_1 = directory_1.next();
229
- return [3 /*break*/, 3];
230
- case 11: return [3 /*break*/, 14];
231
- case 12:
232
- e_1_1 = _b.sent();
233
- e_1 = { error: e_1_1 };
234
- return [3 /*break*/, 14];
235
- case 13:
236
- try {
237
- if (directory_1_1 && !directory_1_1.done && (_a = directory_1.return)) _a.call(directory_1);
238
- }
239
- finally { if (e_1) throw e_1.error; }
240
- return [7 /*endfinally*/];
241
- case 14: return [2 /*return*/];
242
- }
243
- });
244
- }); };
245
- return visitor;
246
- };
247
- };
248
- var execute = function (options) {
249
- return function (report) {
250
- return function (assert) {
251
- return function (location, modulo) { return __awaiter(_this, void 0, void 0, function () {
252
- var _loop_1, _a, _b, _c, key, closure, e_2_1;
253
- var e_2, _d;
254
- var _this = this;
255
- return __generator(this, function (_e) {
256
- switch (_e.label) {
257
- case 0:
258
- _loop_1 = function (key, closure) {
259
- var func, label, result, _f, exp_1;
260
- return __generator(this, function (_g) {
261
- switch (_g.label) {
262
- case 0:
263
- if (key.substring(0, options.prefix.length) !==
264
- options.prefix ||
265
- typeof closure !== "function" ||
266
- (options.filter && options.filter(key) === false))
267
- return [2 /*return*/, "continue"];
268
- func = function () { return __awaiter(_this, void 0, void 0, function () {
269
- return __generator(this, function (_a) {
270
- switch (_a.label) {
271
- case 0:
272
- if (!(options.wrapper !== undefined)) return [3 /*break*/, 2];
273
- return [4 /*yield*/, options.wrapper(key, closure)];
274
- case 1:
275
- _a.sent();
276
- return [3 /*break*/, 4];
277
- case 2: return [4 /*yield*/, closure.apply(void 0, __spreadArray([], __read(options.parameters(key)), false))];
278
- case 3:
279
- _a.sent();
280
- _a.label = 4;
281
- case 4: return [2 /*return*/];
282
- }
283
- });
284
- }); };
285
- label = chalk_1.default.greenBright(key);
286
- result = {
287
- name: key,
288
- location: location,
289
- error: null,
290
- time: Date.now(),
291
- };
292
- report.executions.push(result);
293
- _g.label = 1;
294
- case 1:
295
- _g.trys.push([1, 6, , 7]);
296
- if (!(options.showElapsedTime === false)) return [3 /*break*/, 3];
297
- return [4 /*yield*/, func()];
298
- case 2:
299
- _g.sent();
300
- result.time = Date.now() - result.time;
301
- console.log(" - ".concat(label));
302
- return [3 /*break*/, 5];
303
- case 3:
304
- _f = result;
305
- return [4 /*yield*/, StopWatch_1.StopWatch.measure(func)];
306
- case 4:
307
- _f.time = _g.sent();
308
- console.log(" - ".concat(label, ": ").concat(chalk_1.default.yellowBright(result.time.toLocaleString()), " ms"));
309
- _g.label = 5;
310
- case 5: return [3 /*break*/, 7];
311
- case 6:
312
- exp_1 = _g.sent();
313
- result.time = Date.now() - result.time;
314
- result.error = exp_1;
315
- console.log(" - ".concat(label, " -> ").concat(chalk_1.default.redBright(exp_1 === null || exp_1 === void 0 ? void 0 : exp_1.name)));
316
- if (assert === true)
317
- throw exp_1;
318
- return [3 /*break*/, 7];
319
- case 7: return [2 /*return*/];
320
- }
321
- });
322
- };
323
- _e.label = 1;
324
- case 1:
325
- _e.trys.push([1, 6, 7, 8]);
326
- _a = __values(Object.entries(modulo)), _b = _a.next();
327
- _e.label = 2;
328
- case 2:
329
- if (!!_b.done) return [3 /*break*/, 5];
330
- _c = __read(_b.value, 2), key = _c[0], closure = _c[1];
331
- return [5 /*yield**/, _loop_1(key, closure)];
332
- case 3:
333
- _e.sent();
334
- _e.label = 4;
335
- case 4:
336
- _b = _a.next();
337
- return [3 /*break*/, 2];
338
- case 5: return [3 /*break*/, 8];
339
- case 6:
340
- e_2_1 = _e.sent();
341
- e_2 = { error: e_2_1 };
342
- return [3 /*break*/, 8];
343
- case 7:
344
- try {
345
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
346
- }
347
- finally { if (e_2) throw e_2.error; }
348
- return [7 /*endfinally*/];
349
- case 8: return [2 /*return*/];
350
- }
351
- });
352
- }); };
353
- };
354
- };
355
- };
356
- })(DynamicExecutor = exports.DynamicExecutor || (exports.DynamicExecutor = {}));
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ 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;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ var __values = (this && this.__values) || function(o) {
62
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
63
+ if (m) return m.call(o);
64
+ if (o && typeof o.length === "number") return {
65
+ next: function () {
66
+ if (o && i >= o.length) o = void 0;
67
+ return { value: o && o[i++], done: !o };
68
+ }
69
+ };
70
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
71
+ };
72
+ var __read = (this && this.__read) || function (o, n) {
73
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
74
+ if (!m) return o;
75
+ var i = m.call(o), r, ar = [], e;
76
+ try {
77
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
78
+ }
79
+ catch (error) { e = { error: error }; }
80
+ finally {
81
+ try {
82
+ if (r && !r.done && (m = i["return"])) m.call(i);
83
+ }
84
+ finally { if (e) throw e.error; }
85
+ }
86
+ return ar;
87
+ };
88
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
89
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
90
+ if (ar || !(i in from)) {
91
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
92
+ ar[i] = from[i];
93
+ }
94
+ }
95
+ return to.concat(ar || Array.prototype.slice.call(from));
96
+ };
97
+ var __importDefault = (this && this.__importDefault) || function (mod) {
98
+ return (mod && mod.__esModule) ? mod : { "default": mod };
99
+ };
100
+ Object.defineProperty(exports, "__esModule", { value: true });
101
+ exports.DynamicExecutor = void 0;
102
+ var chalk_1 = __importDefault(require("chalk"));
103
+ var fs_1 = __importDefault(require("fs"));
104
+ var path_1 = __importDefault(require("path"));
105
+ var StopWatch_1 = require("./StopWatch");
106
+ /**
107
+ * Dynamic Executor running prefixed functions.
108
+ *
109
+ * `DynamicExecutor` runs every prefixed functions in a specific directory.
110
+ * However, if you want to run only specific functions, you can use
111
+ * `--include` or `--exclude` option in the CLI (Command Line Interface) level.
112
+ *
113
+ * When you want to see example utilization cases, see the below example links.
114
+ *
115
+ * @example https://github.com/samchon/nestia-template/blob/master/src/test/index.ts
116
+ * @example https://github.com/samchon/backend/blob/master/src/test/index.ts
117
+ * @author Jeongho Nam - https://github.com/samchon
118
+ */
119
+ var DynamicExecutor;
120
+ (function (DynamicExecutor) {
121
+ var _this = this;
122
+ /**
123
+ * Prepare dynamic executor in strict mode.
124
+ *
125
+ * In strict mode, if any error occurs, the program will be terminated directly.
126
+ * Otherwise, {@link validate} mode does not terminate when error occurs, but
127
+ * just archive the error log.
128
+ *
129
+ * @param options Options of dynamic executor
130
+ * @returns Runner of dynamic functions with specific location
131
+ */
132
+ DynamicExecutor.assert = function (options) {
133
+ /**
134
+ * Run dynamic executor.
135
+ *
136
+ * @param path Location of prefixed functions
137
+ */
138
+ return function (path) {
139
+ return main(options)(true)(path);
140
+ };
141
+ };
142
+ /**
143
+ * Prepare dynamic executor in loose mode.
144
+ *
145
+ * In loose mode, the program would not be terminated even when error occurs.
146
+ * Instead, the error would be archived and returns as a list. Otherwise,
147
+ * {@link assert} mode terminates the program directly when error occurs.
148
+ *
149
+ * @param options Options of dynamic executor
150
+ * @returns Runner of dynamic functions with specific location
151
+ */
152
+ DynamicExecutor.validate = function (options) {
153
+ /**
154
+ * Run dynamic executor.
155
+ *
156
+ * @param path Location of prefix functions
157
+ * @returns List of errors
158
+ */
159
+ return function (path) {
160
+ return main(options)(false)(path);
161
+ };
162
+ };
163
+ var main = function (options) {
164
+ return function (assert) {
165
+ return function (path) { return __awaiter(_this, void 0, void 0, function () {
166
+ var report, executor, iterator;
167
+ var _a;
168
+ return __generator(this, function (_b) {
169
+ switch (_b.label) {
170
+ case 0:
171
+ report = {
172
+ location: path,
173
+ time: Date.now(),
174
+ executions: [],
175
+ };
176
+ executor = execute(options)(report)(assert);
177
+ iterator = iterate((_a = options.extension) !== null && _a !== void 0 ? _a : "js")(executor);
178
+ return [4 /*yield*/, iterator(path)];
179
+ case 1:
180
+ _b.sent();
181
+ report.time = Date.now() - report.time;
182
+ return [2 /*return*/, report];
183
+ }
184
+ });
185
+ }); };
186
+ };
187
+ };
188
+ var iterate = function (extension) {
189
+ return function (executor) {
190
+ var visitor = function (path) { return __awaiter(_this, void 0, void 0, function () {
191
+ var directory, directory_1, directory_1_1, file, location_1, stats, modulo, e_1_1;
192
+ var e_1, _a;
193
+ return __generator(this, function (_b) {
194
+ switch (_b.label) {
195
+ case 0: return [4 /*yield*/, fs_1.default.promises.readdir(path)];
196
+ case 1:
197
+ directory = _b.sent();
198
+ _b.label = 2;
199
+ case 2:
200
+ _b.trys.push([2, 12, 13, 14]);
201
+ directory_1 = __values(directory), directory_1_1 = directory_1.next();
202
+ _b.label = 3;
203
+ case 3:
204
+ if (!!directory_1_1.done) return [3 /*break*/, 11];
205
+ file = directory_1_1.value;
206
+ location_1 = path_1.default.resolve("".concat(path, "/").concat(file));
207
+ return [4 /*yield*/, fs_1.default.promises.lstat(location_1)];
208
+ case 4:
209
+ stats = _b.sent();
210
+ if (!(stats.isDirectory() === true)) return [3 /*break*/, 6];
211
+ return [4 /*yield*/, visitor(location_1)];
212
+ case 5:
213
+ _b.sent();
214
+ return [3 /*break*/, 10];
215
+ case 6:
216
+ if (file.substr(-3) !== ".".concat(extension))
217
+ return [3 /*break*/, 10];
218
+ _b.label = 7;
219
+ case 7: return [4 /*yield*/, Promise.resolve("".concat(location_1)).then(function (s) { return __importStar(require(s)); })];
220
+ case 8:
221
+ modulo = _b.sent();
222
+ return [4 /*yield*/, executor(location_1, modulo)];
223
+ case 9:
224
+ _b.sent();
225
+ _b.label = 10;
226
+ case 10:
227
+ directory_1_1 = directory_1.next();
228
+ return [3 /*break*/, 3];
229
+ case 11: return [3 /*break*/, 14];
230
+ case 12:
231
+ e_1_1 = _b.sent();
232
+ e_1 = { error: e_1_1 };
233
+ return [3 /*break*/, 14];
234
+ case 13:
235
+ try {
236
+ if (directory_1_1 && !directory_1_1.done && (_a = directory_1.return)) _a.call(directory_1);
237
+ }
238
+ finally { if (e_1) throw e_1.error; }
239
+ return [7 /*endfinally*/];
240
+ case 14: return [2 /*return*/];
241
+ }
242
+ });
243
+ }); };
244
+ return visitor;
245
+ };
246
+ };
247
+ var execute = function (options) {
248
+ return function (report) {
249
+ return function (assert) {
250
+ return function (location, modulo) { return __awaiter(_this, void 0, void 0, function () {
251
+ var _loop_1, _a, _b, _c, key, closure, e_2_1;
252
+ var e_2, _d;
253
+ var _this = this;
254
+ return __generator(this, function (_e) {
255
+ switch (_e.label) {
256
+ case 0:
257
+ _loop_1 = function (key, closure) {
258
+ var func, label, result, _f, exp_1;
259
+ return __generator(this, function (_g) {
260
+ switch (_g.label) {
261
+ case 0:
262
+ if (key.substring(0, options.prefix.length) !==
263
+ options.prefix ||
264
+ typeof closure !== "function" ||
265
+ (options.filter && options.filter(key) === false))
266
+ return [2 /*return*/, "continue"];
267
+ func = function () { return __awaiter(_this, void 0, void 0, function () {
268
+ return __generator(this, function (_a) {
269
+ switch (_a.label) {
270
+ case 0:
271
+ if (!(options.wrapper !== undefined)) return [3 /*break*/, 2];
272
+ return [4 /*yield*/, options.wrapper(key, closure)];
273
+ case 1:
274
+ _a.sent();
275
+ return [3 /*break*/, 4];
276
+ case 2: return [4 /*yield*/, closure.apply(void 0, __spreadArray([], __read(options.parameters(key)), false))];
277
+ case 3:
278
+ _a.sent();
279
+ _a.label = 4;
280
+ case 4: return [2 /*return*/];
281
+ }
282
+ });
283
+ }); };
284
+ label = chalk_1.default.greenBright(key);
285
+ result = {
286
+ name: key,
287
+ location: location,
288
+ error: null,
289
+ time: Date.now(),
290
+ };
291
+ report.executions.push(result);
292
+ _g.label = 1;
293
+ case 1:
294
+ _g.trys.push([1, 6, , 7]);
295
+ if (!(options.showElapsedTime === false)) return [3 /*break*/, 3];
296
+ return [4 /*yield*/, func()];
297
+ case 2:
298
+ _g.sent();
299
+ result.time = Date.now() - result.time;
300
+ console.log(" - ".concat(label));
301
+ return [3 /*break*/, 5];
302
+ case 3:
303
+ _f = result;
304
+ return [4 /*yield*/, StopWatch_1.StopWatch.measure(func)];
305
+ case 4:
306
+ _f.time = _g.sent();
307
+ console.log(" - ".concat(label, ": ").concat(chalk_1.default.yellowBright(result.time.toLocaleString()), " ms"));
308
+ _g.label = 5;
309
+ case 5: return [3 /*break*/, 7];
310
+ case 6:
311
+ exp_1 = _g.sent();
312
+ result.time = Date.now() - result.time;
313
+ result.error = exp_1;
314
+ console.log(" - ".concat(label, " -> ").concat(chalk_1.default.redBright(exp_1 === null || exp_1 === void 0 ? void 0 : exp_1.name)));
315
+ if (assert === true)
316
+ throw exp_1;
317
+ return [3 /*break*/, 7];
318
+ case 7: return [2 /*return*/];
319
+ }
320
+ });
321
+ };
322
+ _e.label = 1;
323
+ case 1:
324
+ _e.trys.push([1, 6, 7, 8]);
325
+ _a = __values(Object.entries(modulo)), _b = _a.next();
326
+ _e.label = 2;
327
+ case 2:
328
+ if (!!_b.done) return [3 /*break*/, 5];
329
+ _c = __read(_b.value, 2), key = _c[0], closure = _c[1];
330
+ return [5 /*yield**/, _loop_1(key, closure)];
331
+ case 3:
332
+ _e.sent();
333
+ _e.label = 4;
334
+ case 4:
335
+ _b = _a.next();
336
+ return [3 /*break*/, 2];
337
+ case 5: return [3 /*break*/, 8];
338
+ case 6:
339
+ e_2_1 = _e.sent();
340
+ e_2 = { error: e_2_1 };
341
+ return [3 /*break*/, 8];
342
+ case 7:
343
+ try {
344
+ if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
345
+ }
346
+ finally { if (e_2) throw e_2.error; }
347
+ return [7 /*endfinally*/];
348
+ case 8: return [2 /*return*/];
349
+ }
350
+ });
351
+ }); };
352
+ };
353
+ };
354
+ };
355
+ })(DynamicExecutor || (exports.DynamicExecutor = DynamicExecutor = {}));
357
356
  //# sourceMappingURL=DynamicExecutor.js.map