@nestia/benchmark 11.3.0 → 11.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -64,13 +64,15 @@ export declare namespace DynamicBenchmarker {
|
|
|
64
64
|
/**
|
|
65
65
|
* Filter function.
|
|
66
66
|
*
|
|
67
|
-
* The filter function
|
|
68
|
-
*
|
|
67
|
+
* The filter function is called with the file name (basename) of each
|
|
68
|
+
* benchmark function module, not with the function name. When it returns
|
|
69
|
+
* `false`, the file would never be imported in the servant, so that every
|
|
70
|
+
* function defined in the file would never be executed either.
|
|
69
71
|
*
|
|
70
|
-
* @param name
|
|
72
|
+
* @param file File name (basename) of the benchmark functions
|
|
71
73
|
* @returns Whether to execute the function or not.
|
|
72
74
|
*/
|
|
73
|
-
filter?: (
|
|
75
|
+
filter?: (file: string) => boolean;
|
|
74
76
|
/**
|
|
75
77
|
* Progress callback function.
|
|
76
78
|
*
|
|
@@ -110,7 +112,9 @@ export declare namespace DynamicBenchmarker {
|
|
|
110
112
|
* Every prefixed function will be executed in the servant.
|
|
111
113
|
*
|
|
112
114
|
* In other words, if a function name doesn't start with the prefix, then it
|
|
113
|
-
* would never be executed.
|
|
115
|
+
* would never be executed. Also, when a file name (basename) does not start
|
|
116
|
+
* with the prefix, the file would never be imported either, so that every
|
|
117
|
+
* function defined in the file would never be executed.
|
|
114
118
|
*/
|
|
115
119
|
prefix: string;
|
|
116
120
|
/**
|
|
@@ -14,6 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.DynamicBenchmarker = void 0;
|
|
16
16
|
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
17
18
|
const tgrid_1 = require("tgrid");
|
|
18
19
|
const tstl_1 = require("tstl");
|
|
19
20
|
const DynamicBenchmarkReporter_1 = require("./internal/DynamicBenchmarkReporter");
|
|
@@ -187,6 +188,12 @@ var DynamicBenchmarker;
|
|
|
187
188
|
return entireEvents;
|
|
188
189
|
});
|
|
189
190
|
})(DynamicBenchmarker || (exports.DynamicBenchmarker = DynamicBenchmarker = {}));
|
|
191
|
+
const specifier = (location) => {
|
|
192
|
+
const relative = path_1.default.relative(__dirname, path_1.default.resolve(location))
|
|
193
|
+
.split(path_1.default.sep)
|
|
194
|
+
.join("/");
|
|
195
|
+
return `./${relative}`;
|
|
196
|
+
};
|
|
190
197
|
const iterate = (ctx) => (path) => __awaiter(void 0, void 0, void 0, function* () {
|
|
191
198
|
const directory = yield fs_1.default.promises.readdir(path);
|
|
192
199
|
for (const file of directory) {
|
|
@@ -195,14 +202,21 @@ const iterate = (ctx) => (path) => __awaiter(void 0, void 0, void 0, function* (
|
|
|
195
202
|
if (stat.isDirectory() === true)
|
|
196
203
|
yield iterate(ctx)(location);
|
|
197
204
|
else if (file.endsWith(__filename.substr(-3)) === true) {
|
|
198
|
-
|
|
205
|
+
// GATE BY FILE NAME (PREFIX & FILTER), SO THAT EXCLUDED FILES ARE
|
|
206
|
+
// NEVER IMPORTED
|
|
207
|
+
if (file.startsWith(ctx.props.prefix) === false)
|
|
208
|
+
continue;
|
|
209
|
+
if ((yield ctx.driver.filter(file)) === false)
|
|
210
|
+
continue;
|
|
211
|
+
// POSIX relative specifier: works both as a native ESM dynamic import
|
|
212
|
+
// (module: nodenext) and as a downleveled require() (module: commonjs)
|
|
213
|
+
// on any OS.
|
|
214
|
+
const modulo = yield import(specifier(location));
|
|
199
215
|
for (const [key, value] of Object.entries(modulo)) {
|
|
200
216
|
if (typeof value !== "function")
|
|
201
217
|
continue;
|
|
202
218
|
else if (key.startsWith(ctx.props.prefix) === false)
|
|
203
219
|
continue;
|
|
204
|
-
else if ((yield ctx.driver.filter(key)) === false)
|
|
205
|
-
continue;
|
|
206
220
|
ctx.collection.push({
|
|
207
221
|
key,
|
|
208
222
|
value: value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,4CAAoB;AACpB,iCAA8D;AAC9D,+BAAgD;AAGhD,kFAA+E;AAI/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,IAAiB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DynamicBenchmarker.js","sourceRoot":"","sources":["../src/DynamicBenchmarker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/benchmark",
|
|
3
|
-
"version": "11.3.
|
|
3
|
+
"version": "11.3.2",
|
|
4
4
|
"description": "NestJS Performance Benchmark Program",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"tgrid": "^1.2.1",
|
|
32
32
|
"tstl": "^3.0.0",
|
|
33
|
-
"@nestia/fetcher": "^11.3.
|
|
33
|
+
"@nestia/fetcher": "^11.3.2"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^25.3.3",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IConnection } from "@nestia/fetcher";
|
|
2
2
|
import fs from "fs";
|
|
3
|
+
import NodePath from "path";
|
|
3
4
|
import { Driver, WorkerConnector, WorkerServer } from "tgrid";
|
|
4
5
|
import { HashMap, hash, sleep_for } from "tstl";
|
|
5
6
|
|
|
@@ -74,13 +75,15 @@ export namespace DynamicBenchmarker {
|
|
|
74
75
|
/**
|
|
75
76
|
* Filter function.
|
|
76
77
|
*
|
|
77
|
-
* The filter function
|
|
78
|
-
*
|
|
78
|
+
* The filter function is called with the file name (basename) of each
|
|
79
|
+
* benchmark function module, not with the function name. When it returns
|
|
80
|
+
* `false`, the file would never be imported in the servant, so that every
|
|
81
|
+
* function defined in the file would never be executed either.
|
|
79
82
|
*
|
|
80
|
-
* @param name
|
|
83
|
+
* @param file File name (basename) of the benchmark functions
|
|
81
84
|
* @returns Whether to execute the function or not.
|
|
82
85
|
*/
|
|
83
|
-
filter?: (
|
|
86
|
+
filter?: (file: string) => boolean;
|
|
84
87
|
|
|
85
88
|
/**
|
|
86
89
|
* Progress callback function.
|
|
@@ -126,7 +129,9 @@ export namespace DynamicBenchmarker {
|
|
|
126
129
|
* Every prefixed function will be executed in the servant.
|
|
127
130
|
*
|
|
128
131
|
* In other words, if a function name doesn't start with the prefix, then it
|
|
129
|
-
* would never be executed.
|
|
132
|
+
* would never be executed. Also, when a file name (basename) does not start
|
|
133
|
+
* with the prefix, the file would never be imported either, so that every
|
|
134
|
+
* function defined in the file would never be executed.
|
|
130
135
|
*/
|
|
131
136
|
prefix: string;
|
|
132
137
|
|
|
@@ -366,6 +371,16 @@ interface IFunction<Parameters extends any[]> {
|
|
|
366
371
|
value: (...args: Parameters) => Promise<void>;
|
|
367
372
|
}
|
|
368
373
|
|
|
374
|
+
const specifier = (location: string): string => {
|
|
375
|
+
const relative: string = NodePath.relative(
|
|
376
|
+
__dirname,
|
|
377
|
+
NodePath.resolve(location),
|
|
378
|
+
)
|
|
379
|
+
.split(NodePath.sep)
|
|
380
|
+
.join("/");
|
|
381
|
+
return `./${relative}`;
|
|
382
|
+
};
|
|
383
|
+
|
|
369
384
|
const iterate =
|
|
370
385
|
<Parameters extends any[]>(ctx: {
|
|
371
386
|
collection: IFunction<Parameters>[];
|
|
@@ -379,11 +394,17 @@ const iterate =
|
|
|
379
394
|
const stat: fs.Stats = await fs.promises.stat(location);
|
|
380
395
|
if (stat.isDirectory() === true) await iterate(ctx)(location);
|
|
381
396
|
else if (file.endsWith(__filename.substr(-3)) === true) {
|
|
382
|
-
|
|
397
|
+
// GATE BY FILE NAME (PREFIX & FILTER), SO THAT EXCLUDED FILES ARE
|
|
398
|
+
// NEVER IMPORTED
|
|
399
|
+
if (file.startsWith(ctx.props.prefix) === false) continue;
|
|
400
|
+
if ((await ctx.driver.filter(file)) === false) continue;
|
|
401
|
+
// POSIX relative specifier: works both as a native ESM dynamic import
|
|
402
|
+
// (module: nodenext) and as a downleveled require() (module: commonjs)
|
|
403
|
+
// on any OS.
|
|
404
|
+
const modulo = await import(specifier(location));
|
|
383
405
|
for (const [key, value] of Object.entries(modulo)) {
|
|
384
406
|
if (typeof value !== "function") continue;
|
|
385
407
|
else if (key.startsWith(ctx.props.prefix) === false) continue;
|
|
386
|
-
else if ((await ctx.driver.filter(key)) === false) continue;
|
|
387
408
|
ctx.collection.push({
|
|
388
409
|
key,
|
|
389
410
|
value: value as (...args: Parameters) => Promise<any>,
|