@codspeed/tinybench-plugin 5.0.0-alpha.1 → 5.0.0-alpha.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.
- package/dist/index.cjs +130 -141
- package/dist/index.cjs.map +1 -1
- package/dist/index.es5.js +131 -142
- package/dist/index.es5.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -77,67 +77,70 @@ function getOrCreateUriMap(bench) {
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
function runInstrumentedBench(bench, rootCallingFile) {
|
|
80
|
+
const runTaskAsync = async (task, uri) => {
|
|
81
|
+
const { fnOpts, fn } = task;
|
|
82
|
+
await fnOpts?.beforeAll?.call(task, "run");
|
|
83
|
+
await core.optimizeFunction(async () => {
|
|
84
|
+
await fnOpts?.beforeEach?.call(task, "run");
|
|
85
|
+
await fn();
|
|
86
|
+
await fnOpts?.afterEach?.call(task, "run");
|
|
87
|
+
});
|
|
88
|
+
await fnOpts?.beforeEach?.call(task, "run");
|
|
89
|
+
await core.mongoMeasurement.start(uri);
|
|
90
|
+
await async function __codspeed_root_frame__() {
|
|
91
|
+
global.gc?.();
|
|
92
|
+
core.InstrumentHooks.startBenchmark();
|
|
93
|
+
await fn();
|
|
94
|
+
core.InstrumentHooks.stopBenchmark();
|
|
95
|
+
core.InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
96
|
+
}();
|
|
97
|
+
await core.mongoMeasurement.stop(uri);
|
|
98
|
+
await fnOpts?.afterEach?.call(task, "run");
|
|
99
|
+
await fnOpts?.afterAll?.call(task, "run");
|
|
100
|
+
};
|
|
101
|
+
const runTaskSync = (task, uri) => {
|
|
102
|
+
const { fnOpts, fn } = task;
|
|
103
|
+
fnOpts?.beforeAll?.call(task, "run");
|
|
104
|
+
fnOpts?.beforeEach?.call(task, "run");
|
|
105
|
+
(function __codspeed_root_frame__() {
|
|
106
|
+
global.gc?.();
|
|
107
|
+
core.InstrumentHooks.startBenchmark();
|
|
108
|
+
fn();
|
|
109
|
+
core.InstrumentHooks.stopBenchmark();
|
|
110
|
+
core.InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
111
|
+
})();
|
|
112
|
+
fnOpts?.afterEach?.call(task, "run");
|
|
113
|
+
fnOpts?.afterAll?.call(task, "run");
|
|
114
|
+
};
|
|
80
115
|
bench.run = async () => {
|
|
81
|
-
|
|
82
|
-
`[CodSpeed] running with @codspeed/tinybench v${"5.0.0-alpha.1"} (instrumented mode)`
|
|
83
|
-
);
|
|
116
|
+
logStart();
|
|
84
117
|
for (const task of bench.tasks) {
|
|
85
118
|
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
await core.optimizeFunction(async () => {
|
|
89
|
-
await fnOpts?.beforeEach?.call(task, "run");
|
|
90
|
-
await fn();
|
|
91
|
-
await fnOpts?.afterEach?.call(task, "run");
|
|
92
|
-
});
|
|
93
|
-
await fnOpts?.beforeEach?.call(task, "run");
|
|
94
|
-
await core.mongoMeasurement.start(uri);
|
|
95
|
-
global.gc?.();
|
|
96
|
-
await async function __codspeed_root_frame__() {
|
|
97
|
-
core.InstrumentHooks.startBenchmark();
|
|
98
|
-
await fn();
|
|
99
|
-
core.InstrumentHooks.stopBenchmark();
|
|
100
|
-
core.InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
101
|
-
}();
|
|
102
|
-
await core.mongoMeasurement.stop(uri);
|
|
103
|
-
await fnOpts?.afterEach?.call(task, "run");
|
|
104
|
-
await fnOpts?.afterAll?.call(task, "run");
|
|
105
|
-
console.log(
|
|
106
|
-
` \u2714 ${core.InstrumentHooks.isInstrumented() ? "Measured" : "Checked"} ${uri}`
|
|
107
|
-
);
|
|
119
|
+
await runTaskAsync(task, uri);
|
|
120
|
+
logTaskCompletion(uri);
|
|
108
121
|
}
|
|
109
|
-
|
|
110
|
-
console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);
|
|
111
|
-
return bench.tasks;
|
|
122
|
+
return logEnd();
|
|
112
123
|
};
|
|
113
124
|
bench.runSync = () => {
|
|
114
|
-
|
|
115
|
-
`[CodSpeed] running with @codspeed/tinybench v${"5.0.0-alpha.1"} (instrumented mode)`
|
|
116
|
-
);
|
|
125
|
+
logStart();
|
|
117
126
|
for (const task of bench.tasks) {
|
|
118
127
|
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
core.optimizeFunction(async () => {
|
|
122
|
-
fnOpts?.beforeEach?.call(task, "run");
|
|
123
|
-
fn();
|
|
124
|
-
fnOpts?.afterEach?.call(task, "run");
|
|
125
|
-
});
|
|
126
|
-
fnOpts?.beforeEach?.call(task, "run");
|
|
127
|
-
global.gc?.();
|
|
128
|
-
(function __codspeed_root_frame__() {
|
|
129
|
-
core.InstrumentHooks.startBenchmark();
|
|
130
|
-
fn();
|
|
131
|
-
core.InstrumentHooks.stopBenchmark();
|
|
132
|
-
core.InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
133
|
-
})();
|
|
134
|
-
core.mongoMeasurement.stop(uri);
|
|
135
|
-
fnOpts?.afterEach?.call(task, "run");
|
|
136
|
-
fnOpts?.afterAll?.call(task, "run");
|
|
137
|
-
console.log(
|
|
138
|
-
` \u2714 ${core.InstrumentHooks.isInstrumented() ? "Measured" : "Checked"} ${uri}`
|
|
139
|
-
);
|
|
128
|
+
runTaskSync(task, uri);
|
|
129
|
+
logTaskCompletion(uri);
|
|
140
130
|
}
|
|
131
|
+
return logEnd();
|
|
132
|
+
};
|
|
133
|
+
const logStart = () => {
|
|
134
|
+
console.log(
|
|
135
|
+
`[CodSpeed] running with @codspeed/tinybench v${"5.0.0-alpha.3"} (instrumented mode)`
|
|
136
|
+
);
|
|
137
|
+
};
|
|
138
|
+
const logTaskCompletion = (uri) => {
|
|
139
|
+
console.log(
|
|
140
|
+
` \u2714 ${core.InstrumentHooks.isInstrumented() ? "Measured" : "Checked"} ${uri}`
|
|
141
|
+
);
|
|
142
|
+
};
|
|
143
|
+
const logEnd = () => {
|
|
141
144
|
core.teardownCore();
|
|
142
145
|
console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);
|
|
143
146
|
return bench.tasks;
|
|
@@ -146,21 +149,11 @@ function runInstrumentedBench(bench, rootCallingFile) {
|
|
|
146
149
|
|
|
147
150
|
function runWalltimeBench(bench, rootCallingFile) {
|
|
148
151
|
bench.run = async () => {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
);
|
|
152
|
-
const originalRun = bench.run;
|
|
153
|
-
const benchProto = Object.getPrototypeOf(bench);
|
|
154
|
-
const prototypeRun = benchProto.run;
|
|
155
|
-
bench.run = prototypeRun;
|
|
156
|
-
const benchmarks = [];
|
|
152
|
+
logStart();
|
|
153
|
+
const codspeedBenchmarks = [];
|
|
157
154
|
for (const task of bench.tasks) {
|
|
158
155
|
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
159
|
-
|
|
160
|
-
async function __codspeed_root_frame__() {
|
|
161
|
-
await fn();
|
|
162
|
-
}
|
|
163
|
-
task.fn = __codspeed_root_frame__;
|
|
156
|
+
wrapTaskFunction(task, true);
|
|
164
157
|
if (bench.opts.warmup) {
|
|
165
158
|
await task.warmup();
|
|
166
159
|
}
|
|
@@ -169,95 +162,91 @@ function runWalltimeBench(bench, rootCallingFile) {
|
|
|
169
162
|
await task.run();
|
|
170
163
|
core.InstrumentHooks.stopBenchmark();
|
|
171
164
|
await core.mongoMeasurement.stop(uri);
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
name: task.name,
|
|
179
|
-
uri,
|
|
180
|
-
config: {
|
|
181
|
-
max_rounds: bench.opts.iterations ?? null,
|
|
182
|
-
max_time_ns: bench.opts.time ? core.msToNs(bench.opts.time) : null,
|
|
183
|
-
min_round_time_ns: null,
|
|
184
|
-
// tinybench does not have an option for this
|
|
185
|
-
warmup_time_ns: bench.opts.warmup && bench.opts.warmupTime ? core.msToNs(bench.opts.warmupTime) : null
|
|
186
|
-
},
|
|
187
|
-
stats
|
|
188
|
-
};
|
|
189
|
-
benchmarks.push(benchmark);
|
|
190
|
-
console.log(` \u2714 Collected walltime data for ${uri}`);
|
|
191
|
-
core.InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
192
|
-
} else {
|
|
193
|
-
console.warn(` \u26A0 No result data available for ${uri}`);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
if (benchmarks.length > 0) {
|
|
197
|
-
core.writeWalltimeResults(benchmarks, true);
|
|
165
|
+
registerCodspeedBenchmarkFromTask(
|
|
166
|
+
codspeedBenchmarks,
|
|
167
|
+
task,
|
|
168
|
+
bench,
|
|
169
|
+
rootCallingFile
|
|
170
|
+
);
|
|
198
171
|
}
|
|
199
|
-
|
|
200
|
-
`[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`
|
|
201
|
-
);
|
|
202
|
-
bench.run = originalRun;
|
|
203
|
-
return bench.tasks;
|
|
172
|
+
return finalizeWalltimeRun(bench, codspeedBenchmarks, true);
|
|
204
173
|
};
|
|
205
174
|
bench.runSync = () => {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
);
|
|
209
|
-
const originalRun = bench.run;
|
|
210
|
-
const benchProto = Object.getPrototypeOf(bench);
|
|
211
|
-
const prototypeRun = benchProto.run;
|
|
212
|
-
bench.run = prototypeRun;
|
|
213
|
-
const benchmarks = [];
|
|
175
|
+
logStart();
|
|
176
|
+
const codspeedBenchmarks = [];
|
|
214
177
|
for (const task of bench.tasks) {
|
|
215
|
-
|
|
216
|
-
fn();
|
|
217
|
-
};
|
|
218
|
-
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
178
|
+
wrapTaskFunction(task, false);
|
|
219
179
|
if (bench.opts.warmup) {
|
|
220
180
|
task.warmup();
|
|
221
181
|
}
|
|
222
|
-
const { fn } = task;
|
|
223
|
-
task.fn = __codspeed_root_frame__2;
|
|
224
182
|
core.InstrumentHooks.startBenchmark();
|
|
225
183
|
task.runSync();
|
|
226
184
|
core.InstrumentHooks.stopBenchmark();
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
name: task.name,
|
|
234
|
-
uri,
|
|
235
|
-
config: {
|
|
236
|
-
max_rounds: bench.opts.iterations ?? null,
|
|
237
|
-
max_time_ns: bench.opts.time ? core.msToNs(bench.opts.time) : null,
|
|
238
|
-
min_round_time_ns: null,
|
|
239
|
-
// tinybench does not have an option for this
|
|
240
|
-
warmup_time_ns: bench.opts.warmup && bench.opts.warmupTime ? core.msToNs(bench.opts.warmupTime) : null
|
|
241
|
-
},
|
|
242
|
-
stats
|
|
243
|
-
};
|
|
244
|
-
benchmarks.push(benchmark);
|
|
245
|
-
console.log(` \u2714 Collected walltime data for ${uri}`);
|
|
246
|
-
core.InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
247
|
-
} else {
|
|
248
|
-
console.warn(` \u26A0 No result data available for ${uri}`);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
if (benchmarks.length > 0) {
|
|
252
|
-
core.writeWalltimeResults(benchmarks);
|
|
185
|
+
registerCodspeedBenchmarkFromTask(
|
|
186
|
+
codspeedBenchmarks,
|
|
187
|
+
task,
|
|
188
|
+
bench,
|
|
189
|
+
rootCallingFile
|
|
190
|
+
);
|
|
253
191
|
}
|
|
254
|
-
|
|
255
|
-
`[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`
|
|
256
|
-
);
|
|
257
|
-
bench.run = originalRun;
|
|
258
|
-
return bench.tasks;
|
|
192
|
+
return finalizeWalltimeRun(bench, codspeedBenchmarks, false);
|
|
259
193
|
};
|
|
260
194
|
}
|
|
195
|
+
function logStart() {
|
|
196
|
+
console.log(
|
|
197
|
+
`[CodSpeed] running with @codspeed/tinybench v${"5.0.0-alpha.3"} (walltime mode)`
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
const TINYBENCH_WARMUP_DEFAULT = 16;
|
|
201
|
+
function registerCodspeedBenchmarkFromTask(codspeedBenchmarks, task, bench, rootCallingFile) {
|
|
202
|
+
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
203
|
+
if (!task.result) {
|
|
204
|
+
console.warn(` \u26A0 No result data available for ${uri}`);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
const warmupIterations = bench.opts.warmup ? bench.opts.warmupIterations ?? TINYBENCH_WARMUP_DEFAULT : 0;
|
|
208
|
+
const stats = convertTinybenchResultToBenchmarkStats(
|
|
209
|
+
task.result,
|
|
210
|
+
warmupIterations
|
|
211
|
+
);
|
|
212
|
+
codspeedBenchmarks.push({
|
|
213
|
+
name: task.name,
|
|
214
|
+
uri,
|
|
215
|
+
config: {
|
|
216
|
+
max_rounds: bench.opts.iterations ?? null,
|
|
217
|
+
max_time_ns: bench.opts.time ? core.msToNs(bench.opts.time) : null,
|
|
218
|
+
min_round_time_ns: null,
|
|
219
|
+
// tinybench does not have an option for this
|
|
220
|
+
warmup_time_ns: bench.opts.warmup && bench.opts.warmupTime ? core.msToNs(bench.opts.warmupTime) : null
|
|
221
|
+
},
|
|
222
|
+
stats
|
|
223
|
+
});
|
|
224
|
+
console.log(` \u2714 Collected walltime data for ${uri}`);
|
|
225
|
+
core.InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
226
|
+
}
|
|
227
|
+
function wrapTaskFunction(task, isAsync) {
|
|
228
|
+
const { fn } = task;
|
|
229
|
+
if (isAsync) {
|
|
230
|
+
async function __codspeed_root_frame__2() {
|
|
231
|
+
await fn();
|
|
232
|
+
}
|
|
233
|
+
task.fn = __codspeed_root_frame__2;
|
|
234
|
+
} else {
|
|
235
|
+
let __codspeed_root_frame__2 = function() {
|
|
236
|
+
fn();
|
|
237
|
+
};
|
|
238
|
+
task.fn = __codspeed_root_frame__2;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
function finalizeWalltimeRun(bench, benchmarks, isAsync) {
|
|
242
|
+
if (benchmarks.length > 0) {
|
|
243
|
+
core.writeWalltimeResults(benchmarks, isAsync);
|
|
244
|
+
}
|
|
245
|
+
console.log(
|
|
246
|
+
`[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`
|
|
247
|
+
);
|
|
248
|
+
return bench.tasks;
|
|
249
|
+
}
|
|
261
250
|
function convertTinybenchResultToBenchmarkStats(result, warmupIterations) {
|
|
262
251
|
const { min, max, mean, sd, samples } = result.latency;
|
|
263
252
|
const sortedTimesNs = samples.map(core.msToNs).sort((a, b) => a - b);
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../node_modules/.pnpm/stack-trace@1.0.0-pre2/node_modules/stack-trace/index.js","../src/uri.ts","../src/instrumented.ts","../src/walltime.ts","../src/index.ts"],"sourcesContent":["export function get(belowFn) {\r\n const oldLimit = Error.stackTraceLimit;\r\n Error.stackTraceLimit = Infinity;\r\n\r\n const dummyObject = {};\r\n\r\n const v8Handler = Error.prepareStackTrace;\r\n Error.prepareStackTrace = function(dummyObject, v8StackTrace) {\r\n return v8StackTrace;\r\n };\r\n Error.captureStackTrace(dummyObject, belowFn || get);\r\n\r\n const v8StackTrace = dummyObject.stack;\r\n Error.prepareStackTrace = v8Handler;\r\n Error.stackTraceLimit = oldLimit;\r\n\r\n return v8StackTrace;\r\n}\r\n\r\nexport function parse(err) {\r\n if (!err.stack) {\r\n return [];\r\n }\r\n\r\n const lines = err.stack.split('\\n').slice(1);\r\n return lines\r\n .map(function(line) {\r\n if (line.match(/^\\s*[-]{4,}$/)) {\r\n return createParsedCallSite({\r\n fileName: line,\r\n lineNumber: null,\r\n functionName: null,\r\n typeName: null,\r\n methodName: null,\r\n columnNumber: null,\r\n 'native': null,\r\n });\r\n }\r\n\r\n const lineMatch = line.match(/at (?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/);\r\n if (!lineMatch) {\r\n return;\r\n }\r\n\r\n let object = null;\r\n let method = null;\r\n let functionName = null;\r\n let typeName = null;\r\n let methodName = null;\r\n let isNative = (lineMatch[5] === 'native');\r\n\r\n if (lineMatch[1]) {\r\n functionName = lineMatch[1];\r\n let methodStart = functionName.lastIndexOf('.');\r\n if (functionName[methodStart-1] == '.')\r\n methodStart--;\r\n if (methodStart > 0) {\r\n object = functionName.substr(0, methodStart);\r\n method = functionName.substr(methodStart + 1);\r\n const objectEnd = object.indexOf('.Module');\r\n if (objectEnd > 0) {\r\n functionName = functionName.substr(objectEnd + 1);\r\n object = object.substr(0, objectEnd);\r\n }\r\n }\r\n }\r\n\r\n if (method) {\r\n typeName = object;\r\n methodName = method;\r\n }\r\n\r\n if (method === '<anonymous>') {\r\n methodName = null;\r\n functionName = null;\r\n }\r\n\r\n const properties = {\r\n fileName: lineMatch[2] || null,\r\n lineNumber: parseInt(lineMatch[3], 10) || null,\r\n functionName: functionName,\r\n typeName: typeName,\r\n methodName: methodName,\r\n columnNumber: parseInt(lineMatch[4], 10) || null,\r\n 'native': isNative,\r\n };\r\n\r\n return createParsedCallSite(properties);\r\n })\r\n .filter(function(callSite) {\r\n return !!callSite;\r\n });\r\n}\r\n\r\nfunction CallSite(properties) {\r\n for (const property in properties) {\r\n this[property] = properties[property];\r\n }\r\n}\r\n\r\nconst strProperties = [\r\n 'this',\r\n 'typeName',\r\n 'functionName',\r\n 'methodName',\r\n 'fileName',\r\n 'lineNumber',\r\n 'columnNumber',\r\n 'function',\r\n 'evalOrigin'\r\n];\r\n\r\nconst boolProperties = [\r\n 'topLevel',\r\n 'eval',\r\n 'native',\r\n 'constructor'\r\n];\r\n\r\nstrProperties.forEach(function (property) {\r\n CallSite.prototype[property] = null;\r\n CallSite.prototype['get' + property[0].toUpperCase() + property.substr(1)] = function () {\r\n return this[property];\r\n }\r\n});\r\n\r\nboolProperties.forEach(function (property) {\r\n CallSite.prototype[property] = false;\r\n CallSite.prototype['is' + property[0].toUpperCase() + property.substr(1)] = function () {\r\n return this[property];\r\n }\r\n});\r\n\r\nfunction createParsedCallSite(properties) {\r\n return new CallSite(properties);\r\n}\r\n","import { Bench } from \"tinybench\";\n\n// Store URI mapping externally since fnOpts is private\nexport const taskUriMap = new WeakMap<Bench, Map<string, string>>();\n\nexport function getTaskUri(\n bench: Bench,\n taskName: string,\n rootCallingFile: string\n): string {\n const uriMap = taskUriMap.get(bench);\n return uriMap?.get(taskName) || `${rootCallingFile}::${taskName}`;\n}\n\nexport function getOrCreateUriMap(bench: Bench): Map<string, string> {\n let uriMap = taskUriMap.get(bench);\n if (!uriMap) {\n uriMap = new Map<string, string>();\n taskUriMap.set(bench, uriMap);\n }\n return uriMap;\n}\n","import {\n InstrumentHooks,\n mongoMeasurement,\n optimizeFunction,\n teardownCore,\n} from \"@codspeed/core\";\nimport { Bench, Fn, FnOptions } from \"tinybench\";\nimport { getTaskUri } from \"./uri\";\n\ndeclare const __VERSION__: string;\n\nexport function runInstrumentedBench(\n bench: Bench,\n rootCallingFile: string\n): void {\n bench.run = async () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (instrumented mode)`\n );\n\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // Access private fields\n const { fnOpts, fn } = task as unknown as { fnOpts?: FnOptions; fn: Fn };\n\n // Call beforeAll hook if it exists\n await fnOpts?.beforeAll?.call(task, \"run\");\n\n // run optimizations\n await optimizeFunction(async () => {\n await fnOpts?.beforeEach?.call(task, \"run\");\n await fn();\n await fnOpts?.afterEach?.call(task, \"run\");\n });\n\n // run instrumented benchmark\n await fnOpts?.beforeEach?.call(task, \"run\");\n\n await mongoMeasurement.start(uri);\n global.gc?.();\n await (async function __codspeed_root_frame__() {\n InstrumentHooks.startBenchmark();\n await fn();\n InstrumentHooks.stopBenchmark();\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n })();\n await mongoMeasurement.stop(uri);\n\n await fnOpts?.afterEach?.call(task, \"run\");\n\n await fnOpts?.afterAll?.call(task, \"run\");\n\n // print results\n console.log(\n ` ✔ ${\n InstrumentHooks.isInstrumented() ? \"Measured\" : \"Checked\"\n } ${uri}`\n );\n }\n\n teardownCore();\n console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);\n return bench.tasks;\n };\n\n bench.runSync = () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (instrumented mode)`\n );\n\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // Access private fields\n const { fnOpts, fn } = task as unknown as { fnOpts?: FnOptions; fn: Fn };\n\n // Call beforeAll hook if it exists\n fnOpts?.beforeAll?.call(task, \"run\");\n\n // run optimizations\n optimizeFunction(async () => {\n fnOpts?.beforeEach?.call(task, \"run\");\n fn();\n fnOpts?.afterEach?.call(task, \"run\");\n });\n\n // run instrumented benchmark\n fnOpts?.beforeEach?.call(task, \"run\");\n\n // await mongoMeasurement.start(uri);\n global.gc?.();\n (function __codspeed_root_frame__() {\n InstrumentHooks.startBenchmark();\n fn();\n InstrumentHooks.stopBenchmark();\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n })();\n mongoMeasurement.stop(uri);\n\n fnOpts?.afterEach?.call(task, \"run\");\n\n fnOpts?.afterAll?.call(task, \"run\");\n\n // print results\n console.log(\n ` ✔ ${\n InstrumentHooks.isInstrumented() ? \"Measured\" : \"Checked\"\n } ${uri}`\n );\n }\n\n teardownCore();\n console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);\n return bench.tasks;\n };\n}\n","import {\n calculateQuantiles,\n InstrumentHooks,\n mongoMeasurement,\n msToNs,\n msToS,\n writeWalltimeResults,\n type Benchmark,\n type BenchmarkStats,\n} from \"@codspeed/core\";\nimport { Bench, Fn, TaskResult } from \"tinybench\";\nimport { getTaskUri } from \"./uri\";\n\ndeclare const __VERSION__: string;\n\nexport function runWalltimeBench(bench: Bench, rootCallingFile: string): void {\n bench.run = async () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (walltime mode)`\n );\n\n // Store the original run method before we override it\n const originalRun = bench.run;\n\n // Temporarily restore the original run to get actual benchmark results\n const benchProto = Object.getPrototypeOf(bench);\n const prototypeRun = benchProto.run;\n bench.run = prototypeRun;\n\n const benchmarks: Benchmark[] = [];\n\n // Collect and report walltime data\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // Override the function under test to add a static frame\n const { fn } = task as unknown as { fn: Fn };\n // eslint-disable-next-line no-inner-declarations\n async function __codspeed_root_frame__() {\n await fn();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (task as any).fn = __codspeed_root_frame__;\n\n // run the warmup of the task right before its actual run\n if (bench.opts.warmup) {\n await task.warmup();\n }\n\n await mongoMeasurement.start(uri);\n InstrumentHooks.startBenchmark();\n await task.run();\n InstrumentHooks.stopBenchmark();\n await mongoMeasurement.stop(uri);\n\n if (task.result) {\n // Convert tinybench result to BenchmarkStats format\n const stats = convertTinybenchResultToBenchmarkStats(\n task.result,\n bench.opts.warmup ? bench.opts.warmupIterations ?? 0 : 0\n );\n\n const benchmark: Benchmark = {\n name: task.name,\n uri,\n config: {\n max_rounds: bench.opts.iterations ?? null,\n max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,\n min_round_time_ns: null, // tinybench does not have an option for this\n warmup_time_ns:\n bench.opts.warmup && bench.opts.warmupTime\n ? msToNs(bench.opts.warmupTime)\n : null,\n },\n stats,\n };\n\n benchmarks.push(benchmark);\n console.log(` ✔ Collected walltime data for ${uri}`);\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n } else {\n console.warn(` ⚠ No result data available for ${uri}`);\n }\n }\n\n // Write results to JSON file using core function\n if (benchmarks.length > 0) {\n writeWalltimeResults(benchmarks, true);\n }\n\n console.log(\n `[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`\n );\n // Restore our custom run method\n bench.run = originalRun;\n\n return bench.tasks;\n };\n\n bench.runSync = () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (walltime mode)`\n );\n\n // Store the original run method before we override it\n const originalRun = bench.run;\n\n // Temporarily restore the original run to get actual benchmark results\n const benchProto = Object.getPrototypeOf(bench);\n const prototypeRun = benchProto.run;\n bench.run = prototypeRun;\n\n const benchmarks: Benchmark[] = [];\n\n // Collect and report walltime data\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // run the warmup of the task right before its actual run\n if (bench.opts.warmup) {\n task.warmup();\n }\n\n // Override the function under test to add a static frame\n const { fn } = task as unknown as { fn: Fn };\n // eslint-disable-next-line no-inner-declarations\n function __codspeed_root_frame__() {\n fn();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (task as any).fn = __codspeed_root_frame__;\n\n InstrumentHooks.startBenchmark();\n task.runSync();\n InstrumentHooks.stopBenchmark();\n\n if (task.result) {\n // Convert tinybench result to BenchmarkStats format\n const stats = convertTinybenchResultToBenchmarkStats(\n task.result,\n bench.opts.warmup ? bench.opts.warmupIterations ?? 0 : 0\n );\n\n const benchmark: Benchmark = {\n name: task.name,\n uri,\n config: {\n max_rounds: bench.opts.iterations ?? null,\n max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,\n min_round_time_ns: null, // tinybench does not have an option for this\n warmup_time_ns:\n bench.opts.warmup && bench.opts.warmupTime\n ? msToNs(bench.opts.warmupTime)\n : null,\n },\n stats,\n };\n\n benchmarks.push(benchmark);\n console.log(` ✔ Collected walltime data for ${uri}`);\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n } else {\n console.warn(` ⚠ No result data available for ${uri}`);\n }\n }\n\n // Write results to JSON file using core function\n if (benchmarks.length > 0) {\n writeWalltimeResults(benchmarks);\n }\n\n console.log(\n `[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`\n );\n // Restore our custom run method\n bench.run = originalRun;\n\n return bench.tasks;\n };\n}\n\nfunction convertTinybenchResultToBenchmarkStats(\n result: TaskResult,\n warmupIterations: number\n): BenchmarkStats {\n const { min, max, mean, sd, samples } = result.latency;\n\n // Get individual sample times in nanoseconds and sort them\n const sortedTimesNs = samples.map(msToNs).sort((a, b) => a - b);\n const meanNs = msToNs(mean);\n const stdevNs = msToNs(sd);\n\n const { q1_ns, q3_ns, median_ns, iqr_outlier_rounds, stdev_outlier_rounds } =\n calculateQuantiles({ meanNs, stdevNs, sortedTimesNs });\n\n return {\n min_ns: msToNs(min),\n max_ns: msToNs(max),\n mean_ns: meanNs,\n stdev_ns: stdevNs,\n q1_ns,\n median_ns,\n q3_ns,\n total_time: msToS(result.totalTime),\n iter_per_round: 1, // as there is only one round in tinybench, we define that there were n rounds of 1 iteration\n rounds: sortedTimesNs.length,\n iqr_outlier_rounds,\n stdev_outlier_rounds,\n warmup_iters: warmupIterations,\n };\n}\n","import {\n getCodspeedRunnerMode,\n getGitDir,\n InstrumentHooks,\n mongoMeasurement,\n setupCore,\n SetupInstrumentsRequestBody,\n SetupInstrumentsResponse,\n tryIntrospect,\n} from \"@codspeed/core\";\nimport path from \"path\";\nimport { get as getStackTrace } from \"stack-trace\";\nimport { Bench } from \"tinybench\";\nimport { fileURLToPath } from \"url\";\nimport { runInstrumentedBench } from \"./instrumented\";\nimport { getOrCreateUriMap } from \"./uri\";\nimport { runWalltimeBench } from \"./walltime\";\n\ntryIntrospect();\n\nexport function withCodSpeed(bench: Bench): Bench {\n const codspeedRunnerMode = getCodspeedRunnerMode();\n if (codspeedRunnerMode === \"disabled\") {\n return bench;\n }\n setupCore();\n\n const rootCallingFile = getCallingFile();\n\n // Compute and register URI for bench\n const uriMap = getOrCreateUriMap(bench);\n const rawAdd = bench.add;\n bench.add = (name, fn, opts?) => {\n const callingFile = getCallingFile();\n let uri = callingFile;\n if (bench.name !== undefined) {\n uri += `::${bench.name}`;\n }\n uri += `::${name}`;\n uriMap.set(name, uri);\n return rawAdd.bind(bench)(name, fn, opts);\n };\n\n if (codspeedRunnerMode === \"instrumented\") {\n runInstrumentedBench(bench, rootCallingFile);\n } else if (codspeedRunnerMode === \"walltime\") {\n runWalltimeBench(bench, rootCallingFile);\n }\n\n return bench;\n}\n\nfunction getCallingFile(): string {\n const stack = getStackTrace();\n let callingFile = stack[2].getFileName(); // [here, withCodSpeed, actual caller]\n const gitDir = getGitDir(callingFile);\n if (gitDir === undefined) {\n throw new Error(\"Could not find a git repository\");\n }\n if (callingFile.startsWith(\"file://\")) {\n callingFile = fileURLToPath(callingFile);\n }\n return path.relative(gitDir, callingFile);\n}\n\n/**\n * Dynamically setup the CodSpeed instruments.\n */\nexport async function setupInstruments(\n body: SetupInstrumentsRequestBody\n): Promise<SetupInstrumentsResponse> {\n if (!InstrumentHooks.isInstrumented()) {\n console.warn(\"[CodSpeed] No instrumentation found, using default mongoUrl\");\n\n return { remoteAddr: body.mongoUrl };\n }\n\n return await mongoMeasurement.setupInstruments(body);\n}\n"],"names":["optimizeFunction","mongoMeasurement","InstrumentHooks","teardownCore","msToNs","writeWalltimeResults","__codspeed_root_frame__","calculateQuantiles","msToS","tryIntrospect","getCodspeedRunnerMode","setupCore","getStackTrace","getGitDir","fileURLToPath"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../node_modules/.pnpm/stack-trace@1.0.0-pre2/node_modules/stack-trace/index.js","../src/uri.ts","../src/instrumented.ts","../src/walltime.ts","../src/index.ts"],"sourcesContent":["export function get(belowFn) {\r\n const oldLimit = Error.stackTraceLimit;\r\n Error.stackTraceLimit = Infinity;\r\n\r\n const dummyObject = {};\r\n\r\n const v8Handler = Error.prepareStackTrace;\r\n Error.prepareStackTrace = function(dummyObject, v8StackTrace) {\r\n return v8StackTrace;\r\n };\r\n Error.captureStackTrace(dummyObject, belowFn || get);\r\n\r\n const v8StackTrace = dummyObject.stack;\r\n Error.prepareStackTrace = v8Handler;\r\n Error.stackTraceLimit = oldLimit;\r\n\r\n return v8StackTrace;\r\n}\r\n\r\nexport function parse(err) {\r\n if (!err.stack) {\r\n return [];\r\n }\r\n\r\n const lines = err.stack.split('\\n').slice(1);\r\n return lines\r\n .map(function(line) {\r\n if (line.match(/^\\s*[-]{4,}$/)) {\r\n return createParsedCallSite({\r\n fileName: line,\r\n lineNumber: null,\r\n functionName: null,\r\n typeName: null,\r\n methodName: null,\r\n columnNumber: null,\r\n 'native': null,\r\n });\r\n }\r\n\r\n const lineMatch = line.match(/at (?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/);\r\n if (!lineMatch) {\r\n return;\r\n }\r\n\r\n let object = null;\r\n let method = null;\r\n let functionName = null;\r\n let typeName = null;\r\n let methodName = null;\r\n let isNative = (lineMatch[5] === 'native');\r\n\r\n if (lineMatch[1]) {\r\n functionName = lineMatch[1];\r\n let methodStart = functionName.lastIndexOf('.');\r\n if (functionName[methodStart-1] == '.')\r\n methodStart--;\r\n if (methodStart > 0) {\r\n object = functionName.substr(0, methodStart);\r\n method = functionName.substr(methodStart + 1);\r\n const objectEnd = object.indexOf('.Module');\r\n if (objectEnd > 0) {\r\n functionName = functionName.substr(objectEnd + 1);\r\n object = object.substr(0, objectEnd);\r\n }\r\n }\r\n }\r\n\r\n if (method) {\r\n typeName = object;\r\n methodName = method;\r\n }\r\n\r\n if (method === '<anonymous>') {\r\n methodName = null;\r\n functionName = null;\r\n }\r\n\r\n const properties = {\r\n fileName: lineMatch[2] || null,\r\n lineNumber: parseInt(lineMatch[3], 10) || null,\r\n functionName: functionName,\r\n typeName: typeName,\r\n methodName: methodName,\r\n columnNumber: parseInt(lineMatch[4], 10) || null,\r\n 'native': isNative,\r\n };\r\n\r\n return createParsedCallSite(properties);\r\n })\r\n .filter(function(callSite) {\r\n return !!callSite;\r\n });\r\n}\r\n\r\nfunction CallSite(properties) {\r\n for (const property in properties) {\r\n this[property] = properties[property];\r\n }\r\n}\r\n\r\nconst strProperties = [\r\n 'this',\r\n 'typeName',\r\n 'functionName',\r\n 'methodName',\r\n 'fileName',\r\n 'lineNumber',\r\n 'columnNumber',\r\n 'function',\r\n 'evalOrigin'\r\n];\r\n\r\nconst boolProperties = [\r\n 'topLevel',\r\n 'eval',\r\n 'native',\r\n 'constructor'\r\n];\r\n\r\nstrProperties.forEach(function (property) {\r\n CallSite.prototype[property] = null;\r\n CallSite.prototype['get' + property[0].toUpperCase() + property.substr(1)] = function () {\r\n return this[property];\r\n }\r\n});\r\n\r\nboolProperties.forEach(function (property) {\r\n CallSite.prototype[property] = false;\r\n CallSite.prototype['is' + property[0].toUpperCase() + property.substr(1)] = function () {\r\n return this[property];\r\n }\r\n});\r\n\r\nfunction createParsedCallSite(properties) {\r\n return new CallSite(properties);\r\n}\r\n","import { Bench } from \"tinybench\";\n\n// Store URI mapping externally since fnOpts is private\nexport const taskUriMap = new WeakMap<Bench, Map<string, string>>();\n\nexport function getTaskUri(\n bench: Bench,\n taskName: string,\n rootCallingFile: string\n): string {\n const uriMap = taskUriMap.get(bench);\n return uriMap?.get(taskName) || `${rootCallingFile}::${taskName}`;\n}\n\nexport function getOrCreateUriMap(bench: Bench): Map<string, string> {\n let uriMap = taskUriMap.get(bench);\n if (!uriMap) {\n uriMap = new Map<string, string>();\n taskUriMap.set(bench, uriMap);\n }\n return uriMap;\n}\n","import {\n InstrumentHooks,\n mongoMeasurement,\n optimizeFunction,\n teardownCore,\n} from \"@codspeed/core\";\nimport { Bench, Fn, FnOptions, Task } from \"tinybench\";\nimport { getTaskUri } from \"./uri\";\n\ndeclare const __VERSION__: string;\n\nexport function runInstrumentedBench(\n bench: Bench,\n rootCallingFile: string\n): void {\n const runTaskAsync = async (task: Task, uri: string): Promise<void> => {\n const { fnOpts, fn } = task as unknown as { fnOpts?: FnOptions; fn: Fn };\n\n await fnOpts?.beforeAll?.call(task, \"run\");\n await optimizeFunction(async () => {\n await fnOpts?.beforeEach?.call(task, \"run\");\n await fn();\n await fnOpts?.afterEach?.call(task, \"run\");\n });\n await fnOpts?.beforeEach?.call(task, \"run\");\n await mongoMeasurement.start(uri);\n\n await (async function __codspeed_root_frame__() {\n global.gc?.();\n InstrumentHooks.startBenchmark();\n await fn();\n InstrumentHooks.stopBenchmark();\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n })();\n\n await mongoMeasurement.stop(uri);\n await fnOpts?.afterEach?.call(task, \"run\");\n await fnOpts?.afterAll?.call(task, \"run\");\n };\n\n // Sync task runner\n const runTaskSync = (task: Task, uri: string): void => {\n const { fnOpts, fn } = task as unknown as { fnOpts?: FnOptions; fn: Fn };\n\n fnOpts?.beforeAll?.call(task, \"run\");\n fnOpts?.beforeEach?.call(task, \"run\");\n\n (function __codspeed_root_frame__() {\n global.gc?.();\n InstrumentHooks.startBenchmark();\n fn();\n InstrumentHooks.stopBenchmark();\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n })();\n\n fnOpts?.afterEach?.call(task, \"run\");\n fnOpts?.afterAll?.call(task, \"run\");\n };\n\n bench.run = async () => {\n logStart();\n\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n await runTaskAsync(task, uri);\n logTaskCompletion(uri);\n }\n\n return logEnd();\n };\n\n bench.runSync = () => {\n logStart();\n\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n runTaskSync(task, uri);\n logTaskCompletion(uri);\n }\n\n return logEnd();\n };\n\n const logStart = () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (instrumented mode)`\n );\n };\n\n const logTaskCompletion = (uri: string) => {\n console.log(\n ` ✔ ${\n InstrumentHooks.isInstrumented() ? \"Measured\" : \"Checked\"\n } ${uri}`\n );\n };\n\n const logEnd = () => {\n teardownCore();\n console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);\n return bench.tasks;\n };\n}\n","import {\n calculateQuantiles,\n InstrumentHooks,\n mongoMeasurement,\n msToNs,\n msToS,\n writeWalltimeResults,\n type Benchmark as CodspeedBenchmark,\n type BenchmarkStats,\n} from \"@codspeed/core\";\nimport { Bench, Fn, Task, TaskResult } from \"tinybench\";\nimport { getTaskUri } from \"./uri\";\n\ndeclare const __VERSION__: string;\n\nexport function runWalltimeBench(bench: Bench, rootCallingFile: string): void {\n bench.run = async () => {\n logStart();\n const codspeedBenchmarks: CodspeedBenchmark[] = [];\n\n // Collect and report walltime data\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // Override the function under test to add a static frame\n wrapTaskFunction(task, true);\n\n // run the warmup of the task right before its actual run\n if (bench.opts.warmup) {\n await task.warmup();\n }\n\n await mongoMeasurement.start(uri);\n InstrumentHooks.startBenchmark();\n await task.run();\n InstrumentHooks.stopBenchmark();\n await mongoMeasurement.stop(uri);\n\n registerCodspeedBenchmarkFromTask(\n codspeedBenchmarks,\n task,\n bench,\n rootCallingFile\n );\n }\n\n return finalizeWalltimeRun(bench, codspeedBenchmarks, true);\n };\n\n bench.runSync = () => {\n logStart();\n const codspeedBenchmarks: CodspeedBenchmark[] = [];\n\n for (const task of bench.tasks) {\n // Override the function under test to add a static frame\n wrapTaskFunction(task, false);\n\n if (bench.opts.warmup) {\n task.warmup();\n }\n\n InstrumentHooks.startBenchmark();\n task.runSync();\n InstrumentHooks.stopBenchmark();\n\n registerCodspeedBenchmarkFromTask(\n codspeedBenchmarks,\n task,\n bench,\n rootCallingFile\n );\n }\n\n return finalizeWalltimeRun(bench, codspeedBenchmarks, false);\n };\n}\n\nfunction logStart() {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (walltime mode)`\n );\n}\n\nconst TINYBENCH_WARMUP_DEFAULT = 16;\n\nfunction registerCodspeedBenchmarkFromTask(\n codspeedBenchmarks: CodspeedBenchmark[],\n task: Task,\n bench: Bench,\n rootCallingFile: string\n): void {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n if (!task.result) {\n console.warn(` ⚠ No result data available for ${uri}`);\n return;\n }\n\n const warmupIterations = bench.opts.warmup\n ? bench.opts.warmupIterations ?? TINYBENCH_WARMUP_DEFAULT\n : 0;\n const stats = convertTinybenchResultToBenchmarkStats(\n task.result,\n warmupIterations\n );\n\n codspeedBenchmarks.push({\n name: task.name,\n uri,\n config: {\n max_rounds: bench.opts.iterations ?? null,\n max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,\n min_round_time_ns: null, // tinybench does not have an option for this\n warmup_time_ns:\n bench.opts.warmup && bench.opts.warmupTime\n ? msToNs(bench.opts.warmupTime)\n : null,\n },\n stats,\n });\n\n console.log(` ✔ Collected walltime data for ${uri}`);\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n}\n\nfunction wrapTaskFunction(task: Task, isAsync: boolean): void {\n const { fn } = task as unknown as { fn: Fn };\n if (isAsync) {\n // eslint-disable-next-line no-inner-declarations\n async function __codspeed_root_frame__() {\n await fn();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (task as any).fn = __codspeed_root_frame__;\n } else {\n // eslint-disable-next-line no-inner-declarations\n function __codspeed_root_frame__() {\n fn();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (task as any).fn = __codspeed_root_frame__;\n }\n}\n\nfunction finalizeWalltimeRun(\n bench: Bench,\n benchmarks: CodspeedBenchmark[],\n isAsync: boolean\n) {\n // Write results to JSON file using core function\n if (benchmarks.length > 0) {\n writeWalltimeResults(benchmarks, isAsync);\n }\n\n console.log(\n `[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`\n );\n return bench.tasks;\n}\n\nfunction convertTinybenchResultToBenchmarkStats(\n result: TaskResult,\n warmupIterations: number\n): BenchmarkStats {\n const { min, max, mean, sd, samples } = result.latency;\n\n // Get individual sample times in nanoseconds and sort them\n const sortedTimesNs = samples.map(msToNs).sort((a, b) => a - b);\n const meanNs = msToNs(mean);\n const stdevNs = msToNs(sd);\n\n const { q1_ns, q3_ns, median_ns, iqr_outlier_rounds, stdev_outlier_rounds } =\n calculateQuantiles({ meanNs, stdevNs, sortedTimesNs });\n\n return {\n min_ns: msToNs(min),\n max_ns: msToNs(max),\n mean_ns: meanNs,\n stdev_ns: stdevNs,\n q1_ns,\n median_ns,\n q3_ns,\n total_time: msToS(result.totalTime),\n iter_per_round: 1, // as there is only one round in tinybench, we define that there were n rounds of 1 iteration\n rounds: sortedTimesNs.length,\n iqr_outlier_rounds,\n stdev_outlier_rounds,\n warmup_iters: warmupIterations,\n };\n}\n","import {\n getCodspeedRunnerMode,\n getGitDir,\n InstrumentHooks,\n mongoMeasurement,\n setupCore,\n SetupInstrumentsRequestBody,\n SetupInstrumentsResponse,\n tryIntrospect,\n} from \"@codspeed/core\";\nimport path from \"path\";\nimport { get as getStackTrace } from \"stack-trace\";\nimport { Bench } from \"tinybench\";\nimport { fileURLToPath } from \"url\";\nimport { runInstrumentedBench } from \"./instrumented\";\nimport { getOrCreateUriMap } from \"./uri\";\nimport { runWalltimeBench } from \"./walltime\";\n\ntryIntrospect();\n\nexport function withCodSpeed(bench: Bench): Bench {\n const codspeedRunnerMode = getCodspeedRunnerMode();\n if (codspeedRunnerMode === \"disabled\") {\n return bench;\n }\n setupCore();\n\n const rootCallingFile = getCallingFile();\n\n // Compute and register URI for bench\n const uriMap = getOrCreateUriMap(bench);\n const rawAdd = bench.add;\n bench.add = (name, fn, opts?) => {\n const callingFile = getCallingFile();\n let uri = callingFile;\n if (bench.name !== undefined) {\n uri += `::${bench.name}`;\n }\n uri += `::${name}`;\n uriMap.set(name, uri);\n return rawAdd.bind(bench)(name, fn, opts);\n };\n\n if (codspeedRunnerMode === \"instrumented\") {\n runInstrumentedBench(bench, rootCallingFile);\n } else if (codspeedRunnerMode === \"walltime\") {\n runWalltimeBench(bench, rootCallingFile);\n }\n\n return bench;\n}\n\nfunction getCallingFile(): string {\n const stack = getStackTrace();\n let callingFile = stack[2].getFileName(); // [here, withCodSpeed, actual caller]\n const gitDir = getGitDir(callingFile);\n if (gitDir === undefined) {\n throw new Error(\"Could not find a git repository\");\n }\n if (callingFile.startsWith(\"file://\")) {\n callingFile = fileURLToPath(callingFile);\n }\n return path.relative(gitDir, callingFile);\n}\n\n/**\n * Dynamically setup the CodSpeed instruments.\n */\nexport async function setupInstruments(\n body: SetupInstrumentsRequestBody\n): Promise<SetupInstrumentsResponse> {\n if (!InstrumentHooks.isInstrumented()) {\n console.warn(\"[CodSpeed] No instrumentation found, using default mongoUrl\");\n\n return { remoteAddr: body.mongoUrl };\n }\n\n return await mongoMeasurement.setupInstruments(body);\n}\n"],"names":["optimizeFunction","mongoMeasurement","InstrumentHooks","teardownCore","msToNs","__codspeed_root_frame__","writeWalltimeResults","calculateQuantiles","msToS","tryIntrospect","getCodspeedRunnerMode","setupCore","getStackTrace","getGitDir","fileURLToPath"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/index.es5.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InstrumentHooks, teardownCore, optimizeFunction, mongoMeasurement, msToNs, writeWalltimeResults, calculateQuantiles, msToS, tryIntrospect, getCodspeedRunnerMode, setupCore, getGitDir } from '@codspeed/core';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
|
|
@@ -75,67 +75,70 @@ function getOrCreateUriMap(bench) {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
function runInstrumentedBench(bench, rootCallingFile) {
|
|
78
|
+
const runTaskAsync = async (task, uri) => {
|
|
79
|
+
const { fnOpts, fn } = task;
|
|
80
|
+
await fnOpts?.beforeAll?.call(task, "run");
|
|
81
|
+
await optimizeFunction(async () => {
|
|
82
|
+
await fnOpts?.beforeEach?.call(task, "run");
|
|
83
|
+
await fn();
|
|
84
|
+
await fnOpts?.afterEach?.call(task, "run");
|
|
85
|
+
});
|
|
86
|
+
await fnOpts?.beforeEach?.call(task, "run");
|
|
87
|
+
await mongoMeasurement.start(uri);
|
|
88
|
+
await async function __codspeed_root_frame__() {
|
|
89
|
+
global.gc?.();
|
|
90
|
+
InstrumentHooks.startBenchmark();
|
|
91
|
+
await fn();
|
|
92
|
+
InstrumentHooks.stopBenchmark();
|
|
93
|
+
InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
94
|
+
}();
|
|
95
|
+
await mongoMeasurement.stop(uri);
|
|
96
|
+
await fnOpts?.afterEach?.call(task, "run");
|
|
97
|
+
await fnOpts?.afterAll?.call(task, "run");
|
|
98
|
+
};
|
|
99
|
+
const runTaskSync = (task, uri) => {
|
|
100
|
+
const { fnOpts, fn } = task;
|
|
101
|
+
fnOpts?.beforeAll?.call(task, "run");
|
|
102
|
+
fnOpts?.beforeEach?.call(task, "run");
|
|
103
|
+
(function __codspeed_root_frame__() {
|
|
104
|
+
global.gc?.();
|
|
105
|
+
InstrumentHooks.startBenchmark();
|
|
106
|
+
fn();
|
|
107
|
+
InstrumentHooks.stopBenchmark();
|
|
108
|
+
InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
109
|
+
})();
|
|
110
|
+
fnOpts?.afterEach?.call(task, "run");
|
|
111
|
+
fnOpts?.afterAll?.call(task, "run");
|
|
112
|
+
};
|
|
78
113
|
bench.run = async () => {
|
|
79
|
-
|
|
80
|
-
`[CodSpeed] running with @codspeed/tinybench v${"5.0.0-alpha.1"} (instrumented mode)`
|
|
81
|
-
);
|
|
114
|
+
logStart();
|
|
82
115
|
for (const task of bench.tasks) {
|
|
83
116
|
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
await optimizeFunction(async () => {
|
|
87
|
-
await fnOpts?.beforeEach?.call(task, "run");
|
|
88
|
-
await fn();
|
|
89
|
-
await fnOpts?.afterEach?.call(task, "run");
|
|
90
|
-
});
|
|
91
|
-
await fnOpts?.beforeEach?.call(task, "run");
|
|
92
|
-
await mongoMeasurement.start(uri);
|
|
93
|
-
global.gc?.();
|
|
94
|
-
await async function __codspeed_root_frame__() {
|
|
95
|
-
InstrumentHooks.startBenchmark();
|
|
96
|
-
await fn();
|
|
97
|
-
InstrumentHooks.stopBenchmark();
|
|
98
|
-
InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
99
|
-
}();
|
|
100
|
-
await mongoMeasurement.stop(uri);
|
|
101
|
-
await fnOpts?.afterEach?.call(task, "run");
|
|
102
|
-
await fnOpts?.afterAll?.call(task, "run");
|
|
103
|
-
console.log(
|
|
104
|
-
` \u2714 ${InstrumentHooks.isInstrumented() ? "Measured" : "Checked"} ${uri}`
|
|
105
|
-
);
|
|
117
|
+
await runTaskAsync(task, uri);
|
|
118
|
+
logTaskCompletion(uri);
|
|
106
119
|
}
|
|
107
|
-
|
|
108
|
-
console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);
|
|
109
|
-
return bench.tasks;
|
|
120
|
+
return logEnd();
|
|
110
121
|
};
|
|
111
122
|
bench.runSync = () => {
|
|
112
|
-
|
|
113
|
-
`[CodSpeed] running with @codspeed/tinybench v${"5.0.0-alpha.1"} (instrumented mode)`
|
|
114
|
-
);
|
|
123
|
+
logStart();
|
|
115
124
|
for (const task of bench.tasks) {
|
|
116
125
|
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
optimizeFunction(async () => {
|
|
120
|
-
fnOpts?.beforeEach?.call(task, "run");
|
|
121
|
-
fn();
|
|
122
|
-
fnOpts?.afterEach?.call(task, "run");
|
|
123
|
-
});
|
|
124
|
-
fnOpts?.beforeEach?.call(task, "run");
|
|
125
|
-
global.gc?.();
|
|
126
|
-
(function __codspeed_root_frame__() {
|
|
127
|
-
InstrumentHooks.startBenchmark();
|
|
128
|
-
fn();
|
|
129
|
-
InstrumentHooks.stopBenchmark();
|
|
130
|
-
InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
131
|
-
})();
|
|
132
|
-
mongoMeasurement.stop(uri);
|
|
133
|
-
fnOpts?.afterEach?.call(task, "run");
|
|
134
|
-
fnOpts?.afterAll?.call(task, "run");
|
|
135
|
-
console.log(
|
|
136
|
-
` \u2714 ${InstrumentHooks.isInstrumented() ? "Measured" : "Checked"} ${uri}`
|
|
137
|
-
);
|
|
126
|
+
runTaskSync(task, uri);
|
|
127
|
+
logTaskCompletion(uri);
|
|
138
128
|
}
|
|
129
|
+
return logEnd();
|
|
130
|
+
};
|
|
131
|
+
const logStart = () => {
|
|
132
|
+
console.log(
|
|
133
|
+
`[CodSpeed] running with @codspeed/tinybench v${"5.0.0-alpha.3"} (instrumented mode)`
|
|
134
|
+
);
|
|
135
|
+
};
|
|
136
|
+
const logTaskCompletion = (uri) => {
|
|
137
|
+
console.log(
|
|
138
|
+
` \u2714 ${InstrumentHooks.isInstrumented() ? "Measured" : "Checked"} ${uri}`
|
|
139
|
+
);
|
|
140
|
+
};
|
|
141
|
+
const logEnd = () => {
|
|
139
142
|
teardownCore();
|
|
140
143
|
console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);
|
|
141
144
|
return bench.tasks;
|
|
@@ -144,21 +147,11 @@ function runInstrumentedBench(bench, rootCallingFile) {
|
|
|
144
147
|
|
|
145
148
|
function runWalltimeBench(bench, rootCallingFile) {
|
|
146
149
|
bench.run = async () => {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
);
|
|
150
|
-
const originalRun = bench.run;
|
|
151
|
-
const benchProto = Object.getPrototypeOf(bench);
|
|
152
|
-
const prototypeRun = benchProto.run;
|
|
153
|
-
bench.run = prototypeRun;
|
|
154
|
-
const benchmarks = [];
|
|
150
|
+
logStart();
|
|
151
|
+
const codspeedBenchmarks = [];
|
|
155
152
|
for (const task of bench.tasks) {
|
|
156
153
|
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
157
|
-
|
|
158
|
-
async function __codspeed_root_frame__() {
|
|
159
|
-
await fn();
|
|
160
|
-
}
|
|
161
|
-
task.fn = __codspeed_root_frame__;
|
|
154
|
+
wrapTaskFunction(task, true);
|
|
162
155
|
if (bench.opts.warmup) {
|
|
163
156
|
await task.warmup();
|
|
164
157
|
}
|
|
@@ -167,95 +160,91 @@ function runWalltimeBench(bench, rootCallingFile) {
|
|
|
167
160
|
await task.run();
|
|
168
161
|
InstrumentHooks.stopBenchmark();
|
|
169
162
|
await mongoMeasurement.stop(uri);
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
name: task.name,
|
|
177
|
-
uri,
|
|
178
|
-
config: {
|
|
179
|
-
max_rounds: bench.opts.iterations ?? null,
|
|
180
|
-
max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,
|
|
181
|
-
min_round_time_ns: null,
|
|
182
|
-
// tinybench does not have an option for this
|
|
183
|
-
warmup_time_ns: bench.opts.warmup && bench.opts.warmupTime ? msToNs(bench.opts.warmupTime) : null
|
|
184
|
-
},
|
|
185
|
-
stats
|
|
186
|
-
};
|
|
187
|
-
benchmarks.push(benchmark);
|
|
188
|
-
console.log(` \u2714 Collected walltime data for ${uri}`);
|
|
189
|
-
InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
190
|
-
} else {
|
|
191
|
-
console.warn(` \u26A0 No result data available for ${uri}`);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
if (benchmarks.length > 0) {
|
|
195
|
-
writeWalltimeResults(benchmarks, true);
|
|
163
|
+
registerCodspeedBenchmarkFromTask(
|
|
164
|
+
codspeedBenchmarks,
|
|
165
|
+
task,
|
|
166
|
+
bench,
|
|
167
|
+
rootCallingFile
|
|
168
|
+
);
|
|
196
169
|
}
|
|
197
|
-
|
|
198
|
-
`[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`
|
|
199
|
-
);
|
|
200
|
-
bench.run = originalRun;
|
|
201
|
-
return bench.tasks;
|
|
170
|
+
return finalizeWalltimeRun(bench, codspeedBenchmarks, true);
|
|
202
171
|
};
|
|
203
172
|
bench.runSync = () => {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
);
|
|
207
|
-
const originalRun = bench.run;
|
|
208
|
-
const benchProto = Object.getPrototypeOf(bench);
|
|
209
|
-
const prototypeRun = benchProto.run;
|
|
210
|
-
bench.run = prototypeRun;
|
|
211
|
-
const benchmarks = [];
|
|
173
|
+
logStart();
|
|
174
|
+
const codspeedBenchmarks = [];
|
|
212
175
|
for (const task of bench.tasks) {
|
|
213
|
-
|
|
214
|
-
fn();
|
|
215
|
-
};
|
|
216
|
-
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
176
|
+
wrapTaskFunction(task, false);
|
|
217
177
|
if (bench.opts.warmup) {
|
|
218
178
|
task.warmup();
|
|
219
179
|
}
|
|
220
|
-
const { fn } = task;
|
|
221
|
-
task.fn = __codspeed_root_frame__2;
|
|
222
180
|
InstrumentHooks.startBenchmark();
|
|
223
181
|
task.runSync();
|
|
224
182
|
InstrumentHooks.stopBenchmark();
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
name: task.name,
|
|
232
|
-
uri,
|
|
233
|
-
config: {
|
|
234
|
-
max_rounds: bench.opts.iterations ?? null,
|
|
235
|
-
max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,
|
|
236
|
-
min_round_time_ns: null,
|
|
237
|
-
// tinybench does not have an option for this
|
|
238
|
-
warmup_time_ns: bench.opts.warmup && bench.opts.warmupTime ? msToNs(bench.opts.warmupTime) : null
|
|
239
|
-
},
|
|
240
|
-
stats
|
|
241
|
-
};
|
|
242
|
-
benchmarks.push(benchmark);
|
|
243
|
-
console.log(` \u2714 Collected walltime data for ${uri}`);
|
|
244
|
-
InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
245
|
-
} else {
|
|
246
|
-
console.warn(` \u26A0 No result data available for ${uri}`);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
if (benchmarks.length > 0) {
|
|
250
|
-
writeWalltimeResults(benchmarks);
|
|
183
|
+
registerCodspeedBenchmarkFromTask(
|
|
184
|
+
codspeedBenchmarks,
|
|
185
|
+
task,
|
|
186
|
+
bench,
|
|
187
|
+
rootCallingFile
|
|
188
|
+
);
|
|
251
189
|
}
|
|
252
|
-
|
|
253
|
-
`[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`
|
|
254
|
-
);
|
|
255
|
-
bench.run = originalRun;
|
|
256
|
-
return bench.tasks;
|
|
190
|
+
return finalizeWalltimeRun(bench, codspeedBenchmarks, false);
|
|
257
191
|
};
|
|
258
192
|
}
|
|
193
|
+
function logStart() {
|
|
194
|
+
console.log(
|
|
195
|
+
`[CodSpeed] running with @codspeed/tinybench v${"5.0.0-alpha.3"} (walltime mode)`
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
const TINYBENCH_WARMUP_DEFAULT = 16;
|
|
199
|
+
function registerCodspeedBenchmarkFromTask(codspeedBenchmarks, task, bench, rootCallingFile) {
|
|
200
|
+
const uri = getTaskUri(bench, task.name, rootCallingFile);
|
|
201
|
+
if (!task.result) {
|
|
202
|
+
console.warn(` \u26A0 No result data available for ${uri}`);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const warmupIterations = bench.opts.warmup ? bench.opts.warmupIterations ?? TINYBENCH_WARMUP_DEFAULT : 0;
|
|
206
|
+
const stats = convertTinybenchResultToBenchmarkStats(
|
|
207
|
+
task.result,
|
|
208
|
+
warmupIterations
|
|
209
|
+
);
|
|
210
|
+
codspeedBenchmarks.push({
|
|
211
|
+
name: task.name,
|
|
212
|
+
uri,
|
|
213
|
+
config: {
|
|
214
|
+
max_rounds: bench.opts.iterations ?? null,
|
|
215
|
+
max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,
|
|
216
|
+
min_round_time_ns: null,
|
|
217
|
+
// tinybench does not have an option for this
|
|
218
|
+
warmup_time_ns: bench.opts.warmup && bench.opts.warmupTime ? msToNs(bench.opts.warmupTime) : null
|
|
219
|
+
},
|
|
220
|
+
stats
|
|
221
|
+
});
|
|
222
|
+
console.log(` \u2714 Collected walltime data for ${uri}`);
|
|
223
|
+
InstrumentHooks.setExecutedBenchmark(process.pid, uri);
|
|
224
|
+
}
|
|
225
|
+
function wrapTaskFunction(task, isAsync) {
|
|
226
|
+
const { fn } = task;
|
|
227
|
+
if (isAsync) {
|
|
228
|
+
async function __codspeed_root_frame__2() {
|
|
229
|
+
await fn();
|
|
230
|
+
}
|
|
231
|
+
task.fn = __codspeed_root_frame__2;
|
|
232
|
+
} else {
|
|
233
|
+
let __codspeed_root_frame__2 = function() {
|
|
234
|
+
fn();
|
|
235
|
+
};
|
|
236
|
+
task.fn = __codspeed_root_frame__2;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function finalizeWalltimeRun(bench, benchmarks, isAsync) {
|
|
240
|
+
if (benchmarks.length > 0) {
|
|
241
|
+
writeWalltimeResults(benchmarks, isAsync);
|
|
242
|
+
}
|
|
243
|
+
console.log(
|
|
244
|
+
`[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`
|
|
245
|
+
);
|
|
246
|
+
return bench.tasks;
|
|
247
|
+
}
|
|
259
248
|
function convertTinybenchResultToBenchmarkStats(result, warmupIterations) {
|
|
260
249
|
const { min, max, mean, sd, samples } = result.latency;
|
|
261
250
|
const sortedTimesNs = samples.map(msToNs).sort((a, b) => a - b);
|
package/dist/index.es5.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es5.js","sources":["../../../node_modules/.pnpm/stack-trace@1.0.0-pre2/node_modules/stack-trace/index.js","../src/uri.ts","../src/instrumented.ts","../src/walltime.ts","../src/index.ts"],"sourcesContent":["export function get(belowFn) {\r\n const oldLimit = Error.stackTraceLimit;\r\n Error.stackTraceLimit = Infinity;\r\n\r\n const dummyObject = {};\r\n\r\n const v8Handler = Error.prepareStackTrace;\r\n Error.prepareStackTrace = function(dummyObject, v8StackTrace) {\r\n return v8StackTrace;\r\n };\r\n Error.captureStackTrace(dummyObject, belowFn || get);\r\n\r\n const v8StackTrace = dummyObject.stack;\r\n Error.prepareStackTrace = v8Handler;\r\n Error.stackTraceLimit = oldLimit;\r\n\r\n return v8StackTrace;\r\n}\r\n\r\nexport function parse(err) {\r\n if (!err.stack) {\r\n return [];\r\n }\r\n\r\n const lines = err.stack.split('\\n').slice(1);\r\n return lines\r\n .map(function(line) {\r\n if (line.match(/^\\s*[-]{4,}$/)) {\r\n return createParsedCallSite({\r\n fileName: line,\r\n lineNumber: null,\r\n functionName: null,\r\n typeName: null,\r\n methodName: null,\r\n columnNumber: null,\r\n 'native': null,\r\n });\r\n }\r\n\r\n const lineMatch = line.match(/at (?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/);\r\n if (!lineMatch) {\r\n return;\r\n }\r\n\r\n let object = null;\r\n let method = null;\r\n let functionName = null;\r\n let typeName = null;\r\n let methodName = null;\r\n let isNative = (lineMatch[5] === 'native');\r\n\r\n if (lineMatch[1]) {\r\n functionName = lineMatch[1];\r\n let methodStart = functionName.lastIndexOf('.');\r\n if (functionName[methodStart-1] == '.')\r\n methodStart--;\r\n if (methodStart > 0) {\r\n object = functionName.substr(0, methodStart);\r\n method = functionName.substr(methodStart + 1);\r\n const objectEnd = object.indexOf('.Module');\r\n if (objectEnd > 0) {\r\n functionName = functionName.substr(objectEnd + 1);\r\n object = object.substr(0, objectEnd);\r\n }\r\n }\r\n }\r\n\r\n if (method) {\r\n typeName = object;\r\n methodName = method;\r\n }\r\n\r\n if (method === '<anonymous>') {\r\n methodName = null;\r\n functionName = null;\r\n }\r\n\r\n const properties = {\r\n fileName: lineMatch[2] || null,\r\n lineNumber: parseInt(lineMatch[3], 10) || null,\r\n functionName: functionName,\r\n typeName: typeName,\r\n methodName: methodName,\r\n columnNumber: parseInt(lineMatch[4], 10) || null,\r\n 'native': isNative,\r\n };\r\n\r\n return createParsedCallSite(properties);\r\n })\r\n .filter(function(callSite) {\r\n return !!callSite;\r\n });\r\n}\r\n\r\nfunction CallSite(properties) {\r\n for (const property in properties) {\r\n this[property] = properties[property];\r\n }\r\n}\r\n\r\nconst strProperties = [\r\n 'this',\r\n 'typeName',\r\n 'functionName',\r\n 'methodName',\r\n 'fileName',\r\n 'lineNumber',\r\n 'columnNumber',\r\n 'function',\r\n 'evalOrigin'\r\n];\r\n\r\nconst boolProperties = [\r\n 'topLevel',\r\n 'eval',\r\n 'native',\r\n 'constructor'\r\n];\r\n\r\nstrProperties.forEach(function (property) {\r\n CallSite.prototype[property] = null;\r\n CallSite.prototype['get' + property[0].toUpperCase() + property.substr(1)] = function () {\r\n return this[property];\r\n }\r\n});\r\n\r\nboolProperties.forEach(function (property) {\r\n CallSite.prototype[property] = false;\r\n CallSite.prototype['is' + property[0].toUpperCase() + property.substr(1)] = function () {\r\n return this[property];\r\n }\r\n});\r\n\r\nfunction createParsedCallSite(properties) {\r\n return new CallSite(properties);\r\n}\r\n","import { Bench } from \"tinybench\";\n\n// Store URI mapping externally since fnOpts is private\nexport const taskUriMap = new WeakMap<Bench, Map<string, string>>();\n\nexport function getTaskUri(\n bench: Bench,\n taskName: string,\n rootCallingFile: string\n): string {\n const uriMap = taskUriMap.get(bench);\n return uriMap?.get(taskName) || `${rootCallingFile}::${taskName}`;\n}\n\nexport function getOrCreateUriMap(bench: Bench): Map<string, string> {\n let uriMap = taskUriMap.get(bench);\n if (!uriMap) {\n uriMap = new Map<string, string>();\n taskUriMap.set(bench, uriMap);\n }\n return uriMap;\n}\n","import {\n InstrumentHooks,\n mongoMeasurement,\n optimizeFunction,\n teardownCore,\n} from \"@codspeed/core\";\nimport { Bench, Fn, FnOptions } from \"tinybench\";\nimport { getTaskUri } from \"./uri\";\n\ndeclare const __VERSION__: string;\n\nexport function runInstrumentedBench(\n bench: Bench,\n rootCallingFile: string\n): void {\n bench.run = async () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (instrumented mode)`\n );\n\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // Access private fields\n const { fnOpts, fn } = task as unknown as { fnOpts?: FnOptions; fn: Fn };\n\n // Call beforeAll hook if it exists\n await fnOpts?.beforeAll?.call(task, \"run\");\n\n // run optimizations\n await optimizeFunction(async () => {\n await fnOpts?.beforeEach?.call(task, \"run\");\n await fn();\n await fnOpts?.afterEach?.call(task, \"run\");\n });\n\n // run instrumented benchmark\n await fnOpts?.beforeEach?.call(task, \"run\");\n\n await mongoMeasurement.start(uri);\n global.gc?.();\n await (async function __codspeed_root_frame__() {\n InstrumentHooks.startBenchmark();\n await fn();\n InstrumentHooks.stopBenchmark();\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n })();\n await mongoMeasurement.stop(uri);\n\n await fnOpts?.afterEach?.call(task, \"run\");\n\n await fnOpts?.afterAll?.call(task, \"run\");\n\n // print results\n console.log(\n ` ✔ ${\n InstrumentHooks.isInstrumented() ? \"Measured\" : \"Checked\"\n } ${uri}`\n );\n }\n\n teardownCore();\n console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);\n return bench.tasks;\n };\n\n bench.runSync = () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (instrumented mode)`\n );\n\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // Access private fields\n const { fnOpts, fn } = task as unknown as { fnOpts?: FnOptions; fn: Fn };\n\n // Call beforeAll hook if it exists\n fnOpts?.beforeAll?.call(task, \"run\");\n\n // run optimizations\n optimizeFunction(async () => {\n fnOpts?.beforeEach?.call(task, \"run\");\n fn();\n fnOpts?.afterEach?.call(task, \"run\");\n });\n\n // run instrumented benchmark\n fnOpts?.beforeEach?.call(task, \"run\");\n\n // await mongoMeasurement.start(uri);\n global.gc?.();\n (function __codspeed_root_frame__() {\n InstrumentHooks.startBenchmark();\n fn();\n InstrumentHooks.stopBenchmark();\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n })();\n mongoMeasurement.stop(uri);\n\n fnOpts?.afterEach?.call(task, \"run\");\n\n fnOpts?.afterAll?.call(task, \"run\");\n\n // print results\n console.log(\n ` ✔ ${\n InstrumentHooks.isInstrumented() ? \"Measured\" : \"Checked\"\n } ${uri}`\n );\n }\n\n teardownCore();\n console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);\n return bench.tasks;\n };\n}\n","import {\n calculateQuantiles,\n InstrumentHooks,\n mongoMeasurement,\n msToNs,\n msToS,\n writeWalltimeResults,\n type Benchmark,\n type BenchmarkStats,\n} from \"@codspeed/core\";\nimport { Bench, Fn, TaskResult } from \"tinybench\";\nimport { getTaskUri } from \"./uri\";\n\ndeclare const __VERSION__: string;\n\nexport function runWalltimeBench(bench: Bench, rootCallingFile: string): void {\n bench.run = async () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (walltime mode)`\n );\n\n // Store the original run method before we override it\n const originalRun = bench.run;\n\n // Temporarily restore the original run to get actual benchmark results\n const benchProto = Object.getPrototypeOf(bench);\n const prototypeRun = benchProto.run;\n bench.run = prototypeRun;\n\n const benchmarks: Benchmark[] = [];\n\n // Collect and report walltime data\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // Override the function under test to add a static frame\n const { fn } = task as unknown as { fn: Fn };\n // eslint-disable-next-line no-inner-declarations\n async function __codspeed_root_frame__() {\n await fn();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (task as any).fn = __codspeed_root_frame__;\n\n // run the warmup of the task right before its actual run\n if (bench.opts.warmup) {\n await task.warmup();\n }\n\n await mongoMeasurement.start(uri);\n InstrumentHooks.startBenchmark();\n await task.run();\n InstrumentHooks.stopBenchmark();\n await mongoMeasurement.stop(uri);\n\n if (task.result) {\n // Convert tinybench result to BenchmarkStats format\n const stats = convertTinybenchResultToBenchmarkStats(\n task.result,\n bench.opts.warmup ? bench.opts.warmupIterations ?? 0 : 0\n );\n\n const benchmark: Benchmark = {\n name: task.name,\n uri,\n config: {\n max_rounds: bench.opts.iterations ?? null,\n max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,\n min_round_time_ns: null, // tinybench does not have an option for this\n warmup_time_ns:\n bench.opts.warmup && bench.opts.warmupTime\n ? msToNs(bench.opts.warmupTime)\n : null,\n },\n stats,\n };\n\n benchmarks.push(benchmark);\n console.log(` ✔ Collected walltime data for ${uri}`);\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n } else {\n console.warn(` ⚠ No result data available for ${uri}`);\n }\n }\n\n // Write results to JSON file using core function\n if (benchmarks.length > 0) {\n writeWalltimeResults(benchmarks, true);\n }\n\n console.log(\n `[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`\n );\n // Restore our custom run method\n bench.run = originalRun;\n\n return bench.tasks;\n };\n\n bench.runSync = () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (walltime mode)`\n );\n\n // Store the original run method before we override it\n const originalRun = bench.run;\n\n // Temporarily restore the original run to get actual benchmark results\n const benchProto = Object.getPrototypeOf(bench);\n const prototypeRun = benchProto.run;\n bench.run = prototypeRun;\n\n const benchmarks: Benchmark[] = [];\n\n // Collect and report walltime data\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // run the warmup of the task right before its actual run\n if (bench.opts.warmup) {\n task.warmup();\n }\n\n // Override the function under test to add a static frame\n const { fn } = task as unknown as { fn: Fn };\n // eslint-disable-next-line no-inner-declarations\n function __codspeed_root_frame__() {\n fn();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (task as any).fn = __codspeed_root_frame__;\n\n InstrumentHooks.startBenchmark();\n task.runSync();\n InstrumentHooks.stopBenchmark();\n\n if (task.result) {\n // Convert tinybench result to BenchmarkStats format\n const stats = convertTinybenchResultToBenchmarkStats(\n task.result,\n bench.opts.warmup ? bench.opts.warmupIterations ?? 0 : 0\n );\n\n const benchmark: Benchmark = {\n name: task.name,\n uri,\n config: {\n max_rounds: bench.opts.iterations ?? null,\n max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,\n min_round_time_ns: null, // tinybench does not have an option for this\n warmup_time_ns:\n bench.opts.warmup && bench.opts.warmupTime\n ? msToNs(bench.opts.warmupTime)\n : null,\n },\n stats,\n };\n\n benchmarks.push(benchmark);\n console.log(` ✔ Collected walltime data for ${uri}`);\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n } else {\n console.warn(` ⚠ No result data available for ${uri}`);\n }\n }\n\n // Write results to JSON file using core function\n if (benchmarks.length > 0) {\n writeWalltimeResults(benchmarks);\n }\n\n console.log(\n `[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`\n );\n // Restore our custom run method\n bench.run = originalRun;\n\n return bench.tasks;\n };\n}\n\nfunction convertTinybenchResultToBenchmarkStats(\n result: TaskResult,\n warmupIterations: number\n): BenchmarkStats {\n const { min, max, mean, sd, samples } = result.latency;\n\n // Get individual sample times in nanoseconds and sort them\n const sortedTimesNs = samples.map(msToNs).sort((a, b) => a - b);\n const meanNs = msToNs(mean);\n const stdevNs = msToNs(sd);\n\n const { q1_ns, q3_ns, median_ns, iqr_outlier_rounds, stdev_outlier_rounds } =\n calculateQuantiles({ meanNs, stdevNs, sortedTimesNs });\n\n return {\n min_ns: msToNs(min),\n max_ns: msToNs(max),\n mean_ns: meanNs,\n stdev_ns: stdevNs,\n q1_ns,\n median_ns,\n q3_ns,\n total_time: msToS(result.totalTime),\n iter_per_round: 1, // as there is only one round in tinybench, we define that there were n rounds of 1 iteration\n rounds: sortedTimesNs.length,\n iqr_outlier_rounds,\n stdev_outlier_rounds,\n warmup_iters: warmupIterations,\n };\n}\n","import {\n getCodspeedRunnerMode,\n getGitDir,\n InstrumentHooks,\n mongoMeasurement,\n setupCore,\n SetupInstrumentsRequestBody,\n SetupInstrumentsResponse,\n tryIntrospect,\n} from \"@codspeed/core\";\nimport path from \"path\";\nimport { get as getStackTrace } from \"stack-trace\";\nimport { Bench } from \"tinybench\";\nimport { fileURLToPath } from \"url\";\nimport { runInstrumentedBench } from \"./instrumented\";\nimport { getOrCreateUriMap } from \"./uri\";\nimport { runWalltimeBench } from \"./walltime\";\n\ntryIntrospect();\n\nexport function withCodSpeed(bench: Bench): Bench {\n const codspeedRunnerMode = getCodspeedRunnerMode();\n if (codspeedRunnerMode === \"disabled\") {\n return bench;\n }\n setupCore();\n\n const rootCallingFile = getCallingFile();\n\n // Compute and register URI for bench\n const uriMap = getOrCreateUriMap(bench);\n const rawAdd = bench.add;\n bench.add = (name, fn, opts?) => {\n const callingFile = getCallingFile();\n let uri = callingFile;\n if (bench.name !== undefined) {\n uri += `::${bench.name}`;\n }\n uri += `::${name}`;\n uriMap.set(name, uri);\n return rawAdd.bind(bench)(name, fn, opts);\n };\n\n if (codspeedRunnerMode === \"instrumented\") {\n runInstrumentedBench(bench, rootCallingFile);\n } else if (codspeedRunnerMode === \"walltime\") {\n runWalltimeBench(bench, rootCallingFile);\n }\n\n return bench;\n}\n\nfunction getCallingFile(): string {\n const stack = getStackTrace();\n let callingFile = stack[2].getFileName(); // [here, withCodSpeed, actual caller]\n const gitDir = getGitDir(callingFile);\n if (gitDir === undefined) {\n throw new Error(\"Could not find a git repository\");\n }\n if (callingFile.startsWith(\"file://\")) {\n callingFile = fileURLToPath(callingFile);\n }\n return path.relative(gitDir, callingFile);\n}\n\n/**\n * Dynamically setup the CodSpeed instruments.\n */\nexport async function setupInstruments(\n body: SetupInstrumentsRequestBody\n): Promise<SetupInstrumentsResponse> {\n if (!InstrumentHooks.isInstrumented()) {\n console.warn(\"[CodSpeed] No instrumentation found, using default mongoUrl\");\n\n return { remoteAddr: body.mongoUrl };\n }\n\n return await mongoMeasurement.setupInstruments(body);\n}\n"],"names":["__codspeed_root_frame__","getStackTrace"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.es5.js","sources":["../../../node_modules/.pnpm/stack-trace@1.0.0-pre2/node_modules/stack-trace/index.js","../src/uri.ts","../src/instrumented.ts","../src/walltime.ts","../src/index.ts"],"sourcesContent":["export function get(belowFn) {\r\n const oldLimit = Error.stackTraceLimit;\r\n Error.stackTraceLimit = Infinity;\r\n\r\n const dummyObject = {};\r\n\r\n const v8Handler = Error.prepareStackTrace;\r\n Error.prepareStackTrace = function(dummyObject, v8StackTrace) {\r\n return v8StackTrace;\r\n };\r\n Error.captureStackTrace(dummyObject, belowFn || get);\r\n\r\n const v8StackTrace = dummyObject.stack;\r\n Error.prepareStackTrace = v8Handler;\r\n Error.stackTraceLimit = oldLimit;\r\n\r\n return v8StackTrace;\r\n}\r\n\r\nexport function parse(err) {\r\n if (!err.stack) {\r\n return [];\r\n }\r\n\r\n const lines = err.stack.split('\\n').slice(1);\r\n return lines\r\n .map(function(line) {\r\n if (line.match(/^\\s*[-]{4,}$/)) {\r\n return createParsedCallSite({\r\n fileName: line,\r\n lineNumber: null,\r\n functionName: null,\r\n typeName: null,\r\n methodName: null,\r\n columnNumber: null,\r\n 'native': null,\r\n });\r\n }\r\n\r\n const lineMatch = line.match(/at (?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/);\r\n if (!lineMatch) {\r\n return;\r\n }\r\n\r\n let object = null;\r\n let method = null;\r\n let functionName = null;\r\n let typeName = null;\r\n let methodName = null;\r\n let isNative = (lineMatch[5] === 'native');\r\n\r\n if (lineMatch[1]) {\r\n functionName = lineMatch[1];\r\n let methodStart = functionName.lastIndexOf('.');\r\n if (functionName[methodStart-1] == '.')\r\n methodStart--;\r\n if (methodStart > 0) {\r\n object = functionName.substr(0, methodStart);\r\n method = functionName.substr(methodStart + 1);\r\n const objectEnd = object.indexOf('.Module');\r\n if (objectEnd > 0) {\r\n functionName = functionName.substr(objectEnd + 1);\r\n object = object.substr(0, objectEnd);\r\n }\r\n }\r\n }\r\n\r\n if (method) {\r\n typeName = object;\r\n methodName = method;\r\n }\r\n\r\n if (method === '<anonymous>') {\r\n methodName = null;\r\n functionName = null;\r\n }\r\n\r\n const properties = {\r\n fileName: lineMatch[2] || null,\r\n lineNumber: parseInt(lineMatch[3], 10) || null,\r\n functionName: functionName,\r\n typeName: typeName,\r\n methodName: methodName,\r\n columnNumber: parseInt(lineMatch[4], 10) || null,\r\n 'native': isNative,\r\n };\r\n\r\n return createParsedCallSite(properties);\r\n })\r\n .filter(function(callSite) {\r\n return !!callSite;\r\n });\r\n}\r\n\r\nfunction CallSite(properties) {\r\n for (const property in properties) {\r\n this[property] = properties[property];\r\n }\r\n}\r\n\r\nconst strProperties = [\r\n 'this',\r\n 'typeName',\r\n 'functionName',\r\n 'methodName',\r\n 'fileName',\r\n 'lineNumber',\r\n 'columnNumber',\r\n 'function',\r\n 'evalOrigin'\r\n];\r\n\r\nconst boolProperties = [\r\n 'topLevel',\r\n 'eval',\r\n 'native',\r\n 'constructor'\r\n];\r\n\r\nstrProperties.forEach(function (property) {\r\n CallSite.prototype[property] = null;\r\n CallSite.prototype['get' + property[0].toUpperCase() + property.substr(1)] = function () {\r\n return this[property];\r\n }\r\n});\r\n\r\nboolProperties.forEach(function (property) {\r\n CallSite.prototype[property] = false;\r\n CallSite.prototype['is' + property[0].toUpperCase() + property.substr(1)] = function () {\r\n return this[property];\r\n }\r\n});\r\n\r\nfunction createParsedCallSite(properties) {\r\n return new CallSite(properties);\r\n}\r\n","import { Bench } from \"tinybench\";\n\n// Store URI mapping externally since fnOpts is private\nexport const taskUriMap = new WeakMap<Bench, Map<string, string>>();\n\nexport function getTaskUri(\n bench: Bench,\n taskName: string,\n rootCallingFile: string\n): string {\n const uriMap = taskUriMap.get(bench);\n return uriMap?.get(taskName) || `${rootCallingFile}::${taskName}`;\n}\n\nexport function getOrCreateUriMap(bench: Bench): Map<string, string> {\n let uriMap = taskUriMap.get(bench);\n if (!uriMap) {\n uriMap = new Map<string, string>();\n taskUriMap.set(bench, uriMap);\n }\n return uriMap;\n}\n","import {\n InstrumentHooks,\n mongoMeasurement,\n optimizeFunction,\n teardownCore,\n} from \"@codspeed/core\";\nimport { Bench, Fn, FnOptions, Task } from \"tinybench\";\nimport { getTaskUri } from \"./uri\";\n\ndeclare const __VERSION__: string;\n\nexport function runInstrumentedBench(\n bench: Bench,\n rootCallingFile: string\n): void {\n const runTaskAsync = async (task: Task, uri: string): Promise<void> => {\n const { fnOpts, fn } = task as unknown as { fnOpts?: FnOptions; fn: Fn };\n\n await fnOpts?.beforeAll?.call(task, \"run\");\n await optimizeFunction(async () => {\n await fnOpts?.beforeEach?.call(task, \"run\");\n await fn();\n await fnOpts?.afterEach?.call(task, \"run\");\n });\n await fnOpts?.beforeEach?.call(task, \"run\");\n await mongoMeasurement.start(uri);\n\n await (async function __codspeed_root_frame__() {\n global.gc?.();\n InstrumentHooks.startBenchmark();\n await fn();\n InstrumentHooks.stopBenchmark();\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n })();\n\n await mongoMeasurement.stop(uri);\n await fnOpts?.afterEach?.call(task, \"run\");\n await fnOpts?.afterAll?.call(task, \"run\");\n };\n\n // Sync task runner\n const runTaskSync = (task: Task, uri: string): void => {\n const { fnOpts, fn } = task as unknown as { fnOpts?: FnOptions; fn: Fn };\n\n fnOpts?.beforeAll?.call(task, \"run\");\n fnOpts?.beforeEach?.call(task, \"run\");\n\n (function __codspeed_root_frame__() {\n global.gc?.();\n InstrumentHooks.startBenchmark();\n fn();\n InstrumentHooks.stopBenchmark();\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n })();\n\n fnOpts?.afterEach?.call(task, \"run\");\n fnOpts?.afterAll?.call(task, \"run\");\n };\n\n bench.run = async () => {\n logStart();\n\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n await runTaskAsync(task, uri);\n logTaskCompletion(uri);\n }\n\n return logEnd();\n };\n\n bench.runSync = () => {\n logStart();\n\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n runTaskSync(task, uri);\n logTaskCompletion(uri);\n }\n\n return logEnd();\n };\n\n const logStart = () => {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (instrumented mode)`\n );\n };\n\n const logTaskCompletion = (uri: string) => {\n console.log(\n ` ✔ ${\n InstrumentHooks.isInstrumented() ? \"Measured\" : \"Checked\"\n } ${uri}`\n );\n };\n\n const logEnd = () => {\n teardownCore();\n console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`);\n return bench.tasks;\n };\n}\n","import {\n calculateQuantiles,\n InstrumentHooks,\n mongoMeasurement,\n msToNs,\n msToS,\n writeWalltimeResults,\n type Benchmark as CodspeedBenchmark,\n type BenchmarkStats,\n} from \"@codspeed/core\";\nimport { Bench, Fn, Task, TaskResult } from \"tinybench\";\nimport { getTaskUri } from \"./uri\";\n\ndeclare const __VERSION__: string;\n\nexport function runWalltimeBench(bench: Bench, rootCallingFile: string): void {\n bench.run = async () => {\n logStart();\n const codspeedBenchmarks: CodspeedBenchmark[] = [];\n\n // Collect and report walltime data\n for (const task of bench.tasks) {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n // Override the function under test to add a static frame\n wrapTaskFunction(task, true);\n\n // run the warmup of the task right before its actual run\n if (bench.opts.warmup) {\n await task.warmup();\n }\n\n await mongoMeasurement.start(uri);\n InstrumentHooks.startBenchmark();\n await task.run();\n InstrumentHooks.stopBenchmark();\n await mongoMeasurement.stop(uri);\n\n registerCodspeedBenchmarkFromTask(\n codspeedBenchmarks,\n task,\n bench,\n rootCallingFile\n );\n }\n\n return finalizeWalltimeRun(bench, codspeedBenchmarks, true);\n };\n\n bench.runSync = () => {\n logStart();\n const codspeedBenchmarks: CodspeedBenchmark[] = [];\n\n for (const task of bench.tasks) {\n // Override the function under test to add a static frame\n wrapTaskFunction(task, false);\n\n if (bench.opts.warmup) {\n task.warmup();\n }\n\n InstrumentHooks.startBenchmark();\n task.runSync();\n InstrumentHooks.stopBenchmark();\n\n registerCodspeedBenchmarkFromTask(\n codspeedBenchmarks,\n task,\n bench,\n rootCallingFile\n );\n }\n\n return finalizeWalltimeRun(bench, codspeedBenchmarks, false);\n };\n}\n\nfunction logStart() {\n console.log(\n `[CodSpeed] running with @codspeed/tinybench v${__VERSION__} (walltime mode)`\n );\n}\n\nconst TINYBENCH_WARMUP_DEFAULT = 16;\n\nfunction registerCodspeedBenchmarkFromTask(\n codspeedBenchmarks: CodspeedBenchmark[],\n task: Task,\n bench: Bench,\n rootCallingFile: string\n): void {\n const uri = getTaskUri(bench, task.name, rootCallingFile);\n\n if (!task.result) {\n console.warn(` ⚠ No result data available for ${uri}`);\n return;\n }\n\n const warmupIterations = bench.opts.warmup\n ? bench.opts.warmupIterations ?? TINYBENCH_WARMUP_DEFAULT\n : 0;\n const stats = convertTinybenchResultToBenchmarkStats(\n task.result,\n warmupIterations\n );\n\n codspeedBenchmarks.push({\n name: task.name,\n uri,\n config: {\n max_rounds: bench.opts.iterations ?? null,\n max_time_ns: bench.opts.time ? msToNs(bench.opts.time) : null,\n min_round_time_ns: null, // tinybench does not have an option for this\n warmup_time_ns:\n bench.opts.warmup && bench.opts.warmupTime\n ? msToNs(bench.opts.warmupTime)\n : null,\n },\n stats,\n });\n\n console.log(` ✔ Collected walltime data for ${uri}`);\n InstrumentHooks.setExecutedBenchmark(process.pid, uri);\n}\n\nfunction wrapTaskFunction(task: Task, isAsync: boolean): void {\n const { fn } = task as unknown as { fn: Fn };\n if (isAsync) {\n // eslint-disable-next-line no-inner-declarations\n async function __codspeed_root_frame__() {\n await fn();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (task as any).fn = __codspeed_root_frame__;\n } else {\n // eslint-disable-next-line no-inner-declarations\n function __codspeed_root_frame__() {\n fn();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (task as any).fn = __codspeed_root_frame__;\n }\n}\n\nfunction finalizeWalltimeRun(\n bench: Bench,\n benchmarks: CodspeedBenchmark[],\n isAsync: boolean\n) {\n // Write results to JSON file using core function\n if (benchmarks.length > 0) {\n writeWalltimeResults(benchmarks, isAsync);\n }\n\n console.log(\n `[CodSpeed] Done collecting walltime data for ${bench.tasks.length} benches.`\n );\n return bench.tasks;\n}\n\nfunction convertTinybenchResultToBenchmarkStats(\n result: TaskResult,\n warmupIterations: number\n): BenchmarkStats {\n const { min, max, mean, sd, samples } = result.latency;\n\n // Get individual sample times in nanoseconds and sort them\n const sortedTimesNs = samples.map(msToNs).sort((a, b) => a - b);\n const meanNs = msToNs(mean);\n const stdevNs = msToNs(sd);\n\n const { q1_ns, q3_ns, median_ns, iqr_outlier_rounds, stdev_outlier_rounds } =\n calculateQuantiles({ meanNs, stdevNs, sortedTimesNs });\n\n return {\n min_ns: msToNs(min),\n max_ns: msToNs(max),\n mean_ns: meanNs,\n stdev_ns: stdevNs,\n q1_ns,\n median_ns,\n q3_ns,\n total_time: msToS(result.totalTime),\n iter_per_round: 1, // as there is only one round in tinybench, we define that there were n rounds of 1 iteration\n rounds: sortedTimesNs.length,\n iqr_outlier_rounds,\n stdev_outlier_rounds,\n warmup_iters: warmupIterations,\n };\n}\n","import {\n getCodspeedRunnerMode,\n getGitDir,\n InstrumentHooks,\n mongoMeasurement,\n setupCore,\n SetupInstrumentsRequestBody,\n SetupInstrumentsResponse,\n tryIntrospect,\n} from \"@codspeed/core\";\nimport path from \"path\";\nimport { get as getStackTrace } from \"stack-trace\";\nimport { Bench } from \"tinybench\";\nimport { fileURLToPath } from \"url\";\nimport { runInstrumentedBench } from \"./instrumented\";\nimport { getOrCreateUriMap } from \"./uri\";\nimport { runWalltimeBench } from \"./walltime\";\n\ntryIntrospect();\n\nexport function withCodSpeed(bench: Bench): Bench {\n const codspeedRunnerMode = getCodspeedRunnerMode();\n if (codspeedRunnerMode === \"disabled\") {\n return bench;\n }\n setupCore();\n\n const rootCallingFile = getCallingFile();\n\n // Compute and register URI for bench\n const uriMap = getOrCreateUriMap(bench);\n const rawAdd = bench.add;\n bench.add = (name, fn, opts?) => {\n const callingFile = getCallingFile();\n let uri = callingFile;\n if (bench.name !== undefined) {\n uri += `::${bench.name}`;\n }\n uri += `::${name}`;\n uriMap.set(name, uri);\n return rawAdd.bind(bench)(name, fn, opts);\n };\n\n if (codspeedRunnerMode === \"instrumented\") {\n runInstrumentedBench(bench, rootCallingFile);\n } else if (codspeedRunnerMode === \"walltime\") {\n runWalltimeBench(bench, rootCallingFile);\n }\n\n return bench;\n}\n\nfunction getCallingFile(): string {\n const stack = getStackTrace();\n let callingFile = stack[2].getFileName(); // [here, withCodSpeed, actual caller]\n const gitDir = getGitDir(callingFile);\n if (gitDir === undefined) {\n throw new Error(\"Could not find a git repository\");\n }\n if (callingFile.startsWith(\"file://\")) {\n callingFile = fileURLToPath(callingFile);\n }\n return path.relative(gitDir, callingFile);\n}\n\n/**\n * Dynamically setup the CodSpeed instruments.\n */\nexport async function setupInstruments(\n body: SetupInstrumentsRequestBody\n): Promise<SetupInstrumentsResponse> {\n if (!InstrumentHooks.isInstrumented()) {\n console.warn(\"[CodSpeed] No instrumentation found, using default mongoUrl\");\n\n return { remoteAddr: body.mongoUrl };\n }\n\n return await mongoMeasurement.setupInstruments(body);\n}\n"],"names":["__codspeed_root_frame__","getStackTrace"],"mappings":";;;;AAAO,SAAS,GAAG,CAAC,OAAO,EAAE;AAC7B,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;AACzC,EAAE,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;AACnC;AACA,EAAE,MAAM,WAAW,GAAG,EAAE,CAAC;AACzB;AACA,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAC5C,EAAE,KAAK,CAAC,iBAAiB,GAAG,SAAS,WAAW,EAAE,YAAY,EAAE;AAChE,IAAI,OAAO,YAAY,CAAC;AACxB,EAAE,CAAC,CAAC;AACJ,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;AACvD;AACA,EAAE,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC;AACzC,EAAE,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACtC,EAAE,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;AACnC;AACA,EAAE,OAAO,YAAY,CAAC;AACtB,CAAC;AA4ED;AACA,SAAS,QAAQ,CAAC,UAAU,EAAE;AAC9B,EAAE,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1C,EAAE,CAAC;AACH,CAAC;AACD;AACA,MAAM,aAAa,GAAG;AACtB,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,cAAc;AAChB,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,CAAC,CAAC;AACF;AACA,MAAM,cAAc,GAAG;AACvB,EAAE,UAAU;AACZ,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,aAAa;AACf,CAAC,CAAC;AACF;AACA,aAAa,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;AAC1C,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AACtC,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;AAC3F,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,EAAE,EAAC;AACH,CAAC,CAAC,CAAC;AACH;AACA,cAAc,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;AAC3C,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACvC,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY;AAC1F,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,EAAE,EAAC;AACH,CAAC,CAAC;;AChIK,MAAM,UAAA,uBAAiB,OAAA,EAAoC;AAE3D,SAAS,UAAA,CACd,KAAA,EACA,QAAA,EACA,eAAA,EACQ;AACR,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAA,CAAI,KAAK,CAAA;AACnC,EAAA,OAAO,MAAA,EAAQ,GAAA,CAAI,QAAQ,CAAA,IAAK,GAAG,eAAA,CAAA,EAAA,EAAoB,QAAA,CAAA,CAAA;AACzD;AAEO,SAAS,kBAAkB,KAAA,EAAmC;AACnE,EAAA,IAAI,MAAA,GAAS,UAAA,CAAW,GAAA,CAAI,KAAK,CAAA;AACjC,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,MAAA,uBAAa,GAAA,EAAoB;AACjC,IAAA,UAAA,CAAW,GAAA,CAAI,OAAO,MAAM,CAAA;AAAA,EAC9B;AACA,EAAA,OAAO,MAAA;AACT;;ACVO,SAAS,oBAAA,CACd,OACA,eAAA,EACM;AACN,EAAA,MAAM,YAAA,GAAe,OAAO,IAAA,EAAY,GAAA,KAA+B;AACrE,IAAA,MAAM,EAAE,MAAA,EAAQ,EAAA,EAAG,GAAI,IAAA;AAEvB,IAAA,MAAM,MAAA,EAAQ,SAAA,EAAW,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AACzC,IAAA,MAAM,iBAAiB,YAAY;AACjC,MAAA,MAAM,MAAA,EAAQ,UAAA,EAAY,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAC1C,MAAA,MAAM,EAAA,EAAG;AACT,MAAA,MAAM,MAAA,EAAQ,SAAA,EAAW,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAAA,IAC3C,CAAC,CAAA;AACD,IAAA,MAAM,MAAA,EAAQ,UAAA,EAAY,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAC1C,IAAA,MAAM,gBAAA,CAAiB,MAAM,GAAG,CAAA;AAEhC,IAAA,MAAO,eAAe,uBAAA,GAA0B;AAC9C,MAAA,MAAA,CAAO,EAAA,IAAK;AACZ,MAAA,eAAA,CAAgB,cAAA,EAAe;AAC/B,MAAA,MAAM,EAAA,EAAG;AACT,MAAA,eAAA,CAAgB,aAAA,EAAc;AAC9B,MAAA,eAAA,CAAgB,oBAAA,CAAqB,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA;AAAA,IACvD,CAAA,EAAG;AAEH,IAAA,MAAM,gBAAA,CAAiB,KAAK,GAAG,CAAA;AAC/B,IAAA,MAAM,MAAA,EAAQ,SAAA,EAAW,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AACzC,IAAA,MAAM,MAAA,EAAQ,QAAA,EAAU,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAAA,EAC1C,CAAA;AAGA,EAAA,MAAM,WAAA,GAAc,CAAC,IAAA,EAAY,GAAA,KAAsB;AACrD,IAAA,MAAM,EAAE,MAAA,EAAQ,EAAA,EAAG,GAAI,IAAA;AAEvB,IAAA,MAAA,EAAQ,SAAA,EAAW,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AACnC,IAAA,MAAA,EAAQ,UAAA,EAAY,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAEpC,IAAA,CAAC,SAAS,uBAAA,GAA0B;AAClC,MAAA,MAAA,CAAO,EAAA,IAAK;AACZ,MAAA,eAAA,CAAgB,cAAA,EAAe;AAC/B,MAAA,EAAA,EAAG;AACH,MAAA,eAAA,CAAgB,aAAA,EAAc;AAC9B,MAAA,eAAA,CAAgB,oBAAA,CAAqB,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA;AAAA,IACvD,CAAA,GAAG;AAEH,IAAA,MAAA,EAAQ,SAAA,EAAW,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AACnC,IAAA,MAAA,EAAQ,QAAA,EAAU,IAAA,CAAK,IAAA,EAAM,KAAK,CAAA;AAAA,EACpC,CAAA;AAEA,EAAA,KAAA,CAAM,MAAM,YAAY;AACtB,IAAA,QAAA,EAAS;AAET,IAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC9B,MAAA,MAAM,GAAA,GAAM,UAAA,CAAW,KAAA,EAAO,IAAA,CAAK,MAAM,eAAe,CAAA;AACxD,MAAA,MAAM,YAAA,CAAa,MAAM,GAAG,CAAA;AAC5B,MAAA,iBAAA,CAAkB,GAAG,CAAA;AAAA,IACvB;AAEA,IAAA,OAAO,MAAA,EAAO;AAAA,EAChB,CAAA;AAEA,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,QAAA,EAAS;AAET,IAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC9B,MAAA,MAAM,GAAA,GAAM,UAAA,CAAW,KAAA,EAAO,IAAA,CAAK,MAAM,eAAe,CAAA;AACxD,MAAA,WAAA,CAAY,MAAM,GAAG,CAAA;AACrB,MAAA,iBAAA,CAAkB,GAAG,CAAA;AAAA,IACvB;AAEA,IAAA,OAAO,MAAA,EAAO;AAAA,EAChB,CAAA;AAEA,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,OAAA,CAAQ,GAAA;AAAA,MACN,CAAA,6CAAA,EAAgD,eAAA,CAAA,oBAAA;AAAA,KAClD;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,GAAA,KAAgB;AACzC,IAAA,OAAA,CAAQ,GAAA;AAAA,MACN,CAAA,WAAA,EACE,eAAA,CAAgB,cAAA,EAAe,GAAI,aAAa,SAAA,CAAA,CAAA,EAC9C,GAAA,CAAA;AAAA,KACN;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,YAAA,EAAa;AACb,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,wBAAA,EAA2B,KAAA,CAAM,KAAA,CAAM,MAAA,CAAA,SAAA,CAAiB,CAAA;AACpE,IAAA,OAAO,KAAA,CAAM,KAAA;AAAA,EACf,CAAA;AACF;;ACvFO,SAAS,gBAAA,CAAiB,OAAc,eAAA,EAA+B;AAC5E,EAAA,KAAA,CAAM,MAAM,YAAY;AACtB,IAAA,QAAA,EAAS;AACT,IAAA,MAAM,qBAA0C,EAAC;AAGjD,IAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAC9B,MAAA,MAAM,GAAA,GAAM,UAAA,CAAW,KAAA,EAAO,IAAA,CAAK,MAAM,eAAe,CAAA;AAGxD,MAAA,gBAAA,CAAiB,MAAM,IAAI,CAAA;AAG3B,MAAA,IAAI,KAAA,CAAM,KAAK,MAAA,EAAQ;AACrB,QAAA,MAAM,KAAK,MAAA,EAAO;AAAA,MACpB;AAEA,MAAA,MAAM,gBAAA,CAAiB,MAAM,GAAG,CAAA;AAChC,MAAA,eAAA,CAAgB,cAAA,EAAe;AAC/B,MAAA,MAAM,KAAK,GAAA,EAAI;AACf,MAAA,eAAA,CAAgB,aAAA,EAAc;AAC9B,MAAA,MAAM,gBAAA,CAAiB,KAAK,GAAG,CAAA;AAE/B,MAAA,iCAAA;AAAA,QACE,kBAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO,mBAAA,CAAoB,KAAA,EAAO,kBAAA,EAAoB,IAAI,CAAA;AAAA,EAC5D,CAAA;AAEA,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,QAAA,EAAS;AACT,IAAA,MAAM,qBAA0C,EAAC;AAEjD,IAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,KAAA,EAAO;AAE9B,MAAA,gBAAA,CAAiB,MAAM,KAAK,CAAA;AAE5B,MAAA,IAAI,KAAA,CAAM,KAAK,MAAA,EAAQ;AACrB,QAAA,IAAA,CAAK,MAAA,EAAO;AAAA,MACd;AAEA,MAAA,eAAA,CAAgB,cAAA,EAAe;AAC/B,MAAA,IAAA,CAAK,OAAA,EAAQ;AACb,MAAA,eAAA,CAAgB,aAAA,EAAc;AAE9B,MAAA,iCAAA;AAAA,QACE,kBAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO,mBAAA,CAAoB,KAAA,EAAO,kBAAA,EAAoB,KAAK,CAAA;AAAA,EAC7D,CAAA;AACF;AAEA,SAAS,QAAA,GAAW;AAClB,EAAA,OAAA,CAAQ,GAAA;AAAA,IACN,CAAA,6CAAA,EAAgD,eAAA,CAAA,gBAAA;AAAA,GAClD;AACF;AAEA,MAAM,wBAAA,GAA2B,EAAA;AAEjC,SAAS,iCAAA,CACP,kBAAA,EACA,IAAA,EACA,KAAA,EACA,eAAA,EACM;AACN,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,KAAA,EAAO,IAAA,CAAK,MAAM,eAAe,CAAA;AAExD,EAAA,IAAI,CAAC,KAAK,MAAA,EAAQ;AAChB,IAAA,OAAA,CAAQ,IAAA,CAAK,2CAAsC,GAAA,CAAA,CAAK,CAAA;AACxD,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,mBAAmB,KAAA,CAAM,IAAA,CAAK,SAChC,KAAA,CAAM,IAAA,CAAK,oBAAoB,wBAAA,GAC/B,CAAA;AACJ,EAAA,MAAM,KAAA,GAAQ,sCAAA;AAAA,IACZ,IAAA,CAAK,MAAA;AAAA,IACL;AAAA,GACF;AAEA,EAAA,kBAAA,CAAmB,IAAA,CAAK;AAAA,IACtB,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,GAAA;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,KAAA,CAAM,IAAA,CAAK,UAAA,IAAc,IAAA;AAAA,MACrC,WAAA,EAAa,MAAM,IAAA,CAAK,IAAA,GAAO,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,GAAI,IAAA;AAAA,MACzD,iBAAA,EAAmB,IAAA;AAAA;AAAA,MACnB,cAAA,EACE,KAAA,CAAM,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM,IAAA,CAAK,UAAA,GAC5B,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,GAC5B;AAAA,KACR;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAA,CAAQ,GAAA,CAAI,0CAAqC,GAAA,CAAA,CAAK,CAAA;AACtD,EAAA,eAAA,CAAgB,oBAAA,CAAqB,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA;AACvD;AAEA,SAAS,gBAAA,CAAiB,MAAY,OAAA,EAAwB;AAC5D,EAAA,MAAM,EAAE,IAAG,GAAI,IAAA;AACf,EAAA,IAAI,OAAA,EAAS;AAEX,IAAA,eAAeA,wBAAAA,GAA0B;AACvC,MAAA,MAAM,EAAA,EAAG;AAAA,IACX;AAEA,IAAC,KAAa,EAAA,GAAKA,wBAAAA;AAAA,EACrB,CAAA,MAAO;AAEL,IAAA,IAASA,2BAAT,WAAmC;AACjC,MAAA,EAAA,EAAG;AAAA,IACL,CAAA;AAEA,IAAC,KAAa,EAAA,GAAKA,wBAAAA;AAAA,EACrB;AACF;AAEA,SAAS,mBAAA,CACP,KAAA,EACA,UAAA,EACA,OAAA,EACA;AAEA,EAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,IAAA,oBAAA,CAAqB,YAAY,OAAO,CAAA;AAAA,EAC1C;AAEA,EAAA,OAAA,CAAQ,GAAA;AAAA,IACN,CAAA,6CAAA,EAAgD,MAAM,KAAA,CAAM,MAAA,CAAA,SAAA;AAAA,GAC9D;AACA,EAAA,OAAO,KAAA,CAAM,KAAA;AACf;AAEA,SAAS,sCAAA,CACP,QACA,gBAAA,EACgB;AAChB,EAAA,MAAM,EAAE,GAAA,EAAK,GAAA,EAAK,MAAM,EAAA,EAAI,OAAA,KAAY,MAAA,CAAO,OAAA;AAG/C,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA;AAC9D,EAAA,MAAM,MAAA,GAAS,OAAO,IAAI,CAAA;AAC1B,EAAA,MAAM,OAAA,GAAU,OAAO,EAAE,CAAA;AAEzB,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,kBAAA,EAAoB,oBAAA,EAAqB,GACxE,kBAAA,CAAmB,EAAE,MAAA,EAAQ,OAAA,EAAS,aAAA,EAAe,CAAA;AAEvD,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,OAAO,GAAG,CAAA;AAAA,IAClB,MAAA,EAAQ,OAAO,GAAG,CAAA;AAAA,IAClB,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,OAAA;AAAA,IACV,KAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA,EAAY,KAAA,CAAM,MAAA,CAAO,SAAS,CAAA;AAAA,IAClC,cAAA,EAAgB,CAAA;AAAA;AAAA,IAChB,QAAQ,aAAA,CAAc,MAAA;AAAA,IACtB,kBAAA;AAAA,IACA,oBAAA;AAAA,IACA,YAAA,EAAc;AAAA,GAChB;AACF;;AC3KA,aAAA,EAAc;AAEP,SAAS,aAAa,KAAA,EAAqB;AAChD,EAAA,MAAM,qBAAqB,qBAAA,EAAsB;AACjD,EAAA,IAAI,uBAAuB,UAAA,EAAY;AACrC,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,SAAA,EAAU;AAEV,EAAA,MAAM,kBAAkB,cAAA,EAAe;AAGvC,EAAA,MAAM,MAAA,GAAS,kBAAkB,KAAK,CAAA;AACtC,EAAA,MAAM,SAAS,KAAA,CAAM,GAAA;AACrB,EAAA,KAAA,CAAM,GAAA,GAAM,CAAC,IAAA,EAAM,EAAA,EAAI,IAAA,KAAU;AAC/B,IAAA,MAAM,cAAc,cAAA,EAAe;AACnC,IAAA,IAAI,GAAA,GAAM,WAAA;AACV,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAW;AAC5B,MAAA,GAAA,IAAO,KAAK,KAAA,CAAM,IAAA,CAAA,CAAA;AAAA,IACpB;AACA,IAAA,GAAA,IAAO,CAAA,EAAA,EAAK,IAAA,CAAA,CAAA;AACZ,IAAA,MAAA,CAAO,GAAA,CAAI,MAAM,GAAG,CAAA;AACpB,IAAA,OAAO,OAAO,IAAA,CAAK,KAAK,CAAA,CAAE,IAAA,EAAM,IAAI,IAAI,CAAA;AAAA,EAC1C,CAAA;AAEA,EAAA,IAAI,uBAAuB,cAAA,EAAgB;AACzC,IAAA,oBAAA,CAAqB,OAAO,eAAe,CAAA;AAAA,EAC7C,CAAA,MAAA,IAAW,uBAAuB,UAAA,EAAY;AAC5C,IAAA,gBAAA,CAAiB,OAAO,eAAe,CAAA;AAAA,EACzC;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,cAAA,GAAyB;AAChC,EAAA,MAAM,QAAQC,GAAA,EAAc;AAC5B,EAAA,IAAI,WAAA,GAAc,KAAA,CAAM,CAAC,CAAA,CAAE,WAAA,EAAY;AACvC,EAAA,MAAM,MAAA,GAAS,UAAU,WAAW,CAAA;AACpC,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,EACnD;AACA,EAAA,IAAI,WAAA,CAAY,UAAA,CAAW,SAAS,CAAA,EAAG;AACrC,IAAA,WAAA,GAAc,cAAc,WAAW,CAAA;AAAA,EACzC;AACA,EAAA,OAAO,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ,WAAW,CAAA;AAC1C;AAKA,eAAsB,iBACpB,IAAA,EACmC;AACnC,EAAA,IAAI,CAAC,eAAA,CAAgB,cAAA,EAAe,EAAG;AACrC,IAAA,OAAA,CAAQ,KAAK,6DAA6D,CAAA;AAE1E,IAAA,OAAO,EAAE,UAAA,EAAY,IAAA,CAAK,QAAA,EAAS;AAAA,EACrC;AAEA,EAAA,OAAO,MAAM,gBAAA,CAAiB,gBAAA,CAAiB,IAAI,CAAA;AACrD;;;;","x_google_ignoreList":[0]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codspeed/tinybench-plugin",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.3",
|
|
4
4
|
"description": "tinybench compatibility layer for CodSpeed",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"codspeed",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"vitest": "^3.2.4"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@codspeed/core": "^5.0.0-alpha.
|
|
34
|
+
"@codspeed/core": "^5.0.0-alpha.3",
|
|
35
35
|
"stack-trace": "1.0.0-pre2"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|