iter-fest 0.1.1-main.f9dfd27 → 0.2.1-main.25af1d2
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/README.md +189 -62
- package/dist/chunk-2BBSIYMU.mjs +10 -0
- package/dist/chunk-2BBSIYMU.mjs.map +1 -0
- package/dist/chunk-2DE3J4J7.mjs +35 -0
- package/dist/chunk-2DE3J4J7.mjs.map +1 -0
- package/dist/chunk-5LYB6HR7.mjs +46 -0
- package/dist/chunk-5LYB6HR7.mjs.map +1 -0
- package/dist/chunk-745JDME6.mjs +10 -0
- package/dist/chunk-745JDME6.mjs.map +1 -0
- package/dist/{chunk-UIEKIMLW.mjs → chunk-AN54W42O.mjs} +8 -5
- package/dist/chunk-AN54W42O.mjs.map +1 -0
- package/dist/chunk-ANRVAYLW.mjs +35 -0
- package/dist/chunk-ANRVAYLW.mjs.map +1 -0
- package/dist/chunk-AUWAPRBT.mjs +10 -0
- package/dist/chunk-AUWAPRBT.mjs.map +1 -0
- package/dist/chunk-BSAPKNNZ.mjs +16 -0
- package/dist/chunk-BSAPKNNZ.mjs.map +1 -0
- package/dist/{chunk-OJMT4K3R.mjs → chunk-BZKIZ3TX.mjs} +2 -2
- package/dist/chunk-BZKIZ3TX.mjs.map +1 -0
- package/dist/chunk-CNCNQPK3.mjs +16 -0
- package/dist/chunk-CNCNQPK3.mjs.map +1 -0
- package/dist/chunk-DSRJWJF3.mjs +10 -0
- package/dist/chunk-DSRJWJF3.mjs.map +1 -0
- package/dist/chunk-DYPZDL4O.mjs +10 -0
- package/dist/chunk-DYPZDL4O.mjs.map +1 -0
- package/dist/chunk-EES7QVUK.mjs +10 -0
- package/dist/chunk-EES7QVUK.mjs.map +1 -0
- package/dist/chunk-EOGNKTFW.mjs +10 -0
- package/dist/chunk-EOGNKTFW.mjs.map +1 -0
- package/dist/{chunk-KONB7TV6.mjs → chunk-EQZQP6GW.mjs} +8 -5
- package/dist/chunk-EQZQP6GW.mjs.map +1 -0
- package/dist/chunk-EXAULUZ6.mjs +10 -0
- package/dist/chunk-EXAULUZ6.mjs.map +1 -0
- package/dist/chunk-EYUTOVZ3.mjs +10 -0
- package/dist/chunk-EYUTOVZ3.mjs.map +1 -0
- package/dist/chunk-FEEBFWAI.mjs +24 -0
- package/dist/chunk-FEEBFWAI.mjs.map +1 -0
- package/dist/{chunk-27NJVC7K.mjs → chunk-H27CTQGV.mjs} +8 -5
- package/dist/chunk-H27CTQGV.mjs.map +1 -0
- package/dist/{chunk-MDBK7ND5.mjs → chunk-H5ARVU55.mjs} +8 -5
- package/dist/chunk-H5ARVU55.mjs.map +1 -0
- package/dist/chunk-HTHDBSFD.mjs +10 -0
- package/dist/chunk-HTHDBSFD.mjs.map +1 -0
- package/dist/chunk-IBEDYMB6.mjs +10 -0
- package/dist/chunk-IBEDYMB6.mjs.map +1 -0
- package/dist/chunk-II2OQXU4.mjs +10 -0
- package/dist/chunk-II2OQXU4.mjs.map +1 -0
- package/dist/{chunk-WKIRSZXX.mjs → chunk-IZXDQ25M.mjs} +8 -5
- package/dist/chunk-IZXDQ25M.mjs.map +1 -0
- package/dist/chunk-J5OJ3I7A.mjs +10 -0
- package/dist/chunk-J5OJ3I7A.mjs.map +1 -0
- package/dist/chunk-JS222K7K.mjs +10 -0
- package/dist/chunk-JS222K7K.mjs.map +1 -0
- package/dist/chunk-KE7SRYHM.mjs +38 -0
- package/dist/chunk-KE7SRYHM.mjs.map +1 -0
- package/dist/chunk-KQYVNSKA.mjs +10 -0
- package/dist/chunk-KQYVNSKA.mjs.map +1 -0
- package/dist/chunk-KXQVMKFK.mjs +10 -0
- package/dist/chunk-KXQVMKFK.mjs.map +1 -0
- package/dist/chunk-MO7HMLOZ.mjs +24 -0
- package/dist/chunk-MO7HMLOZ.mjs.map +1 -0
- package/dist/chunk-MT3HFVKE.mjs +10 -0
- package/dist/chunk-MT3HFVKE.mjs.map +1 -0
- package/dist/chunk-MYSNSDM7.mjs +13 -0
- package/dist/chunk-MYSNSDM7.mjs.map +1 -0
- package/dist/chunk-NZRXO7EY.mjs +24 -0
- package/dist/chunk-NZRXO7EY.mjs.map +1 -0
- package/dist/chunk-OCK7PKGO.mjs +23 -0
- package/dist/chunk-OCK7PKGO.mjs.map +1 -0
- package/dist/chunk-OHH4ICOH.mjs +10 -0
- package/dist/chunk-OHH4ICOH.mjs.map +1 -0
- package/dist/chunk-OHOZ4GTV.mjs +10 -0
- package/dist/chunk-OHOZ4GTV.mjs.map +1 -0
- package/dist/{chunk-EIIP7YWB.mjs → chunk-OVRHHTSG.mjs} +1 -1
- package/dist/chunk-OVRHHTSG.mjs.map +1 -0
- package/dist/chunk-P4OSZLEH.mjs +15 -0
- package/dist/chunk-P4OSZLEH.mjs.map +1 -0
- package/dist/chunk-P7UI3YKU.mjs +10 -0
- package/dist/chunk-P7UI3YKU.mjs.map +1 -0
- package/dist/chunk-PGJSIDLV.mjs +25 -0
- package/dist/chunk-PGJSIDLV.mjs.map +1 -0
- package/dist/chunk-RE7BGAPD.mjs +10 -0
- package/dist/chunk-RE7BGAPD.mjs.map +1 -0
- package/dist/{chunk-FEOLYD5R.mjs → chunk-RHCU757P.mjs} +2 -2
- package/dist/chunk-RHCU757P.mjs.map +1 -0
- package/dist/{chunk-EUVK4YM7.mjs → chunk-RVIERPEV.mjs} +6 -5
- package/dist/chunk-RVIERPEV.mjs.map +1 -0
- package/dist/{chunk-VLF6DI2U.mjs → chunk-TSHK7TEP.mjs} +3 -3
- package/dist/chunk-TSHK7TEP.mjs.map +1 -0
- package/dist/chunk-VP5SFGCE.mjs +10 -0
- package/dist/chunk-VP5SFGCE.mjs.map +1 -0
- package/dist/chunk-VPA3WEBS.mjs +10 -0
- package/dist/chunk-VPA3WEBS.mjs.map +1 -0
- package/dist/chunk-XPZYZEW2.mjs +10 -0
- package/dist/chunk-XPZYZEW2.mjs.map +1 -0
- package/dist/chunk-YJBQPGDC.mjs +10 -0
- package/dist/chunk-YJBQPGDC.mjs.map +1 -0
- package/dist/chunk-YJSIVBF7.mjs +22 -0
- package/dist/chunk-YJSIVBF7.mjs.map +1 -0
- package/dist/iter-fest.asyncGeneratorWithLastValue.d.mts +6 -0
- package/dist/iter-fest.asyncGeneratorWithLastValue.d.ts +6 -0
- package/dist/iter-fest.asyncGeneratorWithLastValue.js +59 -0
- package/dist/iter-fest.asyncGeneratorWithLastValue.js.map +1 -0
- package/dist/iter-fest.asyncGeneratorWithLastValue.mjs +7 -0
- package/dist/iter-fest.asyncIteratorDrop.d.mts +12 -0
- package/dist/iter-fest.asyncIteratorDrop.d.ts +12 -0
- package/dist/iter-fest.asyncIteratorDrop.js +44 -0
- package/dist/iter-fest.asyncIteratorDrop.js.map +1 -0
- package/dist/iter-fest.asyncIteratorDrop.mjs +7 -0
- package/dist/iter-fest.asyncIteratorEvery.d.mts +25 -0
- package/dist/iter-fest.asyncIteratorEvery.d.ts +25 -0
- package/dist/iter-fest.asyncIteratorEvery.js +44 -0
- package/dist/iter-fest.asyncIteratorEvery.js.map +1 -0
- package/dist/iter-fest.asyncIteratorEvery.mjs +7 -0
- package/dist/iter-fest.asyncIteratorFilter.d.mts +18 -0
- package/dist/iter-fest.asyncIteratorFilter.d.ts +18 -0
- package/dist/iter-fest.asyncIteratorFilter.js +44 -0
- package/dist/iter-fest.asyncIteratorFilter.js.map +1 -0
- package/dist/iter-fest.asyncIteratorFilter.mjs +7 -0
- package/dist/iter-fest.asyncIteratorFind.d.mts +14 -0
- package/dist/iter-fest.asyncIteratorFind.d.ts +14 -0
- package/dist/iter-fest.asyncIteratorFind.js +44 -0
- package/dist/iter-fest.asyncIteratorFind.js.map +1 -0
- package/dist/iter-fest.asyncIteratorFind.mjs +7 -0
- package/dist/iter-fest.asyncIteratorFlatMap.d.mts +12 -0
- package/dist/iter-fest.asyncIteratorFlatMap.d.ts +12 -0
- package/dist/iter-fest.asyncIteratorFlatMap.js +44 -0
- package/dist/iter-fest.asyncIteratorFlatMap.js.map +1 -0
- package/dist/iter-fest.asyncIteratorFlatMap.mjs +7 -0
- package/dist/iter-fest.asyncIteratorForEach.d.mts +10 -0
- package/dist/iter-fest.asyncIteratorForEach.d.ts +10 -0
- package/dist/iter-fest.asyncIteratorForEach.js +44 -0
- package/dist/iter-fest.asyncIteratorForEach.js.map +1 -0
- package/dist/iter-fest.asyncIteratorForEach.mjs +7 -0
- package/dist/iter-fest.asyncIteratorFrom.d.mts +10 -0
- package/dist/iter-fest.asyncIteratorFrom.d.ts +10 -0
- package/dist/iter-fest.asyncIteratorFrom.js +44 -0
- package/dist/iter-fest.asyncIteratorFrom.js.map +1 -0
- package/dist/iter-fest.asyncIteratorFrom.mjs +7 -0
- package/dist/iter-fest.asyncIteratorMap.d.mts +10 -0
- package/dist/iter-fest.asyncIteratorMap.d.ts +10 -0
- package/dist/iter-fest.asyncIteratorMap.js +44 -0
- package/dist/iter-fest.asyncIteratorMap.js.map +1 -0
- package/dist/iter-fest.asyncIteratorMap.mjs +7 -0
- package/dist/iter-fest.asyncIteratorReduce.d.mts +23 -0
- package/dist/iter-fest.asyncIteratorReduce.d.ts +23 -0
- package/dist/iter-fest.asyncIteratorReduce.js +44 -0
- package/dist/iter-fest.asyncIteratorReduce.js.map +1 -0
- package/dist/iter-fest.asyncIteratorReduce.mjs +7 -0
- package/dist/iter-fest.asyncIteratorSome.d.mts +10 -0
- package/dist/iter-fest.asyncIteratorSome.d.ts +10 -0
- package/dist/iter-fest.asyncIteratorSome.js +44 -0
- package/dist/iter-fest.asyncIteratorSome.js.map +1 -0
- package/dist/iter-fest.asyncIteratorSome.mjs +7 -0
- package/dist/iter-fest.asyncIteratorTake.d.mts +12 -0
- package/dist/iter-fest.asyncIteratorTake.d.ts +12 -0
- package/dist/iter-fest.asyncIteratorTake.js +44 -0
- package/dist/iter-fest.asyncIteratorTake.js.map +1 -0
- package/dist/iter-fest.asyncIteratorTake.mjs +7 -0
- package/dist/iter-fest.asyncIteratorToArray.d.mts +10 -0
- package/dist/iter-fest.asyncIteratorToArray.d.ts +10 -0
- package/dist/iter-fest.asyncIteratorToArray.js +44 -0
- package/dist/iter-fest.asyncIteratorToArray.js.map +1 -0
- package/dist/iter-fest.asyncIteratorToArray.mjs +7 -0
- package/dist/iter-fest.asyncIteratorToAsyncIterable.d.mts +3 -0
- package/dist/iter-fest.asyncIteratorToAsyncIterable.d.ts +3 -0
- package/dist/{iter-fest.iterableConcat.js → iter-fest.asyncIteratorToAsyncIterable.js} +15 -16
- package/dist/iter-fest.asyncIteratorToAsyncIterable.js.map +1 -0
- package/dist/iter-fest.asyncIteratorToAsyncIterable.mjs +7 -0
- package/dist/iter-fest.d.mts +46 -23
- package/dist/iter-fest.d.ts +46 -23
- package/dist/iter-fest.generatorWithLastValue.d.mts +6 -0
- package/dist/iter-fest.generatorWithLastValue.d.ts +6 -0
- package/dist/iter-fest.generatorWithLastValue.js +59 -0
- package/dist/iter-fest.generatorWithLastValue.js.map +1 -0
- package/dist/iter-fest.generatorWithLastValue.mjs +7 -0
- package/dist/iter-fest.iterableWritableStream.d.mts +7 -0
- package/dist/iter-fest.iterableWritableStream.d.ts +7 -0
- package/dist/{iter-fest.pushAsyncIterableIterator.js → iter-fest.iterableWritableStream.js} +40 -31
- package/dist/iter-fest.iterableWritableStream.js.map +1 -0
- package/dist/iter-fest.iterableWritableStream.mjs +7 -0
- package/dist/{iter-fest.iterableAt.d.mts → iter-fest.iteratorAt.d.mts} +2 -2
- package/dist/{iter-fest.iterableAt.d.ts → iter-fest.iteratorAt.d.ts} +2 -2
- package/dist/{iter-fest.iterableAt.js → iter-fest.iteratorAt.js} +21 -10
- package/dist/iter-fest.iteratorAt.js.map +1 -0
- package/dist/iter-fest.iteratorAt.mjs +9 -0
- package/dist/iter-fest.iteratorConcat.d.mts +16 -0
- package/dist/iter-fest.iteratorConcat.d.ts +16 -0
- package/dist/iter-fest.iteratorConcat.js +56 -0
- package/dist/iter-fest.iteratorConcat.js.map +1 -0
- package/dist/iter-fest.iteratorConcat.mjs +8 -0
- package/dist/iter-fest.iteratorDrop.d.mts +12 -0
- package/dist/iter-fest.iteratorDrop.d.ts +12 -0
- package/dist/iter-fest.iteratorDrop.js +44 -0
- package/dist/iter-fest.iteratorDrop.js.map +1 -0
- package/dist/iter-fest.iteratorDrop.mjs +7 -0
- package/dist/iter-fest.iteratorEntries.d.mts +6 -0
- package/dist/iter-fest.iteratorEntries.d.ts +6 -0
- package/dist/{iter-fest.iterableEntries.js → iter-fest.iteratorEntries.js} +22 -9
- package/dist/iter-fest.iteratorEntries.js.map +1 -0
- package/dist/iter-fest.iteratorEntries.mjs +8 -0
- package/dist/iter-fest.iteratorEvery.d.mts +25 -0
- package/dist/iter-fest.iteratorEvery.d.ts +25 -0
- package/dist/iter-fest.iteratorEvery.js +44 -0
- package/dist/iter-fest.iteratorEvery.js.map +1 -0
- package/dist/iter-fest.iteratorEvery.mjs +7 -0
- package/dist/iter-fest.iteratorFilter.d.mts +18 -0
- package/dist/iter-fest.iteratorFilter.d.ts +18 -0
- package/dist/iter-fest.iteratorFilter.js +44 -0
- package/dist/iter-fest.iteratorFilter.js.map +1 -0
- package/dist/iter-fest.iteratorFilter.mjs +7 -0
- package/dist/iter-fest.iteratorFind.d.mts +14 -0
- package/dist/iter-fest.iteratorFind.d.ts +14 -0
- package/dist/iter-fest.iteratorFind.js +44 -0
- package/dist/iter-fest.iteratorFind.js.map +1 -0
- package/dist/iter-fest.iteratorFind.mjs +7 -0
- package/dist/iter-fest.iteratorFind.mjs.map +1 -0
- package/dist/{iter-fest.iterableFindIndex.d.mts → iter-fest.iteratorFindIndex.d.mts} +4 -4
- package/dist/{iter-fest.iterableFindIndex.d.ts → iter-fest.iteratorFindIndex.d.ts} +4 -4
- package/dist/{iter-fest.iterableFindIndex.js → iter-fest.iteratorFindIndex.js} +23 -10
- package/dist/iter-fest.iteratorFindIndex.js.map +1 -0
- package/dist/iter-fest.iteratorFindIndex.mjs +8 -0
- package/dist/iter-fest.iteratorFindIndex.mjs.map +1 -0
- package/dist/{iter-fest.iterableFindLast.d.mts → iter-fest.iteratorFindLast.d.mts} +5 -5
- package/dist/{iter-fest.iterableFindLast.d.ts → iter-fest.iteratorFindLast.d.ts} +5 -5
- package/dist/{iter-fest.iterableFindLast.js → iter-fest.iteratorFindLast.js} +23 -10
- package/dist/iter-fest.iteratorFindLast.js.map +1 -0
- package/dist/iter-fest.iteratorFindLast.mjs +8 -0
- package/dist/iter-fest.iteratorFindLast.mjs.map +1 -0
- package/dist/{iter-fest.iterableFindLastIndex.d.mts → iter-fest.iteratorFindLastIndex.d.mts} +4 -4
- package/dist/{iter-fest.iterableFindLastIndex.d.ts → iter-fest.iteratorFindLastIndex.d.ts} +4 -4
- package/dist/{iter-fest.iterableFindLastIndex.js → iter-fest.iteratorFindLastIndex.js} +23 -10
- package/dist/iter-fest.iteratorFindLastIndex.js.map +1 -0
- package/dist/iter-fest.iteratorFindLastIndex.mjs +8 -0
- package/dist/iter-fest.iteratorFindLastIndex.mjs.map +1 -0
- package/dist/iter-fest.iteratorFlatMap.d.mts +12 -0
- package/dist/iter-fest.iteratorFlatMap.d.ts +12 -0
- package/dist/iter-fest.iteratorFlatMap.js +44 -0
- package/dist/iter-fest.iteratorFlatMap.js.map +1 -0
- package/dist/iter-fest.iteratorFlatMap.mjs +7 -0
- package/dist/iter-fest.iteratorFlatMap.mjs.map +1 -0
- package/dist/iter-fest.iteratorForEach.d.mts +10 -0
- package/dist/iter-fest.iteratorForEach.d.ts +10 -0
- package/dist/iter-fest.iteratorForEach.js +44 -0
- package/dist/iter-fest.iteratorForEach.js.map +1 -0
- package/dist/iter-fest.iteratorForEach.mjs +7 -0
- package/dist/iter-fest.iteratorForEach.mjs.map +1 -0
- package/dist/iter-fest.iteratorFrom.d.mts +10 -0
- package/dist/iter-fest.iteratorFrom.d.ts +10 -0
- package/dist/iter-fest.iteratorFrom.js +44 -0
- package/dist/iter-fest.iteratorFrom.js.map +1 -0
- package/dist/iter-fest.iteratorFrom.mjs +7 -0
- package/dist/iter-fest.iteratorFrom.mjs.map +1 -0
- package/dist/iter-fest.iteratorIncludes.d.mts +9 -0
- package/dist/iter-fest.iteratorIncludes.d.ts +9 -0
- package/dist/{iter-fest.iterableIncludes.js → iter-fest.iteratorIncludes.js} +21 -10
- package/dist/iter-fest.iteratorIncludes.js.map +1 -0
- package/dist/iter-fest.iteratorIncludes.mjs +9 -0
- package/dist/iter-fest.iteratorIncludes.mjs.map +1 -0
- package/dist/iter-fest.iteratorIndexOf.d.mts +9 -0
- package/dist/iter-fest.iteratorIndexOf.d.ts +9 -0
- package/dist/{iter-fest.iterableIndexOf.js → iter-fest.iteratorIndexOf.js} +21 -10
- package/dist/iter-fest.iteratorIndexOf.js.map +1 -0
- package/dist/iter-fest.iteratorIndexOf.mjs +9 -0
- package/dist/iter-fest.iteratorIndexOf.mjs.map +1 -0
- package/dist/iter-fest.iteratorJoin.d.mts +8 -0
- package/dist/iter-fest.iteratorJoin.d.ts +8 -0
- package/dist/{iter-fest.iterableToString.js → iter-fest.iteratorJoin.js} +21 -15
- package/dist/iter-fest.iteratorJoin.js.map +1 -0
- package/dist/iter-fest.iteratorJoin.mjs +8 -0
- package/dist/iter-fest.iteratorJoin.mjs.map +1 -0
- package/dist/iter-fest.iteratorKeys.d.mts +6 -0
- package/dist/iter-fest.iteratorKeys.d.ts +6 -0
- package/dist/{iter-fest.iterableKeys.js → iter-fest.iteratorKeys.js} +22 -9
- package/dist/iter-fest.iteratorKeys.js.map +1 -0
- package/dist/iter-fest.iteratorKeys.mjs +8 -0
- package/dist/iter-fest.iteratorKeys.mjs.map +1 -0
- package/dist/iter-fest.iteratorMap.d.mts +10 -0
- package/dist/iter-fest.iteratorMap.d.ts +10 -0
- package/dist/iter-fest.iteratorMap.js +44 -0
- package/dist/iter-fest.iteratorMap.js.map +1 -0
- package/dist/iter-fest.iteratorMap.mjs +7 -0
- package/dist/iter-fest.iteratorMap.mjs.map +1 -0
- package/dist/{iter-fest.iterableReduce.d.mts → iter-fest.iteratorReduce.d.mts} +13 -9
- package/dist/{iter-fest.iterableReduce.d.ts → iter-fest.iteratorReduce.d.ts} +13 -9
- package/dist/iter-fest.iteratorReduce.js +44 -0
- package/dist/iter-fest.iteratorReduce.js.map +1 -0
- package/dist/iter-fest.iteratorReduce.mjs +7 -0
- package/dist/iter-fest.iteratorReduce.mjs.map +1 -0
- package/dist/{iter-fest.iterableSlice.d.mts → iter-fest.iteratorSlice.d.mts} +8 -8
- package/dist/{iter-fest.iterableSlice.d.ts → iter-fest.iteratorSlice.d.ts} +8 -8
- package/dist/{iter-fest.iterableSlice.js → iter-fest.iteratorSlice.js} +21 -10
- package/dist/iter-fest.iteratorSlice.js.map +1 -0
- package/dist/iter-fest.iteratorSlice.mjs +9 -0
- package/dist/iter-fest.iteratorSlice.mjs.map +1 -0
- package/dist/iter-fest.iteratorSome.d.mts +10 -0
- package/dist/iter-fest.iteratorSome.d.ts +10 -0
- package/dist/iter-fest.iteratorSome.js +44 -0
- package/dist/iter-fest.iteratorSome.js.map +1 -0
- package/dist/iter-fest.iteratorSome.mjs +7 -0
- package/dist/iter-fest.iteratorSome.mjs.map +1 -0
- package/dist/iter-fest.iteratorTake.d.mts +12 -0
- package/dist/iter-fest.iteratorTake.d.ts +12 -0
- package/dist/iter-fest.iteratorTake.js +44 -0
- package/dist/iter-fest.iteratorTake.js.map +1 -0
- package/dist/iter-fest.iteratorTake.mjs +7 -0
- package/dist/iter-fest.iteratorTake.mjs.map +1 -0
- package/dist/iter-fest.iteratorToArray.d.mts +10 -0
- package/dist/iter-fest.iteratorToArray.d.ts +10 -0
- package/dist/iter-fest.iteratorToArray.js +44 -0
- package/dist/iter-fest.iteratorToArray.js.map +1 -0
- package/dist/iter-fest.iteratorToArray.mjs +7 -0
- package/dist/iter-fest.iteratorToArray.mjs.map +1 -0
- package/dist/iter-fest.iteratorToAsync.d.mts +10 -0
- package/dist/iter-fest.iteratorToAsync.d.ts +10 -0
- package/dist/iter-fest.iteratorToAsync.js +44 -0
- package/dist/iter-fest.iteratorToAsync.js.map +1 -0
- package/dist/iter-fest.iteratorToAsync.mjs +7 -0
- package/dist/iter-fest.iteratorToAsync.mjs.map +1 -0
- package/dist/{iter-fest.iterableToSpliced.d.mts → iter-fest.iteratorToSpliced.d.mts} +3 -3
- package/dist/{iter-fest.iterableToSpliced.d.ts → iter-fest.iteratorToSpliced.d.ts} +3 -3
- package/dist/{iter-fest.iterableToSpliced.js → iter-fest.iteratorToSpliced.js} +21 -10
- package/dist/iter-fest.iteratorToSpliced.js.map +1 -0
- package/dist/iter-fest.iteratorToSpliced.mjs +9 -0
- package/dist/iter-fest.iteratorToSpliced.mjs.map +1 -0
- package/dist/iter-fest.iteratorToString.d.mts +6 -0
- package/dist/iter-fest.iteratorToString.d.ts +6 -0
- package/dist/{iter-fest.iterableJoin.js → iter-fest.iteratorToString.js} +27 -9
- package/dist/iter-fest.iteratorToString.js.map +1 -0
- package/dist/iter-fest.iteratorToString.mjs +9 -0
- package/dist/iter-fest.iteratorToString.mjs.map +1 -0
- package/dist/iter-fest.js +445 -213
- package/dist/iter-fest.js.map +1 -1
- package/dist/iter-fest.mjs +166 -74
- package/dist/iter-fest.observable.d.mts +1 -1
- package/dist/iter-fest.observable.d.ts +1 -1
- package/dist/iter-fest.observable.js +2 -2
- package/dist/iter-fest.observable.js.map +1 -1
- package/dist/iter-fest.observable.mjs +2 -2
- package/dist/iter-fest.observableFromAsync.d.mts +1 -1
- package/dist/iter-fest.observableFromAsync.d.ts +1 -1
- package/dist/iter-fest.observableFromAsync.js +2 -2
- package/dist/iter-fest.observableFromAsync.js.map +1 -1
- package/dist/iter-fest.observableFromAsync.mjs +3 -3
- package/dist/iter-fest.observableSubscribeAsReadable.d.mts +1 -1
- package/dist/iter-fest.observableSubscribeAsReadable.d.ts +1 -1
- package/dist/iter-fest.observableSubscribeAsReadable.js.map +1 -1
- package/dist/iter-fest.observableSubscribeAsReadable.mjs +1 -1
- package/dist/iter-fest.observableValues.d.mts +7 -0
- package/dist/iter-fest.observableValues.d.ts +7 -0
- package/dist/iter-fest.observableValues.js +102 -0
- package/dist/iter-fest.observableValues.js.map +1 -0
- package/dist/iter-fest.observableValues.mjs +9 -0
- package/dist/iter-fest.observableValues.mjs.map +1 -0
- package/dist/iter-fest.readableStreamFrom.d.mts +3 -0
- package/dist/iter-fest.readableStreamFrom.d.ts +3 -0
- package/dist/{iter-fest.iterableFilter.js → iter-fest.readableStreamFrom.js} +21 -17
- package/dist/iter-fest.readableStreamFrom.js.map +1 -0
- package/dist/iter-fest.readableStreamFrom.mjs +7 -0
- package/dist/iter-fest.readableStreamFrom.mjs.map +1 -0
- package/dist/iter-fest.readableStreamValues.d.mts +3 -0
- package/dist/iter-fest.readableStreamValues.d.ts +3 -0
- package/dist/{iter-fest.readerValues.js → iter-fest.readableStreamValues.js} +10 -9
- package/dist/iter-fest.readableStreamValues.js.map +1 -0
- package/dist/iter-fest.readableStreamValues.mjs +7 -0
- package/dist/iter-fest.readableStreamValues.mjs.map +1 -0
- package/dist/iter-fest.symbolObservable.js +1 -1
- package/dist/iter-fest.symbolObservable.js.map +1 -1
- package/dist/iter-fest.symbolObservable.mjs +1 -1
- package/package.json +342 -112
- package/dist/chunk-27NJVC7K.mjs.map +0 -1
- package/dist/chunk-44W7OTNE.mjs +0 -12
- package/dist/chunk-44W7OTNE.mjs.map +0 -1
- package/dist/chunk-5CHMNKXJ.mjs +0 -20
- package/dist/chunk-5CHMNKXJ.mjs.map +0 -1
- package/dist/chunk-5CRMPYKD.mjs +0 -19
- package/dist/chunk-5CRMPYKD.mjs.map +0 -1
- package/dist/chunk-6C3P4TNK.mjs +0 -19
- package/dist/chunk-6C3P4TNK.mjs.map +0 -1
- package/dist/chunk-EIIP7YWB.mjs.map +0 -1
- package/dist/chunk-EUVK4YM7.mjs.map +0 -1
- package/dist/chunk-EZC33HE6.mjs +0 -15
- package/dist/chunk-EZC33HE6.mjs.map +0 -1
- package/dist/chunk-FEOLYD5R.mjs.map +0 -1
- package/dist/chunk-GWZF5BB7.mjs +0 -16
- package/dist/chunk-GWZF5BB7.mjs.map +0 -1
- package/dist/chunk-HYU4EN7J.mjs +0 -20
- package/dist/chunk-HYU4EN7J.mjs.map +0 -1
- package/dist/chunk-JU353VSE.mjs +0 -16
- package/dist/chunk-JU353VSE.mjs.map +0 -1
- package/dist/chunk-KONB7TV6.mjs.map +0 -1
- package/dist/chunk-MDBK7ND5.mjs.map +0 -1
- package/dist/chunk-MNLOWKTC.mjs +0 -19
- package/dist/chunk-MNLOWKTC.mjs.map +0 -1
- package/dist/chunk-O5SQJUKB.mjs +0 -37
- package/dist/chunk-O5SQJUKB.mjs.map +0 -1
- package/dist/chunk-OJMT4K3R.mjs.map +0 -1
- package/dist/chunk-TEI3K6GT.mjs +0 -21
- package/dist/chunk-TEI3K6GT.mjs.map +0 -1
- package/dist/chunk-UIEKIMLW.mjs.map +0 -1
- package/dist/chunk-V6OWQQ3Q.mjs +0 -20
- package/dist/chunk-V6OWQQ3Q.mjs.map +0 -1
- package/dist/chunk-VLF6DI2U.mjs.map +0 -1
- package/dist/chunk-WKIRSZXX.mjs.map +0 -1
- package/dist/chunk-XKBVB2JN.mjs +0 -12
- package/dist/chunk-XKBVB2JN.mjs.map +0 -1
- package/dist/chunk-XW34KZRY.mjs +0 -17
- package/dist/chunk-XW34KZRY.mjs.map +0 -1
- package/dist/chunk-Y5M2C7NQ.mjs +0 -13
- package/dist/chunk-Y5M2C7NQ.mjs.map +0 -1
- package/dist/chunk-ZUBHGSCW.mjs +0 -18
- package/dist/chunk-ZUBHGSCW.mjs.map +0 -1
- package/dist/iter-fest.iterableAt.js.map +0 -1
- package/dist/iter-fest.iterableAt.mjs +0 -8
- package/dist/iter-fest.iterableConcat.d.mts +0 -16
- package/dist/iter-fest.iterableConcat.d.ts +0 -16
- package/dist/iter-fest.iterableConcat.js.map +0 -1
- package/dist/iter-fest.iterableConcat.mjs +0 -7
- package/dist/iter-fest.iterableEntries.d.mts +0 -6
- package/dist/iter-fest.iterableEntries.d.ts +0 -6
- package/dist/iter-fest.iterableEntries.js.map +0 -1
- package/dist/iter-fest.iterableEntries.mjs +0 -7
- package/dist/iter-fest.iterableEvery.d.mts +0 -24
- package/dist/iter-fest.iterableEvery.d.ts +0 -24
- package/dist/iter-fest.iterableEvery.js +0 -43
- package/dist/iter-fest.iterableEvery.js.map +0 -1
- package/dist/iter-fest.iterableEvery.mjs +0 -7
- package/dist/iter-fest.iterableFilter.d.mts +0 -16
- package/dist/iter-fest.iterableFilter.d.ts +0 -16
- package/dist/iter-fest.iterableFilter.js.map +0 -1
- package/dist/iter-fest.iterableFilter.mjs +0 -7
- package/dist/iter-fest.iterableFind.d.mts +0 -15
- package/dist/iter-fest.iterableFind.d.ts +0 -15
- package/dist/iter-fest.iterableFind.js +0 -43
- package/dist/iter-fest.iterableFind.js.map +0 -1
- package/dist/iter-fest.iterableFind.mjs +0 -7
- package/dist/iter-fest.iterableFindIndex.js.map +0 -1
- package/dist/iter-fest.iterableFindIndex.mjs +0 -7
- package/dist/iter-fest.iterableFindLast.js.map +0 -1
- package/dist/iter-fest.iterableFindLast.mjs +0 -7
- package/dist/iter-fest.iterableFindLastIndex.js.map +0 -1
- package/dist/iter-fest.iterableFindLastIndex.mjs +0 -7
- package/dist/iter-fest.iterableForEach.d.mts +0 -10
- package/dist/iter-fest.iterableForEach.d.ts +0 -10
- package/dist/iter-fest.iterableForEach.js +0 -40
- package/dist/iter-fest.iterableForEach.js.map +0 -1
- package/dist/iter-fest.iterableForEach.mjs +0 -7
- package/dist/iter-fest.iterableIncludes.d.mts +0 -9
- package/dist/iter-fest.iterableIncludes.d.ts +0 -9
- package/dist/iter-fest.iterableIncludes.js.map +0 -1
- package/dist/iter-fest.iterableIncludes.mjs +0 -8
- package/dist/iter-fest.iterableIndexOf.d.mts +0 -9
- package/dist/iter-fest.iterableIndexOf.d.ts +0 -9
- package/dist/iter-fest.iterableIndexOf.js.map +0 -1
- package/dist/iter-fest.iterableIndexOf.mjs +0 -8
- package/dist/iter-fest.iterableJoin.d.mts +0 -8
- package/dist/iter-fest.iterableJoin.d.ts +0 -8
- package/dist/iter-fest.iterableJoin.js.map +0 -1
- package/dist/iter-fest.iterableJoin.mjs +0 -7
- package/dist/iter-fest.iterableKeys.d.mts +0 -6
- package/dist/iter-fest.iterableKeys.d.ts +0 -6
- package/dist/iter-fest.iterableKeys.js.map +0 -1
- package/dist/iter-fest.iterableKeys.mjs +0 -7
- package/dist/iter-fest.iterableMap.d.mts +0 -8
- package/dist/iter-fest.iterableMap.d.ts +0 -8
- package/dist/iter-fest.iterableMap.js +0 -39
- package/dist/iter-fest.iterableMap.js.map +0 -1
- package/dist/iter-fest.iterableMap.mjs +0 -7
- package/dist/iter-fest.iterableReduce.js +0 -41
- package/dist/iter-fest.iterableReduce.js.map +0 -1
- package/dist/iter-fest.iterableReduce.mjs +0 -7
- package/dist/iter-fest.iterableSlice.js.map +0 -1
- package/dist/iter-fest.iterableSlice.mjs +0 -8
- package/dist/iter-fest.iterableSome.d.mts +0 -12
- package/dist/iter-fest.iterableSome.d.ts +0 -12
- package/dist/iter-fest.iterableSome.js +0 -43
- package/dist/iter-fest.iterableSome.js.map +0 -1
- package/dist/iter-fest.iterableSome.mjs +0 -7
- package/dist/iter-fest.iterableToSpliced.js.map +0 -1
- package/dist/iter-fest.iterableToSpliced.mjs +0 -8
- package/dist/iter-fest.iterableToString.d.mts +0 -6
- package/dist/iter-fest.iterableToString.d.ts +0 -6
- package/dist/iter-fest.iterableToString.js.map +0 -1
- package/dist/iter-fest.iterableToString.mjs +0 -8
- package/dist/iter-fest.pushAsyncIterableIterator.d.mts +0 -9
- package/dist/iter-fest.pushAsyncIterableIterator.d.ts +0 -9
- package/dist/iter-fest.pushAsyncIterableIterator.js.map +0 -1
- package/dist/iter-fest.pushAsyncIterableIterator.mjs +0 -7
- package/dist/iter-fest.readerValues.d.mts +0 -3
- package/dist/iter-fest.readerValues.d.ts +0 -3
- package/dist/iter-fest.readerValues.js.map +0 -1
- package/dist/iter-fest.readerValues.mjs +0 -7
- /package/dist/{iter-fest.iterableAt.mjs.map → iter-fest.asyncGeneratorWithLastValue.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableConcat.mjs.map → iter-fest.asyncIteratorDrop.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableEntries.mjs.map → iter-fest.asyncIteratorEvery.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableEvery.mjs.map → iter-fest.asyncIteratorFilter.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableFilter.mjs.map → iter-fest.asyncIteratorFind.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableFind.mjs.map → iter-fest.asyncIteratorFlatMap.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableFindIndex.mjs.map → iter-fest.asyncIteratorForEach.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableFindLast.mjs.map → iter-fest.asyncIteratorFrom.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableFindLastIndex.mjs.map → iter-fest.asyncIteratorMap.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableForEach.mjs.map → iter-fest.asyncIteratorReduce.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableIncludes.mjs.map → iter-fest.asyncIteratorSome.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableIndexOf.mjs.map → iter-fest.asyncIteratorTake.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableJoin.mjs.map → iter-fest.asyncIteratorToArray.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableKeys.mjs.map → iter-fest.asyncIteratorToAsyncIterable.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableMap.mjs.map → iter-fest.generatorWithLastValue.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableReduce.mjs.map → iter-fest.iterableWritableStream.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableSlice.mjs.map → iter-fest.iteratorAt.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableSome.mjs.map → iter-fest.iteratorConcat.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableToSpliced.mjs.map → iter-fest.iteratorDrop.mjs.map} +0 -0
- /package/dist/{iter-fest.iterableToString.mjs.map → iter-fest.iteratorEntries.mjs.map} +0 -0
- /package/dist/{iter-fest.pushAsyncIterableIterator.mjs.map → iter-fest.iteratorEvery.mjs.map} +0 -0
- /package/dist/{iter-fest.readerValues.mjs.map → iter-fest.iteratorFilter.mjs.map} +0 -0
package/README.md
CHANGED
|
@@ -16,37 +16,27 @@ Iterables can contains infinite number of items, please use this package respons
|
|
|
16
16
|
npm install iter-fest
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
## Conversions
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
| From | To | Function |
|
|
22
|
+
| -------------------------- | ----------------------- | ------------------------------------------------------------------------------- |
|
|
23
|
+
| `Iterator` | `IterableIterator` | [`iteratorToIterable`](#converting-an-iterator-to-iterable) |
|
|
24
|
+
| `AsyncIterator` | `AsyncIterableIterator` | [`asyncIteratorToAsyncIterable`](#converting-an-iterator-to-iterable) |
|
|
25
|
+
| `Observable` | `ReadableStream` | [`observableSubscribeAsReadable`](#converting-an-observable-to-readablestream) |
|
|
26
|
+
| `ReadableStream` | `AsyncIterableIterator` | [`readableStreamValues`](#converting-a-readablestream-to-asynciterableiterator) |
|
|
27
|
+
| `AsyncIterable` | `Observable` | [`observableFromAsync`](#converting-an-asynciterable-to-observable) |
|
|
28
|
+
| `AsyncIterable`/`Iterable` | `ReadableStream` | [`readableStreamFrom`](#converting-an-asynciterableiterable-to-readablestream) |
|
|
29
|
+
| `Observable` | `AsyncIterableIterator` | [`observableValues`](#converting-an-observable-to-asynciterableiterator) |
|
|
22
30
|
|
|
23
|
-
|
|
24
|
-
import { iterableIncludes, iterableReduce } from 'iter-fest'; // Via default exports.
|
|
25
|
-
import { iterableSome } from 'iter-fest/iterableSome'; // Via named exports.
|
|
31
|
+
### Converting an iterator to iterable
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
```ts
|
|
34
|
+
function iteratorToIterable<T>(iterator: Iterator<T>): IterableIterator<T>
|
|
28
35
|
|
|
29
|
-
|
|
30
|
-
console.log(iterableReduce(iterable, (sum, value) => sum + value, 0)); // Prints "15".
|
|
31
|
-
console.log(iterableSome(iterable, value => value % 2)); // Prints "true".
|
|
36
|
+
function asyncIteratorToAsyncIterable<T>(asyncIterator: AsyncIterator<T>): AsyncIterableIterator<T>
|
|
32
37
|
```
|
|
33
38
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
## Conversions
|
|
37
|
-
|
|
38
|
-
| From | To | Function signature |
|
|
39
|
-
| ----------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
40
|
-
| `Iterator` | `IterableIterator` | [`iteratorToIterable<T>(iterator: Iterator<T>): IterableIterator<T>`](#converting-an-iterator-to-iterable) |
|
|
41
|
-
| `Observable` | `ReadableStream` | [`observableSubscribeAsReadable<T>(observable: Observable<T>): ReadableStream<T>`](#converting-an-observable-to-readablestream) |
|
|
42
|
-
| `ReadableStreamDefaultReader` | `AsyncIterableIterator` | [`readerValues`<T>(reader: ReadableStreamDefaultReader<T>): AsyncIterableIterator<T>`](#iterating-readablestreamdefaultreader) |
|
|
43
|
-
| `AsyncIterable` | `Observable` | [`observableFromAsync<T>(iterator: AsyncIterableIterator<T>): Observable<T>`](#converting-an-asynciterable-to-observable) |
|
|
44
|
-
|
|
45
|
-
To convert `Observable` to `AsyncIterableIterator`, [use `ReadableStream` as intermediate format](#converting-an-observable-to-asynciterableiterator).
|
|
46
|
-
|
|
47
|
-
### Converting an iterator to iterable
|
|
48
|
-
|
|
49
|
-
`iteratorToIterable` enable a [pure iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator) to be iterable using a for-loop statement.
|
|
39
|
+
`iteratorToIterable` and `asyncIteratorToAsyncIterable` enable a [pure iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Iterator) to be iterable using a for-loop statement.
|
|
50
40
|
|
|
51
41
|
```ts
|
|
52
42
|
const iterate = (): Iterator<number> => {
|
|
@@ -58,7 +48,7 @@ const iterate = (): Iterator<number> => {
|
|
|
58
48
|
return { value };
|
|
59
49
|
}
|
|
60
50
|
|
|
61
|
-
return { done: true, value: undefined }
|
|
51
|
+
return { done: true, value: undefined } satisfies IteratorResult<number>;
|
|
62
52
|
}
|
|
63
53
|
};
|
|
64
54
|
};
|
|
@@ -68,26 +58,17 @@ for (const value of iteratorToIterable(iterate())) {
|
|
|
68
58
|
}
|
|
69
59
|
```
|
|
70
60
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
`ReadableStream` can be used to when converting an `Observable` to `AsyncIterableIterator`.
|
|
61
|
+
Note: calling `[Symbol.iterator]()` or `[Symbol.asyncIterator]()` will not restart the iteration. This is because iterator is an instance of iteration and is not restartable.
|
|
74
62
|
|
|
75
|
-
|
|
63
|
+
### Converting an `AsyncIterable` to `Observable`
|
|
76
64
|
|
|
77
65
|
```ts
|
|
78
|
-
|
|
79
|
-
const readable = observableSubscribeAsReadable(observable);
|
|
80
|
-
|
|
81
|
-
for await (const value of readerValues(readable.getReader())) {
|
|
82
|
-
console.log(value); // Prints "1", "2", "3".
|
|
83
|
-
}
|
|
66
|
+
function observableFromAsync<T>(iterable: AsyncIterable<T>): Observable<T>
|
|
84
67
|
```
|
|
85
68
|
|
|
86
|
-
### Converting an `AsyncIterable` to `Observable`
|
|
87
|
-
|
|
88
69
|
`Observable.from` converts `Iterable` into `Observable`. However, it does not convert `AsyncIterable`.
|
|
89
70
|
|
|
90
|
-
`observableFromAsync` will convert `AsyncIterable` into `Observable`.
|
|
71
|
+
`observableFromAsync` will convert `AsyncIterable` into `Observable`. It will try to restart the iteration by calling `[Symbol.asyncIterator]()`.
|
|
91
72
|
|
|
92
73
|
```ts
|
|
93
74
|
async function* generate() {
|
|
@@ -102,7 +83,15 @@ const next = value => console.log(value);
|
|
|
102
83
|
observable.subscribe({ next }); // Prints "1", "2", "3".
|
|
103
84
|
```
|
|
104
85
|
|
|
105
|
-
|
|
86
|
+
Note: `observableFromAsync` will call `[Symbol.asyncIterator]()` initially to restart the iteration where possible.
|
|
87
|
+
|
|
88
|
+
Note: It is not recommended to convert `AsyncGenerator` to an `Observable`. `AsyncGenerator` has more functionalities and `Observable` does not support many of them.
|
|
89
|
+
|
|
90
|
+
### Converting an `Observable` to `ReadableStream`
|
|
91
|
+
|
|
92
|
+
```ts
|
|
93
|
+
function observableSubscribeAsReadable<T>(observable: Observable<T>): ReadableStream<T>
|
|
94
|
+
```
|
|
106
95
|
|
|
107
96
|
`ReadableStream` is powerful for transforming and piping stream of data. It can be formed using data from both push-based and pull-based source with backpressuree.
|
|
108
97
|
|
|
@@ -111,17 +100,20 @@ Note: `Observable` is push-based and it does not support flow control. When conv
|
|
|
111
100
|
```ts
|
|
112
101
|
const observable = Observable.from([1, 2, 3]);
|
|
113
102
|
const readable = observableSubscribeAsReadable(observable);
|
|
114
|
-
const reader = readable.getReader();
|
|
115
103
|
|
|
116
104
|
readable.pipeTo(stream.writable); // Will write 1, 2, 3.
|
|
117
105
|
```
|
|
118
106
|
|
|
119
|
-
###
|
|
107
|
+
### Converting a `ReadableStream` to `AsyncIterableIterator`
|
|
120
108
|
|
|
121
|
-
|
|
109
|
+
```ts
|
|
110
|
+
function readableStreamValues`<T>(readable: ReadableStream<T>): AsyncIterableIterator<T>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
`readableStreamValues` allow iteration of `ReadableStream` as an `AsyncIterableIterator`.
|
|
122
114
|
|
|
123
115
|
```ts
|
|
124
|
-
const
|
|
116
|
+
const readable = new ReadableStream({
|
|
125
117
|
start(controller) {
|
|
126
118
|
controller.enqueue(1);
|
|
127
119
|
controller.enqueue(2);
|
|
@@ -132,11 +124,55 @@ const readableStream = new ReadableStream({
|
|
|
132
124
|
}
|
|
133
125
|
});
|
|
134
126
|
|
|
135
|
-
|
|
127
|
+
const iterable = readableStreamValues(readable);
|
|
128
|
+
|
|
129
|
+
for await (const value of iterable) {
|
|
130
|
+
console.log(value); // Prints "1", "2", "3".
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Note: The stream will be locked as soon as the iterable is created. When using iterating outside of for-loop, make sure to call `AsyncIterator.return` when the iteration is done to release the lock on the stream.
|
|
135
|
+
|
|
136
|
+
Note: `[Symbol.asyncIterator]()` will not restart the stream.
|
|
137
|
+
|
|
138
|
+
### Converting an `AsyncIterable`/`Iterable` to `ReadableStream`
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
function readableStreamFrom<T>(anyIterable: AsyncIterable<T> | Iterable<T>): ReadableStream<T>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
> Notes: this feature is part of [Streams Standard](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/from_static).
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
const iterable = [1, 2, 3].values();
|
|
148
|
+
const readable = readableStreamFrom(iterable);
|
|
149
|
+
|
|
150
|
+
readable.pipeTo(stream.writable); // Will write 1, 2, 3.
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Note: `readableStreamFrom()` will call `[Symbol.iterator]()` initially to restart the iteration where possible.
|
|
154
|
+
|
|
155
|
+
### Converting an `Observable` to `AsyncIterableIterator`
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
function observableValues<T>(observable: Observable<T>): AsyncIterableIterator<T>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`Observable` can be converted to `AsyncIterableIterator` for easier consumption.
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
const observable = Observable.from([1, 2, 3]);
|
|
165
|
+
const iterable = observableValues(readable);
|
|
166
|
+
|
|
167
|
+
for await (const value of iterable) {
|
|
136
168
|
console.log(value); // Prints "1", "2", "3".
|
|
137
169
|
}
|
|
138
170
|
```
|
|
139
171
|
|
|
172
|
+
Note: `Observable` is push-based and it does not support flow control. When converting to `AsyncIterableIterator`, the internal buffer could build up quickly.
|
|
173
|
+
|
|
174
|
+
Note: when the observable throw an exception via `observer.error()`, it will become rejection of `AsyncIterator.next()`. The exception will be hoisted back to the caller.
|
|
175
|
+
|
|
140
176
|
## Others
|
|
141
177
|
|
|
142
178
|
### Typed `Observable`
|
|
@@ -145,14 +181,18 @@ for await (const value of readerValues(readableStream.getReader())) {
|
|
|
145
181
|
|
|
146
182
|
### Producer-consumer queue
|
|
147
183
|
|
|
148
|
-
`
|
|
184
|
+
`IterableWritableStream` is a push-based producer-consumer queue designed to decouple the flow between a producer and multiple consumers. The producer can push a new job at anytime. The consumer can pull a job at its own convenience via for-loop.
|
|
149
185
|
|
|
150
|
-
|
|
186
|
+
`IterableWritableStream` supports multiple consumers and continuation:
|
|
151
187
|
|
|
152
|
-
|
|
188
|
+
- Multiple consumers: when 2 or more consumers are active at the same time, jobs will be distributed across all consumers in a round robin fashion when possible
|
|
189
|
+
- Continuation: when the last consumer disconnected while producer keep pushing new jobs, the next consumer will pick up where the last consumer left
|
|
190
|
+
|
|
191
|
+
Compare to pull-based queue, a push-based queue is easy to use. However, pull-based queue offers better flow control as it will produce a job only if there is a consumer ready to consume.
|
|
153
192
|
|
|
154
193
|
```ts
|
|
155
|
-
const iterable = new
|
|
194
|
+
const iterable = new IterableWritableStream();
|
|
195
|
+
const writer = iterable.getWriter();
|
|
156
196
|
|
|
157
197
|
(async function consumer() {
|
|
158
198
|
for await (const value of iterable) {
|
|
@@ -163,15 +203,99 @@ const iterable = new PushAsyncIterableIterator();
|
|
|
163
203
|
})();
|
|
164
204
|
|
|
165
205
|
(async function producer() {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
206
|
+
writer.write(1);
|
|
207
|
+
writer.write(2);
|
|
208
|
+
writer.write(3);
|
|
209
|
+
writer.close();
|
|
170
210
|
})();
|
|
171
211
|
|
|
172
212
|
// Prints "1", "2", "3", "Done".
|
|
173
213
|
```
|
|
174
214
|
|
|
215
|
+
### Using for-loop with generator
|
|
216
|
+
|
|
217
|
+
Compare to `Iterator`, `Generator` offers advanced capability.
|
|
218
|
+
|
|
219
|
+
When using for-loop with generator, the last value return from the generator is lost.
|
|
220
|
+
|
|
221
|
+
The `generatorWithLastValue()` and `asyncGeneratorWithLastValue()` helps bridge the for-loop usage by capturing the value returned as `{ done: true }` and make it accessible via `lastValue()`.
|
|
222
|
+
|
|
223
|
+
```ts
|
|
224
|
+
const generator = generatorWithLastValue(
|
|
225
|
+
(function* () {
|
|
226
|
+
yield 1; // { done: false, value: 1 }
|
|
227
|
+
yield 2; // { done: false, value: 2 }
|
|
228
|
+
yield 3; // { done: false, value: 3 }
|
|
229
|
+
|
|
230
|
+
return 'end'; // { done: true, value: 'end' }
|
|
231
|
+
})()
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
for (const value of generator) {
|
|
235
|
+
console.log(value); // Prints "1", "2", "3".
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
console.log(generator.lastValue()); // Prints "end".
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Note: `lastValue()` will throw if it is being called before end of iteration. Also, excessive calls to `next()` will return `{ done: true, value: undefined }`, thus, `lastValue()` could become `undefined` if `next()` is called after the end of iteration.
|
|
242
|
+
|
|
243
|
+
The value returned from `generatorWithLastValue()`/`asyncGeneratorWithLastValue()` will passthrough all function calls to original `Generator` with a minor difference. Calling `[Symbol.iterator]()`/`[Symbol.asyncIterator]()` on the returned generator will not start a fresh iteration. If a fresh iteration is required, create a new one before passing it to `generatorWithLastValue()`/`asyncGeneratorWithLastValue()`.
|
|
244
|
+
|
|
245
|
+
```ts
|
|
246
|
+
const generator = generatorWithLastValue(
|
|
247
|
+
(function* () {
|
|
248
|
+
// ...
|
|
249
|
+
})()[Symbol.iterator]() // Creates a fresh iteration.
|
|
250
|
+
);
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Adding types to `core-js-pure`
|
|
254
|
+
|
|
255
|
+
We added types to [Iterator Helpers](https://github.com/tc39/proposal-iterator-helpers) and [Async Iterator Helpers](https://github.com/tc39/proposal-async-iterator-helpers) implementation from `core-js-pure`:
|
|
256
|
+
|
|
257
|
+
- [`Iterator.drop`](https://tc39.es/ecma262/#sec-array.prototype.drop)
|
|
258
|
+
- [`Iterator.every`](https://tc39.es/ecma262/#sec-array.prototype.every)
|
|
259
|
+
- [`Iterator.filter`](https://tc39.es/ecma262/#sec-array.prototype.filter)
|
|
260
|
+
- [`Iterator.find`](https://tc39.es/ecma262/#sec-array.prototype.find)
|
|
261
|
+
- [`Iterator.flatMap`](https://tc39.es/ecma262/#sec-array.prototype.flatmap)
|
|
262
|
+
- [`Iterator.forEach`](https://tc39.es/ecma262/#sec-array.prototype.foreach)
|
|
263
|
+
- [`Iterator.from`](https://tc39.es/ecma262/#sec-array.prototype.from)
|
|
264
|
+
- [`Iterator.map`](https://tc39.es/ecma262/#sec-array.prototype.map)
|
|
265
|
+
- [`Iterator.reduce`](https://tc39.es/ecma262/#sec-array.prototype.reduce)
|
|
266
|
+
- [`Iterator.some`](https://tc39.es/ecma262/#sec-array.prototype.some)
|
|
267
|
+
- [`Iterator.take`](https://tc39.es/ecma262/#sec-array.prototype.take)
|
|
268
|
+
- [`Iterator.toArray`](https://tc39.es/ecma262/#sec-array.prototype.toarray)
|
|
269
|
+
- [`AsyncIterator.drop`](https://tc39.es/ecma262/#sec-array.prototype.drop)
|
|
270
|
+
- [`AsyncIterator.every`](https://tc39.es/ecma262/#sec-array.prototype.every)
|
|
271
|
+
- [`AsyncIterator.filter`](https://tc39.es/ecma262/#sec-array.prototype.filter)
|
|
272
|
+
- [`AsyncIterator.find`](https://tc39.es/ecma262/#sec-array.prototype.find)
|
|
273
|
+
- [`AsyncIterator.flatMap`](https://tc39.es/ecma262/#sec-array.prototype.flatmap)
|
|
274
|
+
- [`AsyncIterator.forEach`](https://tc39.es/ecma262/#sec-array.prototype.foreach)
|
|
275
|
+
- [`AsyncIterator.from`](https://tc39.es/ecma262/#sec-array.prototype.from)
|
|
276
|
+
- [`AsyncIterator.map`](https://tc39.es/ecma262/#sec-array.prototype.map)
|
|
277
|
+
- [`AsyncIterator.reduce`](https://tc39.es/ecma262/#sec-array.prototype.reduce)
|
|
278
|
+
- [`AsyncIterator.some`](https://tc39.es/ecma262/#sec-array.prototype.some)
|
|
279
|
+
- [`AsyncIterator.take`](https://tc39.es/ecma262/#sec-array.prototype.take)
|
|
280
|
+
- [`AsyncIterator.toArray`](https://tc39.es/ecma262/#sec-array.prototype.toarray)
|
|
281
|
+
|
|
282
|
+
## `Array.prototype` ports
|
|
283
|
+
|
|
284
|
+
We ported majority of functions from `Array.prototype.*` to `iterator*`.
|
|
285
|
+
|
|
286
|
+
```ts
|
|
287
|
+
import { iteratorIncludes, iteratorReduce } from 'iter-fest'; // Via default exports.
|
|
288
|
+
import { iteratorSome } from 'iter-fest/iteratorSome'; // Via named exports.
|
|
289
|
+
|
|
290
|
+
const iterator: iterator<number> = [1, 2, 3, 4, 5].values();
|
|
291
|
+
|
|
292
|
+
console.log(iteratorIncludes(iterator, 3)); // Prints "true".
|
|
293
|
+
console.log(iteratorReduce(iterator, (sum, value) => sum + value, 0)); // Prints "15".
|
|
294
|
+
console.log(iteratorSome(iterator, value => value % 2)); // Prints "true".
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
List of ported functions: [`at`](https://tc39.es/ecma262/#sec-array.prototype.at), [`concat`](https://tc39.es/ecma262/#sec-array.prototype.concat), [`entries`](https://tc39.es/ecma262/#sec-array.prototype.entries), [`findIndex`](https://tc39.es/ecma262/#sec-array.prototype.findindex), [`findLast`](https://tc39.es/ecma262/#sec-array.prototype.findlast), [`findLastIndex`](https://tc39.es/ecma262/#sec-array.prototype.findlastindex), [`includes`](https://tc39.es/ecma262/#sec-array.prototype.includes), [`indexOf`](https://tc39.es/ecma262/#sec-array.prototype.indexof), [`join`](https://tc39.es/ecma262/#sec-array.prototype.join), [`keys`](https://tc39.es/ecma262/#sec-array.prototype.keys), [`slice`](https://tc39.es/ecma262/#sec-array.prototype.slice), [`toSpliced`](https://tc39.es/ecma262/#sec-array.prototype.tospliced), and [`toString`](https://tc39.es/ecma262/#sec-array.prototype.tostring).
|
|
298
|
+
|
|
175
299
|
## Behaviors
|
|
176
300
|
|
|
177
301
|
### How this compares to the TC39 proposals?
|
|
@@ -187,27 +311,27 @@ Majority of functions should work the same way with same complexity and performa
|
|
|
187
311
|
There are minor differences on some functions:
|
|
188
312
|
|
|
189
313
|
- `findLast` and `findLastIndex`
|
|
190
|
-
- Instead of iterating from the right side,
|
|
191
|
-
- Thus, with an
|
|
314
|
+
- Instead of iterating from the right side, iterators must start from left side
|
|
315
|
+
- Thus, with an iterator of 5 items, `predicate` will be called exactly 5 times with `O(N)` complexity
|
|
192
316
|
- In contrast, its counterpart in `Array` will be called between 1 and 5 times with `O(log N)` complexity
|
|
193
317
|
- `at`, `includes`, `indexOf`, `slice`, and `toSpliced`
|
|
194
318
|
- Index arguments cannot be negative finite number
|
|
195
|
-
- Negative finite number means traversing from right side, which an iterator
|
|
319
|
+
- Negative finite number means traversing from right side, which an iterator may not have an end
|
|
196
320
|
- Infinites, zeroes, and positive numbers are supported
|
|
197
321
|
|
|
198
322
|
### Why `Array.prototype.push` is not ported?
|
|
199
323
|
|
|
200
|
-
Some functions that modify the array are not ported, such as, `copyWithin`, `fill`, `pop`, `push`, `reverse`, `shift`, `splice`, `unshift`, etc.
|
|
324
|
+
Some functions that modify the array are not ported, such as, `copyWithin`, `fill`, `pop`, `push`, `reverse`, `shift`, `splice`, `unshift`, etc. Iterators are read-only and we prefer to keep it that way.
|
|
201
325
|
|
|
202
|
-
Some functions that do not have actual functionality in the
|
|
326
|
+
Some functions that do not have actual functionality in the iterator world are not ported, such as, `values`, etc.
|
|
203
327
|
|
|
204
328
|
Some functions that cannot not retains their complexity or performance characteristics are not ported. These functions usually iterate from the other end or requires random access, such as, `lastIndexOf`, `reduceRight`, `sort`, `toReversed`, `toSorted`, etc.
|
|
205
329
|
|
|
206
330
|
If you think a specific function should be ported, please submit a pull request to us.
|
|
207
331
|
|
|
208
|
-
### How about asynchronous
|
|
332
|
+
### How about asynchronous iterators?
|
|
209
333
|
|
|
210
|
-
Yes, this is on our roadmap. This will enable traverse
|
|
334
|
+
Yes, this is on our roadmap. This will enable traverse iterators [across domains/workers via `MessagePort`](https://npmjs.com/package/message-port-rpc). We welcome pull requests.
|
|
211
335
|
|
|
212
336
|
### How about functions outside of `Array.prototype`?
|
|
213
337
|
|
|
@@ -220,18 +344,21 @@ Generator has more functionalities than iterator and array. It is not recommende
|
|
|
220
344
|
- Generator can define the return value
|
|
221
345
|
- `return { done: true, value: 'the very last value' }`
|
|
222
346
|
- Iterating generator using for-loop will not get any values from `{ done: true }`
|
|
347
|
+
- The `generatorWithLastValue()` will help capturing and retrieving the last return value
|
|
223
348
|
- Generator can receive feedback values from its iterator
|
|
224
349
|
- `generator.next('something')`, the feedback can be assigned to variable via `const feedback = yield;`
|
|
225
350
|
- For-loop cannot send feedbacks to generator
|
|
226
351
|
|
|
227
352
|
### When should I use `Iterable`, `IterableIterator` and `Iterator`?
|
|
228
353
|
|
|
229
|
-
For best compatibility, you should generally follow this API signature: use `Iterable` for inputs, and use `IterableIterator` for outputs. You should avoid exporting pure `Iterator`.
|
|
354
|
+
For best compatibility, you should generally follow this API signature: use `Iterable` for inputs, and use `IterableIterator` for outputs. You should avoid exporting pure `Iterator`. Sample function signature should looks below.
|
|
230
355
|
|
|
231
356
|
```ts
|
|
232
|
-
function
|
|
357
|
+
function myFunction<T>(input: Iterable<T>): IterableIterator<T>;
|
|
233
358
|
```
|
|
234
359
|
|
|
360
|
+
`IterableIterator` may opt to support restarting the iteration through `[Symbol.iterator]()`. When consuming an `IterableIterator`, you should call `[Symbol.iterator]()` to obtain a fresh iteration or use for-loop statement if possible. However, `[Symbol.iterator]()` is an opt-in feature and does not always guarantee a fresh iteration.
|
|
361
|
+
|
|
235
362
|
### What is on the roadmap?
|
|
236
363
|
|
|
237
364
|
We are planning to bring iterables and its siblings together, including:
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// src/iteratorReduce.ts
|
|
2
|
+
import reduce from "core-js-pure/full/iterator/reduce.js";
|
|
3
|
+
function iteratorReduce(iterator, callbackfn, initialValue) {
|
|
4
|
+
return reduce(iterator, callbackfn, initialValue);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
iteratorReduce
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=chunk-2BBSIYMU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/iteratorReduce.ts"],"sourcesContent":["// @ts-expect-error core-js-pure is not typed.\nimport reduce from 'core-js-pure/full/iterator/reduce.js';\n\n/**\n * Calls the specified callback function for all the elements in an iterator. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n *\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the iterator.\n *\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an iterator value.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function iteratorReduce<T>(\n iterator: Iterator<T>,\n callbackfn: (previousValue: T, currentValue: T, currentIndex: number) => T\n): T;\n\nexport function iteratorReduce<T>(\n iterator: Iterator<T>,\n callbackfn: (previousValue: T, currentValue: T, currentIndex: number) => T,\n initialValue: T\n): T;\n\n/**\n * Calls the specified callback function for all the elements in an iterator. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.\n *\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the iterator.\n *\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function iteratorReduce<T, U>(\n iterator: Iterator<T>,\n callbackfn: (previousValue: U, currentValue: T, currentIndex: number) => U,\n initialValue: U\n): U;\n\nexport function iteratorReduce<T, U = undefined>(\n iterator: Iterator<T>,\n callbackfn: (previousValue: U | undefined, currentValue: T, currentIndex: number) => U,\n initialValue?: U\n): U | undefined {\n return reduce(iterator, callbackfn, initialValue);\n}\n"],"mappings":";AACA,OAAO,YAAY;AAqCZ,SAAS,eACd,UACA,YACA,cACe;AACf,SAAO,OAAO,UAAU,YAAY,YAAY;AAClD;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// src/generatorWithLastValue.ts
|
|
2
|
+
var STILL_ITERATING = Symbol();
|
|
3
|
+
function generatorWithLastValue(generator) {
|
|
4
|
+
let lastValue = STILL_ITERATING;
|
|
5
|
+
const generatorWithLastValue2 = {
|
|
6
|
+
[Symbol.iterator]() {
|
|
7
|
+
return generatorWithLastValue2;
|
|
8
|
+
},
|
|
9
|
+
lastValue() {
|
|
10
|
+
if (lastValue === STILL_ITERATING) {
|
|
11
|
+
throw new Error("Iteration has not complete yet, cannot get last value.");
|
|
12
|
+
}
|
|
13
|
+
return lastValue;
|
|
14
|
+
},
|
|
15
|
+
next(next) {
|
|
16
|
+
const result = generator.next(next);
|
|
17
|
+
if (result.done) {
|
|
18
|
+
lastValue = result.value;
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
},
|
|
22
|
+
return(value) {
|
|
23
|
+
return generator.return(value);
|
|
24
|
+
},
|
|
25
|
+
throw(error) {
|
|
26
|
+
return generator.throw(error);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
return generatorWithLastValue2;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
generatorWithLastValue
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=chunk-2DE3J4J7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/generatorWithLastValue.ts"],"sourcesContent":["const STILL_ITERATING = Symbol();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type GeneratorWithLastValue<T = unknown, TReturn = any, TNext = unknown> = Generator<T, TReturn, TNext> & {\n lastValue(): TReturn;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function generatorWithLastValue<T = unknown, TReturn = any, TNext = unknown>(\n generator: Generator<T, TReturn, TNext>\n): GeneratorWithLastValue<T, TReturn, TNext> {\n let lastValue: typeof STILL_ITERATING | TReturn = STILL_ITERATING;\n\n const generatorWithLastValue = {\n [Symbol.iterator]() {\n return generatorWithLastValue;\n },\n lastValue(): TReturn {\n if (lastValue === STILL_ITERATING) {\n throw new Error('Iteration has not complete yet, cannot get last value.');\n }\n\n return lastValue;\n },\n next(next: TNext) {\n const result = generator.next(next);\n\n if (result.done) {\n lastValue = result.value;\n }\n\n return result;\n },\n return(value: TReturn) {\n return generator.return(value);\n },\n throw(error: unknown) {\n return generator.throw(error);\n }\n };\n\n return generatorWithLastValue;\n}\n"],"mappings":";AAAA,IAAM,kBAAkB,OAAO;AAQxB,SAAS,uBACd,WAC2C;AAC3C,MAAI,YAA8C;AAElD,QAAMA,0BAAyB;AAAA,IAC7B,CAAC,OAAO,QAAQ,IAAI;AAClB,aAAOA;AAAA,IACT;AAAA,IACA,YAAqB;AACnB,UAAI,cAAc,iBAAiB;AACjC,cAAM,IAAI,MAAM,wDAAwD;AAAA,MAC1E;AAEA,aAAO;AAAA,IACT;AAAA,IACA,KAAK,MAAa;AAChB,YAAM,SAAS,UAAU,KAAK,IAAI;AAElC,UAAI,OAAO,MAAM;AACf,oBAAY,OAAO;AAAA,MACrB;AAEA,aAAO;AAAA,IACT;AAAA,IACA,OAAO,OAAgB;AACrB,aAAO,UAAU,OAAO,KAAK;AAAA,IAC/B;AAAA,IACA,MAAM,OAAgB;AACpB,aAAO,UAAU,MAAM,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,SAAOA;AACT;","names":["generatorWithLastValue"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// src/private/withResolvers.ts
|
|
2
|
+
import coreJSPromiseWithResolvers from "core-js-pure/full/promise/with-resolvers.js";
|
|
3
|
+
function withResolvers() {
|
|
4
|
+
return coreJSPromiseWithResolvers();
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
// src/iterableWritableStream.ts
|
|
8
|
+
var CLOSE = Symbol();
|
|
9
|
+
var IterableWritableStream = class extends WritableStream {
|
|
10
|
+
constructor() {
|
|
11
|
+
super({
|
|
12
|
+
close: () => {
|
|
13
|
+
this.#buffer.push(CLOSE);
|
|
14
|
+
this.#writeResolvers.resolve();
|
|
15
|
+
},
|
|
16
|
+
write: (chunk) => {
|
|
17
|
+
this.#buffer.push(chunk);
|
|
18
|
+
this.#writeResolvers.resolve();
|
|
19
|
+
this.#writeResolvers = withResolvers();
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
#buffer = [];
|
|
24
|
+
#writeResolvers = withResolvers();
|
|
25
|
+
[Symbol.asyncIterator]() {
|
|
26
|
+
return {
|
|
27
|
+
next: async () => {
|
|
28
|
+
while (!this.#buffer.length) {
|
|
29
|
+
await this.#writeResolvers.promise;
|
|
30
|
+
}
|
|
31
|
+
const value = this.#buffer[0];
|
|
32
|
+
if (value === CLOSE) {
|
|
33
|
+
return { done: true, value: void 0 };
|
|
34
|
+
}
|
|
35
|
+
this.#buffer.shift();
|
|
36
|
+
await void 0;
|
|
37
|
+
return { done: false, value };
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export {
|
|
44
|
+
IterableWritableStream
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=chunk-5LYB6HR7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/private/withResolvers.ts","../src/iterableWritableStream.ts"],"sourcesContent":["// @ts-expect-error \"core-js\" is not typed.\nimport coreJSPromiseWithResolvers from 'core-js-pure/full/promise/with-resolvers.js';\n\nexport default function withResolvers<T>(): PromiseWithResolvers<T> {\n return coreJSPromiseWithResolvers();\n}\n","import withResolvers from './private/withResolvers';\n\nconst CLOSE = Symbol();\n\nexport class IterableWritableStream<T> extends WritableStream<T> {\n constructor() {\n super({\n close: () => {\n this.#buffer.push(CLOSE);\n this.#writeResolvers.resolve();\n },\n write: (chunk: T) => {\n this.#buffer.push(chunk);\n this.#writeResolvers.resolve();\n this.#writeResolvers = withResolvers();\n }\n });\n }\n\n #buffer: (T | typeof CLOSE)[] = [];\n #writeResolvers: PromiseWithResolvers<void> = withResolvers();\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return {\n next: async () => {\n while (!this.#buffer.length) {\n await this.#writeResolvers.promise;\n }\n\n const value = this.#buffer[0] as T | typeof CLOSE;\n\n if (value === CLOSE) {\n return { done: true, value: undefined };\n }\n\n // If it is not CLOSE, remove it from the queue.\n this.#buffer.shift();\n\n // Idle here so concurrent iteration has a chance to pick up the next value in a round robin fashion.\n await undefined;\n\n return { done: false, value };\n }\n };\n }\n}\n"],"mappings":";AACA,OAAO,gCAAgC;AAExB,SAAR,gBAA6D;AAClE,SAAO,2BAA2B;AACpC;;;ACHA,IAAM,QAAQ,OAAO;AAEd,IAAM,yBAAN,cAAwC,eAAkB;AAAA,EAC/D,cAAc;AACZ,UAAM;AAAA,MACJ,OAAO,MAAM;AACX,aAAK,QAAQ,KAAK,KAAK;AACvB,aAAK,gBAAgB,QAAQ;AAAA,MAC/B;AAAA,MACA,OAAO,CAAC,UAAa;AACnB,aAAK,QAAQ,KAAK,KAAK;AACvB,aAAK,gBAAgB,QAAQ;AAC7B,aAAK,kBAAkB,cAAc;AAAA,MACvC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,UAAgC,CAAC;AAAA,EACjC,kBAA8C,cAAc;AAAA,EAE5D,CAAC,OAAO,aAAa,IAAsB;AACzC,WAAO;AAAA,MACL,MAAM,YAAY;AAChB,eAAO,CAAC,KAAK,QAAQ,QAAQ;AAC3B,gBAAM,KAAK,gBAAgB;AAAA,QAC7B;AAEA,cAAM,QAAQ,KAAK,QAAQ,CAAC;AAE5B,YAAI,UAAU,OAAO;AACnB,iBAAO,EAAE,MAAM,MAAM,OAAO,OAAU;AAAA,QACxC;AAGA,aAAK,QAAQ,MAAM;AAGnB,cAAM;AAEN,eAAO,EAAE,MAAM,OAAO,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// src/asyncIteratorToArray.ts
|
|
2
|
+
import toArray from "core-js-pure/full/async-iterator/to-array.js";
|
|
3
|
+
function asyncIteratorToArray(asyncIteratorLike) {
|
|
4
|
+
return toArray(asyncIteratorLike);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
asyncIteratorToArray
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=chunk-745JDME6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/asyncIteratorToArray.ts"],"sourcesContent":["// @ts-expect-error core-js-pure is not typed.\nimport toArray from 'core-js-pure/full/async-iterator/to-array.js';\n\n/**\n * When you have a non-infinite iterator which you wish to transform into an array, you can do so with the builtin toArray method.\n *\n * @return Returns an Array containing the values from the iterator.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function asyncIteratorToArray<T>(asyncIteratorLike: Pick<AsyncIterator<T>, 'next'>): Promise<T[]> {\n return toArray(asyncIteratorLike);\n}\n"],"mappings":";AACA,OAAO,aAAa;AASb,SAAS,qBAAwB,mBAAiE;AACvG,SAAO,QAAQ,iBAAiB;AAClC;","names":[]}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
toIntegerOrInfinity
|
|
3
3
|
} from "./chunk-W5NEOEVE.mjs";
|
|
4
|
+
import {
|
|
5
|
+
iteratorToIterable
|
|
6
|
+
} from "./chunk-MNDAEMYM.mjs";
|
|
4
7
|
|
|
5
|
-
// src/
|
|
6
|
-
function
|
|
8
|
+
// src/iteratorIndexOf.ts
|
|
9
|
+
function iteratorIndexOf(iterator, searchElement, fromIndex = 0) {
|
|
7
10
|
let index = 0;
|
|
8
11
|
fromIndex = toIntegerOrInfinity(fromIndex);
|
|
9
12
|
if (fromIndex !== Infinity) {
|
|
@@ -11,7 +14,7 @@ function iterableIndexOf(iterable, searchElement, fromIndex = 0) {
|
|
|
11
14
|
if (fromIndex < 0) {
|
|
12
15
|
throw new TypeError("fromIndex cannot be a negative finite number");
|
|
13
16
|
}
|
|
14
|
-
for (const item of
|
|
17
|
+
for (const item of iteratorToIterable(iterator)) {
|
|
15
18
|
if (index >= fromIndex && Object.is(item, searchElement)) {
|
|
16
19
|
return index;
|
|
17
20
|
}
|
|
@@ -22,6 +25,6 @@ function iterableIndexOf(iterable, searchElement, fromIndex = 0) {
|
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
export {
|
|
25
|
-
|
|
28
|
+
iteratorIndexOf
|
|
26
29
|
};
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-AN54W42O.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/iteratorIndexOf.ts"],"sourcesContent":["import { iteratorToIterable } from './iteratorToIterable';\nimport toIntegerOrInfinity from './private/toIntegerOrInfinity';\n\n/**\n * Returns the index of the first occurrence of a value in an iterator, or -1 if it is not present.\n *\n * @param searchElement The value to locate in the iterator.\n * @param fromIndex The iterator index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\n */\nexport function iteratorIndexOf<T>(iterator: Iterator<T>, searchElement: T, fromIndex: number = 0): number {\n let index = 0;\n\n fromIndex = toIntegerOrInfinity(fromIndex);\n\n if (fromIndex !== Infinity) {\n fromIndex = fromIndex === -Infinity ? 0 : fromIndex;\n\n if (fromIndex < 0) {\n // TODO: Support negative fromIndex.\n throw new TypeError('fromIndex cannot be a negative finite number');\n }\n\n for (const item of iteratorToIterable(iterator)) {\n if (index >= fromIndex && Object.is(item, searchElement)) {\n return index;\n }\n\n index++;\n }\n }\n\n return -1;\n}\n"],"mappings":";;;;;;;;AASO,SAAS,gBAAmB,UAAuB,eAAkB,YAAoB,GAAW;AACzG,MAAI,QAAQ;AAEZ,cAAY,oBAAoB,SAAS;AAEzC,MAAI,cAAc,UAAU;AAC1B,gBAAY,cAAc,YAAY,IAAI;AAE1C,QAAI,YAAY,GAAG;AAEjB,YAAM,IAAI,UAAU,8CAA8C;AAAA,IACpE;AAEA,eAAW,QAAQ,mBAAmB,QAAQ,GAAG;AAC/C,UAAI,SAAS,aAAa,OAAO,GAAG,MAAM,aAAa,GAAG;AACxD,eAAO;AAAA,MACT;AAEA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// src/asyncGeneratorWithLastValue.ts
|
|
2
|
+
var STILL_ITERATING = Symbol();
|
|
3
|
+
function asyncGeneratorWithLastValue(generator) {
|
|
4
|
+
let lastValue = STILL_ITERATING;
|
|
5
|
+
const asyncGeneratorWithLastValue2 = {
|
|
6
|
+
[Symbol.asyncIterator]() {
|
|
7
|
+
return asyncGeneratorWithLastValue2;
|
|
8
|
+
},
|
|
9
|
+
lastValue() {
|
|
10
|
+
if (lastValue === STILL_ITERATING) {
|
|
11
|
+
throw new Error("Iteration has not complete yet, cannot get last value.");
|
|
12
|
+
}
|
|
13
|
+
return lastValue;
|
|
14
|
+
},
|
|
15
|
+
async next(next) {
|
|
16
|
+
const result = await generator.next(next);
|
|
17
|
+
if (result.done) {
|
|
18
|
+
lastValue = result.value;
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
},
|
|
22
|
+
return(value) {
|
|
23
|
+
return generator.return(value);
|
|
24
|
+
},
|
|
25
|
+
throw(error) {
|
|
26
|
+
return generator.throw(error);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
return asyncGeneratorWithLastValue2;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
asyncGeneratorWithLastValue
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=chunk-ANRVAYLW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/asyncGeneratorWithLastValue.ts"],"sourcesContent":["const STILL_ITERATING = Symbol();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AsyncGeneratorWithLastValue<T = unknown, TReturn = any, TNext = unknown> = AsyncGenerator<\n T,\n TReturn,\n TNext\n> & {\n lastValue(): TReturn;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function asyncGeneratorWithLastValue<T = unknown, TReturn = any, TNext = unknown>(\n generator: AsyncGenerator<T, TReturn, TNext>\n): AsyncGeneratorWithLastValue<T, TReturn, TNext> {\n let lastValue: typeof STILL_ITERATING | TReturn = STILL_ITERATING;\n\n const asyncGeneratorWithLastValue = {\n [Symbol.asyncIterator]() {\n return asyncGeneratorWithLastValue;\n },\n lastValue(): TReturn {\n if (lastValue === STILL_ITERATING) {\n throw new Error('Iteration has not complete yet, cannot get last value.');\n }\n\n return lastValue;\n },\n async next(next: TNext) {\n const result = await generator.next(next);\n\n if (result.done) {\n lastValue = result.value;\n }\n\n return result;\n },\n return(value: TReturn) {\n return generator.return(value);\n },\n throw(error: unknown) {\n return generator.throw(error);\n }\n };\n\n return asyncGeneratorWithLastValue;\n}\n"],"mappings":";AAAA,IAAM,kBAAkB,OAAO;AAYxB,SAAS,4BACd,WACgD;AAChD,MAAI,YAA8C;AAElD,QAAMA,+BAA8B;AAAA,IAClC,CAAC,OAAO,aAAa,IAAI;AACvB,aAAOA;AAAA,IACT;AAAA,IACA,YAAqB;AACnB,UAAI,cAAc,iBAAiB;AACjC,cAAM,IAAI,MAAM,wDAAwD;AAAA,MAC1E;AAEA,aAAO;AAAA,IACT;AAAA,IACA,MAAM,KAAK,MAAa;AACtB,YAAM,SAAS,MAAM,UAAU,KAAK,IAAI;AAExC,UAAI,OAAO,MAAM;AACf,oBAAY,OAAO;AAAA,MACrB;AAEA,aAAO;AAAA,IACT;AAAA,IACA,OAAO,OAAgB;AACrB,aAAO,UAAU,OAAO,KAAK;AAAA,IAC/B;AAAA,IACA,MAAM,OAAgB;AACpB,aAAO,UAAU,MAAM,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,SAAOA;AACT;","names":["asyncGeneratorWithLastValue"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// src/asyncIteratorFind.ts
|
|
2
|
+
import find from "core-js-pure/full/async-iterator/find.js";
|
|
3
|
+
function asyncIteratorFind(asyncIterator, predicate) {
|
|
4
|
+
return find(asyncIterator, predicate);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
asyncIteratorFind
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=chunk-AUWAPRBT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/asyncIteratorFind.ts"],"sourcesContent":["// @ts-expect-error core-js-pure is not typed.\nimport find from 'core-js-pure/full/async-iterator/find.js';\n\n/**\n * Returns the value of the first element in the iterator where predicate is true, and undefined\n * otherwise.\n *\n * @param predicate find calls predicate once for each element of the iterator, in ascending\n * order, until it finds one where predicate returns true. If such an element is found, find\n * immediately returns that element value. Otherwise, find returns undefined.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function asyncIteratorFind<T, S extends T>(\n asyncIterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => Promise<boolean>\n): Promise<S | undefined>;\n\nexport function asyncIteratorFind<T>(\n asyncIterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => Promise<unknown>\n): Promise<T | undefined>;\n\nexport function asyncIteratorFind<T, S extends T>(\n asyncIterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => Promise<unknown>\n): Promise<S | undefined> {\n return find(asyncIterator, predicate);\n}\n"],"mappings":";AACA,OAAO,UAAU;AAsBV,SAAS,kBACd,eACA,WACwB;AACxB,SAAO,KAAK,eAAe,SAAS;AACtC;","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
iteratorToIterable
|
|
3
|
+
} from "./chunk-MNDAEMYM.mjs";
|
|
4
|
+
|
|
5
|
+
// src/iteratorEntries.ts
|
|
6
|
+
function* iteratorEntries(iterator) {
|
|
7
|
+
let index = 0;
|
|
8
|
+
for (const value of iteratorToIterable(iterator)) {
|
|
9
|
+
yield [index++, value];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
iteratorEntries
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=chunk-BSAPKNNZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/iteratorEntries.ts"],"sourcesContent":["import { iteratorToIterable } from './iteratorToIterable';\n\n/**\n * Returns an iterator of key, value pairs for every entry in the iterator\n */\nexport function* iteratorEntries<T>(iterator: Iterator<T>): IterableIterator<[number, T]> {\n let index = 0;\n\n for (const value of iteratorToIterable(iterator)) {\n yield [index++, value];\n }\n}\n"],"mappings":";;;;;AAKO,UAAU,gBAAmB,UAAsD;AACxF,MAAI,QAAQ;AAEZ,aAAW,SAAS,mBAAmB,QAAQ,GAAG;AAChD,UAAM,CAAC,SAAS,KAAK;AAAA,EACvB;AACF;","names":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/SymbolObservable.ts
|
|
2
|
-
import CoreJSSymbolObservable from "core-js-pure/features/symbol/observable";
|
|
2
|
+
import CoreJSSymbolObservable from "core-js-pure/features/symbol/observable.js";
|
|
3
3
|
var SymbolObservable = CoreJSSymbolObservable;
|
|
4
4
|
|
|
5
5
|
export {
|
|
6
6
|
SymbolObservable
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=chunk-
|
|
8
|
+
//# sourceMappingURL=chunk-BZKIZ3TX.mjs.map
|