@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 @@
1
+ {"version":3,"sources":["../../../src/lib/minBy.ts"],"names":["assertFunction","toIterableIterator","compareIteratorElements","orderingIsGreater"],"mappings":";;;;;;;;AAgCO,SAAS,KAAA,CACf,UACA,UACqB,EAAA;AACrB,EAAA,UAAA,GAAaA,mCAAe,UAAU,CAAA,CAAA;AAEtC,EAAM,MAAA,QAAA,GAAWC,0CAAmB,QAAQ,CAAA,CAAA;AAC5C,EAAM,MAAA,KAAA,GAAQ,SAAS,IAAK,EAAA,CAAA;AAC5B,EAAI,IAAA,KAAA,CAAM,MAAa,OAAA,IAAA,CAAA;AAEvB,EAAA,IAAI,UAAU,KAAM,CAAA,KAAA,CAAA;AACpB,EAAA,KAAA,MAAW,SAAS,QAAU,EAAA;AAC7B,IAAA,MAAM,UAAa,GAAAC,oCAAA,CAAqC,KAAO,EAAA,OAAA,EAAS,UAAU,CAAA,CAAA;AAElF,IAAI,IAAA,CAACC,8BAAkB,CAAA,UAAU,CAAG,EAAA;AACnC,MAAU,OAAA,GAAA,KAAA,CAAA;AAAA,KACX;AAAA,GACD;AAEA,EAAO,OAAA,OAAA,CAAA;AACR,CAAA;AApBgB,MAAA,CAAA,KAAA,EAAA,OAAA,CAAA","file":"minBy.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport type { min } from './min';\nimport type { minByKey } from './minByKey';\nimport { assertFunction } from './shared/_assertFunction';\nimport { compareIteratorElements, orderingIsGreater, type CompareByComparator } from './shared/_compare';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Returns the element that gives the minimum value with respect to the specified comparison function.\n *\n * If several elements are equally minimum, the last element is returned. If the iterator is empty, `null` is returned.\n *\n * @seealso {@link min} for a version that uses the default comparator.\n * @seealso {@link minByKey} for a version that allows custom key extractors.\n *\n * @param iterable An iterator of number values to determine the minimum value of.\n * @param callbackFn A function to execute for each element produced by the iterator. It should return a number value.\n * @returns The element that gives the minimum value from the specified function, or `null` if the iterator is empty.\n *\n * @example\n * ```typescript\n * import { ascNumber, minBy } from '@sapphire/iterator-utilities';\n *\n * const iterable = [-3, 0, 1, 5, -10];\n * console.log(minBy(iterable, ascNumber));\n * // Output: -10\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function minBy<const ElementType>(\n\titerable: IterableResolvable<ElementType>,\n\tcomparator: CompareByComparator<ElementType>\n): ElementType | null {\n\tcomparator = assertFunction(comparator);\n\n\tconst iterator = toIterableIterator(iterable);\n\tconst first = iterator.next();\n\tif (first.done) return null;\n\n\tlet minimum = first.value;\n\tfor (const value of iterator) {\n\t\tconst comparison = compareIteratorElements<ElementType>(value, minimum, comparator);\n\n\t\tif (!orderingIsGreater(comparison)) {\n\t\t\tminimum = value;\n\t\t}\n\t}\n\n\treturn minimum;\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+ import { CompareByComparator } from './shared/_compare.js';
3
+
4
+ /**
5
+ * Returns the element that gives the minimum value with respect to the specified comparison function.
6
+ *
7
+ * If several elements are equally minimum, the last element is returned. If the iterator is empty, `null` is returned.
8
+ *
9
+ * @seealso {@link min} for a version that uses the default comparator.
10
+ * @seealso {@link minByKey} for a version that allows custom key extractors.
11
+ *
12
+ * @param iterable An iterator of number values to determine the minimum value of.
13
+ * @param callbackFn A function to execute for each element produced by the iterator. It should return a number value.
14
+ * @returns The element that gives the minimum value from the specified function, or `null` if the iterator is empty.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { ascNumber, minBy } from '@sapphire/iterator-utilities';
19
+ *
20
+ * const iterable = [-3, 0, 1, 5, -10];
21
+ * console.log(minBy(iterable, ascNumber));
22
+ * // Output: -10
23
+ * ```
24
+ *
25
+ * @remarks
26
+ *
27
+ * This function consumes the entire iterator.
28
+ */
29
+ declare function minBy<const ElementType>(iterable: IterableResolvable<ElementType>, comparator: CompareByComparator<ElementType>): ElementType | null;
30
+
31
+ export { minBy };
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var _assertFunction_cjs = require('./shared/_assertFunction.cjs');
4
+ var _compare_cjs = require('./shared/_compare.cjs');
5
+ var comparators_cjs = require('./shared/comparators.cjs');
6
+ var toIterableIterator_cjs = require('./toIterableIterator.cjs');
7
+
8
+ var __defProp = Object.defineProperty;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ function minByKey(iterable, callbackFn, comparator = comparators_cjs.defaultCompare) {
11
+ callbackFn = _assertFunction_cjs.assertFunction(callbackFn);
12
+ const iterator = toIterableIterator_cjs.toIterableIterator(iterable);
13
+ const first = iterator.next();
14
+ if (first.done) return null;
15
+ let minimum = first.value;
16
+ let minimumKey = callbackFn(minimum, 0);
17
+ let index = 1;
18
+ for (const value of iterator) {
19
+ const key = callbackFn(value, index++);
20
+ const comparison = _compare_cjs.compareIteratorElements(minimumKey, key, comparator);
21
+ if (!_compare_cjs.orderingIsLess(comparison)) {
22
+ minimum = value;
23
+ minimumKey = key;
24
+ }
25
+ }
26
+ return minimum;
27
+ }
28
+ __name(minByKey, "minByKey");
29
+
30
+ exports.minByKey = minByKey;
31
+ //# sourceMappingURL=minByKey.cjs.map
32
+ //# sourceMappingURL=minByKey.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/minByKey.ts"],"names":["defaultCompare","assertFunction","toIterableIterator","compareIteratorElements","orderingIsLess"],"mappings":";;;;;;;;;AAiCO,SAAS,QACf,CAAA,QAAA,EACA,UACA,EAAA,UAAA,GAA8CA,8BACzB,EAAA;AACrB,EAAA,UAAA,GAAaC,mCAAe,UAAU,CAAA,CAAA;AAEtC,EAAM,MAAA,QAAA,GAAWC,0CAAmB,QAAQ,CAAA,CAAA;AAC5C,EAAM,MAAA,KAAA,GAAQ,SAAS,IAAK,EAAA,CAAA;AAC5B,EAAI,IAAA,KAAA,CAAM,MAAa,OAAA,IAAA,CAAA;AAEvB,EAAA,IAAI,UAAU,KAAM,CAAA,KAAA,CAAA;AACpB,EAAI,IAAA,UAAA,GAAa,UAAW,CAAA,OAAA,EAAS,CAAC,CAAA,CAAA;AACtC,EAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,EAAA,KAAA,MAAW,SAAS,QAAU,EAAA;AAC7B,IAAM,MAAA,GAAA,GAAM,UAAW,CAAA,KAAA,EAAO,KAAO,EAAA,CAAA,CAAA;AACrC,IAAA,MAAM,UAAa,GAAAC,oCAAA,CAAoC,UAAY,EAAA,GAAA,EAAK,UAAU,CAAA,CAAA;AAElF,IAAI,IAAA,CAACC,2BAAe,CAAA,UAAU,CAAG,EAAA;AAChC,MAAU,OAAA,GAAA,KAAA,CAAA;AACV,MAAa,UAAA,GAAA,GAAA,CAAA;AAAA,KACd;AAAA,GACD;AAEA,EAAO,OAAA,OAAA,CAAA;AACR,CAAA;AAzBgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA","file":"minByKey.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport type { min } from './min';\nimport type { minBy } from './minBy';\nimport { assertFunction } from './shared/_assertFunction';\nimport { compareIteratorElements, orderingIsLess, type CompareByComparator } from './shared/_compare';\nimport { defaultCompare } from './shared/comparators';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Returns the element that gives the minimum value from the specified function.\n *\n * If several elements are equally minimum, the last element is returned. If the iterator is empty, `null` is returned.\n *\n * @seealso {@link min} for a version that uses the default comparator.\n * @seealso {@link minBy} for a version that allows custom comparators.\n *\n * @param iterable An iterator of number values to determine the minimum value of.\n * @param callbackFn A function to execute for each element produced by the iterator. It should return a number value.\n * @returns The element that gives the minimum value from the specified function, or `null` if the iterator is empty.\n *\n * @example\n * ```typescript\n * import { minByKey } from '@sapphire/iterator-utilities';\n *\n * const iterable = [-3, 0, 1, 5, -10];\n * console.log(minByKey(iterable, (value) => Math.abs(value)));\n * // Output: 0\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function minByKey<const ElementType, const MappedType>(\n\titerable: IterableResolvable<ElementType>,\n\tcallbackFn: (element: ElementType, index: number) => MappedType,\n\tcomparator: CompareByComparator<MappedType> = defaultCompare\n): ElementType | null {\n\tcallbackFn = assertFunction(callbackFn);\n\n\tconst iterator = toIterableIterator(iterable);\n\tconst first = iterator.next();\n\tif (first.done) return null;\n\n\tlet minimum = first.value;\n\tlet minimumKey = callbackFn(minimum, 0);\n\tlet index = 1;\n\tfor (const value of iterator) {\n\t\tconst key = callbackFn(value, index++);\n\t\tconst comparison = compareIteratorElements<MappedType>(minimumKey, key, comparator);\n\n\t\tif (!orderingIsLess(comparison)) {\n\t\t\tminimum = value;\n\t\t\tminimumKey = key;\n\t\t}\n\t}\n\n\treturn minimum;\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+ import { CompareByComparator } from './shared/_compare.js';
3
+
4
+ /**
5
+ * Returns the element that gives the minimum value from the specified function.
6
+ *
7
+ * If several elements are equally minimum, the last element is returned. If the iterator is empty, `null` is returned.
8
+ *
9
+ * @seealso {@link min} for a version that uses the default comparator.
10
+ * @seealso {@link minBy} for a version that allows custom comparators.
11
+ *
12
+ * @param iterable An iterator of number values to determine the minimum value of.
13
+ * @param callbackFn A function to execute for each element produced by the iterator. It should return a number value.
14
+ * @returns The element that gives the minimum value from the specified function, or `null` if the iterator is empty.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { minByKey } from '@sapphire/iterator-utilities';
19
+ *
20
+ * const iterable = [-3, 0, 1, 5, -10];
21
+ * console.log(minByKey(iterable, (value) => Math.abs(value)));
22
+ * // Output: 0
23
+ * ```
24
+ *
25
+ * @remarks
26
+ *
27
+ * This function consumes the entire iterator.
28
+ */
29
+ declare function minByKey<const ElementType, const MappedType>(iterable: IterableResolvable<ElementType>, callbackFn: (element: ElementType, index: number) => MappedType, comparator?: CompareByComparator<MappedType>): ElementType | null;
30
+
31
+ export { minByKey };
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var equal_cjs = require('./equal.cjs');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ function notEqual(iterable, other) {
8
+ return !equal_cjs.equal(iterable, other);
9
+ }
10
+ __name(notEqual, "notEqual");
11
+
12
+ exports.ne = notEqual;
13
+ exports.notEqual = notEqual;
14
+ //# sourceMappingURL=notEqual.cjs.map
15
+ //# sourceMappingURL=notEqual.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/notEqual.ts"],"names":["equal"],"mappings":";;;;;;AAwBO,SAAS,QAAA,CAA4B,UAA2C,KAAiD,EAAA;AACvI,EAAO,OAAA,CAACA,eAAM,CAAA,QAAA,EAAU,KAAK,CAAA,CAAA;AAC9B,CAAA;AAFgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA","file":"notEqual.cjs","sourcesContent":["import { equal } from './equal';\nimport type { IterableResolvable } from './from';\n\n/**\n * Determines if the elements of both iterators are not equal.\n *\n * @param iterable The iterator to compare.\n * @param other The iterator to compare against.\n * @returns Whether the two iterators are not equal.\n *\n * @example\n * ```typescript\n * import { notEqual } from '@sapphire/iterator-utilities';\n *\n * console.log(notEqual([1], [1]));\n * // Output: false\n * console.log(notEqual([1], [1, 2]));\n * // Output: true\n * ```\n *\n * @remarks\n *\n * This function consumes the entire iterator.\n */\nexport function notEqual<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>): boolean {\n\treturn !equal(iterable, other);\n}\n\nexport { notEqual as ne };\n"]}
@@ -0,0 +1,26 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+
3
+ /**
4
+ * Determines if the elements of both iterators are not equal.
5
+ *
6
+ * @param iterable The iterator to compare.
7
+ * @param other The iterator to compare against.
8
+ * @returns Whether the two iterators are not equal.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { notEqual } from '@sapphire/iterator-utilities';
13
+ *
14
+ * console.log(notEqual([1], [1]));
15
+ * // Output: false
16
+ * console.log(notEqual([1], [1, 2]));
17
+ * // Output: true
18
+ * ```
19
+ *
20
+ * @remarks
21
+ *
22
+ * This function consumes the entire iterator.
23
+ */
24
+ declare function notEqual<const ElementType>(iterable: IterableResolvable<ElementType>, other: IterableResolvable<ElementType>): boolean;
25
+
26
+ export { notEqual as ne, notEqual };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var at_cjs = require('./at.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "nth", {
8
+ enumerable: true,
9
+ get: function () { return at_cjs.at; }
10
+ });
11
+ //# sourceMappingURL=nth.cjs.map
12
+ //# sourceMappingURL=nth.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"nth.cjs","sourcesContent":[]}
@@ -0,0 +1,2 @@
1
+ export { at as nth } from './at.cjs';
2
+ import './from.cjs';
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var indexOf_cjs = require('./indexOf.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "position", {
8
+ enumerable: true,
9
+ get: function () { return indexOf_cjs.indexOf; }
10
+ });
11
+ //# sourceMappingURL=position.cjs.map
12
+ //# sourceMappingURL=position.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"position.cjs","sourcesContent":[]}
@@ -0,0 +1,2 @@
1
+ export { indexOf as position } from './indexOf.cjs';
2
+ import './from.cjs';
@@ -1,14 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var toIterableIterator_cjs = require('./toIterableIterator.cjs');
3
+ var collect_cjs = require('./collect.cjs');
4
4
 
