iter-fest 0.1.1-main.94e44fc → 0.1.1-main.b1e260f

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 (467) hide show
  1. package/README.md +147 -71
  2. package/dist/chunk-3S6LCGE6.mjs +10 -0
  3. package/dist/chunk-3S6LCGE6.mjs.map +1 -0
  4. package/dist/chunk-4RT2FROS.mjs +10 -0
  5. package/dist/chunk-4RT2FROS.mjs.map +1 -0
  6. package/dist/chunk-4ZBMXHD6.mjs +10 -0
  7. package/dist/chunk-4ZBMXHD6.mjs.map +1 -0
  8. package/dist/chunk-72AEHTPQ.mjs +38 -0
  9. package/dist/chunk-72AEHTPQ.mjs.map +1 -0
  10. package/dist/{chunk-UIEKIMLW.mjs → chunk-AN54W42O.mjs} +8 -5
  11. package/dist/chunk-AN54W42O.mjs.map +1 -0
  12. package/dist/chunk-AOZVPHE4.mjs +10 -0
  13. package/dist/chunk-AOZVPHE4.mjs.map +1 -0
  14. package/dist/chunk-BSAPKNNZ.mjs +16 -0
  15. package/dist/chunk-BSAPKNNZ.mjs.map +1 -0
  16. package/dist/chunk-BWMXKULC.mjs +46 -0
  17. package/dist/chunk-BWMXKULC.mjs.map +1 -0
  18. package/dist/chunk-CNCNQPK3.mjs +16 -0
  19. package/dist/chunk-CNCNQPK3.mjs.map +1 -0
  20. package/dist/chunk-CNKIGQUS.mjs +10 -0
  21. package/dist/chunk-CNKIGQUS.mjs.map +1 -0
  22. package/dist/chunk-DC2ZV7KQ.mjs +10 -0
  23. package/dist/chunk-DC2ZV7KQ.mjs.map +1 -0
  24. package/dist/{chunk-KONB7TV6.mjs → chunk-EQZQP6GW.mjs} +8 -5
  25. package/dist/chunk-EQZQP6GW.mjs.map +1 -0
  26. package/dist/chunk-FBST4AUL.mjs +10 -0
  27. package/dist/chunk-FBST4AUL.mjs.map +1 -0
  28. package/dist/chunk-FEEBFWAI.mjs +24 -0
  29. package/dist/chunk-FEEBFWAI.mjs.map +1 -0
  30. package/dist/chunk-FMIHIL6A.mjs +10 -0
  31. package/dist/chunk-FMIHIL6A.mjs.map +1 -0
  32. package/dist/chunk-GFJGWVES.mjs +10 -0
  33. package/dist/chunk-GFJGWVES.mjs.map +1 -0
  34. package/dist/{chunk-27NJVC7K.mjs → chunk-H27CTQGV.mjs} +8 -5
  35. package/dist/chunk-H27CTQGV.mjs.map +1 -0
  36. package/dist/{chunk-MDBK7ND5.mjs → chunk-H5ARVU55.mjs} +8 -5
  37. package/dist/chunk-H5ARVU55.mjs.map +1 -0
  38. package/dist/{chunk-WKIRSZXX.mjs → chunk-IZXDQ25M.mjs} +8 -5
  39. package/dist/chunk-IZXDQ25M.mjs.map +1 -0
  40. package/dist/chunk-J3FQSENW.mjs +10 -0
  41. package/dist/chunk-J3FQSENW.mjs.map +1 -0
  42. package/dist/chunk-JVR6BUJA.mjs +10 -0
  43. package/dist/chunk-JVR6BUJA.mjs.map +1 -0
  44. package/dist/chunk-K4RCFPTZ.mjs +10 -0
  45. package/dist/chunk-K4RCFPTZ.mjs.map +1 -0
  46. package/dist/chunk-LB3MK3EU.mjs +10 -0
  47. package/dist/chunk-LB3MK3EU.mjs.map +1 -0
  48. package/dist/chunk-LIMQXDFK.mjs +10 -0
  49. package/dist/chunk-LIMQXDFK.mjs.map +1 -0
  50. package/dist/chunk-MO7HMLOZ.mjs +24 -0
  51. package/dist/chunk-MO7HMLOZ.mjs.map +1 -0
  52. package/dist/chunk-MYSNSDM7.mjs +13 -0
  53. package/dist/chunk-MYSNSDM7.mjs.map +1 -0
  54. package/dist/chunk-NLXKATXE.mjs +10 -0
  55. package/dist/chunk-NLXKATXE.mjs.map +1 -0
  56. package/dist/chunk-NZRXO7EY.mjs +24 -0
  57. package/dist/chunk-NZRXO7EY.mjs.map +1 -0
  58. package/dist/chunk-OCK7PKGO.mjs +23 -0
  59. package/dist/chunk-OCK7PKGO.mjs.map +1 -0
  60. package/dist/chunk-ODPKEUIR.mjs +10 -0
  61. package/dist/chunk-ODPKEUIR.mjs.map +1 -0
  62. package/dist/chunk-OWUGLCQB.mjs +10 -0
  63. package/dist/chunk-OWUGLCQB.mjs.map +1 -0
  64. package/dist/chunk-PGJSIDLV.mjs +25 -0
  65. package/dist/chunk-PGJSIDLV.mjs.map +1 -0
  66. package/dist/chunk-QLVU73KN.mjs +10 -0
  67. package/dist/chunk-QLVU73KN.mjs.map +1 -0
  68. package/dist/chunk-R6SXIXMH.mjs +10 -0
  69. package/dist/chunk-R6SXIXMH.mjs.map +1 -0
  70. package/dist/{chunk-EUVK4YM7.mjs → chunk-RVIERPEV.mjs} +6 -5
  71. package/dist/chunk-RVIERPEV.mjs.map +1 -0
  72. package/dist/chunk-S2LECQKY.mjs +10 -0
  73. package/dist/chunk-S2LECQKY.mjs.map +1 -0
  74. package/dist/chunk-TDHR35S7.mjs +10 -0
  75. package/dist/chunk-TDHR35S7.mjs.map +1 -0
  76. package/dist/chunk-VCKLUCOT.mjs +10 -0
  77. package/dist/chunk-VCKLUCOT.mjs.map +1 -0
  78. package/dist/chunk-VIMGYUMQ.mjs +10 -0
  79. package/dist/chunk-VIMGYUMQ.mjs.map +1 -0
  80. package/dist/chunk-WUFMEPOM.mjs +10 -0
  81. package/dist/chunk-WUFMEPOM.mjs.map +1 -0
  82. package/dist/chunk-XQDGXAAF.mjs +10 -0
  83. package/dist/chunk-XQDGXAAF.mjs.map +1 -0
  84. package/dist/{chunk-MOBXUTO5.mjs → chunk-YJSIVBF7.mjs} +5 -5
  85. package/dist/chunk-YJSIVBF7.mjs.map +1 -0
  86. package/dist/iter-fest.asyncIteratorDrop.d.mts +12 -0
  87. package/dist/iter-fest.asyncIteratorDrop.d.ts +12 -0
  88. package/dist/iter-fest.asyncIteratorDrop.js +44 -0
  89. package/dist/iter-fest.asyncIteratorDrop.js.map +1 -0
  90. package/dist/iter-fest.asyncIteratorDrop.mjs +7 -0
  91. package/dist/iter-fest.asyncIteratorEvery.d.mts +25 -0
  92. package/dist/iter-fest.asyncIteratorEvery.d.ts +25 -0
  93. package/dist/iter-fest.asyncIteratorEvery.js +44 -0
  94. package/dist/iter-fest.asyncIteratorEvery.js.map +1 -0
  95. package/dist/iter-fest.asyncIteratorEvery.mjs +7 -0
  96. package/dist/iter-fest.asyncIteratorFilter.d.mts +18 -0
  97. package/dist/iter-fest.asyncIteratorFilter.d.ts +18 -0
  98. package/dist/iter-fest.asyncIteratorFilter.js +44 -0
  99. package/dist/iter-fest.asyncIteratorFilter.js.map +1 -0
  100. package/dist/iter-fest.asyncIteratorFilter.mjs +7 -0
  101. package/dist/iter-fest.asyncIteratorFind.d.mts +14 -0
  102. package/dist/iter-fest.asyncIteratorFind.d.ts +14 -0
  103. package/dist/iter-fest.asyncIteratorFind.js +44 -0
  104. package/dist/iter-fest.asyncIteratorFind.js.map +1 -0
  105. package/dist/iter-fest.asyncIteratorFind.mjs +7 -0
  106. package/dist/iter-fest.asyncIteratorFlatMap.d.mts +12 -0
  107. package/dist/iter-fest.asyncIteratorFlatMap.d.ts +12 -0
  108. package/dist/iter-fest.asyncIteratorFlatMap.js +44 -0
  109. package/dist/iter-fest.asyncIteratorFlatMap.js.map +1 -0
  110. package/dist/iter-fest.asyncIteratorFlatMap.mjs +7 -0
  111. package/dist/iter-fest.asyncIteratorForEach.d.mts +10 -0
  112. package/dist/iter-fest.asyncIteratorForEach.d.ts +10 -0
  113. package/dist/iter-fest.asyncIteratorForEach.js +44 -0
  114. package/dist/iter-fest.asyncIteratorForEach.js.map +1 -0
  115. package/dist/iter-fest.asyncIteratorForEach.mjs +7 -0
  116. package/dist/iter-fest.asyncIteratorFrom.d.mts +10 -0
  117. package/dist/iter-fest.asyncIteratorFrom.d.ts +10 -0
  118. package/dist/iter-fest.asyncIteratorFrom.js +44 -0
  119. package/dist/iter-fest.asyncIteratorFrom.js.map +1 -0
  120. package/dist/iter-fest.asyncIteratorFrom.mjs +7 -0
  121. package/dist/iter-fest.asyncIteratorMap.d.mts +10 -0
  122. package/dist/iter-fest.asyncIteratorMap.d.ts +10 -0
  123. package/dist/iter-fest.asyncIteratorMap.js +44 -0
  124. package/dist/iter-fest.asyncIteratorMap.js.map +1 -0
  125. package/dist/iter-fest.asyncIteratorMap.mjs +7 -0
  126. package/dist/iter-fest.asyncIteratorReduce.d.mts +23 -0
  127. package/dist/iter-fest.asyncIteratorReduce.d.ts +23 -0
  128. package/dist/iter-fest.asyncIteratorReduce.js +44 -0
  129. package/dist/iter-fest.asyncIteratorReduce.js.map +1 -0
  130. package/dist/iter-fest.asyncIteratorReduce.mjs +7 -0
  131. package/dist/iter-fest.asyncIteratorSome.d.mts +10 -0
  132. package/dist/iter-fest.asyncIteratorSome.d.ts +10 -0
  133. package/dist/iter-fest.asyncIteratorSome.js +44 -0
  134. package/dist/iter-fest.asyncIteratorSome.js.map +1 -0
  135. package/dist/iter-fest.asyncIteratorSome.mjs +7 -0
  136. package/dist/iter-fest.asyncIteratorTake.d.mts +12 -0
  137. package/dist/iter-fest.asyncIteratorTake.d.ts +12 -0
  138. package/dist/iter-fest.asyncIteratorTake.js +44 -0
  139. package/dist/iter-fest.asyncIteratorTake.js.map +1 -0
  140. package/dist/iter-fest.asyncIteratorTake.mjs +7 -0
  141. package/dist/iter-fest.asyncIteratorToArray.d.mts +10 -0
  142. package/dist/iter-fest.asyncIteratorToArray.d.ts +10 -0
  143. package/dist/iter-fest.asyncIteratorToArray.js +44 -0
  144. package/dist/iter-fest.asyncIteratorToArray.js.map +1 -0
  145. package/dist/iter-fest.asyncIteratorToArray.mjs +7 -0
  146. package/dist/iter-fest.d.mts +42 -23
  147. package/dist/iter-fest.d.ts +42 -23
  148. package/dist/iter-fest.iterableWritableStream.d.mts +7 -0
  149. package/dist/iter-fest.iterableWritableStream.d.ts +7 -0
  150. package/dist/{iter-fest.pushAsyncIterableIterator.js → iter-fest.iterableWritableStream.js} +39 -30
  151. package/dist/iter-fest.iterableWritableStream.js.map +1 -0
  152. package/dist/iter-fest.iterableWritableStream.mjs +7 -0
  153. package/dist/{iter-fest.iterableAt.d.ts → iter-fest.iteratorAt.d.mts} +2 -2
  154. package/dist/{iter-fest.iterableAt.d.mts → iter-fest.iteratorAt.d.ts} +2 -2
  155. package/dist/{iter-fest.iterableAt.js → iter-fest.iteratorAt.js} +21 -10
  156. package/dist/iter-fest.iteratorAt.js.map +1 -0
  157. package/dist/iter-fest.iteratorAt.mjs +9 -0
  158. package/dist/iter-fest.iteratorConcat.d.mts +16 -0
  159. package/dist/iter-fest.iteratorConcat.d.ts +16 -0
  160. package/dist/{iter-fest.iterableConcat.js → iter-fest.iteratorConcat.js} +27 -11
  161. package/dist/iter-fest.iteratorConcat.js.map +1 -0
  162. package/dist/iter-fest.iteratorConcat.mjs +8 -0
  163. package/dist/iter-fest.iteratorDrop.d.mts +12 -0
  164. package/dist/iter-fest.iteratorDrop.d.ts +12 -0
  165. package/dist/iter-fest.iteratorDrop.js +44 -0
  166. package/dist/iter-fest.iteratorDrop.js.map +1 -0
  167. package/dist/iter-fest.iteratorDrop.mjs +7 -0
  168. package/dist/iter-fest.iteratorEntries.d.mts +6 -0
  169. package/dist/iter-fest.iteratorEntries.d.ts +6 -0
  170. package/dist/{iter-fest.iterableEntries.js → iter-fest.iteratorEntries.js} +22 -9
  171. package/dist/iter-fest.iteratorEntries.js.map +1 -0
  172. package/dist/iter-fest.iteratorEntries.mjs +8 -0
  173. package/dist/iter-fest.iteratorEvery.d.mts +25 -0
  174. package/dist/iter-fest.iteratorEvery.d.ts +25 -0
  175. package/dist/iter-fest.iteratorEvery.js +44 -0
  176. package/dist/iter-fest.iteratorEvery.js.map +1 -0
  177. package/dist/iter-fest.iteratorEvery.mjs +7 -0
  178. package/dist/iter-fest.iteratorFilter.d.mts +18 -0
  179. package/dist/iter-fest.iteratorFilter.d.ts +18 -0
  180. package/dist/iter-fest.iteratorFilter.js +44 -0
  181. package/dist/iter-fest.iteratorFilter.js.map +1 -0
  182. package/dist/iter-fest.iteratorFilter.mjs +7 -0
  183. package/dist/iter-fest.iteratorFind.d.mts +14 -0
  184. package/dist/iter-fest.iteratorFind.d.ts +14 -0
  185. package/dist/iter-fest.iteratorFind.js +44 -0
  186. package/dist/iter-fest.iteratorFind.js.map +1 -0
  187. package/dist/iter-fest.iteratorFind.mjs +7 -0
  188. package/dist/{iter-fest.iterableFindIndex.d.mts → iter-fest.iteratorFindIndex.d.mts} +4 -4
  189. package/dist/{iter-fest.iterableFindIndex.d.ts → iter-fest.iteratorFindIndex.d.ts} +4 -4
  190. package/dist/{iter-fest.iterableFindIndex.js → iter-fest.iteratorFindIndex.js} +23 -10
  191. package/dist/iter-fest.iteratorFindIndex.js.map +1 -0
  192. package/dist/iter-fest.iteratorFindIndex.mjs +8 -0
  193. package/dist/{iter-fest.iterableFindLast.d.mts → iter-fest.iteratorFindLast.d.mts} +5 -5
  194. package/dist/{iter-fest.iterableFindLast.d.ts → iter-fest.iteratorFindLast.d.ts} +5 -5
  195. package/dist/{iter-fest.iterableFindLast.js → iter-fest.iteratorFindLast.js} +23 -10
  196. package/dist/iter-fest.iteratorFindLast.js.map +1 -0
  197. package/dist/iter-fest.iteratorFindLast.mjs +8 -0
  198. package/dist/{iter-fest.iterableFindLastIndex.d.mts → iter-fest.iteratorFindLastIndex.d.mts} +4 -4
  199. package/dist/{iter-fest.iterableFindLastIndex.d.ts → iter-fest.iteratorFindLastIndex.d.ts} +4 -4
  200. package/dist/{iter-fest.iterableFindLastIndex.js → iter-fest.iteratorFindLastIndex.js} +23 -10
  201. package/dist/iter-fest.iteratorFindLastIndex.js.map +1 -0
  202. package/dist/iter-fest.iteratorFindLastIndex.mjs +8 -0
  203. package/dist/iter-fest.iteratorFlatMap.d.mts +12 -0
  204. package/dist/iter-fest.iteratorFlatMap.d.ts +12 -0
  205. package/dist/iter-fest.iteratorFlatMap.js +44 -0
  206. package/dist/iter-fest.iteratorFlatMap.js.map +1 -0
  207. package/dist/iter-fest.iteratorFlatMap.mjs +7 -0
  208. package/dist/iter-fest.iteratorFlatMap.mjs.map +1 -0
  209. package/dist/iter-fest.iteratorForEach.d.mts +10 -0
  210. package/dist/iter-fest.iteratorForEach.d.ts +10 -0
  211. package/dist/iter-fest.iteratorForEach.js +44 -0
  212. package/dist/iter-fest.iteratorForEach.js.map +1 -0
  213. package/dist/iter-fest.iteratorForEach.mjs +7 -0
  214. package/dist/iter-fest.iteratorForEach.mjs.map +1 -0
  215. package/dist/iter-fest.iteratorFrom.d.mts +10 -0
  216. package/dist/iter-fest.iteratorFrom.d.ts +10 -0
  217. package/dist/iter-fest.iteratorFrom.js +44 -0
  218. package/dist/iter-fest.iteratorFrom.js.map +1 -0
  219. package/dist/iter-fest.iteratorFrom.mjs +7 -0
  220. package/dist/iter-fest.iteratorFrom.mjs.map +1 -0
  221. package/dist/iter-fest.iteratorIncludes.d.mts +9 -0
  222. package/dist/iter-fest.iteratorIncludes.d.ts +9 -0
  223. package/dist/{iter-fest.iterableIncludes.js → iter-fest.iteratorIncludes.js} +21 -10
  224. package/dist/iter-fest.iteratorIncludes.js.map +1 -0
  225. package/dist/iter-fest.iteratorIncludes.mjs +9 -0
  226. package/dist/iter-fest.iteratorIncludes.mjs.map +1 -0
  227. package/dist/iter-fest.iteratorIndexOf.d.mts +9 -0
  228. package/dist/iter-fest.iteratorIndexOf.d.ts +9 -0
  229. package/dist/{iter-fest.iterableIndexOf.js → iter-fest.iteratorIndexOf.js} +21 -10
  230. package/dist/iter-fest.iteratorIndexOf.js.map +1 -0
  231. package/dist/iter-fest.iteratorIndexOf.mjs +9 -0
  232. package/dist/iter-fest.iteratorIndexOf.mjs.map +1 -0
  233. package/dist/iter-fest.iteratorJoin.d.mts +8 -0
  234. package/dist/iter-fest.iteratorJoin.d.ts +8 -0
  235. package/dist/{iter-fest.iterableToString.js → iter-fest.iteratorJoin.js} +21 -15
  236. package/dist/iter-fest.iteratorJoin.js.map +1 -0
  237. package/dist/iter-fest.iteratorJoin.mjs +8 -0
  238. package/dist/iter-fest.iteratorJoin.mjs.map +1 -0
  239. package/dist/iter-fest.iteratorKeys.d.mts +6 -0
  240. package/dist/iter-fest.iteratorKeys.d.ts +6 -0
  241. package/dist/{iter-fest.iterableKeys.js → iter-fest.iteratorKeys.js} +22 -9
  242. package/dist/iter-fest.iteratorKeys.js.map +1 -0
  243. package/dist/iter-fest.iteratorKeys.mjs +8 -0
  244. package/dist/iter-fest.iteratorKeys.mjs.map +1 -0
  245. package/dist/iter-fest.iteratorMap.d.mts +10 -0
  246. package/dist/iter-fest.iteratorMap.d.ts +10 -0
  247. package/dist/iter-fest.iteratorMap.js +44 -0
  248. package/dist/iter-fest.iteratorMap.js.map +1 -0
  249. package/dist/iter-fest.iteratorMap.mjs +7 -0
  250. package/dist/iter-fest.iteratorMap.mjs.map +1 -0
  251. package/dist/{iter-fest.iterableReduce.d.mts → iter-fest.iteratorReduce.d.mts} +13 -9
  252. package/dist/{iter-fest.iterableReduce.d.ts → iter-fest.iteratorReduce.d.ts} +13 -9
  253. package/dist/iter-fest.iteratorReduce.js +44 -0
  254. package/dist/iter-fest.iteratorReduce.js.map +1 -0
  255. package/dist/iter-fest.iteratorReduce.mjs +7 -0
  256. package/dist/iter-fest.iteratorReduce.mjs.map +1 -0
  257. package/dist/{iter-fest.iterableSlice.d.mts → iter-fest.iteratorSlice.d.mts} +8 -8
  258. package/dist/{iter-fest.iterableSlice.d.ts → iter-fest.iteratorSlice.d.ts} +8 -8
  259. package/dist/{iter-fest.iterableSlice.js → iter-fest.iteratorSlice.js} +21 -10
  260. package/dist/iter-fest.iteratorSlice.js.map +1 -0
  261. package/dist/iter-fest.iteratorSlice.mjs +9 -0
  262. package/dist/iter-fest.iteratorSlice.mjs.map +1 -0
  263. package/dist/iter-fest.iteratorSome.d.mts +10 -0
  264. package/dist/iter-fest.iteratorSome.d.ts +10 -0
  265. package/dist/iter-fest.iteratorSome.js +44 -0
  266. package/dist/iter-fest.iteratorSome.js.map +1 -0
  267. package/dist/iter-fest.iteratorSome.mjs +7 -0
  268. package/dist/iter-fest.iteratorSome.mjs.map +1 -0
  269. package/dist/iter-fest.iteratorTake.d.mts +12 -0
  270. package/dist/iter-fest.iteratorTake.d.ts +12 -0
  271. package/dist/iter-fest.iteratorTake.js +44 -0
  272. package/dist/iter-fest.iteratorTake.js.map +1 -0
  273. package/dist/iter-fest.iteratorTake.mjs +7 -0
  274. package/dist/iter-fest.iteratorTake.mjs.map +1 -0
  275. package/dist/iter-fest.iteratorToArray.d.mts +10 -0
  276. package/dist/iter-fest.iteratorToArray.d.ts +10 -0
  277. package/dist/iter-fest.iteratorToArray.js +44 -0
  278. package/dist/iter-fest.iteratorToArray.js.map +1 -0
  279. package/dist/iter-fest.iteratorToArray.mjs +7 -0
  280. package/dist/iter-fest.iteratorToArray.mjs.map +1 -0
  281. package/dist/iter-fest.iteratorToAsync.d.mts +10 -0
  282. package/dist/iter-fest.iteratorToAsync.d.ts +10 -0
  283. package/dist/iter-fest.iteratorToAsync.js +44 -0
  284. package/dist/iter-fest.iteratorToAsync.js.map +1 -0
  285. package/dist/iter-fest.iteratorToAsync.mjs +7 -0
  286. package/dist/iter-fest.iteratorToAsync.mjs.map +1 -0
  287. package/dist/{iter-fest.iterableToSpliced.d.mts → iter-fest.iteratorToSpliced.d.mts} +3 -3
  288. package/dist/{iter-fest.iterableToSpliced.d.ts → iter-fest.iteratorToSpliced.d.ts} +3 -3
  289. package/dist/{iter-fest.iterableToSpliced.js → iter-fest.iteratorToSpliced.js} +21 -10
  290. package/dist/iter-fest.iteratorToSpliced.js.map +1 -0
  291. package/dist/iter-fest.iteratorToSpliced.mjs +9 -0
  292. package/dist/iter-fest.iteratorToSpliced.mjs.map +1 -0
  293. package/dist/iter-fest.iteratorToString.d.mts +6 -0
  294. package/dist/iter-fest.iteratorToString.d.ts +6 -0
  295. package/dist/{iter-fest.iterableJoin.js → iter-fest.iteratorToString.js} +27 -9
  296. package/dist/iter-fest.iteratorToString.js.map +1 -0
  297. package/dist/iter-fest.iteratorToString.mjs +9 -0
  298. package/dist/iter-fest.iteratorToString.mjs.map +1 -0
  299. package/dist/iter-fest.js +370 -237
  300. package/dist/iter-fest.js.map +1 -1
  301. package/dist/iter-fest.mjs +152 -76
  302. package/dist/iter-fest.observableValues.d.mts +7 -0
  303. package/dist/iter-fest.observableValues.d.ts +7 -0
  304. package/dist/iter-fest.observableValues.js +102 -0
  305. package/dist/iter-fest.observableValues.js.map +1 -0
  306. package/dist/iter-fest.observableValues.mjs +9 -0
  307. package/dist/iter-fest.observableValues.mjs.map +1 -0
  308. package/dist/iter-fest.readableStreamFrom.d.mts +3 -0
  309. package/dist/iter-fest.readableStreamFrom.d.ts +3 -0
  310. package/dist/{iter-fest.iterableGetReadable.js → iter-fest.readableStreamFrom.js} +9 -9
  311. package/dist/iter-fest.readableStreamFrom.js.map +1 -0
  312. package/dist/iter-fest.readableStreamFrom.mjs +7 -0
  313. package/dist/iter-fest.readableStreamFrom.mjs.map +1 -0
  314. package/dist/iter-fest.readableStreamValues.d.mts +3 -0
  315. package/dist/iter-fest.readableStreamValues.d.ts +3 -0
  316. package/dist/{iter-fest.readerValues.js → iter-fest.readableStreamValues.js} +10 -9
  317. package/dist/iter-fest.readableStreamValues.js.map +1 -0
  318. package/dist/iter-fest.readableStreamValues.mjs +7 -0
  319. package/dist/iter-fest.readableStreamValues.mjs.map +1 -0
  320. package/package.json +307 -117
  321. package/dist/chunk-27NJVC7K.mjs.map +0 -1
  322. package/dist/chunk-44W7OTNE.mjs +0 -12
  323. package/dist/chunk-44W7OTNE.mjs.map +0 -1
  324. package/dist/chunk-5CHMNKXJ.mjs +0 -20
  325. package/dist/chunk-5CHMNKXJ.mjs.map +0 -1
  326. package/dist/chunk-5CRMPYKD.mjs +0 -19
  327. package/dist/chunk-5CRMPYKD.mjs.map +0 -1
  328. package/dist/chunk-6C3P4TNK.mjs +0 -19
  329. package/dist/chunk-6C3P4TNK.mjs.map +0 -1
  330. package/dist/chunk-EUVK4YM7.mjs.map +0 -1
  331. package/dist/chunk-EZC33HE6.mjs +0 -15
  332. package/dist/chunk-EZC33HE6.mjs.map +0 -1
  333. package/dist/chunk-GWZF5BB7.mjs +0 -16
  334. package/dist/chunk-GWZF5BB7.mjs.map +0 -1
  335. package/dist/chunk-HYU4EN7J.mjs +0 -20
  336. package/dist/chunk-HYU4EN7J.mjs.map +0 -1
  337. package/dist/chunk-JU353VSE.mjs +0 -16
  338. package/dist/chunk-JU353VSE.mjs.map +0 -1
  339. package/dist/chunk-KONB7TV6.mjs.map +0 -1
  340. package/dist/chunk-MDBK7ND5.mjs.map +0 -1
  341. package/dist/chunk-MNLOWKTC.mjs +0 -19
  342. package/dist/chunk-MNLOWKTC.mjs.map +0 -1
  343. package/dist/chunk-MOBXUTO5.mjs.map +0 -1
  344. package/dist/chunk-O5SQJUKB.mjs +0 -37
  345. package/dist/chunk-O5SQJUKB.mjs.map +0 -1
  346. package/dist/chunk-TEI3K6GT.mjs +0 -21
  347. package/dist/chunk-TEI3K6GT.mjs.map +0 -1
  348. package/dist/chunk-UIEKIMLW.mjs.map +0 -1
  349. package/dist/chunk-V6OWQQ3Q.mjs +0 -20
  350. package/dist/chunk-V6OWQQ3Q.mjs.map +0 -1
  351. package/dist/chunk-WKIRSZXX.mjs.map +0 -1
  352. package/dist/chunk-XKBVB2JN.mjs +0 -12
  353. package/dist/chunk-XKBVB2JN.mjs.map +0 -1
  354. package/dist/chunk-XW34KZRY.mjs +0 -17
  355. package/dist/chunk-XW34KZRY.mjs.map +0 -1
  356. package/dist/chunk-Y5M2C7NQ.mjs +0 -13
  357. package/dist/chunk-Y5M2C7NQ.mjs.map +0 -1
  358. package/dist/chunk-ZUBHGSCW.mjs +0 -18
  359. package/dist/chunk-ZUBHGSCW.mjs.map +0 -1
  360. package/dist/iter-fest.iterableAt.js.map +0 -1
  361. package/dist/iter-fest.iterableAt.mjs +0 -8
  362. package/dist/iter-fest.iterableConcat.d.mts +0 -16
  363. package/dist/iter-fest.iterableConcat.d.ts +0 -16
  364. package/dist/iter-fest.iterableConcat.js.map +0 -1
  365. package/dist/iter-fest.iterableConcat.mjs +0 -7
  366. package/dist/iter-fest.iterableEntries.d.mts +0 -6
  367. package/dist/iter-fest.iterableEntries.d.ts +0 -6
  368. package/dist/iter-fest.iterableEntries.js.map +0 -1
  369. package/dist/iter-fest.iterableEntries.mjs +0 -7
  370. package/dist/iter-fest.iterableEvery.d.mts +0 -24
  371. package/dist/iter-fest.iterableEvery.d.ts +0 -24
  372. package/dist/iter-fest.iterableEvery.js +0 -43
  373. package/dist/iter-fest.iterableEvery.js.map +0 -1
  374. package/dist/iter-fest.iterableEvery.mjs +0 -7
  375. package/dist/iter-fest.iterableFilter.d.mts +0 -16
  376. package/dist/iter-fest.iterableFilter.d.ts +0 -16
  377. package/dist/iter-fest.iterableFilter.js +0 -42
  378. package/dist/iter-fest.iterableFilter.js.map +0 -1
  379. package/dist/iter-fest.iterableFilter.mjs +0 -7
  380. package/dist/iter-fest.iterableFind.d.mts +0 -15
  381. package/dist/iter-fest.iterableFind.d.ts +0 -15
  382. package/dist/iter-fest.iterableFind.js +0 -43
  383. package/dist/iter-fest.iterableFind.js.map +0 -1
  384. package/dist/iter-fest.iterableFind.mjs +0 -7
  385. package/dist/iter-fest.iterableFindIndex.js.map +0 -1
  386. package/dist/iter-fest.iterableFindIndex.mjs +0 -7
  387. package/dist/iter-fest.iterableFindLast.js.map +0 -1
  388. package/dist/iter-fest.iterableFindLast.mjs +0 -7
  389. package/dist/iter-fest.iterableFindLastIndex.js.map +0 -1
  390. package/dist/iter-fest.iterableFindLastIndex.mjs +0 -7
  391. package/dist/iter-fest.iterableForEach.d.mts +0 -10
  392. package/dist/iter-fest.iterableForEach.d.ts +0 -10
  393. package/dist/iter-fest.iterableForEach.js +0 -40
  394. package/dist/iter-fest.iterableForEach.js.map +0 -1
  395. package/dist/iter-fest.iterableForEach.mjs +0 -7
  396. package/dist/iter-fest.iterableGetReadable.d.mts +0 -3
  397. package/dist/iter-fest.iterableGetReadable.d.ts +0 -3
  398. package/dist/iter-fest.iterableGetReadable.js.map +0 -1
  399. package/dist/iter-fest.iterableGetReadable.mjs +0 -7
  400. package/dist/iter-fest.iterableIncludes.d.mts +0 -9
  401. package/dist/iter-fest.iterableIncludes.d.ts +0 -9
  402. package/dist/iter-fest.iterableIncludes.js.map +0 -1
  403. package/dist/iter-fest.iterableIncludes.mjs +0 -8
  404. package/dist/iter-fest.iterableIndexOf.d.mts +0 -9
  405. package/dist/iter-fest.iterableIndexOf.d.ts +0 -9
  406. package/dist/iter-fest.iterableIndexOf.js.map +0 -1
  407. package/dist/iter-fest.iterableIndexOf.mjs +0 -8
  408. package/dist/iter-fest.iterableJoin.d.mts +0 -8
  409. package/dist/iter-fest.iterableJoin.d.ts +0 -8
  410. package/dist/iter-fest.iterableJoin.js.map +0 -1
  411. package/dist/iter-fest.iterableJoin.mjs +0 -7
  412. package/dist/iter-fest.iterableKeys.d.mts +0 -6
  413. package/dist/iter-fest.iterableKeys.d.ts +0 -6
  414. package/dist/iter-fest.iterableKeys.js.map +0 -1
  415. package/dist/iter-fest.iterableKeys.mjs +0 -7
  416. package/dist/iter-fest.iterableMap.d.mts +0 -8
  417. package/dist/iter-fest.iterableMap.d.ts +0 -8
  418. package/dist/iter-fest.iterableMap.js +0 -39
  419. package/dist/iter-fest.iterableMap.js.map +0 -1
  420. package/dist/iter-fest.iterableMap.mjs +0 -7
  421. package/dist/iter-fest.iterableReduce.js +0 -41
  422. package/dist/iter-fest.iterableReduce.js.map +0 -1
  423. package/dist/iter-fest.iterableReduce.mjs +0 -7
  424. package/dist/iter-fest.iterableSlice.js.map +0 -1
  425. package/dist/iter-fest.iterableSlice.mjs +0 -8
  426. package/dist/iter-fest.iterableSome.d.mts +0 -12
  427. package/dist/iter-fest.iterableSome.d.ts +0 -12
  428. package/dist/iter-fest.iterableSome.js +0 -43
  429. package/dist/iter-fest.iterableSome.js.map +0 -1
  430. package/dist/iter-fest.iterableSome.mjs +0 -7
  431. package/dist/iter-fest.iterableToSpliced.js.map +0 -1
  432. package/dist/iter-fest.iterableToSpliced.mjs +0 -8
  433. package/dist/iter-fest.iterableToString.d.mts +0 -6
  434. package/dist/iter-fest.iterableToString.d.ts +0 -6
  435. package/dist/iter-fest.iterableToString.js.map +0 -1
  436. package/dist/iter-fest.iterableToString.mjs +0 -8
  437. package/dist/iter-fest.pushAsyncIterableIterator.d.mts +0 -9
  438. package/dist/iter-fest.pushAsyncIterableIterator.d.ts +0 -9
  439. package/dist/iter-fest.pushAsyncIterableIterator.js.map +0 -1
  440. package/dist/iter-fest.pushAsyncIterableIterator.mjs +0 -7
  441. package/dist/iter-fest.readerValues.d.mts +0 -3
  442. package/dist/iter-fest.readerValues.d.ts +0 -3
  443. package/dist/iter-fest.readerValues.js.map +0 -1
  444. package/dist/iter-fest.readerValues.mjs +0 -7
  445. /package/dist/{iter-fest.iterableAt.mjs.map → iter-fest.asyncIteratorDrop.mjs.map} +0 -0
  446. /package/dist/{iter-fest.iterableConcat.mjs.map → iter-fest.asyncIteratorEvery.mjs.map} +0 -0
  447. /package/dist/{iter-fest.iterableEntries.mjs.map → iter-fest.asyncIteratorFilter.mjs.map} +0 -0
  448. /package/dist/{iter-fest.iterableEvery.mjs.map → iter-fest.asyncIteratorFind.mjs.map} +0 -0
  449. /package/dist/{iter-fest.iterableFilter.mjs.map → iter-fest.asyncIteratorFlatMap.mjs.map} +0 -0
  450. /package/dist/{iter-fest.iterableFind.mjs.map → iter-fest.asyncIteratorForEach.mjs.map} +0 -0
  451. /package/dist/{iter-fest.iterableFindIndex.mjs.map → iter-fest.asyncIteratorFrom.mjs.map} +0 -0
  452. /package/dist/{iter-fest.iterableFindLast.mjs.map → iter-fest.asyncIteratorMap.mjs.map} +0 -0
  453. /package/dist/{iter-fest.iterableFindLastIndex.mjs.map → iter-fest.asyncIteratorReduce.mjs.map} +0 -0
  454. /package/dist/{iter-fest.iterableForEach.mjs.map → iter-fest.asyncIteratorSome.mjs.map} +0 -0
  455. /package/dist/{iter-fest.iterableGetReadable.mjs.map → iter-fest.asyncIteratorTake.mjs.map} +0 -0
  456. /package/dist/{iter-fest.iterableIncludes.mjs.map → iter-fest.asyncIteratorToArray.mjs.map} +0 -0
  457. /package/dist/{iter-fest.iterableIndexOf.mjs.map → iter-fest.iterableWritableStream.mjs.map} +0 -0
  458. /package/dist/{iter-fest.iterableJoin.mjs.map → iter-fest.iteratorAt.mjs.map} +0 -0
  459. /package/dist/{iter-fest.iterableKeys.mjs.map → iter-fest.iteratorConcat.mjs.map} +0 -0
  460. /package/dist/{iter-fest.iterableMap.mjs.map → iter-fest.iteratorDrop.mjs.map} +0 -0
  461. /package/dist/{iter-fest.iterableReduce.mjs.map → iter-fest.iteratorEntries.mjs.map} +0 -0
  462. /package/dist/{iter-fest.iterableSlice.mjs.map → iter-fest.iteratorEvery.mjs.map} +0 -0
  463. /package/dist/{iter-fest.iterableSome.mjs.map → iter-fest.iteratorFilter.mjs.map} +0 -0
  464. /package/dist/{iter-fest.iterableToSpliced.mjs.map → iter-fest.iteratorFind.mjs.map} +0 -0
  465. /package/dist/{iter-fest.iterableToString.mjs.map → iter-fest.iteratorFindIndex.mjs.map} +0 -0
  466. /package/dist/{iter-fest.pushAsyncIterableIterator.mjs.map → iter-fest.iteratorFindLast.mjs.map} +0 -0
  467. /package/dist/{iter-fest.readerValues.mjs.map → iter-fest.iteratorFindLastIndex.mjs.map} +0 -0
