spliterator 6.2.0 → 6.3.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.
- package/out/lib/core/AsyncSpliterator.d.ts +1 -1
- package/out/lib/core/AsyncSpliterator.d.ts.map +1 -1
- package/out/lib/core/AsyncSpliterator.js +2 -2
- package/out/lib/core/AsyncSpliterator.js.map +1 -1
- package/out/lib/core/SlidingWindow.d.ts +1 -1
- package/out/lib/core/SlidingWindow.d.ts.map +1 -1
- package/out/lib/core/SlidingWindow.js.map +1 -1
- package/out/lib/core/Spliterator.d.ts +1 -1
- package/out/lib/core/Spliterator.d.ts.map +1 -1
- package/out/lib/core/Spliterator.js +1 -1
- package/out/lib/core/Spliterator.js.map +1 -1
- package/out/lib/formats/CSVSpliterator.d.ts +2 -2
- package/out/lib/formats/CSVSpliterator.d.ts.map +1 -1
- package/out/lib/formats/CSVSpliterator.js +92 -1
- package/out/lib/formats/CSVSpliterator.js.map +1 -1
- package/out/lib/formats/XLSXSpliterator.d.ts +1 -1
- package/out/lib/formats/XLSXSpliterator.d.ts.map +1 -1
- package/package.json +2 -3
- package/out/lib/AsyncSequence.d.ts +0 -180
- package/out/lib/AsyncSequence.d.ts.map +0 -1
- package/out/lib/AsyncSequence.js +0 -432
- package/out/lib/AsyncSequence.js.map +0 -1
- package/out/lib/AsyncSpliterator.d.ts +0 -227
- package/out/lib/AsyncSpliterator.d.ts.map +0 -1
- package/out/lib/AsyncSpliterator.js +0 -510
- package/out/lib/AsyncSpliterator.js.map +0 -1
- package/out/lib/BufferController.d.ts +0 -77
- package/out/lib/BufferController.d.ts.map +0 -1
- package/out/lib/BufferController.js +0 -118
- package/out/lib/BufferController.js.map +0 -1
- package/out/lib/CSVSpliterator.d.ts +0 -131
- package/out/lib/CSVSpliterator.d.ts.map +0 -1
- package/out/lib/CSVSpliterator.js +0 -172
- package/out/lib/CSVSpliterator.js.map +0 -1
- package/out/lib/CharacterSequence.d.ts +0 -72
- package/out/lib/CharacterSequence.d.ts.map +0 -1
- package/out/lib/CharacterSequence.js +0 -347
- package/out/lib/CharacterSequence.js.map +0 -1
- package/out/lib/CompositeDataView.d.ts +0 -111
- package/out/lib/CompositeDataView.d.ts.map +0 -1
- package/out/lib/CompositeDataView.js +0 -241
- package/out/lib/CompositeDataView.js.map +0 -1
- package/out/lib/IndexQueue.d.ts +0 -48
- package/out/lib/IndexQueue.d.ts.map +0 -1
- package/out/lib/IndexQueue.js +0 -111
- package/out/lib/IndexQueue.js.map +0 -1
- package/out/lib/JSONSpliterator.d.ts +0 -44
- package/out/lib/JSONSpliterator.d.ts.map +0 -1
- package/out/lib/JSONSpliterator.js +0 -77
- package/out/lib/JSONSpliterator.js.map +0 -1
- package/out/lib/PSVSpliterator.d.ts +0 -21
- package/out/lib/PSVSpliterator.d.ts.map +0 -1
- package/out/lib/PSVSpliterator.js +0 -22
- package/out/lib/PSVSpliterator.js.map +0 -1
- package/out/lib/SlidingWindow.d.ts +0 -47
- package/out/lib/SlidingWindow.d.ts.map +0 -1
- package/out/lib/SlidingWindow.js +0 -63
- package/out/lib/SlidingWindow.js.map +0 -1
- package/out/lib/Spliterator.d.ts +0 -96
- package/out/lib/Spliterator.d.ts.map +0 -1
- package/out/lib/Spliterator.js +0 -330
- package/out/lib/Spliterator.js.map +0 -1
- package/out/lib/TSVSpliterator.d.ts +0 -21
- package/out/lib/TSVSpliterator.d.ts.map +0 -1
- package/out/lib/TSVSpliterator.js +0 -22
- package/out/lib/TSVSpliterator.js.map +0 -1
- package/out/lib/TextSpliterator.d.ts +0 -53
- package/out/lib/TextSpliterator.d.ts.map +0 -1
- package/out/lib/TextSpliterator.js +0 -67
- package/out/lib/TextSpliterator.js.map +0 -1
- package/out/lib/XLSXSpliterator.d.ts +0 -143
- package/out/lib/XLSXSpliterator.d.ts.map +0 -1
- package/out/lib/XLSXSpliterator.js +0 -161
- package/out/lib/XLSXSpliterator.js.map +0 -1
- package/out/lib/adaptive-source.d.ts +0 -39
- package/out/lib/adaptive-source.d.ts.map +0 -1
- package/out/lib/adaptive-source.js +0 -95
- package/out/lib/adaptive-source.js.map +0 -1
- package/out/lib/casing.d.ts +0 -27
- package/out/lib/casing.d.ts.map +0 -1
- package/out/lib/casing.js +0 -68
- package/out/lib/casing.js.map +0 -1
- package/out/lib/chunks.d.ts +0 -20
- package/out/lib/chunks.d.ts.map +0 -1
- package/out/lib/chunks.js +0 -36
- package/out/lib/chunks.js.map +0 -1
- package/out/lib/merge-async-iterators.d.ts +0 -12
- package/out/lib/merge-async-iterators.d.ts.map +0 -1
- package/out/lib/merge-async-iterators.js +0 -39
- package/out/lib/merge-async-iterators.js.map +0 -1
- package/out/lib/parallel-map-runtime.d.ts +0 -22
- package/out/lib/parallel-map-runtime.d.ts.map +0 -1
- package/out/lib/parallel-map-runtime.js +0 -60
- package/out/lib/parallel-map-runtime.js.map +0 -1
- package/out/lib/parallel-map-worker-entry.d.ts +0 -11
- package/out/lib/parallel-map-worker-entry.d.ts.map +0 -1
- package/out/lib/parallel-map-worker-entry.js +0 -41
- package/out/lib/parallel-map-worker-entry.js.map +0 -1
- package/out/lib/parallel-map-workers.d.ts +0 -57
- package/out/lib/parallel-map-workers.d.ts.map +0 -1
- package/out/lib/parallel-map-workers.js +0 -82
- package/out/lib/parallel-map-workers.js.map +0 -1
- package/out/lib/parallel-map.d.ts +0 -28
- package/out/lib/parallel-map.d.ts.map +0 -1
- package/out/lib/parallel-map.js +0 -30
- package/out/lib/parallel-map.js.map +0 -1
- package/out/lib/pivot.d.ts +0 -30
- package/out/lib/pivot.d.ts.map +0 -1
- package/out/lib/pivot.js +0 -47
- package/out/lib/pivot.js.map +0 -1
- package/out/lib/row-emitters.d.ts +0 -35
- package/out/lib/row-emitters.d.ts.map +0 -1
- package/out/lib/row-emitters.js +0 -50
- package/out/lib/row-emitters.js.map +0 -1
- package/out/lib/segment-runtime.d.ts +0 -27
- package/out/lib/segment-runtime.d.ts.map +0 -1
- package/out/lib/segment-runtime.js +0 -41
- package/out/lib/segment-runtime.js.map +0 -1
- package/out/lib/segment-worker-entry.d.ts +0 -10
- package/out/lib/segment-worker-entry.d.ts.map +0 -1
- package/out/lib/segment-worker-entry.js +0 -59
- package/out/lib/segment-worker-entry.js.map +0 -1
- package/out/lib/segment-workers.d.ts +0 -56
- package/out/lib/segment-workers.d.ts.map +0 -1
- package/out/lib/segment-workers.js +0 -110
- package/out/lib/segment-workers.js.map +0 -1
- package/out/lib/segments.d.ts +0 -31
- package/out/lib/segments.d.ts.map +0 -1
- package/out/lib/segments.js +0 -52
- package/out/lib/segments.js.map +0 -1
- package/out/lib/shared.d.ts +0 -155
- package/out/lib/shared.d.ts.map +0 -1
- package/out/lib/shared.js +0 -41
- package/out/lib/shared.js.map +0 -1
- package/out/lib/take.d.ts +0 -42
- package/out/lib/take.d.ts.map +0 -1
- package/out/lib/take.js +0 -101
- package/out/lib/take.js.map +0 -1
- package/out/lib/utils.d.ts +0 -37
- package/out/lib/utils.d.ts.map +0 -1
- package/out/lib/utils.js +0 -39
- package/out/lib/utils.js.map +0 -1
- package/out/lib/wasm_base64.d.ts +0 -19
- package/out/lib/wasm_base64.d.ts.map +0 -1
- package/out/lib/wasm_base64.js +0 -19
- package/out/lib/wasm_base64.js.map +0 -1
- package/out/lib/wasm_module.d.ts +0 -57
- package/out/lib/wasm_module.d.ts.map +0 -1
- package/out/lib/wasm_module.js +0 -34
- package/out/lib/wasm_module.js.map +0 -1
- package/out/lib/writer.d.ts +0 -45
- package/out/lib/writer.d.ts.map +0 -1
- package/out/lib/writer.js +0 -57
- package/out/lib/writer.js.map +0 -1
- package/out/lib/zip.d.ts +0 -33
- package/out/lib/zip.d.ts.map +0 -1
- package/out/lib/zip.js +0 -59
- package/out/lib/zip.js.map +0 -1
- package/out/node/cli/parse-args.d.ts +0 -120
- package/out/node/cli/parse-args.d.ts.map +0 -1
- package/out/node/cli/parse-args.js +0 -118
- package/out/node/cli/parse-args.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncSequence.d.ts","sourceRoot":"","sources":["../../lib/AsyncSequence.ts"],"names":[],"mappings":"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"}
|
package/out/lib/AsyncSequence.js
DELETED
|
@@ -1,432 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Sister Software
|
|
3
|
-
* @license MIT
|
|
4
|
-
* @author Teffen Ellis, et al.
|
|
5
|
-
*/
|
|
6
|
-
import { ReadableStream } from "stream/web";
|
|
7
|
-
const OP_MAP = 0;
|
|
8
|
-
const OP_FILTER = 1;
|
|
9
|
-
const OP_TAKE = 2;
|
|
10
|
-
const OP_DROP = 3;
|
|
11
|
-
function isThenable(value) {
|
|
12
|
-
return value !== null && typeof value === "object" && typeof value.then === "function";
|
|
13
|
-
}
|
|
14
|
-
function toAsyncIterator(source) {
|
|
15
|
-
if (Symbol.asyncIterator in source)
|
|
16
|
-
return source[Symbol.asyncIterator]();
|
|
17
|
-
const iterator = source[Symbol.iterator]();
|
|
18
|
-
return {
|
|
19
|
-
next: async () => iterator.next(),
|
|
20
|
-
return: async (value) => iterator.return?.(value) ?? { value: undefined, done: true },
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
async function* flattenValues(source, fn) {
|
|
24
|
-
let counter = 0;
|
|
25
|
-
for await (const value of source) {
|
|
26
|
-
const mapped = fn(value, counter++);
|
|
27
|
-
const inner = isThenable(mapped) ? await mapped : mapped;
|
|
28
|
-
if (inner === null || typeof inner !== "object") {
|
|
29
|
-
throw new TypeError(`flatMap callback must return an iterable, received ${typeof inner}`);
|
|
30
|
-
}
|
|
31
|
-
yield* inner;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
async function* batchValues(source, size) {
|
|
35
|
-
let batch = [];
|
|
36
|
-
for await (const value of source) {
|
|
37
|
-
batch.push(value);
|
|
38
|
-
if (batch.length === size) {
|
|
39
|
-
yield batch;
|
|
40
|
-
batch = [];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (batch.length) {
|
|
44
|
-
yield batch;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
async function* mapValuesConcurrently(source, fn, limit, signal) {
|
|
48
|
-
const upstream = source[Symbol.asyncIterator]();
|
|
49
|
-
// Slots key this map, not items: a source may repeat a value (a list of file paths routinely does), and two `===`
|
|
50
|
-
// equal keys would collapse into one entry, losing a result and deleting the wrong dispatch.
|
|
51
|
-
const inflight = new Map();
|
|
52
|
-
let slot = 0;
|
|
53
|
-
let exhausted = false;
|
|
54
|
-
try {
|
|
55
|
-
for (;;) {
|
|
56
|
-
if (signal?.aborted)
|
|
57
|
-
break;
|
|
58
|
-
while (!exhausted && inflight.size < limit) {
|
|
59
|
-
const result = await upstream.next();
|
|
60
|
-
if (result.done) {
|
|
61
|
-
exhausted = true;
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
const current = slot++;
|
|
65
|
-
const produced = fn(result.value, current);
|
|
66
|
-
inflight.set(current, Promise.resolve(produced).then((value) => ({ slot: current, value })));
|
|
67
|
-
}
|
|
68
|
-
if (!inflight.size)
|
|
69
|
-
break;
|
|
70
|
-
const { slot: settled, value } = await Promise.race(inflight.values());
|
|
71
|
-
inflight.delete(settled);
|
|
72
|
-
yield value;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
finally {
|
|
76
|
-
await upstream.return?.();
|
|
77
|
-
// Settle whatever is still running so an abandoned rejection is never unobserved.
|
|
78
|
-
await Promise.allSettled(inflight.values());
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* A lazy, chainable async iterator.
|
|
83
|
-
*
|
|
84
|
-
* The core methods (`map`, `filter`, `take`, `drop`, `flatMap`, `reduce`, `toArray`, `forEach`, `some`, `every`,
|
|
85
|
-
* `find`) match the [async iterator helpers proposal][proposal] in name, arity, and semantics — including the `counter`
|
|
86
|
-
* second argument handed to every callback. Callbacks may return promises. Code written against this keeps working
|
|
87
|
-
* verbatim if the proposal ever ships natively.
|
|
88
|
-
*
|
|
89
|
-
* [proposal]: https://github.com/tc39/proposal-async-iterator-helpers
|
|
90
|
-
*
|
|
91
|
-
* **Chain depth is nearly free.** A chain is an op list plus a source, not nested generators, so one async boundary is
|
|
92
|
-
* paid per item no matter how many operators you stack; only the op loop grows. Measured on Node 26 over 2M items:
|
|
93
|
-
* ~5.4M items/s at three operators and ~4.9M/s at six, against ~2.3M/s for the equivalent nested-generator
|
|
94
|
-
* implementation, where each operator adds a microtask hop. Doubling the operator count costs ~10% here and would cost
|
|
95
|
-
* ~2× there. Only {@linkcode flatMap}, {@linkcode chunks}, and {@linkcode parallelMap} break fusion, because they need
|
|
96
|
-
* inner-iterator state.
|
|
97
|
-
*
|
|
98
|
-
* Callback results are awaited **only when thenable**, so synchronous callbacks — the common case — cost no microtask
|
|
99
|
-
* hop at all.
|
|
100
|
-
*
|
|
101
|
-
* **When not to reach for this.** Wrapping costs ~1.9× a bare async generator (~10.3M/s), one extra async frame per
|
|
102
|
-
* item. On parsed rows (`JSON.parse` at ~1–3µs) that is 3–8%, invisible. On raw {@linkcode Uint8Array} ranges with no
|
|
103
|
-
* per-row parse it is most of the cost — iterate the {@linkcode AsyncSpliterator} directly there.
|
|
104
|
-
*
|
|
105
|
-
* Single-shot, like the iterators the proposal specifies: iterating consumes the source.
|
|
106
|
-
*/
|
|
107
|
-
export class AsyncSequence {
|
|
108
|
-
#source;
|
|
109
|
-
#ops;
|
|
110
|
-
/**
|
|
111
|
-
* Indices of `take` ops, precomputed so the exhaustion pre-check costs nothing when there are none.
|
|
112
|
-
*/
|
|
113
|
-
#takeIndices;
|
|
114
|
-
#upstream = null;
|
|
115
|
-
#syncUpstream = null;
|
|
116
|
-
#counters = null;
|
|
117
|
-
#budgets = null;
|
|
118
|
-
#done = false;
|
|
119
|
-
constructor(source, ops = []) {
|
|
120
|
-
this.#source = source;
|
|
121
|
-
this.#ops = ops;
|
|
122
|
-
const takeIndices = [];
|
|
123
|
-
for (let i = 0; i < ops.length; i++) {
|
|
124
|
-
if (ops[i].kind === OP_TAKE) {
|
|
125
|
-
takeIndices.push(i);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
this.#takeIndices = takeIndices;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Wrap any iterable or async iterable as a chainable sequence.
|
|
132
|
-
*/
|
|
133
|
-
static from(source) {
|
|
134
|
-
return source instanceof AsyncSequence ? source : new AsyncSequence(source);
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Resolve the source once, keeping a synchronous iterator as such.
|
|
138
|
-
*
|
|
139
|
-
* Adapting a sync iterator to the async protocol would allocate a promise per pulled value for an iterator that never
|
|
140
|
-
* needs one, which is most of the cost of parsing an in-memory source: 0.733ms against a 0.540ms floor over a 68KB
|
|
141
|
-
* file.
|
|
142
|
-
*/
|
|
143
|
-
async #openUpstream() {
|
|
144
|
-
if (this.#upstream)
|
|
145
|
-
return this.#upstream;
|
|
146
|
-
if (this.#syncUpstream)
|
|
147
|
-
return this.#syncUpstream;
|
|
148
|
-
const source = this.#source;
|
|
149
|
-
const resolved = typeof source === "function" ? await source() : source;
|
|
150
|
-
if (!(Symbol.asyncIterator in resolved)) {
|
|
151
|
-
this.#syncUpstream = resolved[Symbol.iterator]();
|
|
152
|
-
return this.#syncUpstream;
|
|
153
|
-
}
|
|
154
|
-
this.#upstream = toAsyncIterator(resolved);
|
|
155
|
-
return this.#upstream;
|
|
156
|
-
}
|
|
157
|
-
#derive(op) {
|
|
158
|
-
return new AsyncSequence(this.#source, [...this.#ops, op]);
|
|
159
|
-
}
|
|
160
|
-
//#region Spec-compatible core — lazy
|
|
161
|
-
/**
|
|
162
|
-
* Transform each value. The callback receives `(value, counter)` and may return a promise.
|
|
163
|
-
*/
|
|
164
|
-
map(fn) {
|
|
165
|
-
return this.#derive({ kind: OP_MAP, fn });
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Keep values for which the callback is truthy. The callback receives `(value, counter)` and may return a promise.
|
|
169
|
-
*/
|
|
170
|
-
filter(fn) {
|
|
171
|
-
return this.#derive({ kind: OP_FILTER, fn });
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Yield at most `limit` values, then close the underlying iterator.
|
|
175
|
-
*
|
|
176
|
-
* The close is what makes this safe on a file-backed source — `take(5)` over a 40GB file releases the handle rather
|
|
177
|
-
* than leaving it open until GC.
|
|
178
|
-
*/
|
|
179
|
-
take(limit) {
|
|
180
|
-
const normalized = Math.trunc(limit);
|
|
181
|
-
if (!Number.isFinite(normalized) || normalized < 0) {
|
|
182
|
-
throw new RangeError(`take(${limit}): limit must be a non-negative finite number`);
|
|
183
|
-
}
|
|
184
|
-
return this.#derive({ kind: OP_TAKE, limit: normalized });
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Skip the first `limit` values.
|
|
188
|
-
*/
|
|
189
|
-
drop(limit) {
|
|
190
|
-
const normalized = Math.trunc(limit);
|
|
191
|
-
if (!Number.isFinite(normalized) || normalized < 0) {
|
|
192
|
-
throw new RangeError(`drop(${limit}): limit must be a non-negative finite number`);
|
|
193
|
-
}
|
|
194
|
-
return this.#derive({ kind: OP_DROP, limit: normalized });
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Map each value to an iterable and flatten one level.
|
|
198
|
-
*
|
|
199
|
-
* **Fusion barrier.** Unlike the other operators this needs inner-iterator state, so it starts a fresh fused segment
|
|
200
|
-
* rather than joining the current op list. Stacking `flatMap` costs one async boundary each; stacking
|
|
201
|
-
* `map`/`filter`/`take`/`drop` costs nothing.
|
|
202
|
-
*/
|
|
203
|
-
flatMap(fn) {
|
|
204
|
-
return new AsyncSequence(flattenValues(this, fn));
|
|
205
|
-
}
|
|
206
|
-
//#endregion
|
|
207
|
-
//#region Spec-compatible core — terminal
|
|
208
|
-
/**
|
|
209
|
-
* Collect every remaining value into an array.
|
|
210
|
-
*
|
|
211
|
-
* **Reads the whole source into memory.** On a sequence backed by a file this defeats the point of streaming — filter
|
|
212
|
-
* and map first so only what you keep is materialized.
|
|
213
|
-
*/
|
|
214
|
-
async toArray() {
|
|
215
|
-
const values = [];
|
|
216
|
-
for await (const value of this) {
|
|
217
|
-
values.push(value);
|
|
218
|
-
}
|
|
219
|
-
return values;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Invoke the callback for each value, for side effects.
|
|
223
|
-
*/
|
|
224
|
-
async forEach(fn) {
|
|
225
|
-
let counter = 0;
|
|
226
|
-
for await (const value of this) {
|
|
227
|
-
const result = fn(value, counter++);
|
|
228
|
-
if (isThenable(result)) {
|
|
229
|
-
await result;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
async reduce(fn, ...rest) {
|
|
234
|
-
let accumulator = rest[0];
|
|
235
|
-
let seeded = rest.length > 0;
|
|
236
|
-
let counter = 0;
|
|
237
|
-
for await (const value of this) {
|
|
238
|
-
if (!seeded) {
|
|
239
|
-
accumulator = value;
|
|
240
|
-
seeded = true;
|
|
241
|
-
counter++;
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
const next = fn(accumulator, value, counter++);
|
|
245
|
-
accumulator = isThenable(next) ? await next : next;
|
|
246
|
-
}
|
|
247
|
-
if (!seeded)
|
|
248
|
-
throw new TypeError("reduce of empty sequence with no initial value");
|
|
249
|
-
return accumulator;
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Whether any value satisfies the callback. Short-circuits and closes the underlying iterator.
|
|
253
|
-
*/
|
|
254
|
-
async some(fn) {
|
|
255
|
-
let counter = 0;
|
|
256
|
-
for await (const value of this) {
|
|
257
|
-
const result = fn(value, counter++);
|
|
258
|
-
if (isThenable(result) ? await result : result)
|
|
259
|
-
return true;
|
|
260
|
-
}
|
|
261
|
-
return false;
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Whether every value satisfies the callback. Short-circuits and closes the underlying iterator.
|
|
265
|
-
*/
|
|
266
|
-
async every(fn) {
|
|
267
|
-
let counter = 0;
|
|
268
|
-
for await (const value of this) {
|
|
269
|
-
const result = fn(value, counter++);
|
|
270
|
-
if (!(isThenable(result) ? await result : result))
|
|
271
|
-
return false;
|
|
272
|
-
}
|
|
273
|
-
return true;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* The first value satisfying the callback, or `undefined`. Short-circuits and closes the underlying iterator.
|
|
277
|
-
*/
|
|
278
|
-
async find(fn) {
|
|
279
|
-
let counter = 0;
|
|
280
|
-
for await (const value of this) {
|
|
281
|
-
const result = fn(value, counter++);
|
|
282
|
-
if (isThenable(result) ? await result : result)
|
|
283
|
-
return value;
|
|
284
|
-
}
|
|
285
|
-
return undefined;
|
|
286
|
-
}
|
|
287
|
-
//#endregion
|
|
288
|
-
//#region Extras — deliberately not spec surface
|
|
289
|
-
/**
|
|
290
|
-
* Group values into arrays of `size`, with a shorter final batch if the sequence does not divide evenly.
|
|
291
|
-
*
|
|
292
|
-
* Distinct from {@linkcode take}, which yields the first `size` _values_. Named for the [iterator chunking
|
|
293
|
-
* proposal](https://github.com/tc39/proposal-iterator-chunking).
|
|
294
|
-
*
|
|
295
|
-
* **Fusion barrier**, like {@linkcode flatMap}.
|
|
296
|
-
*/
|
|
297
|
-
chunks(size) {
|
|
298
|
-
const normalized = Math.trunc(size);
|
|
299
|
-
if (!Number.isFinite(normalized) || normalized < 1) {
|
|
300
|
-
throw new RangeError(`chunks(${size}): size must be a positive finite number`);
|
|
301
|
-
}
|
|
302
|
-
return new AsyncSequence(batchValues(this, normalized));
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Map values through a callback with up to `concurrency` calls in flight, yielding in **completion order** — not
|
|
306
|
-
* input order.
|
|
307
|
-
*
|
|
308
|
-
* The callback is a closure, so it runs on the caller's thread. This overlaps _latency_ (file reads, network) and
|
|
309
|
-
* does nothing for CPU-bound work; for that, cross a thread boundary with `parallelMapWorkers` or
|
|
310
|
-
* `AsyncSpliterator.asManyWorkers`, which take a module path precisely because a closure cannot.
|
|
311
|
-
*
|
|
312
|
-
* **Fusion barrier**, like {@linkcode flatMap}.
|
|
313
|
-
*/
|
|
314
|
-
parallelMap(fn, { concurrency, signal }) {
|
|
315
|
-
return new AsyncSequence(mapValuesConcurrently(this, fn, Math.max(1, Math.trunc(concurrency)), signal));
|
|
316
|
-
}
|
|
317
|
-
/**
|
|
318
|
-
* Expose the sequence as a web stream, for interop with `pipeThrough`/`pipeTo` consumers.
|
|
319
|
-
*/
|
|
320
|
-
toReadableStream() {
|
|
321
|
-
const iterator = this[Symbol.asyncIterator]();
|
|
322
|
-
return new ReadableStream({
|
|
323
|
-
pull: async (controller) => {
|
|
324
|
-
const { done, value } = await iterator.next();
|
|
325
|
-
if (done) {
|
|
326
|
-
controller.close();
|
|
327
|
-
}
|
|
328
|
-
else {
|
|
329
|
-
controller.enqueue(value);
|
|
330
|
-
}
|
|
331
|
-
},
|
|
332
|
-
cancel: async () => void (await iterator.return?.()),
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Pipe the sequence through a transform stream.
|
|
337
|
-
*/
|
|
338
|
-
pipeThrough(transform, options) {
|
|
339
|
-
return this.toReadableStream().pipeThrough(transform, options);
|
|
340
|
-
}
|
|
341
|
-
//#endregion
|
|
342
|
-
//#region Iteration
|
|
343
|
-
async next() {
|
|
344
|
-
if (this.#done)
|
|
345
|
-
return { value: undefined, done: true };
|
|
346
|
-
const ops = this.#ops;
|
|
347
|
-
const length = ops.length;
|
|
348
|
-
this.#counters ??= Array.from({ length }).fill(0);
|
|
349
|
-
this.#budgets ??= ops.map((op) => (op.kind === OP_TAKE || op.kind === OP_DROP ? op.limit : 0));
|
|
350
|
-
const counters = this.#counters;
|
|
351
|
-
const budgets = this.#budgets;
|
|
352
|
-
// A satisfied `take` must close the source WITHOUT pulling again — the whole point of `take(5)` on a huge file is
|
|
353
|
-
// that the sixth row is never read.
|
|
354
|
-
for (const index of this.#takeIndices) {
|
|
355
|
-
if (budgets[index] <= 0)
|
|
356
|
-
return this.#finish();
|
|
357
|
-
}
|
|
358
|
-
const upstream = await this.#openUpstream();
|
|
359
|
-
const isSync = upstream === this.#syncUpstream;
|
|
360
|
-
try {
|
|
361
|
-
outer: for (;;) {
|
|
362
|
-
const pulled = upstream.next();
|
|
363
|
-
const result = isSync ? pulled : await pulled;
|
|
364
|
-
if (result.done) {
|
|
365
|
-
this.#done = true;
|
|
366
|
-
return { value: undefined, done: true };
|
|
367
|
-
}
|
|
368
|
-
let value = result.value;
|
|
369
|
-
for (let i = 0; i < length; i++) {
|
|
370
|
-
const op = ops[i];
|
|
371
|
-
switch (op.kind) {
|
|
372
|
-
case OP_MAP: {
|
|
373
|
-
const mapped = op.fn(value, counters[i]++);
|
|
374
|
-
value = isThenable(mapped) ? await mapped : mapped;
|
|
375
|
-
break;
|
|
376
|
-
}
|
|
377
|
-
case OP_FILTER: {
|
|
378
|
-
const keep = op.fn(value, counters[i]++);
|
|
379
|
-
if (!(isThenable(keep) ? await keep : keep))
|
|
380
|
-
continue outer;
|
|
381
|
-
break;
|
|
382
|
-
}
|
|
383
|
-
case OP_DROP: {
|
|
384
|
-
if (budgets[i] > 0) {
|
|
385
|
-
budgets[i]--;
|
|
386
|
-
continue outer;
|
|
387
|
-
}
|
|
388
|
-
break;
|
|
389
|
-
}
|
|
390
|
-
case OP_TAKE: {
|
|
391
|
-
if (budgets[i] <= 0)
|
|
392
|
-
return this.#finish();
|
|
393
|
-
budgets[i]--;
|
|
394
|
-
break;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
return { value: value, done: false };
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
catch (error) {
|
|
402
|
-
// A rejected `next()` does not make `for await` call `return()` — the iterator is presumed broken — so a
|
|
403
|
-
// throwing callback would otherwise strand the source's resources.
|
|
404
|
-
await this.#finish();
|
|
405
|
-
throw error;
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Close the sequence and release the underlying source.
|
|
410
|
-
*/
|
|
411
|
-
async return() {
|
|
412
|
-
return this.#finish();
|
|
413
|
-
}
|
|
414
|
-
async #finish() {
|
|
415
|
-
if (this.#done)
|
|
416
|
-
return { value: undefined, done: true };
|
|
417
|
-
this.#done = true;
|
|
418
|
-
// An eager source may already hold a resource that no pull ever touched, so closing has to reach it even along
|
|
419
|
-
// paths like `take(0)`. A thunk source that was never invoked has nothing open to release, and invoking it here
|
|
420
|
-
// would open a file purely to close it.
|
|
421
|
-
const source = this.#source;
|
|
422
|
-
const upstream = this.#upstream ?? this.#syncUpstream ?? (typeof source === "function" ? null : toAsyncIterator(source));
|
|
423
|
-
this.#upstream = null;
|
|
424
|
-
this.#syncUpstream = null;
|
|
425
|
-
await upstream?.return?.();
|
|
426
|
-
return { value: undefined, done: true };
|
|
427
|
-
}
|
|
428
|
-
[Symbol.asyncIterator]() {
|
|
429
|
-
return this;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
//# sourceMappingURL=AsyncSequence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncSequence.js","sourceRoot":"","sources":["../../lib/AsyncSequence.ts"],"names":[],"mappings":"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"}
|