5
5
  var __defProp = Object.defineProperty;
6
6
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
7
  function* reverse(iterable) {
8
- const items = [];
9
- for (const item of toIterableIterator_cjs.toIterableIterator(iterable)) {
10
- items.push(item);
11
- }
8
+ const items = collect_cjs.collect(iterable);
12
9
  for (let i = items.length - 1; i >= 0; i--) {
13
10
  yield items[i];
14
11
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/reverse.ts"],"names":["toIterableIterator"],"mappings":";;;;;;AAwBO,UAAU,QAA2B,QAA0E,EAAA;AACrH,EAAA,MAAM,QAAuB,EAAC,CAAA;AAC9B,EAAW,KAAA,MAAA,IAAA,IAAQA,yCAAmB,CAAA,QAAQ,CAAG,EAAA;AAChD,IAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;AAAA,GAChB;AAEA,EAAA,KAAA,IAAS,IAAI,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AAC3C,IAAA,MAAM,MAAM,CAAC,CAAA,CAAA;AAAA,GACd;AACD,CAAA;AATiB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA","file":"reverse.cjs","sourcesContent":["import type { IterableResolvable } from './from';\nimport { toIterableIterator } from './toIterableIterator';\n\n/**\n * Consumes the iterable and returns a new iterable with the elements in reverse order.\n *\n * @param iterable The iterator to reverse.\n * @returns An iterator whose element correspond to the elements of the provided iterator in reverse order.\n *\n * @example\n * ```typescript\n * import { reverse } from '@sapphire/iterator-utilities';\n *\n * console.log([...reverse([1, 2, 3, 4, 5])]);\n * // Output: [5, 4, 3, 2, 1]\n *\n * console.log([...reverse('hello')]);\n * // Output: ['o', 'l', 'l', 'e', 'h']\n * ```\n *\n * @remarks\n *\n * This function collects all elements of the provided iterator into an array before yielding them in reverse order.\n */\nexport function* reverse<const ElementType>(iterable: IterableResolvable<ElementType>): IterableIterator<ElementType> {\n\tconst items: ElementType[] = [];\n\tfor (const item of toIterableIterator(iterable)) {\n\t\titems.push(item);\n\t}\n\n\tfor (let i = items.length - 1; i >= 0; i--) {\n\t\tyield items[i];\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../src/lib/reverse.ts"],"names":["collect"],"mappings":";;;;;;AAwBO,UAAU,QAA2B,QAA0E,EAAA;AACrH,EAAM,MAAA,KAAA,GAAQA,oBAAQ,QAAQ,CAAA,CAAA;AAC9B,EAAA,KAAA,IAAS,IAAI,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AAC3C,IAAA,MAAM,MAAM,CAAC,CAAA,CAAA;AAAA,GACd;AACD,CAAA;AALiB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA","file":"reverse.cjs","sourcesContent":["import { collect } from './collect';\nimport type { IterableResolvable } from './from';\n\n/**\n * Consumes the iterable and returns a new iterable with the elements in reverse order.\n *\n * @param iterable The iterator to reverse.\n * @returns An iterator whose element correspond to the elements of the provided iterator in reverse order.\n *\n * @example\n * ```typescript\n * import { reverse } from '@sapphire/iterator-utilities';\n *\n * console.log([...reverse([1, 2, 3, 4, 5])]);\n * // Output: [5, 4, 3, 2, 1]\n *\n * console.log([...reverse('hello')]);\n * // Output: ['o', 'l', 'l', 'e', 'h']\n * ```\n *\n * @remarks\n *\n * This function collects all elements of the provided iterator into an array before yielding them in reverse order.\n */\nexport function* reverse<const ElementType>(iterable: IterableResolvable<ElementType>): IterableIterator<ElementType> {\n\tconst items = collect(iterable);\n\tfor (let i = items.length - 1; i >= 0; i--) {\n\t\tyield items[i];\n\t}\n}\n"]}
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
+
6
+ // src/lib/shared/_compare.ts
7
+ function compareIteratorElements(x, y, comparator) {
8
+ if (typeof x === "undefined") {
9
+ if (typeof y === "undefined") return 0;
10
+ return 1;
11
+ }
12
+ if (typeof y === "undefined") {
13
+ return -1;
14
+ }
15
+ return comparator(x, y);
16
+ }
17
+ __name(compareIteratorElements, "compareIteratorElements");
18
+ function orderingIsLess(ordering) {
19
+ return ordering < 0;
20
+ }
21
+ __name(orderingIsLess, "orderingIsLess");
22
+ function orderingIsEqual(ordering) {
23
+ return ordering === 0;
24
+ }
25
+ __name(orderingIsEqual, "orderingIsEqual");
26
+ function orderingIsGreater(ordering) {
27
+ return ordering > 0;
28
+ }
29
+ __name(orderingIsGreater, "orderingIsGreater");
30
+
31
+ exports.compareIteratorElements = compareIteratorElements;
32
+ exports.orderingIsEqual = orderingIsEqual;
33
+ exports.orderingIsGreater = orderingIsGreater;
34
+ exports.orderingIsLess = orderingIsLess;
35
+ //# sourceMappingURL=_compare.cjs.map
36
+ //# sourceMappingURL=_compare.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/shared/_compare.ts"],"names":[],"mappings":";;;;;;AAgBO,SAAS,uBAAA,CACf,CACA,EAAA,CAAA,EACA,UACS,EAAA;AAET,EAAI,IAAA,OAAO,MAAM,WAAa,EAAA;AAE7B,IAAI,IAAA,OAAO,CAAM,KAAA,WAAA,EAAoB,OAAA,CAAA,CAAA;AAErC,IAAO,OAAA,CAAA,CAAA;AAAA,GACR;AAEA,EAAI,IAAA,OAAO,MAAM,WAAa,EAAA;AAE7B,IAAO,OAAA,CAAA,CAAA,CAAA;AAAA,GACR;AAEA,EAAO,OAAA,UAAA,CAAW,GAAsC,CAAoC,CAAA,CAAA;AAC7F,CAAA;AAnBgB,MAAA,CAAA,uBAAA,EAAA,yBAAA,CAAA,CAAA;AAqBT,SAAS,eAAe,QAAkB,EAAA;AAChD,EAAA,OAAO,QAAW,GAAA,CAAA,CAAA;AACnB,CAAA;AAFgB,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,CAAA;AAIT,SAAS,gBAAgB,QAAkB,EAAA;AACjD,EAAA,OAAO,QAAa,KAAA,CAAA,CAAA;AACrB,CAAA;AAFgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA,CAAA;AAIT,SAAS,kBAAkB,QAAkB,EAAA;AACnD,EAAA,OAAO,QAAW,GAAA,CAAA,CAAA;AACnB,CAAA;AAFgB,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA","file":"_compare.cjs","sourcesContent":["/**\n * Represents the result of a lexicographic comparison.\n *\n * The operations are as follows:\n *\n * - Two iterators are compared element by element.\n * - The first pair of unequal elements determines the result.\n * - If one sequence is a prefix of the other, the shorter sequence is lexicographically less than the other.\n * - If two sequences have the same elements in the same order, they are lexicographically equal.\n * - An empty sequence is lexicographically less than any non-empty sequence.\n * - Two empty sequences are lexicographically equal.\n */\nexport type LexicographicComparison = -1 | 0 | 1;\n\nexport type CompareByComparator<ElementType> = (x: Exclude<ElementType, undefined>, y: Exclude<ElementType, undefined>) => number;\n\nexport function compareIteratorElements<const ElementType>(\n\tx: ElementType | undefined,\n\ty: ElementType | undefined,\n\tcomparator: CompareByComparator<ElementType>\n): number {\n\t// 23.1.3.30.2 CompareArrayElements (https://tc39.es/ecma262/#sec-comparearrayelements)\n\tif (typeof x === 'undefined') {\n\t\t// 1. If x and y are both `undefined`, return +0.\n\t\tif (typeof y === 'undefined') return 0;\n\t\t// 2. If x is `undefined`, return +1.\n\t\treturn 1;\n\t}\n\n\tif (typeof y === 'undefined') {\n\t\t// 3. If y is `undefined`, return -1.\n\t\treturn -1;\n\t}\n\n\treturn comparator(x as Exclude<ElementType, undefined>, y as Exclude<ElementType, undefined>);\n}\n\nexport function orderingIsLess(ordering: number) {\n\treturn ordering < 0;\n}\n\nexport function orderingIsEqual(ordering: number) {\n\treturn ordering === 0;\n}\n\nexport function orderingIsGreater(ordering: number) {\n\treturn ordering > 0;\n}\n"]}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Represents the result of a lexicographic comparison.
3
+ *
4
+ * The operations are as follows:
5
+ *
6
+ * - Two iterators are compared element by element.
7
+ * - The first pair of unequal elements determines the result.
8
+ * - If one sequence is a prefix of the other, the shorter sequence is lexicographically less than the other.
9
+ * - If two sequences have the same elements in the same order, they are lexicographically equal.
10
+ * - An empty sequence is lexicographically less than any non-empty sequence.
11
+ * - Two empty sequences are lexicographically equal.
12
+ */
13
+ type LexicographicComparison = -1 | 0 | 1;
14
+ type CompareByComparator<ElementType> = (x: Exclude<ElementType, undefined>, y: Exclude<ElementType, undefined>) => number;
15
+ declare function compareIteratorElements<const ElementType>(x: ElementType | undefined, y: ElementType | undefined, comparator: CompareByComparator<ElementType>): number;
16
+ declare function orderingIsLess(ordering: number): boolean;
17
+ declare function orderingIsEqual(ordering: number): boolean;
18
+ declare function orderingIsGreater(ordering: number): boolean;
19
+
20
+ export { type CompareByComparator, type LexicographicComparison, compareIteratorElements, orderingIsEqual, orderingIsGreater, orderingIsLess };
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
+
6
+ // src/lib/shared/comparators.ts
7
+ function swap(cb) {
8
+ return (x, y) => 0 - cb(x, y);
9
+ }
10
+ __name(swap, "swap");
11
+ function defaultCompare(x, y) {
12
+ return ascNumber(String(x), String(y));
13
+ }
14
+ __name(defaultCompare, "defaultCompare");
15
+ var descString = swap(defaultCompare);
16
+ function ascNumber(x, y) {
17
+ return (x > y) - (x < y);
18
+ }
19
+ __name(ascNumber, "ascNumber");
20
+ var descNumber = swap(ascNumber);
21
+
22
+ exports.ascNumber = ascNumber;
23
+ exports.ascString = defaultCompare;
24
+ exports.defaultCompare = defaultCompare;
25
+ exports.descNumber = descNumber;
26
+ exports.descString = descString;
27
+ //# sourceMappingURL=comparators.cjs.map
28
+ //# sourceMappingURL=comparators.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/shared/comparators.ts"],"names":[],"mappings":";;;;;;AAEA,SAAS,KAAwB,EAAwE,EAAA;AACxG,EAAA,OAAO,CAAC,CAAG,EAAA,CAAA,KAAO,CAAI,GAAA,EAAA,CAAG,GAAG,CAAC,CAAA,CAAA;AAC9B,CAAA;AAFS,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAgBF,SAAS,cAAA,CAAkC,GAAgB,CAAyC,EAAA;AAI1G,EAAA,OAAO,UAAU,MAAO,CAAA,CAAC,CAAG,EAAA,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA;AACtC,CAAA;AALgB,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,CAAA;AAQH,IAAA,UAAA,GAAa,KAAK,cAAc,EAAA;AAetC,SAAS,SAAA,CAAU,GAA6B,CAAsD,EAAA;AAE5G,EAAS,OAAA,CAAA,CAAA,GAAI,MAAM,CAAI,GAAA,CAAA,CAAA,CAAA;AACxB,CAAA;AAHgB,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA,CAAA;AAIH,IAAA,UAAA,GAAa,KAAK,SAAS","file":"comparators.cjs","sourcesContent":["import type { CompareByComparator, LexicographicComparison } from './_compare';\n\nfunction swap<const ElementType>(cb: CompareByComparator<ElementType>): CompareByComparator<ElementType> {\n\treturn (x, y) => (0 - cb(x, y)) as LexicographicComparison;\n}\n\n/**\n * Compares two elements lexicographically using the default comparison algorithm.\n * @seealso 23.1.3.30.2 CompareArrayElements ({@link https://tc39.es/ecma262/#sec-comparearrayelements})\n *\n * @param x The first element to compare.\n * @param y The second element to compare.\n * @returns The lexicographic comparison of the two elements.\n *\n * @remarks\n *\n * This function is used as the comparison algorithm for {@link compareBy}.\n */\nexport function defaultCompare<const ElementType>(x: ElementType, y: ElementType): LexicographicComparison {\n\t// 5. Let xString be ? ToString(x).\n\t// 6. Let yString be ? ToString(y).\n\t// Steps 7-11 are optimized away by the usage of `ascNumber`.\n\treturn ascNumber(String(x), String(y));\n}\n\nexport { defaultCompare as ascString };\nexport const descString = swap(defaultCompare);\n\n/**\n * Compares two elements using the default comparison algorithm.\n *\n * @param x The first element to compare.\n * @param y The second element to compare.\n * @returns The numeric comparison of the two elements.\n *\n * @privateRemarks\n *\n * The implementation of this function is based on the optimized version of the\n * starship operator in Rust. The subtraction is intentional and is used to\n * determine the ordering of the two elements.\n */\nexport function ascNumber(x: number | bigint | string, y: number | bigint | string): LexicographicComparison {\n\t// @ts-expect-error: The subtraction is intentional\n\treturn ((x > y) - (x < y)) as LexicographicComparison;\n}\nexport const descNumber = swap(ascNumber);\n"]}
@@ -0,0 +1,34 @@
1
+ import { LexicographicComparison, CompareByComparator } from './_compare.js';
2
+
3
+ /**
4
+ * Compares two elements lexicographically using the default comparison algorithm.
5
+ * @seealso 23.1.3.30.2 CompareArrayElements ({@link https://tc39.es/ecma262/#sec-comparearrayelements})
6
+ *
7
+ * @param x The first element to compare.
8
+ * @param y The second element to compare.
9
+ * @returns The lexicographic comparison of the two elements.
10
+ *
11
+ * @remarks
12
+ *
13
+ * This function is used as the comparison algorithm for {@link compareBy}.
14
+ */
15
+ declare function defaultCompare<const ElementType>(x: ElementType, y: ElementType): LexicographicComparison;
16
+
17
+ declare const descString: <const ElementType>(x: Exclude<ElementType, undefined>, y: Exclude<ElementType, undefined>) => number;
18
+ /**
19
+ * Compares two elements using the default comparison algorithm.
20
+ *
21
+ * @param x The first element to compare.
22
+ * @param y The second element to compare.
23
+ * @returns The numeric comparison of the two elements.
24
+ *
25
+ * @privateRemarks
26
+ *
27
+ * The implementation of this function is based on the optimized version of the
28
+ * starship operator in Rust. The subtraction is intentional and is used to
29
+ * determine the ordering of the two elements.
30
+ */
31
+ declare function ascNumber(x: number | bigint | string, y: number | bigint | string): LexicographicComparison;
32
+ declare const descNumber: CompareByComparator<string | number | bigint>;
33
+
34
+ export { ascNumber, defaultCompare as ascString, defaultCompare, descNumber, descString };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var drop_cjs = require('./drop.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "skip", {
8
+ enumerable: true,
9
+ get: function () { return drop_cjs.drop; }
10
+ });
11
+ //# sourceMappingURL=skip.cjs.map
12
+ //# sourceMappingURL=skip.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"skip.cjs","sourcesContent":[]}
@@ -0,0 +1,2 @@
1
+ export { drop as skip } from './drop.cjs';
2
+ import './from.cjs';
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var dropLast_cjs = require('./dropLast.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "skipLast", {
8
+ enumerable: true,
9
+ get: function () { return dropLast_cjs.dropLast; }
10
+ });
11
+ //# sourceMappingURL=skipLast.cjs.map
12
+ //# sourceMappingURL=skipLast.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"skipLast.cjs","sourcesContent":[]}
@@ -0,0 +1,2 @@
1
+ export { dropLast as skipLast } from './dropLast.cjs';
2
+ import './from.cjs';
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var dropWhile_cjs = require('./dropWhile.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "skipWhile", {
8
+ enumerable: true,
9
+ get: function () { return dropWhile_cjs.dropWhile; }
10
+ });
11
+ //# sourceMappingURL=skipWhile.cjs.map
12
+ //# sourceMappingURL=skipWhile.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"skipWhile.cjs","sourcesContent":[]}
@@ -0,0 +1,2 @@
1
+ export { dropWhile as skipWhile } from './dropWhile.cjs';
2
+ import './from.cjs';
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var from_cjs = require('./from.cjs');
4
+ var _assertPositive_cjs = require('./shared/_assertPositive.cjs');
5
+ var _makeIterableIterator_cjs = require('./shared/_makeIterableIterator.cjs');
6
+ var _toIntegerOrInfinityOrThrow_cjs = require('./shared/_toIntegerOrInfinityOrThrow.cjs');
7
+
8
+ var __defProp = Object.defineProperty;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ function stepBy(iterable, step) {
11
+ step = _assertPositive_cjs.assertPositive(_toIntegerOrInfinityOrThrow_cjs.toIntegerOrInfinityOrThrow(step), step);
12
+ const iterator = from_cjs.from(iterable);
13
+ return _makeIterableIterator_cjs.makeIterableIterator(() => {
14
+ const result = iterator.next();
15
+ if (result.done) {
16
+ return { done: true, value: void 0 };
17
+ }
18
+ for (let i = 0; i < step - 1; i++) {
19
+ const result2 = iterator.next();
20
+ if (result2.done) break;
21
+ }
22
+ return { done: false, value: result.value };
23
+ });
24
+ }
25
+ __name(stepBy, "stepBy");
26
+
27
+ exports.stepBy = stepBy;
28
+ //# sourceMappingURL=stepBy.cjs.map
29
+ //# sourceMappingURL=stepBy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/stepBy.ts"],"names":["assertPositive","toIntegerOrInfinityOrThrow","from","makeIterableIterator","result"],"mappings":";;;;;;;;;AAwBO,SAAS,MAAA,CAA0B,UAA2C,IAA6C,EAAA;AACjI,EAAA,IAAA,GAAOA,kCAAe,CAAAC,0DAAA,CAA2B,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA;AAE5D,EAAM,MAAA,QAAA,GAAWC,cAAK,QAAQ,CAAA,CAAA;AAC9B,EAAA,OAAOC,+CAAkC,MAAM;AAC9C,IAAM,MAAA,MAAA,GAAS,SAAS,IAAK,EAAA,CAAA;AAC7B,IAAA,IAAI,OAAO,IAAM,EAAA;AAChB,MAAA,OAAO,EAAE,IAAA,EAAM,IAAM,EAAA,KAAA,EAAO,KAAU,CAAA,EAAA,CAAA;AAAA,KACvC;AAEA,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,IAAA,GAAO,GAAG,CAAK,EAAA,EAAA;AAClC,MAAMC,MAAAA,OAAAA,GAAS,SAAS,IAAK,EAAA,CAAA;AAC7B,MAAA,IAAIA,QAAO,IAAM,EAAA,MAAA;AAAA,KAClB;AAEA,IAAA,OAAO,EAAE,IAAA,EAAM,KAAO,EAAA,KAAA,EAAO,OAAO,KAAM,EAAA,CAAA;AAAA,GAC1C,CAAA,CAAA;AACF,CAAA;AAjBgB,MAAA,CAAA,MAAA,EAAA,QAAA,CAAA","file":"stepBy.cjs","sourcesContent":["import { from, type IterableResolvable } from './from';\nimport { assertPositive } from './shared/_assertPositive';\nimport { makeIterableIterator } from './shared/_makeIterableIterator';\nimport { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow';\n\n/**\n * Creates an iterator starting at the same point, but stepping by the given amount at each iteration.\n *\n * @param iterable An iterator to map over.\n * @param step A positive integer representing the step to take at each iteration.\n *\n * @example\n * ```typescript\n * import { stepBy } from '@sapphire/iterator-utilities';\n *\n * const iterable = [0, 1, 2, 3, 4, 5];\n * console.log([...stepBy(iterable, 2)]);\n * // Output: [0, 2, 4]\n * ```\n *\n * @remarks\n *\n * The first element of the iterator will always be returned, regardless of the step given.\n */\nexport function stepBy<const ElementType>(iterable: IterableResolvable<ElementType>, step: number): IterableIterator<ElementType> {\n\tstep = assertPositive(toIntegerOrInfinityOrThrow(step), step);\n\n\tconst iterator = from(iterable);\n\treturn makeIterableIterator<ElementType>(() => {\n\t\tconst result = iterator.next();\n\t\tif (result.done) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\tfor (let i = 0; i < step - 1; i++) {\n\t\t\tconst result = iterator.next();\n\t\t\tif (result.done) break;\n\t\t}\n\n\t\treturn { done: false, value: result.value };\n\t});\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { IterableResolvable } from './from.cjs';
2
+
3
+ /**
4
+ * Creates an iterator starting at the same point, but stepping by the given amount at each iteration.
5
+ *
6
+ * @param iterable An iterator to map over.
7
+ * @param step A positive integer representing the step to take at each iteration.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { stepBy } from '@sapphire/iterator-utilities';
12
+ *
13
+ * const iterable = [0, 1, 2, 3, 4, 5];
14
+ * console.log([...stepBy(iterable, 2)]);
15
+ * // Output: [0, 2, 4]
16
+ * ```
17
+ *
18
+ * @remarks
19
+ *
20
+ * The first element of the iterator will always be returned, regardless of the step given.
21
+ */
22
+ declare function stepBy<const ElementType>(iterable: IterableResolvable<ElementType>, step: number): IterableIterator<ElementType>;
23
+
24
+ export { stepBy };
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var filter_cjs = require('./filter.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "takeWhile", {
8
+ enumerable: true,
9
+ get: function () { return filter_cjs.filter; }
10
+ });
11
+ //# sourceMappingURL=takeWhile.cjs.map
12
+ //# sourceMappingURL=takeWhile.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"takeWhile.cjs","sourcesContent":[]}
@@ -0,0 +1,2 @@
1
+ export { filter as takeWhile } from './filter.cjs';
2
+ import './from.cjs';
@@ -1,21 +1,28 @@
1
+ export { every as all, every } from './lib/every.mjs';
2
+ export { some as any, some } from './lib/some.mjs';
1
3
  export { concat as append, concat } from './lib/append.mjs';
