@sapphire/iterator-utilities 1.0.3-next.fc35dd86 → 2.0.0-next.1e7d2dec

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 (245) hide show
  1. package/dist/cjs/index.cjs +217 -0
  2. package/dist/cjs/index.d.cts +32 -9
  3. package/dist/cjs/lib/all.cjs +12 -0
  4. package/dist/cjs/lib/all.cjs.map +1 -0
  5. package/dist/cjs/lib/all.d.cts +2 -0
  6. package/dist/cjs/lib/any.cjs +12 -0
  7. package/dist/cjs/lib/any.cjs.map +1 -0
  8. package/dist/cjs/lib/any.d.cts +2 -0
  9. package/dist/cjs/lib/collect.cjs +12 -0
  10. package/dist/cjs/lib/collect.cjs.map +1 -0
  11. package/dist/cjs/lib/collect.d.cts +2 -0
  12. package/dist/cjs/lib/collectInto.cjs +17 -0
  13. package/dist/cjs/lib/collectInto.cjs.map +1 -0
  14. package/dist/cjs/lib/collectInto.d.cts +29 -0
  15. package/dist/cjs/lib/compare.cjs +15 -0
  16. package/dist/cjs/lib/compare.cjs.map +1 -0
  17. package/dist/cjs/lib/compare.d.cts +32 -0
  18. package/dist/cjs/lib/compareBy.cjs +26 -0
  19. package/dist/cjs/lib/compareBy.cjs.map +1 -0
  20. package/dist/cjs/lib/compareBy.d.cts +31 -0
  21. package/dist/cjs/lib/drop.cjs +0 -1
  22. package/dist/cjs/lib/drop.cjs.map +1 -1
  23. package/dist/cjs/lib/drop.d.cts +1 -1
  24. package/dist/cjs/lib/dropLast.cjs +0 -1
  25. package/dist/cjs/lib/dropLast.cjs.map +1 -1
  26. package/dist/cjs/lib/dropLast.d.cts +1 -1
  27. package/dist/cjs/lib/dropWhile.cjs +0 -1
  28. package/dist/cjs/lib/dropWhile.cjs.map +1 -1
  29. package/dist/cjs/lib/dropWhile.d.cts +1 -1
  30. package/dist/cjs/lib/equal.cjs +15 -0
  31. package/dist/cjs/lib/equal.cjs.map +1 -0
  32. package/dist/cjs/lib/equal.d.cts +26 -0
  33. package/dist/cjs/lib/equalBy.cjs +23 -0
  34. package/dist/cjs/lib/equalBy.cjs.map +1 -0
  35. package/dist/cjs/lib/equalBy.d.cts +27 -0
  36. package/dist/cjs/lib/filter.cjs +0 -1
  37. package/dist/cjs/lib/filter.cjs.map +1 -1
  38. package/dist/cjs/lib/filter.d.cts +1 -1
  39. package/dist/cjs/lib/fuse.cjs +26 -0
  40. package/dist/cjs/lib/fuse.cjs.map +1 -0
  41. package/dist/cjs/lib/fuse.d.cts +47 -0
  42. package/dist/cjs/lib/greaterOrEqualThan.cjs +17 -0
  43. package/dist/cjs/lib/greaterOrEqualThan.cjs.map +1 -0
  44. package/dist/cjs/lib/greaterOrEqualThan.d.cts +32 -0
  45. package/dist/cjs/lib/greaterThan.cjs +17 -0
  46. package/dist/cjs/lib/greaterThan.cjs.map +1 -0
  47. package/dist/cjs/lib/greaterThan.d.cts +32 -0
  48. package/dist/cjs/lib/indexOf.cjs +0 -1
  49. package/dist/cjs/lib/indexOf.cjs.map +1 -1
  50. package/dist/cjs/lib/indexOf.d.cts +1 -1
  51. package/dist/cjs/lib/inspect.cjs +25 -0
  52. package/dist/cjs/lib/inspect.cjs.map +1 -0
  53. package/dist/cjs/lib/inspect.d.cts +39 -0
  54. package/dist/cjs/lib/intersperse.cjs +35 -0
  55. package/dist/cjs/lib/intersperse.cjs.map +1 -0
  56. package/dist/cjs/lib/intersperse.d.cts +30 -0
  57. package/dist/cjs/lib/isSorted.cjs +15 -0
  58. package/dist/cjs/lib/isSorted.cjs.map +1 -0
  59. package/dist/cjs/lib/isSorted.d.cts +35 -0
  60. package/dist/cjs/lib/isSortedBy.cjs +26 -0
  61. package/dist/cjs/lib/isSortedBy.cjs.map +1 -0
  62. package/dist/cjs/lib/isSortedBy.d.cts +32 -0
  63. package/dist/cjs/lib/isSortedByKey.cjs +29 -0
  64. package/dist/cjs/lib/isSortedByKey.cjs.map +1 -0
  65. package/dist/cjs/lib/isSortedByKey.d.cts +30 -0
  66. package/dist/cjs/lib/lessOrEqualThan.cjs +17 -0
  67. package/dist/cjs/lib/lessOrEqualThan.cjs.map +1 -0
  68. package/dist/cjs/lib/lessOrEqualThan.d.cts +32 -0
  69. package/dist/cjs/lib/lessThan.cjs +17 -0
  70. package/dist/cjs/lib/lessThan.cjs.map +1 -0
  71. package/dist/cjs/lib/lessThan.d.cts +32 -0
  72. package/dist/cjs/lib/max.cjs +3 -7
  73. package/dist/cjs/lib/max.cjs.map +1 -1
  74. package/dist/cjs/lib/max.d.cts +8 -3
  75. package/dist/cjs/lib/maxBy.cjs +27 -0
  76. package/dist/cjs/lib/maxBy.cjs.map +1 -0
  77. package/dist/cjs/lib/maxBy.d.cts +31 -0
  78. package/dist/cjs/lib/maxByKey.cjs +32 -0
  79. package/dist/cjs/lib/maxByKey.cjs.map +1 -0
  80. package/dist/cjs/lib/maxByKey.d.cts +32 -0
  81. package/dist/cjs/lib/min.cjs +3 -7
  82. package/dist/cjs/lib/min.cjs.map +1 -1
  83. package/dist/cjs/lib/min.d.cts +8 -3
  84. package/dist/cjs/lib/minBy.cjs +27 -0
  85. package/dist/cjs/lib/minBy.cjs.map +1 -0
  86. package/dist/cjs/lib/minBy.d.cts +31 -0
  87. package/dist/cjs/lib/minByKey.cjs +32 -0
  88. package/dist/cjs/lib/minByKey.cjs.map +1 -0
  89. package/dist/cjs/lib/minByKey.d.cts +31 -0
  90. package/dist/cjs/lib/notEqual.cjs +15 -0
  91. package/dist/cjs/lib/notEqual.cjs.map +1 -0
  92. package/dist/cjs/lib/notEqual.d.cts +26 -0
  93. package/dist/cjs/lib/nth.cjs +12 -0
  94. package/dist/cjs/lib/nth.cjs.map +1 -0
  95. package/dist/cjs/lib/nth.d.cts +2 -0
  96. package/dist/cjs/lib/position.cjs +12 -0
  97. package/dist/cjs/lib/position.cjs.map +1 -0
  98. package/dist/cjs/lib/position.d.cts +2 -0
  99. package/dist/cjs/lib/reverse.cjs +2 -5
  100. package/dist/cjs/lib/reverse.cjs.map +1 -1
  101. package/dist/cjs/lib/shared/_compare.cjs +36 -0
  102. package/dist/cjs/lib/shared/_compare.cjs.map +1 -0
  103. package/dist/cjs/lib/shared/_compare.d.cts +20 -0
  104. package/dist/cjs/lib/shared/comparators.cjs +28 -0
  105. package/dist/cjs/lib/shared/comparators.cjs.map +1 -0
  106. package/dist/cjs/lib/shared/comparators.d.cts +34 -0
  107. package/dist/cjs/lib/skip.cjs +12 -0
  108. package/dist/cjs/lib/skip.cjs.map +1 -0
  109. package/dist/cjs/lib/skip.d.cts +2 -0
  110. package/dist/cjs/lib/skipLast.cjs +12 -0
  111. package/dist/cjs/lib/skipLast.cjs.map +1 -0
  112. package/dist/cjs/lib/skipLast.d.cts +2 -0
  113. package/dist/cjs/lib/skipWhile.cjs +12 -0
  114. package/dist/cjs/lib/skipWhile.cjs.map +1 -0
  115. package/dist/cjs/lib/skipWhile.d.cts +2 -0
  116. package/dist/cjs/lib/stepBy.cjs +29 -0
  117. package/dist/cjs/lib/stepBy.cjs.map +1 -0
  118. package/dist/cjs/lib/stepBy.d.cts +24 -0
  119. package/dist/cjs/lib/takeWhile.cjs +12 -0
  120. package/dist/cjs/lib/takeWhile.cjs.map +1 -0
  121. package/dist/cjs/lib/takeWhile.d.cts +2 -0
  122. package/dist/esm/index.d.mts +32 -9
  123. package/dist/esm/index.mjs +31 -0
  124. package/dist/esm/lib/all.d.mts +2 -0
  125. package/dist/esm/lib/all.mjs +4 -0
  126. package/dist/esm/lib/all.mjs.map +1 -0
  127. package/dist/esm/lib/any.d.mts +2 -0
  128. package/dist/esm/lib/any.mjs +4 -0
  129. package/dist/esm/lib/any.mjs.map +1 -0
  130. package/dist/esm/lib/collect.d.mts +2 -0
  131. package/dist/esm/lib/collect.mjs +4 -0
  132. package/dist/esm/lib/collect.mjs.map +1 -0
  133. package/dist/esm/lib/collectInto.d.mts +29 -0
  134. package/dist/esm/lib/collectInto.mjs +14 -0
  135. package/dist/esm/lib/collectInto.mjs.map +1 -0
  136. package/dist/esm/lib/compare.d.mts +32 -0
  137. package/dist/esm/lib/compare.mjs +12 -0
  138. package/dist/esm/lib/compare.mjs.map +1 -0
  139. package/dist/esm/lib/compareBy.d.mts +31 -0
  140. package/dist/esm/lib/compareBy.mjs +23 -0
  141. package/dist/esm/lib/compareBy.mjs.map +1 -0
  142. package/dist/esm/lib/drop.d.mts +1 -1
  143. package/dist/esm/lib/drop.mjs +1 -1
  144. package/dist/esm/lib/drop.mjs.map +1 -1
  145. package/dist/esm/lib/dropLast.d.mts +1 -1
  146. package/dist/esm/lib/dropLast.mjs +1 -1
  147. package/dist/esm/lib/dropLast.mjs.map +1 -1
  148. package/dist/esm/lib/dropWhile.d.mts +1 -1
  149. package/dist/esm/lib/dropWhile.mjs +1 -1
  150. package/dist/esm/lib/dropWhile.mjs.map +1 -1
  151. package/dist/esm/lib/equal.d.mts +26 -0
  152. package/dist/esm/lib/equal.mjs +11 -0
  153. package/dist/esm/lib/equal.mjs.map +1 -0
  154. package/dist/esm/lib/equalBy.d.mts +27 -0
  155. package/dist/esm/lib/equalBy.mjs +19 -0
  156. package/dist/esm/lib/equalBy.mjs.map +1 -0
  157. package/dist/esm/lib/filter.d.mts +1 -1
  158. package/dist/esm/lib/filter.mjs +1 -1
  159. package/dist/esm/lib/filter.mjs.map +1 -1
  160. package/dist/esm/lib/fuse.d.mts +47 -0
  161. package/dist/esm/lib/fuse.mjs +23 -0
  162. package/dist/esm/lib/fuse.mjs.map +1 -0
  163. package/dist/esm/lib/greaterOrEqualThan.d.mts +32 -0
  164. package/dist/esm/lib/greaterOrEqualThan.mjs +13 -0
  165. package/dist/esm/lib/greaterOrEqualThan.mjs.map +1 -0
  166. package/dist/esm/lib/greaterThan.d.mts +32 -0
  167. package/dist/esm/lib/greaterThan.mjs +13 -0
  168. package/dist/esm/lib/greaterThan.mjs.map +1 -0
  169. package/dist/esm/lib/indexOf.d.mts +1 -1
  170. package/dist/esm/lib/indexOf.mjs +1 -1
  171. package/dist/esm/lib/indexOf.mjs.map +1 -1
  172. package/dist/esm/lib/inspect.d.mts +39 -0
  173. package/dist/esm/lib/inspect.mjs +22 -0
  174. package/dist/esm/lib/inspect.mjs.map +1 -0
  175. package/dist/esm/lib/intersperse.d.mts +30 -0
  176. package/dist/esm/lib/intersperse.mjs +32 -0
  177. package/dist/esm/lib/intersperse.mjs.map +1 -0
  178. package/dist/esm/lib/isSorted.d.mts +35 -0
  179. package/dist/esm/lib/isSorted.mjs +12 -0
  180. package/dist/esm/lib/isSorted.mjs.map +1 -0
  181. package/dist/esm/lib/isSortedBy.d.mts +32 -0
  182. package/dist/esm/lib/isSortedBy.mjs +23 -0
  183. package/dist/esm/lib/isSortedBy.mjs.map +1 -0
  184. package/dist/esm/lib/isSortedByKey.d.mts +30 -0
  185. package/dist/esm/lib/isSortedByKey.mjs +26 -0
  186. package/dist/esm/lib/isSortedByKey.mjs.map +1 -0
  187. package/dist/esm/lib/lessOrEqualThan.d.mts +32 -0
  188. package/dist/esm/lib/lessOrEqualThan.mjs +13 -0
  189. package/dist/esm/lib/lessOrEqualThan.mjs.map +1 -0
  190. package/dist/esm/lib/lessThan.d.mts +32 -0
  191. package/dist/esm/lib/lessThan.mjs +13 -0
  192. package/dist/esm/lib/lessThan.mjs.map +1 -0
  193. package/dist/esm/lib/max.d.mts +8 -3
  194. package/dist/esm/lib/max.mjs +3 -7
  195. package/dist/esm/lib/max.mjs.map +1 -1
  196. package/dist/esm/lib/maxBy.d.mts +31 -0
  197. package/dist/esm/lib/maxBy.mjs +24 -0
  198. package/dist/esm/lib/maxBy.mjs.map +1 -0
  199. package/dist/esm/lib/maxByKey.d.mts +32 -0
  200. package/dist/esm/lib/maxByKey.mjs +29 -0
  201. package/dist/esm/lib/maxByKey.mjs.map +1 -0
  202. package/dist/esm/lib/min.d.mts +8 -3
  203. package/dist/esm/lib/min.mjs +3 -7
  204. package/dist/esm/lib/min.mjs.map +1 -1
  205. package/dist/esm/lib/minBy.d.mts +31 -0
  206. package/dist/esm/lib/minBy.mjs +24 -0
  207. package/dist/esm/lib/minBy.mjs.map +1 -0
  208. package/dist/esm/lib/minByKey.d.mts +31 -0
  209. package/dist/esm/lib/minByKey.mjs +29 -0
  210. package/dist/esm/lib/minByKey.mjs.map +1 -0
  211. package/dist/esm/lib/notEqual.d.mts +26 -0
  212. package/dist/esm/lib/notEqual.mjs +11 -0
  213. package/dist/esm/lib/notEqual.mjs.map +1 -0
  214. package/dist/esm/lib/nth.d.mts +2 -0
  215. package/dist/esm/lib/nth.mjs +4 -0
  216. package/dist/esm/lib/nth.mjs.map +1 -0
  217. package/dist/esm/lib/position.d.mts +2 -0
  218. package/dist/esm/lib/position.mjs +4 -0
  219. package/dist/esm/lib/position.mjs.map +1 -0
  220. package/dist/esm/lib/reverse.mjs +2 -5
  221. package/dist/esm/lib/reverse.mjs.map +1 -1
  222. package/dist/esm/lib/shared/_compare.d.mts +20 -0
  223. package/dist/esm/lib/shared/_compare.mjs +30 -0
  224. package/dist/esm/lib/shared/_compare.mjs.map +1 -0
  225. package/dist/esm/lib/shared/comparators.d.mts +34 -0
  226. package/dist/esm/lib/shared/comparators.mjs +21 -0
  227. package/dist/esm/lib/shared/comparators.mjs.map +1 -0
  228. package/dist/esm/lib/skip.d.mts +2 -0
  229. package/dist/esm/lib/skip.mjs +4 -0
  230. package/dist/esm/lib/skip.mjs.map +1 -0
  231. package/dist/esm/lib/skipLast.d.mts +2 -0
  232. package/dist/esm/lib/skipLast.mjs +4 -0
  233. package/dist/esm/lib/skipLast.mjs.map +1 -0
  234. package/dist/esm/lib/skipWhile.d.mts +2 -0
  235. package/dist/esm/lib/skipWhile.mjs +4 -0
  236. package/dist/esm/lib/skipWhile.mjs.map +1 -0
  237. package/dist/esm/lib/stepBy.d.mts +24 -0
  238. package/dist/esm/lib/stepBy.mjs +26 -0
  239. package/dist/esm/lib/stepBy.mjs.map +1 -0
  240. package/dist/esm/lib/takeWhile.d.mts +2 -0
  241. package/dist/esm/lib/takeWhile.mjs +4 -0
  242. package/dist/esm/lib/takeWhile.mjs.map +1 -0
  243. package/dist/iife/index.global.js +391 -49
  244. package/dist/iife/index.global.js.map +1 -1
  245. package/package.json +292 -22
