es-toolkit 1.48.1-dev.1889 → 1.48.1-dev.1894
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/array/chunkBy.d.mts +32 -0
- package/dist/array/chunkBy.d.ts +32 -0
- package/dist/array/chunkBy.js +42 -0
- package/dist/array/chunkBy.mjs +42 -0
- package/dist/array/index.d.mts +2 -1
- package/dist/array/index.d.ts +2 -1
- package/dist/array/index.js +2 -0
- package/dist/array/index.mjs +2 -1
- package/dist/array/take.d.mts +1 -7
- package/dist/array/take.d.ts +1 -7
- package/dist/array/take.js +1 -9
- package/dist/array/take.mjs +1 -9
- package/dist/array/takeRight.d.mts +2 -2
- package/dist/array/takeRight.d.ts +2 -2
- package/dist/array/takeRight.js +2 -4
- package/dist/array/takeRight.mjs +2 -4
- package/dist/array/windowed.d.mts +1 -1
- package/dist/array/windowed.d.ts +1 -1
- package/dist/browser.global.js +3 -3
- package/dist/compat/array/drop.js +1 -1
- package/dist/compat/array/drop.mjs +1 -1
- package/dist/compat/array/dropRight.js +1 -1
- package/dist/compat/array/dropRight.mjs +1 -1
- package/dist/compat/array/findLast.js +1 -1
- package/dist/compat/array/findLast.mjs +1 -1
- package/dist/compat/array/includes.js +1 -1
- package/dist/compat/array/includes.mjs +1 -1
- package/dist/compat/array/nth.js +1 -1
- package/dist/compat/array/nth.mjs +1 -1
- package/dist/compat/array/slice.js +1 -1
- package/dist/compat/array/slice.mjs +1 -1
- package/dist/compat/array/sortedIndexBy.js +1 -1
- package/dist/compat/array/sortedIndexBy.mjs +1 -1
- package/dist/compat/array/take.js +2 -2
- package/dist/compat/array/take.mjs +2 -2
- package/dist/compat/array/takeRight.js +1 -1
- package/dist/compat/array/takeRight.mjs +1 -1
- package/dist/compat/compat.js +4 -4
- package/dist/compat/compat.mjs +4 -4
- package/dist/compat/index.js +4 -4
- package/dist/compat/index.mjs +4 -4
- package/dist/compat/math/add.js +1 -1
- package/dist/compat/math/add.mjs +1 -1
- package/dist/compat/math/divide.js +1 -1
- package/dist/compat/math/divide.mjs +1 -1
- package/dist/compat/math/multiply.js +1 -1
- package/dist/compat/math/multiply.mjs +1 -1
- package/dist/compat/math/subtract.js +1 -1
- package/dist/compat/math/subtract.mjs +1 -1
- package/dist/compat/object/omitBy.js +1 -1
- package/dist/compat/object/omitBy.mjs +1 -1
- package/dist/compat/object/pickBy.js +1 -1
- package/dist/compat/object/pickBy.mjs +1 -1
- package/dist/compat/string/repeat.js +1 -1
- package/dist/compat/string/repeat.mjs +1 -1
- package/dist/fp/_internal/lazy.js +58 -0
- package/dist/fp/_internal/lazy.mjs +57 -0
- package/dist/fp/array/at.d.mts +20 -0
- package/dist/fp/array/at.d.ts +20 -0
- package/dist/fp/array/at.js +25 -0
- package/dist/fp/array/at.mjs +25 -0
- package/dist/fp/array/cartesianProduct.d.mts +61 -0
- package/dist/fp/array/cartesianProduct.d.ts +61 -0
- package/dist/fp/array/cartesianProduct.js +9 -0
- package/dist/fp/array/cartesianProduct.mjs +9 -0
- package/dist/fp/array/chunk.d.mts +19 -0
- package/dist/fp/array/chunk.d.ts +19 -0
- package/dist/fp/array/chunk.js +24 -0
- package/dist/fp/array/chunk.mjs +24 -0
- package/dist/fp/array/chunkBy.d.mts +20 -0
- package/dist/fp/array/chunkBy.d.ts +20 -0
- package/dist/fp/array/chunkBy.js +25 -0
- package/dist/fp/array/chunkBy.mjs +25 -0
- package/dist/fp/array/combinations.d.mts +21 -0
- package/dist/fp/array/combinations.d.ts +21 -0
- package/dist/fp/array/combinations.js +26 -0
- package/dist/fp/array/combinations.mjs +26 -0
- package/dist/fp/array/compact.d.mts +22 -0
- package/dist/fp/array/compact.d.ts +22 -0
- package/dist/fp/array/compact.js +31 -0
- package/dist/fp/array/compact.mjs +30 -0
- package/dist/fp/array/countBy.d.mts +21 -0
- package/dist/fp/array/countBy.d.ts +21 -0
- package/dist/fp/array/countBy.js +26 -0
- package/dist/fp/array/countBy.mjs +26 -0
- package/dist/fp/array/difference.d.mts +21 -0
- package/dist/fp/array/difference.d.ts +21 -0
- package/dist/fp/array/difference.js +32 -0
- package/dist/fp/array/difference.mjs +31 -0
- package/dist/fp/array/differenceBy.d.mts +22 -0
- package/dist/fp/array/differenceBy.d.ts +22 -0
- package/dist/fp/array/differenceBy.js +33 -0
- package/dist/fp/array/differenceBy.mjs +32 -0
- package/dist/fp/array/differenceWith.d.mts +22 -0
- package/dist/fp/array/differenceWith.d.ts +22 -0
- package/dist/fp/array/differenceWith.js +32 -0
- package/dist/fp/array/differenceWith.mjs +31 -0
- package/dist/fp/array/drop.d.mts +20 -0
- package/dist/fp/array/drop.d.ts +20 -0
- package/dist/fp/array/drop.js +31 -0
- package/dist/fp/array/drop.mjs +30 -0
- package/dist/fp/array/dropRight.d.mts +20 -0
- package/dist/fp/array/dropRight.d.ts +20 -0
- package/dist/fp/array/dropRight.js +25 -0
- package/dist/fp/array/dropRight.mjs +25 -0
- package/dist/fp/array/dropRightWhile.d.mts +20 -0
- package/dist/fp/array/dropRightWhile.d.ts +20 -0
- package/dist/fp/array/dropRightWhile.js +25 -0
- package/dist/fp/array/dropRightWhile.mjs +25 -0
- package/dist/fp/array/dropWhile.d.mts +20 -0
- package/dist/fp/array/dropWhile.d.ts +20 -0
- package/dist/fp/array/dropWhile.js +36 -0
- package/dist/fp/array/dropWhile.mjs +36 -0
- package/dist/fp/array/filter.d.mts +45 -0
- package/dist/fp/array/filter.d.ts +45 -0
- package/dist/fp/array/filter.js +13 -0
- package/dist/fp/array/filter.mjs +12 -0
- package/dist/fp/array/find.d.mts +39 -0
- package/dist/fp/array/find.d.ts +39 -0
- package/dist/fp/array/find.js +8 -0
- package/dist/fp/array/find.mjs +8 -0
- package/dist/fp/array/findIndex.d.mts +20 -0
- package/dist/fp/array/findIndex.d.ts +20 -0
- package/dist/fp/array/findIndex.js +24 -0
- package/dist/fp/array/findIndex.mjs +24 -0
- package/dist/fp/array/findLast.d.mts +39 -0
- package/dist/fp/array/findLast.d.ts +39 -0
- package/dist/fp/array/findLast.js +11 -0
- package/dist/fp/array/findLast.mjs +11 -0
- package/dist/fp/array/findLastIndex.d.mts +20 -0
- package/dist/fp/array/findLastIndex.d.ts +20 -0
- package/dist/fp/array/findLastIndex.js +25 -0
- package/dist/fp/array/findLastIndex.mjs +25 -0
- package/dist/fp/array/flatMap.d.mts +28 -0
- package/dist/fp/array/flatMap.d.ts +28 -0
- package/dist/fp/array/flatMap.js +39 -0
- package/dist/fp/array/flatMap.mjs +38 -0
- package/dist/fp/array/flatMapDeep.d.mts +23 -0
- package/dist/fp/array/flatMapDeep.d.ts +23 -0
- package/dist/fp/array/flatMapDeep.js +38 -0
- package/dist/fp/array/flatMapDeep.mjs +37 -0
- package/dist/fp/array/flatten.d.mts +21 -0
- package/dist/fp/array/flatten.d.ts +21 -0
- package/dist/fp/array/flatten.js +39 -0
- package/dist/fp/array/flatten.mjs +38 -0
- package/dist/fp/array/flattenDeep.d.mts +21 -0
- package/dist/fp/array/flattenDeep.d.ts +21 -0
- package/dist/fp/array/flattenDeep.js +36 -0
- package/dist/fp/array/flattenDeep.mjs +35 -0
- package/dist/fp/array/forEach.d.mts +22 -0
- package/dist/fp/array/forEach.d.ts +22 -0
- package/dist/fp/array/forEach.js +33 -0
- package/dist/fp/array/forEach.mjs +32 -0
- package/dist/fp/array/groupBy.d.mts +21 -0
- package/dist/fp/array/groupBy.d.ts +21 -0
- package/dist/fp/array/groupBy.js +26 -0
- package/dist/fp/array/groupBy.mjs +26 -0
- package/dist/fp/array/head.d.mts +35 -0
- package/dist/fp/array/head.d.ts +35 -0
- package/dist/fp/array/head.js +9 -0
- package/dist/fp/array/head.mjs +9 -0
- package/dist/fp/array/index.d.mts +69 -0
- package/dist/fp/array/index.d.ts +69 -0
- package/dist/fp/array/index.js +68 -0
- package/dist/fp/array/index.mjs +68 -0
- package/dist/fp/array/initial.d.mts +19 -0
- package/dist/fp/array/initial.d.ts +19 -0
- package/dist/fp/array/initial.js +24 -0
- package/dist/fp/array/initial.mjs +24 -0
- package/dist/fp/array/intersection.d.mts +21 -0
- package/dist/fp/array/intersection.d.ts +21 -0
- package/dist/fp/array/intersection.js +32 -0
- package/dist/fp/array/intersection.mjs +31 -0
- package/dist/fp/array/intersectionBy.d.mts +22 -0
- package/dist/fp/array/intersectionBy.d.ts +22 -0
- package/dist/fp/array/intersectionBy.js +33 -0
- package/dist/fp/array/intersectionBy.mjs +32 -0
- package/dist/fp/array/intersectionWith.d.mts +22 -0
- package/dist/fp/array/intersectionWith.d.ts +22 -0
- package/dist/fp/array/intersectionWith.js +32 -0
- package/dist/fp/array/intersectionWith.mjs +31 -0
- package/dist/fp/array/isSubset.d.mts +20 -0
- package/dist/fp/array/isSubset.d.ts +20 -0
- package/dist/fp/array/isSubset.js +25 -0
- package/dist/fp/array/isSubset.mjs +25 -0
- package/dist/fp/array/isSubsetWith.d.mts +21 -0
- package/dist/fp/array/isSubsetWith.d.ts +21 -0
- package/dist/fp/array/isSubsetWith.js +26 -0
- package/dist/fp/array/isSubsetWith.mjs +26 -0
- package/dist/fp/array/join.d.mts +20 -0
- package/dist/fp/array/join.d.ts +20 -0
- package/dist/fp/array/join.js +24 -0
- package/dist/fp/array/join.mjs +24 -0
- package/dist/fp/array/keyBy.d.mts +21 -0
- package/dist/fp/array/keyBy.d.ts +21 -0
- package/dist/fp/array/keyBy.js +26 -0
- package/dist/fp/array/keyBy.mjs +26 -0
- package/dist/fp/array/last.d.mts +35 -0
- package/dist/fp/array/last.d.ts +35 -0
- package/dist/fp/array/last.js +9 -0
- package/dist/fp/array/last.mjs +9 -0
- package/dist/fp/array/length.d.mts +18 -0
- package/dist/fp/array/length.d.ts +18 -0
- package/dist/fp/array/length.js +22 -0
- package/dist/fp/array/length.mjs +22 -0
- package/dist/fp/array/map.d.mts +27 -0
- package/dist/fp/array/map.d.ts +27 -0
- package/dist/fp/array/map.js +36 -0
- package/dist/fp/array/map.mjs +35 -0
- package/dist/fp/array/maxBy.d.mts +37 -0
- package/dist/fp/array/maxBy.d.ts +37 -0
- package/dist/fp/array/maxBy.js +9 -0
- package/dist/fp/array/maxBy.mjs +9 -0
- package/dist/fp/array/minBy.d.mts +37 -0
- package/dist/fp/array/minBy.d.ts +37 -0
- package/dist/fp/array/minBy.js +9 -0
- package/dist/fp/array/minBy.mjs +9 -0
- package/dist/fp/array/orderBy.d.mts +21 -0
- package/dist/fp/array/orderBy.d.ts +21 -0
- package/dist/fp/array/orderBy.js +26 -0
- package/dist/fp/array/orderBy.mjs +26 -0
- package/dist/fp/array/partition.d.mts +39 -0
- package/dist/fp/array/partition.d.ts +39 -0
- package/dist/fp/array/partition.js +9 -0
- package/dist/fp/array/partition.mjs +9 -0
- package/dist/fp/array/reverse.d.mts +19 -0
- package/dist/fp/array/reverse.d.ts +19 -0
- package/dist/fp/array/reverse.js +23 -0
- package/dist/fp/array/reverse.mjs +23 -0
- package/dist/fp/array/sample.d.mts +18 -0
- package/dist/fp/array/sample.d.ts +18 -0
- package/dist/fp/array/sample.js +23 -0
- package/dist/fp/array/sample.mjs +23 -0
- package/dist/fp/array/sampleSize.d.mts +20 -0
- package/dist/fp/array/sampleSize.d.ts +20 -0
- package/dist/fp/array/sampleSize.js +25 -0
- package/dist/fp/array/sampleSize.mjs +25 -0
- package/dist/fp/array/shuffle.d.mts +19 -0
- package/dist/fp/array/shuffle.d.ts +19 -0
- package/dist/fp/array/shuffle.js +24 -0
- package/dist/fp/array/shuffle.mjs +24 -0
- package/dist/fp/array/sortBy.d.mts +26 -0
- package/dist/fp/array/sortBy.d.ts +26 -0
- package/dist/fp/array/sortBy.js +31 -0
- package/dist/fp/array/sortBy.mjs +31 -0
- package/dist/fp/array/tail.d.mts +19 -0
- package/dist/fp/array/tail.d.ts +19 -0
- package/dist/fp/array/tail.js +24 -0
- package/dist/fp/array/tail.mjs +24 -0
- package/dist/fp/array/take.d.mts +26 -0
- package/dist/fp/array/take.d.ts +26 -0
- package/dist/fp/array/take.js +39 -0
- package/dist/fp/array/take.mjs +38 -0
- package/dist/fp/array/takeRight.d.mts +20 -0
- package/dist/fp/array/takeRight.d.ts +20 -0
- package/dist/fp/array/takeRight.js +25 -0
- package/dist/fp/array/takeRight.mjs +25 -0
- package/dist/fp/array/takeRightWhile.d.mts +20 -0
- package/dist/fp/array/takeRightWhile.d.ts +20 -0
- package/dist/fp/array/takeRightWhile.js +25 -0
- package/dist/fp/array/takeRightWhile.mjs +25 -0
- package/dist/fp/array/takeWhile.d.mts +21 -0
- package/dist/fp/array/takeWhile.d.ts +21 -0
- package/dist/fp/array/takeWhile.js +32 -0
- package/dist/fp/array/takeWhile.mjs +31 -0
- package/dist/fp/array/toFilled.d.mts +23 -0
- package/dist/fp/array/toFilled.d.ts +23 -0
- package/dist/fp/array/toFilled.js +30 -0
- package/dist/fp/array/toFilled.mjs +30 -0
- package/dist/fp/array/union.d.mts +20 -0
- package/dist/fp/array/union.d.ts +20 -0
- package/dist/fp/array/union.js +25 -0
- package/dist/fp/array/union.mjs +25 -0
- package/dist/fp/array/unionBy.d.mts +22 -0
- package/dist/fp/array/unionBy.d.ts +22 -0
- package/dist/fp/array/unionBy.js +27 -0
- package/dist/fp/array/unionBy.mjs +27 -0
- package/dist/fp/array/unionWith.d.mts +21 -0
- package/dist/fp/array/unionWith.d.ts +21 -0
- package/dist/fp/array/unionWith.js +26 -0
- package/dist/fp/array/unionWith.mjs +26 -0
- package/dist/fp/array/uniq.d.mts +21 -0
- package/dist/fp/array/uniq.d.ts +21 -0
- package/dist/fp/array/uniq.js +36 -0
- package/dist/fp/array/uniq.mjs +36 -0
- package/dist/fp/array/uniqBy.d.mts +21 -0
- package/dist/fp/array/uniqBy.d.ts +21 -0
- package/dist/fp/array/uniqBy.js +38 -0
- package/dist/fp/array/uniqBy.mjs +38 -0
- package/dist/fp/array/uniqWith.d.mts +20 -0
- package/dist/fp/array/uniqWith.d.ts +20 -0
- package/dist/fp/array/uniqWith.js +35 -0
- package/dist/fp/array/uniqWith.mjs +35 -0
- package/dist/fp/array/unzip.d.mts +20 -0
- package/dist/fp/array/unzip.d.ts +20 -0
- package/dist/fp/array/unzip.js +24 -0
- package/dist/fp/array/unzip.mjs +24 -0
- package/dist/fp/array/unzipWith.d.mts +21 -0
- package/dist/fp/array/unzipWith.d.ts +21 -0
- package/dist/fp/array/unzipWith.js +26 -0
- package/dist/fp/array/unzipWith.mjs +26 -0
- package/dist/fp/array/windowed.d.mts +25 -0
- package/dist/fp/array/windowed.d.ts +25 -0
- package/dist/fp/array/windowed.js +50 -0
- package/dist/fp/array/windowed.mjs +50 -0
- package/dist/fp/array/without.d.mts +19 -0
- package/dist/fp/array/without.d.ts +19 -0
- package/dist/fp/array/without.js +30 -0
- package/dist/fp/array/without.mjs +29 -0
- package/dist/fp/array/xor.d.mts +20 -0
- package/dist/fp/array/xor.d.ts +20 -0
- package/dist/fp/array/xor.js +25 -0
- package/dist/fp/array/xor.mjs +25 -0
- package/dist/fp/array/xorBy.d.mts +22 -0
- package/dist/fp/array/xorBy.d.ts +22 -0
- package/dist/fp/array/xorBy.js +27 -0
- package/dist/fp/array/xorBy.mjs +27 -0
- package/dist/fp/array/xorWith.d.mts +21 -0
- package/dist/fp/array/xorWith.d.ts +21 -0
- package/dist/fp/array/xorWith.js +26 -0
- package/dist/fp/array/xorWith.mjs +26 -0
- package/dist/fp/array/zip.d.mts +61 -0
- package/dist/fp/array/zip.d.ts +61 -0
- package/dist/fp/array/zip.js +9 -0
- package/dist/fp/array/zip.mjs +9 -0
- package/dist/fp/array/zipObject.d.mts +21 -0
- package/dist/fp/array/zipObject.d.ts +21 -0
- package/dist/fp/array/zipObject.js +26 -0
- package/dist/fp/array/zipObject.mjs +26 -0
- package/dist/fp/array/zipWith.d.mts +57 -0
- package/dist/fp/array/zipWith.d.ts +57 -0
- package/dist/fp/array/zipWith.js +9 -0
- package/dist/fp/array/zipWith.mjs +9 -0
- package/dist/fp/index.d.mts +75 -0
- package/dist/fp/index.d.ts +75 -0
- package/dist/fp/index.js +150 -0
- package/dist/fp/index.mjs +77 -0
- package/dist/fp/math/add.d.mts +17 -0
- package/dist/fp/math/add.d.ts +17 -0
- package/dist/fp/math/add.js +21 -0
- package/dist/fp/math/add.mjs +21 -0
- package/dist/fp/math/index.d.mts +2 -0
- package/dist/fp/math/index.d.ts +2 -0
- package/dist/fp/math/index.js +2 -0
- package/dist/fp/math/index.mjs +2 -0
- package/dist/fp/math/multiply.d.mts +17 -0
- package/dist/fp/math/multiply.d.ts +17 -0
- package/dist/fp/math/multiply.js +21 -0
- package/dist/fp/math/multiply.mjs +21 -0
- package/dist/fp/object/index.d.mts +2 -0
- package/dist/fp/object/index.d.ts +2 -0
- package/dist/fp/object/index.js +2 -0
- package/dist/fp/object/index.mjs +2 -0
- package/dist/fp/object/omit.d.mts +18 -0
- package/dist/fp/object/omit.d.ts +18 -0
- package/dist/fp/object/omit.js +23 -0
- package/dist/fp/object/omit.mjs +23 -0
- package/dist/fp/object/pick.d.mts +19 -0
- package/dist/fp/object/pick.d.ts +19 -0
- package/dist/fp/object/pick.js +24 -0
- package/dist/fp/object/pick.mjs +24 -0
- package/dist/fp/pipe.d.mts +235 -0
- package/dist/fp/pipe.d.ts +235 -0
- package/dist/fp/pipe.js +116 -0
- package/dist/fp/pipe.mjs +116 -0
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +4 -0
- package/dist/index.mjs +3 -1
- package/dist/predicate/index.d.mts +2 -1
- package/dist/predicate/index.d.ts +2 -1
- package/dist/predicate/index.js +2 -0
- package/dist/predicate/index.mjs +2 -1
- package/dist/predicate/isIterable.d.mts +26 -0
- package/dist/predicate/isIterable.d.ts +26 -0
- package/dist/predicate/isIterable.js +28 -0
- package/dist/predicate/isIterable.mjs +28 -0
- package/fp.d.ts +1 -0
- package/fp.js +1 -0
- package/package.json +22 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const require_takeWhile = require("../../array/takeWhile.js");
|
|
2
|
+
const require_lazy = require("../_internal/lazy.js");
|
|
3
|
+
//#region src/fp/array/takeWhile.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that takes leading values while a predicate returns true.
|
|
6
|
+
*
|
|
7
|
+
* The returned function is lazy-capable and short-circuiting inside
|
|
8
|
+
* {@link pipe}; once the predicate returns false, upstream lazy operators stop
|
|
9
|
+
* processing further input.
|
|
10
|
+
*
|
|
11
|
+
* @template T - The type of elements in the array.
|
|
12
|
+
* @param predicate - Called with each value and index until it returns false.
|
|
13
|
+
* @returns A function that maps the piped array to the matching prefix.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, takeWhile } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([1, 2, 3, 1], takeWhile(value => value < 3));
|
|
19
|
+
* // => [1, 2]
|
|
20
|
+
*/
|
|
21
|
+
function takeWhile(predicate) {
|
|
22
|
+
function takeWhileEager(array) {
|
|
23
|
+
return require_takeWhile.takeWhile(array, (element, index) => predicate(element, index));
|
|
24
|
+
}
|
|
25
|
+
const takeWhileLazy = require_lazy.createLazyFunction((value, index, emit) => {
|
|
26
|
+
if (!predicate(value, index)) return false;
|
|
27
|
+
emit(value);
|
|
28
|
+
});
|
|
29
|
+
return require_lazy.combineEagerAndLazyFunctions(takeWhileEager, takeWhileLazy, { shortCircuit: true });
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
exports.takeWhile = takeWhile;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { takeWhile as takeWhile$1 } from "../../array/takeWhile.mjs";
|
|
2
|
+
import { combineEagerAndLazyFunctions, createLazyFunction } from "../_internal/lazy.mjs";
|
|
3
|
+
//#region src/fp/array/takeWhile.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that takes leading values while a predicate returns true.
|
|
6
|
+
*
|
|
7
|
+
* The returned function is lazy-capable and short-circuiting inside
|
|
8
|
+
* {@link pipe}; once the predicate returns false, upstream lazy operators stop
|
|
9
|
+
* processing further input.
|
|
10
|
+
*
|
|
11
|
+
* @template T - The type of elements in the array.
|
|
12
|
+
* @param predicate - Called with each value and index until it returns false.
|
|
13
|
+
* @returns A function that maps the piped array to the matching prefix.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, takeWhile } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([1, 2, 3, 1], takeWhile(value => value < 3));
|
|
19
|
+
* // => [1, 2]
|
|
20
|
+
*/
|
|
21
|
+
function takeWhile(predicate) {
|
|
22
|
+
function takeWhileEager(array) {
|
|
23
|
+
return takeWhile$1(array, (element, index) => predicate(element, index));
|
|
24
|
+
}
|
|
25
|
+
return combineEagerAndLazyFunctions(takeWhileEager, createLazyFunction((value, index, emit) => {
|
|
26
|
+
if (!predicate(value, index)) return false;
|
|
27
|
+
emit(value);
|
|
28
|
+
}), { shortCircuit: true });
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { takeWhile };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/fp/array/toFilled.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns a filled copy of an array.
|
|
4
|
+
*
|
|
5
|
+
* The returned function follows Array.prototype.fill indexing semantics through the main
|
|
6
|
+
* {@link toFilled} implementation and does not mutate the input array.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the input array.
|
|
9
|
+
* @template U - The type of the fill value.
|
|
10
|
+
* @param value - The value to write into the returned array.
|
|
11
|
+
* @param start - The start index. Defaults to 0.
|
|
12
|
+
* @param end - The end index. Defaults to the array length.
|
|
13
|
+
* @returns A function that maps a readonly array to a filled copy.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, toFilled } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([1, 2, 3], toFilled(0, 1));
|
|
19
|
+
* // => [1, 0, 0]
|
|
20
|
+
*/
|
|
21
|
+
declare function toFilled<T, U>(value: U, start?: number, end?: number): (array: readonly T[]) => Array<T | U>;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { toFilled };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/fp/array/toFilled.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns a filled copy of an array.
|
|
4
|
+
*
|
|
5
|
+
* The returned function follows Array.prototype.fill indexing semantics through the main
|
|
6
|
+
* {@link toFilled} implementation and does not mutate the input array.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the input array.
|
|
9
|
+
* @template U - The type of the fill value.
|
|
10
|
+
* @param value - The value to write into the returned array.
|
|
11
|
+
* @param start - The start index. Defaults to 0.
|
|
12
|
+
* @param end - The end index. Defaults to the array length.
|
|
13
|
+
* @returns A function that maps a readonly array to a filled copy.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, toFilled } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([1, 2, 3], toFilled(0, 1));
|
|
19
|
+
* // => [1, 0, 0]
|
|
20
|
+
*/
|
|
21
|
+
declare function toFilled<T, U>(value: U, start?: number, end?: number): (array: readonly T[]) => Array<T | U>;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { toFilled };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const require_toFilled = require("../../array/toFilled.js");
|
|
2
|
+
//#region src/fp/array/toFilled.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns a filled copy of an array.
|
|
5
|
+
*
|
|
6
|
+
* The returned function follows Array.prototype.fill indexing semantics through the main
|
|
7
|
+
* {@link toFilled} implementation and does not mutate the input array.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the input array.
|
|
10
|
+
* @template U - The type of the fill value.
|
|
11
|
+
* @param value - The value to write into the returned array.
|
|
12
|
+
* @param start - The start index. Defaults to 0.
|
|
13
|
+
* @param end - The end index. Defaults to the array length.
|
|
14
|
+
* @returns A function that maps a readonly array to a filled copy.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* import { pipe, toFilled } from 'es-toolkit/fp';
|
|
18
|
+
*
|
|
19
|
+
* pipe([1, 2, 3], toFilled(0, 1));
|
|
20
|
+
* // => [1, 0, 0]
|
|
21
|
+
*/
|
|
22
|
+
function toFilled(value, start, end) {
|
|
23
|
+
return function(array) {
|
|
24
|
+
if (start == null) return require_toFilled.toFilled(array, value);
|
|
25
|
+
if (end == null) return require_toFilled.toFilled(array, value, start);
|
|
26
|
+
return require_toFilled.toFilled(array, value, start, end);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.toFilled = toFilled;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { toFilled as toFilled$1 } from "../../array/toFilled.mjs";
|
|
2
|
+
//#region src/fp/array/toFilled.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns a filled copy of an array.
|
|
5
|
+
*
|
|
6
|
+
* The returned function follows Array.prototype.fill indexing semantics through the main
|
|
7
|
+
* {@link toFilled} implementation and does not mutate the input array.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the input array.
|
|
10
|
+
* @template U - The type of the fill value.
|
|
11
|
+
* @param value - The value to write into the returned array.
|
|
12
|
+
* @param start - The start index. Defaults to 0.
|
|
13
|
+
* @param end - The end index. Defaults to the array length.
|
|
14
|
+
* @returns A function that maps a readonly array to a filled copy.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* import { pipe, toFilled } from 'es-toolkit/fp';
|
|
18
|
+
*
|
|
19
|
+
* pipe([1, 2, 3], toFilled(0, 1));
|
|
20
|
+
* // => [1, 0, 0]
|
|
21
|
+
*/
|
|
22
|
+
function toFilled(value, start, end) {
|
|
23
|
+
return function(array) {
|
|
24
|
+
if (start == null) return toFilled$1(array, value);
|
|
25
|
+
if (end == null) return toFilled$1(array, value, start);
|
|
26
|
+
return toFilled$1(array, value, start, end);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { toFilled };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/fp/array/union.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns unique values from the piped array and secondArray.
|
|
4
|
+
*
|
|
5
|
+
* Values keep their first occurrence order, matching the main {@link union} behavior.
|
|
6
|
+
* Use the returned function with {@link pipe}.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @param secondArray - Values to include after the piped array.
|
|
10
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { pipe, union } from 'es-toolkit/fp';
|
|
14
|
+
*
|
|
15
|
+
* pipe([1, 2], union([2, 3]));
|
|
16
|
+
* // => [1, 2, 3]
|
|
17
|
+
*/
|
|
18
|
+
declare function union<T>(secondArray: readonly T[]): (array: readonly T[]) => T[];
|
|
19
|
+
//#endregion
|
|
20
|
+
export { union };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/fp/array/union.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns unique values from the piped array and secondArray.
|
|
4
|
+
*
|
|
5
|
+
* Values keep their first occurrence order, matching the main {@link union} behavior.
|
|
6
|
+
* Use the returned function with {@link pipe}.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @param secondArray - Values to include after the piped array.
|
|
10
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { pipe, union } from 'es-toolkit/fp';
|
|
14
|
+
*
|
|
15
|
+
* pipe([1, 2], union([2, 3]));
|
|
16
|
+
* // => [1, 2, 3]
|
|
17
|
+
*/
|
|
18
|
+
declare function union<T>(secondArray: readonly T[]): (array: readonly T[]) => T[];
|
|
19
|
+
//#endregion
|
|
20
|
+
export { union };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const require_union = require("../../array/union.js");
|
|
2
|
+
//#region src/fp/array/union.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns unique values from the piped array and secondArray.
|
|
5
|
+
*
|
|
6
|
+
* Values keep their first occurrence order, matching the main {@link union} behavior.
|
|
7
|
+
* Use the returned function with {@link pipe}.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the arrays.
|
|
10
|
+
* @param secondArray - Values to include after the piped array.
|
|
11
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, union } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([1, 2], union([2, 3]));
|
|
17
|
+
* // => [1, 2, 3]
|
|
18
|
+
*/
|
|
19
|
+
function union(secondArray) {
|
|
20
|
+
return function(array) {
|
|
21
|
+
return require_union.union(array, secondArray);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
exports.union = union;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { union as union$1 } from "../../array/union.mjs";
|
|
2
|
+
//#region src/fp/array/union.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns unique values from the piped array and secondArray.
|
|
5
|
+
*
|
|
6
|
+
* Values keep their first occurrence order, matching the main {@link union} behavior.
|
|
7
|
+
* Use the returned function with {@link pipe}.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the arrays.
|
|
10
|
+
* @param secondArray - Values to include after the piped array.
|
|
11
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, union } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([1, 2], union([2, 3]));
|
|
17
|
+
* // => [1, 2, 3]
|
|
18
|
+
*/
|
|
19
|
+
function union(secondArray) {
|
|
20
|
+
return function(array) {
|
|
21
|
+
return union$1(array, secondArray);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { union };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/fp/array/unionBy.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns unique values by mapped identity.
|
|
4
|
+
*
|
|
5
|
+
* Values from the piped array are considered before values from secondArray. The mapper
|
|
6
|
+
* is used to compare identities, matching the main {@link unionBy} behavior.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @template U - The type of comparison keys returned by the mapper.
|
|
10
|
+
* @param secondArray - Values to include after the piped array.
|
|
11
|
+
* @param mapper - Called for values from both arrays to produce comparison keys.
|
|
12
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, unionBy } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([{ id: 1 }], unionBy([{ id: 1 }, { id: 2 }], item => item.id));
|
|
18
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
19
|
+
*/
|
|
20
|
+
declare function unionBy<T, U>(secondArray: readonly T[], mapper: (item: T) => U): (array: readonly T[]) => T[];
|
|
21
|
+
//#endregion
|
|
22
|
+
export { unionBy };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/fp/array/unionBy.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns unique values by mapped identity.
|
|
4
|
+
*
|
|
5
|
+
* Values from the piped array are considered before values from secondArray. The mapper
|
|
6
|
+
* is used to compare identities, matching the main {@link unionBy} behavior.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @template U - The type of comparison keys returned by the mapper.
|
|
10
|
+
* @param secondArray - Values to include after the piped array.
|
|
11
|
+
* @param mapper - Called for values from both arrays to produce comparison keys.
|
|
12
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, unionBy } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([{ id: 1 }], unionBy([{ id: 1 }, { id: 2 }], item => item.id));
|
|
18
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
19
|
+
*/
|
|
20
|
+
declare function unionBy<T, U>(secondArray: readonly T[], mapper: (item: T) => U): (array: readonly T[]) => T[];
|
|
21
|
+
//#endregion
|
|
22
|
+
export { unionBy };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const require_unionBy = require("../../array/unionBy.js");
|
|
2
|
+
//#region src/fp/array/unionBy.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns unique values by mapped identity.
|
|
5
|
+
*
|
|
6
|
+
* Values from the piped array are considered before values from secondArray. The mapper
|
|
7
|
+
* is used to compare identities, matching the main {@link unionBy} behavior.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the arrays.
|
|
10
|
+
* @template U - The type of comparison keys returned by the mapper.
|
|
11
|
+
* @param secondArray - Values to include after the piped array.
|
|
12
|
+
* @param mapper - Called for values from both arrays to produce comparison keys.
|
|
13
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, unionBy } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([{ id: 1 }], unionBy([{ id: 1 }, { id: 2 }], item => item.id));
|
|
19
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
20
|
+
*/
|
|
21
|
+
function unionBy(secondArray, mapper) {
|
|
22
|
+
return function(array) {
|
|
23
|
+
return require_unionBy.unionBy(array, secondArray, mapper);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
exports.unionBy = unionBy;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { unionBy as unionBy$1 } from "../../array/unionBy.mjs";
|
|
2
|
+
//#region src/fp/array/unionBy.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns unique values by mapped identity.
|
|
5
|
+
*
|
|
6
|
+
* Values from the piped array are considered before values from secondArray. The mapper
|
|
7
|
+
* is used to compare identities, matching the main {@link unionBy} behavior.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the arrays.
|
|
10
|
+
* @template U - The type of comparison keys returned by the mapper.
|
|
11
|
+
* @param secondArray - Values to include after the piped array.
|
|
12
|
+
* @param mapper - Called for values from both arrays to produce comparison keys.
|
|
13
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, unionBy } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([{ id: 1 }], unionBy([{ id: 1 }, { id: 2 }], item => item.id));
|
|
19
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
20
|
+
*/
|
|
21
|
+
function unionBy(secondArray, mapper) {
|
|
22
|
+
return function(array) {
|
|
23
|
+
return unionBy$1(array, secondArray, mapper);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { unionBy };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/unionWith.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns unique values using a custom equality function.
|
|
4
|
+
*
|
|
5
|
+
* Values from the piped array are considered before values from secondArray. The equality
|
|
6
|
+
* function decides whether two values represent the same item.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @param secondArray - Values to include after the piped array.
|
|
10
|
+
* @param areItemsEqual - Returns true when two values are equal.
|
|
11
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, unionWith } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([{ id: 1 }], unionWith([{ id: 1 }, { id: 2 }], (a, b) => a.id === b.id));
|
|
17
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
18
|
+
*/
|
|
19
|
+
declare function unionWith<T>(secondArray: readonly T[], areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { unionWith };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/unionWith.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns unique values using a custom equality function.
|
|
4
|
+
*
|
|
5
|
+
* Values from the piped array are considered before values from secondArray. The equality
|
|
6
|
+
* function decides whether two values represent the same item.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @param secondArray - Values to include after the piped array.
|
|
10
|
+
* @param areItemsEqual - Returns true when two values are equal.
|
|
11
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, unionWith } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([{ id: 1 }], unionWith([{ id: 1 }, { id: 2 }], (a, b) => a.id === b.id));
|
|
17
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
18
|
+
*/
|
|
19
|
+
declare function unionWith<T>(secondArray: readonly T[], areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { unionWith };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const require_unionWith = require("../../array/unionWith.js");
|
|
2
|
+
//#region src/fp/array/unionWith.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns unique values using a custom equality function.
|
|
5
|
+
*
|
|
6
|
+
* Values from the piped array are considered before values from secondArray. The equality
|
|
7
|
+
* function decides whether two values represent the same item.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the arrays.
|
|
10
|
+
* @param secondArray - Values to include after the piped array.
|
|
11
|
+
* @param areItemsEqual - Returns true when two values are equal.
|
|
12
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, unionWith } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([{ id: 1 }], unionWith([{ id: 1 }, { id: 2 }], (a, b) => a.id === b.id));
|
|
18
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
19
|
+
*/
|
|
20
|
+
function unionWith(secondArray, areItemsEqual) {
|
|
21
|
+
return function(array) {
|
|
22
|
+
return require_unionWith.unionWith(array, secondArray, areItemsEqual);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
exports.unionWith = unionWith;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { unionWith as unionWith$1 } from "../../array/unionWith.mjs";
|
|
2
|
+
//#region src/fp/array/unionWith.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns unique values using a custom equality function.
|
|
5
|
+
*
|
|
6
|
+
* Values from the piped array are considered before values from secondArray. The equality
|
|
7
|
+
* function decides whether two values represent the same item.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the arrays.
|
|
10
|
+
* @param secondArray - Values to include after the piped array.
|
|
11
|
+
* @param areItemsEqual - Returns true when two values are equal.
|
|
12
|
+
* @returns A function that maps a readonly array to its union with secondArray.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, unionWith } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([{ id: 1 }], unionWith([{ id: 1 }, { id: 2 }], (a, b) => a.id === b.id));
|
|
18
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
19
|
+
*/
|
|
20
|
+
function unionWith(secondArray, areItemsEqual) {
|
|
21
|
+
return function(array) {
|
|
22
|
+
return unionWith$1(array, secondArray, areItemsEqual);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { unionWith };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/uniq.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that removes duplicate values from an array, preserving
|
|
4
|
+
* the order of first occurrence. Equality follows SameValueZero, matching
|
|
5
|
+
* Set semantics. Use it with {@link pipe}.
|
|
6
|
+
*
|
|
7
|
+
* The returned function is lazy-capable inside {@link pipe}. It keeps a Set of
|
|
8
|
+
* values already emitted during each pipeline run.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @returns A function that maps a readonly array to a duplicate-free array.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, uniq } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([1, 2, 2, 3, 3, 3], uniq());
|
|
17
|
+
* // => [1, 2, 3]
|
|
18
|
+
*/
|
|
19
|
+
declare function uniq<T>(): (array: readonly T[]) => T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { uniq };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/uniq.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that removes duplicate values from an array, preserving
|
|
4
|
+
* the order of first occurrence. Equality follows SameValueZero, matching
|
|
5
|
+
* Set semantics. Use it with {@link pipe}.
|
|
6
|
+
*
|
|
7
|
+
* The returned function is lazy-capable inside {@link pipe}. It keeps a Set of
|
|
8
|
+
* values already emitted during each pipeline run.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @returns A function that maps a readonly array to a duplicate-free array.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, uniq } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([1, 2, 2, 3, 3, 3], uniq());
|
|
17
|
+
* // => [1, 2, 3]
|
|
18
|
+
*/
|
|
19
|
+
declare function uniq<T>(): (array: readonly T[]) => T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { uniq };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const require_uniq = require("../../array/uniq.js");
|
|
2
|
+
const require_lazy = require("../_internal/lazy.js");
|
|
3
|
+
//#region src/fp/array/uniq.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that removes duplicate values from an array, preserving
|
|
6
|
+
* the order of first occurrence. Equality follows SameValueZero, matching
|
|
7
|
+
* Set semantics. Use it with {@link pipe}.
|
|
8
|
+
*
|
|
9
|
+
* The returned function is lazy-capable inside {@link pipe}. It keeps a Set of
|
|
10
|
+
* values already emitted during each pipeline run.
|
|
11
|
+
*
|
|
12
|
+
* @template T - The type of elements in the array.
|
|
13
|
+
* @returns A function that maps a readonly array to a duplicate-free array.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, uniq } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([1, 2, 2, 3, 3, 3], uniq());
|
|
19
|
+
* // => [1, 2, 3]
|
|
20
|
+
*/
|
|
21
|
+
function uniq() {
|
|
22
|
+
function uniqEager(array) {
|
|
23
|
+
return require_uniq.uniq(array);
|
|
24
|
+
}
|
|
25
|
+
const uniqLazy = (emit) => {
|
|
26
|
+
const seen = /* @__PURE__ */ new Set();
|
|
27
|
+
return (value) => {
|
|
28
|
+
if (seen.has(value)) return true;
|
|
29
|
+
seen.add(value);
|
|
30
|
+
return emit(value);
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
return require_lazy.combineEagerAndLazyFunctions(uniqEager, uniqLazy);
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
exports.uniq = uniq;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { uniq as uniq$1 } from "../../array/uniq.mjs";
|
|
2
|
+
import { combineEagerAndLazyFunctions } from "../_internal/lazy.mjs";
|
|
3
|
+
//#region src/fp/array/uniq.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that removes duplicate values from an array, preserving
|
|
6
|
+
* the order of first occurrence. Equality follows SameValueZero, matching
|
|
7
|
+
* Set semantics. Use it with {@link pipe}.
|
|
8
|
+
*
|
|
9
|
+
* The returned function is lazy-capable inside {@link pipe}. It keeps a Set of
|
|
10
|
+
* values already emitted during each pipeline run.
|
|
11
|
+
*
|
|
12
|
+
* @template T - The type of elements in the array.
|
|
13
|
+
* @returns A function that maps a readonly array to a duplicate-free array.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, uniq } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([1, 2, 2, 3, 3, 3], uniq());
|
|
19
|
+
* // => [1, 2, 3]
|
|
20
|
+
*/
|
|
21
|
+
function uniq() {
|
|
22
|
+
function uniqEager(array) {
|
|
23
|
+
return uniq$1(array);
|
|
24
|
+
}
|
|
25
|
+
const uniqLazy = (emit) => {
|
|
26
|
+
const seen = /* @__PURE__ */ new Set();
|
|
27
|
+
return (value) => {
|
|
28
|
+
if (seen.has(value)) return true;
|
|
29
|
+
seen.add(value);
|
|
30
|
+
return emit(value);
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
return combineEagerAndLazyFunctions(uniqEager, uniqLazy);
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { uniq };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/uniqBy.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that removes duplicate values by mapped identity.
|
|
4
|
+
*
|
|
5
|
+
* The first value for each mapped key is preserved. The returned function is
|
|
6
|
+
* lazy-capable inside {@link pipe}.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the array.
|
|
9
|
+
* @template U - The type of comparison keys returned by the mapper.
|
|
10
|
+
* @param mapper - Called with each value and index to produce a comparison key.
|
|
11
|
+
* @returns A function that maps the piped array to unique values.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, uniqBy } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqBy(item => item.id));
|
|
17
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
18
|
+
*/
|
|
19
|
+
declare function uniqBy<T, U>(mapper: (item: T, index: number) => U): (array: readonly T[]) => T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { uniqBy };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/uniqBy.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that removes duplicate values by mapped identity.
|
|
4
|
+
*
|
|
5
|
+
* The first value for each mapped key is preserved. The returned function is
|
|
6
|
+
* lazy-capable inside {@link pipe}.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the array.
|
|
9
|
+
* @template U - The type of comparison keys returned by the mapper.
|
|
10
|
+
* @param mapper - Called with each value and index to produce a comparison key.
|
|
11
|
+
* @returns A function that maps the piped array to unique values.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, uniqBy } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqBy(item => item.id));
|
|
17
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
18
|
+
*/
|
|
19
|
+
declare function uniqBy<T, U>(mapper: (item: T, index: number) => U): (array: readonly T[]) => T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { uniqBy };
|