2
- export { at } from './lib/at.mjs';
4
+ export { at, at as nth } from './lib/at.mjs';
3
5
  export { average } from './lib/average.mjs';
4
6
  export { chain } from './lib/chain.mjs';
5
7
  export { chunk } from './lib/chunk.mjs';
8
+ export { toArray as collect, toArray } from './lib/toArray.mjs';
9
+ export { collectInto } from './lib/collectInto.mjs';
6
10
  export { compact } from './lib/compact.mjs';
11
+ export { compare } from './lib/compare.mjs';
12
+ export { compareBy } from './lib/compareBy.mjs';
7
13
  export { compress } from './lib/compress.mjs';
8
14
  export { contains } from './lib/contains.mjs';
9
15
  export { count } from './lib/count.mjs';
10
16
  export { cycle } from './lib/cycle.mjs';
11
17
  export { except as difference, except, except as omit } from './lib/difference.mjs';
12
- export { skip as drop, skip } from './lib/drop.mjs';
13
- export { skipLast as dropLast, skipLast } from './lib/dropLast.mjs';
14
- export { skipWhile as dropWhile, skipWhile } from './lib/dropWhile.mjs';
18
+ export { drop, drop as skip } from './lib/drop.mjs';
19
+ export { dropLast, dropLast as skipLast } from './lib/dropLast.mjs';
20
+ export { dropWhile, dropWhile as skipWhile } from './lib/dropWhile.mjs';
15
21
  export { empty } from './lib/empty.mjs';