@@ -0,0 +1,31 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+ import { CompareByComparator, LexicographicComparison } from './shared/_compare.js';
3
+
4
+ /**
5
+ * {@link LexicographicComparison Lexicographically} compares the elements of both iterators are equal. That is:
6
+ *
7
+ * @param iterable The iterator to compare.
8
+ * @param other The iterator to compare against.
9
+ * @returns Whether the two iterators are equal.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { ascNumber, compareBy } from '@sapphire/iterator-utilities';
14
+ *
15
+ * const x = [1, 2, 3, 4];
16
+ * const y = [1, 4, 9, 16];
17
+ * console.log(compareBy(x, y, (x, y) => ascNumber(x, y)));
18
+ * // Output: -1
19
+ * console.log(compareBy(x, y, (x, y) => ascNumber(x * x, y)));
20
+ * // Output: 0
21
+ * console.log(compareBy(x, y, (x, y) => ascNumber(x * 2, y)));
22
+ * // Output: 1
23
+ * ```
24
+ *
25
+ * @remarks
26
+ *
27
+ * This function consumes the entire iterator.
28
+ */
29
+ declare function compareBy<const ElementType>(iterable: IterableResolvable<ElementType | undefined>, other: IterableResolvable<ElementType | undefined>, comparator: CompareByComparator<ElementType>): LexicographicComparison;
30
+
31
+ export { compareBy };
@@ -20,6 +20,5 @@ function drop(iterable, count) {
20
20
  __name(drop, "drop");
21
21
 
22
22
  exports.drop = drop;
23
- exports.skip = drop;
24
23
  //# sourceMappingURL=drop.cjs.map
25
24
  //# sourceMappingURL=drop.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/drop.ts"],"names":["assertNotNegative","toIntegerOrInfinityOrThrow","toIterableIterator","empty"],"mappings":";;;;;;;;;AAsBO,SAAS,IAAA,CAAwB,UAA2C,KAA8C,EAAA;AAChI,EAAA,KAAA,GAAQA,wCAAkB,CAAAC,0DAAA,CAA2B,KAAK,CAAA,EAAG,KAAK,CAAA,CAAA;AAClE,EAAM,MAAA,gBAAA,GAAmBC,0CAAmB,QAAQ,CAAA,CAAA;AAGpD,EAAI,IAAA,KAAA,KAAU,GAAU,OAAA,gBAAA,CAAA;AAExB,EAAA,IAAI,KAAU,KAAA,MAAA,CAAO,iBAAmB,EAAA,OAAOC,eAAM,EAAA,CAAA;AAErD,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,EAAO,CAAK,EAAA,EAAA;AAC/B,IAAI,IAAA,gBAAA,CAAiB,IAAK,EAAA,CAAE,IAAM,EAAA,MAAA;AAAA,GACnC;AAEA,EAAO,OAAA,gBAAA,CAAA;AACR,CAAA;AAdgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA","file":"drop.cjs","sourcesContent":["import { empty } from './empty';\nimport type { IterableResolvable } from './from';\nimport { assertNotNegative } from './shared/_assertNotNegative';\nimport { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Advances the iterable by `count` elements from the iterable.\n *\n * @param iterable An iterator to drop values from.\n * @param count The number of elements to drop from the start of the iteration.\n * @returns An iterator that contains the elements of the provided iterator, except for the first `count` elements.\n *\n * @example\n * ```typescript\n * import { drop } from '@sapphire/iterator-utilities';\n *\n * const iterable = drop(iterator, 2);\n * console.log([...iterable]);\n * // Output: [3, 4, 5]\n * ```\n */\nexport function drop<const ElementType>(iterable: IterableResolvable<ElementType>, count: number): IterableIterator<ElementType> {\n\tcount = assertNotNegative(toIntegerOrInfinityOrThrow(count), count);\n\tconst resolvedIterable = toIterableIterator(iterable);\n\n\t// If the count is 0, return the original iterable:\n\tif (count === 0) return resolvedIterable;\n\t// If the count is infinite, return an empty iterable:\n\tif (count === Number.POSITIVE_INFINITY) return empty();\n\n\tfor (let i = 0; i < count; i++) {\n\t\tif (resolvedIterable.next().done) break;\n\t}\n\n\treturn resolvedIterable;\n}\n\nexport { drop as skip };\n"]}
1
+ {"version":3,"sources":["../../../src/lib/drop.ts"],"names":["assertNotNegative","toIntegerOrInfinityOrThrow","toIterableIterator","empty"],"mappings":";;;;;;;;;AAsBO,SAAS,IAAA,CAAwB,UAA2C,KAA8C,EAAA;AAChI,EAAA,KAAA,GAAQA,wCAAkB,CAAAC,0DAAA,CAA2B,KAAK,CAAA,EAAG,KAAK,CAAA,CAAA;AAClE,EAAM,MAAA,gBAAA,GAAmBC,0CAAmB,QAAQ,CAAA,CAAA;AAGpD,EAAI,IAAA,KAAA,KAAU,GAAU,OAAA,gBAAA,CAAA;AAExB,EAAA,IAAI,KAAU,KAAA,MAAA,CAAO,iBAAmB,EAAA,OAAOC,eAAM,EAAA,CAAA;AAErD,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,EAAO,CAAK,EAAA,EAAA;AAC/B,IAAI,IAAA,gBAAA,CAAiB,IAAK,EAAA,CAAE,IAAM,EAAA,MAAA;AAAA,GACnC;AAEA,EAAO,OAAA,gBAAA,CAAA;AACR,CAAA;AAdgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA","file":"drop.cjs","sourcesContent":["import { empty } from './empty';\nimport type { IterableResolvable } from './from';\nimport { assertNotNegative } from './shared/_assertNotNegative';\nimport { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Advances the iterable by `count` elements from the iterable.\n *\n * @param iterable An iterator to drop values from.\n * @param count The number of elements to drop from the start of the iteration.\n * @returns An iterator that contains the elements of the provided iterator, except for the first `count` elements.\n *\n * @example\n * ```typescript\n * import { drop } from '@sapphire/iterator-utilities';\n *\n * const iterable = drop(iterator, 2);\n * console.log([...iterable]);\n * // Output: [3, 4, 5]\n * ```\n */\nexport function drop<const ElementType>(iterable: IterableResolvable<ElementType>, count: number): IterableIterator<ElementType> {\n\tcount = assertNotNegative(toIntegerOrInfinityOrThrow(count), count);\n\tconst resolvedIterable = toIterableIterator(iterable);\n\n\t// If the count is 0, return the original iterable:\n\tif (count === 0) return resolvedIterable;\n\t// If the count is infinite, return an empty iterable:\n\tif (count === Number.POSITIVE_INFINITY) return empty();\n\n\tfor (let i = 0; i < count; i++) {\n\t\tif (resolvedIterable.next().done) break;\n\t}\n\n\treturn resolvedIterable;\n}\n"]}
@@ -18,4 +18,4 @@ import { IterableResolvable } from './from.cjs';
18
18
  */
19
19
  declare function drop<const ElementType>(iterable: IterableResolvable<ElementType>, count: number): IterableIterator<ElementType>;
20
20
 
21
- export { drop, drop as skip };
21
+ export { drop };
@@ -17,6 +17,5 @@ function dropLast(iterable, count) {
17
17
  __name(dropLast, "dropLast");
18
18
 
19
19
  exports.dropLast = dropLast;
20
- exports.skipLast = dropLast;
21
20
  //# sourceMappingURL=dropLast.cjs.map
22
21
  //# sourceMappingURL=dropLast.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/dropLast.ts"],"names":["assertNotNegative","toIntegerOrInfinityOrThrow","toArray","empty","take"],"mappings":";;;;;;;;;;AA2BO,SAAS,QAAA,CAA4B,UAA2C,KAA8C,EAAA;AACpI,EAAA,KAAA,GAAQA,wCAAkB,CAAAC,0DAAA,CAA2B,KAAK,CAAA,EAAG,KAAK,CAAA,CAAA;AAClE,EAAM,MAAA,KAAA,GAAQC,oBAAQ,QAAQ,CAAA,CAAA;AAC9B,EAAA,IAAI,KAAM,CAAA,MAAA,IAAU,KAAO,EAAA,OAAOC,eAAM,EAAA,CAAA;AACxC,EAAA,OAAOC,cAAK,KAAM,CAAA,MAAA,EAAU,EAAA,KAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AACjD,CAAA;AALgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA","file":"dropLast.cjs","sourcesContent":["import { empty } from './empty';\nimport type { IterableResolvable } from './from';\nimport { assertNotNegative } from './shared/_assertNotNegative';\nimport { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow';\nimport { take } from './take';\nimport { toArray } from './toArray';\n\n/**\n * Consumes the iterable, creating a new iterator without the last `count` elements from the iterable.\n *\n * @param iterable An iterator to drop values from.\n * @param count The number of values to drop from the end of the iterator.\n * @returns An iterator that contains the elements of the provided iterator, except for the last `count` elements.\n *\n * @example\n * ```typescript\n * import { dropLast } from '@sapphire/iterator-utilities';\n *\n * const iterable = dropLast([1, 2, 3, 4, 5], 2);\n * console.log([...iterable]);\n * // Output: [1, 2, 3]\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function dropLast<const ElementType>(iterable: IterableResolvable<ElementType>, count: number): IterableIterator<ElementType> {\n\tcount = assertNotNegative(toIntegerOrInfinityOrThrow(count), count);\n\tconst array = toArray(iterable);\n\tif (array.length <= count) return empty();\n\treturn take(array.values(), array.length - count);\n}\n\nexport { dropLast as skipLast };\n"]}
1
+ {"version":3,"sources":["../../../src/lib/dropLast.ts"],"names":["assertNotNegative","toIntegerOrInfinityOrThrow","toArray","empty","take"],"mappings":";;;;;;;;;;AA2BO,SAAS,QAAA,CAA4B,UAA2C,KAA8C,EAAA;AACpI,EAAA,KAAA,GAAQA,wCAAkB,CAAAC,0DAAA,CAA2B,KAAK,CAAA,EAAG,KAAK,CAAA,CAAA;AAClE,EAAM,MAAA,KAAA,GAAQC,oBAAQ,QAAQ,CAAA,CAAA;AAC9B,EAAA,IAAI,KAAM,CAAA,MAAA,IAAU,KAAO,EAAA,OAAOC,eAAM,EAAA,CAAA;AACxC,EAAA,OAAOC,cAAK,KAAM,CAAA,MAAA,EAAU,EAAA,KAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AACjD,CAAA;AALgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA","file":"dropLast.cjs","sourcesContent":["import { empty } from './empty';\nimport type { IterableResolvable } from './from';\nimport { assertNotNegative } from './shared/_assertNotNegative';\nimport { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow';\nimport { take } from './take';\nimport { toArray } from './toArray';\n\n/**\n * Consumes the iterable, creating a new iterator without the last `count` elements from the iterable.\n *\n * @param iterable An iterator to drop values from.\n * @param count The number of values to drop from the end of the iterator.\n * @returns An iterator that contains the elements of the provided iterator, except for the last `count` elements.\n *\n * @example\n * ```typescript\n * import { dropLast } from '@sapphire/iterator-utilities';\n *\n * const iterable = dropLast([1, 2, 3, 4, 5], 2);\n * console.log([...iterable]);\n * // Output: [1, 2, 3]\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function dropLast<const ElementType>(iterable: IterableResolvable<ElementType>, count: number): IterableIterator<ElementType> {\n\tcount = assertNotNegative(toIntegerOrInfinityOrThrow(count), count);\n\tconst array = toArray(iterable);\n\tif (array.length <= count) return empty();\n\treturn take(array.values(), array.length - count);\n}\n"]}
@@ -22,4 +22,4 @@ import { IterableResolvable } from './from.cjs';
22
22
  */
23
23
  declare function dropLast<const ElementType>(iterable: IterableResolvable<ElementType>, count: number): IterableIterator<ElementType>;
24
24
 
25
- export { dropLast, dropLast as skipLast };
25
+ export { dropLast };
@@ -17,6 +17,5 @@ function* dropWhile(iterable, callbackFn) {
17
17
  __name(dropWhile, "dropWhile");
18
18
 
19
19
  exports.dropWhile = dropWhile;
20
- exports.skipWhile = dropWhile;
21
20
  //# sourceMappingURL=dropWhile.cjs.map
22
21
  //# sourceMappingURL=dropWhile.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/dropWhile.ts"],"names":["assertFunction","toIterableIterator"],"mappings":";;;;;;;AA8BO,UAAU,SAAA,CAChB,UACA,UACgC,EAAA;AAChC,EAAA,UAAA,GAAaA,mCAAe,UAAU,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAW,KAAA,MAAA,KAAA,IAASC,yCAAmB,CAAA,QAAQ,CAAG,EAAA;AACjD,IAAA,IAAI,CAAC,UAAA,CAAW,KAAO,EAAA,KAAA,EAAO,CAAG,EAAA;AAChC,MAAM,MAAA,KAAA,CAAA;AAAA,KACP;AAAA,GACD;AACD,CAAA;AAZiB,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA","file":"dropWhile.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport { assertFunction } from './shared/_assertFunction';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Creates a new iterator without the elements that satisfy the specified test.\n *\n * @param iterable An iterator to drop values from.\n * @param callbackFn A function to execute for each element produced by the iterator. It should return a falsy value to make the element yielded by the iterator helper, and a truthy value otherwise.\n * @returns An iterator that produces elements from the given iterator that don't satisfy the specified test.\n *\n * @example\n * ```typescript\n * import { dropWhile } from '@sapphire/iterator-utilities';\n *\n * const iterable = dropWhile([1, 2, 3, 4, 5], (value) => value < 3);\n * console.log([...iterable]);\n * // Output: [3, 4, 5]\n * ```\n *\n * @seealso {@link filter} or {@link takeWhile} for the opposite behavior.\n */\nexport function dropWhile<const ElementType, const FilteredType extends ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => element is FilteredType\n): IterableIterator<Exclude<ElementType, FilteredType>>;\nexport function dropWhile<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => boolean\n): IterableIterator<ElementType>;\nexport function* dropWhile<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => boolean\n): IterableIterator<ElementType> {\n\tcallbackFn = assertFunction(callbackFn);\n\n\tlet index = 0;\n\tfor (const value of toIterableIterator(iterable)) {\n\t\tif (!callbackFn(value, index++)) {\n\t\t\tyield value;\n\t\t}\n\t}\n}\n\nexport { dropWhile as skipWhile };\n"]}
1
+ {"version":3,"sources":["../../../src/lib/dropWhile.ts"],"names":["assertFunction","toIterableIterator"],"mappings":";;;;;;;AA8BO,UAAU,SAAA,CAChB,UACA,UACgC,EAAA;AAChC,EAAA,UAAA,GAAaA,mCAAe,UAAU,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAW,KAAA,MAAA,KAAA,IAASC,yCAAmB,CAAA,QAAQ,CAAG,EAAA;AACjD,IAAA,IAAI,CAAC,UAAA,CAAW,KAAO,EAAA,KAAA,EAAO,CAAG,EAAA;AAChC,MAAM,MAAA,KAAA,CAAA;AAAA,KACP;AAAA,GACD;AACD,CAAA;AAZiB,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA","file":"dropWhile.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport { assertFunction } from './shared/_assertFunction';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Creates a new iterator without the elements that satisfy the specified test.\n *\n * @param iterable An iterator to drop values from.\n * @param callbackFn A function to execute for each element produced by the iterator. It should return a falsy value to make the element yielded by the iterator helper, and a truthy value otherwise.\n * @returns An iterator that produces elements from the given iterator that don't satisfy the specified test.\n *\n * @example\n * ```typescript\n * import { dropWhile } from '@sapphire/iterator-utilities';\n *\n * const iterable = dropWhile([1, 2, 3, 4, 5], (value) => value < 3);\n * console.log([...iterable]);\n * // Output: [3, 4, 5]\n * ```\n *\n * @seealso {@link filter} or {@link takeWhile} for the opposite behavior.\n */\nexport function dropWhile<const ElementType, const FilteredType extends ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => element is FilteredType\n): IterableIterator<Exclude<ElementType, FilteredType>>;\nexport function dropWhile<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => boolean\n): IterableIterator<ElementType>;\nexport function* dropWhile<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => boolean\n): IterableIterator<ElementType> {\n\tcallbackFn = assertFunction(callbackFn);\n\n\tlet index = 0;\n\tfor (const value of toIterableIterator(iterable)) {\n\t\tif (!callbackFn(value, index++)) {\n\t\t\tyield value;\n\t\t}\n\t}\n}\n"]}
@@ -21,4 +21,4 @@ import { IterableResolvable } from './from.cjs';
21
21
  declare function dropWhile<const ElementType, const FilteredType extends ElementType>(iterable: IterableResolvable<ElementType>, callbackFn: (element: ElementType, index: number) => element is FilteredType): IterableIterator<Exclude<ElementType, FilteredType>>;
22
22
  declare function dropWhile<const ElementType>(iterable: IterableResolvable<ElementType>, callbackFn: (element: ElementType, index: number) => boolean): IterableIterator<ElementType>;
23
23
 
24
- export { dropWhile, dropWhile as skipWhile };
24
+ export { dropWhile };
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var equalBy_cjs = require('./equalBy.cjs');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ function equal(iterable, other) {
8
+ return equalBy_cjs.equalBy(iterable, other, (a, b) => a === b);
9
+ }
10
+ __name(equal, "equal");
11
+
12
+ exports.eq = equal;
13
+ exports.equal = equal;
14
+ //# sourceMappingURL=equal.cjs.map
15
+ //# sourceMappingURL=equal.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/equal.ts"],"names":["equalBy"],"mappings":";;;;;;AAwBO,SAAS,KAAA,CAAyB,UAA2C,KAAiD,EAAA;AACpI,EAAA,OAAOA,oBAAQ,QAAU,EAAA,KAAA,EAAO,CAAC,CAAG,EAAA,CAAA,KAAM,MAAM,CAAC,CAAA,CAAA;AAClD,CAAA;AAFgB,MAAA,CAAA,KAAA,EAAA,OAAA,CAAA","file":"equal.cjs","sourcesContent":["import { equalBy } from './equalBy';\nimport type { IterableResolvable } from './from';\n\n/**\n * Determines if the elements of both iterators are equal.\n *\n * @param iterable The iterator to compare.\n * @param other The iterator to compare against.\n * @returns Whether the two iterators are equal.\n *\n * @example\n * ```typescript\n * import { equal } from '@sapphire/iterator-utilities';\n *\n * console.log(equal([1], [1]));\n * // Output: true\n * console.log(equal([1], [1, 2]));\n * // Output: false\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function equal<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>): boolean {\n\treturn equalBy(iterable, other, (a, b) => a === b);\n}\n\nexport { equal as eq };\n"]}
@@ -0,0 +1,26 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+
3
+ /**
4
+ * Determines if the elements of both iterators are equal.
5
+ *
6
+ * @param iterable The iterator to compare.
7
+ * @param other The iterator to compare against.
8
+ * @returns Whether the two iterators are equal.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { equal } from '@sapphire/iterator-utilities';
13
+ *
14
+ * console.log(equal([1], [1]));
15
+ * // Output: true
16
+ * console.log(equal([1], [1, 2]));
17
+ * // Output: false
18
+ * ```
19
+ *
20
+ * @remarks
21
+ *
22
+ * This function consumes the entire iterator.
23
+ */
24
+ declare function equal<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>): boolean;
25
+
26
+ export { equal as eq, equal };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var from_cjs = require('./from.cjs');
4
+ var _assertFunction_cjs = require('./shared/_assertFunction.cjs');
5
+ var toIterableIterator_cjs = require('./toIterableIterator.cjs');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ function equalBy(iterable, other, callbackFn) {
10
+ callbackFn = _assertFunction_cjs.assertFunction(callbackFn);
11
+ const iterator1 = from_cjs.from(other);
12
+ for (const value0 of toIterableIterator_cjs.toIterableIterator(iterable)) {
13
+ const result1 = iterator1.next();
14
+ if (result1.done || !callbackFn(value0, result1.value)) return false;
15
+ }
16
+ return iterator1.next().done === true;
17
+ }
18
+ __name(equalBy, "equalBy");
19
+
20
+ exports.eqBy = equalBy;
21
+ exports.equalBy = equalBy;
22
+ //# sourceMappingURL=equalBy.cjs.map
23
+ //# sourceMappingURL=equalBy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/equalBy.ts"],"names":["assertFunction","from","toIterableIterator"],"mappings":";;;;;;;;AA0BO,SAAS,OAAA,CACf,QACA,EAAA,KAAA,EACA,UACU,EAAA;AACV,EAAA,UAAA,GAAaA,mCAAe,UAAU,CAAA,CAAA;AAEtC,EAAM,MAAA,SAAA,GAAYC,cAAK,KAAK,CAAA,CAAA;AAE5B,EAAW,KAAA,MAAA,MAAA,IAAUC,yCAAmB,CAAA,QAAQ,CAAG,EAAA;AAClD,IAAM,MAAA,OAAA,GAAU,UAAU,IAAK,EAAA,CAAA;AAC/B,IAAI,IAAA,OAAA,CAAQ,QAAQ,CAAC,UAAA,CAAW,QAAQ,OAAQ,CAAA,KAAK,GAAU,OAAA,KAAA,CAAA;AAAA,GAChE;AAEA,EAAO,OAAA,SAAA,CAAU,IAAK,EAAA,CAAE,IAAS,KAAA,IAAA,CAAA;AAClC,CAAA;AAfgB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA","file":"equalBy.cjs","sourcesContent":["import { from, type IterableResolvable } from './from';\nimport { assertFunction } from './shared/_assertFunction';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Determines if the elements of both iterators are equal with respect to the specified equality function.\n *\n * @param iterable The iterator to compare.\n * @param other The iterator to compare against.\n * @returns Whether the two iterators are equal with respect to the specified equality function.\n *\n * @example\n * ```typescript\n * import { equalBy } from '@sapphire/iterator-utilities';\n *\n * const x = [1, 2, 3, 4];\n * const y = [1, 4, 9, 16];\n *\n * console.log(equalBy(x, y, (a, b) => a * a === b));\n * // Output: true\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function equalBy<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tother: IterableResolvable<ElementType>,\n\tcallbackFn: (x: ElementType, y: ElementType) => boolean\n): boolean {\n\tcallbackFn = assertFunction(callbackFn);\n\n\tconst iterator1 = from(other);\n\n\tfor (const value0 of toIterableIterator(iterable)) {\n\t\tconst result1 = iterator1.next();\n\t\tif (result1.done || !callbackFn(value0, result1.value)) return false;\n\t}\n\n\treturn iterator1.next().done === true;\n}\n\nexport { equalBy as eqBy };\n"]}
@@ -0,0 +1,27 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+
3
+ /**
4
+ * Determines if the elements of both iterators are equal with respect to the specified equality function.
5
+ *
6
+ * @param iterable The iterator to compare.
7
+ * @param other The iterator to compare against.
8
+ * @returns Whether the two iterators are equal with respect to the specified equality function.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { equalBy } from '@sapphire/iterator-utilities';
13
+ *
14
+ * const x = [1, 2, 3, 4];
15
+ * const y = [1, 4, 9, 16];
16
+ *
17
+ * console.log(equalBy(x, y, (a, b) => a * a === b));
18
+ * // Output: true
19
+ * ```
20
+ *
21
+ * @remarks
22
+ *
23
+ * This function consumes the entire iterator.
24
+ */
25
+ declare function equalBy<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>, callbackFn: (x: ElementType, y: ElementType) => boolean): boolean;
26
+
27
+ export { equalBy as eqBy, equalBy };
@@ -15,6 +15,5 @@ function* filter(iterable, callbackFn) {
15
15
  __name(filter, "filter");
16
16
 
17
17
  exports.filter = filter;
18
- exports.takeWhile = filter;
19
18
  //# sourceMappingURL=filter.cjs.map
20
19
  //# sourceMappingURL=filter.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/filter.ts"],"names":["assertFunction","toIterableIterator"],"mappings":";;;;;;;AA4BO,UAAU,MAAA,CAChB,UACA,UACgC,EAAA;AAChC,EAAA,UAAA,GAAaA,mCAAe,UAAU,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAW,KAAA,MAAA,KAAA,IAASC,yCAAmB,CAAA,QAAQ,CAAG,EAAA;AACjD,IAAA,IAAI,UAAW,CAAA,KAAA,EAAO,KAAO,EAAA,CAAA,EAAS,MAAA,KAAA,CAAA;AAAA,GACvC;AACD,CAAA;AAViB,MAAA,CAAA,MAAA,EAAA,QAAA,CAAA","file":"filter.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport { assertFunction } from './shared/_assertFunction';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Creates an iterable with the elements that pass the test implemented by the provided function.\n *\n * @param iterable The iterator to filter.\n * @param callbackFn A function to execute for each element produced by the iterator. It should return a truthy value to make the element yielded by the iterator helper, and a falsy value otherwise.\n * @returns An iterator that produces elements from the given iterator that satisfy the specified test.\n *\n * @example\n * ```typescript\n * import { filter } from '@sapphire/iterator-utilities';\n *\n * const iterable = [1, 2, 3, 4, 5];\n * console.log([...filter(iterable, (value) => value % 2 === 0)]);\n * // Output: [2, 4]\n * ```\n */\nexport function filter<const ElementType, const FilteredType extends ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => element is FilteredType\n): IterableIterator<FilteredType>;\nexport function filter<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => boolean\n): IterableIterator<ElementType>;\nexport function* filter<ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => boolean\n): IterableIterator<ElementType> {\n\tcallbackFn = assertFunction(callbackFn);\n\n\tlet index = 0;\n\tfor (const value of toIterableIterator(iterable)) {\n\t\tif (callbackFn(value, index++)) yield value;\n\t}\n}\n\nexport { filter as takeWhile };\n"]}
1
+ {"version":3,"sources":["../../../src/lib/filter.ts"],"names":["assertFunction","toIterableIterator"],"mappings":";;;;;;;AA4BO,UAAU,MAAA,CAChB,UACA,UACgC,EAAA;AAChC,EAAA,UAAA,GAAaA,mCAAe,UAAU,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAW,KAAA,MAAA,KAAA,IAASC,yCAAmB,CAAA,QAAQ,CAAG,EAAA;AACjD,IAAA,IAAI,UAAW,CAAA,KAAA,EAAO,KAAO,EAAA,CAAA,EAAS,MAAA,KAAA,CAAA;AAAA,GACvC;AACD,CAAA;AAViB,MAAA,CAAA,MAAA,EAAA,QAAA,CAAA","file":"filter.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport { assertFunction } from './shared/_assertFunction';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Creates an iterable with the elements that pass the test implemented by the provided function.\n *\n * @param iterable The iterator to filter.\n * @param callbackFn A function to execute for each element produced by the iterator. It should return a truthy value to make the element yielded by the iterator helper, and a falsy value otherwise.\n * @returns An iterator that produces elements from the given iterator that satisfy the specified test.\n *\n * @example\n * ```typescript\n * import { filter } from '@sapphire/iterator-utilities';\n *\n * const iterable = [1, 2, 3, 4, 5];\n * console.log([...filter(iterable, (value) => value % 2 === 0)]);\n * // Output: [2, 4]\n * ```\n */\nexport function filter<const ElementType, const FilteredType extends ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => element is FilteredType\n): IterableIterator<FilteredType>;\nexport function filter<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => boolean\n): IterableIterator<ElementType>;\nexport function* filter<ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => boolean\n): IterableIterator<ElementType> {\n\tcallbackFn = assertFunction(callbackFn);\n\n\tlet index = 0;\n\tfor (const value of toIterableIterator(iterable)) {\n\t\tif (callbackFn(value, index++)) yield value;\n\t}\n}\n"]}
@@ -19,4 +19,4 @@ import { IterableResolvable } from './from.cjs';
19
19
  declare function filter<const ElementType, const FilteredType extends ElementType>(iterable: IterableResolvable<ElementType>, callbackFn: (element: ElementType, index: number) => element is FilteredType): IterableIterator<FilteredType>;
