spliterator 2.2.3 → 3.0.1

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.
Files changed (104) hide show
  1. package/README.md +42 -0
  2. package/out/index.d.ts +2 -1
  3. package/out/index.d.ts.map +1 -1
  4. package/out/index.js +2 -1
  5. package/out/index.js.map +1 -1
  6. package/out/lib/AsyncSpliterator.d.ts +35 -34
  7. package/out/lib/AsyncSpliterator.d.ts.map +1 -1
  8. package/out/lib/AsyncSpliterator.js +93 -84
  9. package/out/lib/AsyncSpliterator.js.map +1 -1
  10. package/out/lib/BufferController.d.ts +10 -12
  11. package/out/lib/BufferController.d.ts.map +1 -1
  12. package/out/lib/BufferController.js +10 -12
  13. package/out/lib/BufferController.js.map +1 -1
  14. package/out/lib/CSVSpliterator.d.ts +6 -5
  15. package/out/lib/CSVSpliterator.d.ts.map +1 -1
  16. package/out/lib/CSVSpliterator.js +8 -5
  17. package/out/lib/CSVSpliterator.js.map +1 -1
  18. package/out/lib/CharacterSequence.d.ts +15 -64
  19. package/out/lib/CharacterSequence.d.ts.map +1 -1
  20. package/out/lib/CharacterSequence.js +194 -88
  21. package/out/lib/CharacterSequence.js.map +1 -1
  22. package/out/lib/CompositeDataView.d.ts +4 -5
  23. package/out/lib/CompositeDataView.d.ts.map +1 -1
  24. package/out/lib/CompositeDataView.js +2 -3
  25. package/out/lib/CompositeDataView.js.map +1 -1
  26. package/out/lib/IndexQueue.d.ts +1 -1
  27. package/out/lib/IndexQueue.d.ts.map +1 -1
  28. package/out/lib/IndexQueue.js +40 -11
  29. package/out/lib/IndexQueue.js.map +1 -1
  30. package/out/lib/JSONSpliterator.d.ts +1 -1
  31. package/out/lib/JSONSpliterator.js +1 -1
  32. package/out/lib/PSVSpliterator.d.ts +1 -1
  33. package/out/lib/PSVSpliterator.js +1 -1
  34. package/out/lib/SlidingWindow.d.ts +1 -1
  35. package/out/lib/SlidingWindow.d.ts.map +1 -1
  36. package/out/lib/SlidingWindow.js +11 -10
  37. package/out/lib/SlidingWindow.js.map +1 -1
  38. package/out/lib/Spliterator.d.ts +2 -3
  39. package/out/lib/Spliterator.d.ts.map +1 -1
  40. package/out/lib/Spliterator.js +102 -114
  41. package/out/lib/Spliterator.js.map +1 -1
  42. package/out/lib/TSVSpliterator.d.ts +1 -1
  43. package/out/lib/TSVSpliterator.js +1 -1
  44. package/out/lib/TextSpliterator.d.ts +4 -3
  45. package/out/lib/TextSpliterator.d.ts.map +1 -1
  46. package/out/lib/TextSpliterator.js +3 -1
  47. package/out/lib/TextSpliterator.js.map +1 -1
  48. package/out/lib/casing.d.ts +2 -3
  49. package/out/lib/casing.d.ts.map +1 -1
  50. package/out/lib/casing.js +2 -3
  51. package/out/lib/casing.js.map +1 -1
  52. package/out/lib/segment-runtime.d.ts +27 -0
  53. package/out/lib/segment-runtime.d.ts.map +1 -0
  54. package/out/lib/segment-runtime.js +38 -0
  55. package/out/lib/segment-runtime.js.map +1 -0
  56. package/out/lib/segment-worker-entry.d.ts +10 -0
  57. package/out/lib/segment-worker-entry.d.ts.map +1 -0
  58. package/out/lib/segment-worker-entry.js +56 -0
  59. package/out/lib/segment-worker-entry.js.map +1 -0
  60. package/out/lib/segment-workers.d.ts +49 -0
  61. package/out/lib/segment-workers.d.ts.map +1 -0
  62. package/out/lib/segment-workers.js +138 -0
  63. package/out/lib/segment-workers.js.map +1 -0
  64. package/out/lib/segments.d.ts +25 -0
  65. package/out/lib/segments.d.ts.map +1 -0
  66. package/out/lib/segments.js +50 -0
  67. package/out/lib/segments.js.map +1 -0
  68. package/out/lib/shared.d.ts +6 -5
  69. package/out/lib/shared.d.ts.map +1 -1
  70. package/out/lib/shared.js +3 -1
  71. package/out/lib/shared.js.map +1 -1
  72. package/out/lib/take.d.ts +3 -3
  73. package/out/lib/take.d.ts.map +1 -1
  74. package/out/lib/take.js +3 -3
  75. package/out/lib/take.js.map +1 -1
  76. package/out/lib/wasm_base64.d.ts +16 -0
  77. package/out/lib/wasm_base64.d.ts.map +1 -0
  78. package/out/lib/wasm_base64.js +16 -0
  79. package/out/lib/wasm_base64.js.map +1 -0
  80. package/out/lib/wasm_module.d.ts +36 -0
  81. package/out/lib/wasm_module.d.ts.map +1 -0
  82. package/out/lib/wasm_module.js +33 -0
  83. package/out/lib/wasm_module.js.map +1 -0
  84. package/out/lib/writer.d.ts +1 -1
  85. package/out/lib/writer.d.ts.map +1 -1
  86. package/out/lib/writer.js +1 -1
  87. package/out/lib/writer.js.map +1 -1
  88. package/out/node/cli/commands/csv.d.ts +1 -1
  89. package/out/node/cli/commands/csv.d.ts.map +1 -1
  90. package/out/node/cli/commands/csv.js +1 -1
  91. package/out/node/cli/commands/csv.js.map +1 -1
  92. package/out/node/cli/commands/iterate.d.ts +1 -1
  93. package/out/node/cli/commands/iterate.d.ts.map +1 -1
  94. package/out/node/cli/commands/iterate.js +1 -1
  95. package/out/node/cli/commands/iterate.js.map +1 -1
  96. package/out/node/cli/index.d.ts +1 -1
  97. package/out/node/cli/index.js +1 -1
  98. package/out/node/cli/utils.d.ts +1 -1
  99. package/out/node/cli/utils.js +1 -1
  100. package/out/node/fs/index.d.ts +16 -4
  101. package/out/node/fs/index.d.ts.map +1 -1
  102. package/out/node/fs/index.js +28 -4
  103. package/out/node/fs/index.js.map +1 -1
  104. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-worker-entry.js","sourceRoot":"","sources":["../../lib/segment-worker-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAuB,MAAM,sBAAsB,CAAA;AActE,KAAK,UAAU,IAAI;IAClB,MAAM,IAAI,GAAG,UAAwB,CAAA;IACrC,MAAM,IAAI,GAAG,UAAW,CAAA;IAExB,+FAA+F;IAC/F,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,OAAiC,CAAA;IAErC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE;QACnC,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACnB,KAAK,EAAE,CAAA;YACP,OAAO,EAAE,EAAE,CAAA;YACX,OAAO,GAAG,SAAS,CAAA;QACpB,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAgE,CAAA;IAC1G,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,OAAO,CAAA;IAEpD,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,IAAI,CAAC,UAAU,8BAA8B,EAAE,CAAC,CAAA;QAE5G,OAAM;IACP,CAAC;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;IACnE,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;IACtG,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IAE9G,IAAI,CAAC;QACJ,MAAM,UAAU,CAAC;YAChB,OAAO;YACP,YAAY;YACZ,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACzB,MAAM,EAAE,CAAA;gBACR,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAA;YAC9D,CAAC;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;YACrE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,KAAK;SAC9B,CAAC,CAAA;QAEF,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACrG,CAAC;AACF,CAAC;AAED,KAAK,IAAI,EAAE,CAAA"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license MIT
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import type { CharacterSequenceInput } from "./CharacterSequence.js";
7
+ import type { AsyncDataResource } from "./shared.js";
8
+ export interface MinimalWorker {
9
+ on(event: "message", cb: (msg: unknown) => void): void;
10
+ on(event: "error", cb: (err: Error) => void): void;
11
+ }
12
+ /**
13
+ * Drain a worker's batched messages into an async iterator. Listeners attach **eagerly** (messages posted before
14
+ * iteration starts are buffered, not lost) and draining uses a `batches[] + head` pointer (no `Array.shift()`).
15
+ * `onBatchConsumed` fires once per batch after its records are yielded — the ack hook for backpressure. An `error`
16
+ * message or worker `error` rejects the iterator.
17
+ */
18
+ export declare function workerToIterable<R>(worker: MinimalWorker, onBatchConsumed: () => void): AsyncIterableIterator<R>;
19
+ /**
20
+ * Merge several async iterables, pulling from **all of them concurrently** and yielding each value as
21
+ * soon as it arrives (completion order, not source order). This is what lets every segment worker make
22
+ * progress at once: a sequential `for…yield*` drain would consume one worker to completion while the
23
+ * rest stall at their in-flight window. An error from any source rejects; remaining sources are
24
+ * returned (cancelled) on completion, error, or early break.
25
+ */
26
+ export declare function mergeAsyncIterators<R>(sources: Array<AsyncIterable<R>>): AsyncIterableIterator<R>;
27
+ export interface AsManyWorkersOptions {
28
+ /** Module path or URL exporting `handleRecord(bytes, ctx)`. Runs once per worker at import. */
29
+ worker: string | URL;
30
+ /** The record delimiter. @default LineFeed */
31
+ delimiter?: CharacterSequenceInput;
32
+ /** Desired number of segments/workers. Clamped to ≥ 1; fewer may run. */
33
+ concurrency: number;
34
+ /** Bytes read at each ideal boundary to find the next delimiter. @default 65536 */
35
+ probeSize?: number;
36
+ /** Results per message. @default 256 */
37
+ batchSize?: number;
38
+ /** Unacked batches per worker before it pauses (bounds memory). @default 8 */
39
+ maxInFlight?: number;
40
+ /** Forwarded to every worker via `workerData.userData`. */
41
+ workerData?: unknown;
42
+ }
43
+ /**
44
+ * Spawn one worker per delimiter-aligned segment, each running the `worker` handler module over its own handle, and
45
+ * merge their results into a single async iterator. Results interleave across segments. Sends an `ack` per consumed
46
+ * batch (backpressure); terminates all workers on completion, error, or early return.
47
+ */
48
+ export declare function runSegmentWorkers<R>(source: AsyncDataResource, options: AsManyWorkersOptions): AsyncIterableIterator<R>;
49
+ //# sourceMappingURL=segment-workers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-workers.d.ts","sourceRoot":"","sources":["../../lib/segment-workers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAa,MAAM,aAAa,CAAA;AAE/D,MAAM,WAAW,aAAa;IAC7B,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAA;IACtD,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CAClD;AAID;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,IAAI,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAmDhH;AAED;;;;;;GAMG;AACH,wBAAuB,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CA2BxG;AAED,MAAM,WAAW,oBAAoB;IACpC,+FAA+F;IAC/F,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;IACpB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,sBAAsB,CAAA;IAClC,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAuB,iBAAiB,CAAC,CAAC,EACzC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,oBAAoB,GAC3B,qBAAqB,CAAC,CAAC,CAAC,CA6C1B"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license MIT
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { Worker } from "node:worker_threads";
7
+ import { computeSegments } from "./segments.js";
8
+ /**
9
+ * Drain a worker's batched messages into an async iterator. Listeners attach **eagerly** (messages posted before
10
+ * iteration starts are buffered, not lost) and draining uses a `batches[] + head` pointer (no `Array.shift()`).
11
+ * `onBatchConsumed` fires once per batch after its records are yielded — the ack hook for backpressure. An `error`
12
+ * message or worker `error` rejects the iterator.
13
+ */
14
+ export function workerToIterable(worker, onBatchConsumed) {
15
+ const batches = [];
16
+ let head = 0;
17
+ let done = false;
18
+ let error;
19
+ let wake;
20
+ const signal = () => {
21
+ wake?.();
22
+ wake = undefined;
23
+ };
24
+ worker.on("message", (msg) => {
25
+ const m = msg;
26
+ if (m.type === "batch")
27
+ batches.push(m.records);
28
+ else if (m.type === "done")
29
+ done = true;
30
+ else if (m.type === "error") {
31
+ error = new Error(m.message);
32
+ done = true;
33
+ }
34
+ signal();
35
+ });
36
+ worker.on("error", (err) => {
37
+ error = err;
38
+ done = true;
39
+ signal();
40
+ });
41
+ async function* drain() {
42
+ for (;;) {
43
+ if (head < batches.length) {
44
+ const batch = batches[head++];
45
+ for (const record of batch)
46
+ yield record;
47
+ onBatchConsumed();
48
+ continue;
49
+ }
50
+ if (error)
51
+ throw error;
52
+ if (done)
53
+ return;
54
+ await new Promise((resolve) => (wake = resolve));
55
+ }
56
+ }
57
+ return drain();
58
+ }
59
+ /**
60
+ * Merge several async iterables, pulling from **all of them concurrently** and yielding each value as
61
+ * soon as it arrives (completion order, not source order). This is what lets every segment worker make
62
+ * progress at once: a sequential `for…yield*` drain would consume one worker to completion while the
63
+ * rest stall at their in-flight window. An error from any source rejects; remaining sources are
64
+ * returned (cancelled) on completion, error, or early break.
65
+ */
66
+ export async function* mergeAsyncIterators(sources) {
67
+ const advance = (it) => it.next().then((result) => ({ it, result }));
68
+ const pending = new Map();
69
+ for (const source of sources) {
70
+ const it = source[Symbol.asyncIterator]();
71
+ pending.set(it, advance(it));
72
+ }
73
+ try {
74
+ while (pending.size > 0) {
75
+ const { it, result } = await Promise.race(pending.values());
76
+ if (result.done) {
77
+ pending.delete(it);
78
+ }
79
+ else {
80
+ yield result.value;
81
+ pending.set(it, advance(it));
82
+ }
83
+ }
84
+ }
85
+ finally {
86
+ // Stop any iterators we didn't drain (early break / error). Swallow rejections from their
87
+ // in-flight `next()` so they don't surface as unhandled.
88
+ for (const promise of pending.values())
89
+ void promise.catch(() => { });
90
+ await Promise.allSettled(Array.from(pending.keys(), (it) => it.return?.()));
91
+ }
92
+ }
93
+ /**
94
+ * Spawn one worker per delimiter-aligned segment, each running the `worker` handler module over its own handle, and
95
+ * merge their results into a single async iterator. Results interleave across segments. Sends an `ack` per consumed
96
+ * batch (backpressure); terminates all workers on completion, error, or early return.
97
+ */
98
+ export async function* runSegmentWorkers(source, options) {
99
+ if (typeof source !== "string" && !(source instanceof URL)) {
100
+ throw new TypeError("asManyWorkers requires a file path or URL — file handles cannot cross threads.");
101
+ }
102
+ const handlerUrl = options.worker instanceof URL ? options.worker.href : new URL(options.worker, `file://${process.cwd()}/`).href;
103
+ const sourcePath = source instanceof URL ? source.href : source;
104
+ const segments = await computeSegments(source, {
105
+ delimiter: options.delimiter,
106
+ concurrency: options.concurrency,
107
+ probeSize: options.probeSize,
108
+ });
109
+ const workers = [];
110
+ const entryUrl = new URL("./segment-worker-entry.js", import.meta.url);
111
+ try {
112
+ const iterables = segments.map(([start, end], segmentIndex) => {
113
+ const worker = new Worker(entryUrl, {
114
+ workerData: {
115
+ source: sourcePath,
116
+ handlerUrl,
117
+ start,
118
+ end,
119
+ delimiter: options.delimiter ?? null,
120
+ segmentIndex,
121
+ batchSize: options.batchSize ?? 256,
122
+ maxInFlight: options.maxInFlight ?? 8,
123
+ userData: options.workerData,
124
+ },
125
+ });
126
+ workers.push(worker);
127
+ return workerToIterable(worker, () => worker.postMessage("ack"));
128
+ });
129
+ // Drain all workers concurrently so they run in parallel — a sequential drain would consume one
130
+ // to completion while the rest stall at their in-flight window. Order across segments is not
131
+ // guaranteed (results arrive in completion order).
132
+ yield* mergeAsyncIterators(iterables);
133
+ }
134
+ finally {
135
+ await Promise.all(workers.map((w) => w.terminate()));
136
+ }
137
+ }
138
+ //# sourceMappingURL=segment-workers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-workers.js","sourceRoot":"","sources":["../../lib/segment-workers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license MIT
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { type CharacterSequenceInput } from "./CharacterSequence.js";
7
+ import type { AsyncDataResource, ByteRange } from "./shared.js";
8
+ export interface SegmentOptions {
9
+ /** The record delimiter. @default LineFeed */
10
+ delimiter?: CharacterSequenceInput;
11
+ /** Desired number of segments. Clamped to ≥ 1; the result may be fewer. */
12
+ concurrency: number;
13
+ /** Bytes read at each ideal boundary to find the next delimiter. @default 65536 */
14
+ probeSize?: number;
15
+ }
16
+ /**
17
+ * Divide `source` into up to `concurrency` delimiter-aligned byte ranges. Each internal boundary is placed immediately
18
+ * after the first delimiter at or past the ideal cut, so concatenating each segment's records reproduces the file
19
+ * exactly — no record is split or duplicated.
20
+ *
21
+ * A probe window with no delimiter (a record longer than `probeSize`) collapses that boundary, so the result may have
22
+ * fewer than `concurrency` segments. An empty file yields no segments.
23
+ */
24
+ export declare function computeSegments(source: AsyncDataResource, options: SegmentOptions): Promise<ByteRange[]>;
25
+ //# sourceMappingURL=segments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../lib/segments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE/D,MAAM,WAAW,cAAc;IAC9B,8CAA8C;IAC9C,SAAS,CAAC,EAAE,sBAAsB,CAAA;IAClC,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA4C9G"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license MIT
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { CharacterSequence } from "./CharacterSequence.js";
7
+ /**
8
+ * Divide `source` into up to `concurrency` delimiter-aligned byte ranges. Each internal boundary is placed immediately
9
+ * after the first delimiter at or past the ideal cut, so concatenating each segment's records reproduces the file
10
+ * exactly — no record is split or duplicated.
11
+ *
12
+ * A probe window with no delimiter (a record longer than `probeSize`) collapses that boundary, so the result may have
13
+ * fewer than `concurrency` segments. An empty file yields no segments.
14
+ */
15
+ export async function computeSegments(source, options) {
16
+ const { readFileSize, readBytes } = await import("spliterator/node/fs");
17
+ const needle = new CharacterSequence(options.delimiter);
18
+ const probeSize = options.probeSize ?? 65536;
19
+ const concurrency = Math.max(1, Math.floor(options.concurrency));
20
+ const fileSize = await readFileSize(source);
21
+ if (fileSize === 0)
22
+ return [];
23
+ if (concurrency === 1)
24
+ return [[0, fileSize]];
25
+ const idealCuts = Array.from({ length: concurrency - 1 }, (_, i) => Math.round(((i + 1) * fileSize) / concurrency));
26
+ const alignedCuts = await Promise.all(idealCuts.map(async (cut) => {
27
+ if (cut <= 0 || cut >= fileSize)
28
+ return null;
29
+ const window = await readBytes(source, cut, probeSize);
30
+ const index = needle.search(window, 0, window.length);
31
+ if (index === -1)
32
+ return null;
33
+ return cut + index + needle.length;
34
+ }));
35
+ const boundaries = new Set([0, fileSize]);
36
+ for (const cut of alignedCuts) {
37
+ if (cut !== null && cut > 0 && cut < fileSize)
38
+ boundaries.add(cut);
39
+ }
40
+ const sorted = Array.from(boundaries).sort((a, b) => a - b);
41
+ const segments = [];
42
+ for (let i = 1; i < sorted.length; i++) {
43
+ const start = sorted[i - 1];
44
+ const end = sorted[i];
45
+ if (end > start)
46
+ segments.push([start, end]);
47
+ }
48
+ return segments;
49
+ }
50
+ //# sourceMappingURL=segments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segments.js","sourceRoot":"","sources":["../../lib/segments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAA+B,MAAM,wBAAwB,CAAA;AAYvF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAyB,EAAE,OAAuB;IACvF,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;IACvE,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;IAEhE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;IAE3C,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAE7B,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE7C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAA;IAEnH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAA;QAE5C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAErD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAE7B,OAAO,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,MAAM,CAAA;IACnC,CAAC,CAAC,CACF,CAAA;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEjD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,QAAQ;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3D,MAAM,QAAQ,GAAgB,EAAE,CAAA;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAA;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;QAEtB,IAAI,GAAG,GAAG,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO,QAAQ,CAAA;AAChB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright Sister Software
3
- * @license AGPL-3.0
3
+ * @license MIT
4
4
  * @author Teffen Ellis, et al.
