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,24 @@
|
|
|
1
|
+
const require_unzip = require("../../array/unzip.js");
|
|
2
|
+
//#region src/fp/array/unzip.ts
|
|
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
|
+
function unzip() {
|
|
19
|
+
return function(zipped) {
|
|
20
|
+
return require_unzip.unzip(zipped);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
exports.unzip = unzip;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { unzip as unzip$1 } from "../../array/unzip.mjs";
|
|
2
|
+
//#region src/fp/array/unzip.ts
|
|
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
|
+
function unzip() {
|
|
19
|
+
return function(zipped) {
|
|
20
|
+
return unzip$1(zipped);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { unzip };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/unzipWith.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that unzips grouped arrays and combines values by position.
|
|
4
|
+
*
|
|
5
|
+
* Values at the same position are passed to iteratee, and its return values form the
|
|
6
|
+
* resulting array.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The element type inside each grouped array.
|
|
9
|
+
* @template R - The value returned by the iteratee.
|
|
10
|
+
* @param iteratee - Called with the values at each position.
|
|
11
|
+
* @returns A function that maps grouped arrays to combined values.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, unzipWith } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([[1, 10], [2, 20]], unzipWith((a, b) => a + b));
|
|
17
|
+
* // => [3, 30]
|
|
18
|
+
*/
|
|
19
|
+
declare function unzipWith<T, R>(iteratee: (...args: T[]) => R): (target: readonly T[][]) => R[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { unzipWith };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/unzipWith.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that unzips grouped arrays and combines values by position.
|
|
4
|
+
*
|
|
5
|
+
* Values at the same position are passed to iteratee, and its return values form the
|
|
6
|
+
* resulting array.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The element type inside each grouped array.
|
|
9
|
+
* @template R - The value returned by the iteratee.
|
|
10
|
+
* @param iteratee - Called with the values at each position.
|
|
11
|
+
* @returns A function that maps grouped arrays to combined values.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, unzipWith } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([[1, 10], [2, 20]], unzipWith((a, b) => a + b));
|
|
17
|
+
* // => [3, 30]
|
|
18
|
+
*/
|
|
19
|
+
declare function unzipWith<T, R>(iteratee: (...args: T[]) => R): (target: readonly T[][]) => R[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { unzipWith };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const require_unzipWith = require("../../array/unzipWith.js");
|
|
2
|
+
//#region src/fp/array/unzipWith.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that unzips grouped arrays and combines values by position.
|
|
5
|
+
*
|
|
6
|
+
* Values at the same position are passed to iteratee, and its return values form the
|
|
7
|
+
* resulting array.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The element type inside each grouped array.
|
|
10
|
+
* @template R - The value returned by the iteratee.
|
|
11
|
+
* @param iteratee - Called with the values at each position.
|
|
12
|
+
* @returns A function that maps grouped arrays to combined values.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, unzipWith } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([[1, 10], [2, 20]], unzipWith((a, b) => a + b));
|
|
18
|
+
* // => [3, 30]
|
|
19
|
+
*/
|
|
20
|
+
function unzipWith(iteratee) {
|
|
21
|
+
return function(target) {
|
|
22
|
+
return require_unzipWith.unzipWith(target, iteratee);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
exports.unzipWith = unzipWith;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { unzipWith as unzipWith$1 } from "../../array/unzipWith.mjs";
|
|
2
|
+
//#region src/fp/array/unzipWith.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that unzips grouped arrays and combines values by position.
|
|
5
|
+
*
|
|
6
|
+
* Values at the same position are passed to iteratee, and its return values form the
|
|
7
|
+
* resulting array.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The element type inside each grouped array.
|
|
10
|
+
* @template R - The value returned by the iteratee.
|
|
11
|
+
* @param iteratee - Called with the values at each position.
|
|
12
|
+
* @returns A function that maps grouped arrays to combined values.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, unzipWith } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([[1, 10], [2, 20]], unzipWith((a, b) => a + b));
|
|
18
|
+
* // => [3, 30]
|
|
19
|
+
*/
|
|
20
|
+
function unzipWith(iteratee) {
|
|
21
|
+
return function(target) {
|
|
22
|
+
return unzipWith$1(target, iteratee);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { unzipWith };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { WindowedOptions } from "../../array/windowed.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/fp/array/windowed.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that returns sliding windows from an array.
|
|
6
|
+
*
|
|
7
|
+
* By default only full windows are returned. Pass partialWindows: true to include shorter
|
|
8
|
+
* trailing windows. The full-window form is lazy-capable inside {@link pipe}.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @param size - The size of each window. Must be a positive integer.
|
|
12
|
+
* @param step - The step between window starts. Defaults to 1.
|
|
13
|
+
* @param options - Window options.
|
|
14
|
+
* @returns A function that maps a readonly array to sliding windows.
|
|
15
|
+
* @throws {Error} When size or step is not a positive integer.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* import { pipe, windowed } from 'es-toolkit/fp';
|
|
19
|
+
*
|
|
20
|
+
* pipe([1, 2, 3, 4], windowed(2));
|
|
21
|
+
* // => [[1, 2], [2, 3], [3, 4]]
|
|
22
|
+
*/
|
|
23
|
+
declare function windowed<T>(size: number, step?: number, options?: WindowedOptions): (array: readonly T[]) => T[][];
|
|
24
|
+
//#endregion
|
|
25
|
+
export { windowed };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { WindowedOptions } from "../../array/windowed.js";
|
|
2
|
+
|
|
3
|
+
//#region src/fp/array/windowed.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that returns sliding windows from an array.
|
|
6
|
+
*
|
|
7
|
+
* By default only full windows are returned. Pass partialWindows: true to include shorter
|
|
8
|
+
* trailing windows. The full-window form is lazy-capable inside {@link pipe}.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @param size - The size of each window. Must be a positive integer.
|
|
12
|
+
* @param step - The step between window starts. Defaults to 1.
|
|
13
|
+
* @param options - Window options.
|
|
14
|
+
* @returns A function that maps a readonly array to sliding windows.
|
|
15
|
+
* @throws {Error} When size or step is not a positive integer.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* import { pipe, windowed } from 'es-toolkit/fp';
|
|
19
|
+
*
|
|
20
|
+
* pipe([1, 2, 3, 4], windowed(2));
|
|
21
|
+
* // => [[1, 2], [2, 3], [3, 4]]
|
|
22
|
+
*/
|
|
23
|
+
declare function windowed<T>(size: number, step?: number, options?: WindowedOptions): (array: readonly T[]) => T[][];
|
|
24
|
+
//#endregion
|
|
25
|
+
export { windowed };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const require_windowed = require("../../array/windowed.js");
|
|
2
|
+
const require_lazy = require("../_internal/lazy.js");
|
|
3
|
+
//#region src/fp/array/windowed.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that returns sliding windows from an array.
|
|
6
|
+
*
|
|
7
|
+
* By default only full windows are returned. Pass partialWindows: true to include shorter
|
|
8
|
+
* trailing windows. The full-window form is lazy-capable inside {@link pipe}.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @param size - The size of each window. Must be a positive integer.
|
|
12
|
+
* @param step - The step between window starts. Defaults to 1.
|
|
13
|
+
* @param options - Window options.
|
|
14
|
+
* @returns A function that maps a readonly array to sliding windows.
|
|
15
|
+
* @throws {Error} When size or step is not a positive integer.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* import { pipe, windowed } from 'es-toolkit/fp';
|
|
19
|
+
*
|
|
20
|
+
* pipe([1, 2, 3, 4], windowed(2));
|
|
21
|
+
* // => [[1, 2], [2, 3], [3, 4]]
|
|
22
|
+
*/
|
|
23
|
+
function windowed(size, step, options) {
|
|
24
|
+
const resolvedStep = step ?? 1;
|
|
25
|
+
const partialWindows = options?.partialWindows ?? false;
|
|
26
|
+
function windowedEager(array) {
|
|
27
|
+
return require_windowed.windowed(array, size, step, options);
|
|
28
|
+
}
|
|
29
|
+
if (partialWindows || !Number.isInteger(size) || size <= 0 || !Number.isInteger(resolvedStep) || resolvedStep <= 0) return windowedEager;
|
|
30
|
+
const windowedLazy = (emit) => {
|
|
31
|
+
const buffer = [];
|
|
32
|
+
let index = 0;
|
|
33
|
+
return (value) => {
|
|
34
|
+
buffer.push(value);
|
|
35
|
+
if (buffer.length > size) buffer.shift();
|
|
36
|
+
if (buffer.length === size) {
|
|
37
|
+
if ((index - size + 1) % resolvedStep === 0) {
|
|
38
|
+
const shouldContinue = emit(buffer.slice());
|
|
39
|
+
index++;
|
|
40
|
+
return shouldContinue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
index++;
|
|
44
|
+
return true;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
return require_lazy.combineEagerAndLazyFunctions(windowedEager, windowedLazy);
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
exports.windowed = windowed;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { windowed as windowed$1 } from "../../array/windowed.mjs";
|
|
2
|
+
import { combineEagerAndLazyFunctions } from "../_internal/lazy.mjs";
|
|
3
|
+
//#region src/fp/array/windowed.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that returns sliding windows from an array.
|
|
6
|
+
*
|
|
7
|
+
* By default only full windows are returned. Pass partialWindows: true to include shorter
|
|
8
|
+
* trailing windows. The full-window form is lazy-capable inside {@link pipe}.
|
|
9
|
+
*
|
|
10
|
+
* @template T - The type of elements in the array.
|
|
11
|
+
* @param size - The size of each window. Must be a positive integer.
|
|
12
|
+
* @param step - The step between window starts. Defaults to 1.
|
|
13
|
+
* @param options - Window options.
|
|
14
|
+
* @returns A function that maps a readonly array to sliding windows.
|
|
15
|
+
* @throws {Error} When size or step is not a positive integer.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* import { pipe, windowed } from 'es-toolkit/fp';
|
|
19
|
+
*
|
|
20
|
+
* pipe([1, 2, 3, 4], windowed(2));
|
|
21
|
+
* // => [[1, 2], [2, 3], [3, 4]]
|
|
22
|
+
*/
|
|
23
|
+
function windowed(size, step, options) {
|
|
24
|
+
const resolvedStep = step ?? 1;
|
|
25
|
+
const partialWindows = options?.partialWindows ?? false;
|
|
26
|
+
function windowedEager(array) {
|
|
27
|
+
return windowed$1(array, size, step, options);
|
|
28
|
+
}
|
|
29
|
+
if (partialWindows || !Number.isInteger(size) || size <= 0 || !Number.isInteger(resolvedStep) || resolvedStep <= 0) return windowedEager;
|
|
30
|
+
const windowedLazy = (emit) => {
|
|
31
|
+
const buffer = [];
|
|
32
|
+
let index = 0;
|
|
33
|
+
return (value) => {
|
|
34
|
+
buffer.push(value);
|
|
35
|
+
if (buffer.length > size) buffer.shift();
|
|
36
|
+
if (buffer.length === size) {
|
|
37
|
+
if ((index - size + 1) % resolvedStep === 0) {
|
|
38
|
+
const shouldContinue = emit(buffer.slice());
|
|
39
|
+
index++;
|
|
40
|
+
return shouldContinue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
index++;
|
|
44
|
+
return true;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
return combineEagerAndLazyFunctions(windowedEager, windowedLazy);
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { windowed };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/fp/array/without.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that removes the configured values from an array.
|
|
4
|
+
*
|
|
5
|
+
* The returned function is lazy-capable inside {@link pipe}.
|
|
6
|
+
*
|
|
7
|
+
* @template T - The type of elements in the array.
|
|
8
|
+
* @param values - Values to remove from the piped array.
|
|
9
|
+
* @returns A function that maps the piped array to the remaining values.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* import { pipe, without } from 'es-toolkit/fp';
|
|
13
|
+
*
|
|
14
|
+
* pipe([1, 2, 3, 2], without(2));
|
|
15
|
+
* // => [1, 3]
|
|
16
|
+
*/
|
|
17
|
+
declare function without<T>(...values: T[]): (array: readonly T[]) => T[];
|
|
18
|
+
//#endregion
|
|
19
|
+
export { without };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/fp/array/without.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that removes the configured values from an array.
|
|
4
|
+
*
|
|
5
|
+
* The returned function is lazy-capable inside {@link pipe}.
|
|
6
|
+
*
|
|
7
|
+
* @template T - The type of elements in the array.
|
|
8
|
+
* @param values - Values to remove from the piped array.
|
|
9
|
+
* @returns A function that maps the piped array to the remaining values.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* import { pipe, without } from 'es-toolkit/fp';
|
|
13
|
+
*
|
|
14
|
+
* pipe([1, 2, 3, 2], without(2));
|
|
15
|
+
* // => [1, 3]
|
|
16
|
+
*/
|
|
17
|
+
declare function without<T>(...values: T[]): (array: readonly T[]) => T[];
|
|
18
|
+
//#endregion
|
|
19
|
+
export { without };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const require_without = require("../../array/without.js");
|
|
2
|
+
const require_lazy = require("../_internal/lazy.js");
|
|
3
|
+
//#region src/fp/array/without.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that removes the configured values from an array.
|
|
6
|
+
*
|
|
7
|
+
* The returned function is lazy-capable inside {@link pipe}.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the array.
|
|
10
|
+
* @param values - Values to remove from the piped array.
|
|
11
|
+
* @returns A function that maps the piped array to the remaining values.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, without } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([1, 2, 3, 2], without(2));
|
|
17
|
+
* // => [1, 3]
|
|
18
|
+
*/
|
|
19
|
+
function without(...values) {
|
|
20
|
+
const valueSet = new Set(values);
|
|
21
|
+
function withoutEager(array) {
|
|
22
|
+
return require_without.without(array, ...values);
|
|
23
|
+
}
|
|
24
|
+
const withoutLazy = require_lazy.createLazyFunction((value, _index, emit) => {
|
|
25
|
+
if (!valueSet.has(value)) emit(value);
|
|
26
|
+
});
|
|
27
|
+
return require_lazy.combineEagerAndLazyFunctions(withoutEager, withoutLazy);
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.without = without;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { without as without$1 } from "../../array/without.mjs";
|
|
2
|
+
import { combineEagerAndLazyFunctions, createLazyFunction } from "../_internal/lazy.mjs";
|
|
3
|
+
//#region src/fp/array/without.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that removes the configured values from an array.
|
|
6
|
+
*
|
|
7
|
+
* The returned function is lazy-capable inside {@link pipe}.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the array.
|
|
10
|
+
* @param values - Values to remove from the piped array.
|
|
11
|
+
* @returns A function that maps the piped array to the remaining values.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, without } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([1, 2, 3, 2], without(2));
|
|
17
|
+
* // => [1, 3]
|
|
18
|
+
*/
|
|
19
|
+
function without(...values) {
|
|
20
|
+
const valueSet = new Set(values);
|
|
21
|
+
function withoutEager(array) {
|
|
22
|
+
return without$1(array, ...values);
|
|
23
|
+
}
|
|
24
|
+
return combineEagerAndLazyFunctions(withoutEager, createLazyFunction((value, _index, emit) => {
|
|
25
|
+
if (!valueSet.has(value)) emit(value);
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { without };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/fp/array/xor.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns the symmetric difference with secondArray.
|
|
4
|
+
*
|
|
5
|
+
* The result contains values that appear in exactly one of the arrays, matching the main
|
|
6
|
+
* {@link xor} behavior.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @param secondArray - Values to compare with the piped array.
|
|
10
|
+
* @returns A function that maps a readonly array to its symmetric difference.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { pipe, xor } from 'es-toolkit/fp';
|
|
14
|
+
*
|
|
15
|
+
* pipe([1, 2], xor([2, 3]));
|
|
16
|
+
* // => [1, 3]
|
|
17
|
+
*/
|
|
18
|
+
declare function xor<T>(secondArray: readonly T[]): (array: readonly T[]) => T[];
|
|
19
|
+
//#endregion
|
|
20
|
+
export { xor };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/fp/array/xor.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns the symmetric difference with secondArray.
|
|
4
|
+
*
|
|
5
|
+
* The result contains values that appear in exactly one of the arrays, matching the main
|
|
6
|
+
* {@link xor} behavior.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @param secondArray - Values to compare with the piped array.
|
|
10
|
+
* @returns A function that maps a readonly array to its symmetric difference.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* import { pipe, xor } from 'es-toolkit/fp';
|
|
14
|
+
*
|
|
15
|
+
* pipe([1, 2], xor([2, 3]));
|
|
16
|
+
* // => [1, 3]
|
|
17
|
+
*/
|
|
18
|
+
declare function xor<T>(secondArray: readonly T[]): (array: readonly T[]) => T[];
|
|
19
|
+
//#endregion
|
|
20
|
+
export { xor };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const require_xor = require("../../array/xor.js");
|
|
2
|
+
//#region src/fp/array/xor.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns the symmetric difference with secondArray.
|
|
5
|
+
*
|
|
6
|
+
* The result contains values that appear in exactly one of the arrays, matching the main
|
|
7
|
+
* {@link xor} behavior.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the arrays.
|
|
10
|
+
* @param secondArray - Values to compare with the piped array.
|
|
11
|
+
* @returns A function that maps a readonly array to its symmetric difference.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, xor } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([1, 2], xor([2, 3]));
|
|
17
|
+
* // => [1, 3]
|
|
18
|
+
*/
|
|
19
|
+
function xor(secondArray) {
|
|
20
|
+
return function(array) {
|
|
21
|
+
return require_xor.xor(array, secondArray);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
exports.xor = xor;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { xor as xor$1 } from "../../array/xor.mjs";
|
|
2
|
+
//#region src/fp/array/xor.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns the symmetric difference with secondArray.
|
|
5
|
+
*
|
|
6
|
+
* The result contains values that appear in exactly one of the arrays, matching the main
|
|
7
|
+
* {@link xor} behavior.
|
|
8
|
+
*
|
|
9
|
+
* @template T - The type of elements in the arrays.
|
|
10
|
+
* @param secondArray - Values to compare with the piped array.
|
|
11
|
+
* @returns A function that maps a readonly array to its symmetric difference.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, xor } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([1, 2], xor([2, 3]));
|
|
17
|
+
* // => [1, 3]
|
|
18
|
+
*/
|
|
19
|
+
function xor(secondArray) {
|
|
20
|
+
return function(array) {
|
|
21
|
+
return xor$1(array, secondArray);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { xor };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/fp/array/xorBy.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns the symmetric difference by mapped identity.
|
|
4
|
+
*
|
|
5
|
+
* The mapper is used to decide which values appear in exactly one array, matching the main
|
|
6
|
+
* {@link xorBy} 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 compare with 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 symmetric difference.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, xorBy } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([{ id: 1 }, { id: 2 }], xorBy([{ id: 2 }, { id: 3 }], item => item.id));
|
|
18
|
+
* // => [{ id: 1 }, { id: 3 }]
|
|
19
|
+
*/
|
|
20
|
+
declare function xorBy<T, U>(secondArray: readonly T[], mapper: (item: T) => U): (array: readonly T[]) => T[];
|
|
21
|
+
//#endregion
|
|
22
|
+
export { xorBy };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/fp/array/xorBy.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns the symmetric difference by mapped identity.
|
|
4
|
+
*
|
|
5
|
+
* The mapper is used to decide which values appear in exactly one array, matching the main
|
|
6
|
+
* {@link xorBy} 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 compare with 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 symmetric difference.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { pipe, xorBy } from 'es-toolkit/fp';
|
|
16
|
+
*
|
|
17
|
+
* pipe([{ id: 1 }, { id: 2 }], xorBy([{ id: 2 }, { id: 3 }], item => item.id));
|
|
18
|
+
* // => [{ id: 1 }, { id: 3 }]
|
|
19
|
+
*/
|
|
20
|
+
declare function xorBy<T, U>(secondArray: readonly T[], mapper: (item: T) => U): (array: readonly T[]) => T[];
|
|
21
|
+
//#endregion
|
|
22
|
+
export { xorBy };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const require_xorBy = require("../../array/xorBy.js");
|
|
2
|
+
//#region src/fp/array/xorBy.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns the symmetric difference by mapped identity.
|
|
5
|
+
*
|
|
6
|
+
* The mapper is used to decide which values appear in exactly one array, matching the main
|
|
7
|
+
* {@link xorBy} 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 compare with 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 symmetric difference.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, xorBy } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([{ id: 1 }, { id: 2 }], xorBy([{ id: 2 }, { id: 3 }], item => item.id));
|
|
19
|
+
* // => [{ id: 1 }, { id: 3 }]
|
|
20
|
+
*/
|
|
21
|
+
function xorBy(secondArray, mapper) {
|
|
22
|
+
return function(array) {
|
|
23
|
+
return require_xorBy.xorBy(array, secondArray, mapper);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
exports.xorBy = xorBy;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { xorBy as xorBy$1 } from "../../array/xorBy.mjs";
|
|
2
|
+
//#region src/fp/array/xorBy.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function that returns the symmetric difference by mapped identity.
|
|
5
|
+
*
|
|
6
|
+
* The mapper is used to decide which values appear in exactly one array, matching the main
|
|
7
|
+
* {@link xorBy} 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 compare with 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 symmetric difference.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { pipe, xorBy } from 'es-toolkit/fp';
|
|
17
|
+
*
|
|
18
|
+
* pipe([{ id: 1 }, { id: 2 }], xorBy([{ id: 2 }, { id: 3 }], item => item.id));
|
|
19
|
+
* // => [{ id: 1 }, { id: 3 }]
|
|
20
|
+
*/
|
|
21
|
+
function xorBy(secondArray, mapper) {
|
|
22
|
+
return function(array) {
|
|
23
|
+
return xorBy$1(array, secondArray, mapper);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { xorBy };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/xorWith.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns the symmetric difference using a custom equality function.
|
|
4
|
+
*
|
|
5
|
+
* The equality function decides whether two values represent the same item, matching the
|
|
6
|
+
* main {@link xorWith} behavior.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @param secondArray - Values to compare with the piped array.
|
|
10
|
+
* @param areItemsEqual - Returns true when two values are equal.
|
|
11
|
+
* @returns A function that maps a readonly array to its symmetric difference.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, xorWith } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([{ id: 1 }, { id: 2 }], xorWith([{ id: 2 }, { id: 3 }], (a, b) => a.id === b.id));
|
|
17
|
+
* // => [{ id: 1 }, { id: 3 }]
|
|
18
|
+
*/
|
|
19
|
+
declare function xorWith<T>(secondArray: readonly T[], areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { xorWith };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/fp/array/xorWith.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that returns the symmetric difference using a custom equality function.
|
|
4
|
+
*
|
|
5
|
+
* The equality function decides whether two values represent the same item, matching the
|
|
6
|
+
* main {@link xorWith} behavior.
|
|
7
|
+
*
|
|
8
|
+
* @template T - The type of elements in the arrays.
|
|
9
|
+
* @param secondArray - Values to compare with the piped array.
|
|
10
|
+
* @param areItemsEqual - Returns true when two values are equal.
|
|
11
|
+
* @returns A function that maps a readonly array to its symmetric difference.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { pipe, xorWith } from 'es-toolkit/fp';
|
|
15
|
+
*
|
|
16
|
+
* pipe([{ id: 1 }, { id: 2 }], xorWith([{ id: 2 }, { id: 3 }], (a, b) => a.id === b.id));
|
|
17
|
+
* // => [{ id: 1 }, { id: 3 }]
|
|
18
|
+
*/
|
|
19
|
+
declare function xorWith<T>(secondArray: readonly T[], areItemsEqual: (item: T, other: T) => boolean): (array: readonly T[]) => T[];
|
|
20
|
+
//#endregion
|
|
21
|
+
export { xorWith };
|