@sapphire/iterator-utilities 2.0.2-next.bc456c31 → 2.1.0-next.038daf1c

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 (43) hide show
  1. package/dist/cjs/index.cjs +7 -0
  2. package/dist/cjs/index.d.cts +1 -0
  3. package/dist/cjs/lib/compact.cjs.map +1 -1
  4. package/dist/cjs/lib/compareBy.cjs.map +1 -1
  5. package/dist/cjs/lib/findIndex.cjs.map +1 -1
  6. package/dist/cjs/lib/fuse.cjs.map +1 -1
  7. package/dist/cjs/lib/indexOf.cjs.map +1 -1
  8. package/dist/cjs/lib/intersperse.cjs.map +1 -1
  9. package/dist/cjs/lib/peekable.cjs.map +1 -1
  10. package/dist/cjs/lib/range.cjs.map +1 -1
  11. package/dist/cjs/lib/repeat.cjs.map +1 -1
  12. package/dist/cjs/lib/shared/_compare.cjs.map +1 -1
  13. package/dist/cjs/lib/slice.cjs.map +1 -1
  14. package/dist/cjs/lib/stepBy.cjs.map +1 -1
  15. package/dist/cjs/lib/take.cjs.map +1 -1
  16. package/dist/cjs/lib/takeLast.cjs.map +1 -1
  17. package/dist/cjs/lib/tee.cjs.map +1 -1
  18. package/dist/cjs/lib/windows.cjs +29 -0
  19. package/dist/cjs/lib/windows.cjs.map +1 -0
  20. package/dist/cjs/lib/windows.d.cts +21 -0
  21. package/dist/esm/index.d.mts +1 -0
  22. package/dist/esm/index.mjs +1 -0
  23. package/dist/esm/lib/compact.mjs.map +1 -1
  24. package/dist/esm/lib/compareBy.mjs.map +1 -1
  25. package/dist/esm/lib/findIndex.mjs.map +1 -1
  26. package/dist/esm/lib/fuse.mjs.map +1 -1
  27. package/dist/esm/lib/indexOf.mjs.map +1 -1
  28. package/dist/esm/lib/intersperse.mjs.map +1 -1
  29. package/dist/esm/lib/peekable.mjs.map +1 -1
  30. package/dist/esm/lib/range.mjs.map +1 -1
  31. package/dist/esm/lib/repeat.mjs.map +1 -1
  32. package/dist/esm/lib/shared/_compare.mjs.map +1 -1
  33. package/dist/esm/lib/slice.mjs.map +1 -1
  34. package/dist/esm/lib/stepBy.mjs.map +1 -1
  35. package/dist/esm/lib/take.mjs.map +1 -1
  36. package/dist/esm/lib/takeLast.mjs.map +1 -1
  37. package/dist/esm/lib/tee.mjs.map +1 -1
  38. package/dist/esm/lib/windows.d.mts +21 -0
  39. package/dist/esm/lib/windows.mjs +26 -0
  40. package/dist/esm/lib/windows.mjs.map +1 -0
  41. package/dist/iife/index.global.js +19 -0
  42. package/dist/iife/index.global.js.map +1 -1
  43. package/package.json +17 -7
