evnty 5.3.3 → 5.4.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/src/utils.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Sequence } from './sequence.js';
2
+ import { ITERATOR_DONE } from './async.js';
2
3
  import { AnyIterator, AnyIterable, MaybePromise } from './types.js';
3
4
 
4
5
  /**
@@ -137,20 +138,21 @@ export function abortableIterable<T, TReturn, TNext>(iterable: AsyncIterable<T,
137
138
  const race = [promise, undefined] as unknown as [Promise<void>, Promise<IteratorResult<T, TReturn>>];
138
139
 
139
140
  return {
140
- async next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>> {
141
+ next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>> {
141
142
  race[1] = iterator.next(...args);
142
- const result = await Promise.race(race);
143
- if (result === undefined) {
144
- void finish();
145
- return { done: true, value: undefined as TReturn };
146
- }
147
- if (result.done) {
148
- closed = true;
149
- signal.removeEventListener('abort', onAbort);
150
- }
151
- return result;
143
+ return Promise.race(race).then((result) => {
144
+ if (result === undefined) {
145
+ void finish();
146
+ return { done: true, value: undefined as TReturn } as IteratorResult<T, TReturn>;
147
+ }
148
+ if (result.done) {
149
+ closed = true;
150
+ signal.removeEventListener('abort', onAbort);
151
+ }
152
+ return result;
153
+ });
152
154
  },
153
- async return(value?: TReturn): Promise<IteratorResult<T, TReturn>> {
155
+ return(value?: TReturn): Promise<IteratorResult<T, TReturn>> {
154
156
  return finish(value);
155
157
  },
156
158
  };
@@ -212,7 +214,7 @@ export const iterate: Iterate = (startOrCount?: number, countWhenTwoArgs?: numbe
212
214
  idx++;
213
215
  return { value, done: false };
214
216
  }
215
- return { value: undefined, done: true };
217
+ return ITERATOR_DONE;
216
218
  },
217
219
  return(value) {
218
220
  idx = count;
@@ -284,18 +286,17 @@ export const toAsyncIterable = <T, TReturn, TNext>(iterable: Iterable<T, TReturn
284
286
  [Symbol.asyncIterator]() {
285
287
  const iterator = iterable[Symbol.iterator]();
286
288
  return {
287
- async next(...args: [TNext] | []) {
288
- return iterator.next(...args);
289
+ next(...args: [TNext] | []) {
290
+ return Promise.resolve(iterator.next(...args));
289
291
  },
290
- async return(maybeValue) {
291
- const value = await maybeValue;
292
- return iterator.return?.(value) ?? ({ value, done: true } as IteratorResult<T, TReturn>);
292
+ return(maybeValue) {
293
+ return Promise.resolve(maybeValue).then((value) => iterator.return?.(value) ?? ({ value, done: true } as IteratorResult<T, TReturn>));
293
294
  },
294
- async throw(error) {
295
+ throw(error) {
295
296
  if (iterator.throw) {
296
- return iterator.throw(error);
297
+ return Promise.resolve(iterator.throw(error));
297
298
  }
298
- throw error;
299
+ return Promise.reject(error);
299
300
  },
300
301
  } satisfies AsyncIterator<T, TReturn, TNext>;
301
302
  },
@@ -370,7 +371,7 @@ export const mergeIterables = <T>(...iterables: AsyncIterable<T, void, unknown>[
370
371
  [Symbol.asyncIterator]() {
371
372
  if (iterables.length === 0) {
372
373
  return {
373
- next: async () => ({ value: undefined, done: true }),
374
+ next: () => Promise.resolve(ITERATOR_DONE),
374
375
  };
375
376
  }
376
377
 
@@ -407,18 +408,18 @@ export const mergeIterables = <T>(...iterables: AsyncIterable<T, void, unknown>[
407
408
  return { value, done: false };
408
409
  } catch {
409
410
  if (ctrl.signal.aborted && ctrl.signal.reason === exit) {
410
- return { value: undefined, done: true };
411
+ return ITERATOR_DONE;
411
412
  }
412
413
  throw ctrl.signal.reason;
413
414
  }
414
415
  },
415
416
  return: async () => {
416
417
  ctrl.abort(exit);
417
- return { value: undefined, done: true };
418
+ return ITERATOR_DONE;
418
419
  },
419
420
  throw: async (error?: unknown) => {
420
421
  ctrl.abort(error);
421
- return { value: undefined, done: true };
422
+ return ITERATOR_DONE;
422
423
  },
423
424
  };
424
425
  },