@fuzdev/fuz_util 0.45.1 → 0.45.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/async.d.ts CHANGED
@@ -19,6 +19,24 @@ export interface Deferred<T> {
19
19
  * Creates a object with a `promise` and its `resolve`/`reject` handlers.
20
20
  */
21
21
  export declare const create_deferred: <T>() => Deferred<T>;
22
+ /**
23
+ * Runs an async function on each item with controlled concurrency.
24
+ * Like `map_concurrent` but doesn't collect results (more efficient for side effects).
25
+ *
26
+ * @param items array of items to process
27
+ * @param fn async function to apply to each item
28
+ * @param concurrency maximum number of concurrent operations
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * await each_concurrent(
33
+ * file_paths,
34
+ * async (path) => { await unlink(path); },
35
+ * 5, // max 5 concurrent deletions
36
+ * );
37
+ * ```
38
+ */
39
+ export declare const each_concurrent: <T>(items: Array<T>, fn: (item: T, index: number) => Promise<void>, concurrency: number) => Promise<void>;
22
40
  /**
23
41
  * Maps over items with controlled concurrency, preserving input order.
24
42
  *
@@ -1 +1 @@
1
- {"version":3,"file":"async.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/async.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,iBAAY,KAAG,OAAO,CAAC,IAAI,CACQ,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAAO,CAAC,OAAO,CACI,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,OAAK,QAAQ,CAAC,CAAC,CAQ/C,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,CAAC,EACxC,OAAO,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,aAAa,MAAM,KACjB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAoDlB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB,GAAU,CAAC,EAAE,CAAC,EAChD,OAAO,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,aAAa,MAAM,KACjB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CA6CxC,CAAC"}
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/async.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,iBAAY,KAAG,OAAO,CAAC,IAAI,CACQ,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAAO,CAAC,OAAO,CACI,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,OAAK,QAAQ,CAAC,CAAC,CAQ/C,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,GAAU,CAAC,EACtC,OAAO,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAC7C,aAAa,MAAM,KACjB,OAAO,CAAC,IAAI,CAgDd,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,CAAC,EACxC,OAAO,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,aAAa,MAAM,KACjB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAkDlB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,sBAAsB,GAAU,CAAC,EAAE,CAAC,EAChD,OAAO,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAC1C,aAAa,MAAM,KACjB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CA6CxC,CAAC"}
package/dist/async.js CHANGED
@@ -18,6 +18,68 @@ export const create_deferred = () => {
18
18
  });
19
19
  return { promise, resolve, reject };
20
20
  };
21
+ /**
22
+ * Runs an async function on each item with controlled concurrency.
23
+ * Like `map_concurrent` but doesn't collect results (more efficient for side effects).
24
+ *
25
+ * @param items array of items to process
26
+ * @param fn async function to apply to each item
27
+ * @param concurrency maximum number of concurrent operations
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * await each_concurrent(
32
+ * file_paths,
33
+ * async (path) => { await unlink(path); },
34
+ * 5, // max 5 concurrent deletions
35
+ * );
36
+ * ```
37
+ */
38
+ export const each_concurrent = async (items, fn, concurrency) => {
39
+ if (concurrency < 1) {
40
+ throw new Error('concurrency must be at least 1');
41
+ }
42
+ let next_index = 0;
43
+ let active_count = 0;
44
+ let rejected = false;
45
+ return new Promise((resolve, reject) => {
46
+ const run_next = () => {
47
+ // Stop spawning if we've rejected
48
+ if (rejected)
49
+ return;
50
+ // Check if we're done
51
+ if (next_index >= items.length && active_count === 0) {
52
+ resolve();
53
+ return;
54
+ }
55
+ // Spawn workers up to concurrency limit
56
+ while (active_count < concurrency && next_index < items.length) {
57
+ const index = next_index++;
58
+ const item = items[index];
59
+ active_count++;
60
+ fn(item, index)
61
+ .then(() => {
62
+ if (rejected)
63
+ return;
64
+ active_count--;
65
+ run_next();
66
+ })
67
+ .catch((error) => {
68
+ if (rejected)
69
+ return;
70
+ rejected = true;
71
+ reject(error); // eslint-disable-line @typescript-eslint/prefer-promise-reject-errors
72
+ });
73
+ }
74
+ };
75
+ // Handle empty array
76
+ if (items.length === 0) {
77
+ resolve();
78
+ return;
79
+ }
80
+ run_next();
81
+ });
82
+ };
21
83
  /**
22
84
  * Maps over items with controlled concurrency, preserving input order.
23
85
  *
@@ -43,7 +105,6 @@ export const map_concurrent = async (items, fn, concurrency) => {
43
105
  let next_index = 0;
44
106
  let active_count = 0;
45
107
  let rejected = false;
46
- let reject_error;
47
108
  return new Promise((resolve, reject) => {
48
109
  const run_next = () => {
49
110
  // Stop spawning if we've rejected
@@ -71,8 +132,7 @@ export const map_concurrent = async (items, fn, concurrency) => {
71
132
  if (rejected)
72
133
  return;
73
134
  rejected = true;
74
- reject_error = error;
75
- reject(reject_error); // eslint-disable-line @typescript-eslint/prefer-promise-reject-errors
135
+ reject(error); // eslint-disable-line @typescript-eslint/prefer-promise-reject-errors
76
136
  });
77
137
  }
78
138
  };
@@ -17,6 +17,8 @@
17
17
  * const results = await bench.run();
18
18
  * console.log(bench.table());
19
19
  * ```
20
+ *
21
+ * @module
20
22
  */
21
23
  import { type BenchmarkFormatJsonOptions } from './benchmark_format.js';
22
24
  import type { BenchmarkConfig, BenchmarkTask, BenchmarkResult, BenchmarkFormatTableOptions } from './benchmark_types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAON,KAAK,0BAA0B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACX,eAAe,EACf,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,MAAM,sBAAsB,CAAC;AAgD9B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAC5B,IAAI,MAAM,OAAO,EACjB,YAAY,MAAM,EAClB,aAAa,OAAO,KAClB,OAAO,CAAC,OAAO,CAyBjB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;;gBAMT,MAAM,GAAE,eAAoB;IAcxC;;;;;;;;;;;;;;;;;;OAkBG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI;IAC1C,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAkB9B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS1B;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAqH5C;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,MAAM;IAMpD;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,MAAM;IAMvD;;;;OAIG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,0BAA0B,GAAG,MAAM;IAIlD;;;;OAIG;IACH,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC;IAIjC;;;;;;;;;;OAUG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;;;;;;;;;;OAaG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAI/C;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAKb;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,MAAM;CA+BjB"}
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAON,KAAK,0BAA0B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACX,eAAe,EACf,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,MAAM,sBAAsB,CAAC;AAgD9B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAC5B,IAAI,MAAM,OAAO,EACjB,YAAY,MAAM,EAClB,aAAa,OAAO,KAClB,OAAO,CAAC,OAAO,CAyBjB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;;gBAMT,MAAM,GAAE,eAAoB;IAcxC;;;;;;;;;;;;;;;;;;OAkBG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI;IAC1C,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAkB9B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS1B;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxB;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAqH5C;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,MAAM;IAMpD;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,MAAM;IAMvD;;;;OAIG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,0BAA0B,GAAG,MAAM;IAIlD;;;;OAIG;IACH,OAAO,IAAI,KAAK,CAAC,eAAe,CAAC;IAIjC;;;;;;;;;;OAUG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;;;;;;;;;;OAaG;IACH,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAI/C;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAKb;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,MAAM;CA+BjB"}
package/dist/benchmark.js CHANGED
@@ -17,6 +17,8 @@
17
17
  * const results = await bench.run();
18
18
  * console.log(bench.table());
19
19
  * ```
20
+ *
21
+ * @module
20
22
  */
21
23
  import { is_promise, wait } from './async.js';
22
24
  import { BenchmarkStats } from './benchmark_stats.js';
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Benchmark baseline storage and comparison utilities.
3
3
  * Save benchmark results to disk and compare against baselines for regression detection.
4
+ *
5
+ * @module
4
6
  */
5
7
  import { z } from 'zod';
6
8
  import type { BenchmarkResult } from './benchmark_types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark_baseline.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/benchmark_baseline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchmark_baseline.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/benchmark_baseline.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Benchmark baseline storage and comparison utilities.
3
3
  * Save benchmark results to disk and compare against baselines for regression detection.
4
+ *
5
+ * @module
4
6
  */
5
7
  import { readFile, writeFile, mkdir, rm } from 'node:fs/promises';
6
8
  import { join } from 'node:path';
@@ -129,9 +131,9 @@ export const benchmark_baseline_load = async (options = {}) => {
129
131
  }
130
132
  return baseline;
131
133
  }
132
- catch (err) {
134
+ catch (error) {
133
135
  // eslint-disable-next-line no-console
134
- console.warn(`Invalid or corrupted benchmark baseline file. Removing: ${filepath}`, err instanceof Error ? err.message : err);
136
+ console.warn(`Invalid or corrupted benchmark baseline file. Removing: ${filepath}`, error instanceof Error ? error.message : error);
135
137
  await rm(filepath, { force: true });
136
138
  return null;
137
139
  }
@@ -2,6 +2,8 @@
2
2
  * Benchmark-specific statistical analysis.
3
3
  * Uses the general stats utilities from stats.ts for timing/performance analysis.
4
4
  * All timing values are in nanoseconds.
5
+ *
6
+ * @module
5
7
  */
6
8
  /**
7
9
  * Minimal stats interface for comparison.
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark_stats.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/benchmark_stats.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,mFAAmF;IACnF,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;IAC5B,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,WAAW,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,gBAAgB,EAAE,eAAe,CAAC;IAClC,mDAAmD;IACnD,UAAU,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,cAAc;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,yCAAyC;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAEvB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;IAiErC;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGlB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uBAAuB,GACnC,GAAG,wBAAwB,EAC3B,GAAG,wBAAwB,EAC3B,UAAU,uBAAuB,KAC/B,mBA6GF,CAAC"}
1
+ {"version":3,"file":"benchmark_stats.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/benchmark_stats.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,mFAAmF;IACnF,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;IAC5B,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,WAAW,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,gBAAgB,EAAE,eAAe,CAAC;IAClC,mDAAmD;IACnD,UAAU,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,cAAc;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,yCAAyC;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAEvB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;IAiErC;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGlB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,uBAAuB,GACnC,GAAG,wBAAwB,EAC3B,GAAG,wBAAwB,EAC3B,UAAU,uBAAuB,KAC/B,mBA6GF,CAAC"}
@@ -2,6 +2,8 @@
2
2
  * Benchmark-specific statistical analysis.
3
3
  * Uses the general stats utilities from stats.ts for timing/performance analysis.
4
4
  * All timing values are in nanoseconds.
5
+ *
6
+ * @module
5
7
  */
6
8
  import { TIME_NS_PER_SEC, time_format_adaptive } from './time.js';
7
9
  import { stats_mean, stats_median, stats_std_dev, stats_percentile, stats_cv, stats_min_max, stats_confidence_interval, stats_outliers_mad, stats_welch_t_test, stats_t_distribution_p_value, } from './stats.js';
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Library metadata combining package.json with analyzed source.
3
+ *
4
+ * @module
3
5
  */
4
6
  import type { PackageJson } from './package_json.js';
5
7
  import type { SourceJson } from './source_json.js';
@@ -1 +1 @@
1
- {"version":3,"file":"library_json.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/library_json.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,QAAQ,EAAE,GAAG,CAAC;IACd,wCAAwC;IACxC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,WAAW,CAAC;IAC1B,WAAW,EAAE,UAAU,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC9B,cAAc,WAAW,EACzB,aAAa,UAAU,KACrB,WAuDF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,MAStD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,WAAW,KAAG,MAAM,GAAG,IAQrE,CAAC"}
1
+ {"version":3,"file":"library_json.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/library_json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,QAAQ,EAAE,GAAG,CAAC;IACd,wCAAwC;IACxC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,WAAW,CAAC;IAC1B,WAAW,EAAE,UAAU,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC9B,cAAc,WAAW,EACzB,aAAa,UAAU,KACrB,WAuDF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,MAStD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,WAAW,KAAG,MAAM,GAAG,IAQrE,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Library metadata combining package.json with analyzed source.
3
+ *
4
+ * @module
3
5
  */
4
6
  import { ensure_end, strip_end, strip_start } from './string.js';
5
7
  /**
@@ -6,6 +6,8 @@
6
6
  * Used for generating API documentation and enabling code search.
7
7
  *
8
8
  * Hierarchy: SourceJson → ModuleJson → DeclarationJson
9
+ *
10
+ * @module
9
11
  */
10
12
  import { z } from 'zod';
11
13
  /**
@@ -118,7 +120,7 @@ export declare const DeclarationJson: z.ZodObject<{
118
120
  examples: z.ZodOptional<z.ZodArray<z.ZodString>>;
119
121
  /** Deprecation message from `@deprecated` tag. */
120
122
  deprecated_message: z.ZodOptional<z.ZodString>;
121
- /** Related items from `@see` tags, in mdz format. */
123
+ /** Related items from `@see` tags, in raw TSDoc format. */
122
124
  see_also: z.ZodOptional<z.ZodArray<z.ZodString>>;
123
125
  /** Exceptions from `@throws` tags. */
124
126
  throws: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -210,7 +212,7 @@ export declare const ModuleJson: z.ZodObject<{
210
212
  examples: z.ZodOptional<z.ZodArray<z.ZodString>>;
211
213
  /** Deprecation message from `@deprecated` tag. */
212
214
  deprecated_message: z.ZodOptional<z.ZodString>;
213
- /** Related items from `@see` tags, in mdz format. */
215
+ /** Related items from `@see` tags, in raw TSDoc format. */
214
216
  see_also: z.ZodOptional<z.ZodArray<z.ZodString>>;
215
217
  /** Exceptions from `@throws` tags. */
216
218
  throws: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -255,6 +257,11 @@ export declare const ModuleJson: z.ZodObject<{
255
257
  dependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
256
258
  /** Modules that import this (paths relative to src/lib). */
257
259
  dependents: z.ZodOptional<z.ZodArray<z.ZodString>>;
260
+ /**
261
+ * Modules fully re-exported via `export * from './module'`.
262
+ * Paths are relative to src/lib.
263
+ */
264
+ star_exports: z.ZodOptional<z.ZodArray<z.ZodString>>;
258
265
  }, z.core.$loose>;
259
266
  export type ModuleJson = z.infer<typeof ModuleJson>;
260
267
  /**
@@ -312,7 +319,7 @@ export declare const SourceJson: z.ZodObject<{
312
319
  examples: z.ZodOptional<z.ZodArray<z.ZodString>>;
313
320
  /** Deprecation message from `@deprecated` tag. */
314
321
  deprecated_message: z.ZodOptional<z.ZodString>;
315
- /** Related items from `@see` tags, in mdz format. */
322
+ /** Related items from `@see` tags, in raw TSDoc format. */
316
323
  see_also: z.ZodOptional<z.ZodArray<z.ZodString>>;
317
324
  /** Exceptions from `@throws` tags. */
318
325
  throws: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -357,6 +364,11 @@ export declare const SourceJson: z.ZodObject<{
357
364
  dependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
358
365
  /** Modules that import this (paths relative to src/lib). */
359
366
  dependents: z.ZodOptional<z.ZodArray<z.ZodString>>;
367
+ /**
368
+ * Modules fully re-exported via `export * from './module'`.
369
+ * Paths are relative to src/lib.
370
+ */
371
+ star_exports: z.ZodOptional<z.ZodArray<z.ZodString>>;
360
372
  }, z.core.$loose>>>;
361
373
  }, z.core.$loose>;
362
374
  export type SourceJson = z.infer<typeof SourceJson>;
@@ -1 +1 @@
1
- {"version":3,"file":"source_json.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/source_json.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;EAS1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC5B,+BAA+B;;IAE/B,wDAAwD;;IAExD,sDAAsD;;iBAErD,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa;;;;;;iBAMxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;;;iBAO5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,eAAe;IAC3B,yBAAyB;;;;;;;;;;;;IAGzB,yCAAyC;;IAEzC,sCAAsC;;IAEtC,oEAAoE;;IAEpE,4CAA4C;;IAE5C,kCAAkC;;;;;;;;IAElC,mCAAmC;;IAEnC,oDAAoD;;IAEpD,6CAA6C;;QAnE7C,+BAA+B;;QAE/B,wDAAwD;;QAExD,sDAAsD;;;IAiEtD,0CAA0C;;IAE1C,kDAAkD;;IAElD,qDAAqD;;IAErD,sCAAsC;;;;;IAEtC,6CAA6C;;IAE7C,mCAAmC;;IAEnC,8BAA8B;;IAE9B,8CAA8C;;IAI9C,6CAA6C;;IAI7C,8BAA8B;;;;;;;;;IAE9B;;;OAGG;;IAEH;;OAEG;;;;;iBAOF,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,UAAU;IACtB,qDAAqD;;;QAhErD,yBAAyB;;;;;;;;;;;;QAGzB,yCAAyC;;QAEzC,sCAAsC;;QAEtC,oEAAoE;;QAEpE,4CAA4C;;QAE5C,kCAAkC;;;;;;;;QAElC,mCAAmC;;QAEnC,oDAAoD;;QAEpD,6CAA6C;;YAnE7C,+BAA+B;;YAE/B,wDAAwD;;YAExD,sDAAsD;;;QAiEtD,0CAA0C;;QAE1C,kDAAkD;;QAElD,qDAAqD;;QAErD,sCAAsC;;;;;QAEtC,6CAA6C;;QAE7C,mCAAmC;;QAEnC,8BAA8B;;QAE9B,8CAA8C;;QAI9C,6CAA6C;;QAI7C,8BAA8B;;;;;;;;;QAE9B;;;WAGG;;QAEH;;WAEG;;;;;;IAiBH,gCAAgC;;IAEhC,wDAAwD;;IAExD,4DAA4D;;iBAE3D,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,UAAU;;;;QAftB,qDAAqD;;;YAhErD,yBAAyB;;;;;;;;;;;;YAGzB,yCAAyC;;YAEzC,sCAAsC;;YAEtC,oEAAoE;;YAEpE,4CAA4C;;YAE5C,kCAAkC;;;;;;;;YAElC,mCAAmC;;YAEnC,oDAAoD;;YAEpD,6CAA6C;;gBAnE7C,+BAA+B;;gBAE/B,wDAAwD;;gBAExD,sDAAsD;;;YAiEtD,0CAA0C;;YAE1C,kDAAkD;;YAElD,qDAAqD;;YAErD,sCAAsC;;;;;YAEtC,6CAA6C;;YAE7C,mCAAmC;;YAEnC,8BAA8B;;YAE9B,8CAA8C;;YAI9C,6CAA6C;;YAI7C,8BAA8B;;;;;;;;;YAE9B;;;eAGG;;YAEH;;eAEG;;;;;;QAiBH,gCAAgC;;QAEhC,wDAAwD;;QAExD,4DAA4D;;;iBAY3D,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,eAAe,KAAG,MAS3E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACvC,aAAa,eAAe,EAC5B,aAAa,MAAM,EACnB,cAAc,MAAM,KAClB,MAgBF,CAAC"}
1
+ {"version":3,"file":"source_json.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/source_json.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@
6
6
  * Used for generating API documentation and enabling code search.
7
7
  *
8
8
  * Hierarchy: SourceJson → ModuleJson → DeclarationJson
9
+ *
10
+ * @module
9
11
  */
10
12
  import { z } from 'zod';
11
13
  /**
@@ -92,7 +94,7 @@ export const DeclarationJson = z.looseObject({
92
94
  examples: z.array(z.string()).optional(),
93
95
  /** Deprecation message from `@deprecated` tag. */
94
96
  deprecated_message: z.string().optional(),
95
- /** Related items from `@see` tags, in mdz format. */
97
+ /** Related items from `@see` tags, in raw TSDoc format. */
96
98
  see_also: z.array(z.string()).optional(),
97
99
  /** Exceptions from `@throws` tags. */
98
100
  throws: z.array(z.looseObject({ type: z.string().optional(), description: z.string() })).optional(),
@@ -140,6 +142,11 @@ export const ModuleJson = z.looseObject({
140
142
  dependencies: z.array(z.string()).optional(),
141
143
  /** Modules that import this (paths relative to src/lib). */
142
144
  dependents: z.array(z.string()).optional(),
145
+ /**
146
+ * Modules fully re-exported via `export * from './module'`.
147
+ * Paths are relative to src/lib.
148
+ */
149
+ star_exports: z.array(z.string()).optional(),
143
150
  });
144
151
  /**
145
152
  * Metadata for a library's `src/lib/` exports.
package/dist/stats.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Statistical analysis utilities.
3
3
  * Pure functions with zero dependencies - can be used standalone for any data analysis.
4
+ *
5
+ * @module
4
6
  */
5
7
  /**
6
8
  * Calculate the mean (average) of an array of numbers.
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/stats.ts"],"names":[],"mappings":"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"}
package/dist/stats.js CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Statistical analysis utilities.
3
3
  * Pure functions with zero dependencies - can be used standalone for any data analysis.
4
+ *
5
+ * @module
4
6
  */
5
7
  // Statistical constants (defaults)
6
8
  const DEFAULT_IQR_MULTIPLIER = 1.5;
package/dist/string.d.ts CHANGED
@@ -61,4 +61,13 @@ export declare const string_display_width: (str: string) => number;
61
61
  * Pad a string to a target display width (accounting for wide characters).
62
62
  */
63
63
  export declare const pad_width: (str: string, target_width: number, align?: "left" | "right") => string;
64
+ /**
65
+ * Calculates the Levenshtein distance between two strings.
66
+ * Useful for typo detection and fuzzy matching.
67
+ *
68
+ * @param a - First string
69
+ * @param b - Second string
70
+ * @returns The edit distance between the strings
71
+ */
72
+ export declare const levenshtein_distance: (a: string, b: string) => number;
64
73
  //# sourceMappingURL=string.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/string.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM,EAAE,eAAc,KAAG,MAMzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAG9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAG5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAK9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAK/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAG9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAG5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,MAK1B,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,eAAY,KAAG,MAC9C,CAAC;AAE3B;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MACI,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAAsD,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,MACwC,CAAC;AAEpF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,MAuClD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GACrB,KAAK,MAAM,EACX,cAAc,MAAM,EACpB,QAAO,MAAM,GAAG,OAAgB,KAC9B,MAQF,CAAC"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/string.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM,EAAE,eAAc,KAAG,MAMzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAG9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAG5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAK9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,MAK/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAG9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAG5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,MAK1B,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,eAAY,KAAG,MAC9C,CAAC;AAE3B;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MACI,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAAsD,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,MACwC,CAAC;AAEpF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,MAuClD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GACrB,KAAK,MAAM,EACX,cAAc,MAAM,EACpB,QAAO,MAAM,GAAG,OAAgB,KAC9B,MAQF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,MAmC3D,CAAC"}
package/dist/string.js CHANGED
@@ -148,3 +148,46 @@ export const pad_width = (str, target_width, align = 'left') => {
148
148
  return ' '.repeat(padding) + str;
149
149
  }
150
150
  };
151
+ /**
152
+ * Calculates the Levenshtein distance between two strings.
153
+ * Useful for typo detection and fuzzy matching.
154
+ *
155
+ * @param a - First string
156
+ * @param b - Second string
157
+ * @returns The edit distance between the strings
158
+ */
159
+ export const levenshtein_distance = (a, b) => {
160
+ if (a.length === 0)
161
+ return b.length;
162
+ if (b.length === 0)
163
+ return a.length;
164
+ if (a === b)
165
+ return 0;
166
+ // Use shorter string for rows to minimize space
167
+ const a_shorter = a.length <= b.length;
168
+ const short = a_shorter ? a : b;
169
+ const long = a_shorter ? b : a;
170
+ const short_len = short.length;
171
+ const long_len = long.length;
172
+ // Only need two rows: previous and current
173
+ let prev = new Uint16Array(short_len + 1);
174
+ let curr = new Uint16Array(short_len + 1);
175
+ // Initialize first row
176
+ for (let j = 0; j <= short_len; j++) {
177
+ prev[j] = j;
178
+ }
179
+ for (let i = 1; i <= long_len; i++) {
180
+ curr[0] = i;
181
+ const long_char = long.charCodeAt(i - 1);
182
+ for (let j = 1; j <= short_len; j++) {
183
+ if (long_char === short.charCodeAt(j - 1)) {
184
+ curr[j] = prev[j - 1];
185
+ }
186
+ else {
187
+ curr[j] = 1 + Math.min(prev[j - 1], prev[j], curr[j - 1]);
188
+ }
189
+ }
190
+ [prev, curr] = [curr, prev];
191
+ }
192
+ return prev[short_len];
193
+ };
package/dist/time.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Time utilities.
3
3
  * Provides cross-platform high-resolution timing and measurement helpers.
4
+ *
5
+ * @module
4
6
  */
5
7
  /**
6
8
  * Timer interface for measuring elapsed time.
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/time.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,KAAK;IACrB,sCAAsC;IACtC,GAAG,EAAE,MAAM,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,KAI3B,CAAC;AAmCF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAC;AACpC,eAAO,MAAM,cAAc,UAAY,CAAC;AACxC,eAAO,MAAM,eAAe,aAAgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,MAA8B,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAA0C,CAAC;AAElG;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,WAAW,KAAK,CAAC,MAAM,CAAC,KAAG,QAqBhE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,EAAE,MAAM,QAAQ,EAAE,WAAU,MAAU,KAAG,MAa9E,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,EAAE,WAAU,MAAU,KAAG,MAavE,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,EACjC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,QAAO,KAAqB,KAC1B,OAAO,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAC,CAgBzC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAC1B,IAAI,MAAM,CAAC,EACX,QAAO,KAAqB,KAC1B;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAgBhC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,GACxB,IAAI,MAAM,OAAO,EACjB,YAAY,MAAM,EAClB,QAAO,KAAqB,KAC1B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAWvB,CAAC"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/time.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,KAAK;IACrB,sCAAsC;IACtC,GAAG,EAAE,MAAM,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,KAI3B,CAAC;AAmCF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAC;AACpC,eAAO,MAAM,cAAc,UAAY,CAAC;AACxC,eAAO,MAAM,eAAe,aAAgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,KAAG,MAA6B,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,KAAG,MAA8B,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAA0C,CAAC;AAElG;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,WAAW,KAAK,CAAC,MAAM,CAAC,KAAG,QAqBhE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,EAAE,MAAM,QAAQ,EAAE,WAAU,MAAU,KAAG,MAa9E,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,EAAE,WAAU,MAAU,KAAG,MAavE,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,EACjC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,QAAO,KAAqB,KAC1B,OAAO,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAC,CAgBzC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAC1B,IAAI,MAAM,CAAC,EACX,QAAO,KAAqB,KAC1B;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAgBhC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,GACxB,IAAI,MAAM,OAAO,EACjB,YAAY,MAAM,EAClB,QAAO,KAAqB,KAC1B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAWvB,CAAC"}
package/dist/time.js CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Time utilities.
3
3
  * Provides cross-platform high-resolution timing and measurement helpers.
4
+ *
5
+ * @module
4
6
  */
5
7
  /**
6
8
  * Node.js high-resolution timer using process.hrtime.bigint().
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuzdev/fuz_util",
3
- "version": "0.45.1",
3
+ "version": "0.45.3",
4
4
  "description": "utility belt for JS",
5
5
  "glyph": "🦕",
6
6
  "logo": "logo.svg",
@@ -62,8 +62,8 @@
62
62
  "devDependencies": {
63
63
  "@changesets/changelog-git": "^0.2.1",
64
64
  "@fuzdev/fuz_code": "^0.38.0",
65
- "@fuzdev/fuz_css": "^0.42.1",
66
- "@fuzdev/fuz_ui": "^0.174.0",
65
+ "@fuzdev/fuz_css": "^0.43.0",
66
+ "@fuzdev/fuz_ui": "^0.177.0",
67
67
  "@ryanatkn/eslint-config": "^0.9.0",
68
68
  "@ryanatkn/gro": "^0.184.0",
69
69
  "@sveltejs/adapter-static": "^3.0.10",
@@ -77,7 +77,7 @@
77
77
  "esm-env": "^1.2.2",
78
78
  "fast-deep-equal": "^3.1.3",
79
79
  "prettier": "^3.7.4",
80
- "prettier-plugin-svelte": "^3.4.0",
80
+ "prettier-plugin-svelte": "^3.4.1",
81
81
  "svelte": "^5.45.6",
82
82
  "svelte-check": "^4.3.4",
83
83
  "tslib": "^2.8.1",
package/src/lib/async.ts CHANGED
@@ -34,6 +34,77 @@ export const create_deferred = <T>(): Deferred<T> => {
34
34
  return {promise, resolve, reject};
35
35
  };
36
36
 
37
+ /**
38
+ * Runs an async function on each item with controlled concurrency.
39
+ * Like `map_concurrent` but doesn't collect results (more efficient for side effects).
40
+ *
41
+ * @param items array of items to process
42
+ * @param fn async function to apply to each item
43
+ * @param concurrency maximum number of concurrent operations
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * await each_concurrent(
48
+ * file_paths,
49
+ * async (path) => { await unlink(path); },
50
+ * 5, // max 5 concurrent deletions
51
+ * );
52
+ * ```
53
+ */
54
+ export const each_concurrent = async <T>(
55
+ items: Array<T>,
56
+ fn: (item: T, index: number) => Promise<void>,
57
+ concurrency: number,
58
+ ): Promise<void> => {
59
+ if (concurrency < 1) {
60
+ throw new Error('concurrency must be at least 1');
61
+ }
62
+
63
+ let next_index = 0;
64
+ let active_count = 0;
65
+ let rejected = false;
66
+
67
+ return new Promise((resolve, reject) => {
68
+ const run_next = (): void => {
69
+ // Stop spawning if we've rejected
70
+ if (rejected) return;
71
+
72
+ // Check if we're done
73
+ if (next_index >= items.length && active_count === 0) {
74
+ resolve();
75
+ return;
76
+ }
77
+
78
+ // Spawn workers up to concurrency limit
79
+ while (active_count < concurrency && next_index < items.length) {
80
+ const index = next_index++;
81
+ const item = items[index]!;
82
+ active_count++;
83
+
84
+ fn(item, index)
85
+ .then(() => {
86
+ if (rejected) return;
87
+ active_count--;
88
+ run_next();
89
+ })
90
+ .catch((error) => {
91
+ if (rejected) return;
92
+ rejected = true;
93
+ reject(error); // eslint-disable-line @typescript-eslint/prefer-promise-reject-errors
94
+ });
95
+ }
96
+ };
97
+
98
+ // Handle empty array
99
+ if (items.length === 0) {
100
+ resolve();
101
+ return;
102
+ }
103
+
104
+ run_next();
105
+ });
106
+ };
107
+
37
108
  /**
38
109
  * Maps over items with controlled concurrency, preserving input order.
39
110
  *
@@ -64,7 +135,6 @@ export const map_concurrent = async <T, R>(
64
135
  let next_index = 0;
65
136
  let active_count = 0;
66
137
  let rejected = false;
67
- let reject_error: unknown;
68
138
 
69
139
  return new Promise((resolve, reject) => {
70
140
  const run_next = (): void => {
@@ -93,8 +163,7 @@ export const map_concurrent = async <T, R>(
93
163
  .catch((error) => {
94
164
  if (rejected) return;
95
165
  rejected = true;
96
- reject_error = error;
97
- reject(reject_error); // eslint-disable-line @typescript-eslint/prefer-promise-reject-errors
166
+ reject(error); // eslint-disable-line @typescript-eslint/prefer-promise-reject-errors
98
167
  });
99
168
  }
100
169
  };
@@ -17,6 +17,8 @@
17
17
  * const results = await bench.run();
18
18
  * console.log(bench.table());
19
19
  * ```
20
+ *
21
+ * @module
20
22
  */
21
23
 
22
24
  import {is_promise, wait} from './async.js';
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Benchmark baseline storage and comparison utilities.
3
3
  * Save benchmark results to disk and compare against baselines for regression detection.
4
+ *
5
+ * @module
4
6
  */
5
7
 
6
8
  import {readFile, writeFile, mkdir, rm} from 'node:fs/promises';
@@ -233,11 +235,11 @@ export const benchmark_baseline_load = async (
233
235
  }
234
236
 
235
237
  return baseline;
236
- } catch (err) {
238
+ } catch (error) {
237
239
  // eslint-disable-next-line no-console
238
240
  console.warn(
239
241
  `Invalid or corrupted benchmark baseline file. Removing: ${filepath}`,
240
- err instanceof Error ? err.message : err,
242
+ error instanceof Error ? error.message : error,
241
243
  );
242
244
  await rm(filepath, {force: true});
243
245
  return null;
@@ -2,6 +2,8 @@
2
2
  * Benchmark-specific statistical analysis.
3
3
  * Uses the general stats utilities from stats.ts for timing/performance analysis.
4
4
  * All timing values are in nanoseconds.
5
+ *
6
+ * @module
5
7
  */
6
8
 
7
9
  import {TIME_NS_PER_SEC, time_format_adaptive} from './time.js';
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Library metadata combining package.json with analyzed source.
3
+ *
4
+ * @module
3
5
  */
4
6
 
5
7
  import {ensure_end, strip_end, strip_start} from './string.js';
@@ -6,6 +6,8 @@
6
6
  * Used for generating API documentation and enabling code search.
7
7
  *
8
8
  * Hierarchy: SourceJson → ModuleJson → DeclarationJson
9
+ *
10
+ * @module
9
11
  */
10
12
 
11
13
  import {z} from 'zod';
@@ -102,7 +104,7 @@ export const DeclarationJson = z.looseObject({
102
104
  examples: z.array(z.string()).optional(),
103
105
  /** Deprecation message from `@deprecated` tag. */
104
106
  deprecated_message: z.string().optional(),
105
- /** Related items from `@see` tags, in mdz format. */
107
+ /** Related items from `@see` tags, in raw TSDoc format. */
106
108
  see_also: z.array(z.string()).optional(),
107
109
  /** Exceptions from `@throws` tags. */
108
110
  throws: z.array(z.looseObject({type: z.string().optional(), description: z.string()})).optional(),
@@ -152,6 +154,11 @@ export const ModuleJson = z.looseObject({
152
154
  dependencies: z.array(z.string()).optional(),
153
155
  /** Modules that import this (paths relative to src/lib). */
154
156
  dependents: z.array(z.string()).optional(),
157
+ /**
158
+ * Modules fully re-exported via `export * from './module'`.
159
+ * Paths are relative to src/lib.
160
+ */
161
+ star_exports: z.array(z.string()).optional(),
155
162
  });
156
163
  export type ModuleJson = z.infer<typeof ModuleJson>;
157
164
 
package/src/lib/stats.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Statistical analysis utilities.
3
3
  * Pure functions with zero dependencies - can be used standalone for any data analysis.
4
+ *
5
+ * @module
4
6
  */
5
7
 
6
8
  // Statistical constants (defaults)
package/src/lib/string.ts CHANGED
@@ -163,3 +163,48 @@ export const pad_width = (
163
163
  return ' '.repeat(padding) + str;
164
164
  }
165
165
  };
166
+
167
+ /**
168
+ * Calculates the Levenshtein distance between two strings.
169
+ * Useful for typo detection and fuzzy matching.
170
+ *
171
+ * @param a - First string
172
+ * @param b - Second string
173
+ * @returns The edit distance between the strings
174
+ */
175
+ export const levenshtein_distance = (a: string, b: string): number => {
176
+ if (a.length === 0) return b.length;
177
+ if (b.length === 0) return a.length;
178
+ if (a === b) return 0;
179
+
180
+ // Use shorter string for rows to minimize space
181
+ const a_shorter = a.length <= b.length;
182
+ const short = a_shorter ? a : b;
183
+ const long = a_shorter ? b : a;
184
+ const short_len = short.length;
185
+ const long_len = long.length;
186
+
187
+ // Only need two rows: previous and current
188
+ let prev = new Uint16Array(short_len + 1);
189
+ let curr = new Uint16Array(short_len + 1);
190
+
191
+ // Initialize first row
192
+ for (let j = 0; j <= short_len; j++) {
193
+ prev[j] = j;
194
+ }
195
+
196
+ for (let i = 1; i <= long_len; i++) {
197
+ curr[0] = i;
198
+ const long_char = long.charCodeAt(i - 1);
199
+ for (let j = 1; j <= short_len; j++) {
200
+ if (long_char === short.charCodeAt(j - 1)) {
201
+ curr[j] = prev[j - 1]!;
202
+ } else {
203
+ curr[j] = 1 + Math.min(prev[j - 1]!, prev[j]!, curr[j - 1]!);
204
+ }
205
+ }
206
+ [prev, curr] = [curr, prev];
207
+ }
208
+
209
+ return prev[short_len]!;
210
+ };
package/src/lib/time.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Time utilities.
3
3
  * Provides cross-platform high-resolution timing and measurement helpers.
4
+ *
5
+ * @module
4
6
  */
5
7
 
6
8
  /**