@nestia/benchmark 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,577 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
37
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
38
+ return new (P || (P = Promise))(function (resolve, reject) {
39
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
40
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
41
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
42
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
43
+ });
44
+ };
45
+ var __generator = (this && this.__generator) || function (thisArg, body) {
46
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
47
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
48
+ function verb(n) { return function (v) { return step([n, v]); }; }
49
+ function step(op) {
50
+ if (f) throw new TypeError("Generator is already executing.");
51
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
52
+ 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;
53
+ if (y = 0, t) op = [op[0] & 2, t.value];
54
+ switch (op[0]) {
55
+ case 0: case 1: t = op; break;
56
+ case 4: _.label++; return { value: op[1], done: false };
57
+ case 5: _.label++; y = op[1]; op = [0]; continue;
58
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
59
+ default:
60
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
61
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
63
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
64
+ if (t[2]) _.ops.pop();
65
+ _.trys.pop(); continue;
66
+ }
67
+ op = body.call(thisArg, _);
68
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
69
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
+ }
71
+ };
72
+ var __values = (this && this.__values) || function(o) {
73
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
74
+ if (m) return m.call(o);
75
+ if (o && typeof o.length === "number") return {
76
+ next: function () {
77
+ if (o && i >= o.length) o = void 0;
78
+ return { value: o && o[i++], done: !o };
79
+ }
80
+ };
81
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
82
+ };
83
+ var __read = (this && this.__read) || function (o, n) {
84
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
85
+ if (!m) return o;
86
+ var i = m.call(o), r, ar = [], e;
87
+ try {
88
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
89
+ }
90
+ catch (error) { e = { error: error }; }
91
+ finally {
92
+ try {
93
+ if (r && !r.done && (m = i["return"])) m.call(i);
94
+ }
95
+ finally { if (e) throw e.error; }
96
+ }
97
+ return ar;
98
+ };
99
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
100
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
101
+ if (ar || !(i in from)) {
102
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
103
+ ar[i] = from[i];
104
+ }
105
+ }
106
+ return to.concat(ar || Array.prototype.slice.call(from));
107
+ };
108
+ var __importDefault = (this && this.__importDefault) || function (mod) {
109
+ return (mod && mod.__esModule) ? mod : { "default": mod };
110
+ };
111
+ Object.defineProperty(exports, "__esModule", { value: true });
112
+ exports.DynamicBenchmarker = void 0;
113
+ var fs_1 = __importDefault(require("fs"));
114
+ var os_1 = __importDefault(require("os"));
115
+ var tgrid_1 = require("tgrid");
116
+ var tstl_1 = require("tstl");
117
+ /**
118
+ * Dynamic benchmark executor running prefixed functions.
119
+ *
120
+ * `DynamicBenchmarker` is composed with two programs,
121
+ * {@link DynamicBenchmarker.master} and
122
+ * {@link DynamicBenchmarker.servant servants}. The master program creates
123
+ * multiple servant programs, and the servant programs execute the prefixed
124
+ * functions in parallel. When the pre-congirued count of requests are all
125
+ * completed, the master program collects the results and returns them.
126
+ *
127
+ * Therefore, when you want to benchmark the performance of a backend server,
128
+ * you have to make two programs; one for calling the
129
+ * {@link DynamicBenchmarker.master} function, and the other for calling the
130
+ * {@link DynamicBenchmarker.servant} function. Also, never forget to write
131
+ * the path of the servant program to the
132
+ * {@link DynamicBenchmarker.IMasterProps.servant} property.
133
+ *
134
+ * Also, you when you complete the benchmark execution through the
135
+ * {@link DynamicBenchmarker.master} and {@link DynamicBenchmarker.servant}
136
+ * functions, you can convert the result to markdown content by using the
137
+ * {@link DynamicBenchmarker.markdown} function.
138
+ *
139
+ * Additionally, if you hope to see some utilization cases,
140
+ * see the below example tagged links.
141
+ *
142
+ * @example https://github.com/samchon/nestia-start/blob/master/test/benchmaark/index.ts
143
+ * @example https://github.com/samchon/backend/blob/master/test/benchmark/index.ts
144
+ * @author Jeongho Nam - https://github.com/samchon
145
+ */
146
+ var DynamicBenchmarker;
147
+ (function (DynamicBenchmarker) {
148
+ var _this = this;
149
+ /**
150
+ * Master program.
151
+ *
152
+ * Creates a master program that executing the servant programs in parallel.
153
+ *
154
+ * Note that, {@link IMasterProps.servant} property must be the path of
155
+ * the servant program executing the {@link servant} function.
156
+ *
157
+ * @param props Properties of the master program
158
+ * @returns Benchmark report
159
+ */
160
+ DynamicBenchmarker.master = function (props) { return __awaiter(_this, void 0, void 0, function () {
161
+ var completes, servants, started_at, events, completed_at, endpoints, events_1, events_1_1, e;
162
+ var e_1, _a;
163
+ var _this = this;
164
+ var _b;
165
+ return __generator(this, function (_c) {
166
+ switch (_c.label) {
167
+ case 0:
168
+ completes = new Array(props.threads).fill(0);
169
+ return [4 /*yield*/, Promise.all(new Array(props.threads).fill(null).map(function (_, i) { return __awaiter(_this, void 0, void 0, function () {
170
+ var connector;
171
+ var _a;
172
+ return __generator(this, function (_b) {
173
+ switch (_b.label) {
174
+ case 0:
175
+ connector = new tgrid_1.WorkerConnector(null, {
176
+ filter: (_a = props.filter) !== null && _a !== void 0 ? _a : (function () { return true; }),
177
+ progress: function (current) {
178
+ completes[i] = current;
179
+ if (props.progress)
180
+ props.progress(completes.reduce(function (a, b) { return a + b; }, 0));
181
+ },
182
+ }, "process");
183
+ return [4 /*yield*/, connector.connect(props.servant, { stdio: props.stdio })];
184
+ case 1:
185
+ _b.sent();
186
+ return [2 /*return*/, connector];
187
+ }
188
+ });
189
+ }); }))];
190
+ case 1:
191
+ servants = _c.sent();
192
+ started_at = new Date();
193
+ return [4 /*yield*/, Promise.all(servants.map(function (connector) {
194
+ return connector.getDriver().execute({
195
+ count: Math.ceil(props.count / props.threads),
196
+ simultaneous: Math.ceil(props.simultaneous / props.threads),
197
+ });
198
+ }))];
199
+ case 2:
200
+ events = (_c.sent()).flat();
201
+ completed_at = new Date();
202
+ return [4 /*yield*/, Promise.all(servants.map(function (connector) { return connector.close(); }))];
203
+ case 3:
204
+ _c.sent();
205
+ if (props.progress)
206
+ props.progress(props.count);
207
+ endpoints = new tstl_1.HashMap(function (key) { return (0, tstl_1.hash)(key.method, key.path); }, function (x, y) { return x.method === y.method && x.path === y.path; });
208
+ try {
209
+ for (events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {
210
+ e = events_1_1.value;
211
+ endpoints
212
+ .take({
213
+ method: e.metadata.method,
214
+ path: (_b = e.metadata.template) !== null && _b !== void 0 ? _b : e.metadata.path,
215
+ }, function () { return []; })
216
+ .push(e);
217
+ }
218
+ }
219
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
220
+ finally {
221
+ try {
222
+ if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);
223
+ }
224
+ finally { if (e_1) throw e_1.error; }
225
+ }
226
+ return [2 /*return*/, {
227
+ count: props.count,
228
+ threads: props.threads,
229
+ simultaneous: props.simultaneous,
230
+ statistics: statistics(events),
231
+ endpoints: __spreadArray([], __read(endpoints), false).map(function (it) { return (__assign(__assign({}, statistics(it.second)), it.first)); }),
232
+ started_at: started_at.toISOString(),
233
+ completed_at: completed_at.toISOString(),
234
+ }];
235
+ }
236
+ });
237
+ }); };
238
+ /**
239
+ * Create a servant program.
240
+ *
241
+ * Creates a servant program executing the prefixed functions in parallel.
242
+ *
243
+ * @param props Properties of the servant program
244
+ * @returns Servant program as a worker server
245
+ */
246
+ DynamicBenchmarker.servant = function (props) { return __awaiter(_this, void 0, void 0, function () {
247
+ var server;
248
+ return __generator(this, function (_a) {
249
+ switch (_a.label) {
250
+ case 0:
251
+ server = new tgrid_1.WorkerServer();
252
+ return [4 /*yield*/, server.open({
253
+ execute: execute({
254
+ driver: server.getDriver(),
255
+ props: props,
256
+ }),
257
+ })];
258
+ case 1:
259
+ _a.sent();
260
+ return [2 /*return*/, server];
261
+ }
262
+ });
263
+ }); };
264
+ /**
265
+ * Convert the benchmark report to markdown content.
266
+ *
267
+ * @param report Benchmark report
268
+ * @returns Markdown content
269
+ */
270
+ DynamicBenchmarker.markdown = function (report) {
271
+ var format = function (value) {
272
+ return value === null ? "N/A" : (Math.floor(value * 100) / 100).toLocaleString();
273
+ };
274
+ var writeHead = function () {
275
+ return [
276
+ "Type",
277
+ "Count",
278
+ "Success",
279
+ "Mean.",
280
+ "Stdev.",
281
+ "Minimum",
282
+ "Maximum",
283
+ ].join(" | ") +
284
+ "\n" +
285
+ new Array(7).fill("----").join("|");
286
+ };
287
+ var writeRow = function (title, s) {
288
+ return [
289
+ title,
290
+ s.count.toLocaleString(),
291
+ s.success.toLocaleString(),
292
+ format(s.mean),
293
+ format(s.stdev),
294
+ format(s.minimum),
295
+ format(s.maximum),
296
+ ].join(" | ");
297
+ };
298
+ return __spreadArray(__spreadArray(__spreadArray([
299
+ "# Benchmark Report",
300
+ "> Generated by [`@nestia/e2e`](https://github.com/samchon/nestia)",
301
+ "",
302
+ " - Specifications",
303
+ " - CPU: ".concat(os_1.default.cpus()[0].model),
304
+ " - RAM: ".concat(Math.floor(os_1.default.totalmem() / 1024 / 1024 / 1024).toLocaleString(), " GB"),
305
+ " - NodeJS Version: ".concat(process.version),
306
+ " - Backend Server: 1 core / 1 thread",
307
+ " - Arguments",
308
+ " - Count: ".concat(report.count.toLocaleString()),
309
+ " - Threads: ".concat(report.threads.toLocaleString()),
310
+ " - Simultaneous: ".concat(report.simultaneous.toLocaleString()),
311
+ " - Time",
312
+ " - Start: ".concat(report.started_at),
313
+ " - Complete: ".concat(report.completed_at),
314
+ " - Elapsed: ".concat((new Date(report.completed_at).getTime() - new Date(report.started_at).getTime()).toLocaleString(), " ms"),
315
+ "",
316
+ writeHead(),
317
+ writeRow("Total", report.statistics),
318
+ "",
319
+ "> Unit: milliseconds",
320
+ "",
321
+ "## Endpoints",
322
+ writeHead()
323
+ ], __read(report.endpoints
324
+ .slice()
325
+ .sort(function (a, b) { var _a, _b; return ((_a = b.mean) !== null && _a !== void 0 ? _a : 0) - ((_b = a.mean) !== null && _b !== void 0 ? _b : 0); })
326
+ .map(function (endpoint) {
327
+ return writeRow("".concat(endpoint.method, " ").concat(endpoint.path), endpoint);
328
+ })), false), [
329
+ "",
330
+ "> Unit: milliseconds",
331
+ "",
332
+ "## Failures",
333
+ "Method | Path | Count | Failures",
334
+ "-------|------|-------|----------"
335
+ ], false), __read(report.endpoints
336
+ .filter(function (e) { return e.success !== e.count; })
337
+ .slice()
338
+ .sort(function (a, b) { return b.count - a.count; })
339
+ .map(function (e) {
340
+ return [
341
+ e.method,
342
+ e.path,
343
+ e.count.toLocaleString(),
344
+ (e.count - e.success).toLocaleString(),
345
+ ].join(" | ");
346
+ })), false).join("\n");
347
+ };
348
+ var execute = function (ctx) {
349
+ return function (mass) { return __awaiter(_this, void 0, void 0, function () {
350
+ var functions, entireEvents;
351
+ var _this = this;
352
+ return __generator(this, function (_a) {
353
+ switch (_a.label) {
354
+ case 0:
355
+ functions = [];
356
+ return [4 /*yield*/, iterate({
357
+ collection: functions,
358
+ driver: ctx.driver,
359
+ props: ctx.props,
360
+ })(ctx.props.location)];
361
+ case 1:
362
+ _a.sent();
363
+ entireEvents = [];
364
+ return [4 /*yield*/, Promise.all(new Array(mass.simultaneous)
365
+ .fill(null)
366
+ .map(function () { return 1; })
367
+ .map(function () { return __awaiter(_this, void 0, void 0, function () {
368
+ var _loop_1;
369
+ var _this = this;
370
+ return __generator(this, function (_a) {
371
+ switch (_a.label) {
372
+ case 0:
373
+ _loop_1 = function () {
374
+ var localEvents, func, connection, exp_1, localEvents_1, localEvents_1_1, e;
375
+ var e_2, _b;
376
+ return __generator(this, function (_c) {
377
+ switch (_c.label) {
378
+ case 0:
379
+ localEvents = [];
380
+ func = functions[Math.floor(Math.random() * functions.length)];
381
+ connection = __assign(__assign({}, ctx.props.connection), { logger: function (fe) { return __awaiter(_this, void 0, void 0, function () {
382
+ var be;
383
+ var _a, _b;
384
+ return __generator(this, function (_c) {
385
+ be = {
386
+ metadata: fe.route,
387
+ status: fe.status,
388
+ started_at: fe.started_at.toISOString(),
389
+ repond_at: (_b = (_a = fe.respond_at) === null || _a === void 0 ? void 0 : _a.toISOString()) !== null && _b !== void 0 ? _b : null,
390
+ completed_at: fe.completed_at.toISOString(),
391
+ success: true,
392
+ };
393
+ localEvents.push(be);
394
+ entireEvents.push(be);
395
+ return [2 /*return*/];
396
+ });
397
+ }); } });
398
+ _c.label = 1;
399
+ case 1:
400
+ _c.trys.push([1, 3, , 4]);
401
+ return [4 /*yield*/, func.value.apply(func, __spreadArray([], __read(ctx.props.parameters(connection, func.key)), false))];
402
+ case 2:
403
+ _c.sent();
404
+ return [3 /*break*/, 4];
405
+ case 3:
406
+ exp_1 = _c.sent();
407
+ try {
408
+ for (localEvents_1 = (e_2 = void 0, __values(localEvents)), localEvents_1_1 = localEvents_1.next(); !localEvents_1_1.done; localEvents_1_1 = localEvents_1.next()) {
409
+ e = localEvents_1_1.value;
410
+ e.success = e.status === 200 || e.status === 201;
411
+ }
412
+ }
413
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
414
+ finally {
415
+ try {
416
+ if (localEvents_1_1 && !localEvents_1_1.done && (_b = localEvents_1.return)) _b.call(localEvents_1);
417
+ }
418
+ finally { if (e_2) throw e_2.error; }
419
+ }
420
+ return [3 /*break*/, 4];
421
+ case 4:
422
+ if (localEvents.length !== 0)
423
+ ctx.driver.progress(entireEvents.length).catch(function () { });
424
+ return [2 /*return*/];
425
+ }
426
+ });
427
+ };
428
+ _a.label = 1;
429
+ case 1:
430
+ if (!(entireEvents.length < mass.count)) return [3 /*break*/, 3];
431
+ return [5 /*yield**/, _loop_1()];
432
+ case 2:
433
+ _a.sent();
434
+ return [3 /*break*/, 1];
435
+ case 3: return [2 /*return*/];
436
+ }
437
+ });
438
+ }); }))];
439
+ case 2:
440
+ _a.sent();
441
+ return [4 /*yield*/, ctx.driver.progress(entireEvents.length)];
442
+ case 3:
443
+ _a.sent();
444
+ return [2 /*return*/, entireEvents];
445
+ }
446
+ });
447
+ }); };
448
+ };
449
+ })(DynamicBenchmarker || (exports.DynamicBenchmarker = DynamicBenchmarker = {}));
450
+ var iterate = function (ctx) {
451
+ return function (path) { return __awaiter(void 0, void 0, void 0, function () {
452
+ var directory, directory_1, directory_1_1, file, location_1, stat, modulo, _a, _b, _c, key, value, e_3_1, e_4_1;
453
+ var e_4, _d, e_3, _e;
454
+ return __generator(this, function (_f) {
455
+ switch (_f.label) {
456
+ case 0: return [4 /*yield*/, fs_1.default.promises.readdir(path)];
457
+ case 1:
458
+ directory = _f.sent();
459
+ _f.label = 2;
460
+ case 2:
461
+ _f.trys.push([2, 20, 21, 22]);
462
+ directory_1 = __values(directory), directory_1_1 = directory_1.next();
463
+ _f.label = 3;
464
+ case 3:
465
+ if (!!directory_1_1.done) return [3 /*break*/, 19];
466
+ file = directory_1_1.value;
467
+ location_1 = "".concat(path, "/").concat(file);
468
+ return [4 /*yield*/, fs_1.default.promises.stat(location_1)];
469
+ case 4:
470
+ stat = _f.sent();
471
+ if (!(stat.isDirectory() === true)) return [3 /*break*/, 6];
472
+ return [4 /*yield*/, iterate(ctx)(location_1)];
473
+ case 5:
474
+ _f.sent();
475
+ return [3 /*break*/, 18];
476
+ case 6:
477
+ if (!(file.endsWith(".js") === true)) return [3 /*break*/, 18];
478
+ return [4 /*yield*/, Promise.resolve("".concat(location_1)).then(function (s) { return __importStar(require(s)); })];
479
+ case 7:
480
+ modulo = _f.sent();
481
+ _f.label = 8;
482
+ case 8:
483
+ _f.trys.push([8, 16, 17, 18]);
484
+ _a = (e_3 = void 0, __values(Object.entries(modulo))), _b = _a.next();
485
+ _f.label = 9;
486
+ case 9:
487
+ if (!!_b.done) return [3 /*break*/, 15];
488
+ _c = __read(_b.value, 2), key = _c[0], value = _c[1];
489
+ if (!(typeof value !== "function")) return [3 /*break*/, 10];
490
+ return [3 /*break*/, 14];
491
+ case 10:
492
+ if (!(key.startsWith(ctx.props.prefix) === false)) return [3 /*break*/, 11];
493
+ return [3 /*break*/, 14];
494
+ case 11: return [4 /*yield*/, ctx.driver.filter(key)];
495
+ case 12:
496
+ if ((_f.sent()) === false)
497
+ return [3 /*break*/, 14];
498
+ _f.label = 13;
499
+ case 13:
500
+ ctx.collection.push({
501
+ key: key,
502
+ value: value,
503
+ });
504
+ _f.label = 14;
505
+ case 14:
506
+ _b = _a.next();
507
+ return [3 /*break*/, 9];
508
+ case 15: return [3 /*break*/, 18];
509
+ case 16:
510
+ e_3_1 = _f.sent();
511
+ e_3 = { error: e_3_1 };
512
+ return [3 /*break*/, 18];
513
+ case 17:
514
+ try {
515
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
516
+ }
517
+ finally { if (e_3) throw e_3.error; }
518
+ return [7 /*endfinally*/];
519
+ case 18:
520
+ directory_1_1 = directory_1.next();
521
+ return [3 /*break*/, 3];
522
+ case 19: return [3 /*break*/, 22];
523
+ case 20:
524
+ e_4_1 = _f.sent();
525
+ e_4 = { error: e_4_1 };
526
+ return [3 /*break*/, 22];
527
+ case 21:
528
+ try {
529
+ if (directory_1_1 && !directory_1_1.done && (_d = directory_1.return)) _d.call(directory_1);
530
+ }
531
+ finally { if (e_4) throw e_4.error; }
532
+ return [7 /*endfinally*/];
533
+ case 22: return [2 /*return*/];
534
+ }
535
+ });
536
+ }); };
537
+ };
538
+ var statistics = function (events) {
539
+ var successes = events.filter(function (event) { return event.success; });
540
+ return __assign({ count: events.length, success: successes.length }, average(events));
541
+ };
542
+ var average = function (events) {
543
+ var e_5, _a;
544
+ if (events.length === 0)
545
+ return {
546
+ mean: null,
547
+ stdev: null,
548
+ minimum: null,
549
+ maximum: null,
550
+ };
551
+ var mean = 0;
552
+ var stdev = 0;
553
+ var minimum = Number.MAX_SAFE_INTEGER;
554
+ var maximum = Number.MIN_SAFE_INTEGER;
555
+ try {
556
+ for (var events_2 = __values(events), events_2_1 = events_2.next(); !events_2_1.done; events_2_1 = events_2.next()) {
557
+ var event_1 = events_2_1.value;
558
+ var elapsed = new Date(event_1.completed_at).getTime() -
559
+ new Date(event_1.started_at).getTime();
560
+ mean += elapsed;
561
+ stdev += elapsed * elapsed;
562
+ minimum = Math.min(minimum, elapsed);
563
+ maximum = Math.max(maximum, elapsed);
564
+ }
565
+ }
566
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
567
+ finally {
568
+ try {
569
+ if (events_2_1 && !events_2_1.done && (_a = events_2.return)) _a.call(events_2);
570
+ }
571
+ finally { if (e_5) throw e_5.error; }
572
+ }
573
+ mean /= events.length;
574
+ stdev = Math.sqrt(stdev / events.length - mean * mean);
575
+ return { mean: mean, stdev: stdev, minimum: minimum, maximum: maximum };
576
+ };
577
+ //# sourceMappingURL=DynamicBenchmarker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { IFetchRoute } from "@nestia/fetcher";
2
+ export interface IBenchmarkEvent {
3
+ metadata: IFetchRoute<any>;
4
+ status: number | null;
5
+ started_at: string;
6
+ repond_at: string | null;
7
+ completed_at: string;
8
+ success: boolean;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IBenchmarkEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IBenchmarkEvent.js","sourceRoot":"","sources":["../src/IBenchmarkEvent.ts"],"names":[],"mappings":""}
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./DynamicBenchmarker";
2
+ export * from "./IBenchmarkEvent";
package/lib/index.js ADDED
@@ -0,0 +1,19 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DynamicBenchmarker"), exports);
18
+ __exportStar(require("./IBenchmarkEvent"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,oDAAkC"}
@@ -0,0 +1,4 @@
1
+ export interface IBenchmarkMaster {
2
+ filter: (name: string) => boolean;
3
+ progress: (current: number) => void;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IBenchmarkMaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IBenchmarkMaster.js","sourceRoot":"","sources":["../../src/internal/IBenchmarkMaster.ts"],"names":[],"mappings":""}