aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/tinybench/dist
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-14 14:46:37 -0800
commitafa87af01c79a9baa539f2992d32154d2a4739bd (patch)
tree92c7416db734270a2fee1d72ee9cc119379ff8e1 /vanilla/node_modules/tinybench/dist
parent3b927e84d200402281f68181cd4253bc77e5528d (diff)
downloadneko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.gz
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.tar.bz2
neko-afa87af01c79a9baa539f2992d32154d2a4739bd.zip
task: delete vanilla js prototype\n\n- Removed vanilla/ directory and web/dist/vanilla directory\n- Updated Makefile, Dockerfile, and CI workflow to remove vanilla references\n- Cleaned up web/web.go to remove vanilla embed and routes\n- Verified build and tests pass\n\nCloses NK-2tcnmq
Diffstat (limited to 'vanilla/node_modules/tinybench/dist')
-rw-r--r--vanilla/node_modules/tinybench/dist/index.cjs585
-rw-r--r--vanilla/node_modules/tinybench/dist/index.d.cts319
-rw-r--r--vanilla/node_modules/tinybench/dist/index.d.ts319
-rw-r--r--vanilla/node_modules/tinybench/dist/index.js560
4 files changed, 0 insertions, 1783 deletions
diff --git a/vanilla/node_modules/tinybench/dist/index.cjs b/vanilla/node_modules/tinybench/dist/index.cjs
deleted file mode 100644
index f2e7ca2..0000000
--- a/vanilla/node_modules/tinybench/dist/index.cjs
+++ /dev/null
@@ -1,585 +0,0 @@
-"use strict";
-var x = Object.defineProperty;
-var G = Object.getOwnPropertyDescriptor;
-var J = Object.getOwnPropertyNames;
-var U = Object.prototype.hasOwnProperty;
-var q = (n) => {
- throw TypeError(n);
-};
-var W = (n, s, t) => s in n ? x(n, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[s] = t;
-var X = (n, s) => {
- for (var t in s)
- x(n, t, { get: s[t], enumerable: !0 });
-}, Z = (n, s, t, e) => {
- if (s && typeof s == "object" || typeof s == "function")
- for (let r of J(s))
- !U.call(n, r) && r !== t && x(n, r, { get: () => s[r], enumerable: !(e = G(s, r)) || e.enumerable });
- return n;
-};
-var tt = (n) => Z(x({}, "__esModule", { value: !0 }), n);
-var M = (n, s, t) => W(n, typeof s != "symbol" ? s + "" : s, t), S = (n, s, t) => s.has(n) || q("Cannot " + t);
-var d = (n, s, t) => (S(n, s, "read from private field"), t ? t.call(n) : s.get(n)), L = (n, s, t) => s.has(n) ? q("Cannot add the same private member more than once") : s instanceof WeakSet ? s.add(n) : s.set(n, t), f = (n, s, t, e) => (S(n, s, "write to private field"), e ? e.call(n, t) : s.set(n, t), t);
-var N = (n, s, t, e) => ({
- set _(r) {
- f(n, s, r, t);
- },
- get _() {
- return d(n, s, e);
- }
-});
-
-// src/index.ts
-var ot = {};
-X(ot, {
- Bench: () => k,
- Task: () => v,
- hrtimeNow: () => z,
- now: () => A
-});
-module.exports = tt(ot);
-
-// node_modules/.pnpm/yocto-queue@1.0.0/node_modules/yocto-queue/index.js
-var B = class {
- constructor(s) {
- M(this, "value");
- M(this, "next");
- this.value = s;
- }
-}, m, E, b, g = class {
- constructor() {
- L(this, m);
- L(this, E);
- L(this, b);
- this.clear();
- }
- enqueue(s) {
- let t = new B(s);
- d(this, m) ? (d(this, E).next = t, f(this, E, t)) : (f(this, m, t), f(this, E, t)), N(this, b)._++;
- }
- dequeue() {
- let s = d(this, m);
- if (s)
- return f(this, m, d(this, m).next), N(this, b)._--, s.value;
- }
- clear() {
- f(this, m, void 0), f(this, E, void 0), f(this, b, 0);
- }
- get size() {
- return d(this, b);
- }
- *[Symbol.iterator]() {
- let s = d(this, m);
- for (; s; )
- yield s.value, s = s.next;
- }
-};
-m = new WeakMap(), E = new WeakMap(), b = new WeakMap();
-
-// node_modules/.pnpm/p-limit@4.0.0/node_modules/p-limit/index.js
-function y(n) {
- if (!((Number.isInteger(n) || n === Number.POSITIVE_INFINITY) && n > 0))
- throw new TypeError("Expected `concurrency` to be a number from 1 and up");
- let s = new g(), t = 0, e = () => {
- t--, s.size > 0 && s.dequeue()();
- }, r = async (h, p, a) => {
- t++;
- let l = (async () => h(...a))();
- p(l);
- try {
- await l;
- } catch (T) {
- }
- e();
- }, i = (h, p, a) => {
- s.enqueue(r.bind(void 0, h, p, a)), (async () => (await Promise.resolve(), t < n && s.size > 0 && s.dequeue()()))();
- }, c = (h, ...p) => new Promise((a) => {
- i(h, a, p);
- });
- return Object.defineProperties(c, {
- activeCount: {
- get: () => t
- },
- pendingCount: {
- get: () => s.size
- },
- clearQueue: {
- value: () => {
- s.clear();
- }
- }
- }), c;
-}
-
-// src/event.ts
-function o(n, s = null) {
- let t = new Event(n);
- return s && Object.defineProperty(t, "task", {
- value: s,
- enumerable: !0,
- writable: !1,
- configurable: !1
- }), t;
-}
-
-// src/constants.ts
-var et = {
- 1: 12.71,
- 2: 4.303,
- 3: 3.182,
- 4: 2.776,
- 5: 2.571,
- 6: 2.447,
- 7: 2.365,
- 8: 2.306,
- 9: 2.262,
- 10: 2.228,
- 11: 2.201,
- 12: 2.179,
- 13: 2.16,
- 14: 2.145,
- 15: 2.131,
- 16: 2.12,
- 17: 2.11,
- 18: 2.101,
- 19: 2.093,
- 20: 2.086,
- 21: 2.08,
- 22: 2.074,
- 23: 2.069,
- 24: 2.064,
- 25: 2.06,
- 26: 2.056,
- 27: 2.052,
- 28: 2.048,
- 29: 2.045,
- 30: 2.042,
- 31: 2.0399,
- 32: 2.0378,
- 33: 2.0357,
- 34: 2.0336,
- 35: 2.0315,
- 36: 2.0294,
- 37: 2.0273,
- 38: 2.0252,
- 39: 2.0231,
- 40: 2.021,
- 41: 2.0198,
- 42: 2.0186,
- 43: 2.0174,
- 44: 2.0162,
- 45: 2.015,
- 46: 2.0138,
- 47: 2.0126,
- 48: 2.0114,
- 49: 2.0102,
- 50: 2.009,
- 51: 2.0081,
- 52: 2.0072,
- 53: 2.0063,
- 54: 2.0054,
- 55: 2.0045,
- 56: 2.0036,
- 57: 2.0027,
- 58: 2.0018,
- 59: 2.0009,
- 60: 2,
- 61: 1.9995,
- 62: 1.999,
- 63: 1.9985,
- 64: 1.998,
- 65: 1.9975,
- 66: 1.997,
- 67: 1.9965,
- 68: 1.996,
- 69: 1.9955,
- 70: 1.995,
- 71: 1.9945,
- 72: 1.994,
- 73: 1.9935,
- 74: 1.993,
- 75: 1.9925,
- 76: 1.992,
- 77: 1.9915,
- 78: 1.991,
- 79: 1.9905,
- 80: 1.99,
- 81: 1.9897,
- 82: 1.9894,
- 83: 1.9891,
- 84: 1.9888,
- 85: 1.9885,
- 86: 1.9882,
- 87: 1.9879,
- 88: 1.9876,
- 89: 1.9873,
- 90: 1.987,
- 91: 1.9867,
- 92: 1.9864,
- 93: 1.9861,
- 94: 1.9858,
- 95: 1.9855,
- 96: 1.9852,
- 97: 1.9849,
- 98: 1.9846,
- 99: 1.9843,
- 100: 1.984,
- 101: 1.9838,
- 102: 1.9836,
- 103: 1.9834,
- 104: 1.9832,
- 105: 1.983,
- 106: 1.9828,
- 107: 1.9826,
- 108: 1.9824,
- 109: 1.9822,
- 110: 1.982,
- 111: 1.9818,
- 112: 1.9816,
- 113: 1.9814,
- 114: 1.9812,
- 115: 1.9819,
- 116: 1.9808,
- 117: 1.9806,
- 118: 1.9804,
- 119: 1.9802,
- 120: 1.98,
- infinity: 1.96
-}, P = et;
-
-// src/utils.ts
-var st = (n) => n / 1e6, z = () => st(Number(process.hrtime.bigint())), A = () => performance.now();
-function nt(n) {
- return n !== null && typeof n == "object" && typeof n.then == "function";
-}
-var j = (n, s) => n.reduce((e, r) => e + (r - s) ** 2, 0) / (n.length - 1) || 0, rt = (async () => {
-}).constructor, it = (n) => n.constructor === rt, H = async (n) => {
- if (it(n.fn))
- return !0;
- try {
- if (n.opts.beforeEach != null)
- try {
- await n.opts.beforeEach.call(n);
- } catch (e) {
- }
- let s = n.fn(), t = nt(s);
- if (t)
- try {
- await s;
- } catch (e) {
- }
- if (n.opts.afterEach != null)
- try {
- await n.opts.afterEach.call(n);
- } catch (e) {
- }
- return t;
- } catch (s) {
- return !1;
- }
-};
-
-// src/task.ts
-var v = class extends EventTarget {
- constructor(t, e, r, i = {}) {
- super();
- /*
- * the number of times the task
- * function has been executed
- */
- this.runs = 0;
- this.bench = t, this.name = e, this.fn = r, this.opts = i;
- }
- async loop(t, e) {
- var T;
- let r = this.bench.concurrency === "task", { threshold: i } = this.bench, c = 0, h = [];
- if (this.opts.beforeAll != null)
- try {
- await this.opts.beforeAll.call(this);
- } catch (u) {
- return { error: u };
- }
- let p = await H(this), a = async () => {
- this.opts.beforeEach != null && await this.opts.beforeEach.call(this);
- let u = 0;
- if (p) {
- let w = this.bench.now();
- await this.fn.call(this), u = this.bench.now() - w;
- } else {
- let w = this.bench.now();
- this.fn.call(this), u = this.bench.now() - w;
- }
- h.push(u), c += u, this.opts.afterEach != null && await this.opts.afterEach.call(this);
- }, l = y(i);
- try {
- let u = [];
- for (; (c < t || h.length + l.activeCount + l.pendingCount < e) && !((T = this.bench.signal) != null && T.aborted); )
- r ? u.push(l(a)) : await a();
- u.length && await Promise.all(u);
- } catch (u) {
- return { error: u };
- }
- if (this.opts.afterAll != null)
- try {
- await this.opts.afterAll.call(this);
- } catch (u) {
- return { error: u };
- }
- return { samples: h };
- }
- /**
- * run the current task and write the results in `Task.result` object
- */
- async run() {
- var r, i;
- if ((r = this.result) != null && r.error)
- return this;
- this.dispatchEvent(o("start", this)), await this.bench.setup(this, "run");
- let { samples: t, error: e } = await this.loop(this.bench.time, this.bench.iterations);
- if (this.bench.teardown(this, "run"), t) {
- let c = t.reduce((O, F) => O + F, 0);
- this.runs = t.length, t.sort((O, F) => O - F);
- let h = c / this.runs, p = 1e3 / h, a = t.length, l = a - 1, T = t[0], u = t[l], w = c / t.length || 0, R = j(t, w), I = Math.sqrt(R), _ = I / Math.sqrt(a), K = P[String(Math.round(l) || 1)] || P.infinity, C = _ * K, V = C / w * 100, Q = t[Math.ceil(a * 0.75) - 1], Y = t[Math.ceil(a * 0.99) - 1], $ = t[Math.ceil(a * 0.995) - 1], D = t[Math.ceil(a * 0.999) - 1];
- if ((i = this.bench.signal) != null && i.aborted)
- return this;
- this.setResult({
- totalTime: c,
- min: T,
- max: u,
- hz: p,
- period: h,
- samples: t,
- mean: w,
- variance: R,
- sd: I,
- sem: _,
- df: l,
- critical: K,
- moe: C,
- rme: V,
- p75: Q,
- p99: Y,
- p995: $,
- p999: D
- });
- }
- if (e) {
- if (this.setResult({ error: e }), this.bench.throws)
- throw e;
- this.dispatchEvent(o("error", this)), this.bench.dispatchEvent(o("error", this));
- }
- return this.dispatchEvent(o("cycle", this)), this.bench.dispatchEvent(o("cycle", this)), this.dispatchEvent(o("complete", this)), this;
- }
- /**
- * warmup the current task
- */
- async warmup() {
- var e;
- if ((e = this.result) != null && e.error)
- return;
- this.dispatchEvent(o("warmup", this)), await this.bench.setup(this, "warmup");
- let { error: t } = await this.loop(this.bench.warmupTime, this.bench.warmupIterations);
- if (this.bench.teardown(this, "warmup"), t && (this.setResult({ error: t }), this.bench.throws))
- throw t;
- }
- addEventListener(t, e, r) {
- super.addEventListener(t, e, r);
- }
- removeEventListener(t, e, r) {
- super.removeEventListener(t, e, r);
- }
- /**
- * change the result object values
- */
- setResult(t) {
- this.result = { ...this.result, ...t }, Object.freeze(this.result);
- }
- /**
- * reset the task to make the `Task.runs` a zero-value and remove the `Task.result`
- * object
- */
- reset() {
- this.dispatchEvent(o("reset", this)), this.runs = 0, this.result = void 0;
- }
-};
-
-// src/bench.ts
-var k = class extends EventTarget {
- constructor(t = {}) {
- var e, r, i, c, h, p, a, l;
- super();
- /*
- * @private the task map
- */
- this._tasks = /* @__PURE__ */ new Map();
- this._todos = /* @__PURE__ */ new Map();
- /**
- * Executes tasks concurrently based on the specified concurrency mode.
- *
- * - When `mode` is set to `null` (default), concurrency is disabled.
- * - When `mode` is set to 'task', each task's iterations (calls of a task function) run concurrently.
- * - When `mode` is set to 'bench', different tasks within the bench run concurrently.
- */
- this.concurrency = null;
- /**
- * The maximum number of concurrent tasks to run. Defaults to Infinity.
- */
- this.threshold = 1 / 0;
- this.warmupTime = 100;
- this.warmupIterations = 5;
- this.time = 500;
- this.iterations = 10;
- this.now = A;
- this.now = (e = t.now) != null ? e : this.now, this.warmupTime = (r = t.warmupTime) != null ? r : this.warmupTime, this.warmupIterations = (i = t.warmupIterations) != null ? i : this.warmupIterations, this.time = (c = t.time) != null ? c : this.time, this.iterations = (h = t.iterations) != null ? h : this.iterations, this.signal = t.signal, this.throws = (p = t.throws) != null ? p : !1, this.setup = (a = t.setup) != null ? a : () => {
- }, this.teardown = (l = t.teardown) != null ? l : () => {
- }, this.signal && this.signal.addEventListener(
- "abort",
- () => {
- this.dispatchEvent(o("abort"));
- },
- { once: !0 }
- );
- }
- runTask(t) {
- var e;
- return (e = this.signal) != null && e.aborted ? t : t.run();
- }
- /**
- * run the added tasks that were registered using the
- * {@link add} method.
- * Note: This method does not do any warmup. Call {@link warmup} for that.
- */
- async run() {
- if (this.concurrency === "bench")
- return this.runConcurrently(this.threshold, this.concurrency);
- this.dispatchEvent(o("start"));
- let t = [];
- for (let e of [...this._tasks.values()])
- t.push(await this.runTask(e));
- return this.dispatchEvent(o("complete")), t;
- }
- /**
- * See Bench.{@link concurrency}
- */
- async runConcurrently(t = 1 / 0, e = "bench") {
- if (this.threshold = t, this.concurrency = e, e === "task")
- return this.run();
- this.dispatchEvent(o("start"));
- let r = y(t), i = [];
- for (let h of [...this._tasks.values()])
- i.push(r(() => this.runTask(h)));
- let c = await Promise.all(i);
- return this.dispatchEvent(o("complete")), c;
- }
- /**
- * warmup the benchmark tasks.
- * This is not run by default by the {@link run} method.
- */
- async warmup() {
- if (this.concurrency === "bench") {
- await this.warmupConcurrently(this.threshold, this.concurrency);
- return;
- }
- this.dispatchEvent(o("warmup"));
- for (let [, t] of this._tasks)
- await t.warmup();
- }
- /**
- * warmup the benchmark tasks concurrently.
- * This is not run by default by the {@link runConcurrently} method.
- */
- async warmupConcurrently(t = 1 / 0, e = "bench") {
- if (this.threshold = t, this.concurrency = e, e === "task") {
- await this.warmup();
- return;
- }
- this.dispatchEvent(o("warmup"));
- let r = y(t), i = [];
- for (let [, c] of this._tasks)
- i.push(r(() => c.warmup()));
- await Promise.all(i);
- }
- /**
- * reset each task and remove its result
- */
- reset() {
- this.dispatchEvent(o("reset")), this._tasks.forEach((t) => {
- t.reset();
- });
- }
- /**
- * add a benchmark task to the task map
- */
- add(t, e, r = {}) {
- let i = new v(this, t, e, r);
- return this._tasks.set(t, i), this.dispatchEvent(o("add", i)), this;
- }
- /**
- * add a benchmark todo to the todo map
- */
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- todo(t, e = () => {
- }, r = {}) {
- let i = new v(this, t, e, r);
- return this._todos.set(t, i), this.dispatchEvent(o("todo", i)), this;
- }
- /**
- * remove a benchmark task from the task map
- */
- remove(t) {
- let e = this.getTask(t);
- return e && (this.dispatchEvent(o("remove", e)), this._tasks.delete(t)), this;
- }
- addEventListener(t, e, r) {
- super.addEventListener(t, e, r);
- }
- removeEventListener(t, e, r) {
- super.removeEventListener(t, e, r);
- }
- /**
- * table of the tasks results
- */
- table(t) {
- return this.tasks.map((e) => {
- if (e.result) {
- if (e.result.error)
- throw e.result.error;
- return (t == null ? void 0 : t(e)) || {
- "Task Name": e.name,
- "ops/sec": e.result.error ? "NaN" : parseInt(e.result.hz.toString(), 10).toLocaleString(),
- "Average Time (ns)": e.result.error ? "NaN" : e.result.mean * 1e3 * 1e3,
- Margin: e.result.error ? "NaN" : `\xB1${e.result.rme.toFixed(2)}%`,
- Samples: e.result.error ? "NaN" : e.result.samples.length
- };
- }
- return null;
- });
- }
- /**
- * (getter) tasks results as an array
- */
- get results() {
- return [...this._tasks.values()].map((t) => t.result);
- }
- /**
- * (getter) tasks as an array
- */
- get tasks() {
- return [...this._tasks.values()];
- }
- get todos() {
- return [...this._todos.values()];
- }
- /**
- * get a task based on the task name
- */
- getTask(t) {
- return this._tasks.get(t);
- }
-};
-// Annotate the CommonJS export names for ESM import in node:
-0 && (module.exports = {
- Bench,
- Task,
- hrtimeNow,
- now
-});
diff --git a/vanilla/node_modules/tinybench/dist/index.d.cts b/vanilla/node_modules/tinybench/dist/index.d.cts
deleted file mode 100644
index d2b6ef0..0000000
--- a/vanilla/node_modules/tinybench/dist/index.d.cts
+++ /dev/null
@@ -1,319 +0,0 @@
-/**
- * A class that represents each benchmark task in Tinybench. It keeps track of the
- * results, name, Bench instance, the task function and the number times the task
- * function has been executed.
- */
-declare class Task extends EventTarget {
- bench: Bench;
- /**
- * task name
- */
- name: string;
- fn: Fn;
- runs: number;
- /**
- * the result object
- */
- result?: TaskResult;
- /**
- * Task options
- */
- opts: FnOptions;
- constructor(bench: Bench, name: string, fn: Fn, opts?: FnOptions);
- private loop;
- /**
- * run the current task and write the results in `Task.result` object
- */
- run(): Promise<this>;
- /**
- * warmup the current task
- */
- warmup(): Promise<void>;
- addEventListener<K extends TaskEvents, T = TaskEventsMap[K]>(type: K, listener: T, options?: AddEventListenerOptionsArgument): void;
- removeEventListener<K extends TaskEvents, T = TaskEventsMap[K]>(type: K, listener: T, options?: RemoveEventListenerOptionsArgument): void;
- /**
- * change the result object values
- */
- setResult(result: Partial<TaskResult>): void;
- /**
- * reset the task to make the `Task.runs` a zero-value and remove the `Task.result`
- * object
- */
- reset(): void;
-}
-
-/**
- * the task function
- */
-type Fn = () => any | Promise<any>;
-interface FnOptions {
- /**
- * An optional function that is run before iterations of this task begin
- */
- beforeAll?: (this: Task) => void | Promise<void>;
- /**
- * An optional function that is run before each iteration of this task
- */
- beforeEach?: (this: Task) => void | Promise<void>;
- /**
- * An optional function that is run after each iteration of this task
- */
- afterEach?: (this: Task) => void | Promise<void>;
- /**
- * An optional function that is run after all iterations of this task end
- */
- afterAll?: (this: Task) => void | Promise<void>;
-}
-/**
- * the benchmark task result object
- */
-type TaskResult = {
- error?: unknown;
- /**
- * The amount of time in milliseconds to run the benchmark task (cycle).
- */
- totalTime: number;
- /**
- * the minimum value in the samples
- */
- min: number;
- /**
- * the maximum value in the samples
- */
- max: number;
- /**
- * the number of operations per second
- */
- hz: number;
- /**
- * how long each operation takes (ms)
- */
- period: number;
- /**
- * task samples of each task iteration time (ms)
- */
- samples: number[];
- /**
- * samples mean/average (estimate of the population mean)
- */
- mean: number;
- /**
- * samples variance (estimate of the population variance)
- */
- variance: number;
- /**
- * samples standard deviation (estimate of the population standard deviation)
- */
- sd: number;
- /**
- * standard error of the mean (a.k.a. the standard deviation of the sampling distribution of the sample mean)
- */
- sem: number;
- /**
- * degrees of freedom
- */
- df: number;
- /**
- * critical value of the samples
- */
- critical: number;
- /**
- * margin of error
- */
- moe: number;
- /**
- * relative margin of error
- */
- rme: number;
- /**
- * p75 percentile
- */
- p75: number;
- /**
- * p99 percentile
- */
- p99: number;
- /**
- * p995 percentile
- */
- p995: number;
- /**
- * p999 percentile
- */
- p999: number;
-};
-/**
- * Both the `Task` and `Bench` objects extend the `EventTarget` object,
- * so you can attach a listeners to different types of events
- * to each class instance using the universal `addEventListener` and
- * `removeEventListener`
- */
-/**
- * Bench events
- */
-type BenchEvents = 'abort' | 'complete' | 'error' | 'reset' | 'start' | 'warmup' | 'cycle' | 'add' | 'remove' | 'todo';
-type Hook = (task: Task, mode: 'warmup' | 'run') => void | Promise<void>;
-type NoopEventListener = () => any | Promise<any>;
-type TaskEventListener = (e: Event & {
- task: Task;
-}) => any | Promise<any>;
-interface BenchEventsMap {
- abort: NoopEventListener;
- start: NoopEventListener;
- complete: NoopEventListener;
- warmup: NoopEventListener;
- reset: NoopEventListener;
- add: TaskEventListener;
- remove: TaskEventListener;
- cycle: TaskEventListener;
- error: TaskEventListener;
- todo: TaskEventListener;
-}
-/**
- * task events
- */
-type TaskEvents = 'abort' | 'complete' | 'error' | 'reset' | 'start' | 'warmup' | 'cycle';
-type TaskEventsMap = {
- abort: NoopEventListener;
- start: TaskEventListener;
- error: TaskEventListener;
- cycle: TaskEventListener;
- complete: TaskEventListener;
- warmup: TaskEventListener;
- reset: TaskEventListener;
-};
-type Options = {
- /**
- * time needed for running a benchmark task (milliseconds) @default 500
- */
- time?: number;
- /**
- * number of times that a task should run if even the time option is finished @default 10
- */
- iterations?: number;
- /**
- * function to get the current timestamp in milliseconds
- */
- now?: () => number;
- /**
- * An AbortSignal for aborting the benchmark
- */
- signal?: AbortSignal;
- /**
- * Throw if a task fails (events will not work if true)
- */
- throws?: boolean;
- /**
- * warmup time (milliseconds) @default 100ms
- */
- warmupTime?: number;
- /**
- * warmup iterations @default 5
- */
- warmupIterations?: number;
- /**
- * setup function to run before each benchmark task (cycle)
- */
- setup?: Hook;
- /**
- * teardown function to run after each benchmark task (cycle)
- */
- teardown?: Hook;
-};
-type BenchEvent = Event & {
- task: Task | null;
-};
-type RemoveEventListenerOptionsArgument = Parameters<typeof EventTarget.prototype.removeEventListener>[2];
-type AddEventListenerOptionsArgument = Parameters<typeof EventTarget.prototype.addEventListener>[2];
-
-/**
- * The Benchmark instance for keeping track of the benchmark tasks and controlling
- * them.
- */
-declare class Bench extends EventTarget {
- _tasks: Map<string, Task>;
- _todos: Map<string, Task>;
- /**
- * Executes tasks concurrently based on the specified concurrency mode.
- *
- * - When `mode` is set to `null` (default), concurrency is disabled.
- * - When `mode` is set to 'task', each task's iterations (calls of a task function) run concurrently.
- * - When `mode` is set to 'bench', different tasks within the bench run concurrently.
- */
- concurrency: 'task' | 'bench' | null;
- /**
- * The maximum number of concurrent tasks to run. Defaults to Infinity.
- */
- threshold: number;
- signal?: AbortSignal;
- throws: boolean;
- warmupTime: number;
- warmupIterations: number;
- time: number;
- iterations: number;
- now: () => number;
- setup: Hook;
- teardown: Hook;
- constructor(options?: Options);
- private runTask;
- /**
- * run the added tasks that were registered using the
- * {@link add} method.
- * Note: This method does not do any warmup. Call {@link warmup} for that.
- */
- run(): Promise<Task[]>;
- /**
- * See Bench.{@link concurrency}
- */
- runConcurrently(threshold?: number, mode?: NonNullable<Bench['concurrency']>): Promise<Task[]>;
- /**
- * warmup the benchmark tasks.
- * This is not run by default by the {@link run} method.
- */
- warmup(): Promise<void>;
- /**
- * warmup the benchmark tasks concurrently.
- * This is not run by default by the {@link runConcurrently} method.
- */
- warmupConcurrently(threshold?: number, mode?: NonNullable<Bench['concurrency']>): Promise<void>;
- /**
- * reset each task and remove its result
- */
- reset(): void;
- /**
- * add a benchmark task to the task map
- */
- add(name: string, fn: Fn, opts?: FnOptions): this;
- /**
- * add a benchmark todo to the todo map
- */
- todo(name: string, fn?: Fn, opts?: FnOptions): this;
- /**
- * remove a benchmark task from the task map
- */
- remove(name: string): this;
- addEventListener<K extends BenchEvents, T = BenchEventsMap[K]>(type: K, listener: T, options?: AddEventListenerOptionsArgument): void;
- removeEventListener<K extends BenchEvents, T = BenchEventsMap[K]>(type: K, listener: T, options?: RemoveEventListenerOptionsArgument): void;
- /**
- * table of the tasks results
- */
- table(convert?: (task: Task) => Record<string, string | number> | undefined): (Record<string, string | number> | null)[];
- /**
- * (getter) tasks results as an array
- */
- get results(): (TaskResult | undefined)[];
- /**
- * (getter) tasks as an array
- */
- get tasks(): Task[];
- get todos(): Task[];
- /**
- * get a task based on the task name
- */
- getTask(name: string): Task | undefined;
-}
-
-declare const hrtimeNow: () => number;
-declare const now: () => number;
-
-export { Bench, type BenchEvent, type BenchEvents, type Fn, type Hook, type Options, Task, type TaskEvents, type TaskResult, hrtimeNow, now };
diff --git a/vanilla/node_modules/tinybench/dist/index.d.ts b/vanilla/node_modules/tinybench/dist/index.d.ts
deleted file mode 100644
index d2b6ef0..0000000
--- a/vanilla/node_modules/tinybench/dist/index.d.ts
+++ /dev/null
@@ -1,319 +0,0 @@
-/**
- * A class that represents each benchmark task in Tinybench. It keeps track of the
- * results, name, Bench instance, the task function and the number times the task
- * function has been executed.
- */
-declare class Task extends EventTarget {
- bench: Bench;
- /**
- * task name
- */
- name: string;
- fn: Fn;
- runs: number;
- /**
- * the result object
- */
- result?: TaskResult;
- /**
- * Task options
- */
- opts: FnOptions;
- constructor(bench: Bench, name: string, fn: Fn, opts?: FnOptions);
- private loop;
- /**
- * run the current task and write the results in `Task.result` object
- */
- run(): Promise<this>;
- /**
- * warmup the current task
- */
- warmup(): Promise<void>;
- addEventListener<K extends TaskEvents, T = TaskEventsMap[K]>(type: K, listener: T, options?: AddEventListenerOptionsArgument): void;
- removeEventListener<K extends TaskEvents, T = TaskEventsMap[K]>(type: K, listener: T, options?: RemoveEventListenerOptionsArgument): void;
- /**
- * change the result object values
- */
- setResult(result: Partial<TaskResult>): void;
- /**
- * reset the task to make the `Task.runs` a zero-value and remove the `Task.result`
- * object
- */
- reset(): void;
-}
-
-/**
- * the task function
- */
-type Fn = () => any | Promise<any>;
-interface FnOptions {
- /**
- * An optional function that is run before iterations of this task begin
- */
- beforeAll?: (this: Task) => void | Promise<void>;
- /**
- * An optional function that is run before each iteration of this task
- */
- beforeEach?: (this: Task) => void | Promise<void>;
- /**
- * An optional function that is run after each iteration of this task
- */
- afterEach?: (this: Task) => void | Promise<void>;
- /**
- * An optional function that is run after all iterations of this task end
- */
- afterAll?: (this: Task) => void | Promise<void>;
-}
-/**
- * the benchmark task result object
- */
-type TaskResult = {
- error?: unknown;
- /**
- * The amount of time in milliseconds to run the benchmark task (cycle).
- */
- totalTime: number;
- /**
- * the minimum value in the samples
- */
- min: number;
- /**
- * the maximum value in the samples
- */
- max: number;
- /**
- * the number of operations per second
- */
- hz: number;
- /**
- * how long each operation takes (ms)
- */
- period: number;
- /**
- * task samples of each task iteration time (ms)
- */
- samples: number[];
- /**
- * samples mean/average (estimate of the population mean)
- */
- mean: number;
- /**
- * samples variance (estimate of the population variance)
- */
- variance: number;
- /**
- * samples standard deviation (estimate of the population standard deviation)
- */
- sd: number;
- /**
- * standard error of the mean (a.k.a. the standard deviation of the sampling distribution of the sample mean)
- */
- sem: number;
- /**
- * degrees of freedom
- */
- df: number;
- /**
- * critical value of the samples
- */
- critical: number;
- /**
- * margin of error
- */
- moe: number;
- /**
- * relative margin of error
- */
- rme: number;
- /**
- * p75 percentile
- */
- p75: number;
- /**
- * p99 percentile
- */
- p99: number;
- /**
- * p995 percentile
- */
- p995: number;
- /**
- * p999 percentile
- */
- p999: number;
-};
-/**
- * Both the `Task` and `Bench` objects extend the `EventTarget` object,
- * so you can attach a listeners to different types of events
- * to each class instance using the universal `addEventListener` and
- * `removeEventListener`
- */
-/**
- * Bench events
- */
-type BenchEvents = 'abort' | 'complete' | 'error' | 'reset' | 'start' | 'warmup' | 'cycle' | 'add' | 'remove' | 'todo';
-type Hook = (task: Task, mode: 'warmup' | 'run') => void | Promise<void>;
-type NoopEventListener = () => any | Promise<any>;
-type TaskEventListener = (e: Event & {
- task: Task;
-}) => any | Promise<any>;
-interface BenchEventsMap {
- abort: NoopEventListener;
- start: NoopEventListener;
- complete: NoopEventListener;
- warmup: NoopEventListener;
- reset: NoopEventListener;
- add: TaskEventListener;
- remove: TaskEventListener;
- cycle: TaskEventListener;
- error: TaskEventListener;
- todo: TaskEventListener;
-}
-/**
- * task events
- */
-type TaskEvents = 'abort' | 'complete' | 'error' | 'reset' | 'start' | 'warmup' | 'cycle';
-type TaskEventsMap = {
- abort: NoopEventListener;
- start: TaskEventListener;
- error: TaskEventListener;
- cycle: TaskEventListener;
- complete: TaskEventListener;
- warmup: TaskEventListener;
- reset: TaskEventListener;
-};
-type Options = {
- /**
- * time needed for running a benchmark task (milliseconds) @default 500
- */
- time?: number;
- /**
- * number of times that a task should run if even the time option is finished @default 10
- */
- iterations?: number;
- /**
- * function to get the current timestamp in milliseconds
- */
- now?: () => number;
- /**
- * An AbortSignal for aborting the benchmark
- */
- signal?: AbortSignal;
- /**
- * Throw if a task fails (events will not work if true)
- */
- throws?: boolean;
- /**
- * warmup time (milliseconds) @default 100ms
- */
- warmupTime?: number;
- /**
- * warmup iterations @default 5
- */
- warmupIterations?: number;
- /**
- * setup function to run before each benchmark task (cycle)
- */
- setup?: Hook;
- /**
- * teardown function to run after each benchmark task (cycle)
- */
- teardown?: Hook;
-};
-type BenchEvent = Event & {
- task: Task | null;
-};
-type RemoveEventListenerOptionsArgument = Parameters<typeof EventTarget.prototype.removeEventListener>[2];
-type AddEventListenerOptionsArgument = Parameters<typeof EventTarget.prototype.addEventListener>[2];
-
-/**
- * The Benchmark instance for keeping track of the benchmark tasks and controlling
- * them.
- */
-declare class Bench extends EventTarget {
- _tasks: Map<string, Task>;
- _todos: Map<string, Task>;
- /**
- * Executes tasks concurrently based on the specified concurrency mode.
- *
- * - When `mode` is set to `null` (default), concurrency is disabled.
- * - When `mode` is set to 'task', each task's iterations (calls of a task function) run concurrently.
- * - When `mode` is set to 'bench', different tasks within the bench run concurrently.
- */
- concurrency: 'task' | 'bench' | null;
- /**
- * The maximum number of concurrent tasks to run. Defaults to Infinity.
- */
- threshold: number;
- signal?: AbortSignal;
- throws: boolean;
- warmupTime: number;
- warmupIterations: number;
- time: number;
- iterations: number;
- now: () => number;
- setup: Hook;
- teardown: Hook;
- constructor(options?: Options);
- private runTask;
- /**
- * run the added tasks that were registered using the
- * {@link add} method.
- * Note: This method does not do any warmup. Call {@link warmup} for that.
- */
- run(): Promise<Task[]>;
- /**
- * See Bench.{@link concurrency}
- */
- runConcurrently(threshold?: number, mode?: NonNullable<Bench['concurrency']>): Promise<Task[]>;
- /**
- * warmup the benchmark tasks.
- * This is not run by default by the {@link run} method.
- */
- warmup(): Promise<void>;
- /**
- * warmup the benchmark tasks concurrently.
- * This is not run by default by the {@link runConcurrently} method.
- */
- warmupConcurrently(threshold?: number, mode?: NonNullable<Bench['concurrency']>): Promise<void>;
- /**
- * reset each task and remove its result
- */
- reset(): void;
- /**
- * add a benchmark task to the task map
- */
- add(name: string, fn: Fn, opts?: FnOptions): this;
- /**
- * add a benchmark todo to the todo map
- */
- todo(name: string, fn?: Fn, opts?: FnOptions): this;
- /**
- * remove a benchmark task from the task map
- */
- remove(name: string): this;
- addEventListener<K extends BenchEvents, T = BenchEventsMap[K]>(type: K, listener: T, options?: AddEventListenerOptionsArgument): void;
- removeEventListener<K extends BenchEvents, T = BenchEventsMap[K]>(type: K, listener: T, options?: RemoveEventListenerOptionsArgument): void;
- /**
- * table of the tasks results
- */
- table(convert?: (task: Task) => Record<string, string | number> | undefined): (Record<string, string | number> | null)[];
- /**
- * (getter) tasks results as an array
- */
- get results(): (TaskResult | undefined)[];
- /**
- * (getter) tasks as an array
- */
- get tasks(): Task[];
- get todos(): Task[];
- /**
- * get a task based on the task name
- */
- getTask(name: string): Task | undefined;
-}
-
-declare const hrtimeNow: () => number;
-declare const now: () => number;
-
-export { Bench, type BenchEvent, type BenchEvents, type Fn, type Hook, type Options, Task, type TaskEvents, type TaskResult, hrtimeNow, now };
diff --git a/vanilla/node_modules/tinybench/dist/index.js b/vanilla/node_modules/tinybench/dist/index.js
deleted file mode 100644
index 774c275..0000000
--- a/vanilla/node_modules/tinybench/dist/index.js
+++ /dev/null
@@ -1,560 +0,0 @@
-var $ = Object.defineProperty;
-var C = (s) => {
- throw TypeError(s);
-};
-var D = (s, n, t) => n in s ? $(s, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[n] = t;
-var O = (s, n, t) => D(s, typeof n != "symbol" ? n + "" : n, t), q = (s, n, t) => n.has(s) || C("Cannot " + t);
-var d = (s, n, t) => (q(s, n, "read from private field"), t ? t.call(s) : n.get(s)), k = (s, n, t) => n.has(s) ? C("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(s) : n.set(s, t), f = (s, n, t, e) => (q(s, n, "write to private field"), e ? e.call(s, t) : n.set(s, t), t);
-var F = (s, n, t, e) => ({
- set _(r) {
- f(s, n, r, t);
- },
- get _() {
- return d(s, n, e);
- }
-});
-
-// node_modules/.pnpm/yocto-queue@1.0.0/node_modules/yocto-queue/index.js
-var M = class {
- constructor(n) {
- O(this, "value");
- O(this, "next");
- this.value = n;
- }
-}, m, w, E, g = class {
- constructor() {
- k(this, m);
- k(this, w);
- k(this, E);
- this.clear();
- }
- enqueue(n) {
- let t = new M(n);
- d(this, m) ? (d(this, w).next = t, f(this, w, t)) : (f(this, m, t), f(this, w, t)), F(this, E)._++;
- }
- dequeue() {
- let n = d(this, m);
- if (n)
- return f(this, m, d(this, m).next), F(this, E)._--, n.value;
- }
- clear() {
- f(this, m, void 0), f(this, w, void 0), f(this, E, 0);
- }
- get size() {
- return d(this, E);
- }
- *[Symbol.iterator]() {
- let n = d(this, m);
- for (; n; )
- yield n.value, n = n.next;
- }
-};
-m = new WeakMap(), w = new WeakMap(), E = new WeakMap();
-
-// node_modules/.pnpm/p-limit@4.0.0/node_modules/p-limit/index.js
-function y(s) {
- if (!((Number.isInteger(s) || s === Number.POSITIVE_INFINITY) && s > 0))
- throw new TypeError("Expected `concurrency` to be a number from 1 and up");
- let n = new g(), t = 0, e = () => {
- t--, n.size > 0 && n.dequeue()();
- }, r = async (h, p, a) => {
- t++;
- let l = (async () => h(...a))();
- p(l);
- try {
- await l;
- } catch (T) {
- }
- e();
- }, i = (h, p, a) => {
- n.enqueue(r.bind(void 0, h, p, a)), (async () => (await Promise.resolve(), t < s && n.size > 0 && n.dequeue()()))();
- }, c = (h, ...p) => new Promise((a) => {
- i(h, a, p);
- });
- return Object.defineProperties(c, {
- activeCount: {
- get: () => t
- },
- pendingCount: {
- get: () => n.size
- },
- clearQueue: {
- value: () => {
- n.clear();
- }
- }
- }), c;
-}
-
-// src/event.ts
-function o(s, n = null) {
- let t = new Event(s);
- return n && Object.defineProperty(t, "task", {
- value: n,
- enumerable: !0,
- writable: !1,
- configurable: !1
- }), t;
-}
-
-// src/constants.ts
-var G = {
- 1: 12.71,
- 2: 4.303,
- 3: 3.182,
- 4: 2.776,
- 5: 2.571,
- 6: 2.447,
- 7: 2.365,
- 8: 2.306,
- 9: 2.262,
- 10: 2.228,
- 11: 2.201,
- 12: 2.179,
- 13: 2.16,
- 14: 2.145,
- 15: 2.131,
- 16: 2.12,
- 17: 2.11,
- 18: 2.101,
- 19: 2.093,
- 20: 2.086,
- 21: 2.08,
- 22: 2.074,
- 23: 2.069,
- 24: 2.064,
- 25: 2.06,
- 26: 2.056,
- 27: 2.052,
- 28: 2.048,
- 29: 2.045,
- 30: 2.042,
- 31: 2.0399,
- 32: 2.0378,
- 33: 2.0357,
- 34: 2.0336,
- 35: 2.0315,
- 36: 2.0294,
- 37: 2.0273,
- 38: 2.0252,
- 39: 2.0231,
- 40: 2.021,
- 41: 2.0198,
- 42: 2.0186,
- 43: 2.0174,
- 44: 2.0162,
- 45: 2.015,
- 46: 2.0138,
- 47: 2.0126,
- 48: 2.0114,
- 49: 2.0102,
- 50: 2.009,
- 51: 2.0081,
- 52: 2.0072,
- 53: 2.0063,
- 54: 2.0054,
- 55: 2.0045,
- 56: 2.0036,
- 57: 2.0027,
- 58: 2.0018,
- 59: 2.0009,
- 60: 2,
- 61: 1.9995,
- 62: 1.999,
- 63: 1.9985,
- 64: 1.998,
- 65: 1.9975,
- 66: 1.997,
- 67: 1.9965,
- 68: 1.996,
- 69: 1.9955,
- 70: 1.995,
- 71: 1.9945,
- 72: 1.994,
- 73: 1.9935,
- 74: 1.993,
- 75: 1.9925,
- 76: 1.992,
- 77: 1.9915,
- 78: 1.991,
- 79: 1.9905,
- 80: 1.99,
- 81: 1.9897,
- 82: 1.9894,
- 83: 1.9891,
- 84: 1.9888,
- 85: 1.9885,
- 86: 1.9882,
- 87: 1.9879,
- 88: 1.9876,
- 89: 1.9873,
- 90: 1.987,
- 91: 1.9867,
- 92: 1.9864,
- 93: 1.9861,
- 94: 1.9858,
- 95: 1.9855,
- 96: 1.9852,
- 97: 1.9849,
- 98: 1.9846,
- 99: 1.9843,
- 100: 1.984,
- 101: 1.9838,
- 102: 1.9836,
- 103: 1.9834,
- 104: 1.9832,
- 105: 1.983,
- 106: 1.9828,
- 107: 1.9826,
- 108: 1.9824,
- 109: 1.9822,
- 110: 1.982,
- 111: 1.9818,
- 112: 1.9816,
- 113: 1.9814,
- 114: 1.9812,
- 115: 1.9819,
- 116: 1.9808,
- 117: 1.9806,
- 118: 1.9804,
- 119: 1.9802,
- 120: 1.98,
- infinity: 1.96
-}, N = G;
-
-// src/utils.ts
-var J = (s) => s / 1e6, U = () => J(Number(process.hrtime.bigint())), B = () => performance.now();
-function W(s) {
- return s !== null && typeof s == "object" && typeof s.then == "function";
-}
-var S = (s, n) => s.reduce((e, r) => e + (r - n) ** 2, 0) / (s.length - 1) || 0, X = (async () => {
-}).constructor, Z = (s) => s.constructor === X, z = async (s) => {
- if (Z(s.fn))
- return !0;
- try {
- if (s.opts.beforeEach != null)
- try {
- await s.opts.beforeEach.call(s);
- } catch (e) {
- }
- let n = s.fn(), t = W(n);
- if (t)
- try {
- await n;
- } catch (e) {
- }
- if (s.opts.afterEach != null)
- try {
- await s.opts.afterEach.call(s);
- } catch (e) {
- }
- return t;
- } catch (n) {
- return !1;
- }
-};
-
-// src/task.ts
-var b = class extends EventTarget {
- constructor(t, e, r, i = {}) {
- super();
- /*
- * the number of times the task
- * function has been executed
- */
- this.runs = 0;
- this.bench = t, this.name = e, this.fn = r, this.opts = i;
- }
- async loop(t, e) {
- var T;
- let r = this.bench.concurrency === "task", { threshold: i } = this.bench, c = 0, h = [];
- if (this.opts.beforeAll != null)
- try {
- await this.opts.beforeAll.call(this);
- } catch (u) {
- return { error: u };
- }
- let p = await z(this), a = async () => {
- this.opts.beforeEach != null && await this.opts.beforeEach.call(this);
- let u = 0;
- if (p) {
- let v = this.bench.now();
- await this.fn.call(this), u = this.bench.now() - v;
- } else {
- let v = this.bench.now();
- this.fn.call(this), u = this.bench.now() - v;
- }
- h.push(u), c += u, this.opts.afterEach != null && await this.opts.afterEach.call(this);
- }, l = y(i);
- try {
- let u = [];
- for (; (c < t || h.length + l.activeCount + l.pendingCount < e) && !((T = this.bench.signal) != null && T.aborted); )
- r ? u.push(l(a)) : await a();
- u.length && await Promise.all(u);
- } catch (u) {
- return { error: u };
- }
- if (this.opts.afterAll != null)
- try {
- await this.opts.afterAll.call(this);
- } catch (u) {
- return { error: u };
- }
- return { samples: h };
- }
- /**
- * run the current task and write the results in `Task.result` object
- */
- async run() {
- var r, i;
- if ((r = this.result) != null && r.error)
- return this;
- this.dispatchEvent(o("start", this)), await this.bench.setup(this, "run");
- let { samples: t, error: e } = await this.loop(this.bench.time, this.bench.iterations);
- if (this.bench.teardown(this, "run"), t) {
- let c = t.reduce((L, A) => L + A, 0);
- this.runs = t.length, t.sort((L, A) => L - A);
- let h = c / this.runs, p = 1e3 / h, a = t.length, l = a - 1, T = t[0], u = t[l], v = c / t.length || 0, P = S(t, v), R = Math.sqrt(P), I = R / Math.sqrt(a), _ = N[String(Math.round(l) || 1)] || N.infinity, K = I * _, j = K / v * 100, H = t[Math.ceil(a * 0.75) - 1], V = t[Math.ceil(a * 0.99) - 1], Q = t[Math.ceil(a * 0.995) - 1], Y = t[Math.ceil(a * 0.999) - 1];
- if ((i = this.bench.signal) != null && i.aborted)
- return this;
- this.setResult({
- totalTime: c,
- min: T,
- max: u,
- hz: p,
- period: h,
- samples: t,
- mean: v,
- variance: P,
- sd: R,
- sem: I,
- df: l,
- critical: _,
- moe: K,
- rme: j,
- p75: H,
- p99: V,
- p995: Q,
- p999: Y
- });
- }
- if (e) {
- if (this.setResult({ error: e }), this.bench.throws)
- throw e;
- this.dispatchEvent(o("error", this)), this.bench.dispatchEvent(o("error", this));
- }
- return this.dispatchEvent(o("cycle", this)), this.bench.dispatchEvent(o("cycle", this)), this.dispatchEvent(o("complete", this)), this;
- }
- /**
- * warmup the current task
- */
- async warmup() {
- var e;
- if ((e = this.result) != null && e.error)
- return;
- this.dispatchEvent(o("warmup", this)), await this.bench.setup(this, "warmup");
- let { error: t } = await this.loop(this.bench.warmupTime, this.bench.warmupIterations);
- if (this.bench.teardown(this, "warmup"), t && (this.setResult({ error: t }), this.bench.throws))
- throw t;
- }
- addEventListener(t, e, r) {
- super.addEventListener(t, e, r);
- }
- removeEventListener(t, e, r) {
- super.removeEventListener(t, e, r);
- }
- /**
- * change the result object values
- */
- setResult(t) {
- this.result = { ...this.result, ...t }, Object.freeze(this.result);
- }
- /**
- * reset the task to make the `Task.runs` a zero-value and remove the `Task.result`
- * object
- */
- reset() {
- this.dispatchEvent(o("reset", this)), this.runs = 0, this.result = void 0;
- }
-};
-
-// src/bench.ts
-var x = class extends EventTarget {
- constructor(t = {}) {
- var e, r, i, c, h, p, a, l;
- super();
- /*
- * @private the task map
- */
- this._tasks = /* @__PURE__ */ new Map();
- this._todos = /* @__PURE__ */ new Map();
- /**
- * Executes tasks concurrently based on the specified concurrency mode.
- *
- * - When `mode` is set to `null` (default), concurrency is disabled.
- * - When `mode` is set to 'task', each task's iterations (calls of a task function) run concurrently.
- * - When `mode` is set to 'bench', different tasks within the bench run concurrently.
- */
- this.concurrency = null;
- /**
- * The maximum number of concurrent tasks to run. Defaults to Infinity.
- */
- this.threshold = 1 / 0;
- this.warmupTime = 100;
- this.warmupIterations = 5;
- this.time = 500;
- this.iterations = 10;
- this.now = B;
- this.now = (e = t.now) != null ? e : this.now, this.warmupTime = (r = t.warmupTime) != null ? r : this.warmupTime, this.warmupIterations = (i = t.warmupIterations) != null ? i : this.warmupIterations, this.time = (c = t.time) != null ? c : this.time, this.iterations = (h = t.iterations) != null ? h : this.iterations, this.signal = t.signal, this.throws = (p = t.throws) != null ? p : !1, this.setup = (a = t.setup) != null ? a : () => {
- }, this.teardown = (l = t.teardown) != null ? l : () => {
- }, this.signal && this.signal.addEventListener(
- "abort",
- () => {
- this.dispatchEvent(o("abort"));
- },
- { once: !0 }
- );
- }
- runTask(t) {
- var e;
- return (e = this.signal) != null && e.aborted ? t : t.run();
- }
- /**
- * run the added tasks that were registered using the
- * {@link add} method.
- * Note: This method does not do any warmup. Call {@link warmup} for that.
- */
- async run() {
- if (this.concurrency === "bench")
- return this.runConcurrently(this.threshold, this.concurrency);
- this.dispatchEvent(o("start"));
- let t = [];
- for (let e of [...this._tasks.values()])
- t.push(await this.runTask(e));
- return this.dispatchEvent(o("complete")), t;
- }
- /**
- * See Bench.{@link concurrency}
- */
- async runConcurrently(t = 1 / 0, e = "bench") {
- if (this.threshold = t, this.concurrency = e, e === "task")
- return this.run();
- this.dispatchEvent(o("start"));
- let r = y(t), i = [];
- for (let h of [...this._tasks.values()])
- i.push(r(() => this.runTask(h)));
- let c = await Promise.all(i);
- return this.dispatchEvent(o("complete")), c;
- }
- /**
- * warmup the benchmark tasks.
- * This is not run by default by the {@link run} method.
- */
- async warmup() {
- if (this.concurrency === "bench") {
- await this.warmupConcurrently(this.threshold, this.concurrency);
- return;
- }
- this.dispatchEvent(o("warmup"));
- for (let [, t] of this._tasks)
- await t.warmup();
- }
- /**
- * warmup the benchmark tasks concurrently.
- * This is not run by default by the {@link runConcurrently} method.
- */
- async warmupConcurrently(t = 1 / 0, e = "bench") {
- if (this.threshold = t, this.concurrency = e, e === "task") {
- await this.warmup();
- return;
- }
- this.dispatchEvent(o("warmup"));
- let r = y(t), i = [];
- for (let [, c] of this._tasks)
- i.push(r(() => c.warmup()));
- await Promise.all(i);
- }
- /**
- * reset each task and remove its result
- */
- reset() {
- this.dispatchEvent(o("reset")), this._tasks.forEach((t) => {
- t.reset();
- });
- }
- /**
- * add a benchmark task to the task map
- */
- add(t, e, r = {}) {
- let i = new b(this, t, e, r);
- return this._tasks.set(t, i), this.dispatchEvent(o("add", i)), this;
- }
- /**
- * add a benchmark todo to the todo map
- */
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- todo(t, e = () => {
- }, r = {}) {
- let i = new b(this, t, e, r);
- return this._todos.set(t, i), this.dispatchEvent(o("todo", i)), this;
- }
- /**
- * remove a benchmark task from the task map
- */
- remove(t) {
- let e = this.getTask(t);
- return e && (this.dispatchEvent(o("remove", e)), this._tasks.delete(t)), this;
- }
- addEventListener(t, e, r) {
- super.addEventListener(t, e, r);
- }
- removeEventListener(t, e, r) {
- super.removeEventListener(t, e, r);
- }
- /**
- * table of the tasks results
- */
- table(t) {
- return this.tasks.map((e) => {
- if (e.result) {
- if (e.result.error)
- throw e.result.error;
- return (t == null ? void 0 : t(e)) || {
- "Task Name": e.name,
- "ops/sec": e.result.error ? "NaN" : parseInt(e.result.hz.toString(), 10).toLocaleString(),
- "Average Time (ns)": e.result.error ? "NaN" : e.result.mean * 1e3 * 1e3,
- Margin: e.result.error ? "NaN" : `\xB1${e.result.rme.toFixed(2)}%`,
- Samples: e.result.error ? "NaN" : e.result.samples.length
- };
- }
- return null;
- });
- }
- /**
- * (getter) tasks results as an array
- */
- get results() {
- return [...this._tasks.values()].map((t) => t.result);
- }
- /**
- * (getter) tasks as an array
- */
- get tasks() {
- return [...this._tasks.values()];
- }
- get todos() {
- return [...this._todos.values()];
- }
- /**
- * get a task based on the task name
- */
- getTask(t) {
- return this._tasks.get(t);
- }
-};
-export {
- x as Bench,
- b as Task,
- U as hrtimeNow,
- B as now
-};