package/README.md CHANGED
@@ -16,38 +16,26 @@ Iterables can contains infinite number of items, please use this package respons
16
16
  npm install iter-fest
17
17
  ```
18
18
 
19
- ### `Array.prototype` ports
19
+ ## Conversions
20
20
 
21
- We ported majority of functions from `Array.prototype.*` to `iterable*`.
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
- ```ts
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
- const iterable: Iterable<number> = [1, 2, 3, 4, 5].values();
33
+ ```ts
34
+ function iteratorToIterable<T>(iterator: Iterator<T>): IterableIterator<T>
28
35
 
29
- console.log(iterableIncludes(iterable, 3)); // Prints "true".
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
- 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), [`every`](https://tc39.es/ecma262/#sec-array.prototype.every), [`filter`](https://tc39.es/ecma262/#sec-array.prototype.filter), [`find`](https://tc39.es/ecma262/#sec-array.prototype.find), [`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), [`forEach`](https://tc39.es/ecma262/#sec-array.prototype.foreach), [`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), [`map`](https://tc39.es/ecma262/#sec-array.prototype.map), [`reduce`](https://tc39.es/ecma262/#sec-array.prototype.reduce), [`slice`](https://tc39.es/ecma262/#sec-array.prototype.slice), [`some`](https://tc39.es/ecma262/#sec-array.prototype.some), [`toSpliced`](https://tc39.es/ecma262/#sec-array.prototype.tospliced), and [`toString`](https://tc39.es/ecma262/#sec-array.prototype.tostring).
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
- | `AsyncIterator` | `AsyncIterableIterator` | [`asyncIteratorToAsyncIterable<T>(asyncIterator: AsyncIterator<T>): AsyncIterableIterator<T>`](#converting-an-iterator-to-iterable) |
42
- | `Observable` | `ReadableStream` | [`observableSubscribeAsReadable<T>(observable: Observable<T>): ReadableStream<T>`](#converting-an-observable-to-readablestream) |
43
- | `ReadableStreamDefaultReader` | `AsyncIterableIterator` | [`readerValues`<T>(reader: ReadableStreamDefaultReader<T>): AsyncIterableIterator<T>`](#iterating-readablestreamdefaultreader) |
44
- | `AsyncIterable` | `Observable` | [`observableFromAsync<T>(iterable: AsyncIterable<T>): Observable<T>`](#converting-an-asynciterable-to-observable) |
45
- | `AsyncIterable`/`Iterable` | `ReadableStream` | [`iterableGetReadable<T>(iterable: AsyncIterable<T> \| Iterable<T>): ReadableStream<T>`](#converting-an-asynciterableiterable-to-readablestream) |
46
-
47
- To convert `Observable` to `AsyncIterableIterator`, [use `ReadableStream` as intermediate format](#converting-an-observable-to-asynciterableiterator).
48
-
49
- ### Converting an iterator to iterable
50
-
51
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.
52
40
 
53
41
  ```ts
@@ -60,7 +48,7 @@ const iterate = (): Iterator<number> => {
60
48
  return { value };
61
49
  }
62
50
 
63
- return { done: true, value: undefined };
51
+ return { done: true, value: undefined } satisfies IteratorResult<number>;
64
52
  }
65
53
  };
66
54
  };
@@ -70,28 +58,17 @@ for (const value of iteratorToIterable(iterate())) {
70
58
  }
71
59
  ```
72
60
 
73
- Note: calling `[Symbol.iterator]` will not refresh the iteration.
74
-
75
- ### Converting an `Observable` to `AsyncIterableIterator`
76
-
77
- `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.
78
62
 
79
- Note: `Observable` is push-based and it does not support flow control. When converting to `AsyncIterableIteratorrr`, the internal buffer of `ReadableStream` could build up quickly.
63
+ ### Converting an `AsyncIterable` to `Observable`
80
64
 
81
65
  ```ts
82
- const observable = Observable.from([1, 2, 3]);
83
- const readable = observableSubscribeAsReadable(observable);
84
-
85
- for await (const value of readerValues(readable.getReader())) {
86
- console.log(value); // Prints "1", "2", "3".
87
- }
66
+ function observableFromAsync<T>(iterable: AsyncIterable<T>): Observable<T>
88
67
  ```
89
68
 
90
- ### Converting an `AsyncIterable` to `Observable`
91
-
92
69
  `Observable.from` converts `Iterable` into `Observable`. However, it does not convert `AsyncIterable`.
93
70
 
94
- `observableFromAsync` will convert `AsyncIterable` into `Observable`.
71
+ `observableFromAsync` will convert `AsyncIterable` into `Observable`. It will try to restart the iteration by calling `[Symbol.asyncIterator]()`.
95
72
 
96
73
  ```ts
97
74
  async function* generate() {
@@ -106,7 +83,15 @@ const next = value => console.log(value);
106
83
  observable.subscribe({ next }); // Prints "1", "2", "3".
107
84
  ```
108
85
 
109
- ## Converting an `Observable` to `ReadableStream`
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
+ ```
110
95
 
111
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.
112
97
 
@@ -115,17 +100,20 @@ Note: `Observable` is push-based and it does not support flow control. When conv
115
100
  ```ts
116
101
  const observable = Observable.from([1, 2, 3]);
117
102
  const readable = observableSubscribeAsReadable(observable);
118
- const reader = readable.getReader();
119
103
 
120
104
  readable.pipeTo(stream.writable); // Will write 1, 2, 3.
121
105
  ```
122
106
 
123
- ### Iterating `ReadableStreamDefaultReader`
107
+ ### Converting a `ReadableStream` to `AsyncIterableIterator`
124
108
 
125
- `readerValues` will convert default reader of `ReadableStream` into an `AsyncIterableIterator` to use in for-loop.
109
+ ```ts
110
+ function readableStreamValues`<T>(readable: ReadableStream<T>): AsyncIterableIterator<T>
111
+ ```
112
+
113
+ `readableStreamValues` allow iteration of `ReadableStream` as an `AsyncIterableIterator`.
126
114
 
127
115
  ```ts
128
- const readableStream = new ReadableStream({
116
+ const readable = new ReadableStream({
129
117
  start(controller) {
130
118
  controller.enqueue(1);
131
119
  controller.enqueue(2);
@@ -136,20 +124,55 @@ const readableStream = new ReadableStream({
136
124
  }
137
125
  });
138
126
 
139
- for await (const value of readerValues(readableStream.getReader())) {
127
+ const iterable = readableStreamValues(readable);
128
+
129
+ for await (const value of iterable) {
140
130
  console.log(value); // Prints "1", "2", "3".
141
131
  }
142
132
  ```
143
133
 
144
- ## Converting an `AsyncIterable`/`Iterable` to `ReadableStream`
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
145
 
146
146
  ```ts
147
147
  const iterable = [1, 2, 3].values();
148
- const readable = iterableGetReadable(iterable);
148
+ const readable = readableStreamFrom(iterable);
149
149
 
150
150
  readable.pipeTo(stream.writable); // Will write 1, 2, 3.
151
151
  ```
152
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) {
168
+ console.log(value); // Prints "1", "2", "3".
169
+ }
170
+ ```
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
+
153
176
  ## Others
154
177
 
155
178
  ### Typed `Observable`
@@ -158,14 +181,18 @@ readable.pipeTo(stream.writable); // Will write 1, 2, 3.
158
181
 
159
182
  ### Producer-consumer queue
160
183
 
161
- `PushAsyncIterableIterator` is a simple push-based producer-consumer queue and designed to decouple the flow between a producer and consumer. The producer can push a new job at anytime. The consumer can pull a job at its own convenience.
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.
162
185
 
163
- Compare to pull-based queue, a push-based queue is easier 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.
186
+ `IterableWritableStream` supports multiple consumers and continuation:
164
187
 
165
- For a full-featured producer-consumer queue that supports flow control, use `ReadableStream` instead.
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.
166
192
 
167
193
  ```ts