@@ -0,0 +1,21 @@
1
+ import { IterableResolvable } from './from.mjs';
2
+
3
+ /**
4
+ * Creates an iterable with arrays of `count` elements representing a sliding window.
5
+ *
6
+ * @param iterable The iterator to take values from.
7
+ * @param count The maximum number of values in the window.
8
+ * @returns An iterator that yields windows with `count` values from the provided iterator.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { windows } from '@sapphire/iterator-utilities';
13
+ *
14
+ * const iterable = [1, 2, 3, 4, 5];
15
+ * console.log([...windows(iterable, 2)]);
16
+ * // Output: [[1, 2], [2, 3], [3, 4], [4, 5]]
17
+ * ```
18
+ */
19
+ declare function windows<const ElementType>(iterable: IterableResolvable<ElementType>, count: number): IterableIterator<ElementType[]>;
20
+
21
+ export { windows };
@@ -0,0 +1,26 @@
1
+ import { __name } from '../chunk-PAWJFY3S.mjs';
2
+ import { from } from './from.mjs';
3
+ import { assertPositive } from './shared/_assertPositive.mjs';
4
+ import { makeIterableIterator } from './shared/_makeIterableIterator.mjs';
5
+ import { toIntegerOrInfinityOrThrow } from './shared/_toIntegerOrInfinityOrThrow.mjs';
6
+
7
+ function windows(iterable, count) {
8
+ count = assertPositive(toIntegerOrInfinityOrThrow(count), count);
9
+ const buffer = [];
10
+ const resolvedIterable = from(iterable);
11
+ return makeIterableIterator(() => {
12
+ while (buffer.length !== count) {
13
+ const result = resolvedIterable.next();
14
+ if (result.done) return { done: true, value: void 0 };
15
+ buffer.push(result.value);
16
+ }
17
+ const value = buffer.slice();
18
+ buffer.shift();
19
+ return { done: false, value };
20
+ });
21
+ }
22
+ __name(windows, "windows");
23
+
24
+ export { windows };
25
+ //# sourceMappingURL=windows.mjs.map
26
+ //# sourceMappingURL=windows.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/windows.ts"],"names":[],"mappings":";;;;;;AAqBO,SAAS,OAAA,CAA2B,UAA2C,KAAgD,EAAA;AACrI,EAAA,KAAA,GAAQ,cAAe,CAAA,0BAAA,CAA2B,KAAK,CAAA,EAAG,KAAK,CAAA;AAE/D,EAAA,MAAM,SAAS,EAAC;AAChB,EAAM,MAAA,gBAAA,GAAmB,KAAK,QAAQ,CAAA;AACtC,EAAA,OAAO,qBAAoC,MAAM;AAChD,IAAO,OAAA,MAAA,CAAO,WAAW,KAAO,EAAA;AAC/B,MAAM,MAAA,MAAA,GAAS,iBAAiB,IAAK,EAAA;AACrC,MAAA,IAAI,OAAO,IAAM,EAAA,OAAO,EAAE,IAAM,EAAA,IAAA,EAAM,OAAO,MAAU,EAAA;AAEvD,MAAO,MAAA,CAAA,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA;AAGzB,IAAM,MAAA,KAAA,GAAQ,OAAO,KAAM,EAAA;AAC3B,IAAA,MAAA,CAAO,KAAM,EAAA;AACb,IAAO,OAAA,EAAE,IAAM,EAAA,KAAA,EAAO,KAAM,EAAA;AAAA,GAC5B,CAAA;AACF;AAjBgB,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA","file":"windows.mjs","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 iterable with arrays of `count` elements representing a sliding window.\n *\n * @param iterable The iterator to take values from.\n * @param count The maximum number of values in the window.\n * @returns An iterator that yields windows with `count` values from the provided iterator.\n *\n * @example\n * ```typescript\n * import { windows } from '@sapphire/iterator-utilities';\n *\n * const iterable = [1, 2, 3, 4, 5];\n * console.log([...windows(iterable, 2)]);\n * // Output: [[1, 2], [2, 3], [3, 4], [4, 5]]\n * ```\n */\nexport function windows<const ElementType>(iterable: IterableResolvable<ElementType>, count: number): IterableIterator<ElementType[]> {\n\tcount = assertPositive(toIntegerOrInfinityOrThrow(count), count);\n\n\tconst buffer = [] as ElementType[];\n\tconst resolvedIterable = from(iterable);\n\treturn makeIterableIterator<ElementType[]>(() => {\n\t\twhile (buffer.length !== count) {\n\t\t\tconst result = resolvedIterable.next();\n\t\t\tif (result.done) return { done: true, value: undefined };\n\n\t\t\tbuffer.push(result.value);\n\t\t}\n\n\t\tconst value = buffer.slice();\n\t\tbuffer.shift();\n\t\treturn { done: false, value };\n\t});\n}\n"]}
@@ -1030,6 +1030,24 @@ var SapphireIteratorUtilities = (function (exports) {
1030
1030
  }
1031
1031
  __name(unzip, "unzip");
1032
1032
 
1033
+ // src/lib/windows.ts
1034
+ function windows(iterable, count2) {
1035
+ count2 = assertPositive(toIntegerOrInfinityOrThrow(count2), count2);
1036
+ const buffer = [];
1037
+ const resolvedIterable = from(iterable);
1038
+ return makeIterableIterator(() => {
1039
+ while (buffer.length !== count2) {
1040
+ const result = resolvedIterable.next();
1041
+ if (result.done) return { done: true, value: void 0 };
1042
+ buffer.push(result.value);
1043
+ }
1044
+ const value = buffer.slice();
1045
+ buffer.shift();
1046
+ return { done: false, value };
1047
+ });
1048
+ }
1049
+ __name(windows, "windows");
1050
+
1033
1051
  // src/lib/zip.ts
1034
1052
  function* zip(...iterables) {
1035
1053
  const resolvedIterables = iterables.map((iterable) => from(iterable));
@@ -1143,6 +1161,7 @@ var SapphireIteratorUtilities = (function (exports) {
1143
1161
  exports.union = union;
1144
1162
  exports.unique = unique;
1145
1163
  exports.unzip = unzip;
1164
+ exports.windows = windows;
1146
1165
  exports.zip = zip;
1147
1166
 
1148
1167
  return exports;