16
22
  export { enumerate } from './lib/enumerate.mjs';
17
- export { every } from './lib/every.mjs';
18
- export { takeWhile as filter, takeWhile } from './lib/filter.mjs';
23
+ export { eq, eq as equal } from './lib/equal.mjs';
24
+ export { eqBy, eqBy as equalBy } from './lib/equalBy.mjs';
25
+ export { filter, filter as takeWhile } from './lib/filter.mjs';
19
26
  export { find } from './lib/find.mjs';
20
27
  export { findIndex } from './lib/findIndex.mjs';
21
28
  export { first } from './lib/first.mjs';
@@ -23,13 +30,28 @@ export { flat } from './lib/flat.mjs';
23
30
  export { flatMap } from './lib/flatMap.mjs';
24
31
  export { forEach } from './lib/forEach.mjs';
25
32
  export { IterableResolvable, IterableResolved, from } from './lib/from.mjs';
26
- export { position as indexOf, position } from './lib/indexOf.mjs';
33
+ export { fuse } from './lib/fuse.mjs';
34
+ export { ge, ge as greaterOrEqualThan } from './lib/greaterOrEqualThan.mjs';
35
+ export { gt as greaterThan, gt } from './lib/greaterThan.mjs';
36
+ export { indexOf, indexOf as position } from './lib/indexOf.mjs';
37
+ export { inspect } from './lib/inspect.mjs';
27
38
  export { intersect } from './lib/intersect.mjs';