20
20
  declare function filter<const ElementType>(iterable: IterableResolvable<ElementType>, callbackFn: (element: ElementType, index: number) => boolean): IterableIterator<ElementType>;
21
21
 
22
- export { filter, filter as takeWhile };
22
+ export { filter };
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var _makeIterableIterator_cjs = require('./shared/_makeIterableIterator.cjs');
4
+ var toIterableIterator_cjs = require('./toIterableIterator.cjs');
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ function fuse(iterable) {
9
+ let ended = false;
10
+ const iterator = toIterableIterator_cjs.toIterableIterator(iterable);
11
+ return _makeIterableIterator_cjs.makeIterableIterator(() => {
12
+ if (ended) {
13
+ return { done: true, value: void 0 };
14
+ }
15
+ const result = iterator.next();
16
+ if (result.done) {
17
+ ended = true;
18
+ }
19
+ return result;
20
+ });
21
+ }
22
+ __name(fuse, "fuse");
23
+
24
+ exports.fuse = fuse;
25
+ //# sourceMappingURL=fuse.cjs.map
26
+ //# sourceMappingURL=fuse.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/fuse.ts"],"names":["toIterableIterator","makeIterableIterator"],"mappings":";;;;;;;AA8CO,SAAS,KAAwB,QAA0E,EAAA;AACjH,EAAA,IAAI,KAAQ,GAAA,KAAA,CAAA;AACZ,EAAM,MAAA,QAAA,GAAWA,0CAAmB,QAAQ,CAAA,CAAA;AAC5C,EAAA,OAAOC,+CAAqB,MAAM;AACjC,IAAA,IAAI,KAAO,EAAA;AACV,MAAA,OAAO,EAAE,IAAA,EAAM,IAAM,EAAA,KAAA,EAAO,KAAU,CAAA,EAAA,CAAA;AAAA,KACvC;AAEA,IAAM,MAAA,MAAA,GAAS,SAAS,IAAK,EAAA,CAAA;AAC7B,IAAA,IAAI,OAAO,IAAM,EAAA;AAChB,MAAQ,KAAA,GAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,MAAA,CAAA;AAAA,GACP,CAAA,CAAA;AACF,CAAA;AAfgB,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA","file":"fuse.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport { makeIterableIterator } from './shared/_makeIterableIterator';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Creates an iterator which ends after the first `done` result from the original iterator.\n *\n * After an iterator returns a `done` result, future calls may or may not yield additional results again. This function\n * adapts an iterator, ensuring that after a `done` result is given, it will always return a `done` result forever.\n *\n * @param iterable An iterator to fuse.\n *\n * @example\n * ```typescript\n * import { fuse } from '@sapphire/iterator-utilities';\n *\n * const iterable = {\n * state: 0,\n * next() {\n * const value = this.state;\n * this.state += 1;\n *\n * return value % 2 === 0 //\n * ? { done: false, value }\n * : { done: true, value: undefined };\n * }\n * };\n *\n * // We can see our iterator going back and forth\n * assert(iterable.next(), { done: false, value: 0 });\n * assert(iterable.next(), { done: true, value: undefined });\n * assert(iterable.next(), { done: false, value: 2 });\n * assert(iterable.next(), { done: true, value: undefined });\n *\n * // However, once we fuse it...\n * const fused = fuse(iterable);\n *\n * assert(fused.next(), { done: false, value: 4 });\n * assert(fused.next(), { done: true, value: undefined });\n *\n * // It will always return a `done` result after the first time\n * assert(fused.next(), { done: true, value: undefined });\n * assert(fused.next(), { done: true, value: undefined });\n * assert(fused.next(), { done: true, value: undefined });\n * ```\n */\nexport function fuse<const ElementType>(iterable: IterableResolvable<ElementType>): IterableIterator<ElementType> {\n\tlet ended = false;\n\tconst iterator = toIterableIterator(iterable);\n\treturn makeIterableIterator(() => {\n\t\tif (ended) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\tconst result = iterator.next();\n\t\tif (result.done) {\n\t\t\tended = true;\n\t\t}\n\n\t\treturn result;\n\t});\n}\n"]}
@@ -0,0 +1,47 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+
3
+ /**
4
+ * Creates an iterator which ends after the first `done` result from the original iterator.
5
+ *
6
+ * After an iterator returns a `done` result, future calls may or may not yield additional results again. This function
7
+ * adapts an iterator, ensuring that after a `done` result is given, it will always return a `done` result forever.
8
+ *
9
+ * @param iterable An iterator to fuse.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { fuse } from '@sapphire/iterator-utilities';
14
+ *
15
+ * const iterable = {
16
+ * state: 0,
17
+ * next() {
18
+ * const value = this.state;
19
+ * this.state += 1;
20
+ *
21
+ * return value % 2 === 0 //
22
+ * ? { done: false, value }
23
+ * : { done: true, value: undefined };
24
+ * }
25
+ * };
26
+ *
27
+ * // We can see our iterator going back and forth
28
+ * assert(iterable.next(), { done: false, value: 0 });
29
+ * assert(iterable.next(), { done: true, value: undefined });
30
+ * assert(iterable.next(), { done: false, value: 2 });
31
+ * assert(iterable.next(), { done: true, value: undefined });
32
+ *
33
+ * // However, once we fuse it...
34
+ * const fused = fuse(iterable);
35
+ *
36
+ * assert(fused.next(), { done: false, value: 4 });
37
+ * assert(fused.next(), { done: true, value: undefined });
38
+ *
39
+ * // It will always return a `done` result after the first time
40
+ * assert(fused.next(), { done: true, value: undefined });
41
+ * assert(fused.next(), { done: true, value: undefined });
42
+ * assert(fused.next(), { done: true, value: undefined });
43
+ * ```
44
+ */
45
+ declare function fuse<const ElementType>(iterable: IterableResolvable<ElementType>): IterableIterator<ElementType>;
46
+
47
+ export { fuse };
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var compare_cjs = require('./compare.cjs');
4
+ var _compare_cjs = require('./shared/_compare.cjs');
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ function greaterOrEqualThan(iterable, other) {
9
+ const result = compare_cjs.compare(iterable, other);
10
+ return !_compare_cjs.orderingIsLess(result);
11
+ }
12
+ __name(greaterOrEqualThan, "greaterOrEqualThan");
13
+
14
+ exports.ge = greaterOrEqualThan;
15
+ exports.greaterOrEqualThan = greaterOrEqualThan;
16
+ //# sourceMappingURL=greaterOrEqualThan.cjs.map
17
+ //# sourceMappingURL=greaterOrEqualThan.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/greaterOrEqualThan.ts"],"names":["compare","orderingIsLess"],"mappings":";;;;;;;AA+BO,SAAS,kBAAA,CAAsC,UAA2C,KAAiD,EAAA;AACjJ,EAAM,MAAA,MAAA,GAASA,mBAAQ,CAAA,QAAA,EAAU,KAAK,CAAA,CAAA;AACtC,EAAO,OAAA,CAACC,4BAAe,MAAM,CAAA,CAAA;AAC9B,CAAA;AAHgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA","file":"greaterOrEqualThan.cjs","sourcesContent":["import { compare } from './compare';\nimport type { IterableResolvable } from './from';\nimport { orderingIsLess, type LexicographicComparison } from './shared/_compare';\n\n/**\n * Determines if the elements of `iterable` are {@link LexicographicComparison lexicographically} greater or equal than\n * those of another.\n *\n * @param iterable The iterator to compare.\n * @param other The iterator to compare against.\n *\n * @example\n * ```typescript\n * import { greaterOrEqualThan } from '@sapphire/iterator-utilities';\n *\n * const x = [1, 2, 3, 4];\n * const y = [1, 4, 9, 16];\n * console.log(greaterOrEqualThan([1], [1]));\n * // Output: true\n * console.log(greaterOrEqualThan([1], [1, 2]));\n * // Output: false\n * console.log(greaterOrEqualThan([1, 2], [1]));\n * // Output: true\n * console.log(greaterOrEqualThan([1, 2], [1, 2]));\n * // Output: true\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function greaterOrEqualThan<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>): boolean {\n\tconst result = compare(iterable, other);\n\treturn !orderingIsLess(result);\n}\n\nexport { greaterOrEqualThan as ge };\n"]}
@@ -0,0 +1,32 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+
3
+ /**
4
+ * Determines if the elements of `iterable` are {@link LexicographicComparison lexicographically} greater or equal than
5
+ * those of another.
6
+ *
7
+ * @param iterable The iterator to compare.
8
+ * @param other The iterator to compare against.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { greaterOrEqualThan } from '@sapphire/iterator-utilities';
13
+ *
14
+ * const x = [1, 2, 3, 4];
15
+ * const y = [1, 4, 9, 16];
16
+ * console.log(greaterOrEqualThan([1], [1]));
17
+ * // Output: true
18
+ * console.log(greaterOrEqualThan([1], [1, 2]));
19
+ * // Output: false
20
+ * console.log(greaterOrEqualThan([1, 2], [1]));
21
+ * // Output: true
22
+ * console.log(greaterOrEqualThan([1, 2], [1, 2]));
23
+ * // Output: true
24
+ * ```
25
+ *
26
+ * @remarks
27
+ *
28
+ * This function consumes the entire iterator.
29
+ */
30
+ declare function greaterOrEqualThan<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>): boolean;
31
+
32
+ export { greaterOrEqualThan as ge, greaterOrEqualThan };
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var compare_cjs = require('./compare.cjs');
4
+ var _compare_cjs = require('./shared/_compare.cjs');
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ function greaterThan(iterable, other) {
9
+ const result = compare_cjs.compare(iterable, other);
10
+ return _compare_cjs.orderingIsGreater(result);
11
+ }
12
+ __name(greaterThan, "greaterThan");
13
+
14
+ exports.greaterThan = greaterThan;
15
+ exports.gt = greaterThan;
16
+ //# sourceMappingURL=greaterThan.cjs.map
17
+ //# sourceMappingURL=greaterThan.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/greaterThan.ts"],"names":["compare","orderingIsGreater"],"mappings":";;;;;;;AA+BO,SAAS,WAAA,CAA+B,UAA2C,KAAiD,EAAA;AAC1I,EAAM,MAAA,MAAA,GAASA,mBAAQ,CAAA,QAAA,EAAU,KAAK,CAAA,CAAA;AACtC,EAAA,OAAOC,+BAAkB,MAAM,CAAA,CAAA;AAChC,CAAA;AAHgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA","file":"greaterThan.cjs","sourcesContent":["import { compare } from './compare';\nimport type { IterableResolvable } from './from';\nimport { orderingIsGreater, type LexicographicComparison } from './shared/_compare';\n\n/**\n * Determines if the elements of `iterable` are {@link LexicographicComparison lexicographically} greater than those of\n * another.\n *\n * @param iterable The iterator to compare.\n * @param other The iterator to compare against.\n *\n * @example\n * ```typescript\n * import { greaterThan } from '@sapphire/iterator-utilities';\n *\n * const x = [1, 2, 3, 4];\n * const y = [1, 4, 9, 16];\n * console.log(greaterThan([1], [1]));\n * // Output: false\n * console.log(greaterThan([1], [1, 2]));\n * // Output: false\n * console.log(greaterThan([1, 2], [1]));\n * // Output: true\n * console.log(greaterThan([1, 2], [1, 2]));\n * // Output: false\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function greaterThan<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>): boolean {\n\tconst result = compare(iterable, other);\n\treturn orderingIsGreater(result);\n}\n\nexport { greaterThan as gt };\n"]}
@@ -0,0 +1,32 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+
3
+ /**
4
+ * Determines if the elements of `iterable` are {@link LexicographicComparison lexicographically} greater than those of
5
+ * another.
6
+ *
7
+ * @param iterable The iterator to compare.
8
+ * @param other The iterator to compare against.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { greaterThan } from '@sapphire/iterator-utilities';
13
+ *
14
+ * const x = [1, 2, 3, 4];
15
+ * const y = [1, 4, 9, 16];
16
+ * console.log(greaterThan([1], [1]));
17
+ * // Output: false
18
+ * console.log(greaterThan([1], [1, 2]));
19
+ * // Output: false
20
+ * console.log(greaterThan([1, 2], [1]));
21
+ * // Output: true
22
+ * console.log(greaterThan([1, 2], [1, 2]));
23
+ * // Output: false
24
+ * ```
25
+ *
26
+ * @remarks
27
+ *
28
+ * This function consumes the entire iterator.
29
+ */
30
+ declare function greaterThan<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>): boolean;
31
+
32
+ export { greaterThan, greaterThan as gt };
@@ -17,6 +17,5 @@ function indexOf(iterable, value) {
17
17
  __name(indexOf, "indexOf");
18
18
 
19
19
  exports.indexOf = indexOf;
20
- exports.position = indexOf;
21
20
  //# sourceMappingURL=indexOf.cjs.map
22
21
  //# sourceMappingURL=indexOf.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/indexOf.ts"],"names":["toIterableIterator"],"mappings":";;;;;;AAuBO,SAAS,OAAA,CAA2B,UAA2C,KAA4B,EAAA;AACjH,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAW,KAAA,MAAA,OAAA,IAAWA,yCAAmB,CAAA,QAAQ,CAAG,EAAA;AACnD,IAAA,IAAI,YAAY,KAAO,EAAA;AACtB,MAAO,OAAA,KAAA,CAAA;AAAA,KACR;AAEA,IAAA,KAAA,EAAA,CAAA;AAAA,GACD;AAEA,EAAO,OAAA,CAAA,CAAA,CAAA;AACR,CAAA;AAXgB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA","file":"indexOf.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Advances the iterable until it finds the element, returning its index if it's found and `-1` otherwise.\n *\n * @param iterable An iterator to search for a value in.\n * @param value The value to search for.\n * @returns The index of the first occurrence of the value in the iterator, or `-1` if the value is not found.\n *\n * @example\n * ```typescript\n * import { indexOf } from '@sapphire/iterator-utilities';\n *\n * const iterable = [1, 2, 3, 4, 5];\n * console.log(indexOf(iterable, 3));\n * // Output: 2\n * ```\n *\n * @remarks\n *\n * This function consumes the iterator until the value is found or the iterator is exhausted.\n */\nexport function indexOf<const ElementType>(iterable: IterableResolvable<ElementType>, value: ElementType): number {\n\tlet index = 0;\n\tfor (const element of toIterableIterator(iterable)) {\n\t\tif (element === value) {\n\t\t\treturn index;\n\t\t}\n\n\t\tindex++;\n\t}\n\n\treturn -1;\n}\n\nexport { indexOf as position };\n"]}
1
+ {"version":3,"sources":["../../../src/lib/indexOf.ts"],"names":["toIterableIterator"],"mappings":";;;;;;AAuBO,SAAS,OAAA,CAA2B,UAA2C,KAA4B,EAAA;AACjH,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAW,KAAA,MAAA,OAAA,IAAWA,yCAAmB,CAAA,QAAQ,CAAG,EAAA;AACnD,IAAA,IAAI,YAAY,KAAO,EAAA;AACtB,MAAO,OAAA,KAAA,CAAA;AAAA,KACR;AAEA,IAAA,KAAA,EAAA,CAAA;AAAA,GACD;AAEA,EAAO,OAAA,CAAA,CAAA,CAAA;AACR,CAAA;AAXgB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA","file":"indexOf.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Advances the iterable until it finds the element, returning its index if it's found and `-1` otherwise.\n *\n * @param iterable An iterator to search for a value in.\n * @param value The value to search for.\n * @returns The index of the first occurrence of the value in the iterator, or `-1` if the value is not found.\n *\n * @example\n * ```typescript\n * import { indexOf } from '@sapphire/iterator-utilities';\n *\n * const iterable = [1, 2, 3, 4, 5];\n * console.log(indexOf(iterable, 3));\n * // Output: 2\n * ```\n *\n * @remarks\n *\n * This function consumes the iterator until the value is found or the iterator is exhausted.\n */\nexport function indexOf<const ElementType>(iterable: IterableResolvable<ElementType>, value: ElementType): number {\n\tlet index = 0;\n\tfor (const element of toIterableIterator(iterable)) {\n\t\tif (element === value) {\n\t\t\treturn index;\n\t\t}\n\n\t\tindex++;\n\t}\n\n\treturn -1;\n}\n"]}
@@ -22,4 +22,4 @@ import { IterableResolvable } from './from.cjs';
22
22
  */
