es-toolkit 1.48.1 → 1.49.0
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/CHANGELOG.md +23 -0
- 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/chunk.js +4 -2
- package/dist/compat/array/chunk.mjs +4 -2
- package/dist/compat/array/differenceBy.js +5 -5
- package/dist/compat/array/differenceBy.mjs +5 -5
- package/dist/compat/array/drop.d.mts +2 -3
- package/dist/compat/array/drop.d.ts +2 -3
- package/dist/compat/array/drop.js +4 -4
- package/dist/compat/array/drop.mjs +4 -4
- package/dist/compat/array/dropRight.js +1 -1
- package/dist/compat/array/dropRight.mjs +1 -1
- package/dist/compat/array/dropRightWhile.d.mts +1 -1
- package/dist/compat/array/dropRightWhile.d.ts +1 -1
- package/dist/compat/array/dropRightWhile.js +5 -4
- package/dist/compat/array/dropRightWhile.mjs +5 -4
- package/dist/compat/array/dropWhile.d.mts +2 -2
- package/dist/compat/array/dropWhile.d.ts +2 -2
- package/dist/compat/array/dropWhile.js +4 -4
- package/dist/compat/array/dropWhile.mjs +4 -4
- 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/random.js +3 -1
- package/dist/compat/math/random.mjs +3 -1
- package/dist/compat/math/subtract.js +1 -1
- package/dist/compat/math/subtract.mjs +1 -1
- package/dist/compat/object/get.js +1 -1
- package/dist/compat/object/get.mjs +1 -1
- package/dist/compat/object/omitBy.js +1 -1
- package/dist/compat/object/omitBy.mjs +1 -1
- package/dist/compat/object/pick.js +1 -1
- package/dist/compat/object/pick.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/dist/string/trimStart.js +1 -0
- package/dist/string/trimStart.mjs +1 -0
- package/fp.d.ts +1 -0
- package/fp.js +1 -0
- package/package.json +22 -1
|
@@ -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 };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const require_uniqBy = require("../../array/uniqBy.js");
|
|
2
|
+
const require_lazy = require("../_internal/lazy.js");
|
|
3
|
+
//#region src/fp/array/uniqBy.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that removes duplicate values by mapped identity.
|
|
6
|
+
*
|
|
7
|
+
* The first value for each mapped key is preserved. The returned function is
|
|
8
|
+
* lazy-capable inside {@link pipe}.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @template U - The type of comparison keys returned by the mapper.
|
|
12
|
+
* @param mapper - Called with each value and index to produce a comparison key.
|
|
13
|
+
* @returns A function that maps the piped array to unique values.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, uniqBy } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqBy(item => item.id));
|
|
19
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
20
|
+
*/
|
|
21
|
+
function uniqBy(mapper) {
|
|
22
|
+
function uniqByEager(array) {
|
|
23
|
+
return require_uniqBy.uniqBy(array, (item, index) => mapper(item, index));
|
|
24
|
+
}
|
|
25
|
+
const uniqByLazy = (emit) => {
|
|
26
|
+
const seen = /* @__PURE__ */ new Set();
|
|
27
|
+
let index = 0;
|
|
28
|
+
return (value) => {
|
|
29
|
+
const key = mapper(value, index++);
|
|
30
|
+
if (seen.has(key)) return true;
|
|
31
|
+
seen.add(key);
|
|
32
|
+
return emit(value);
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
return require_lazy.combineEagerAndLazyFunctions(uniqByEager, uniqByLazy);
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
exports.uniqBy = uniqBy;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { uniqBy as uniqBy$1 } from "../../array/uniqBy.mjs";
|
|
2
|
+
import { combineEagerAndLazyFunctions } from "../_internal/lazy.mjs";
|
|
3
|
+
//#region src/fp/array/uniqBy.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that removes duplicate values by mapped identity.
|
|
6
|
+
*
|
|
7
|
+
* The first value for each mapped key is preserved. The returned function is
|
|
8
|
+
* lazy-capable inside {@link pipe}.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @template U - The type of comparison keys returned by the mapper.
|
|
12
|
+
* @param mapper - Called with each value and index to produce a comparison key.
|
|
13
|
+
* @returns A function that maps the piped array to unique values.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, uniqBy } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqBy(item => item.id));
|
|
19
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
20
|
+
*/
|
|
21
|
+
function uniqBy(mapper) {
|
|
22
|
+
function uniqByEager(array) {
|
|
23
|
+
return uniqBy$1(array, (item, index) => mapper(item, index));
|
|
24
|
+
}
|
|
25
|
+
const uniqByLazy = (emit) => {
|
|
26
|
+
const seen = /* @__PURE__ */ new Set();
|
|
27
|
+
let index = 0;
|
|
28
|
+
return (value) => {
|
|
29
|
+
const key = mapper(value, index++);
|
|
30
|
+
if (seen.has(key)) return true;
|
|
31
|
+
seen.add(key);
|
|
32
|
+
return emit(value);
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
return combineEagerAndLazyFunctions(uniqByEager, uniqByLazy);
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { uniqBy };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/fp/array/uniqWith.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that removes duplicate values using a custom equality function.
|
|
4
|
+
*
|
|
5
|
+
* The first value in each equality group is preserved. The returned function is
|
|
6
|
+
* lazy-capable inside {@link pipe}.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the array.
|
|
9
|
+
* @param areItemsEqual - Returns true when two values should be treated as equal.
|
|
10
|
+
* @returns A function that maps the piped array to unique values.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { pipe, uniqWith } from 'es-toolkit/fp';
|
|
14
|
+
*
|
|
15
|
+
* pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqWith((a, b) => a.id === b.id));
|
|
16
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
17
|
+
*/
|
|
18
|
+
declare function uniqWith<T>(areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
|
|
19
|
+
//#endregion
|
|
20
|
+
export { uniqWith };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/fp/array/uniqWith.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that removes duplicate values using a custom equality function.
|
|
4
|
+
*
|
|
5
|
+
* The first value in each equality group is preserved. The returned function is
|
|
6
|
+
* lazy-capable inside {@link pipe}.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the array.
|
|
9
|
+
* @param areItemsEqual - Returns true when two values should be treated as equal.
|
|
10
|
+
* @returns A function that maps the piped array to unique values.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { pipe, uniqWith } from 'es-toolkit/fp';
|
|
14
|
+
*
|
|
15
|
+
* pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqWith((a, b) => a.id === b.id));
|
|
16
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
17
|
+
*/
|
|
18
|
+
declare function uniqWith<T>(areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
|
|
19
|
+
//#endregion
|
|
20
|
+
export { uniqWith };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const require_uniqWith = require("../../array/uniqWith.js");
|
|
2
|
+
const require_lazy = require("../_internal/lazy.js");
|
|
3
|
+
//#region src/fp/array/uniqWith.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that removes duplicate values using a custom equality function.
|
|
6
|
+
*
|
|
7
|
+
* The first value in each equality group is preserved. The returned function is
|
|
8
|
+
* lazy-capable inside {@link pipe}.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @param areItemsEqual - Returns true when two values should be treated as equal.
|
|
12
|
+
* @returns A function that maps the piped array to unique values.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, uniqWith } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqWith((a, b) => a.id === b.id));
|
|
18
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
19
|
+
*/
|
|
20
|
+
function uniqWith(areItemsEqual) {
|
|
21
|
+
function uniqWithEager(array) {
|
|
22
|
+
return require_uniqWith.uniqWith(array, areItemsEqual);
|
|
23
|
+
}
|
|
24
|
+
const uniqWithLazy = (emit) => {
|
|
25
|
+
const seen = [];
|
|
26
|
+
return (value) => {
|
|
27
|
+
if (seen.some((item) => areItemsEqual(item, value))) return true;
|
|
28
|
+
seen.push(value);
|
|
29
|
+
return emit(value);
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
return require_lazy.combineEagerAndLazyFunctions(uniqWithEager, uniqWithLazy);
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
exports.uniqWith = uniqWith;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { uniqWith as uniqWith$1 } from "../../array/uniqWith.mjs";
|
|
2
|
+
import { combineEagerAndLazyFunctions } from "../_internal/lazy.mjs";
|
|
3
|
+
//#region src/fp/array/uniqWith.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that removes duplicate values using a custom equality function.
|
|
6
|
+
*
|
|
7
|
+
* The first value in each equality group is preserved. The returned function is
|
|
8
|
+
* lazy-capable inside {@link pipe}.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @param areItemsEqual - Returns true when two values should be treated as equal.
|
|
12
|
+
* @returns A function that maps the piped array to unique values.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, uniqWith } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([{ id: 1 }, { id: 1 }, { id: 2 }], uniqWith((a, b) => a.id === b.id));
|
|
18
|
+
* // => [{ id: 1 }, { id: 2 }]
|
|
19
|
+
*/
|
|
20
|
+
function uniqWith(areItemsEqual) {
|
|
21
|
+
function uniqWithEager(array) {
|
|
22
|
+
return uniqWith$1(array, areItemsEqual);
|
|
23
|
+
}
|
|
24
|
+
const uniqWithLazy = (emit) => {
|
|
25
|
+
const seen = [];
|
|
26
|
+
return (value) => {
|
|
27
|
+
if (seen.some((item) => areItemsEqual(item, value))) return true;
|
|
28
|
+
seen.push(value);
|
|
29
|
+
return emit(value);
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
return combineEagerAndLazyFunctions(uniqWithEager, uniqWithLazy);
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { uniqWith };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/fp/array/unzip.d.ts
|
|
2
|
+
type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that unzips grouped tuples into arrays by position.
|
|
5
|
+
*
|
|
6
|
+
* The returned function is the data-last form of the main {@link unzip} utility.
|
|
7
|
+
* Use it with {@link pipe}.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The tuple type inside the zipped array.
|
|
10
|
+
* @returns A function that maps zipped tuples to arrays grouped by tuple position.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { pipe, unzip } from 'es-toolkit/fp';
|
|
14
|
+
*
|
|
15
|
+
* pipe([[1, 'a'], [2, 'b']] as Array<[number, string]>, unzip());
|
|
16
|
+
* // => [[1, 2], ['a', 'b']]
|
|
17
|
+
*/
|
|
18
|
+
declare function unzip<T extends unknown[]>(): (zipped: ReadonlyArray<[...T]>) => Unzip<T>;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { unzip };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/fp/array/unzip.d.ts
|
|
2
|
+
type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that unzips grouped tuples into arrays by position.
|
|
5
|
+
*
|
|
6
|
+
* The returned function is the data-last form of the main {@link unzip} utility.
|
|
7
|
+
* Use it with {@link pipe}.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The tuple type inside the zipped array.
|
|
10
|
+
* @returns A function that maps zipped tuples to arrays grouped by tuple position.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { pipe, unzip } from 'es-toolkit/fp';
|
|
14
|
+
*
|
|
15
|
+
* pipe([[1, 'a'], [2, 'b']] as Array<[number, string]>, unzip());
|
|
16
|
+
* // => [[1, 2], ['a', 'b']]
|
|
17
|
+
*/
|
|
18
|
+
declare function unzip<T extends unknown[]>(): (zipped: ReadonlyArray<[...T]>) => Unzip<T>;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { unzip };
|