39
+ export { intersperse } from './lib/intersperse.mjs';
28
40
  export { isEmpty } from './lib/isEmpty.mjs';
41
+ export { isSorted } from './lib/isSorted.mjs';
42
+ export { isSortedBy } from './lib/isSortedBy.mjs';
43
+ export { isSortedByKey } from './lib/isSortedByKey.mjs';
29
44
  export { last } from './lib/last.mjs';
45
+ export { le, le as lessOrEqualThan } from './lib/lessOrEqualThan.mjs';
46
+ export { lt as lessThan, lt } from './lib/lessThan.mjs';
30
47
  export { map } from './lib/map.mjs';
31
48
  export { max } from './lib/max.mjs';
49
+ export { maxBy } from './lib/maxBy.mjs';
50
+ export { maxByKey } from './lib/maxByKey.mjs';
32
51
  export { min } from './lib/min.mjs';
52
+ export { minBy } from './lib/minBy.mjs';
53
+ export { minByKey } from './lib/minByKey.mjs';
54
+ export { ne, ne as notEqual } from './lib/notEqual.mjs';
33
55
  export { partition } from './lib/partition.mjs';
34
56
  export { Peekable, peekable } from './lib/peekable.mjs';
35
57
  export { prepend } from './lib/prepend.mjs';