23
23
  declare function indexOf<const ElementType>(iterable: IterableResolvable<ElementType>, value: ElementType): number;
24
24
 
25
- export { indexOf, indexOf as position };
25
+ export { indexOf };
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var from_cjs = require('./from.cjs');
4
+ var _assertFunction_cjs = require('./shared/_assertFunction.cjs');
5
+ var _makeIterableIterator_cjs = require('./shared/_makeIterableIterator.cjs');
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ function inspect(iterable, callbackFn) {
10
+ callbackFn = _assertFunction_cjs.assertFunction(callbackFn);
11
+ let index = 0;
12
+ const iterator = from_cjs.from(iterable);
13
+ return _makeIterableIterator_cjs.makeIterableIterator(() => {
14
+ const result = iterator.next();
15
+ if (!result.done) {
16
+ callbackFn(result.value, index++);
17
+ }
18
+ return result;
19
+ });
20
+ }
21
+ __name(inspect, "inspect");
22
+
23
+ exports.inspect = inspect;
24
+ //# sourceMappingURL=inspect.cjs.map
25
+ //# sourceMappingURL=inspect.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/inspect.ts"],"names":["assertFunction","from","makeIterableIterator"],"mappings":";;;;;;;;AAsCO,SAAS,OAAA,CACf,UACA,UACgC,EAAA;AAChC,EAAA,UAAA,GAAaA,mCAAe,UAAU,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAM,MAAA,QAAA,GAAWC,cAAK,QAAQ,CAAA,CAAA;AAC9B,EAAA,OAAOC,+CAAkC,MAAM;AAC9C,IAAM,MAAA,MAAA,GAAS,SAAS,IAAK,EAAA,CAAA;AAC7B,IAAI,IAAA,CAAC,OAAO,IAAM,EAAA;AACjB,MAAW,UAAA,CAAA,MAAA,CAAO,OAAO,KAAO,EAAA,CAAA,CAAA;AAAA,KACjC;AAEA,IAAO,OAAA,MAAA,CAAA;AAAA,GACP,CAAA,CAAA;AACF,CAAA;AAhBgB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA","file":"inspect.cjs","sourcesContent":["import { from, type IterableResolvable } from './from';\nimport { assertFunction } from './shared/_assertFunction';\nimport { makeIterableIterator } from './shared/_makeIterableIterator';\n\n/**\n * Does something with each element of an iterator, passing the value on.\n *\n * When using iterators, you'll often chain several of them together. While working on such code, you might want to\n * check out what's happening at various parts in the pipeline. To do that, insert a call to this function.\n *\n * It's more common for this function to be used as a debugging tool than to exist in your final code, but applications\n * may find it useful in certain situations when errors need to be logged before being discarded.\n *\n * @param iterable An iterator to inspect.\n *\n * @example\n * ```typescript\n * import { inspect } from '@sapphire/iterator-utilities';\n *\n * const iterable = [1, 4, 2, 3];\n *\n * let iter = inspect(iter, (value) => console.log(`about to filter: ${value}`));\n * iter = filter(iterable, (value) => value % 2 === 0);\n * iter = inspect(iter, (value) => console.log(`made it through filter: ${value}`));\n *\n * const sum = reduce(iter, (acc, value) => acc + value, 0);\n * console.log(sum);\n *\n * // Output:\n * // about to filter: 1\n * // about to filter: 4\n * // made it through filter: 4\n * // about to filter: 2\n * // made it through filter: 2\n * // about to filter: 3\n * // 6\n * ```\n */\nexport function inspect<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => void\n): IterableIterator<ElementType> {\n\tcallbackFn = assertFunction(callbackFn);\n\n\tlet index = 0;\n\tconst iterator = from(iterable);\n\treturn makeIterableIterator<ElementType>(() => {\n\t\tconst result = iterator.next();\n\t\tif (!result.done) {\n\t\t\tcallbackFn(result.value, index++);\n\t\t}\n\n\t\treturn result;\n\t});\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+
3
+ /**
4
+ * Does something with each element of an iterator, passing the value on.
5
+ *
6
+ * When using iterators, you'll often chain several of them together. While working on such code, you might want to
7
+ * check out what's happening at various parts in the pipeline. To do that, insert a call to this function.
8
+ *
9
+ * It's more common for this function to be used as a debugging tool than to exist in your final code, but applications
10
+ * may find it useful in certain situations when errors need to be logged before being discarded.
11
+ *
12
+ * @param iterable An iterator to inspect.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { inspect } from '@sapphire/iterator-utilities';
17
+ *
18
+ * const iterable = [1, 4, 2, 3];
19
+ *
20
+ * let iter = inspect(iter, (value) => console.log(`about to filter: ${value}`));
21
+ * iter = filter(iterable, (value) => value % 2 === 0);
22
+ * iter = inspect(iter, (value) => console.log(`made it through filter: ${value}`));
23
+ *
24
+ * const sum = reduce(iter, (acc, value) => acc + value, 0);
25
+ * console.log(sum);
26
+ *
27
+ * // Output:
28
+ * // about to filter: 1
29
+ * // about to filter: 4
30
+ * // made it through filter: 4
31
+ * // about to filter: 2
32
+ * // made it through filter: 2
33
+ * // about to filter: 3
34
+ * // 6
35
+ * ```
36
+ */
37
+ declare function inspect<const ElementType>(iterable: IterableResolvable<ElementType>, callbackFn: (element: ElementType, index: number) => void): IterableIterator<ElementType>;
38
+
39
+ export { inspect };
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var from_cjs = require('./from.cjs');
4
+ var _makeIterableIterator_cjs = require('./shared/_makeIterableIterator.cjs');
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ function intersperse(iterable, separator) {
9
+ let started = false;
10
+ let nextItem;
11
+ let nextItemTaken = false;
12
+ const iterator = from_cjs.from(iterable);
13
+ return _makeIterableIterator_cjs.makeIterableIterator(() => {
14
+ if (started) {
15
+ if (nextItemTaken) {
16
+ nextItemTaken = false;
17
+ return { done: false, value: nextItem };
18
+ }
19
+ const result = iterator.next();
20
+ if (result.done) {
21
+ return { done: true, value: void 0 };
22
+ }
23
+ nextItem = result.value;
24
+ nextItemTaken = true;
25
+ return { done: false, value: separator };
26
+ }
27
+ started = true;
28
+ return iterator.next();
29
+ });
30
+ }
31
+ __name(intersperse, "intersperse");
32
+
33
+ exports.intersperse = intersperse;
34
+ //# sourceMappingURL=intersperse.cjs.map
35
+ //# sourceMappingURL=intersperse.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/intersperse.ts"],"names":["from","makeIterableIterator"],"mappings":";;;;;;;AA4BO,SAAS,WAAA,CAA+B,UAA2C,SAAuD,EAAA;AAChJ,EAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AACd,EAAI,IAAA,QAAA,CAAA;AACJ,EAAA,IAAI,aAAgB,GAAA,KAAA,CAAA;AAEpB,EAAM,MAAA,QAAA,GAAWA,cAAK,QAAQ,CAAA,CAAA;AAC9B,EAAA,OAAOC,+CAAkC,MAAM;AAC9C,IAAA,IAAI,OAAS,EAAA;AACZ,MAAA,IAAI,aAAe,EAAA;AAClB,QAAgB,aAAA,GAAA,KAAA,CAAA;AAChB,QAAA,OAAO,EAAE,IAAA,EAAM,KAAO,EAAA,KAAA,EAAO,QAAS,EAAA,CAAA;AAAA,OACvC;AAEA,MAAM,MAAA,MAAA,GAAS,SAAS,IAAK,EAAA,CAAA;AAC7B,MAAA,IAAI,OAAO,IAAM,EAAA;AAChB,QAAA,OAAO,EAAE,IAAA,EAAM,IAAM,EAAA,KAAA,EAAO,KAAU,CAAA,EAAA,CAAA;AAAA,OACvC;AAEA,MAAA,QAAA,GAAW,MAAO,CAAA,KAAA,CAAA;AAClB,MAAgB,aAAA,GAAA,IAAA,CAAA;AAChB,MAAA,OAAO,EAAE,IAAA,EAAM,KAAO,EAAA,KAAA,EAAO,SAAU,EAAA,CAAA;AAAA,KACxC;AAEA,IAAU,OAAA,GAAA,IAAA,CAAA;AACV,IAAA,OAAO,SAAS,IAAK,EAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AACF,CAAA;AA1BgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA","file":"intersperse.cjs","sourcesContent":["import { from, type IterableResolvable } from './from';\nimport { makeIterableIterator } from './shared/_makeIterableIterator';\n\n/**\n * Creates a new iterator which places `separator` between adjacent items of the original iterator.\n *\n * @param iterable An iterator to map over.\n * @param separator The separator to place between adjacent items.\n *\n * @example\n * ```typescript\n * import { intersperse } from '@sapphire/iterator-utilities';\n *\n * const iterable = [0, 1, 2];\n * console.log([...intersperse(iterable, 100)]);\n * // Output: [0, 100, 1, 100, 2]\n * ```\n *\n * @example\n * `intersperse` can be very useful to join an iterator's items using a common element:\n * ```typescript\n * import { intersperse } from '@sapphire/iterator-utilities';\n *\n * const iterable = ['Hello', 'World', '!'];\n * console.log([...intersperse(iterable, ', ')].join(''));\n * // Output: 'Hello, World, !'\n * ```\n */\nexport function intersperse<const ElementType>(iterable: IterableResolvable<ElementType>, separator: ElementType): IterableIterator<ElementType> {\n\tlet started = false;\n\tlet nextItem: ElementType;\n\tlet nextItemTaken = false;\n\n\tconst iterator = from(iterable);\n\treturn makeIterableIterator<ElementType>(() => {\n\t\tif (started) {\n\t\t\tif (nextItemTaken) {\n\t\t\t\tnextItemTaken = false;\n\t\t\t\treturn { done: false, value: nextItem };\n\t\t\t}\n\n\t\t\tconst result = iterator.next();\n\t\t\tif (result.done) {\n\t\t\t\treturn { done: true, value: undefined };\n\t\t\t}\n\n\t\t\tnextItem = result.value;\n\t\t\tnextItemTaken = true;\n\t\t\treturn { done: false, value: separator };\n\t\t}\n\n\t\tstarted = true;\n\t\treturn iterator.next();\n\t});\n}\n"]}