spliterator 1.7.0 → 2.0.0
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/out/lib/AsyncSpliterator.d.ts +0 -18
- package/out/lib/AsyncSpliterator.d.ts.map +1 -1
- package/out/lib/AsyncSpliterator.js +41 -319
- package/out/lib/AsyncSpliterator.js.map +1 -1
- package/out/lib/BufferController.d.ts +10 -7
- package/out/lib/BufferController.d.ts.map +1 -1
- package/out/lib/BufferController.js +15 -12
- package/out/lib/BufferController.js.map +1 -1
- package/out/lib/CSVSpliterator.js +6 -6
- package/out/lib/CSVSpliterator.js.map +1 -1
- package/out/lib/CharacterSequence.d.ts +1 -1
- package/out/lib/CharacterSequence.d.ts.map +1 -1
- package/out/lib/CharacterSequence.js +5 -12
- package/out/lib/CharacterSequence.js.map +1 -1
- package/out/lib/IndexQueue.d.ts +0 -13
- package/out/lib/IndexQueue.d.ts.map +1 -1
- package/out/lib/IndexQueue.js +10 -53
- package/out/lib/IndexQueue.js.map +1 -1
- package/out/lib/SlidingWindow.d.ts.map +1 -1
- package/out/lib/SlidingWindow.js +8 -4
- package/out/lib/SlidingWindow.js.map +1 -1
- package/out/lib/Spliterator.d.ts +0 -8
- package/out/lib/Spliterator.d.ts.map +1 -1
- package/out/lib/Spliterator.js +0 -19
- package/out/lib/Spliterator.js.map +1 -1
- package/out/node/fs/index.d.ts +1 -18
- package/out/node/fs/index.d.ts.map +1 -1
- package/out/node/fs/index.js +1 -28
- package/out/node/fs/index.js.map +1 -1
- package/package.json +33 -28
|
@@ -203,24 +203,6 @@ export declare class AsyncSpliterator<R extends DataView | ArrayBuffer = Uint8Ar
|
|
|
203
203
|
* @returns An array of `AsyncSpliterator` instances, possibly less than the desired concurrency.
|
|
204
204
|
* @internal
|
|
205
205
|
*/
|
|
206
|
-
/**
|
|
207
|
-
* Like {@linkcode asMany}, but each segment runs inside a dedicated `worker_thread`, giving each
|
|
208
|
-
* its own JS engine and event loop.
|
|
209
|
-
*
|
|
210
|
-
* This means `#search()` and any per-record CPU work done inside the worker run in true OS-level
|
|
211
|
-
* parallelism — a synchronous block on the main thread cannot stall the workers.
|
|
212
|
-
*
|
|
213
|
-
* @param source - The file to read from. Must be a path string or URL (workers open the file
|
|
214
|
-
* independently and cannot share a file handle with the main thread).
|
|
215
|
-
* @param delimiter - The character to delimit by. Typically a newline or comma.
|
|
216
|
-
* @param concurrency - The _desired_ number of worker threads to spawn.
|
|
217
|
-
*
|
|
218
|
-
* @returns An array of async iterables, one per worker, yielding `Uint8Array` chunks. The
|
|
219
|
-
* iterables cover non-overlapping, delimiter-aligned byte ranges and can be consumed in
|
|
220
|
-
* parallel.
|
|
221
|
-
* @internal
|
|
222
|
-
*/
|
|
223
|
-
static asManyWorkers(source: AsyncDataResource, delimiter: CharacterSequenceInput, concurrency: number): Promise<AsyncIterable<Uint8Array>[]>;
|
|
224
206
|
static asMany(source: AsyncDataResource, delimiter: CharacterSequenceInput, concurrency: number): Promise<AsyncSpliterator[]>;
|
|
225
207
|
}
|
|
226
208
|
//# sourceMappingURL=AsyncSpliterator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncSpliterator.d.ts","sourceRoot":"","sources":["../../lib/AsyncSpliterator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEpF,OAAO,EAAqB,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAElF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAkB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"AsyncSpliterator.d.ts","sourceRoot":"","sources":["../../lib/AsyncSpliterator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEpF,OAAO,EAAqB,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAElF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAkB,MAAM,aAAa,CAAA;AAInF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAA;IAElC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC5D;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,QAAQ,GAAG,WAAW,GAAG,UAAU,CAC1E,YAAW,qBAAqB,CAAC,CAAC,CAAC,EAAE,eAAe;;IAIpD;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,gBAAgB;IACtF;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC9F;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CACV,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,EAC9C,IAAI,CAAC,EAAE,oBAAoB,GACzB,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkB/C;;OAEG;IACU,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IASnD;;OAEG;WACW,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAAC,kBAAkB,EAAE,UAAU,CAAC;IAYvG;;;;;;OAMG;gBACS,MAAM,EAAE,kBAAkB,EAAE,IAAI,GAAE,oBAAyB;IA8O1D,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IA4C/C;;;;OAIG;IACI,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAI9B;;;;OAIG;IACI,cAAc,CAAC,OAAO,6BAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrE;;;;;;OAMG;IACI,gBAAgB,IAAI,cAAc,CAAC,CAAC,CAAC;IAiB5C;;;;;;;;;;OAUG;IACI,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC,CAAC,CAAC;IAI5G;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAQzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;WACiB,MAAM,CACzB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,sBAAsB,EACjC,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAqB9B"}
|
|
@@ -8,210 +8,6 @@ import { BufferController } from "./BufferController.js";
|
|
|
8
8
|
import { CharacterSequence } from "./CharacterSequence.js";
|
|
9
9
|
import { IndexQueue } from "./IndexQueue.js";
|
|
10
10
|
const noop = () => void 0;
|
|
11
|
-
// ---------------------------------------------------------------------------
|
|
12
|
-
// Worker-based parallelism helpers
|
|
13
|
-
// ---------------------------------------------------------------------------
|
|
14
|
-
/**
|
|
15
|
-
* Inline CJS worker script for a reusable pooled segment reader.
|
|
16
|
-
*
|
|
17
|
-
* The worker stays alive between assignments, listening for `postMessage` work
|
|
18
|
-
* packets. Each packet contains `{ sourcePath, byteStart, byteEnd, delimiter }`.
|
|
19
|
-
* The worker scans its byte range, collects all records, transfers them as a
|
|
20
|
-
* single `Uint8Array[]` batch, and posts a `null` sentinel — then returns to
|
|
21
|
-
* idle, ready for the next assignment.
|
|
22
|
-
*
|
|
23
|
-
* Batching keeps post-block drain time constant (4 messages regardless of
|
|
24
|
-
* record count). Keeping workers alive amortises the ~100–300 ms V8 bootstrap
|
|
25
|
-
* cost across repeated `asManyWorkers` calls.
|
|
26
|
-
*/
|
|
27
|
-
const POOL_WORKER_CODE = /* javascript */ `
|
|
28
|
-
const { parentPort } = require('worker_threads')
|
|
29
|
-
const { open } = require('fs/promises')
|
|
30
|
-
|
|
31
|
-
function findDelimiter(buf, start, delimArr, delimLen) {
|
|
32
|
-
if (delimLen === 1) {
|
|
33
|
-
const idx = buf.indexOf(delimArr[0], start)
|
|
34
|
-
return idx === -1 ? -1 : idx
|
|
35
|
-
}
|
|
36
|
-
outer: for (let i = start; i <= buf.length - delimLen; i++) {
|
|
37
|
-
for (let j = 0; j < delimLen; j++) {
|
|
38
|
-
if (buf[i + j] !== delimArr[j]) continue outer
|
|
39
|
-
}
|
|
40
|
-
return i
|
|
41
|
-
}
|
|
42
|
-
return -1
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
async function processSegment({ sourcePath, byteStart, byteEnd, delimiter }) {
|
|
46
|
-
const delimArr = Uint8Array.from(delimiter)
|
|
47
|
-
const delimLen = delimArr.length
|
|
48
|
-
const handle = await open(sourcePath, 'r')
|
|
49
|
-
const stream = handle.createReadStream({ start: byteStart, end: byteEnd, highWaterMark: 65536, autoClose: true })
|
|
50
|
-
|
|
51
|
-
const records = []
|
|
52
|
-
let tail = new Uint8Array(0)
|
|
53
|
-
|
|
54
|
-
for await (const rawChunk of stream) {
|
|
55
|
-
const chunk = new Uint8Array(rawChunk.buffer, rawChunk.byteOffset, rawChunk.byteLength)
|
|
56
|
-
const combined = new Uint8Array(tail.length + chunk.length)
|
|
57
|
-
combined.set(tail, 0)
|
|
58
|
-
combined.set(chunk, tail.length)
|
|
59
|
-
|
|
60
|
-
let searchStart = 0
|
|
61
|
-
while (true) {
|
|
62
|
-
const idx = findDelimiter(combined, searchStart, delimArr, delimLen)
|
|
63
|
-
if (idx === -1) break
|
|
64
|
-
const record = combined.slice(searchStart, idx)
|
|
65
|
-
if (record.length > 0) records.push(record)
|
|
66
|
-
searchStart = idx + delimLen
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
tail = combined.slice(searchStart)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (tail.length > 0) records.push(tail)
|
|
73
|
-
return records
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
parentPort.on('message', async (assignment) => {
|
|
77
|
-
try {
|
|
78
|
-
const records = await processSegment(assignment)
|
|
79
|
-
parentPort.postMessage(records, records.map(r => r.buffer))
|
|
80
|
-
parentPort.postMessage(null)
|
|
81
|
-
} catch (err) {
|
|
82
|
-
parentPort.postMessage({ error: err.message || String(err) })
|
|
83
|
-
}
|
|
84
|
-
})
|
|
85
|
-
`;
|
|
86
|
-
/**
|
|
87
|
-
* A fixed-capacity pool of reusable worker threads.
|
|
88
|
-
*
|
|
89
|
-
* Workers are created on first demand and returned to the available queue when a
|
|
90
|
-
* segment completes naturally. Workers that are terminated early (consumer break /
|
|
91
|
-
* error) are discarded and a fresh worker takes the pool slot on the next acquire.
|
|
92
|
-
*/
|
|
93
|
-
class WorkerPool {
|
|
94
|
-
#available = [];
|
|
95
|
-
#maxSize;
|
|
96
|
-
constructor(maxSize) {
|
|
97
|
-
this.#maxSize = maxSize;
|
|
98
|
-
}
|
|
99
|
-
acquire(WorkerCtor) {
|
|
100
|
-
return this.#available.pop() ?? new WorkerCtor(POOL_WORKER_CODE, { eval: true });
|
|
101
|
-
}
|
|
102
|
-
release(worker, reusable) {
|
|
103
|
-
if (reusable && this.#available.length < this.#maxSize) {
|
|
104
|
-
this.#available.push(worker);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
worker.terminate();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/** Lazily initialised shared worker pool, sized to the logical CPU count. */
|
|
112
|
-
let _workerPool = null;
|
|
113
|
-
/**
|
|
114
|
-
* Compute delimiter-aligned segment boundaries for a file.
|
|
115
|
-
*
|
|
116
|
-
* All boundary probes are issued in parallel — each is an independent random-access
|
|
117
|
-
* read — so the pre-scan phase costs one libuv round-trip regardless of concurrency.
|
|
118
|
-
*
|
|
119
|
-
* @returns A sorted array of byte offsets `[0, b1, b2, …, fileSize]` where each
|
|
120
|
-
* consecutive pair `[boundaries[i], boundaries[i+1])` defines a half-open segment.
|
|
121
|
-
*/
|
|
122
|
-
async function computeBoundaries(source, needle, fileSize, concurrency, readBytes) {
|
|
123
|
-
const segmentSize = Math.ceil(fileSize / concurrency);
|
|
124
|
-
const searchWindowSize = Math.max(needle.length * 64, 4096);
|
|
125
|
-
const idealBoundaries = Array.from({ length: concurrency - 1 }, (_, i) => (i + 1) * segmentSize).filter((b) => b < fileSize);
|
|
126
|
-
const snapped = await Promise.all(idealBoundaries.map(async (idealBoundary) => {
|
|
127
|
-
const window = await readBytes(source, idealBoundary, Math.min(searchWindowSize, fileSize - idealBoundary));
|
|
128
|
-
const idx = needle.search(window);
|
|
129
|
-
return idx === -1 ? idealBoundary : idealBoundary + idx + needle.length;
|
|
130
|
-
}));
|
|
131
|
-
return [0, ...snapped, fileSize];
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Wraps a pooled worker in an `AsyncIterable<Uint8Array>`.
|
|
135
|
-
*
|
|
136
|
-
* - Sends the segment assignment immediately on construction.
|
|
137
|
-
* - Attaches listeners eagerly so no messages are lost during sequential consumption.
|
|
138
|
-
* - Uses a `chunks[]` + `head` pointer (O(1) access) rather than `Array.shift()` (O(n)).
|
|
139
|
-
* - Removes listeners and calls `onRelease` when the iterable is fully consumed or abandoned,
|
|
140
|
-
* so the worker can be returned to the pool for reuse.
|
|
141
|
-
*/
|
|
142
|
-
function workerToIterable(worker, assignment, onRelease) {
|
|
143
|
-
worker.postMessage(assignment);
|
|
144
|
-
const chunks = [];
|
|
145
|
-
let head = 0;
|
|
146
|
-
let done = false;
|
|
147
|
-
let error = null;
|
|
148
|
-
let signal = null;
|
|
149
|
-
let released = false;
|
|
150
|
-
function notify() {
|
|
151
|
-
if (signal) {
|
|
152
|
-
const fn = signal;
|
|
153
|
-
signal = null;
|
|
154
|
-
fn();
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
const onMessage = (msg) => {
|
|
158
|
-
if (msg === null) {
|
|
159
|
-
done = true;
|
|
160
|
-
notify();
|
|
161
|
-
}
|
|
162
|
-
else if (Array.isArray(msg)) {
|
|
163
|
-
for (const chunk of msg)
|
|
164
|
-
chunks.push(chunk);
|
|
165
|
-
notify();
|
|
166
|
-
}
|
|
167
|
-
else if (msg && typeof msg === "object" && "error" in msg) {
|
|
168
|
-
error = new Error(msg.error);
|
|
169
|
-
notify();
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
const onError = (err) => {
|
|
173
|
-
error = err;
|
|
174
|
-
notify();
|
|
175
|
-
};
|
|
176
|
-
worker.on("message", onMessage);
|
|
177
|
-
worker.on("error", onError);
|
|
178
|
-
function release(reusable) {
|
|
179
|
-
if (released)
|
|
180
|
-
return;
|
|
181
|
-
released = true;
|
|
182
|
-
worker.off("message", onMessage);
|
|
183
|
-
worker.off("error", onError);
|
|
184
|
-
onRelease(worker, reusable);
|
|
185
|
-
}
|
|
186
|
-
return {
|
|
187
|
-
[Symbol.asyncIterator]() {
|
|
188
|
-
return {
|
|
189
|
-
async next() {
|
|
190
|
-
while (head >= chunks.length && !done && !error) {
|
|
191
|
-
await new Promise((res) => {
|
|
192
|
-
signal = res;
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
if (error) {
|
|
196
|
-
release(false);
|
|
197
|
-
throw error;
|
|
198
|
-
}
|
|
199
|
-
if (head < chunks.length)
|
|
200
|
-
return { done: false, value: chunks[head++] };
|
|
201
|
-
release(true); // natural completion — worker is idle and reusable
|
|
202
|
-
return { done: true, value: undefined };
|
|
203
|
-
},
|
|
204
|
-
async return() {
|
|
205
|
-
release(done); // reusable only if already naturally done
|
|
206
|
-
return { done: true, value: undefined };
|
|
207
|
-
},
|
|
208
|
-
[Symbol.asyncIterator]() {
|
|
209
|
-
return this;
|
|
210
|
-
},
|
|
211
|
-
};
|
|
212
|
-
},
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
11
|
/**
|
|
216
12
|
* An asynchronous spliterator for reading delimited byte streams.
|
|
217
13
|
*
|
|
@@ -368,18 +164,17 @@ export class AsyncSpliterator {
|
|
|
368
164
|
#log;
|
|
369
165
|
/**
|
|
370
166
|
* Find and enqueue delimiter positions.
|
|
167
|
+
*
|
|
168
|
+
* The search is bounded by `bytesWritten` so we never scan into uninitialized buffer memory and
|
|
169
|
+
* never enqueue ranges whose `end` exceeds the valid byte length.
|
|
371
170
|
*/
|
|
372
171
|
#search() {
|
|
373
172
|
const lastByteRange = this.#indices.peekLast();
|
|
374
173
|
let searchCursor = lastByteRange ? lastByteRange[1] + this.#needle.length : 0;
|
|
375
|
-
|
|
376
|
-
|
|
174
|
+
const searchEnd = this.#controller.bytesWritten;
|
|
175
|
+
while (searchCursor <= searchEnd) {
|
|
176
|
+
const delimiterIndex = this.#needle.search(this.#controller.bytes, searchCursor, searchEnd);
|
|
377
177
|
if (delimiterIndex === -1) {
|
|
378
|
-
// if (this.#lastReadResult?.done) {
|
|
379
|
-
// this.#log("Reached end of file. No more delimiters found.")
|
|
380
|
-
// this.#indices.enqueue([searchCursor, this.#controller.bytesWritten])
|
|
381
|
-
// break
|
|
382
|
-
// }
|
|
383
178
|
this.#log(`No viable byte range found in buffer. Breaking.`, { searchCursor });
|
|
384
179
|
break;
|
|
385
180
|
}
|
|
@@ -404,44 +199,32 @@ export class AsyncSpliterator {
|
|
|
404
199
|
async #fill() {
|
|
405
200
|
if (this.#lastReadResult?.done) {
|
|
406
201
|
this.#log("Reached end of file. Preparing to finalize.");
|
|
407
|
-
//
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
this.#controller.bytesWritten,
|
|
420
|
-
]);
|
|
421
|
-
// We found a delimiter at the end of the file, so we enqueue the byte range.
|
|
422
|
-
this.#indices.enqueue([possibleDelimiterIndex + this.#needle.length, this.#controller.bytesWritten]);
|
|
423
|
-
}
|
|
424
|
-
else {
|
|
425
|
-
this.#log("Inserted byte range at the last byte", [lastByteIndex, this.#controller.bytesWritten]);
|
|
426
|
-
// The file didn't end with a delimiter, so we just enqueue the last byte range.
|
|
427
|
-
this.#indices.enqueue([lastByteIndex + this.#needle.length, this.#controller.bytesWritten]);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
else {
|
|
431
|
-
this.#log(`Weird situation. We're at the end of the file, but the last byte range ${lastByteIndex} is greater than the buffer length ${this.#controller.bytesWritten}.`);
|
|
432
|
-
}
|
|
202
|
+
// Enqueue a final slice covering the bytes between the last yielded delimiter and the
|
|
203
|
+
// end of the stream. The slice may be empty (when the stream ends exactly on a
|
|
204
|
+
// delimiter, or when the file is empty); we still enqueue it so that callers with
|
|
205
|
+
// `skipEmpty: false` see the trailing entry produced by `String.prototype.split`.
|
|
206
|
+
const tailStart = this.#lastByteRangeSeen ? this.#lastByteRangeSeen[1] + this.#needle.length : 0;
|
|
207
|
+
const tailEnd = this.#controller.bytesWritten;
|
|
208
|
+
if (tailStart <= tailEnd) {
|
|
209
|
+
this.#log("Inserted trailing byte range", [tailStart, tailEnd]);
|
|
210
|
+
this.#indices.enqueue([tailStart, tailEnd]);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
this.#log("Skipped trailing range — start beyond end", { tailStart, tailEnd });
|
|
433
214
|
}
|
|
434
215
|
this.#done = true;
|
|
435
216
|
return;
|
|
436
217
|
}
|
|
437
|
-
//
|
|
438
|
-
//
|
|
439
|
-
// be a no-op copyWithin(0, 0, bytesWritten) that copies bytes onto themselves.
|
|
218
|
+
// We're effectively done with that window of the buffer.
|
|
219
|
+
// So we can compress it to save memory.
|
|
440
220
|
const nextBufferStart = this.#lastByteRangeSeen ? this.#lastByteRangeSeen[1] + this.#needle.length : 0;
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
221
|
+
this.#log("Compressing buffer", { nextBufferStart });
|
|
222
|
+
this.#controller.compress(nextBufferStart);
|
|
223
|
+
// After compress, the buffer coordinate space has shifted. The cached `lastByteRangeSeen`
|
|
224
|
+
// refers to the *previous* coordinate space, so clear it — subsequent ranges enqueued by
|
|
225
|
+
// `#search` are relative to the freshly-compressed buffer (and `#search` starts at 0 when
|
|
226
|
+
// the indices queue is empty, which it is here by `next()`'s precondition).
|
|
227
|
+
this.#lastByteRangeSeen = undefined;
|
|
445
228
|
while ((!this.#lastReadResult || !this.#lastReadResult.done) && this.#indices.byteLength < this.#highWaterMark) {
|
|
446
229
|
await this.#read();
|
|
447
230
|
this.#search();
|
|
@@ -476,10 +259,11 @@ export class AsyncSpliterator {
|
|
|
476
259
|
if (this.#indices.size === 0) {
|
|
477
260
|
await this.#fill();
|
|
478
261
|
}
|
|
479
|
-
|
|
262
|
+
// The first `#fill` may have read into EOF without entering the EOF branch (the branch only
|
|
263
|
+
// triggers when fill is called with `done` already set). In that case the trailing tail
|
|
264
|
+
// hasn't been enqueued yet, so call fill once more to let the EOF branch flush it.
|
|
265
|
+
if (this.#lastReadResult?.done && this.#indices.size === 0 && !this.#done) {
|
|
480
266
|
await this.#fill();
|
|
481
|
-
// We didn't find any delimiters in the file, so we just enqueue the whole buffer.
|
|
482
|
-
this.#indices.enqueue([0, this.#controller.bytesWritten]);
|
|
483
267
|
}
|
|
484
268
|
const currentByteRange = this.#indices.dequeue();
|
|
485
269
|
this.#lastByteRangeSeen = currentByteRange;
|
|
@@ -599,82 +383,20 @@ export class AsyncSpliterator {
|
|
|
599
383
|
* @returns An array of `AsyncSpliterator` instances, possibly less than the desired concurrency.
|
|
600
384
|
* @internal
|
|
601
385
|
*/
|
|
602
|
-
/**
|
|
603
|
-
* Like {@linkcode asMany}, but each segment runs inside a dedicated `worker_thread`, giving each
|
|
604
|
-
* its own JS engine and event loop.
|
|
605
|
-
*
|
|
606
|
-
* This means `#search()` and any per-record CPU work done inside the worker run in true OS-level
|
|
607
|
-
* parallelism — a synchronous block on the main thread cannot stall the workers.
|
|
608
|
-
*
|
|
609
|
-
* @param source - The file to read from. Must be a path string or URL (workers open the file
|
|
610
|
-
* independently and cannot share a file handle with the main thread).
|
|
611
|
-
* @param delimiter - The character to delimit by. Typically a newline or comma.
|
|
612
|
-
* @param concurrency - The _desired_ number of worker threads to spawn.
|
|
613
|
-
*
|
|
614
|
-
* @returns An array of async iterables, one per worker, yielding `Uint8Array` chunks. The
|
|
615
|
-
* iterables cover non-overlapping, delimiter-aligned byte ranges and can be consumed in
|
|
616
|
-
* parallel.
|
|
617
|
-
* @internal
|
|
618
|
-
*/
|
|
619
|
-
static async asManyWorkers(source, delimiter, concurrency) {
|
|
620
|
-
concurrency = Math.max(1, concurrency);
|
|
621
|
-
const needle = new CharacterSequence(delimiter);
|
|
622
|
-
// Resolve to an absolute path before spawning — workers open the file independently.
|
|
623
|
-
let sourcePath;
|
|
624
|
-
if (source instanceof URL) {
|
|
625
|
-
const { fileURLToPath } = await import("node:url");
|
|
626
|
-
sourcePath = fileURLToPath(source);
|
|
627
|
-
}
|
|
628
|
-
else if (typeof source === "string") {
|
|
629
|
-
const { resolve } = await import("node:path");
|
|
630
|
-
sourcePath = resolve(source);
|
|
631
|
-
}
|
|
632
|
-
else {
|
|
633
|
-
throw new TypeError("asManyWorkers requires a path string or URL, not a file handle.");
|
|
634
|
-
}
|
|
635
|
-
const { readFileSize, readBytes } = await import("spliterator/node/fs");
|
|
636
|
-
const fileSize = await readFileSize(source);
|
|
637
|
-
if (fileSize === 0)
|
|
638
|
-
return [];
|
|
639
|
-
// All boundary probes fire in parallel — one libuv round-trip total.
|
|
640
|
-
const boundaries = await computeBoundaries(source, needle, fileSize, concurrency, readBytes);
|
|
641
|
-
const { Worker } = await import("node:worker_threads");
|
|
642
|
-
const { cpus } = await import("node:os");
|
|
643
|
-
if (!_workerPool)
|
|
644
|
-
_workerPool = new WorkerPool(cpus().length);
|
|
645
|
-
const delimiterBytes = Array.from(needle);
|
|
646
|
-
const iterables = [];
|
|
647
|
-
for (let i = 0; i < boundaries.length - 1; i++) {
|
|
648
|
-
const byteStart = boundaries[i];
|
|
649
|
-
const byteEnd = boundaries[i + 1] - 1; // inclusive end for createReadStream
|
|
650
|
-
if (byteStart > byteEnd)
|
|
651
|
-
continue;
|
|
652
|
-
const worker = _workerPool.acquire(Worker);
|
|
653
|
-
iterables.push(workerToIterable(worker, { sourcePath, byteStart, byteEnd, delimiter: delimiterBytes }, (w, reusable) => _workerPool.release(w, reusable)));
|
|
654
|
-
}
|
|
655
|
-
return iterables;
|
|
656
|
-
}
|
|
657
386
|
static async asMany(source, delimiter, concurrency) {
|
|
387
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
658
388
|
concurrency = Math.max(1, concurrency);
|
|
659
389
|
const needle = new CharacterSequence(delimiter);
|
|
660
|
-
const
|
|
390
|
+
const spliterators = [];
|
|
391
|
+
const { createChunkIterator, readFileSize } = await import("spliterator/node/fs");
|
|
661
392
|
const fileSize = await readFileSize(source);
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
//
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
const end = boundaries[i + 1];
|
|
670
|
-
if (start >= end)
|
|
671
|
-
return null;
|
|
672
|
-
const chunkIterator = await createChunkIterator(source, {
|
|
673
|
-
start,
|
|
674
|
-
end: end - 1, // Node.js createReadStream end is inclusive
|
|
675
|
-
});
|
|
676
|
-
return new AsyncSpliterator(chunkIterator, { delimiter });
|
|
677
|
-
}))).filter((s) => s !== null);
|
|
393
|
+
// const file = createChunkIterator(source, {
|
|
394
|
+
// start: 0,
|
|
395
|
+
// })
|
|
396
|
+
// The idea here is we're going to split the file into `concurrency` chunks.
|
|
397
|
+
if (Date.now()) {
|
|
398
|
+
throw new Error("Not implemented.");
|
|
399
|
+
}
|
|
678
400
|
return spliterators;
|
|
679
401
|
}
|
|
680
402
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncSpliterator.js","sourceRoot":"","sources":["../../lib/AsyncSpliterator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AsyncSpliterator.js","sourceRoot":"","sources":["../../lib/AsyncSpliterator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAA2C,MAAM,YAAY,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AA2EzB;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,gBAAgB;IAmC5B,MAAM,CAAC,IAAI,CACV,MAA8C,EAC9C,OAA6B,EAAE;QAE/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC;YAClE,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;YAC3E,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE;gBACvD,aAAa,EAAE,IAAI,CAAC,aAAa;aACjC,CAAC,CAAA;YAEF,OAAO,IAAI,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QAExB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,CAAA;QAC5C,CAAC;IACF,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAAC,IAAqB;QACpD,OAAO,IAAI,eAAe,CAAiC;YAC1D,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU;gBAChC,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBAEtD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;oBACvC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC1B,CAAC;YACF,CAAC;SACD,CAAC,CAAA;IACH,CAAC;IAED;;;;;;OAMG;IACH,YAAY,MAA0B,EAAE,OAA6B,EAAE;QACtE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;QAElD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAA;QAE7C,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEpD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;QAExF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAA;QAEhF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAA;QAExC,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC;YACvC,iBAAiB,EAAE,IAAI,CAAC,cAAc;SACtC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAA;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,CAAC;IAED,YAAY;IAEZ,4BAA4B;IAE5B;;OAEG;IACM,YAAY,CAAS;IAE9B;;OAEG;IACM,OAAO,CAAoB;IAEpC;;OAEG;IACM,YAAY,CAA2B;IAEhD;;OAEG;IACH,eAAe,CAAwC;IAEvD;;;;;;;OAOG;IACM,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAA;IAEpC;;OAEG;IACM,OAAO,CAAmB;IAEnC;;;OAGG;IACM,WAAW,CAAkB;IAEtC;;OAEG;IACM,eAAe,CAAQ;IAEhC;;OAEG;IACM,eAAe,CAAQ;IAEhC;;OAEG;IACM,UAAU,CAAS;IAE5B;;;;;OAKG;IACM,cAAc,CAAQ;IAE/B;;OAEG;IACH,kBAAkB,GAAG,CAAC,CAAA;IAEtB;;OAEG;IACH,WAAW,GAAG,CAAC,CAAA;IAEf,MAAM;IACN,6DAA6D;IAC7D,MAAM;IACN,wBAAwB;IAExB;;OAEG;IACH,kBAAkB,CAAuB;IAEzC;;OAEG;IACH,MAAM,CAAS;IAEf;;OAEG;IACH,KAAK,GAAG,KAAK,CAAA;IAEb,YAAY;IAEZ,yBAAyB;IAEzB,IAAI,CAA0B;IAE9B;;;;;OAKG;IACH,OAAO;QACN,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAC9C,IAAI,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAA;QAE/C,OAAO,YAAY,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;YAE3F,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,iDAAiD,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;gBAC9E,MAAK;YACN,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAA;YAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAA;YAErD,YAAY,GAAG,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QACpD,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACV,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;QAErD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI;YAAE,OAAM;QAErC,kCAAkC;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;IAChF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACV,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;YACxD,sFAAsF;YACtF,+EAA+E;YAC/E,kFAAkF;YAClF,kFAAkF;YAClF,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAChG,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAA;YAE7C,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;gBAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;YAC5C,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;YAC/E,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YAEjB,OAAM;QACP,CAAC;QAED,yDAAyD;QACzD,wCAAwC;QACxC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAEtG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;QAE1C,0FAA0F;QAC1F,yFAAyF;QACzF,0FAA0F;QAC1F,4EAA4E;QAC5E,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;QAEnC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAChH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,IAAI,CAAC,OAAO,EAAE,CAAA;QACf,CAAC;IACF,CAAC;IAED,KAAK,CAAC,SAAS;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB;;;eAGG;YACH,MAAM,6BAA6B,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;YAElF,IAAI,CAAC,IAAI,CAAC;gBACT,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;gBAC1C,UAAU,EAAE,IAAI,CAAC,WAAW;gBAC5B,6BAA6B;aAC7B,CAAC,CAAA;QACH,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,CAAA;QAC5C,CAAC;QAED,OAAO;YACN,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,SAAS;SAChB,CAAA;IACF,CAAC;IAED,YAAY;IAEZ,0BAA0B;IAEnB,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;QAEnF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC;QAED,4FAA4F;QAC5F,wFAAwF;QACxF,mFAAmF;QACnF,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3E,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QAChD,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAA;QAE1C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;QACxB,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAAA;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAEnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,kBAAkB,IAAI,GAAG,GAAG,KAAK,CAAA;QAEtC,OAAO;YACN,KAAK,EAAE,KAAqB;YAC5B,IAAI,EAAE,KAAK;SACX,CAAA;IACF,CAAC;IAED;;;;OAIG;IACI,OAAO;QACb,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,OAAO,GAAG,IAAI,WAAW,EAAE;QAChD,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED;;;;;;OAMG;IACI,gBAAgB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;QAE7C,OAAO,IAAI,cAAc,CAAC;YACzB,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBAC1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBAE7C,IAAI,IAAI,EAAE,CAAC;oBACV,UAAU,CAAC,KAAK,EAAE,CAAA;gBACnB,CAAC;qBAAM,CAAC;oBACP,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC1B,CAAC;YACF,CAAC;YACD,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE;SAC3C,CAAC,CAAA;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACI,WAAW,CAAI,SAAqC,EAAE,OAA2B;QACvF,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC;QAC5B,OAAO,IAAI,CAAA;IACZ,CAAC;IAEM,MAAM;QACZ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;IACxB,CAAC;IAED,YAAY;IAEZ,sBAAsB;IAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CACzB,MAAyB,EACzB,SAAiC,EACjC,WAAmB;QAEnB,6DAA6D;QAC7D,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAE/C,MAAM,YAAY,GAAuB,EAAE,CAAA;QAE3C,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;QACjF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;QAC3C,6CAA6C;QAC7C,aAAa;QACb,KAAK;QAEL,6EAA6E;QAE7E,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACpC,CAAC;QAED,OAAO,YAAY,CAAA;IACpB,CAAC;CACD"}
|
|
@@ -32,15 +32,18 @@ export declare class BufferController {
|
|
|
32
32
|
*/
|
|
33
33
|
grow(desiredByteLength?: number): void;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
* the front of the buffer in-place.
|
|
35
|
+
* Modify the buffer in place, keeping only the bytes between the start and end indices.
|
|
37
36
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* pointer offset.
|
|
37
|
+
* This is performed after we're confident that any data preceeding `start` or following `end` is
|
|
38
|
+
* no longer needed.
|
|
41
39
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
40
|
+
* `bytesWritten` is rebased onto the new window so it always reflects the count of valid bytes
|
|
41
|
+
* present after compression. Bytes outside the kept window are dropped from the count even if the
|
|
42
|
+
* underlying allocation is larger.
|
|
43
|
+
*
|
|
44
|
+
* @param start - The starting byte index of which bytes to keep.
|
|
45
|
+
* @param end - The ending byte index of which bytes to keep. Defaults to the current buffer
|
|
46
|
+
* length. Values past the buffer length are clamped.
|
|
44
47
|
*/
|
|
45
48
|
compress(start?: number, end?: number): void;
|
|
46
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BufferController.d.ts","sourceRoot":"","sources":["../../lib/BufferController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,qBAAa,gBAAgB;;IAM5B;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAA;IAEjB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,IAAW,iBAAiB,IAAI,MAAM,CAErC;gBAEW,IAAI,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE;IAM/C;;OAEG;IACI,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI;IAa7C
|
|
1
|
+
{"version":3,"file":"BufferController.d.ts","sourceRoot":"","sources":["../../lib/BufferController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,qBAAa,gBAAgB;;IAM5B;;;;OAIG;IACH,KAAK,EAAE,UAAU,CAAA;IAEjB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,IAAW,iBAAiB,IAAI,MAAM,CAErC;gBAEW,IAAI,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE;IAM/C;;OAEG;IACI,IAAI,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI;IAa7C;;;;;;;;;;;;;OAaG;IACI,QAAQ,CAAC,KAAK,GAAE,MAAU,EAAE,GAAG,GAAE,MAA0B,GAAG,IAAI;IASzE;;;;;OAKG;IACI,KAAK,CAAC,KAAK,GAAE,MAAU,EAAE,GAAG,GAAE,MAA0B,GAAG,IAAI;IAKtE;;;;;;;;OAQG;IACI,QAAQ,CAAC,KAAK,GAAE,MAAU,EAAE,GAAG,GAAE,MAA0B,GAAG,UAAU;IAY/E;;;;;;;;;;OAUG;IACI,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM;CAehE"}
|
|
@@ -47,21 +47,24 @@ export class BufferController {
|
|
|
47
47
|
this.bytes = newBytes;
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
51
|
-
* the front of the buffer in-place.
|
|
50
|
+
* Modify the buffer in place, keeping only the bytes between the start and end indices.
|
|
52
51
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* pointer offset.
|
|
52
|
+
* This is performed after we're confident that any data preceeding `start` or following `end` is
|
|
53
|
+
* no longer needed.
|
|
56
54
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* `bytesWritten` is rebased onto the new window so it always reflects the count of valid bytes
|
|
56
|
+
* present after compression. Bytes outside the kept window are dropped from the count even if the
|
|
57
|
+
* underlying allocation is larger.
|
|
58
|
+
*
|
|
59
|
+
* @param start - The starting byte index of which bytes to keep.
|
|
60
|
+
* @param end - The ending byte index of which bytes to keep. Defaults to the current buffer
|
|
61
|
+
* length. Values past the buffer length are clamped.
|
|
59
62
|
*/
|
|
60
|
-
compress(start = 0, end) {
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
this.bytes.
|
|
64
|
-
this.bytesWritten =
|
|
63
|
+
compress(start = 0, end = this.bytes.length) {
|
|
64
|
+
const clampedEnd = Math.min(end, this.bytes.length);
|
|
65
|
+
const validEnd = Math.min(this.bytesWritten, clampedEnd);
|
|
66
|
+
this.bytes = this.bytes.subarray(start, clampedEnd);
|
|
67
|
+
this.bytesWritten = Math.max(0, validEnd - start);
|
|
65
68
|
}
|
|
66
69
|
/**
|
|
67
70
|
* Clear the buffer, zeroing out all bytes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BufferController.js","sourceRoot":"","sources":["../../lib/BufferController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC5B;;OAEG;IACH,kBAAkB,CAAQ;IAE1B;;;;OAIG;IACH,KAAK,CAAY;IAEjB;;;;OAIG;IACH,YAAY,CAAQ;IAEpB;;OAEG;IACH,IAAW,iBAAiB;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC5D,CAAC;IAED,YAAY,IAAmC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAA;QAChD,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACpD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;IACtB,CAAC;IAED;;OAEG;IACI,IAAI,CAAC,iBAA0B;QACrC,iBAAiB,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QAE3C,IAAI,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAM;QAElD,2FAA2F;QAC3F,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAAA;QAElD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAExB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;IACtB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"BufferController.js","sourceRoot":"","sources":["../../lib/BufferController.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,13 +46,13 @@ export class CSVSpliterator {
|
|
|
46
46
|
const yieldLimit = take + drop;
|
|
47
47
|
const decoder = new TextDecoder();
|
|
48
48
|
const columnDelimiter = new CharacterSequence(columnDelimiterInput ?? Delimiters.Comma);
|
|
49
|
-
const
|
|
49
|
+
const columnSpliteratorInit = { delimiter: columnDelimiter };
|
|
50
50
|
const rows = Spliterator.fromSync(source, rowInit);
|
|
51
51
|
if (header) {
|
|
52
52
|
const result = rows.next();
|
|
53
53
|
if (result.done)
|
|
54
54
|
return;
|
|
55
|
-
const columns =
|
|
55
|
+
const columns = new Spliterator(result.value, columnSpliteratorInit).toDecodedArray(decoder);
|
|
56
56
|
const headers = normalizeKeys ? normalizeColumnNames(columns) : columns;
|
|
57
57
|
if (Array.isArray(transformersInput)) {
|
|
58
58
|
transformers = Array.from(zipSync(headers, transformersInput), ([columnName, transformer]) => [
|
|
@@ -74,7 +74,7 @@ export class CSVSpliterator {
|
|
|
74
74
|
}
|
|
75
75
|
if (yieldCount >= yieldLimit)
|
|
76
76
|
break;
|
|
77
|
-
const columns =
|
|
77
|
+
const columns = new Spliterator(row, columnSpliteratorInit).toDecodedArray(decoder);
|
|
78
78
|
yield emitter ? emitter(columns, transformers) : columns;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -95,14 +95,14 @@ export class CSVSpliterator {
|
|
|
95
95
|
let yieldCount = 0;
|
|
96
96
|
const yieldLimit = take + drop;
|
|
97
97
|
const columnDelimiter = new CharacterSequence(columnDelimiterInput ?? Delimiters.Comma);
|
|
98
|
-
const
|
|
98
|
+
const columnSpliteratorInit = { delimiter: columnDelimiter };
|
|
99
99
|
const decoder = new TextDecoder();
|
|
100
100
|
const rows = await Spliterator.from(source, rowInit);
|
|
101
101
|
if (header) {
|
|
102
102
|
const result = await rows.next();
|
|
103
103
|
if (result.done)
|
|
104
104
|
return;
|
|
105
|
-
const columns =
|
|
105
|
+
const columns = new Spliterator(result.value, columnSpliteratorInit).toDecodedArray(decoder);
|
|
106
106
|
const headers = normalizeKeys ? normalizeColumnNames(columns) : columns;
|
|
107
107
|
if (Array.isArray(transformersInput)) {
|
|
108
108
|
transformers = Array.from(zipSync(headers, transformersInput), ([columnName, transformer]) => [
|
|
@@ -124,7 +124,7 @@ export class CSVSpliterator {
|
|
|
124
124
|
}
|
|
125
125
|
if (yieldCount >= yieldLimit)
|
|
126
126
|
break;
|
|
127
|
-
const columns =
|
|
127
|
+
const columns = new Spliterator(row, columnSpliteratorInit).toDecodedArray(decoder);
|
|
128
128
|
yield emitter ? emitter(columns, transformers) : columns;
|
|
129
129
|
yieldCount++;
|
|
130
130
|
}
|