5
5
  */
6
6
  import { type Stats } from "node:fs";
@@ -41,8 +41,7 @@ export declare function isFileHandleLike(input: unknown): input is FileHandleLik
41
41
  /**
42
42
  * Type-helper to determine the destination type for a typed array.
43
43
  *
44
- * This is useful to infer the ultimate return type of a function which optionally accepts a typed
45
- * array destination.
44
+ * This is useful to infer the ultimate return type of a function which optionally accepts a typed array destination.
46
45
  */
47
46
  export type TypedArrayFallback<T> = T extends TypedArray ? T : Uint8Array;
48
47
  /**
@@ -71,8 +70,8 @@ export interface ReadBytesOptions {
71
70
  /**
72
71
  * A trait for reading a range of bytes from a source.
73
72
  *
74
- * While possible with a variety of platform-specific APIs, this trait provides a common interface
75
- * for reading byte ranges.
73
+ * While possible with a variety of platform-specific APIs, this trait provides a common interface for reading byte
74
+ * ranges.
76
75
  */
77
76
  export interface ByteRangeReader extends AsyncIterator<Uint8Array> {
78
77
  /**
@@ -157,6 +156,7 @@ export declare function zippedEntries<T, U>(zipped: Zipped<T, U>): ZippedEntries
157
156
  *
158
157
  * @param a The first iterable to zip.
159
158
  * @param b The second iterable to zip.
159
+ *
160
160
  * @yields Pairs of elements from the two iterables.
161
161
  * @see {@linkcode zipAsync} for the asynchronous version.
162
162
  */
@@ -168,6 +168,7 @@ export declare function zipSync<T, U>(a: Iterable<T>, b: Iterable<U>): Generator
168
168
  *
169
169
  * @param a The first iterable to zip.
170
170
  * @param b The second iterable to zip.
171
+ *
171
172
  * @yields Pairs of elements from the two iterables.
172
173
  * @see {@linkcode zipSync} for the synchronous version.
173
174
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../lib/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../lib/shared.ts"],"names":[],"mappings":"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"}
package/out/lib/shared.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright Sister Software
3
- * @license AGPL-3.0
3
+ * @license MIT
4
4
  * @author Teffen Ellis, et al.
5
5
  */
6
6
  // eslint-disable-next-line no-restricted-imports
@@ -50,6 +50,7 @@ export function zippedEntries(zipped) {
50
50
  *
51
51
  * @param a The first iterable to zip.
52
52
  * @param b The second iterable to zip.
53
+ *
53
54
  * @yields Pairs of elements from the two iterables.
54
55
  * @see {@linkcode zipAsync} for the asynchronous version.
55
56
  */
@@ -74,6 +75,7 @@ export function* zipSync(a, b) {
74
75
  *
75
76
  * @param a The first iterable to zip.
76
77
  * @param b The second iterable to zip.
78
+ *
77
79
  * @yields Pairs of elements from the two iterables.
78
80
  * @see {@linkcode zipSync} for the synchronous version.
79
81
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../lib/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../lib/shared.ts"],"names":[],"mappings":"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"}
package/out/lib/take.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright Sister Software
3
- * @license AGPL-3.0
3
+ * @license MIT
4
4
  * @author Teffen Ellis, et al.
5
5
  */
6
6
  /**
@@ -11,14 +11,14 @@
11
11
  * @param collection The collection to batch.
12
12
  * @param batchSize The size of each batch.
13
13
  * @param callback The async callback to execute on each batch.
14
+ *
14
15
  * @yields The result of each callback execution
15
16
  */
16
17
  export declare function asyncParallelIterator<T, C extends (entry: T) => Promise<unknown>>(collection: Iterable<T> | AsyncIterable<T>, batchSize: number, callback: C, abortSignal?: AbortSignal): AsyncIterable<Awaited<ReturnType<C>>>;
17
18
  /**
18
19
  * Given an async iterable collection, returns an async iterable, yielding batches of items.
19
20
  *
20
- * This is useful for emitting asynchronous items in batches, such as when processing a stream of
21
- * data.
21
+ * This is useful for emitting asynchronous items in batches, such as when processing a stream of data.
22
22
  *
23
23
  * @yields Each batch of items.
24
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"take.d.ts","sourceRoot":"","sources":["../../lib/take.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;GASG;AACH,wBAAuB,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EACvF,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,EACX,WAAW,CAAC,EAAE,WAAW,GACvB,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAiDvC;AAED;;;;;;;GAOG;AACH,wBAAuB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAgBvG"}
1
+ {"version":3,"file":"take.d.ts","sourceRoot":"","sources":["../../lib/take.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,wBAAuB,qBAAqB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EACvF,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAC1C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,EACX,WAAW,CAAC,EAAE,WAAW,GACvB,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAiDvC;AAED;;;;;;GAMG;AACH,wBAAuB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAgBvG"}
package/out/lib/take.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright Sister Software
3
- * @license AGPL-3.0
3
+ * @license MIT
4
4
  * @author Teffen Ellis, et al.
5
5
  */
6
6
  /**
@@ -11,6 +11,7 @@
11
11
  * @param collection The collection to batch.
12
12
  * @param batchSize The size of each batch.
13
13
  * @param callback The async callback to execute on each batch.
14
+ *
14
15
  * @yields The result of each callback execution
15
16
  */
16
17
  export async function* asyncParallelIterator(collection, batchSize, callback, abortSignal) {
@@ -50,8 +51,7 @@ export async function* asyncParallelIterator(collection, batchSize, callback, ab
50
51
  /**
51
52
  * Given an async iterable collection, returns an async iterable, yielding batches of items.
52
53
  *
53
- * This is useful for emitting asynchronous items in batches, such as when processing a stream of
54
- * data.
54
+ * This is useful for emitting asynchronous items in batches, such as when processing a stream of data.
55
55
  *
56
56
  * @yields Each batch of items.
57
57
  */
@@ -1 +1 @@
1
- {"version":3,"file":"take.js","sourceRoot":"","sources":["../../lib/take.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC3C,UAA0C,EAC1C,SAAiB,EACjB,QAAW,EACX,WAAyB;IAEzB,MAAM,QAAQ,GACb,MAAM,CAAC,aAAa,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IAExG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAA;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;IAE3C,IAAI,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAE3C,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QACzE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACrC,MAAM,MAAM,CAAA;YAEZ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;YACzC,SAAQ;QACT,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;YAExC,MAAK;QACN,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAA;QAEnC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACpD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAE1B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAuB,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;QAErC,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;QAExC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACrC,MAAM,MAAM,CAAA;YAEZ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,CAAI,UAA4B,EAAE,SAAiB;IAClF,IAAI,MAAM,GAAQ,EAAE,CAAA;IAEpB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEjB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,CAAA;YAEZ,MAAM,GAAG,EAAE,CAAA;QACZ,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,CAAA;IACb,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"take.js","sourceRoot":"","sources":["../../lib/take.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC3C,UAA0C,EAC1C,SAAiB,EACjB,QAAW,EACX,WAAyB;IAEzB,MAAM,QAAQ,GACb,MAAM,CAAC,aAAa,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IAExG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAA;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;IAE3C,IAAI,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAE3C,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QACzE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACrC,MAAM,MAAM,CAAA;YAEZ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;YACzC,SAAQ;QACT,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC;YAC1B,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;YAExC,MAAK;QACN,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAA;QAEnC,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACpD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAE1B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAuB,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;QAErC,eAAe,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;QAExC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACrC,MAAM,MAAM,CAAA;YAEZ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,SAAS,CAAI,UAA4B,EAAE,SAAiB;IAClF,IAAI,MAAM,GAAQ,EAAE,CAAA;IAEpB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEjB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,CAAA;YAEZ,MAAM,GAAG,EAAE,CAAA;QACZ,CAAC;IACF,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,CAAA;IACb,CAAC;AACF,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license MIT
4
+ * @author Teffen Ellis, et al.
5
+ * Base64-encoded WASM module for SIMD-accelerated delimiter scanning.
6
+ * Generated by wasm/build.sh — do not edit by hand.
7
+ * The module exports:
8
+ * - memory: WebAssembly.Memory (1 page = 64KB initial, grows on demand, no fixed maximum)
9
+ * - find_delimiter(haystack_offset, haystack_len, pattern_offset, pattern_len) → i32
10
+ * Returns the byte offset of the first match, or -1.
11
+ * - find_all_delimiters(haystack_offset, haystack_len, pattern_offset, pattern_len,
12
+ * results_offset, max_results) → usize
13
+ * Writes (start, end) i32 pairs to results_offset, returns count.
14
+ */
15
+ export declare const WASM_BASE64 = "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";
16
+ //# sourceMappingURL=wasm_base64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_base64.d.ts","sourceRoot":"","sources":["../../lib/wasm_base64.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,ytEAC+rE,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license MIT
4
+ * @author Teffen Ellis, et al.
5
+ * Base64-encoded WASM module for SIMD-accelerated delimiter scanning.
6
+ * Generated by wasm/build.sh — do not edit by hand.
7
+ * The module exports:
8
+ * - memory: WebAssembly.Memory (1 page = 64KB initial, grows on demand, no fixed maximum)
9
+ * - find_delimiter(haystack_offset, haystack_len, pattern_offset, pattern_len) → i32
10
+ * Returns the byte offset of the first match, or -1.
11
+ * - find_all_delimiters(haystack_offset, haystack_len, pattern_offset, pattern_len,
12
+ * results_offset, max_results) → usize
13
+ * Writes (start, end) i32 pairs to results_offset, returns count.
14
+ */
15
+ export const WASM_BASE64 = "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";
16
+ //# sourceMappingURL=wasm_base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_base64.js","sourceRoot":"","sources":["../../lib/wasm_base64.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,WAAW,GACvB,stEAAstE,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license MIT
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ export declare function loadWasmModule(): Promise<WasmDelimiterScanner | null>;
7
+ type WasmFindDelimiter = (ho: number, hl: number, po: number, pl: number) => number;
8
+ type WasmFindAllDelimiters = (ho: number, hl: number, po: number, pl: number, ro: number, mr: number) => number;
9
+ type WasmFindAllMatches = (ho: number, hl: number, p1o: number, p1l: number, p2l: number, ro: number, mr: number) => number;
10
+ export interface WasmMemory {
11
+ readonly buffer: ArrayBuffer;
12
+ grow(pages: number): number;
13
+ }
14
+ export interface WasmDelimiterScanner {
15
+ memory: WasmMemory;
16
+ findDelimiter: WasmFindDelimiter;
17
+ findAllDelimiters: WasmFindAllDelimiters;
18
+ findAllMatches: WasmFindAllMatches;
19
+ }
20
+ /** Match result from find_all_matches: [offset, pattern_id]. */
21
+ export interface MatchResult {
22
+ /** Byte offset of the match within the haystack. */
23
+ offset: number;
24
+ /** 0 = pattern 1 (delimiter), 1 = pattern 2 (quote). */
25
+ patternId: number;
26
+ }
27
+ /**
28
+ * Minimum haystack size (bytes) at which the WASM SIMD scanner is used instead of the JS scan, once the module has
29
+ * loaded. Empirically WASM wins well below this — ~8x for single-byte `searchAll` and ~3x for multi-byte `search` at
30
+ * 512 bytes, with sub-µs fixed overhead — so 512 captures typical delimited rows while skipping only the tiny-buffer
31
+ * regime where it doesn't matter.
32
+ */
33
+ export declare const WASM_THRESHOLD = 512;
34
+ export declare const WASM_MAX_RESULTS = 4096;
35
+ export {};
36
+ //# sourceMappingURL=wasm_module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_module.d.ts","sourceRoot":"","sources":["../../lib/wasm_module.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,wBAAsB,cAAc,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAkB3E;AAED,KAAK,iBAAiB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;AAEnF,KAAK,qBAAqB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;AAE/G,KAAK,kBAAkB,GAAG,CACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,KACN,MAAM,CAAA;AAEX,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,UAAU,CAAA;IAClB,aAAa,EAAE,iBAAiB,CAAA;IAChC,iBAAiB,EAAE,qBAAqB,CAAA;IACxC,cAAc,EAAE,kBAAkB,CAAA;CAClC;AAED,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC3B,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAA;CACjB;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,MAAM,CAAA;AACjC,eAAO,MAAM,gBAAgB,OAAO,CAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @copyright Sister Software
3
+ * @license MIT
4
+ * @author Teffen Ellis, et al.
5
+ */
6
+ import { WASM_BASE64 } from "./wasm_base64.js";
7
+ export async function loadWasmModule() {
8
+ if (!WASM_BASE64)
9
+ return null;
10
+ try {
11
+ const bytes = Uint8Array.from(atob(WASM_BASE64), (c) => c.charCodeAt(0));
12
+ const module = await WebAssembly.compile(bytes);
13
+ const instance = await WebAssembly.instantiate(module, {});
14
+ const e = instance.exports;
15
+ const memory = e.memory;
16
+ const findDelimiter = e.find_delimiter;
17
+ const findAllDelimiters = e.find_all_delimiters;
18
+ const findAllMatches = e.find_all_matches;
19
+ return { memory, findDelimiter, findAllDelimiters, findAllMatches };
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ /**
26
+ * Minimum haystack size (bytes) at which the WASM SIMD scanner is used instead of the JS scan, once the module has
27
+ * loaded. Empirically WASM wins well below this — ~8x for single-byte `searchAll` and ~3x for multi-byte `search` at
28
+ * 512 bytes, with sub-µs fixed overhead — so 512 captures typical delimited rows while skipping only the tiny-buffer
29
+ * regime where it doesn't matter.
30
+ */
31
+ export const WASM_THRESHOLD = 512;
32
+ export const WASM_MAX_RESULTS = 4096;
33
+ //# sourceMappingURL=wasm_module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm_module.js","sourceRoot":"","sources":["../../lib/wasm_module.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAe9C,MAAM,CAAC,KAAK,UAAU,cAAc;IACnC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAA;IAE7B,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACxE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/C,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC1D,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAA;QAE1B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAoB,CAAA;QACrC,MAAM,aAAa,GAAG,CAAC,CAAC,cAAmC,CAAA;QAC3D,MAAM,iBAAiB,GAAG,CAAC,CAAC,mBAA4C,CAAA;QACxE,MAAM,cAAc,GAAG,CAAC,CAAC,gBAAsC,CAAA;QAE/D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAA;IACpE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;AACF,CAAC;AAoCD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAA"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright Sister Software
3
- * @license AGPL-3.0
3
+ * @license MIT
4
4
  * @author Teffen Ellis, et al.
5
5
  */
6
6
  import { type PathLike, WriteStream } from "node:fs";
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../lib/writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,KAAK,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEvE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC;;OAEG;IACH,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACrD;;;;OAIG;IACH,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,EAAE,WAAW,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAmCrE"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../lib/writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,KAAK,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEvE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC;;OAEG;IACH,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC;;OAEG;IACH,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACrD;;;;OAIG;IACH,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,EAAE,WAAW,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAqCrE"}
package/out/lib/writer.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @copyright Sister Software
3
- * @license AGPL-3.0
3
+ * @license MIT
4
4
  * @author Teffen Ellis, et al.
5
5
  */
6
6
  import { createWriteStream, WriteStream } from "node:fs";
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../lib/writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAA;AA2BvE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACrD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAE1C,MAAM,KAAK,GAAsB,CAAC,OAAO,EAAE,EAAE;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvC,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAA;oBACb,OAAM;gBACP,CAAC;gBAED,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACpB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAA;oBACb,OAAM;gBACP,CAAC;gBAED,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC,CAAA;IAED,OAAO;QACN,KAAK;QACL,MAAM;QACN,OAAO;QACP,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO;KAC9B,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../lib/writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAA;AA2BvE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAkB;IACrD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAE1C,MAAM,KAAK,GAAsB,CAAC,OAAO,EAAE,EAAE;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvC,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAA;oBAEb,OAAM;gBACP,CAAC;gBAED,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACpB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAA;oBAEb,OAAM;gBACP,CAAC;gBAED,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;IACH,CAAC,CAAA;IAED,OAAO;QACN,KAAK;QACL,MAAM;QACN,OAAO;QACP,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO;KAC9B,CAAA;AACF,CAAC"}