es-toolkit 1.50.0 → 1.51.0-dev.2069
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 +82 -0
- package/NOTICE +39 -0
- package/README.md +2 -2
- package/bigint.d.ts +1 -0
- package/bigint.js +1 -0
- package/dist/_internal/NonPlainObject.d.mts +8 -0
- package/dist/_internal/NonPlainObject.d.ts +8 -0
- package/dist/_internal/bigIntRangeLength.js +19 -0
- package/dist/_internal/bigIntRangeLength.mjs +19 -0
- package/dist/_internal/isMergeableValue.js +17 -0
- package/dist/_internal/isMergeableValue.mjs +17 -0
- package/dist/_internal/isUnsafeProperty.js +7 -4
- package/dist/_internal/isUnsafeProperty.mjs +7 -4
- package/dist/_internal/isUnsafeToWriteProperty.js +22 -0
- package/dist/_internal/isUnsafeToWriteProperty.mjs +22 -0
- package/dist/array/at.d.mts +1 -1
- package/dist/array/at.d.ts +1 -1
- package/dist/array/filterAsync.js +1 -1
- package/dist/array/filterAsync.mjs +1 -1
- package/dist/array/flatMapAsync.js +1 -1
- package/dist/array/flatMapAsync.mjs +1 -1
- package/dist/array/forEachAsync.js +1 -1
- package/dist/array/forEachAsync.mjs +1 -1
- package/dist/array/index.js +1 -1
- package/dist/array/index.mjs +1 -1
- package/dist/array/limitAsync.d.mts +4 -28
- package/dist/array/limitAsync.d.ts +4 -28
- package/dist/array/limitAsync.js +2 -39
- package/dist/array/limitAsync.mjs +3 -39
- package/dist/array/mapAsync.js +1 -1
- package/dist/array/mapAsync.mjs +1 -1
- package/dist/array/orderBy.d.mts +1 -1
- package/dist/array/orderBy.d.ts +1 -1
- package/dist/array/pullAt.d.mts +1 -1
- package/dist/array/pullAt.d.ts +1 -1
- package/dist/array/pullAt.js +1 -1
- package/dist/array/pullAt.mjs +1 -1
- package/dist/array/sortBy.d.mts +1 -1
- package/dist/array/sortBy.d.ts +1 -1
- package/dist/array/unzip.d.mts +3 -0
- package/dist/array/unzip.d.ts +3 -0
- package/dist/array/unzip.js +3 -0
- package/dist/array/unzip.mjs +3 -0
- package/dist/bigint/clamp.d.mts +37 -0
- package/dist/bigint/clamp.d.ts +37 -0
- package/dist/bigint/clamp.js +16 -0
- package/dist/bigint/clamp.mjs +16 -0
- package/dist/bigint/inRange.d.mts +37 -0
- package/dist/bigint/inRange.d.ts +37 -0
- package/dist/bigint/inRange.js +20 -0
- package/dist/bigint/inRange.mjs +20 -0
- package/dist/bigint/index.d.mts +14 -0
- package/dist/bigint/index.d.ts +14 -0
- package/dist/bigint/index.js +27 -0
- package/dist/bigint/index.mjs +14 -0
- package/dist/bigint/max.d.mts +21 -0
- package/dist/bigint/max.d.ts +21 -0
- package/dist/bigint/max.js +26 -0
- package/dist/bigint/max.mjs +26 -0
- package/dist/bigint/maxBy.d.mts +21 -0
- package/dist/bigint/maxBy.d.ts +21 -0
- package/dist/bigint/maxBy.js +34 -0
- package/dist/bigint/maxBy.mjs +34 -0
- package/dist/bigint/median.d.mts +22 -0
- package/dist/bigint/median.d.ts +22 -0
- package/dist/bigint/median.js +28 -0
- package/dist/bigint/median.mjs +28 -0
- package/dist/bigint/medianBy.d.mts +21 -0
- package/dist/bigint/medianBy.d.ts +21 -0
- package/dist/bigint/medianBy.js +24 -0
- package/dist/bigint/medianBy.mjs +24 -0
- package/dist/bigint/min.d.mts +18 -0
- package/dist/bigint/min.d.ts +18 -0
- package/dist/bigint/min.js +23 -0
- package/dist/bigint/min.mjs +23 -0
- package/dist/bigint/minBy.d.mts +21 -0
- package/dist/bigint/minBy.d.ts +21 -0
- package/dist/bigint/minBy.js +34 -0
- package/dist/bigint/minBy.mjs +34 -0
- package/dist/bigint/percentile.d.mts +23 -0
- package/dist/bigint/percentile.d.ts +23 -0
- package/dist/bigint/percentile.js +31 -0
- package/dist/bigint/percentile.mjs +31 -0
- package/dist/bigint/range.d.mts +45 -0
- package/dist/bigint/range.d.ts +45 -0
- package/dist/bigint/range.js +24 -0
- package/dist/bigint/range.mjs +24 -0
- package/dist/bigint/rangeRight.d.mts +43 -0
- package/dist/bigint/rangeRight.d.ts +43 -0
- package/dist/bigint/rangeRight.js +25 -0
- package/dist/bigint/rangeRight.mjs +25 -0
- package/dist/bigint/sum.d.mts +18 -0
- package/dist/bigint/sum.d.ts +18 -0
- package/dist/bigint/sum.js +22 -0
- package/dist/bigint/sum.mjs +22 -0
- package/dist/bigint/sumBy.d.mts +20 -0
- package/dist/bigint/sumBy.d.ts +20 -0
- package/dist/bigint/sumBy.js +24 -0
- package/dist/bigint/sumBy.mjs +24 -0
- package/dist/browser.global.js +6 -3
- package/dist/compat/_internal/normalizeZero.js +13 -0
- package/dist/compat/_internal/normalizeZero.mjs +13 -0
- package/dist/compat/_internal/toKey.js +1 -1
- package/dist/compat/_internal/toKey.mjs +1 -1
- package/dist/compat/_internal/unicodeSize.js +45 -0
- package/dist/compat/_internal/unicodeSize.mjs +45 -0
- package/dist/compat/array/chunk.js +1 -0
- package/dist/compat/array/chunk.mjs +1 -0
- package/dist/compat/array/difference.js +2 -1
- package/dist/compat/array/difference.mjs +2 -1
- package/dist/compat/array/differenceBy.js +3 -2
- package/dist/compat/array/differenceBy.mjs +3 -2
- package/dist/compat/array/drop.d.mts +1 -1
- package/dist/compat/array/drop.d.ts +1 -1
- package/dist/compat/array/dropRight.d.mts +2 -3
- package/dist/compat/array/dropRight.d.ts +2 -3
- package/dist/compat/array/dropRight.js +4 -4
- package/dist/compat/array/dropRight.mjs +4 -4
- package/dist/compat/array/every.js +9 -9
- package/dist/compat/array/every.mjs +9 -9
- package/dist/compat/array/fill.js +8 -2
- package/dist/compat/array/fill.mjs +8 -2
- package/dist/compat/array/find.js +14 -13
- package/dist/compat/array/find.mjs +14 -13
- package/dist/compat/array/findIndex.js +3 -19
- package/dist/compat/array/findIndex.mjs +3 -19
- package/dist/compat/array/findLast.js +3 -3
- package/dist/compat/array/findLast.mjs +3 -3
- package/dist/compat/array/flatMap.js +3 -8
- package/dist/compat/array/flatMap.mjs +3 -7
- package/dist/compat/array/flatMapDepth.js +1 -1
- package/dist/compat/array/flatMapDepth.mjs +1 -1
- package/dist/compat/array/forEach.js +1 -1
- package/dist/compat/array/forEach.mjs +1 -1
- package/dist/compat/array/includes.js +13 -13
- package/dist/compat/array/includes.mjs +13 -13
- package/dist/compat/array/indexOf.js +2 -1
- package/dist/compat/array/indexOf.mjs +2 -1
- package/dist/compat/array/intersection.js +3 -2
- package/dist/compat/array/intersection.mjs +3 -2
- package/dist/compat/array/intersectionBy.js +7 -11
- package/dist/compat/array/intersectionBy.mjs +7 -11
- package/dist/compat/array/intersectionWith.js +6 -18
- package/dist/compat/array/intersectionWith.mjs +6 -18
- package/dist/compat/array/last.js +1 -1
- package/dist/compat/array/last.mjs +1 -1
- package/dist/compat/array/lastIndexOf.js +3 -1
- package/dist/compat/array/lastIndexOf.mjs +3 -1
- package/dist/compat/array/map.js +3 -3
- package/dist/compat/array/map.mjs +3 -3
- package/dist/compat/array/orderBy.js +8 -6
- package/dist/compat/array/orderBy.mjs +8 -6
- package/dist/compat/array/partition.js +6 -6
- package/dist/compat/array/partition.mjs +6 -6
- package/dist/compat/array/pull.js +1 -1
- package/dist/compat/array/pull.mjs +1 -1
- package/dist/compat/array/pullAll.js +2 -0
- package/dist/compat/array/pullAll.mjs +2 -0
- package/dist/compat/array/remove.js +8 -4
- package/dist/compat/array/remove.mjs +8 -4
- package/dist/compat/array/reverse.js +1 -1
- package/dist/compat/array/reverse.mjs +1 -1
- package/dist/compat/array/sampleSize.js +2 -1
- package/dist/compat/array/sampleSize.mjs +2 -1
- package/dist/compat/array/size.js +2 -1
- package/dist/compat/array/size.mjs +2 -1
- package/dist/compat/array/some.js +2 -1
- package/dist/compat/array/some.mjs +2 -1
- package/dist/compat/array/takeRightWhile.js +2 -2
- package/dist/compat/array/takeRightWhile.mjs +2 -2
- package/dist/compat/array/takeWhile.js +2 -2
- package/dist/compat/array/takeWhile.mjs +2 -2
- package/dist/compat/array/unionBy.js +2 -1
- package/dist/compat/array/unionBy.mjs +2 -1
- package/dist/compat/array/uniqBy.js +4 -3
- package/dist/compat/array/uniqBy.mjs +4 -3
- package/dist/compat/array/unzip.d.mts +3 -0
- package/dist/compat/array/unzip.d.ts +3 -0
- package/dist/compat/array/unzip.js +3 -0
- package/dist/compat/array/unzip.mjs +3 -0
- package/dist/compat/array/unzipWith.js +1 -1
- package/dist/compat/array/unzipWith.mjs +1 -1
- package/dist/compat/array/zipObject.js +2 -0
- package/dist/compat/array/zipObject.mjs +2 -0
- package/dist/compat/compat.d.mts +3 -3
- package/dist/compat/compat.d.ts +3 -3
- package/dist/compat/compat.js +8 -4
- package/dist/compat/compat.mjs +8 -4
- package/dist/compat/function/curry.d.mts +1 -1
- package/dist/compat/function/curry.d.ts +1 -1
- package/dist/compat/function/debounce.js +1 -1
- package/dist/compat/function/debounce.mjs +1 -1
- package/dist/compat/function/flowRight.d.mts +1 -1
- package/dist/compat/function/flowRight.d.ts +1 -1
- package/dist/compat/function/partial.d.mts +1 -1
- package/dist/compat/function/partial.d.ts +1 -1
- package/dist/compat/function/rest.d.mts +1 -1
- package/dist/compat/function/rest.d.ts +1 -1
- package/dist/compat/function/rest.js +1 -1
- package/dist/compat/function/rest.mjs +1 -1
- package/dist/compat/index.d.mts +3 -3
- package/dist/compat/index.d.ts +3 -3
- package/dist/compat/index.js +6 -4
- package/dist/compat/index.mjs +5 -5
- package/dist/compat/math/maxBy.js +1 -1
- package/dist/compat/math/maxBy.mjs +1 -1
- package/dist/compat/math/meanBy.d.mts +4 -0
- package/dist/compat/math/meanBy.d.ts +4 -0
- package/dist/compat/math/meanBy.js +8 -3
- package/dist/compat/math/meanBy.mjs +8 -3
- package/dist/compat/math/minBy.js +1 -1
- package/dist/compat/math/minBy.mjs +1 -1
- package/dist/compat/object/cloneDeep.d.mts +5 -5
- package/dist/compat/object/cloneDeep.d.ts +5 -5
- package/dist/compat/object/cloneDeep.js +5 -5
- package/dist/compat/object/cloneDeep.mjs +5 -5
- package/dist/compat/object/cloneDeepWith.js +3 -1
- package/dist/compat/object/cloneDeepWith.mjs +3 -1
- package/dist/compat/object/cloneWith.d.mts +1 -1
- package/dist/compat/object/cloneWith.d.ts +1 -1
- package/dist/compat/object/cloneWith.js +1 -1
- package/dist/compat/object/cloneWith.mjs +1 -1
- package/dist/compat/object/entries.d.mts +1 -0
- package/dist/compat/object/entries.d.ts +1 -0
- package/dist/compat/object/entries.js +1 -0
- package/dist/compat/object/entries.mjs +1 -0
- package/dist/compat/object/entriesIn.d.mts +1 -0
- package/dist/compat/object/entriesIn.d.ts +1 -0
- package/dist/compat/object/entriesIn.js +1 -0
- package/dist/compat/object/entriesIn.mjs +1 -0
- package/dist/compat/object/omit.js +5 -5
- package/dist/compat/object/omit.mjs +5 -5
- package/dist/compat/object/transform.js +1 -1
- package/dist/compat/object/transform.mjs +1 -1
- package/dist/compat/object/updateWith.js +2 -2
- package/dist/compat/object/updateWith.mjs +2 -2
- package/dist/compat/predicate/isMatchWith.js +14 -5
- package/dist/compat/predicate/isMatchWith.mjs +14 -5
- package/dist/compat/string/template.js +2 -1
- package/dist/compat/string/template.mjs +2 -1
- package/dist/compat/string/words.js +17 -13
- package/dist/compat/string/words.mjs +17 -13
- package/dist/compat/util/iteratee.js +1 -3
- package/dist/compat/util/iteratee.mjs +1 -3
- package/dist/compat/util/toArray.d.mts +5 -5
- package/dist/compat/util/toArray.d.ts +5 -5
- package/dist/compat/util/toArray.js +9 -5
- package/dist/compat/util/toArray.mjs +9 -5
- package/dist/compat/util/toPath.js +11 -3
- package/dist/compat/util/toPath.mjs +11 -3
- package/dist/compat/util/toString.js +4 -1
- package/dist/compat/util/toString.mjs +4 -1
- package/dist/fp/array/at.d.mts +1 -1
- package/dist/fp/array/at.d.ts +1 -1
- package/dist/fp/array/orderBy.d.mts +1 -1
- package/dist/fp/array/orderBy.d.ts +1 -1
- package/dist/fp/array/sortBy.d.mts +1 -1
- package/dist/fp/array/sortBy.d.ts +1 -1
- package/dist/fp/array/unzip.d.mts +3 -0
- package/dist/fp/array/unzip.d.ts +3 -0
- package/dist/fp/array/unzip.js +3 -0
- package/dist/fp/array/unzip.mjs +3 -0
- package/dist/fp/iterator/chunk.d.mts +19 -0
- package/dist/fp/iterator/chunk.d.ts +19 -0
- package/dist/fp/iterator/chunk.js +24 -0
- package/dist/fp/iterator/chunk.mjs +24 -0
- package/dist/fp/iterator/count.d.mts +20 -0
- package/dist/fp/iterator/count.d.ts +20 -0
- package/dist/fp/iterator/count.js +25 -0
- package/dist/fp/iterator/count.mjs +25 -0
- package/dist/fp/iterator/drop.d.mts +20 -0
- package/dist/fp/iterator/drop.d.ts +20 -0
- package/dist/fp/iterator/drop.js +24 -0
- package/dist/fp/iterator/drop.mjs +24 -0
- package/dist/fp/iterator/dropWhile.d.mts +18 -0
- package/dist/fp/iterator/dropWhile.d.ts +18 -0
- package/dist/fp/iterator/dropWhile.js +23 -0
- package/dist/fp/iterator/dropWhile.mjs +23 -0
- package/dist/fp/iterator/every.d.mts +20 -0
- package/dist/fp/iterator/every.d.ts +20 -0
- package/dist/fp/iterator/every.js +24 -0
- package/dist/fp/iterator/every.mjs +24 -0
- package/dist/fp/iterator/filter.d.mts +37 -0
- package/dist/fp/iterator/filter.d.ts +37 -0
- package/dist/fp/iterator/filter.js +8 -0
- package/dist/fp/iterator/filter.mjs +8 -0
- package/dist/fp/iterator/find.d.mts +20 -0
- package/dist/fp/iterator/find.d.ts +20 -0
- package/dist/fp/iterator/find.js +24 -0
- package/dist/fp/iterator/find.mjs +24 -0
- package/dist/fp/iterator/flatMap.d.mts +20 -0
- package/dist/fp/iterator/flatMap.d.ts +20 -0
- package/dist/fp/iterator/flatMap.js +24 -0
- package/dist/fp/iterator/flatMap.mjs +24 -0
- package/dist/fp/iterator/forEach.d.mts +22 -0
- package/dist/fp/iterator/forEach.d.ts +22 -0
- package/dist/fp/iterator/forEach.js +26 -0
- package/dist/fp/iterator/forEach.mjs +26 -0
- package/dist/fp/iterator/head.d.mts +19 -0
- package/dist/fp/iterator/head.d.ts +19 -0
- package/dist/fp/iterator/head.js +24 -0
- package/dist/fp/iterator/head.mjs +24 -0
- package/dist/fp/iterator/index.d.mts +21 -0
- package/dist/fp/iterator/index.d.ts +21 -0
- package/dist/fp/iterator/index.js +41 -0
- package/dist/fp/iterator/index.mjs +21 -0
- package/dist/fp/iterator/map.d.mts +20 -0
- package/dist/fp/iterator/map.d.ts +20 -0
- package/dist/fp/iterator/map.js +24 -0
- package/dist/fp/iterator/map.mjs +24 -0
- package/dist/fp/iterator/partition.d.mts +22 -0
- package/dist/fp/iterator/partition.d.ts +22 -0
- package/dist/fp/iterator/partition.js +27 -0
- package/dist/fp/iterator/partition.mjs +27 -0
- package/dist/fp/iterator/reduce.d.mts +24 -0
- package/dist/fp/iterator/reduce.d.ts +24 -0
- package/dist/fp/iterator/reduce.js +28 -0
- package/dist/fp/iterator/reduce.mjs +28 -0
- package/dist/fp/iterator/scan.d.mts +21 -0
- package/dist/fp/iterator/scan.d.ts +21 -0
- package/dist/fp/iterator/scan.js +26 -0
- package/dist/fp/iterator/scan.mjs +26 -0
- package/dist/fp/iterator/some.d.mts +20 -0
- package/dist/fp/iterator/some.d.ts +20 -0
- package/dist/fp/iterator/some.js +24 -0
- package/dist/fp/iterator/some.mjs +24 -0
- package/dist/fp/iterator/take.d.mts +21 -0
- package/dist/fp/iterator/take.d.ts +21 -0
- package/dist/fp/iterator/take.js +25 -0
- package/dist/fp/iterator/take.mjs +25 -0
- package/dist/fp/iterator/takeWhile.d.mts +19 -0
- package/dist/fp/iterator/takeWhile.d.ts +19 -0
- package/dist/fp/iterator/takeWhile.js +24 -0
- package/dist/fp/iterator/takeWhile.mjs +24 -0
- package/dist/fp/iterator/toArray.d.mts +21 -0
- package/dist/fp/iterator/toArray.d.ts +21 -0
- package/dist/fp/iterator/toArray.js +25 -0
- package/dist/fp/iterator/toArray.mjs +25 -0
- package/dist/fp/iterator/uniqBy.d.mts +20 -0
- package/dist/fp/iterator/uniqBy.d.ts +20 -0
- package/dist/fp/iterator/uniqBy.js +25 -0
- package/dist/fp/iterator/uniqBy.mjs +25 -0
- package/dist/fp/iterator/zip.d.mts +20 -0
- package/dist/fp/iterator/zip.d.ts +20 -0
- package/dist/fp/iterator/zip.js +25 -0
- package/dist/fp/iterator/zip.mjs +25 -0
- package/dist/function/memoize.d.mts +3 -2
- package/dist/function/memoize.d.ts +3 -2
- package/dist/function/memoize.js +3 -2
- package/dist/function/memoize.mjs +3 -2
- package/dist/function/partial.d.mts +2 -2
- package/dist/function/partial.d.ts +2 -2
- package/dist/function/partialRight.d.mts +5 -5
- package/dist/function/partialRight.d.ts +5 -5
- package/dist/function/rest.d.mts +1 -1
- package/dist/function/rest.d.ts +1 -1
- package/dist/function/rest.js +1 -1
- package/dist/function/rest.mjs +1 -1
- package/dist/function/retry.d.mts +7 -4
- package/dist/function/retry.d.ts +7 -4
- package/dist/function/retry.js +4 -2
- package/dist/function/retry.mjs +1 -1
- package/dist/index.d.mts +9 -2
- package/dist/index.d.ts +9 -2
- package/dist/index.js +18 -4
- package/dist/index.mjs +12 -5
- package/dist/iterator/_internal/iterator.js +74 -0
- package/dist/iterator/_internal/iterator.mjs +74 -0
- package/dist/iterator/chunk.d.mts +21 -0
- package/dist/iterator/chunk.d.ts +21 -0
- package/dist/iterator/chunk.js +40 -0
- package/dist/iterator/chunk.mjs +40 -0
- package/dist/iterator/count.d.mts +18 -0
- package/dist/iterator/count.d.ts +18 -0
- package/dist/iterator/count.js +26 -0
- package/dist/iterator/count.mjs +26 -0
- package/dist/iterator/dropWhile.d.mts +20 -0
- package/dist/iterator/dropWhile.d.ts +20 -0
- package/dist/iterator/dropWhile.js +52 -0
- package/dist/iterator/dropWhile.mjs +52 -0
- package/dist/iterator/head.d.mts +21 -0
- package/dist/iterator/head.d.ts +21 -0
- package/dist/iterator/head.js +26 -0
- package/dist/iterator/head.mjs +26 -0
- package/dist/iterator/index.d.mts +12 -0
- package/dist/iterator/index.d.ts +12 -0
- package/dist/iterator/index.js +23 -0
- package/dist/iterator/index.mjs +12 -0
- package/dist/iterator/iterate.d.mts +20 -0
- package/dist/iterator/iterate.d.ts +20 -0
- package/dist/iterator/iterate.js +32 -0
- package/dist/iterator/iterate.mjs +32 -0
- package/dist/iterator/partition.d.mts +18 -0
- package/dist/iterator/partition.d.ts +18 -0
- package/dist/iterator/partition.js +36 -0
- package/dist/iterator/partition.mjs +36 -0
- package/dist/iterator/range.d.mts +42 -0
- package/dist/iterator/range.d.ts +42 -0
- package/dist/iterator/range.js +25 -0
- package/dist/iterator/range.mjs +25 -0
- package/dist/iterator/scan.d.mts +23 -0
- package/dist/iterator/scan.d.ts +23 -0
- package/dist/iterator/scan.js +47 -0
- package/dist/iterator/scan.mjs +47 -0
- package/dist/iterator/takeWhile.d.mts +20 -0
- package/dist/iterator/takeWhile.d.ts +20 -0
- package/dist/iterator/takeWhile.js +34 -0
- package/dist/iterator/takeWhile.mjs +34 -0
- package/dist/iterator/uniqBy.d.mts +22 -0
- package/dist/iterator/uniqBy.d.ts +22 -0
- package/dist/iterator/uniqBy.js +43 -0
- package/dist/iterator/uniqBy.mjs +43 -0
- package/dist/iterator/zip.d.mts +23 -0
- package/dist/iterator/zip.d.ts +23 -0
- package/dist/iterator/zip.js +45 -0
- package/dist/iterator/zip.mjs +45 -0
- package/dist/object/cloneDeepWith.d.mts +3 -1
- package/dist/object/cloneDeepWith.d.ts +3 -1
- package/dist/object/cloneDeepWith.js +3 -1
- package/dist/object/cloneDeepWith.mjs +3 -1
- package/dist/object/deepFreeze.d.mts +20 -0
- package/dist/object/deepFreeze.d.ts +20 -0
- package/dist/object/deepFreeze.js +29 -0
- package/dist/object/deepFreeze.mjs +29 -0
- package/dist/object/flattenObject.d.mts +16 -1
- package/dist/object/flattenObject.d.ts +16 -1
- package/dist/object/flattenObject.js +15 -6
- package/dist/object/flattenObject.mjs +15 -6
- package/dist/object/index.d.mts +7 -1
- package/dist/object/index.d.ts +7 -1
- package/dist/object/index.js +12 -0
- package/dist/object/index.mjs +7 -1
- package/dist/object/mapKeysAsync.d.mts +25 -0
- package/dist/object/mapKeysAsync.d.ts +25 -0
- package/dist/object/mapKeysAsync.js +32 -0
- package/dist/object/mapKeysAsync.mjs +32 -0
- package/dist/object/mapValuesAsync.d.mts +26 -0
- package/dist/object/mapValuesAsync.d.ts +26 -0
- package/dist/object/mapValuesAsync.js +32 -0
- package/dist/object/mapValuesAsync.mjs +32 -0
- package/dist/object/merge.js +2 -4
- package/dist/object/merge.mjs +1 -3
- package/dist/object/mergeWith.js +4 -4
- package/dist/object/mergeWith.mjs +4 -4
- package/dist/object/toCamelCaseKeys.d.mts +2 -6
- package/dist/object/toCamelCaseKeys.d.ts +2 -6
- package/dist/object/toConstantCaseKeys.d.mts +52 -0
- package/dist/object/toConstantCaseKeys.d.ts +52 -0
- package/dist/object/toConstantCaseKeys.js +66 -0
- package/dist/object/toConstantCaseKeys.mjs +66 -0
- package/dist/object/toKebabCaseKeys.d.mts +52 -0
- package/dist/object/toKebabCaseKeys.d.ts +52 -0
- package/dist/object/toKebabCaseKeys.js +66 -0
- package/dist/object/toKebabCaseKeys.mjs +66 -0
- package/dist/object/toMerged.js +4 -4
- package/dist/object/toMerged.mjs +4 -4
- package/dist/object/toPascalCaseKeys.d.mts +52 -0
- package/dist/object/toPascalCaseKeys.d.ts +52 -0
- package/dist/object/toPascalCaseKeys.js +66 -0
- package/dist/object/toPascalCaseKeys.mjs +66 -0
- package/dist/object/toSnakeCaseKeys.d.mts +2 -3
- package/dist/object/toSnakeCaseKeys.d.ts +2 -3
- package/dist/promise/index.d.mts +2 -1
- package/dist/promise/index.d.ts +2 -1
- package/dist/promise/index.js +2 -0
- package/dist/promise/index.mjs +2 -1
- package/dist/promise/limitAsync.d.mts +35 -0
- package/dist/promise/limitAsync.d.ts +35 -0
- package/dist/promise/limitAsync.js +46 -0
- package/dist/promise/limitAsync.mjs +46 -0
- package/dist/string/dedent.d.mts +37 -0
- package/dist/string/dedent.d.ts +37 -0
- package/dist/string/dedent.js +38 -0
- package/dist/string/dedent.mjs +38 -0
- package/dist/string/index.d.mts +2 -1
- package/dist/string/index.d.ts +2 -1
- package/dist/string/index.js +5 -3
- package/dist/string/index.mjs +5 -4
- package/dist/types/ToCamelCaseKeys.d.mts +24 -0
- package/dist/types/ToCamelCaseKeys.d.ts +24 -0
- package/dist/types/ToConstantCaseKeys.d.mts +21 -0
- package/dist/types/ToConstantCaseKeys.d.ts +21 -0
- package/dist/types/ToKebabCaseKeys.d.mts +23 -0
- package/dist/types/ToKebabCaseKeys.d.ts +23 -0
- package/dist/types/ToPascalCaseKeys.d.mts +24 -0
- package/dist/types/ToPascalCaseKeys.d.ts +24 -0
- package/dist/types/ToSnakeCaseKeys.d.mts +21 -0
- package/dist/types/ToSnakeCaseKeys.d.ts +21 -0
- package/dist/types/index.d.mts +6 -1
- package/dist/types/index.d.ts +6 -1
- package/fp/iterator.d.ts +1 -0
- package/fp/iterator.js +1 -0
- package/iterator.d.ts +1 -0
- package/iterator.js +1 -0
- package/package.json +70 -2
|
@@ -23,7 +23,7 @@ The traversal is interrupted when the `iteratee` function returns `false`.
|
|
|
23
23
|
* @example
|
|
24
24
|
* // Transform an array
|
|
25
25
|
* const array = [2, 3, 4];
|
|
26
|
-
* transform(array, (acc, value) => { acc += value; return value % 2 === 0; }, 0) // => 5
|
|
26
|
+
* transform(array, (acc, value) => { acc.sum += value; return value % 2 === 0; }, { sum: 0 }) // => { sum: 5 }
|
|
27
27
|
*
|
|
28
28
|
* @example
|
|
29
29
|
* // Transform an object
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const require_isUnsafeProperty = require("../../_internal/isUnsafeProperty.js");
|
|
2
1
|
const require_toKey = require("../_internal/toKey.js");
|
|
3
2
|
const require_toPath = require("../util/toPath.js");
|
|
4
3
|
const require_get = require("./get.js");
|
|
@@ -6,6 +5,7 @@ const require_isObject = require("../predicate/isObject.js");
|
|
|
6
5
|
const require_isIndex = require("../_internal/isIndex.js");
|
|
7
6
|
const require_isKey = require("../_internal/isKey.js");
|
|
8
7
|
const require_assignValue = require("../_internal/assignValue.js");
|
|
8
|
+
const require_isUnsafeToWriteProperty = require("../../_internal/isUnsafeToWriteProperty.js");
|
|
9
9
|
//#region src/compat/object/updateWith.ts
|
|
10
10
|
/**
|
|
11
11
|
* Updates the value at the specified path of the given object using an updater function and a customizer.
|
|
@@ -34,7 +34,7 @@ function updateWith(obj, path, updater, customizer) {
|
|
|
34
34
|
let current = obj;
|
|
35
35
|
for (let i = 0; i < resolvedPath.length && current != null; i++) {
|
|
36
36
|
const key = require_toKey.toKey(resolvedPath[i]);
|
|
37
|
-
if (
|
|
37
|
+
if (require_isUnsafeToWriteProperty.isUnsafeToWriteProperty(key)) return obj;
|
|
38
38
|
let newValue;
|
|
39
39
|
if (i === resolvedPath.length - 1) newValue = updateValue;
|
|
40
40
|
else {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isUnsafeProperty } from "../../_internal/isUnsafeProperty.mjs";
|
|
2
1
|
import { toKey } from "../_internal/toKey.mjs";
|
|
3
2
|
import { toPath } from "../util/toPath.mjs";
|
|
4
3
|
import { get } from "./get.mjs";
|
|
@@ -6,6 +5,7 @@ import { isObject } from "../predicate/isObject.mjs";
|
|
|
6
5
|
import { isIndex } from "../_internal/isIndex.mjs";
|
|
7
6
|
import { isKey } from "../_internal/isKey.mjs";
|
|
8
7
|
import { assignValue } from "../_internal/assignValue.mjs";
|
|
8
|
+
import { isUnsafeToWriteProperty } from "../../_internal/isUnsafeToWriteProperty.mjs";
|
|
9
9
|
//#region src/compat/object/updateWith.ts
|
|
10
10
|
/**
|
|
11
11
|
* Updates the value at the specified path of the given object using an updater function and a customizer.
|
|
@@ -34,7 +34,7 @@ function updateWith(obj, path, updater, customizer) {
|
|
|
34
34
|
let current = obj;
|
|
35
35
|
for (let i = 0; i < resolvedPath.length && current != null; i++) {
|
|
36
36
|
const key = toKey(resolvedPath[i]);
|
|
37
|
-
if (
|
|
37
|
+
if (isUnsafeToWriteProperty(key)) return obj;
|
|
38
38
|
let newValue;
|
|
39
39
|
if (i === resolvedPath.length - 1) newValue = updateValue;
|
|
40
40
|
else {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
const require_isPrimitive = require("../../predicate/isPrimitive.js");
|
|
2
|
+
const require_getTag = require("../_internal/getTag.js");
|
|
3
|
+
require("../_internal/tags.js");
|
|
2
4
|
const require_eq = require("../util/eq.js");
|
|
3
5
|
const require_isObject = require("./isObject.js");
|
|
4
6
|
//#region src/compat/predicate/isMatchWith.ts
|
|
@@ -19,7 +21,8 @@ const require_isObject = require("./isObject.js");
|
|
|
19
21
|
* - **Primitives**: Matches using strict equality
|
|
20
22
|
*
|
|
21
23
|
* Special cases:
|
|
22
|
-
* - Empty
|
|
24
|
+
* - Empty arrays, Maps, and Sets always match any target
|
|
25
|
+
* - An empty object matches any target at the top level, but at nested levels it only matches object targets
|
|
23
26
|
* - `null` and `undefined` source values have specific matching rules
|
|
24
27
|
* - Circular references are handled using an internal stack to prevent infinite recursion
|
|
25
28
|
*
|
|
@@ -82,7 +85,7 @@ function isMatchWith(target, source, compare) {
|
|
|
82
85
|
function isMatchWithInternal(target, source, compare, stack, isRoot = false) {
|
|
83
86
|
if (source === target) return true;
|
|
84
87
|
switch (typeof source) {
|
|
85
|
-
case "object": return isObjectMatch(target, source, compare, stack);
|
|
88
|
+
case "object": return isObjectMatch(target, source, compare, stack, isRoot);
|
|
86
89
|
case "function":
|
|
87
90
|
if (Object.keys(source).length > 0) return isMatchWithInternal(target, { ...source }, compare, stack, isRoot);
|
|
88
91
|
return require_eq.eq(target, source);
|
|
@@ -95,20 +98,26 @@ function isMatchWithInternal(target, source, compare, stack, isRoot = false) {
|
|
|
95
98
|
return require_eq.eq(target, source);
|
|
96
99
|
}
|
|
97
100
|
}
|
|
98
|
-
function isObjectMatch(target, source, compare, stack) {
|
|
101
|
+
function isObjectMatch(target, source, compare, stack, isRoot = false) {
|
|
99
102
|
if (source == null) return true;
|
|
100
103
|
if (Array.isArray(source)) return isArrayMatch(target, source, compare, stack);
|
|
101
104
|
if (source instanceof Map) return isMapMatch(target, source, compare, stack);
|
|
102
105
|
if (source instanceof Set) return isSetMatch(target, source, compare, stack);
|
|
103
106
|
const keys = Object.keys(source);
|
|
104
|
-
if (target == null
|
|
107
|
+
if (target == null) return isRoot && keys.length === 0;
|
|
108
|
+
if (isRoot) {
|
|
109
|
+
if (require_isPrimitive.isPrimitive(target)) target = Object(target);
|
|
110
|
+
} else {
|
|
111
|
+
const tag = require_getTag.getTag(target);
|
|
112
|
+
if (tag !== "[object Object]" && tag !== "[object Arguments]") return false;
|
|
113
|
+
}
|
|
105
114
|
if (keys.length === 0) return true;
|
|
106
115
|
if (stack?.has(source)) return stack.get(source) === target;
|
|
107
116
|
stack?.set(source, target);
|
|
108
117
|
try {
|
|
109
118
|
for (let i = 0; i < keys.length; i++) {
|
|
110
119
|
const key = keys[i];
|
|
111
|
-
if (!
|
|
120
|
+
if (!(key in target)) return false;
|
|
112
121
|
if (source[key] === void 0 && target[key] !== void 0) return false;
|
|
113
122
|
if (source[key] === null && target[key] !== null) return false;
|
|
114
123
|
if (!compare(target[key], source[key], key, target, source, stack)) return false;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { isPrimitive } from "../../predicate/isPrimitive.mjs";
|
|
2
|
+
import { getTag } from "../_internal/getTag.mjs";
|
|
3
|
+
import "../_internal/tags.mjs";
|
|
2
4
|
import { eq } from "../util/eq.mjs";
|
|
3
5
|
import { isObject } from "./isObject.mjs";
|
|
4
6
|
//#region src/compat/predicate/isMatchWith.ts
|
|
@@ -19,7 +21,8 @@ import { isObject } from "./isObject.mjs";
|
|
|
19
21
|
* - **Primitives**: Matches using strict equality
|
|
20
22
|
*
|
|
21
23
|
* Special cases:
|
|
22
|
-
* - Empty
|
|
24
|
+
* - Empty arrays, Maps, and Sets always match any target
|
|
25
|
+
* - An empty object matches any target at the top level, but at nested levels it only matches object targets
|
|
23
26
|
* - `null` and `undefined` source values have specific matching rules
|
|
24
27
|
* - Circular references are handled using an internal stack to prevent infinite recursion
|
|
25
28
|
*
|
|
@@ -82,7 +85,7 @@ function isMatchWith(target, source, compare) {
|
|
|
82
85
|
function isMatchWithInternal(target, source, compare, stack, isRoot = false) {
|
|
83
86
|
if (source === target) return true;
|
|
84
87
|
switch (typeof source) {
|
|
85
|
-
case "object": return isObjectMatch(target, source, compare, stack);
|
|
88
|
+
case "object": return isObjectMatch(target, source, compare, stack, isRoot);
|
|
86
89
|
case "function":
|
|
87
90
|
if (Object.keys(source).length > 0) return isMatchWithInternal(target, { ...source }, compare, stack, isRoot);
|
|
88
91
|
return eq(target, source);
|
|
@@ -95,20 +98,26 @@ function isMatchWithInternal(target, source, compare, stack, isRoot = false) {
|
|
|
95
98
|
return eq(target, source);
|
|
96
99
|
}
|
|
97
100
|
}
|
|
98
|
-
function isObjectMatch(target, source, compare, stack) {
|
|
101
|
+
function isObjectMatch(target, source, compare, stack, isRoot = false) {
|
|
99
102
|
if (source == null) return true;
|
|
100
103
|
if (Array.isArray(source)) return isArrayMatch(target, source, compare, stack);
|
|
101
104
|
if (source instanceof Map) return isMapMatch(target, source, compare, stack);
|
|
102
105
|
if (source instanceof Set) return isSetMatch(target, source, compare, stack);
|
|
103
106
|
const keys = Object.keys(source);
|
|
104
|
-
if (target == null
|
|
107
|
+
if (target == null) return isRoot && keys.length === 0;
|
|
108
|
+
if (isRoot) {
|
|
109
|
+
if (isPrimitive(target)) target = Object(target);
|
|
110
|
+
} else {
|
|
111
|
+
const tag = getTag(target);
|
|
112
|
+
if (tag !== "[object Object]" && tag !== "[object Arguments]") return false;
|
|
113
|
+
}
|
|
105
114
|
if (keys.length === 0) return true;
|
|
106
115
|
if (stack?.has(source)) return stack.get(source) === target;
|
|
107
116
|
stack?.set(source, target);
|
|
108
117
|
try {
|
|
109
118
|
for (let i = 0; i < keys.length; i++) {
|
|
110
119
|
const key = keys[i];
|
|
111
|
-
if (!
|
|
120
|
+
if (!(key in target)) return false;
|
|
112
121
|
if (source[key] === void 0 && target[key] !== void 0) return false;
|
|
113
122
|
if (source[key] === null && target[key] !== null) return false;
|
|
114
123
|
if (!compare(target[key], source[key], key, target, source, stack)) return false;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const require_toString = require("../util/toString.js");
|
|
2
|
+
const require_isIterateeCall = require("../_internal/isIterateeCall.js");
|
|
2
3
|
const require_attempt = require("../function/attempt.js");
|
|
3
4
|
const require_defaults = require("../object/defaults.js");
|
|
4
5
|
const require_escape = require("./escape.js");
|
|
@@ -92,7 +93,7 @@ const templateSettings = {
|
|
|
92
93
|
*/
|
|
93
94
|
function template(string, options, guard) {
|
|
94
95
|
string = require_toString.toString(string);
|
|
95
|
-
if (guard) options = templateSettings;
|
|
96
|
+
if (guard && require_isIterateeCall.isIterateeCall(string, options, guard)) options = templateSettings;
|
|
96
97
|
options = require_defaults.defaults({ ...options }, templateSettings);
|
|
97
98
|
const delimitersRegExp = new RegExp([
|
|
98
99
|
options.escape?.source ?? noMatchExp.source,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { toString } from "../util/toString.mjs";
|
|
2
|
+
import { isIterateeCall } from "../_internal/isIterateeCall.mjs";
|
|
2
3
|
import { attempt } from "../function/attempt.mjs";
|
|
3
4
|
import { defaults } from "../object/defaults.mjs";
|
|
4
5
|
import { escape } from "./escape.mjs";
|
|
@@ -92,7 +93,7 @@ const templateSettings = {
|
|
|
92
93
|
*/
|
|
93
94
|
function template(string, options, guard) {
|
|
94
95
|
string = toString(string);
|
|
95
|
-
if (guard) options = templateSettings;
|
|
96
|
+
if (guard && isIterateeCall(string, options, guard)) options = templateSettings;
|
|
96
97
|
options = defaults({ ...options }, templateSettings);
|
|
97
98
|
const delimitersRegExp = new RegExp([
|
|
98
99
|
options.escape?.source ?? noMatchExp.source,
|
|
@@ -10,17 +10,21 @@ const rUnicodeOptContrUpper = "(?:['’](?:D|LL|M|RE|S|T|VE))?";
|
|
|
10
10
|
const rUnicodeBreak = `[\\p{Z}\\p{P}${rNonCharLatin}]`;
|
|
11
11
|
const rUnicodeMiscUpper = `(?:${rUnicodeUpper}|${rMisc})`;
|
|
12
12
|
const rUnicodeMiscLower = `(?:${rUnicodeLower}|${rMisc})`;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
let rUnicodeWord;
|
|
14
|
+
function getUnicodeWordPattern() {
|
|
15
|
+
if (rUnicodeWord == null) rUnicodeWord = RegExp([
|
|
16
|
+
`${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`,
|
|
17
|
+
`${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`,
|
|
18
|
+
`${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`,
|
|
19
|
+
`${rUnicodeUpper}+${rUnicodeOptContrUpper}`,
|
|
20
|
+
`${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`,
|
|
21
|
+
`${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`,
|
|
22
|
+
`${rNumber}+`,
|
|
23
|
+
"\\p{Emoji_Presentation}",
|
|
24
|
+
"\\p{Extended_Pictographic}"
|
|
25
|
+
].join("|"), "gu");
|
|
26
|
+
return rUnicodeWord;
|
|
27
|
+
}
|
|
24
28
|
/**
|
|
25
29
|
* Splits `string` into an array of its words.
|
|
26
30
|
*
|
|
@@ -32,9 +36,9 @@ const rUnicodeWord = RegExp([
|
|
|
32
36
|
* const wordsArray1 = words('fred, barney, & pebbles');
|
|
33
37
|
* // => ['fred', 'barney', 'pebbles']
|
|
34
38
|
*/
|
|
35
|
-
function words(str, pattern
|
|
39
|
+
function words(str, pattern, guard) {
|
|
36
40
|
const input = require_toString.toString(str);
|
|
37
|
-
if (guard) pattern =
|
|
41
|
+
if (guard || pattern === void 0) pattern = getUnicodeWordPattern();
|
|
38
42
|
if (typeof pattern === "number") pattern = pattern.toString();
|
|
39
43
|
return Array.from(input.match(pattern) ?? []).filter((x) => x !== "");
|
|
40
44
|
}
|
|
@@ -10,17 +10,21 @@ const rUnicodeOptContrUpper = "(?:['’](?:D|LL|M|RE|S|T|VE))?";
|
|
|
10
10
|
const rUnicodeBreak = `[\\p{Z}\\p{P}${rNonCharLatin}]`;
|
|
11
11
|
const rUnicodeMiscUpper = `(?:${rUnicodeUpper}|${rMisc})`;
|
|
12
12
|
const rUnicodeMiscLower = `(?:${rUnicodeLower}|${rMisc})`;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
let rUnicodeWord;
|
|
14
|
+
function getUnicodeWordPattern() {
|
|
15
|
+
if (rUnicodeWord == null) rUnicodeWord = RegExp([
|
|
16
|
+
`${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`,
|
|
17
|
+
`${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`,
|
|
18
|
+
`${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`,
|
|
19
|
+
`${rUnicodeUpper}+${rUnicodeOptContrUpper}`,
|
|
20
|
+
`${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`,
|
|
21
|
+
`${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`,
|
|
22
|
+
`${rNumber}+`,
|
|
23
|
+
"\\p{Emoji_Presentation}",
|
|
24
|
+
"\\p{Extended_Pictographic}"
|
|
25
|
+
].join("|"), "gu");
|
|
26
|
+
return rUnicodeWord;
|
|
27
|
+
}
|
|
24
28
|
/**
|
|
25
29
|
* Splits `string` into an array of its words.
|
|
26
30
|
*
|
|
@@ -32,9 +36,9 @@ const rUnicodeWord = RegExp([
|
|
|
32
36
|
* const wordsArray1 = words('fred, barney, & pebbles');
|
|
33
37
|
* // => ['fred', 'barney', 'pebbles']
|
|
34
38
|
*/
|
|
35
|
-
function words(str, pattern
|
|
39
|
+
function words(str, pattern, guard) {
|
|
36
40
|
const input = toString(str);
|
|
37
|
-
if (guard) pattern =
|
|
41
|
+
if (guard || pattern === void 0) pattern = getUnicodeWordPattern();
|
|
38
42
|
if (typeof pattern === "number") pattern = pattern.toString();
|
|
39
43
|
return Array.from(input.match(pattern) ?? []).filter((x) => x !== "");
|
|
40
44
|
}
|
|
@@ -40,9 +40,7 @@ function iteratee(value) {
|
|
|
40
40
|
case "object":
|
|
41
41
|
if (Array.isArray(value) && value.length === 2) return require_matchesProperty.matchesProperty(value[0], value[1]);
|
|
42
42
|
return require_matches.matches(value);
|
|
43
|
-
|
|
44
|
-
case "symbol":
|
|
45
|
-
case "number": return require_property.property(value);
|
|
43
|
+
default: return require_property.property(value);
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
46
|
//#endregion
|
|
@@ -40,9 +40,7 @@ function iteratee(value) {
|
|
|
40
40
|
case "object":
|
|
41
41
|
if (Array.isArray(value) && value.length === 2) return matchesProperty(value[0], value[1]);
|
|
42
42
|
return matches(value);
|
|
43
|
-
|
|
44
|
-
case "symbol":
|
|
45
|
-
case "number": return property(value);
|
|
43
|
+
default: return property(value);
|
|
46
44
|
}
|
|
47
45
|
}
|
|
48
46
|
//#endregion
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* @returns Returns an array of the record's values or an empty array if null/undefined.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
|
-
* toArray({ 'a': 1, 'b': 2 }) // =>
|
|
11
|
-
* toArray(null) // =>
|
|
10
|
+
* toArray({ 'a': 1, 'b': 2 }) // => [1, 2]
|
|
11
|
+
* toArray(null) // => []
|
|
12
12
|
*/
|
|
13
13
|
declare function toArray<T>(value: Record<string, T> | Record<number, T> | null | undefined): T[];
|
|
14
14
|
/**
|
|
@@ -19,8 +19,8 @@ declare function toArray<T>(value: Record<string, T> | Record<number, T> | null
|
|
|
19
19
|
* @returns Returns an array of the value's values.
|
|
20
20
|
*
|
|
21
21
|
* @example
|
|
22
|
-
* toArray({ x: 10, y: 20 }) // =>
|
|
23
|
-
* toArray('abc') // =>
|
|
22
|
+
* toArray({ x: 10, y: 20 }) // => [10, 20]
|
|
23
|
+
* toArray('abc') // => ['a', 'b', 'c']
|
|
24
24
|
*/
|
|
25
25
|
declare function toArray<T>(value: T): Array<T[keyof T]>;
|
|
26
26
|
/**
|
|
@@ -29,7 +29,7 @@ declare function toArray<T>(value: T): Array<T[keyof T]>;
|
|
|
29
29
|
* @returns Returns an empty array.
|
|
30
30
|
*
|
|
31
31
|
* @example
|
|
32
|
-
* toArray() // =>
|
|
32
|
+
* toArray() // => []
|
|
33
33
|
*/
|
|
34
34
|
declare function toArray(): any[];
|
|
35
35
|
//#endregion
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* @returns Returns an array of the record's values or an empty array if null/undefined.
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
|
-
* toArray({ 'a': 1, 'b': 2 }) // =>
|
|
11
|
-
* toArray(null) // =>
|
|
10
|
+
* toArray({ 'a': 1, 'b': 2 }) // => [1, 2]
|
|
11
|
+
* toArray(null) // => []
|
|
12
12
|
*/
|
|
13
13
|
declare function toArray<T>(value: Record<string, T> | Record<number, T> | null | undefined): T[];
|
|
14
14
|
/**
|
|
@@ -19,8 +19,8 @@ declare function toArray<T>(value: Record<string, T> | Record<number, T> | null
|
|
|
19
19
|
* @returns Returns an array of the value's values.
|
|
20
20
|
*
|
|
21
21
|
* @example
|
|
22
|
-
* toArray({ x: 10, y: 20 }) // =>
|
|
23
|
-
* toArray('abc') // =>
|
|
22
|
+
* toArray({ x: 10, y: 20 }) // => [10, 20]
|
|
23
|
+
* toArray('abc') // => ['a', 'b', 'c']
|
|
24
24
|
*/
|
|
25
25
|
declare function toArray<T>(value: T): Array<T[keyof T]>;
|
|
26
26
|
/**
|
|
@@ -29,7 +29,7 @@ declare function toArray<T>(value: T): Array<T[keyof T]>;
|
|
|
29
29
|
* @returns Returns an empty array.
|
|
30
30
|
*
|
|
31
31
|
* @example
|
|
32
|
-
* toArray() // =>
|
|
32
|
+
* toArray() // => []
|
|
33
33
|
*/
|
|
34
34
|
declare function toArray(): any[];
|
|
35
35
|
//#endregion
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const require_isIterable = require("../../predicate/isIterable.js");
|
|
1
2
|
const require_isArrayLike = require("../predicate/isArrayLike.js");
|
|
2
3
|
const require_isMap = require("../predicate/isMap.js");
|
|
3
4
|
const require_isSet = require("../predicate/isSet.js");
|
|
@@ -9,15 +10,18 @@ const require_isSet = require("../predicate/isSet.js");
|
|
|
9
10
|
* @returns Returns the converted array.
|
|
10
11
|
*
|
|
11
12
|
* @example
|
|
12
|
-
* toArray({ 'a': 1, 'b': 2 }) // =>
|
|
13
|
-
* toArray('abc') // =>
|
|
14
|
-
* toArray(1) // =>
|
|
15
|
-
* toArray(null) // =>
|
|
13
|
+
* toArray({ 'a': 1, 'b': 2 }) // => [1,2]
|
|
14
|
+
* toArray('abc') // => ['a', 'b', 'c']
|
|
15
|
+
* toArray(1) // => []
|
|
16
|
+
* toArray(null) // => []
|
|
16
17
|
*/
|
|
17
18
|
function toArray(value) {
|
|
18
19
|
if (value == null) return [];
|
|
19
20
|
if (require_isArrayLike.isArrayLike(value) || require_isMap.isMap(value) || require_isSet.isSet(value)) return Array.from(value);
|
|
20
|
-
if (typeof value === "object")
|
|
21
|
+
if (typeof value === "object") {
|
|
22
|
+
if (require_isIterable.isIterable(value)) return Array.from(value);
|
|
23
|
+
return Object.values(value);
|
|
24
|
+
}
|
|
21
25
|
return [];
|
|
22
26
|
}
|
|
23
27
|
//#endregion
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isIterable } from "../../predicate/isIterable.mjs";
|
|
1
2
|
import { isArrayLike } from "../predicate/isArrayLike.mjs";
|
|
2
3
|
import { isMap } from "../predicate/isMap.mjs";
|
|
3
4
|
import { isSet } from "../predicate/isSet.mjs";
|
|
@@ -9,15 +10,18 @@ import { isSet } from "../predicate/isSet.mjs";
|
|
|
9
10
|
* @returns Returns the converted array.
|
|
10
11
|
*
|
|
11
12
|
* @example
|
|
12
|
-
* toArray({ 'a': 1, 'b': 2 }) // =>
|
|
13
|
-
* toArray('abc') // =>
|
|
14
|
-
* toArray(1) // =>
|
|
15
|
-
* toArray(null) // =>
|
|
13
|
+
* toArray({ 'a': 1, 'b': 2 }) // => [1,2]
|
|
14
|
+
* toArray('abc') // => ['a', 'b', 'c']
|
|
15
|
+
* toArray(1) // => []
|
|
16
|
+
* toArray(null) // => []
|
|
16
17
|
*/
|
|
17
18
|
function toArray(value) {
|
|
18
19
|
if (value == null) return [];
|
|
19
20
|
if (isArrayLike(value) || isMap(value) || isSet(value)) return Array.from(value);
|
|
20
|
-
if (typeof value === "object")
|
|
21
|
+
if (typeof value === "object") {
|
|
22
|
+
if (isIterable(value)) return Array.from(value);
|
|
23
|
+
return Object.values(value);
|
|
24
|
+
}
|
|
21
25
|
return [];
|
|
22
26
|
}
|
|
23
27
|
//#endregion
|
|
@@ -29,6 +29,8 @@ function toPath(deepKey) {
|
|
|
29
29
|
let key = "";
|
|
30
30
|
let quoteChar = "";
|
|
31
31
|
let bracket = false;
|
|
32
|
+
let bracketHadQuote = false;
|
|
33
|
+
const bracketNumberRegex = /^-?\d+(?:\.\d+)?$/;
|
|
32
34
|
if (deepKey.charCodeAt(0) === 46) result.push("");
|
|
33
35
|
while (index < length) {
|
|
34
36
|
const char = deepKey[index];
|
|
@@ -37,14 +39,20 @@ function toPath(deepKey) {
|
|
|
37
39
|
key += deepKey[index];
|
|
38
40
|
} else if (char === quoteChar) quoteChar = "";
|
|
39
41
|
else key += char;
|
|
40
|
-
else if (bracket) if (char === "\"" || char === "'")
|
|
41
|
-
|
|
42
|
+
else if (bracket) if (char === "\"" || char === "'") {
|
|
43
|
+
quoteChar = char;
|
|
44
|
+
bracketHadQuote = true;
|
|
45
|
+
} else if (char === "]") {
|
|
42
46
|
bracket = false;
|
|
43
|
-
|
|
47
|
+
if (!bracketHadQuote && key.includes(".") && !bracketNumberRegex.test(key)) {
|
|
48
|
+
const segments = key.split(".");
|
|
49
|
+
for (let i = 0; i < segments.length; i++) if (segments[i] !== "") result.push(segments[i]);
|
|
50
|
+
} else result.push(key);
|
|
44
51
|
key = "";
|
|
45
52
|
} else key += char;
|
|
46
53
|
else if (char === "[") {
|
|
47
54
|
bracket = true;
|
|
55
|
+
bracketHadQuote = false;
|
|
48
56
|
if (key) {
|
|
49
57
|
result.push(key);
|
|
50
58
|
key = "";
|
|
@@ -29,6 +29,8 @@ function toPath(deepKey) {
|
|
|
29
29
|
let key = "";
|
|
30
30
|
let quoteChar = "";
|
|
31
31
|
let bracket = false;
|
|
32
|
+
let bracketHadQuote = false;
|
|
33
|
+
const bracketNumberRegex = /^-?\d+(?:\.\d+)?$/;
|
|
32
34
|
if (deepKey.charCodeAt(0) === 46) result.push("");
|
|
33
35
|
while (index < length) {
|
|
34
36
|
const char = deepKey[index];
|
|
@@ -37,14 +39,20 @@ function toPath(deepKey) {
|
|
|
37
39
|
key += deepKey[index];
|
|
38
40
|
} else if (char === quoteChar) quoteChar = "";
|
|
39
41
|
else key += char;
|
|
40
|
-
else if (bracket) if (char === "\"" || char === "'")
|
|
41
|
-
|
|
42
|
+
else if (bracket) if (char === "\"" || char === "'") {
|
|
43
|
+
quoteChar = char;
|
|
44
|
+
bracketHadQuote = true;
|
|
45
|
+
} else if (char === "]") {
|
|
42
46
|
bracket = false;
|
|
43
|
-
|
|
47
|
+
if (!bracketHadQuote && key.includes(".") && !bracketNumberRegex.test(key)) {
|
|
48
|
+
const segments = key.split(".");
|
|
49
|
+
for (let i = 0; i < segments.length; i++) if (segments[i] !== "") result.push(segments[i]);
|
|
50
|
+
} else result.push(key);
|
|
44
51
|
key = "";
|
|
45
52
|
} else key += char;
|
|
46
53
|
else if (char === "[") {
|
|
47
54
|
bracket = true;
|
|
55
|
+
bracketHadQuote = false;
|
|
48
56
|
if (key) {
|
|
49
57
|
result.push(key);
|
|
50
58
|
key = "";
|
|
@@ -17,8 +17,11 @@
|
|
|
17
17
|
*/
|
|
18
18
|
function toString(value) {
|
|
19
19
|
if (value == null) return "";
|
|
20
|
+
return baseToString(value);
|
|
21
|
+
}
|
|
22
|
+
function baseToString(value) {
|
|
20
23
|
if (typeof value === "string") return value;
|
|
21
|
-
if (Array.isArray(value)) return value.map(
|
|
24
|
+
if (Array.isArray(value)) return value.map(baseToString).join(",");
|
|
22
25
|
const result = String(value);
|
|
23
26
|
if (result === "0" && Object.is(Number(value), -0)) return "-0";
|
|
24
27
|
return result;
|
|
@@ -17,8 +17,11 @@
|
|
|
17
17
|
*/
|
|
18
18
|
function toString(value) {
|
|
19
19
|
if (value == null) return "";
|
|
20
|
+
return baseToString(value);
|
|
21
|
+
}
|
|
22
|
+
function baseToString(value) {
|
|
20
23
|
if (typeof value === "string") return value;
|
|
21
|
-
if (Array.isArray(value)) return value.map(
|
|
24
|
+
if (Array.isArray(value)) return value.map(baseToString).join(",");
|
|
22
25
|
const result = String(value);
|
|
23
26
|
if (result === "0" && Object.is(Number(value), -0)) return "-0";
|
|
24
27
|
return result;
|
package/dist/fp/array/at.d.mts
CHANGED
package/dist/fp/array/at.d.ts
CHANGED
|
@@ -16,6 +16,6 @@
|
|
|
16
16
|
* pipe([{ name: 'a', age: 2 }, { name: 'b', age: 1 }], orderBy(['age'], ['asc']));
|
|
17
17
|
* // => [{ name: 'b', age: 1 }, { name: 'a', age: 2 }]
|
|
18
18
|
*/
|
|
19
|
-
declare function orderBy<T extends object>(criteria:
|
|
19
|
+
declare function orderBy<T extends object>(criteria: ReadonlyArray<((item: T) => unknown) | keyof T>, orders: ReadonlyArray<'asc' | 'desc'>): (array: readonly T[]) => T[];
|
|
20
20
|
//#endregion
|
|
21
21
|
export { orderBy };
|
|
@@ -16,6 +16,6 @@
|
|
|
16
16
|
* pipe([{ name: 'a', age: 2 }, { name: 'b', age: 1 }], orderBy(['age'], ['asc']));
|
|
17
17
|
* // => [{ name: 'b', age: 1 }, { name: 'a', age: 2 }]
|
|
18
18
|
*/
|
|
19
|
-
declare function orderBy<T extends object>(criteria:
|
|
19
|
+
declare function orderBy<T extends object>(criteria: ReadonlyArray<((item: T) => unknown) | keyof T>, orders: ReadonlyArray<'asc' | 'desc'>): (array: readonly T[]) => T[];
|
|
20
20
|
//#endregion
|
|
21
21
|
export { orderBy };
|
|
@@ -21,6 +21,6 @@
|
|
|
21
21
|
* pipe(users, sortBy(['user', 'age']));
|
|
22
22
|
* // => [{ user: 'bar', age: 7 }, { user: 'foo', age: 8 }, { user: 'foo', age: 24 }]
|
|
23
23
|
*/
|
|
24
|
-
declare function sortBy<T extends object>(criteria:
|
|
24
|
+
declare function sortBy<T extends object>(criteria: ReadonlyArray<((item: T) => unknown) | keyof T>): (array: readonly T[]) => T[];
|
|
25
25
|
//#endregion
|
|
26
26
|
export { sortBy };
|
|
@@ -21,6 +21,6 @@
|
|
|
21
21
|
* pipe(users, sortBy(['user', 'age']));
|
|
22
22
|
* // => [{ user: 'bar', age: 7 }, { user: 'foo', age: 8 }, { user: 'foo', age: 24 }]
|
|
23
23
|
*/
|
|
24
|
-
declare function sortBy<T extends object>(criteria:
|
|
24
|
+
declare function sortBy<T extends object>(criteria: ReadonlyArray<((item: T) => unknown) | keyof T>): (array: readonly T[]) => T[];
|
|
25
25
|
//#endregion
|
|
26
26
|
export { sortBy };
|
|
@@ -6,6 +6,9 @@ type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
|
|
|
6
6
|
* The returned function is the data-last form of the main {@link unzip} utility.
|
|
7
7
|
* Use it with {@link pipe}.
|
|
8
8
|
*
|
|
9
|
+
* When the returned function is invoked, the result's length matches the longest nested array.
|
|
10
|
+
* Missing positions in shorter arrays are filled with `undefined`.
|
|
11
|
+
*
|
|
9
12
|
* @template T - The tuple type inside the zipped array.
|
|
10
13
|
* @returns A function that maps zipped tuples to arrays grouped by tuple position.
|
|
11
14
|
*
|
package/dist/fp/array/unzip.d.ts
CHANGED
|
@@ -6,6 +6,9 @@ type Unzip<K extends unknown[]> = { [I in keyof K]: Array<K[I]> };
|
|
|
6
6
|
* The returned function is the data-last form of the main {@link unzip} utility.
|
|
7
7
|
* Use it with {@link pipe}.
|
|
8
8
|
*
|
|
9
|
+
* When the returned function is invoked, the result's length matches the longest nested array.
|
|
10
|
+
* Missing positions in shorter arrays are filled with `undefined`.
|
|
11
|
+
*
|
|
9
12
|
* @template T - The tuple type inside the zipped array.
|
|
10
13
|
* @returns A function that maps zipped tuples to arrays grouped by tuple position.
|
|
11
14
|
*
|
package/dist/fp/array/unzip.js
CHANGED
|
@@ -6,6 +6,9 @@ const require_unzip = require("../../array/unzip.js");
|
|
|
6
6
|
* The returned function is the data-last form of the main {@link unzip} utility.
|
|
7
7
|
* Use it with {@link pipe}.
|
|
8
8
|
*
|
|
9
|
+
* When the returned function is invoked, the result's length matches the longest nested array.
|
|
10
|
+
* Missing positions in shorter arrays are filled with `undefined`.
|
|
11
|
+
*
|
|
9
12
|
* @template T - The tuple type inside the zipped array.
|
|
10
13
|
* @returns A function that maps zipped tuples to arrays grouped by tuple position.
|
|
11
14
|
*
|
package/dist/fp/array/unzip.mjs
CHANGED
|
@@ -6,6 +6,9 @@ import { unzip as unzip$1 } from "../../array/unzip.mjs";
|
|
|
6
6
|
* The returned function is the data-last form of the main {@link unzip} utility.
|
|
7
7
|
* Use it with {@link pipe}.
|
|
8
8
|
*
|
|
9
|
+
* When the returned function is invoked, the result's length matches the longest nested array.
|
|
10
|
+
* Missing positions in shorter arrays are filled with `undefined`.
|
|
11
|
+
*
|
|
9
12
|
* @template T - The tuple type inside the zipped array.
|
|
10
13
|
* @returns A function that maps zipped tuples to arrays grouped by tuple position.
|
|
11
14
|
*
|