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.
Files changed (162) hide show
  1. package/out/lib/core/AsyncSpliterator.d.ts +1 -1
  2. package/out/lib/core/AsyncSpliterator.d.ts.map +1 -1
  3. package/out/lib/core/AsyncSpliterator.js +2 -2
  4. package/out/lib/core/AsyncSpliterator.js.map +1 -1
  5. package/out/lib/core/SlidingWindow.d.ts +1 -1
  6. package/out/lib/core/SlidingWindow.d.ts.map +1 -1
  7. package/out/lib/core/SlidingWindow.js.map +1 -1
  8. package/out/lib/core/Spliterator.d.ts +1 -1
  9. package/out/lib/core/Spliterator.d.ts.map +1 -1
  10. package/out/lib/core/Spliterator.js +1 -1
  11. package/out/lib/core/Spliterator.js.map +1 -1
  12. package/out/lib/formats/CSVSpliterator.d.ts +2 -2
  13. package/out/lib/formats/CSVSpliterator.d.ts.map +1 -1
  14. package/out/lib/formats/CSVSpliterator.js +92 -1
  15. package/out/lib/formats/CSVSpliterator.js.map +1 -1
  16. package/out/lib/formats/XLSXSpliterator.d.ts +1 -1
  17. package/out/lib/formats/XLSXSpliterator.d.ts.map +1 -1
  18. package/package.json +2 -3
  19. package/out/lib/AsyncSequence.d.ts +0 -180
  20. package/out/lib/AsyncSequence.d.ts.map +0 -1
  21. package/out/lib/AsyncSequence.js +0 -432
  22. package/out/lib/AsyncSequence.js.map +0 -1
  23. package/out/lib/AsyncSpliterator.d.ts +0 -227
  24. package/out/lib/AsyncSpliterator.d.ts.map +0 -1
  25. package/out/lib/AsyncSpliterator.js +0 -510
  26. package/out/lib/AsyncSpliterator.js.map +0 -1
  27. package/out/lib/BufferController.d.ts +0 -77
  28. package/out/lib/BufferController.d.ts.map +0 -1
  29. package/out/lib/BufferController.js +0 -118
  30. package/out/lib/BufferController.js.map +0 -1
  31. package/out/lib/CSVSpliterator.d.ts +0 -131
  32. package/out/lib/CSVSpliterator.d.ts.map +0 -1
  33. package/out/lib/CSVSpliterator.js +0 -172
  34. package/out/lib/CSVSpliterator.js.map +0 -1
  35. package/out/lib/CharacterSequence.d.ts +0 -72
  36. package/out/lib/CharacterSequence.d.ts.map +0 -1
  37. package/out/lib/CharacterSequence.js +0 -347
  38. package/out/lib/CharacterSequence.js.map +0 -1
  39. package/out/lib/CompositeDataView.d.ts +0 -111
  40. package/out/lib/CompositeDataView.d.ts.map +0 -1
  41. package/out/lib/CompositeDataView.js +0 -241
  42. package/out/lib/CompositeDataView.js.map +0 -1
  43. package/out/lib/IndexQueue.d.ts +0 -48
  44. package/out/lib/IndexQueue.d.ts.map +0 -1
  45. package/out/lib/IndexQueue.js +0 -111
  46. package/out/lib/IndexQueue.js.map +0 -1
  47. package/out/lib/JSONSpliterator.d.ts +0 -44
  48. package/out/lib/JSONSpliterator.d.ts.map +0 -1
  49. package/out/lib/JSONSpliterator.js +0 -77
  50. package/out/lib/JSONSpliterator.js.map +0 -1
  51. package/out/lib/PSVSpliterator.d.ts +0 -21
  52. package/out/lib/PSVSpliterator.d.ts.map +0 -1
  53. package/out/lib/PSVSpliterator.js +0 -22
  54. package/out/lib/PSVSpliterator.js.map +0 -1
  55. package/out/lib/SlidingWindow.d.ts +0 -47
  56. package/out/lib/SlidingWindow.d.ts.map +0 -1
  57. package/out/lib/SlidingWindow.js +0 -63
  58. package/out/lib/SlidingWindow.js.map +0 -1
  59. package/out/lib/Spliterator.d.ts +0 -96
  60. package/out/lib/Spliterator.d.ts.map +0 -1
  61. package/out/lib/Spliterator.js +0 -330
  62. package/out/lib/Spliterator.js.map +0 -1
  63. package/out/lib/TSVSpliterator.d.ts +0 -21
  64. package/out/lib/TSVSpliterator.d.ts.map +0 -1
  65. package/out/lib/TSVSpliterator.js +0 -22
  66. package/out/lib/TSVSpliterator.js.map +0 -1
  67. package/out/lib/TextSpliterator.d.ts +0 -53
  68. package/out/lib/TextSpliterator.d.ts.map +0 -1
  69. package/out/lib/TextSpliterator.js +0 -67
  70. package/out/lib/TextSpliterator.js.map +0 -1
  71. package/out/lib/XLSXSpliterator.d.ts +0 -143
  72. package/out/lib/XLSXSpliterator.d.ts.map +0 -1
  73. package/out/lib/XLSXSpliterator.js +0 -161
  74. package/out/lib/XLSXSpliterator.js.map +0 -1
  75. package/out/lib/adaptive-source.d.ts +0 -39
  76. package/out/lib/adaptive-source.d.ts.map +0 -1
  77. package/out/lib/adaptive-source.js +0 -95
  78. package/out/lib/adaptive-source.js.map +0 -1
  79. package/out/lib/casing.d.ts +0 -27
  80. package/out/lib/casing.d.ts.map +0 -1
  81. package/out/lib/casing.js +0 -68
  82. package/out/lib/casing.js.map +0 -1
  83. package/out/lib/chunks.d.ts +0 -20
  84. package/out/lib/chunks.d.ts.map +0 -1
  85. package/out/lib/chunks.js +0 -36
  86. package/out/lib/chunks.js.map +0 -1
  87. package/out/lib/merge-async-iterators.d.ts +0 -12
  88. package/out/lib/merge-async-iterators.d.ts.map +0 -1
  89. package/out/lib/merge-async-iterators.js +0 -39
  90. package/out/lib/merge-async-iterators.js.map +0 -1
  91. package/out/lib/parallel-map-runtime.d.ts +0 -22
  92. package/out/lib/parallel-map-runtime.d.ts.map +0 -1
  93. package/out/lib/parallel-map-runtime.js +0 -60
  94. package/out/lib/parallel-map-runtime.js.map +0 -1
  95. package/out/lib/parallel-map-worker-entry.d.ts +0 -11
  96. package/out/lib/parallel-map-worker-entry.d.ts.map +0 -1
  97. package/out/lib/parallel-map-worker-entry.js +0 -41
  98. package/out/lib/parallel-map-worker-entry.js.map +0 -1
  99. package/out/lib/parallel-map-workers.d.ts +0 -57
  100. package/out/lib/parallel-map-workers.d.ts.map +0 -1
  101. package/out/lib/parallel-map-workers.js +0 -82
  102. package/out/lib/parallel-map-workers.js.map +0 -1
  103. package/out/lib/parallel-map.d.ts +0 -28
  104. package/out/lib/parallel-map.d.ts.map +0 -1
  105. package/out/lib/parallel-map.js +0 -30
  106. package/out/lib/parallel-map.js.map +0 -1
  107. package/out/lib/pivot.d.ts +0 -30
  108. package/out/lib/pivot.d.ts.map +0 -1
  109. package/out/lib/pivot.js +0 -47
  110. package/out/lib/pivot.js.map +0 -1
  111. package/out/lib/row-emitters.d.ts +0 -35
  112. package/out/lib/row-emitters.d.ts.map +0 -1
  113. package/out/lib/row-emitters.js +0 -50
  114. package/out/lib/row-emitters.js.map +0 -1
  115. package/out/lib/segment-runtime.d.ts +0 -27
  116. package/out/lib/segment-runtime.d.ts.map +0 -1
  117. package/out/lib/segment-runtime.js +0 -41
  118. package/out/lib/segment-runtime.js.map +0 -1
  119. package/out/lib/segment-worker-entry.d.ts +0 -10
  120. package/out/lib/segment-worker-entry.d.ts.map +0 -1
  121. package/out/lib/segment-worker-entry.js +0 -59
  122. package/out/lib/segment-worker-entry.js.map +0 -1
  123. package/out/lib/segment-workers.d.ts +0 -56
  124. package/out/lib/segment-workers.d.ts.map +0 -1
  125. package/out/lib/segment-workers.js +0 -110
  126. package/out/lib/segment-workers.js.map +0 -1
  127. package/out/lib/segments.d.ts +0 -31
  128. package/out/lib/segments.d.ts.map +0 -1
  129. package/out/lib/segments.js +0 -52
  130. package/out/lib/segments.js.map +0 -1
  131. package/out/lib/shared.d.ts +0 -155
  132. package/out/lib/shared.d.ts.map +0 -1
  133. package/out/lib/shared.js +0 -41
  134. package/out/lib/shared.js.map +0 -1
  135. package/out/lib/take.d.ts +0 -42
  136. package/out/lib/take.d.ts.map +0 -1
  137. package/out/lib/take.js +0 -101
  138. package/out/lib/take.js.map +0 -1
  139. package/out/lib/utils.d.ts +0 -37
  140. package/out/lib/utils.d.ts.map +0 -1
  141. package/out/lib/utils.js +0 -39
  142. package/out/lib/utils.js.map +0 -1
  143. package/out/lib/wasm_base64.d.ts +0 -19
  144. package/out/lib/wasm_base64.d.ts.map +0 -1
  145. package/out/lib/wasm_base64.js +0 -19
  146. package/out/lib/wasm_base64.js.map +0 -1
  147. package/out/lib/wasm_module.d.ts +0 -57
  148. package/out/lib/wasm_module.d.ts.map +0 -1
  149. package/out/lib/wasm_module.js +0 -34
  150. package/out/lib/wasm_module.js.map +0 -1
  151. package/out/lib/writer.d.ts +0 -45
  152. package/out/lib/writer.d.ts.map +0 -1
  153. package/out/lib/writer.js +0 -57
  154. package/out/lib/writer.js.map +0 -1
  155. package/out/lib/zip.d.ts +0 -33
  156. package/out/lib/zip.d.ts.map +0 -1
  157. package/out/lib/zip.js +0 -59
  158. package/out/lib/zip.js.map +0 -1
  159. package/out/node/cli/parse-args.d.ts +0 -120
  160. package/out/node/cli/parse-args.d.ts.map +0 -1
  161. package/out/node/cli/parse-args.js +0 -118
  162. 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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"}
@@ -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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"}