168
- const iterable = new PushAsyncIterableIterator();
194
+ const iterable = new IterableWritableStream();
195
+ const writer = iterable.getWriter();
169
196
 
170
197
  (async function consumer() {
171
198
  for await (const value of iterable) {
@@ -176,10 +203,10 @@ const iterable = new PushAsyncIterableIterator();
176
203
  })();
177
204
 
178
205
  (async function producer() {
179
- iterable.push(1);
180
- iterable.push(2);
181
- iterable.push(3);
182
- iterable.close();
206
+ writer.write(1);
207
+ writer.write(2);
208
+ writer.write(3);
209
+ writer.close();
183
210
  })();
184
211
 
185
212
  // Prints "1", "2", "3", "Done".
@@ -196,11 +223,11 @@ The `generatorWithLastValue()` and `asyncGeneratorWithLastValue()` helps bridge
196
223
  ```ts
197
224
  const generator = generatorWithLastValue(
198
225
  (function* () {
199
- yield 1;
200
- yield 2;
201
- yield 3;
226
+ yield 1; // { done: false, value: 1 }
227
+ yield 2; // { done: false, value: 2 }
228
+ yield 3; // { done: false, value: 3 }
202
229
 
203
- return 'end';
230
+ return 'end'; // { done: true, value: 'end' }
204
231
  })()
205
232
  );
206
233
 
@@ -223,6 +250,52 @@ const generator = generatorWithLastValue(
223
250
  );
224
251
  ```
225
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
+
226
299
  ## Behaviors
227
300
 
228
301
  ### How this compares to the TC39 proposals?
@@ -238,27 +311,27 @@ Majority of functions should work the same way with same complexity and performa
238
311
  There are minor differences on some functions:
239
312
 
240
313
  - `findLast` and `findLastIndex`
241
- - Instead of iterating from the right side, iterables must start from left side
242
- - Thus, with an iterable of 5 items, `predicate` will be called exactly 5 times with `O(N)` complexity
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
243
316
  - In contrast, its counterpart in `Array` will be called between 1 and 5 times with `O(log N)` complexity
244
317
  - `at`, `includes`, `indexOf`, `slice`, and `toSpliced`
245
318
  - Index arguments cannot be negative finite number
246
- - Negative finite number means traversing from right side, which an iterator/iterable may not have an end
319
+ - Negative finite number means traversing from right side, which an iterator may not have an end
247
320
  - Infinites, zeroes, and positive numbers are supported
248
321
 
249
322
  ### Why `Array.prototype.push` is not ported?
250
323
 
251
- Some functions that modify the array are not ported, such as, `copyWithin`, `fill`, `pop`, `push`, `reverse`, `shift`, `splice`, `unshift`, etc. Iterables are read-only and we prefer to keep it that way.
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.
252
325
 
253
- Some functions that do not have actual functionality in the iterable world are not ported, such as, `values`, etc.
326
+ Some functions that do not have actual functionality in the iterator world are not ported, such as, `values`, etc.
254
327
 
255
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.
256
329
 
257
330
  If you think a specific function should be ported, please submit a pull request to us.
258
331
 
259
- ### How about asynchronous iterables?
332
+ ### How about asynchronous iterators?
260
333
 
261
- Yes, this is on our roadmap. This will enable traverse iterables [across domains/workers via `MessagePort`](https://npmjs.com/package/message-port-rpc). We welcome pull requests.
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.
262
335
 
263
336
  ### How about functions outside of `Array.prototype`?
264
337
 
@@ -271,18 +344,21 @@ Generator has more functionalities than iterator and array. It is not recommende
271
344
  - Generator can define the return value
272
345
  - `return { done: true, value: 'the very last value' }`
273
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
274
348
  - Generator can receive feedback values from its iterator
275
349
  - `generator.next('something')`, the feedback can be assigned to variable via `const feedback = yield;`
276
350
  - For-loop cannot send feedbacks to generator
277
351
 
278
352
  ### When should I use `Iterable`, `IterableIterator` and `Iterator`?
279
353
 
280
- 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.
281
355
 
282
356
  ```ts
283
- function transform<T>(iterable: Iterable<T>): IterableIterator<T>;
357
+ function myFunction<T>(input: Iterable<T>): IterableIterator<T>;
284
358
  ```
285
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
+
286
362
  ### What is on the roadmap?
287
363
 
288
364
  We are planning to bring iterables and its siblings together, including:
@@ -0,0 +1,10 @@
1
+ // src/iteratorSome.ts
2
+ import some from "core-js-pure/full/iterator/some";
3
+ function iteratorSome(iterator, predicate) {
4
+ return some(iterator, predicate);
5
+ }
6
+
7
+ export {
8
+ iteratorSome
9
+ };
10
+ //# sourceMappingURL=chunk-3S6LCGE6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/iteratorSome.ts"],"sourcesContent":["// @ts-expect-error core-js-pure is not typed.\nimport some from 'core-js-pure/full/iterator/some';\n\n/**\n * Determines whether the specified callback function returns true for any element of an iterable.\n *\n * @param predicate A function that accepts up to three arguments. The some method calls the predicate function for each element in the iterable until the predicate returns a value which is coercible to the Boolean value true, or until the end of the iterable.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function iteratorSome<T>(iterator: Iterator<T>, predicate: (value: T, index: number) => unknown): boolean {\n return some(iterator, predicate);\n}\n"],"mappings":";AACA,OAAO,UAAU;AASV,SAAS,aAAgB,UAAuB,WAA0D;AAC/G,SAAO,KAAK,UAAU,SAAS;AACjC;","names":[]}
@@ -0,0 +1,10 @@
1
+ // src/asyncIteratorEvery.ts
2
+ import every from "core-js-pure/full/async-iterator/every";
3
+ function asyncIteratorEvery(iterator, predicate) {
4
+ return every(iterator, predicate);
5
+ }
6
+
7
+ export {
8
+ asyncIteratorEvery
9
+ };
10
+ //# sourceMappingURL=chunk-4RT2FROS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/asyncIteratorEvery.ts"],"sourcesContent":["// @ts-expect-error core-js-pure is not typed.\nimport every from 'core-js-pure/full/async-iterator/every';\n\n/**\n * Determines whether all the members of an iterator satisfy the specified test.\n *\n * @param predicate A function that accepts up to three arguments. The every method calls\n * the predicate function for each element in the iterator until the predicate returns a value\n * which is coercible to the Boolean value false, or until the end of the iterator.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function asyncIteratorEvery<T>(\n asyncIterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => Promise<boolean>\n): Promise<boolean>;\n\n/**\n * Determines whether all the members of an iterator satisfy the specified test.\n *\n * @param predicate A function that accepts up to three arguments. The every method calls\n * the predicate function for each element in the iterator until the predicate returns a value\n * which is coercible to the Boolean value false, or until the end of the iterator.\n *\n * @param thisArg An object to which the this keyword can refer in the predicate function.\n * If thisArg is omitted, undefined is used as the this value.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function asyncIteratorEvery<T>(\n iterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => Promise<unknown>\n): Promise<boolean>;\n\nexport function asyncIteratorEvery<T>(\n iterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => Promise<unknown>\n): Promise<boolean> {\n return every(iterator, predicate);\n}\n"],"mappings":";AACA,OAAO,WAAW;AAiCX,SAAS,mBACd,UACA,WACkB;AAClB,SAAO,MAAM,UAAU,SAAS;AAClC;","names":[]}
@@ -0,0 +1,10 @@
1
+ // src/asyncIteratorFilter.ts
2
+ import filter from "core-js-pure/full/async-iterator/filter";
3
+ function asyncIteratorFilter(asyncIterator, predicate) {
4
+ return filter(asyncIterator, predicate);
5
+ }
6
+
7
+ export {
8
+ asyncIteratorFilter
9
+ };
10
+ //# sourceMappingURL=chunk-4ZBMXHD6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/asyncIteratorFilter.ts"],"sourcesContent":["// @ts-expect-error core-js-pure is not typed.\nimport filter from 'core-js-pure/full/async-iterator/filter';\n\n/**\n * Returns the elements of an iterator that meet the condition specified in a callback function.\n *\n * @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the iterator.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function asyncIteratorFilter<T, S extends T>(\n asyncIterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => value is S\n): AsyncIterableIterator<S>;\n\n/**\n * Returns the elements of an iterator that meet the condition specified in a callback function.\n *\n * @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the iterator.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function asyncIteratorFilter<T>(\n asyncIterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => unknown\n): AsyncIterableIterator<T>;\n\nexport function asyncIteratorFilter<T, S extends T>(\n asyncIterator: AsyncIterator<T>,\n predicate: (value: T, index: number) => unknown\n): AsyncIterableIterator<S> {\n return filter(asyncIterator, predicate);\n}\n"],"mappings":";AACA,OAAO,YAAY;AA0BZ,SAAS,oBACd,eACA,WAC0B;AAC1B,SAAO,OAAO,eAAe,SAAS;AACxC;","names":[]}
@@ -0,0 +1,38 @@
1
+ import {
2
+ readableStreamValues
3
+ } from "./chunk-RVIERPEV.mjs";
4
+ import {
5
+ observableSubscribeAsReadable
6
+ } from "./chunk-EIIP7YWB.mjs";
7
+
8
+ // src/observableValues.ts
9
+ function observableValues(observable) {
10
+ const readable = observableSubscribeAsReadable(observable);
11
+ const iterable = readableStreamValues(readable);
12
+ const cancellableIterable = {
13
+ [Symbol.asyncIterator]() {
14
+ return cancellableIterable;
15
+ },
16
+ next() {
17
+ return iterable.next();
18
+ },
19
+ return() {
20
+ var _a;
21
+ try {
22
+ return ((_a = iterable.return) == null ? void 0 : _a.call(iterable)) ?? Promise.resolve({ done: true, value: void 0 });
23
+ } finally {
24
+ readable.cancel();
25
+ }
26
+ },
27
+ throw(error) {
28
+ var _a;
29
+ return ((_a = iterable.throw) == null ? void 0 : _a.call(iterable, error)) ?? Promise.resolve({ done: true, value: void 0 });
30
+ }
31
+ };
32
+ return cancellableIterable;
33
+ }
34
+
35
+ export {
36
+ observableValues
37
+ };
38
+ //# sourceMappingURL=chunk-72AEHTPQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/observableValues.ts"],"sourcesContent":["import type { Observable } from './Observable';\nimport { observableSubscribeAsReadable } from './observableSubscribeAsReadable';\nimport { readableStreamValues } from './readableStreamValues';\n\nexport function observableValues<T>(observable: Observable<T>): AsyncIterableIterator<T> {\n const readable = observableSubscribeAsReadable(observable);\n const iterable = readableStreamValues(readable);\n\n const cancellableIterable: AsyncIterableIterator<T> = {\n [Symbol.asyncIterator]() {\n return cancellableIterable;\n },\n next() {\n return iterable.next();\n },\n return() {\n try {\n return iterable.return?.() ?? Promise.resolve({ done: true, value: undefined });\n } finally {\n readable.cancel();\n }\n },\n throw(error) {\n return iterable.throw?.(error) ?? Promise.resolve({ done: true, value: undefined });\n }\n };\n\n return cancellableIterable;\n}\n"],"mappings":";;;;;;;;AAIO,SAAS,iBAAoB,YAAqD;AACvF,QAAM,WAAW,8BAA8B,UAAU;AACzD,QAAM,WAAW,qBAAqB,QAAQ;AAE9C,QAAM,sBAAgD;AAAA,IACpD,CAAC,OAAO,aAAa,IAAI;AACvB,aAAO;AAAA,IACT;AAAA,IACA,OAAO;AACL,aAAO,SAAS,KAAK;AAAA,IACvB;AAAA,IACA,SAAS;AAfb;AAgBM,UAAI;AACF,iBAAO,cAAS,WAAT,sCAAuB,QAAQ,QAAQ,EAAE,MAAM,MAAM,OAAO,OAAU,CAAC;AAAA,MAChF,UAAE;AACA,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AAAA,IACA,MAAM,OAAO;AAtBjB;AAuBM,eAAO,cAAS,UAAT,kCAAiB,WAAU,QAAQ,QAAQ,EAAE,MAAM,MAAM,OAAO,OAAU,CAAC;AAAA,IACpF;AAAA,EACF;AAEA,SAAO;AACT;","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/iterableIndexOf.ts
6
- function iterableIndexOf(iterable, searchElement, fromIndex = 0) {
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 iterable) {
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
- iterableIndexOf
28
+ iteratorIndexOf
26
29
  };
27
- //# sourceMappingURL=chunk-UIEKIMLW.mjs.map
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,10 @@
1
+ // src/asyncIteratorTake.ts
2
+ import take from "core-js-pure/full/async-iterator/take";
3
+ function asyncIteratorTake(asyncIterator, limit) {
4
+ return take(asyncIterator, limit);
5
+ }
6
+
7
+ export {
8
+ asyncIteratorTake
9
+ };
10
+ //# sourceMappingURL=chunk-AOZVPHE4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/asyncIteratorTake.ts"],"sourcesContent":["// @ts-expect-error core-js-pure is not typed.\nimport take from 'core-js-pure/full/async-iterator/take';\n\n/**\n * `take` takes an integer as an argument. It returns an iterator that produces, at most, the given number of elements produced by the underlying iterator.\n *\n * @param limit\n *\n * @return Returns an iterator with items from the original iterator from 0 until the limit.\n *\n * @link https://github.com/tc39/proposal-iterator-helpers/blob/main/README.md\n */\nexport function asyncIteratorTake<T>(asyncIterator: AsyncIterator<T>, limit: number): AsyncIterator<T> {\n return take(asyncIterator, limit);\n}\n"],"mappings":";AACA,OAAO,UAAU;AAWV,SAAS,kBAAqB,eAAiC,OAAiC;AACrG,SAAO,KAAK,eAAe,KAAK;AAClC;","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":[]}
@@ -0,0 +1,46 @@
1
+ // src/private/withResolvers.ts
2
+ import coreJSPromiseWithResolvers from "core-js-pure/full/promise/with-resolvers";
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-BWMXKULC.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';\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,16 @@
1
+ import {
2
+ iteratorToIterable
3
+ } from "./chunk-MNDAEMYM.mjs";
4
+
5
+ // src/iteratorKeys.ts
6
+ function* iteratorKeys(iterator) {
7
+ let index = 0;
8
+ for (const _ of iteratorToIterable(iterator)) {
9
+ yield index++;
10
+ }
11
+ }
12
+
13
+ export {
14
+ iteratorKeys
15
+ };
16
+ //# sourceMappingURL=chunk-CNCNQPK3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/iteratorKeys.ts"],"sourcesContent":["import { iteratorToIterable } from './iteratorToIterable';\n\n/**\n * Returns an iterator of keys in the iterator\n */\nexport function* iteratorKeys<T>(iterator: Iterator<T>): IterableIterator<number> {\n let index = 0;\n\n for (const _ of iteratorToIterable(iterator)) {\n yield index++;\n }\n}\n"],"mappings":";;;;;AAKO,UAAU,aAAgB,UAAiD;AAChF,MAAI,QAAQ;AAEZ,aAAW,KAAK,mBAAmB,QAAQ,GAAG;AAC5C,UAAM;AAAA,EACR;AACF;","names":[]}
@@ -0,0 +1,10 @@
1
+ // src/asyncIteratorFind.ts
2
+ import find from "core-js-pure/full/async-iterator/find";
3
+ function asyncIteratorFind(asyncIterator, predicate) {
4
+ return find(asyncIterator, predicate);
5
+ }
6
+
7
+ export {
8
+ asyncIteratorFind
9
+ };
10
+ //# sourceMappingURL=chunk-CNKIGQUS.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';\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,10 @@
1
+ // src/iteratorFrom.ts
2
+ import from from "core-js-pure/full/iterator/from";
3
+ function iteratorFrom(iteratorLike) {
4
+ return from(iteratorLike);
5
+ }
6
+
7
+ export {
8
+ iteratorFrom
9
+ };
10
+ //# sourceMappingURL=chunk-DC2ZV7KQ.mjs.map