@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.
- package/dist/cjs/index.cjs +7 -0
- package/dist/cjs/index.d.cts +1 -0
- package/dist/cjs/lib/compact.cjs.map +1 -1
- package/dist/cjs/lib/compareBy.cjs.map +1 -1
- package/dist/cjs/lib/findIndex.cjs.map +1 -1
- package/dist/cjs/lib/fuse.cjs.map +1 -1
- package/dist/cjs/lib/indexOf.cjs.map +1 -1
- package/dist/cjs/lib/intersperse.cjs.map +1 -1
- package/dist/cjs/lib/peekable.cjs.map +1 -1
- package/dist/cjs/lib/range.cjs.map +1 -1
- package/dist/cjs/lib/repeat.cjs.map +1 -1
- package/dist/cjs/lib/shared/_compare.cjs.map +1 -1
- package/dist/cjs/lib/slice.cjs.map +1 -1
- package/dist/cjs/lib/stepBy.cjs.map +1 -1
- package/dist/cjs/lib/take.cjs.map +1 -1
- package/dist/cjs/lib/takeLast.cjs.map +1 -1
- package/dist/cjs/lib/tee.cjs.map +1 -1
- package/dist/cjs/lib/windows.cjs +29 -0
- package/dist/cjs/lib/windows.cjs.map +1 -0
- package/dist/cjs/lib/windows.d.cts +21 -0
- package/dist/esm/index.d.mts +1 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/lib/compact.mjs.map +1 -1
- package/dist/esm/lib/compareBy.mjs.map +1 -1
- package/dist/esm/lib/findIndex.mjs.map +1 -1
- package/dist/esm/lib/fuse.mjs.map +1 -1
- package/dist/esm/lib/indexOf.mjs.map +1 -1
- package/dist/esm/lib/intersperse.mjs.map +1 -1
- package/dist/esm/lib/peekable.mjs.map +1 -1
- package/dist/esm/lib/range.mjs.map +1 -1
- package/dist/esm/lib/repeat.mjs.map +1 -1
- package/dist/esm/lib/shared/_compare.mjs.map +1 -1
- package/dist/esm/lib/slice.mjs.map +1 -1
- package/dist/esm/lib/stepBy.mjs.map +1 -1
- package/dist/esm/lib/take.mjs.map +1 -1
- package/dist/esm/lib/takeLast.mjs.map +1 -1
- package/dist/esm/lib/tee.mjs.map +1 -1
- package/dist/esm/lib/windows.d.mts +21 -0
- package/dist/esm/lib/windows.mjs +26 -0
- package/dist/esm/lib/windows.mjs.map +1 -0
- package/dist/iife/index.global.js +19 -0
- package/dist/iife/index.global.js.map +1 -1
- 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;
|