@@ -38,16 +60,17 @@ export { range } from './lib/range.mjs';
38
60
  export { reduce } from './lib/reduce.mjs';
39
61
  export { repeat } from './lib/repeat.mjs';
40
62
  export { reverse } from './lib/reverse.mjs';
63
+ export { CompareByComparator, LexicographicComparison } from './lib/shared/_compare.mjs';
41
64
  export { NumberResolvable } from './lib/shared/_toNumberOrThrow.mjs';
65
+ export { ascNumber, ascString, ascString as defaultCompare, descNumber, descString } from './lib/shared/comparators.mjs';
42
66
  export { slice } from './lib/slice.mjs';
43
- export { some } from './lib/some.mjs';
44
67
  export { sorted } from './lib/sorted.mjs';
45
68
  export { StarMapParameters, starMap } from './lib/starMap.mjs';
69
+ export { stepBy } from './lib/stepBy.mjs';
46
70
  export { sum } from './lib/sum.mjs';
47
71
  export { take } from './lib/take.mjs';
48
72
  export { takeLast } from './lib/takeLast.mjs';
49
73
  export { tee } from './lib/tee.mjs';
50
- export { toArray } from './lib/toArray.mjs';
51
74
  export { toIterableIterator } from './lib/toIterableIterator.mjs';
52
75
  export { union } from './lib/union.mjs';
53
76
  export { unique } from './lib/unique.mjs';