ts-data-forge 14.6.0 → 14.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array/impl/array-utils-creation.mjs +126 -26
- package/dist/array/impl/array-utils-creation.mjs.map +1 -1
- package/dist/array/impl/array-utils-element-access.mjs +63 -30
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
- package/dist/array/impl/array-utils-iterators.mjs +69 -53
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +109 -73
- package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +71 -33
- package/dist/array/impl/array-utils-length-bounded-array-guard.mjs.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +102 -73
- package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +77 -33
- package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs.map +1 -1
- package/dist/array/impl/array-utils-modification.mjs +75 -122
- package/dist/array/impl/array-utils-modification.mjs.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs +100 -150
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.mjs +110 -134
- package/dist/array/impl/array-utils-search.mjs.map +1 -1
- package/dist/array/impl/array-utils-set-op.mjs +146 -38
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
- package/dist/array/impl/array-utils-size.mjs +10 -8
- package/dist/array/impl/array-utils-size.mjs.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs +13 -50
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +94 -78
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +291 -199
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +54 -56
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/array/impl/index.mjs +17 -17
- package/dist/array/impl/index.mjs.map +1 -1
- package/dist/array/index.mjs +2 -3
- package/dist/array/index.mjs.map +1 -1
- package/dist/collections/imap-mapped.mjs +335 -291
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.mjs +280 -239
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/index.mjs +7 -7
- package/dist/collections/index.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +448 -263
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.mjs +328 -201
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.mjs +183 -151
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.mjs +169 -140
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.mjs +4 -77
- package/dist/entry-point.mjs.map +1 -1
- package/dist/expect-type.mjs +70 -4
- package/dist/expect-type.mjs.map +1 -1
- package/dist/functional/async-result/async-result.mjs +2 -3
- package/dist/functional/async-result/async-result.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-flat-map.mjs +19 -21
- package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-from-promise.mjs +9 -10
- package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-from-throwable.mjs +12 -14
- package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-map-err.mjs +16 -19
- package/dist/functional/async-result/impl/async-result-map-err.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-map.mjs +16 -19
- package/dist/functional/async-result/impl/async-result-map.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +36 -9
- package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +1 -1
- package/dist/functional/async-result/impl/index.mjs +8 -7
- package/dist/functional/async-result/impl/index.mjs.map +1 -1
- package/dist/functional/async-result/impl/types.mjs +2 -2
- package/dist/functional/async-result/impl/types.mjs.map +1 -1
- package/dist/functional/async-result/index.mjs +2 -3
- package/dist/functional/async-result/index.mjs.map +1 -1
- package/dist/functional/index.mjs +7 -11
- package/dist/functional/index.mjs.map +1 -1
- package/dist/functional/match.mjs +27 -13
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional/impl/index.mjs +19 -18
- package/dist/functional/optional/impl/index.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-expect-to-be.mjs +16 -18
- package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-filter.mjs +17 -19
- package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-flat-map.mjs +13 -15
- package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-from-nullable.mjs +26 -5
- package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-none.mjs +21 -5
- package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.mjs +26 -8
- package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.mjs +22 -5
- package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-map.mjs +16 -18
- package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-match.mjs +16 -18
- package/dist/functional/optional/impl/optional-match.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-none.mjs +18 -5
- package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-or-else.mjs +13 -15
- package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-some.mjs +23 -7
- package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.mjs +28 -5
- package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-or.mjs +12 -14
- package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs +34 -9
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap.mjs +6 -9
- package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-zip.mjs +36 -5
- package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
- package/dist/functional/optional/impl/tag.mjs +4 -5
- package/dist/functional/optional/impl/tag.mjs.map +1 -1
- package/dist/functional/optional/impl/types.mjs +2 -2
- package/dist/functional/optional/impl/types.mjs.map +1 -1
- package/dist/functional/optional/index.mjs +2 -3
- package/dist/functional/optional/index.mjs.map +1 -1
- package/dist/functional/optional/optional.mjs +2 -3
- package/dist/functional/optional/optional.mjs.map +1 -1
- package/dist/functional/pipe.mjs +42 -14
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result/impl/index.mjs +28 -27
- package/dist/functional/result/impl/index.mjs.map +1 -1
- package/dist/functional/result/impl/result-err.mjs +29 -7
- package/dist/functional/result/impl/result-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-expect-to-be.mjs +17 -18
- package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
- package/dist/functional/result/impl/result-flat-map.mjs +18 -21
- package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-fold.mjs +18 -21
- package/dist/functional/result/impl/result-fold.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-optional.mjs +17 -20
- package/dist/functional/result/impl/result-from-optional.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-promise.mjs +37 -8
- package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.mjs +41 -14
- package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-err.mjs +21 -5
- package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-ok.mjs +21 -5
- package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-result.mjs +25 -7
- package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
- package/dist/functional/result/impl/result-map-err.mjs +18 -21
- package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-map.mjs +18 -21
- package/dist/functional/result/impl/result-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-match.mjs +17 -21
- package/dist/functional/result/impl/result-match.mjs.map +1 -1
- package/dist/functional/result/impl/result-ok.mjs +29 -7
- package/dist/functional/result/impl/result-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-or-else.mjs +14 -15
- package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
- package/dist/functional/result/impl/result-safe-try.mjs +32 -21
- package/dist/functional/result/impl/result-safe-try.mjs.map +1 -1
- package/dist/functional/result/impl/result-safe-unwrap.mjs +40 -12
- package/dist/functional/result/impl/result-safe-unwrap.mjs.map +1 -1
- package/dist/functional/result/impl/result-swap.mjs +23 -8
- package/dist/functional/result/impl/result-swap.mjs.map +1 -1
- package/dist/functional/result/impl/result-to-optional.mjs +30 -7
- package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-or.mjs +13 -14
- package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs +43 -20
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.mjs +33 -8
- package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs +13 -14
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok.mjs +6 -9
- package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs +38 -11
- package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-zip.mjs +35 -5
- package/dist/functional/result/impl/result-zip.mjs.map +1 -1
- package/dist/functional/result/impl/tag.mjs +4 -5
- package/dist/functional/result/impl/tag.mjs.map +1 -1
- package/dist/functional/result/impl/types.mjs +2 -2
- package/dist/functional/result/impl/types.mjs.map +1 -1
- package/dist/functional/result/index.mjs +2 -3
- package/dist/functional/result/index.mjs.map +1 -1
- package/dist/functional/result/result.mjs +2 -3
- package/dist/functional/result/result.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/index.mjs +29 -28
- package/dist/functional/ternary-result/impl/index.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/tag.mjs +6 -6
- package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs +17 -7
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +15 -18
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +28 -32
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +24 -26
- package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +21 -8
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +28 -13
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +19 -5
- package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +21 -5
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +28 -8
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +20 -5
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +17 -18
- package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +20 -23
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map.mjs +24 -26
- package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +18 -7
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +11 -14
- package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +24 -10
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +11 -14
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +30 -19
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +20 -8
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +11 -14
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +7 -9
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +30 -22
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +11 -14
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +27 -17
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +20 -8
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +21 -8
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +47 -19
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/types.mjs +2 -2
- package/dist/functional/ternary-result/impl/types.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/variant-name.mjs +12 -14
- package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
- package/dist/functional/ternary-result/index.mjs +2 -3
- package/dist/functional/ternary-result/index.mjs.map +1 -1
- package/dist/functional/ternary-result/ternary-result.mjs +2 -3
- package/dist/functional/ternary-result/ternary-result.mjs.map +1 -1
- package/dist/guard/has-key.mjs +43 -4
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/index.mjs +8 -8
- package/dist/guard/index.mjs.map +1 -1
- package/dist/guard/is-non-empty-string.mjs +39 -4
- package/dist/guard/is-non-empty-string.mjs.map +1 -1
- package/dist/guard/is-non-null-object.mjs +36 -4
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-primitive.mjs +46 -15
- package/dist/guard/is-primitive.mjs.map +1 -1
- package/dist/guard/is-record.mjs +89 -6
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.mjs +404 -19
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.mjs +42 -4
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.mjs +12 -65
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/index.mjs +2 -2
- package/dist/iterator/index.mjs.map +1 -1
- package/dist/iterator/range.mjs +19 -57
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/index.mjs +2 -2
- package/dist/json/index.mjs.map +1 -1
- package/dist/json/json.mjs +346 -105
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +148 -137
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/index.mjs +33 -33
- package/dist/number/branded-types/index.mjs.map +1 -1
- package/dist/number/branded-types/int.mjs +245 -209
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.mjs +141 -131
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.mjs +141 -131
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/negative-finite-number.mjs +155 -149
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/negative-int.mjs +125 -110
- package/dist/number/branded-types/negative-int.mjs.map +1 -1
- package/dist/number/branded-types/negative-safe-int.mjs +126 -115
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +164 -154
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +137 -125
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +137 -125
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.mjs +143 -139
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-int.mjs +116 -99
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.mjs +118 -107
- package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +144 -129
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +102 -82
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +118 -105
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +118 -105
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +122 -108
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +118 -104
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +118 -104
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +167 -160
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +260 -224
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +134 -122
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +134 -122
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +292 -258
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +134 -122
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +134 -122
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +284 -255
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +135 -124
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.mjs +248 -211
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.mjs +132 -121
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.mjs +132 -121
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/index.mjs +3 -3
- package/dist/number/enum/index.mjs.map +1 -1
- package/dist/number/enum/int8.mjs +146 -131
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.mjs +133 -119
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/index.mjs +6 -37
- package/dist/number/index.mjs.map +1 -1
- package/dist/number/num-arithmetic-types.mjs +42 -1
- package/dist/number/num-arithmetic-types.mjs.map +1 -1
- package/dist/number/num.mjs +541 -83
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.mjs +294 -133
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/index.mjs +2 -2
- package/dist/object/index.mjs.map +1 -1
- package/dist/object/object.mjs +355 -202
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/cast-mutable.mjs +38 -11
- package/dist/others/cast-mutable.mjs.map +1 -1
- package/dist/others/cast-readonly.mjs +37 -11
- package/dist/others/cast-readonly.mjs.map +1 -1
- package/dist/others/debounce-function.mjs +22 -11
- package/dist/others/debounce-function.mjs.map +1 -1
- package/dist/others/fast-deep-equal.mjs +70 -51
- package/dist/others/fast-deep-equal.mjs.map +1 -1
- package/dist/others/if-then.mjs +32 -5
- package/dist/others/if-then.mjs.map +1 -1
- package/dist/others/index.mjs +10 -10
- package/dist/others/index.mjs.map +1 -1
- package/dist/others/map-nullable.mjs +11 -13
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.mjs +14 -16
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/tuple.mjs +52 -4
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.mjs +91 -47
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/index.mjs +2 -2
- package/dist/promise/index.mjs.map +1 -1
- package/dist/promise/promise.mjs +51 -10
- package/dist/promise/promise.mjs.map +1 -1
- package/dist/string/index.mjs +2 -2
- package/dist/string/index.mjs.map +1 -1
- package/dist/string/str.mjs +250 -83
- package/dist/string/str.mjs.map +1 -1
- package/dist/types.mjs +3 -2
- package/dist/types.mjs.map +1 -1
- package/package.json +5 -6
- package/src/array/impl/array-utils-length-constraint-preservation.test.mts +2 -2
- package/src/collections/imap-mapped.mts +4 -4
- package/src/collections/imap.mts +1 -1
- package/src/collections/imap.test.mts +1 -1
- package/src/collections/iset-mapped.mts +2 -1
- package/src/collections/iset.mts +1 -1
- package/src/functional/async-result.test.mts +3 -2
- package/src/functional/optional.test.mts +2 -1
- package/src/functional/result.test.mts +0 -2
- package/src/guard/is-non-empty-string.test.mts +2 -2
- package/src/guard/is-non-null-object.test.mts +3 -3
- package/src/guard/is-primitive.test.mts +3 -3
- package/src/guard/is-type.test.mts +3 -3
- package/src/json/json.test.mts +1 -1
- package/src/number/enum/int8.mts +1 -1
|
@@ -1,136 +1,89 @@
|
|
|
1
|
-
import '../../number/
|
|
2
|
-
import '../../number/branded-types/int.mjs';
|
|
3
|
-
import '../../number/branded-types/int16.mjs';
|
|
4
|
-
import '../../number/branded-types/int32.mjs';
|
|
5
|
-
import '../../number/branded-types/negative-finite-number.mjs';
|
|
6
|
-
import '../../number/branded-types/negative-int.mjs';
|
|
7
|
-
import '../../number/branded-types/negative-safe-int.mjs';
|
|
8
|
-
import '../../number/branded-types/non-negative-finite-number.mjs';
|
|
9
|
-
import '../../number/branded-types/non-negative-int16.mjs';
|
|
10
|
-
import '../../number/branded-types/non-negative-int32.mjs';
|
|
11
|
-
import '../../number/branded-types/non-positive-finite-number.mjs';
|
|
12
|
-
import '../../number/branded-types/non-positive-int.mjs';
|
|
13
|
-
import '../../number/branded-types/non-positive-safe-int.mjs';
|
|
14
|
-
import '../../number/branded-types/non-zero-finite-number.mjs';
|
|
15
|
-
import '../../number/branded-types/non-zero-int.mjs';
|
|
16
|
-
import '../../number/branded-types/non-zero-int16.mjs';
|
|
17
|
-
import '../../number/branded-types/non-zero-int32.mjs';
|
|
18
|
-
import '../../number/branded-types/non-zero-safe-int.mjs';
|
|
19
|
-
import '../../number/branded-types/non-zero-uint16.mjs';
|
|
20
|
-
import '../../number/branded-types/non-zero-uint32.mjs';
|
|
21
|
-
import '../../number/branded-types/positive-finite-number.mjs';
|
|
22
|
-
import '../../number/branded-types/positive-int.mjs';
|
|
23
|
-
import '../../number/branded-types/positive-int16.mjs';
|
|
24
|
-
import '../../number/branded-types/positive-int32.mjs';
|
|
25
|
-
import '../../number/branded-types/positive-safe-int.mjs';
|
|
26
|
-
import '../../number/branded-types/positive-uint16.mjs';
|
|
27
|
-
import { asPositiveUint32 } from '../../number/branded-types/positive-uint32.mjs';
|
|
28
|
-
import '../../number/branded-types/safe-int.mjs';
|
|
29
|
-
import '../../number/branded-types/safe-uint.mjs';
|
|
30
|
-
import '../../number/branded-types/uint.mjs';
|
|
31
|
-
import '../../number/branded-types/uint16.mjs';
|
|
32
|
-
import '../../number/branded-types/uint32.mjs';
|
|
33
|
-
import '../../number/enum/int8.mjs';
|
|
34
|
-
import '../../number/enum/uint8.mjs';
|
|
35
|
-
import '../../number/num.mjs';
|
|
36
|
-
import '../../number/refined-number-utils.mjs';
|
|
37
|
-
import { castMutable } from '../../others/cast-mutable.mjs';
|
|
38
|
-
import '@sindresorhus/is';
|
|
39
|
-
import { create, copy } from './array-utils-creation.mjs';
|
|
1
|
+
import { asPositiveUint32 } from '../../number/index.mjs';
|
|
40
2
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
3
|
+
import { create } from './array-utils-creation.mjs';
|
|
4
|
+
export function set(...args) {
|
|
5
|
+
switch (args.length) {
|
|
6
|
+
case 3:
|
|
7
|
+
return setImpl(...args);
|
|
8
|
+
case 2:
|
|
9
|
+
return (array) => setImpl(array, ...args);
|
|
10
|
+
}
|
|
48
11
|
}
|
|
49
12
|
const setImpl = (array, index, newValue) => array.with(index, newValue);
|
|
50
|
-
function toUpdated(...args) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
13
|
+
export function toUpdated(...args) {
|
|
14
|
+
switch (args.length) {
|
|
15
|
+
case 3:
|
|
16
|
+
return toUpdatedImpl(...args);
|
|
17
|
+
case 2:
|
|
18
|
+
return (array) => toUpdatedImpl(array, ...args);
|
|
19
|
+
}
|
|
57
20
|
}
|
|
58
|
-
const toUpdatedImpl = (array, index, updater) =>
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
21
|
+
const toUpdatedImpl = (array, index, updater) =>
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
23
|
+
array.with(index, updater(array[index]));
|
|
24
|
+
export function toInserted(...args) {
|
|
25
|
+
switch (args.length) {
|
|
26
|
+
case 3:
|
|
27
|
+
return toInsertedImpl(...args);
|
|
28
|
+
case 2:
|
|
29
|
+
return (array) => toInsertedImpl(array, ...args);
|
|
30
|
+
}
|
|
69
31
|
}
|
|
70
|
-
const toInsertedImpl = (array, index, newValue) =>
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
case 2:
|
|
81
|
-
return toRemovedImpl(...args);
|
|
82
|
-
case 1:
|
|
83
|
-
return (array) => toRemovedImpl(array, ...args);
|
|
84
|
-
}
|
|
32
|
+
const toInsertedImpl = (array, index, newValue) =>
|
|
33
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
34
|
+
array.toSpliced(index, 0, newValue);
|
|
35
|
+
export function toRemoved(...args) {
|
|
36
|
+
switch (args.length) {
|
|
37
|
+
case 2:
|
|
38
|
+
return toRemovedImpl(...args);
|
|
39
|
+
case 1:
|
|
40
|
+
return (array) => toRemovedImpl(array, ...args);
|
|
41
|
+
}
|
|
85
42
|
}
|
|
86
43
|
const toRemovedImpl = (array, index) => array.toSpliced(index, 1);
|
|
87
|
-
function toPushed(...args) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
44
|
+
export function toPushed(...args) {
|
|
45
|
+
switch (args.length) {
|
|
46
|
+
case 2:
|
|
47
|
+
return toPushedImpl(...args);
|
|
48
|
+
case 1:
|
|
49
|
+
return (array) => toPushedImpl(array, ...args);
|
|
50
|
+
}
|
|
94
51
|
}
|
|
95
|
-
const toPushedImpl = (array, newValue) =>
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
52
|
+
const toPushedImpl = (array, newValue) =>
|
|
53
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
54
|
+
array.toSpliced(array.length, 0, newValue);
|
|
55
|
+
export function toUnshifted(...args) {
|
|
56
|
+
switch (args.length) {
|
|
57
|
+
case 2:
|
|
58
|
+
return toUnshiftedImpl(...args);
|
|
59
|
+
case 1:
|
|
60
|
+
return (array) => toUnshiftedImpl(array, ...args);
|
|
61
|
+
}
|
|
106
62
|
}
|
|
107
|
-
const toUnshiftedImpl = (array, newValue) =>
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
63
|
+
const toUnshiftedImpl = (array, newValue) =>
|
|
64
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
65
|
+
array.toSpliced(0, 0, newValue);
|
|
66
|
+
export function toFilled(...args) {
|
|
67
|
+
switch (args.length) {
|
|
68
|
+
case 2:
|
|
69
|
+
return toFilledImpl(...args);
|
|
70
|
+
case 1:
|
|
71
|
+
return (array) => toFilledImpl(array, ...args);
|
|
72
|
+
}
|
|
118
73
|
}
|
|
119
74
|
const toFilledImpl = (array, value) => create(asPositiveUint32(array.length), value);
|
|
120
|
-
function toRangeFilled(...args) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
75
|
+
export function toRangeFilled(...args) {
|
|
76
|
+
switch (args.length) {
|
|
77
|
+
case 3:
|
|
78
|
+
return toRangeFilledImpl(...args);
|
|
79
|
+
case 2:
|
|
80
|
+
return (array) => toRangeFilledImpl(array, ...args);
|
|
81
|
+
}
|
|
127
82
|
}
|
|
128
83
|
const toRangeFilledImpl = (array, value, fillRange) => {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
84
|
+
const [start, end] = fillRange;
|
|
85
|
+
const mut_cp = copy(array);
|
|
86
|
+
mut_cp.fill(value, start, end);
|
|
87
|
+
return mut_cp;
|
|
133
88
|
};
|
|
134
|
-
|
|
135
|
-
export { set, toFilled, toInserted, toPushed, toRangeFilled, toRemoved, toUnshifted, toUpdated };
|
|
136
|
-
//# sourceMappingURL=array-utils-modification.mjs.map
|
|
89
|
+
//# sourceMappingURL=array-utils-modification.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-modification.mjs","sources":["../../../src/array/impl/array-utils-modification.mts"],"sourcesContent":["import {\n type ChangeArrayElement,\n type ConstrainedList,\n type FixedLengthTuple,\n type Increment,\n type IsFixedLengthList,\n type NonEmptyArray,\n type UnknownBrand,\n} from 'ts-type-forge';\nimport { asPositiveUint32 } from '../../number/index.mjs';\nimport { castMutable } from '../../others/index.mjs';\nimport {\n type ArgArrayIndex,\n type ArgArrayIndexWithNegative,\n type SizeType,\n} from '../../types.mjs';\nimport { copy, create } from './array-utils-creation.mjs';\n\n/**\n * Returns a new array with an element at the specified index replaced.\n *\n * @example\n *\n * ```ts\n * const scores: readonly number[] = [10, 20, 30] as const;\n *\n * const updated = Arr.set(scores, 1, 25);\n *\n * assert.deepStrictEqual(updated, [10, 25, 30]);\n * ```\n */\nexport function set<\n const Ar extends readonly unknown[],\n const I extends ArgArrayIndex<Ar>,\n const V = Ar[number],\n>(array: Ar, index: I, newValue: V): ReplacedAt<Ar, I, V>;\n\n// curried version\nexport function set<const I extends SizeType.ArgArr, const V>(\n index: I,\n newValue: V,\n): <const Ar extends readonly unknown[]>(array: Ar) => ReplacedAt<Ar, I, V>;\n\nexport function set<E, const V = E>(\n ...args:\n | readonly [array: readonly E[], index: SizeType.ArgArr, newValue: V]\n | readonly [index: SizeType.ArgArr, newValue: V]\n): readonly (E | V)[] | ((array: readonly E[]) => readonly (E | V)[]) {\n switch (args.length) {\n case 3:\n return setImpl(...args);\n\n case 2:\n return (array) => setImpl(array, ...args);\n }\n}\n\nconst setImpl = <E, const V = E>(\n array: readonly E[],\n index: SizeType.ArgArr,\n newValue: V,\n): readonly (E | V)[] => (array as readonly (E | V)[]).with(index, newValue);\n\n/**\n * Returns a new array with an element at the specified index updated by applying a function.\n *\n * @example\n *\n * ```ts\n * const temperatures: readonly number[] = [20, 21, 22] as const;\n *\n * const increased = Arr.toUpdated(temperatures, 1, (value) => value + 5);\n *\n * const incrementLast = Arr.toUpdated<2, number>(\n * 2,\n * (value) => value + 1,\n * )(temperatures);\n *\n * assert.deepStrictEqual(increased, [20, 26, 22]);\n *\n * assert.deepStrictEqual(incrementLast, [20, 21, 23]);\n * ```\n */\nexport function toUpdated<\n const Ar extends readonly unknown[],\n const I extends ArgArrayIndex<Ar>,\n const V = Ar[number],\n>(array: Ar, index: I, updater: (prev: Ar[number]) => V): ReplacedAt<Ar, I, V>;\n\n// curried version\nexport function toUpdated<const I extends SizeType.ArgArr, E, const V = E>(\n index: I,\n updater: (prev: E) => V,\n): <const Ar extends readonly E[]>(array: Ar) => ReplacedAt<Ar, I, V>;\n\nexport function toUpdated<E, V = E>(\n ...args:\n | readonly [\n array: readonly E[],\n index: SizeType.ArgArr,\n updater: (prev: E) => V,\n ]\n | readonly [index: SizeType.ArgArr, updater: (prev: E) => V]\n): readonly (E | V)[] | ((array: readonly E[]) => readonly (E | V)[]) {\n switch (args.length) {\n case 3:\n return toUpdatedImpl(...args);\n\n case 2:\n return (array) => toUpdatedImpl(array, ...args);\n }\n}\n\nconst toUpdatedImpl = <E, V = E>(\n array: readonly E[],\n index: SizeType.ArgArr,\n updater: (prev: E) => V,\n): readonly (E | V)[] =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n (array as readonly (E | V)[]).with(index, updater(array[index]!));\n\n/**\n * Returns a new array with a value inserted at the specified index.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 2, 4] as const;\n *\n * const withThree = Arr.toInserted(numbers, 2, 3);\n *\n * const appendFive = Arr.toInserted(3, 5)(numbers);\n *\n * assert.deepStrictEqual(withThree, [1, 2, 3, 4]);\n *\n * assert.deepStrictEqual(appendFive, [1, 2, 4, 5]);\n * ```\n */\nexport function toInserted<\n const Ar extends readonly unknown[],\n const V = Ar[number],\n>(\n array: Ar,\n index: ArgArrayIndexWithNegative<Ar>,\n newValue: V,\n): IsFixedLengthList<Ar> extends true\n ? FixedLengthTuple<CastToNumber<Increment<Ar['length']>>, Ar[number] | V>\n : NonEmptyArray<Ar[number] | V>;\n\n// curried version\nexport function toInserted<const V>(\n index: SizeType.ArgArrWithNegative,\n newValue: V,\n): <const Ar extends readonly unknown[]>(\n array: Ar,\n) => IsFixedLengthList<Ar> extends true\n ? FixedLengthTuple<CastToNumber<Increment<Ar['length']>>, Ar[number] | V>\n : NonEmptyArray<Ar[number] | V>;\n\nexport function toInserted<E, const V = E>(\n ...args:\n | readonly [\n array: readonly E[],\n index: SizeType.ArgArrWithNegative,\n newValue: V,\n ]\n | readonly [index: SizeType.ArgArrWithNegative, newValue: V]\n): NonEmptyArray<E | V> | ((array: readonly E[]) => NonEmptyArray<E | V>) {\n switch (args.length) {\n case 3:\n return toInsertedImpl(...args);\n\n case 2:\n return (array) => toInsertedImpl(array, ...args);\n }\n}\n\nconst toInsertedImpl = <E, const V = E>(\n array: readonly E[],\n index: SizeType.ArgArrWithNegative,\n newValue: V,\n): NonEmptyArray<E | V> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n (array as readonly (E | V)[]).toSpliced(\n index,\n 0,\n newValue,\n ) as unknown as NonEmptyArray<E | V>;\n\ntype CastToNumber<T> = T extends number ? T : never;\n\n/**\n * Returns a new array with the element at the specified index removed.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c', 'd'] as const;\n *\n * const withoutSecond = Arr.toRemoved(letters, 1);\n *\n * const withoutFirstCurried = Arr.toRemoved(0)(letters);\n *\n * assert.deepStrictEqual(withoutSecond, ['a', 'c', 'd']);\n *\n * assert.deepStrictEqual(withoutFirstCurried, ['b', 'c', 'd']);\n * ```\n */\nexport function toRemoved<const Ar extends readonly unknown[]>(\n array: Ar,\n index: ArgArrayIndexWithNegative<Ar>,\n): readonly Ar[number][];\n\nexport function toRemoved(\n index: SizeType.ArgArrWithNegative,\n): <E>(array: readonly E[]) => readonly E[];\n\nexport function toRemoved<E>(\n ...args:\n | readonly [array: readonly E[], index: SizeType.ArgArrWithNegative]\n | readonly [index: SizeType.ArgArrWithNegative]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 2:\n return toRemovedImpl(...args);\n\n case 1:\n return (array) => toRemovedImpl(array, ...args);\n }\n}\n\nconst toRemovedImpl = <E,>(\n array: readonly E[],\n index: SizeType.ArgArrWithNegative,\n): readonly E[] => array.toSpliced(index, 1);\n\n/**\n * Returns a new array with a value appended to the end.\n *\n * @example\n *\n * ```ts\n * const base = [1, 2] as const;\n *\n * const appended = Arr.toPushed(base, 3);\n *\n * const appendedCurried = Arr.toPushed(4)(base);\n *\n * // The result is guaranteed non-empty, so it is assignable to NonEmptyArray.\n * const nonEmpty: NonEmptyArray<number> = appended;\n *\n * assert.deepStrictEqual<readonly number[]>(appended, [1, 2, 3]);\n *\n * assert.deepStrictEqual<readonly number[]>(appendedCurried, [1, 2, 4]);\n *\n * assert.isTrue(nonEmpty.length >= 1);\n * ```\n */\nexport function toPushed<const Ar extends readonly unknown[], const V>(\n array: Ar,\n newValue: V,\n): readonly [...Ar, V] & NonEmptyArray<Ar[number] | V>;\n\nexport function toPushed<const V>(\n newValue: V,\n): <const Ar extends readonly unknown[]>(\n array: Ar,\n) => readonly [...Ar, V] & NonEmptyArray<Ar[number] | V>;\n\nexport function toPushed<const Ar extends readonly unknown[], const V>(\n ...args: readonly [array: Ar, newValue: V] | readonly [newValue: V]\n): readonly [...Ar, V] | ((array: Ar) => readonly [...Ar, V]) {\n switch (args.length) {\n case 2:\n return toPushedImpl(...args);\n\n case 1:\n return (array) => toPushedImpl(array, ...args);\n }\n}\n\nconst toPushedImpl = <const Ar extends readonly unknown[], const V>(\n array: Ar,\n newValue: V,\n): readonly [...Ar, V] =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n array.toSpliced(array.length, 0, newValue) as unknown as readonly [...Ar, V];\n\n/**\n * Returns a new array with a value prepended to the beginning.\n *\n * @example\n *\n * ```ts\n * const base = [2, 3] as const;\n *\n * const prefixed = Arr.toUnshifted(base, 1);\n *\n * const prefixedCurried = Arr.toUnshifted(0)(base);\n *\n * // The result is guaranteed non-empty, so it is assignable to NonEmptyArray.\n * const nonEmpty: NonEmptyArray<number> = prefixed;\n *\n * assert.deepStrictEqual<readonly number[]>(prefixed, [1, 2, 3]);\n *\n * assert.deepStrictEqual<readonly number[]>(prefixedCurried, [0, 2, 3]);\n *\n * assert.isTrue(nonEmpty.length >= 1);\n * ```\n */\nexport function toUnshifted<const Ar extends readonly unknown[], const V>(\n array: Ar,\n newValue: V,\n): readonly [V, ...Ar] & NonEmptyArray<V | Ar[number]>;\n\nexport function toUnshifted<const V>(\n newValue: V,\n): <const Ar extends readonly unknown[]>(\n array: Ar,\n) => readonly [V, ...Ar] & NonEmptyArray<V | Ar[number]>;\n\nexport function toUnshifted<Ar extends readonly unknown[], const V>(\n ...args: readonly [array: Ar, newValue: V] | readonly [newValue: V]\n): readonly [V, ...Ar] | ((array: Ar) => readonly [V, ...Ar]) {\n switch (args.length) {\n case 2:\n return toUnshiftedImpl(...args);\n\n case 1:\n return (array) => toUnshiftedImpl(array, ...args);\n }\n}\n\nconst toUnshiftedImpl = <Ar extends readonly unknown[], const V>(\n array: Ar,\n newValue: V,\n): readonly [V, ...Ar] =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n array.toSpliced(0, 0, newValue) as unknown as readonly [V, ...Ar];\n\n/**\n * Returns a new array with all elements replaced by the specified value.\n *\n * @example\n *\n * ```ts\n * const base = [1, 2, 3] as const;\n *\n * const filled = Arr.toFilled(base, 0);\n *\n * const filledCurried = Arr.toFilled('x')(base);\n *\n * assert.deepStrictEqual(filled, [0, 0, 0]);\n *\n * assert.deepStrictEqual(filledCurried, ['x', 'x', 'x']);\n * ```\n */\nexport function toFilled<\n const Ar extends readonly unknown[] & UnknownBrand,\n const V,\n>(array: Ar, value: V): ChangeArrayElement<Ar, V>;\n\n// For an array or tuple that carries no length brand the homomorphic mapping\n// already covers every case the conditional spelled out — a fixed-length tuple\n// keeps its length, `readonly [A, ...A[]]` stays non-empty, and `readonly A[]`\n// stays unbounded. Stating it directly is what keeps this usable from a\n// caller that is itself generic over the array: a conditional a *generic* `Ar`\n// cannot decide stays deferred, and its branded branch is then not assignable\n// to the caller's own mapping.\nexport function toFilled<const Ar extends readonly unknown[], const V>(\n array: Ar,\n value: V,\n): Readonly<{ [K in keyof Ar]: V }>;\n\n// curried version — the two cases have to be overloads of the *returned*\n// function, spelled as an intersection of function types (see `Arr.map`).\nexport function toFilled<const V>(\n value: V,\n): (<const Ar extends readonly unknown[] & UnknownBrand>(\n array: Ar,\n) => ChangeArrayElement<Ar, V>) &\n (<const Ar extends readonly unknown[]>(\n array: Ar,\n ) => Readonly<{ [K in keyof Ar]: V }>);\n\nexport function toFilled<E>(\n ...args: readonly [array: readonly E[], value: E] | readonly [value: E]\n): readonly E[] | ((array: readonly E[]) => readonly E[]) {\n switch (args.length) {\n case 2:\n return toFilledImpl(...args);\n\n case 1:\n return (array) => toFilledImpl(array, ...args);\n }\n}\n\nconst toFilledImpl = <E,>(array: readonly E[], value: E): readonly E[] =>\n create(asPositiveUint32(array.length), value);\n\n/**\n * Returns a new array with elements in the specified range replaced by the specified value.\n *\n * @example\n *\n * ```ts\n * const base = [0, 1, 2, 3, 4] as const;\n *\n * const filledMiddle = Arr.toRangeFilled(base, 9, [1, 4]);\n *\n * const filledPrefix = Arr.toRangeFilled(8, [0, 2])(base);\n *\n * assert.deepStrictEqual(filledMiddle, [0, 9, 9, 9, 4]);\n *\n * assert.deepStrictEqual(filledPrefix, [8, 8, 2, 3, 4]);\n * ```\n */\nexport function toRangeFilled<\n const Ar extends readonly unknown[] & UnknownBrand,\n const V,\n>(\n array: Ar,\n value: V,\n fillRange: readonly [\n start: ArgArrayIndexWithNegative<Ar>,\n end: ArgArrayIndexWithNegative<Ar>,\n ],\n): ChangeArrayElement<Ar, V | Ar[number]>;\n\n// See `toFilled` for why the unbranded case states the homomorphic mapping\n// directly instead of going through a conditional.\nexport function toRangeFilled<const Ar extends readonly unknown[], const V>(\n array: Ar,\n value: V,\n fillRange: readonly [\n start: ArgArrayIndexWithNegative<Ar>,\n end: ArgArrayIndexWithNegative<Ar>,\n ],\n): Readonly<{ [K in keyof Ar]: V | Ar[number] }>;\n\n// curried version\nexport function toRangeFilled<const V>(\n value: V,\n fillRange: readonly [\n start: SizeType.ArgArrWithNegative,\n end: SizeType.ArgArrWithNegative,\n ],\n): (<const Ar extends readonly unknown[] & UnknownBrand>(\n array: Ar,\n) => ChangeArrayElement<Ar, V | Ar[number]>) &\n (<const Ar extends readonly unknown[]>(\n array: Ar,\n ) => Readonly<{ [K in keyof Ar]: V | Ar[number] }>);\n\nexport function toRangeFilled<E, const V>(\n ...args:\n | readonly [\n array: readonly E[],\n value: V,\n fillRange: readonly [\n start: SizeType.ArgArrWithNegative,\n end: SizeType.ArgArrWithNegative,\n ],\n ]\n | readonly [\n value: V,\n fillRange: readonly [\n start: SizeType.ArgArrWithNegative,\n end: SizeType.ArgArrWithNegative,\n ],\n ]\n): readonly (E | V)[] | ((array: readonly E[]) => readonly (E | V)[]) {\n switch (args.length) {\n case 3:\n return toRangeFilledImpl(...args);\n\n case 2:\n return (array) => toRangeFilledImpl(array, ...args);\n }\n}\n\nconst toRangeFilledImpl = <E, const V>(\n array: readonly E[],\n value: V,\n fillRange: readonly [\n start: SizeType.ArgArrWithNegative,\n end: SizeType.ArgArrWithNegative,\n ],\n): readonly (E | V)[] => {\n const [start, end] = fillRange;\n\n const mut_cp: (E | V)[] = castMutable(copy(array));\n\n mut_cp.fill(value, start, end);\n\n return mut_cp;\n};\n\n/**\n * The result of replacing the element at `I` of `Ar` with a `V`.\n *\n * `ConstrainedList.SetAt` replaces exactly one position when the index pins\n * one, which is what makes `Arr.set(xs, 1, v)` report `readonly [a, V, c]`\n * instead of widening every position to `a | V`.\n *\n * A union index needs the weaker answer, and this used to guard for it here:\n * `ArgArrayIndex<Ar>` for a tuple is the union of its indices, so\n * `Arr.set(tuple, someIndex, v)` with `someIndex: 0 | 2` binds `I = 0 | 2`, and\n * the upstream `List.SetAt` used to answer `readonly [V, b, V]` — a type that\n * *neither* possible runtime result satisfies, since the call replaces one\n * position or the other and never both.\n *\n * ts-type-forge 9.1.1 fixes that at the source and widens the candidate\n * positions itself, so the guard is gone. Upstream is the more precise of the\n * two: it widens only the positions the index can name, where the guard here\n * widened all of them — `Arr.set(t, i, 'x')` with `i: 0 | 2` on\n * `readonly [1, 2, 3]` now keeps the middle element at `2` rather than\n * reporting `2 | 'x'`.\n */\ntype ReplacedAt<\n Ar extends readonly unknown[],\n I extends number,\n V,\n> = ConstrainedList.SetAt<I, V, Ar>;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"array-utils-modification.mjs","sourceRoot":"","sources":["../../../src/array/impl/array-utils-modification.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,168 +1,118 @@
|
|
|
1
1
|
import { isError } from '@sindresorhus/is';
|
|
2
|
-
import '../../collections/
|
|
3
|
-
import {
|
|
4
|
-
import '../../
|
|
5
|
-
import '../../
|
|
6
|
-
import {
|
|
7
|
-
import { ok } from '../../functional/result/impl/result-ok.mjs';
|
|
8
|
-
import { none } from '../../functional/optional/impl/optional-none.mjs';
|
|
9
|
-
import { some } from '../../functional/optional/impl/optional-some.mjs';
|
|
10
|
-
import { isString, isUndefined } from '../../guard/is-type.mjs';
|
|
11
|
-
import { unknownToString } from '../../others/unknown-to-string.mjs';
|
|
12
|
-
import '../../number/branded-types/finite-number.mjs';
|
|
13
|
-
import '../../number/branded-types/int.mjs';
|
|
14
|
-
import '../../number/branded-types/int16.mjs';
|
|
15
|
-
import '../../number/branded-types/int32.mjs';
|
|
16
|
-
import '../../number/branded-types/negative-finite-number.mjs';
|
|
17
|
-
import '../../number/branded-types/negative-int.mjs';
|
|
18
|
-
import '../../number/branded-types/negative-safe-int.mjs';
|
|
19
|
-
import '../../number/branded-types/non-negative-finite-number.mjs';
|
|
20
|
-
import '../../number/branded-types/non-negative-int16.mjs';
|
|
21
|
-
import '../../number/branded-types/non-negative-int32.mjs';
|
|
22
|
-
import '../../number/branded-types/non-positive-finite-number.mjs';
|
|
23
|
-
import '../../number/branded-types/non-positive-int.mjs';
|
|
24
|
-
import '../../number/branded-types/non-positive-safe-int.mjs';
|
|
25
|
-
import '../../number/branded-types/non-zero-finite-number.mjs';
|
|
26
|
-
import '../../number/branded-types/non-zero-int.mjs';
|
|
27
|
-
import '../../number/branded-types/non-zero-int16.mjs';
|
|
28
|
-
import '../../number/branded-types/non-zero-int32.mjs';
|
|
29
|
-
import '../../number/branded-types/non-zero-safe-int.mjs';
|
|
30
|
-
import '../../number/branded-types/non-zero-uint16.mjs';
|
|
31
|
-
import '../../number/branded-types/non-zero-uint32.mjs';
|
|
32
|
-
import '../../number/branded-types/positive-finite-number.mjs';
|
|
33
|
-
import '../../number/branded-types/positive-int.mjs';
|
|
34
|
-
import '../../number/branded-types/positive-int16.mjs';
|
|
35
|
-
import '../../number/branded-types/positive-int32.mjs';
|
|
36
|
-
import '../../number/branded-types/positive-safe-int.mjs';
|
|
37
|
-
import '../../number/branded-types/positive-uint16.mjs';
|
|
38
|
-
import '../../number/branded-types/positive-uint32.mjs';
|
|
39
|
-
import '../../number/branded-types/safe-int.mjs';
|
|
40
|
-
import '../../number/branded-types/safe-uint.mjs';
|
|
41
|
-
import '../../number/branded-types/uint.mjs';
|
|
42
|
-
import '../../number/branded-types/uint16.mjs';
|
|
43
|
-
import { asUint32, Uint32 } from '../../number/branded-types/uint32.mjs';
|
|
44
|
-
import '../../number/enum/int8.mjs';
|
|
45
|
-
import '../../number/enum/uint8.mjs';
|
|
46
|
-
import { Num } from '../../number/num.mjs';
|
|
47
|
-
import '../../number/refined-number-utils.mjs';
|
|
2
|
+
import { IMap } from '../../collections/index.mjs';
|
|
3
|
+
import { Optional, Result } from '../../functional/index.mjs';
|
|
4
|
+
import { isString, isUndefined } from '../../guard/index.mjs';
|
|
5
|
+
import { asUint32, Num, Uint32 } from '../../number/index.mjs';
|
|
6
|
+
import { unknownToString } from '../../others/index.mjs';
|
|
48
7
|
import { isNonEmpty } from './array-utils-length-bounded-array-guard.mjs';
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return some(
|
|
56
|
-
array.reduce(
|
|
57
|
-
(currentMin, curr) => cmp(curr, currentMin) < 0 ? curr : currentMin,
|
|
58
|
-
array[0]
|
|
59
|
-
)
|
|
60
|
-
);
|
|
8
|
+
export function min(array, comparator) {
|
|
9
|
+
if (!isNonEmpty(array)) {
|
|
10
|
+
return Optional.none;
|
|
11
|
+
}
|
|
12
|
+
const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
|
|
13
|
+
return Optional.some(array.reduce((currentMin, curr) => (cmp(curr, currentMin) < 0 ? curr : currentMin), array[0]));
|
|
61
14
|
}
|
|
62
|
-
function max(array, comparator) {
|
|
63
|
-
|
|
64
|
-
|
|
15
|
+
export function max(array, comparator) {
|
|
16
|
+
const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
|
|
17
|
+
// Find max by finding min with an inverted comparator
|
|
18
|
+
return min(array, (x, y) => -cmp(x, y));
|
|
65
19
|
}
|
|
66
|
-
function minBy(array, comparatorValueMapper, comparator) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
);
|
|
20
|
+
export function minBy(array, comparatorValueMapper, comparator) {
|
|
21
|
+
return min(array, (x, y) => comparator === undefined
|
|
22
|
+
? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y))
|
|
23
|
+
: comparator(comparatorValueMapper(x), comparatorValueMapper(y)));
|
|
71
24
|
}
|
|
72
|
-
function maxBy(array, comparatorValueMapper, comparator) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
);
|
|
25
|
+
export function maxBy(array, comparatorValueMapper, comparator) {
|
|
26
|
+
return max(array, (x, y) => comparator === undefined
|
|
27
|
+
? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y))
|
|
28
|
+
: comparator(comparatorValueMapper(x), comparatorValueMapper(y)));
|
|
77
29
|
}
|
|
78
|
-
function count(...args) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
30
|
+
export function count(...args) {
|
|
31
|
+
switch (args.length) {
|
|
32
|
+
case 2:
|
|
33
|
+
return countImpl(...args);
|
|
34
|
+
case 1:
|
|
35
|
+
return (array) => countImpl(array, ...args);
|
|
36
|
+
}
|
|
85
37
|
}
|
|
86
|
-
const countImpl = (array, predicate) => array.reduce(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
case 1:
|
|
95
|
-
return (array) => countByImpl(array, ...args);
|
|
96
|
-
}
|
|
38
|
+
const countImpl = (array, predicate) => array.reduce((acc, curr, index) => predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc, asUint32(0));
|
|
39
|
+
export function countBy(...args) {
|
|
40
|
+
switch (args.length) {
|
|
41
|
+
case 2:
|
|
42
|
+
return countByImpl(...args);
|
|
43
|
+
case 1:
|
|
44
|
+
return (array) => countByImpl(array, ...args);
|
|
45
|
+
}
|
|
97
46
|
}
|
|
98
47
|
const countByImpl = (array, grouper) => {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
48
|
+
const mut_groups = new Map();
|
|
49
|
+
for (const [index, e] of array.entries()) {
|
|
50
|
+
const key = grouper(e, asUint32(index));
|
|
51
|
+
const curr = mut_groups.get(key) ?? 0;
|
|
52
|
+
mut_groups.set(key, asUint32(curr + 1));
|
|
53
|
+
}
|
|
54
|
+
return IMap.create(mut_groups);
|
|
106
55
|
};
|
|
107
|
-
function foldl(...args) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
56
|
+
export function foldl(...args) {
|
|
57
|
+
switch (args.length) {
|
|
58
|
+
case 3:
|
|
59
|
+
return foldlImpl(...args);
|
|
60
|
+
case 2:
|
|
61
|
+
return (array) => foldlImpl(array, ...args);
|
|
62
|
+
}
|
|
114
63
|
}
|
|
115
|
-
const foldlImpl = (array, callbackfn, initialValue) => array.reduce(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
case 2:
|
|
124
|
-
return (array) => foldrImpl(array, ...args);
|
|
125
|
-
}
|
|
64
|
+
const foldlImpl = (array, callbackfn, initialValue) => array.reduce((prev, curr, index) => callbackfn(prev, curr, asUint32(index)), initialValue);
|
|
65
|
+
export function foldr(...args) {
|
|
66
|
+
switch (args.length) {
|
|
67
|
+
case 3:
|
|
68
|
+
return foldrImpl(...args);
|
|
69
|
+
case 2:
|
|
70
|
+
return (array) => foldrImpl(array, ...args);
|
|
71
|
+
}
|
|
126
72
|
}
|
|
127
|
-
const foldrImpl = (array, callbackfn, initialValue) => array.reduceRight(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
);
|
|
131
|
-
function sum(array) {
|
|
132
|
-
return array.reduce((prev, curr) => prev + curr, 0);
|
|
73
|
+
const foldrImpl = (array, callbackfn, initialValue) => array.reduceRight((prev, curr, index) => callbackfn(prev, curr, asUint32(index)), initialValue);
|
|
74
|
+
export function sum(array) {
|
|
75
|
+
return array.reduce((prev, curr) => prev + curr, 0);
|
|
133
76
|
}
|
|
134
|
-
function sumBy(array, mapFn) {
|
|
135
|
-
|
|
77
|
+
export function sumBy(array, mapFn) {
|
|
78
|
+
return array.reduce((prev, curr) => prev + mapFn(curr), 0);
|
|
136
79
|
}
|
|
137
|
-
function join(...args) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
80
|
+
export function join(...args) {
|
|
81
|
+
switch (args.length) {
|
|
82
|
+
case 0:
|
|
83
|
+
return (array) => joinImpl(array, undefined);
|
|
84
|
+
case 1: {
|
|
85
|
+
const [arg] = args;
|
|
86
|
+
if (isString(arg) || isUndefined(arg)) {
|
|
87
|
+
return (array) => joinImpl(array, arg);
|
|
88
|
+
}
|
|
89
|
+
return joinImpl(arg, undefined);
|
|
90
|
+
}
|
|
91
|
+
case 2: {
|
|
92
|
+
const [array, separator] = args;
|
|
93
|
+
return joinImpl(array, separator);
|
|
94
|
+
}
|
|
151
95
|
}
|
|
152
|
-
}
|
|
153
96
|
}
|
|
154
97
|
const joinImpl = (array, separator) => {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
98
|
+
try {
|
|
99
|
+
const result = array.join(separator);
|
|
100
|
+
return Result.ok(result);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
return Result.err(isError(error) ? error : new Error(unknownToString(error)));
|
|
104
|
+
}
|
|
163
105
|
};
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Alias for `foldl`.
|
|
108
|
+
*
|
|
109
|
+
* @see {@link foldl}
|
|
110
|
+
*/
|
|
111
|
+
export const reduce = foldl;
|
|
112
|
+
/**
|
|
113
|
+
* Alias for `foldr`.
|
|
114
|
+
*
|
|
115
|
+
* @see {@link foldr}
|
|
116
|
+
*/
|
|
117
|
+
export const reduceRight = foldr;
|
|
118
|
+
//# sourceMappingURL=array-utils-reducing-value.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-reducing-value.mjs","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"sourcesContent":["import { isError } from '@sindresorhus/is';\nimport { type Int, type NonEmptyTuple, type Uint } from 'ts-type-forge';\nimport { IMap } from '../../collections/index.mjs';\nimport { Optional, Result } from '../../functional/index.mjs';\nimport { isString, isUndefined } from '../../guard/index.mjs';\nimport { asUint32, Num, Uint32 } from '../../number/index.mjs';\nimport { unknownToString } from '../../others/index.mjs';\nimport {\n type ArrayIndex,\n type MapSetKeyType,\n type SizeType,\n type Some,\n} from '../../types.mjs';\nimport { isNonEmpty } from './array-utils-length-bounded-array-guard.mjs';\n\n/**\n * Finds the minimum value in an array.\n *\n * @example\n *\n * ```ts\n * const values = [5, 3, 9] as const;\n *\n * const empty: readonly number[] = [] as const;\n *\n * const smallest = Arr.min(values);\n *\n * const none = Arr.min(empty);\n *\n * const custom = Arr.min(values, (a, b) => b - a);\n *\n * assert.deepStrictEqual(smallest, Optional.some(3));\n *\n * assert.deepStrictEqual(none, Optional.none);\n *\n * assert.deepStrictEqual(custom, Optional.some(9));\n * ```\n */\nexport function min<const Ar extends readonly number[]>(\n array: Ar,\n // If the array elements are numbers, comparator is optional.\n comparator?: (x: Ar[number], y: Ar[number]) => number,\n): Ar extends NonEmptyTuple<unknown> ? Some<Ar[number]> : Optional<Ar[number]>;\n\nexport function min<const Ar extends readonly unknown[]>(\n array: Ar,\n comparator: (x: Ar[number], y: Ar[number]) => number,\n): Ar extends NonEmptyTuple<unknown> ? Some<Ar[number]> : Optional<Ar[number]>;\n\nexport function min<E extends number>(\n array: readonly E[],\n comparator?: (x: E, y: E) => number,\n): Optional<E> {\n if (!isNonEmpty(array)) {\n return Optional.none;\n }\n\n const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));\n\n return Optional.some(\n array.reduce(\n (currentMin, curr) => (cmp(curr, currentMin) < 0 ? curr : currentMin),\n array[0],\n ),\n );\n}\n\n/**\n * Finds the maximum value in an array.\n *\n * @example\n *\n * ```ts\n * const values = [5, 3, 9] as const;\n *\n * const largest = Arr.max(values);\n *\n * const reversed = Arr.max(values, (a, b) => b - a);\n *\n * assert.deepStrictEqual(largest, Optional.some(9));\n *\n * assert.deepStrictEqual(reversed, Optional.some(3));\n * ```\n */\nexport function max<const Ar extends readonly number[]>(\n array: Ar,\n // If the array elements are numbers, comparator is optional.\n comparator?: (x: Ar[number], y: Ar[number]) => number,\n): Ar extends NonEmptyTuple<unknown> ? Some<Ar[number]> : Optional<Ar[number]>;\n\nexport function max<const Ar extends readonly unknown[]>(\n array: Ar,\n comparator: (x: Ar[number], y: Ar[number]) => number,\n): Ar extends NonEmptyTuple<unknown> ? Some<Ar[number]> : Optional<Ar[number]>;\n\nexport function max<E extends number>(\n array: readonly E[],\n comparator?: (x: E, y: E) => number,\n): Optional<E> {\n const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));\n\n // Find max by finding min with an inverted comparator\n return min(array, (x, y) => -cmp(x, y));\n}\n\n/**\n * Finds the element with the minimum mapped value.\n *\n * @example\n *\n * ```ts\n * const users = [\n * { id: 1, visits: 10 },\n * { id: 2, visits: 3 },\n * { id: 3, visits: 5 },\n * ] as const;\n *\n * const leastVisits = Arr.minBy(users, (user) => user.visits);\n *\n * const custom = Arr.minBy(\n * users,\n * (user) => user.visits,\n * (a, b) => b - a,\n * );\n *\n * assert.deepStrictEqual(leastVisits, Optional.some({ id: 2, visits: 3 }));\n *\n * assert.deepStrictEqual(custom, Optional.some({ id: 1, visits: 10 }));\n * ```\n */\nexport function minBy<const Ar extends readonly unknown[]>(\n array: Ar,\n // If the array elements are mapped to numbers, comparator is optional.\n comparatorValueMapper: (value: Ar[number]) => number,\n): Ar extends NonEmptyTuple<unknown> ? Some<Ar[number]> : Optional<Ar[number]>;\n\nexport function minBy<const Ar extends readonly unknown[], V>(\n array: Ar,\n comparatorValueMapper: (value: Ar[number]) => V,\n comparator: (x: V, y: V) => number,\n): Ar extends NonEmptyTuple<unknown> ? Some<Ar[number]> : Optional<Ar[number]>;\n\nexport function minBy<E, V>(\n array: readonly E[],\n comparatorValueMapper: (value: E) => V,\n comparator?: (x: V, y: V) => number,\n): Optional<E> {\n return min(array, (x, y) =>\n comparator === undefined\n ? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y))\n : comparator(comparatorValueMapper(x), comparatorValueMapper(y)),\n );\n}\n\n/**\n * Finds the element with the maximum mapped value.\n *\n * @example\n *\n * ```ts\n * const projects = [\n * { id: 'a', stars: 10 },\n * { id: 'b', stars: 30 },\n * { id: 'c', stars: 20 },\n * ] as const;\n *\n * const mostStars = Arr.maxBy(projects, (project) => project.stars);\n *\n * const smallestStars = Arr.maxBy(\n * projects,\n * (project) => project.stars,\n * (a, b) => b - a,\n * );\n *\n * assert.deepStrictEqual(mostStars, Optional.some({ id: 'b', stars: 30 }));\n *\n * assert.deepStrictEqual(\n * smallestStars,\n * Optional.some({ id: 'a', stars: 10 }),\n * );\n * ```\n */\nexport function maxBy<const Ar extends readonly unknown[]>(\n array: Ar,\n // If the array elements are mapped to numbers, comparator is optional.\n comparatorValueMapper: (value: Ar[number]) => number,\n): Ar extends NonEmptyTuple<unknown> ? Some<Ar[number]> : Optional<Ar[number]>;\n\nexport function maxBy<const Ar extends readonly unknown[], V>(\n array: Ar,\n comparatorValueMapper: (value: Ar[number]) => V,\n comparator: (x: V, y: V) => number,\n): Ar extends NonEmptyTuple<unknown> ? Some<Ar[number]> : Optional<Ar[number]>;\n\nexport function maxBy<E, V>(\n array: readonly E[],\n comparatorValueMapper: (value: E) => V,\n comparator?: (x: V, y: V) => number,\n): Optional<E> {\n return max(array, (x, y) =>\n comparator === undefined\n ? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y))\n : comparator(comparatorValueMapper(x), comparatorValueMapper(y)),\n );\n}\n\n/**\n * Counts the number of elements that satisfy a predicate.\n *\n * @example\n *\n * ```ts\n * const words = ['Ada', 'Grace', 'Linus'] as const;\n *\n * const longWords = Arr.count(words, (word) => word.length > 4);\n *\n * const withCurried = Arr.count<string>((word) => word.includes('a'))(words);\n *\n * assert.isTrue(longWords === 2);\n *\n * assert.isTrue(withCurried === 2);\n * ```\n */\nexport function count<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>) => boolean,\n): SizeType.Arr;\n\nexport function count<E>(\n predicate: (value: E, index: SizeType.Arr) => boolean,\n): (array: readonly E[]) => SizeType.Arr;\n\nexport function count<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr) => boolean,\n ]\n | readonly [predicate: (value: E, index: SizeType.Arr) => boolean]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr) {\n switch (args.length) {\n case 2:\n return countImpl(...args);\n\n case 1:\n return (array) => countImpl(array, ...args);\n }\n}\n\nconst countImpl = <E,>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr) => boolean,\n): SizeType.Arr =>\n array.reduce<Uint32>(\n (acc, curr, index) =>\n predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc,\n asUint32(0),\n );\n\n/**\n * Groups elements by a key and counts the elements in each group.\n *\n * @example\n *\n * ```ts\n * const words = ['Ada', 'Grace', 'Alan', 'Barbara'] as const;\n *\n * const counts = Arr.countBy(words, (word) => word.at(0));\n *\n * assert.deepStrictEqual(counts.get('A'), Optional.some(2));\n *\n * assert.deepStrictEqual(counts.get('G'), Optional.some(1));\n *\n * assert.deepStrictEqual(counts.get('B'), Optional.some(1));\n * ```\n */\nexport function countBy<\n const Ar extends readonly unknown[],\n G extends MapSetKeyType,\n>(\n array: Ar,\n grouper: (value: Ar[number], index: ArrayIndex<Ar>) => G,\n): IMap<G, ArrayIndex<Ar>>;\n\nexport function countBy<E, G extends MapSetKeyType>(\n grouper: (value: E, index: SizeType.Arr) => G,\n): (array: readonly E[]) => IMap<G, SizeType.Arr>;\n\nexport function countBy<E, G extends MapSetKeyType>(\n ...args:\n | readonly [\n array: readonly E[],\n grouper: (value: E, index: SizeType.Arr) => G,\n ]\n | readonly [grouper: (value: E, index: SizeType.Arr) => G]\n): IMap<G, SizeType.Arr> | ((array: readonly E[]) => IMap<G, SizeType.Arr>) {\n switch (args.length) {\n case 2:\n return countByImpl(...args);\n\n case 1:\n return (array) => countByImpl(array, ...args);\n }\n}\n\nconst countByImpl = <E, G extends MapSetKeyType>(\n array: readonly E[],\n grouper: (value: E, index: SizeType.Arr) => G,\n): IMap<G, SizeType.Arr> => {\n const mut_groups = new Map<G, SizeType.Arr>();\n\n for (const [index, e] of array.entries()) {\n const key = grouper(e, asUint32(index));\n\n const curr = mut_groups.get(key) ?? 0;\n\n mut_groups.set(key, asUint32(curr + 1));\n }\n\n return IMap.create(mut_groups);\n};\n\n/**\n * Reduces an array to a single value from left to right.\n *\n * @example\n *\n * ```ts\n * const words = ['Ada', 'Lovelace'] as const;\n *\n * const totalLength = Arr.foldl(words, (acc, word) => acc + word.length, 0);\n *\n * const concat = Arr.foldl<string | number, string>(\n * (acc, value) => `${acc}-${value}`,\n * 'items',\n * )(words);\n *\n * assert.isTrue(totalLength === 11);\n *\n * assert.isTrue(concat === 'items-Ada-Lovelace');\n * ```\n */\nexport function foldl<const Ar extends readonly unknown[], P>(\n array: Ar,\n callbackfn: (\n previousValue: P,\n currentValue: Ar[number],\n currentIndex: ArrayIndex<Ar>,\n ) => P,\n initialValue: P,\n): P;\n\nexport function foldl<E, P>(\n callbackfn: (\n previousValue: P,\n currentValue: E,\n currentIndex: SizeType.Arr,\n ) => P,\n initialValue: P,\n): (array: readonly E[]) => P;\n\nexport function foldl<E, P>(\n ...args:\n | readonly [\n array: readonly E[],\n callbackfn: (\n previousValue: P,\n currentValue: E,\n currentIndex: SizeType.Arr,\n ) => P,\n initialValue: P,\n ]\n | readonly [\n callbackfn: (\n previousValue: P,\n currentValue: E,\n currentIndex: SizeType.Arr,\n ) => P,\n initialValue: P,\n ]\n): P | ((array: readonly E[]) => P) {\n switch (args.length) {\n case 3:\n return foldlImpl(...args);\n\n case 2:\n return (array) => foldlImpl(array, ...args);\n }\n}\n\nconst foldlImpl = <E, P>(\n array: readonly E[],\n callbackfn: (\n previousValue: P,\n currentValue: E,\n currentIndex: SizeType.Arr,\n ) => P,\n initialValue: P,\n): P =>\n array.reduce(\n (prev, curr, index) => callbackfn(prev, curr, asUint32(index)),\n initialValue,\n );\n\n/**\n * Reduces an array to a single value from right to left.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 2, 3] as const;\n *\n * const subtractRight = Arr.foldr(numbers, (acc, value) => acc - value, 0);\n *\n * const joinFromRight = Arr.foldr<number, string>(\n * (acc, value) => `${acc}${value}`,\n * '',\n * )(numbers);\n *\n * assert.isTrue(subtractRight === -6);\n *\n * assert.isTrue(joinFromRight === '321');\n * ```\n */\nexport function foldr<const Ar extends readonly unknown[], P>(\n array: Ar,\n callbackfn: (\n previousValue: P,\n currentValue: Ar[number],\n currentIndex: ArrayIndex<Ar>,\n ) => P,\n initialValue: P,\n): P;\n\nexport function foldr<E, P>(\n callbackfn: (\n previousValue: P,\n currentValue: E,\n currentIndex: SizeType.Arr,\n ) => P,\n initialValue: P,\n): (array: readonly E[]) => P;\n\nexport function foldr<E, P>(\n ...args:\n | readonly [\n array: readonly E[],\n callbackfn: (\n previousValue: P,\n currentValue: E,\n currentIndex: SizeType.Arr,\n ) => P,\n initialValue: P,\n ]\n | readonly [\n callbackfn: (\n previousValue: P,\n currentValue: E,\n currentIndex: SizeType.Arr,\n ) => P,\n initialValue: P,\n ]\n): P | ((array: readonly E[]) => P) {\n switch (args.length) {\n case 3:\n return foldrImpl(...args);\n\n case 2:\n return (array) => foldrImpl(array, ...args);\n }\n}\n\nconst foldrImpl = <E, P>(\n array: readonly E[],\n callbackfn: (\n previousValue: P,\n currentValue: E,\n currentIndex: SizeType.Arr,\n ) => P,\n initialValue: P,\n): P =>\n array.reduceRight(\n (prev, curr, index) => callbackfn(prev, curr, asUint32(index)),\n initialValue,\n );\n\n/**\n * Calculates the sum of numbers in an array.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 2, 3, 4] as const;\n *\n * const negatives = [3, -2, 5] as const;\n *\n * const total = Arr.sum(numbers);\n *\n * const totalNegatives = Arr.sum(negatives);\n *\n * assert.isTrue(total === 10);\n *\n * assert.isTrue(totalNegatives === 6);\n * ```\n */\nexport function sum(array: readonly []): 0;\n\nexport function sum<N extends number>(array: readonly [N]): N;\n\nexport function sum(array: readonly Uint[]): Uint;\n\nexport function sum(array: readonly Int[]): Int;\n\nexport function sum(array: readonly number[]): number;\n\nexport function sum(array: readonly number[]): number {\n return array.reduce((prev, curr) => prev + curr, 0);\n}\n\n/**\n * Calculates the sum of values in an array by applying a mapping function to each element.\n *\n * @example\n *\n * ```ts\n * const numbers = [\n * { value: 1 },\n * { value: 2 },\n * { value: 3 },\n * { value: 4 },\n * ] as const;\n *\n * const negatives = [{ value: 3 }, { value: -2 }, { value: 5 }] as const;\n *\n * const total = Arr.sumBy(numbers, (item) => item.value);\n *\n * const totalNegatives = Arr.sumBy(negatives, (item) => item.value);\n *\n * assert.isTrue(total === 10);\n *\n * assert.isTrue(totalNegatives === 6);\n * ```\n */\nexport function sumBy(array: readonly [], mapFn: (item: unknown) => number): 0;\n\nexport function sumBy<E, N extends Uint>(\n array: readonly E[],\n mapFn: (item: E) => N,\n): Uint;\n\nexport function sumBy<E, N extends Int>(\n array: readonly E[],\n mapFn: (item: E) => N,\n): Int;\n\nexport function sumBy<E, N extends number>(\n array: readonly E[],\n mapFn: (item: E) => N,\n): number;\n\nexport function sumBy<E, N extends number>(\n array: readonly E[],\n mapFn: (item: E) => N,\n): number {\n return array.reduce((prev, curr) => prev + mapFn(curr), 0);\n}\n\n/**\n * Joins array elements into a string.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 2, 3] as const;\n *\n * const defaultSeparator = Arr.join(numbers);\n *\n * const hyphenSeparated = Arr.join(numbers, '-');\n *\n * assert.deepStrictEqual(defaultSeparator, Result.ok('1,2,3'));\n *\n * assert.deepStrictEqual(hyphenSeparated, Result.ok('1-2-3'));\n * ```\n */\nexport function join(\n array: readonly unknown[],\n separator?: string,\n): Result<string, Error>;\n\nexport function join(\n separator?: string,\n): (array: readonly unknown[]) => Result<string, Error>;\n\nexport function join(\n ...args:\n | readonly [array: readonly unknown[], separator?: string]\n | readonly [separator?: string]\n):\n | Result<string, Error>\n | ((array: readonly unknown[]) => Result<string, Error>) {\n switch (args.length) {\n case 0:\n return (array) => joinImpl(array, undefined);\n\n case 1: {\n const [arg] = args;\n\n if (isString(arg) || isUndefined(arg)) {\n return (array) => joinImpl(array, arg);\n }\n\n return joinImpl(arg, undefined);\n }\n\n case 2: {\n const [array, separator] = args;\n\n return joinImpl(array, separator);\n }\n }\n}\n\nconst joinImpl = (\n array: readonly unknown[],\n separator: string | undefined,\n): Result<string, Error> => {\n try {\n const result = array.join(separator);\n\n return Result.ok(result);\n } catch (error) {\n return Result.err(\n isError(error) ? error : new Error(unknownToString(error)),\n );\n }\n};\n\n/**\n * Alias for `foldl`.\n *\n * @see {@link foldl}\n */\nexport const reduce = foldl;\n\n/**\n * Alias for `foldr`.\n *\n * @see {@link foldr}\n */\nexport const reduceRight = foldr;\n"],"names":["Optional.none","Optional.some","Result.ok","Result.err"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDO,SAAS,GAAA,CACd,OACA,UAAA,EACa;AACb,EAAA,IAAI,CAAC,UAAA,CAAW,KAAK,CAAA,EAAG;AACtB,IAAA,OAAOA,IAAS;AAAA,EAClB;AAEA,EAAA,MAAM,GAAA,GAAM,UAAA,KAAe,CAAC,CAAA,EAAG,CAAA,KAAM,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,GAAI,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,CAAA;AAE7D,EAAA,OAAOC,IAAS;AAAA,IACd,KAAA,CAAM,MAAA;AAAA,MACJ,CAAC,YAAY,IAAA,KAAU,GAAA,CAAI,MAAM,UAAU,CAAA,GAAI,IAAI,IAAA,GAAO,UAAA;AAAA,MAC1D,MAAM,CAAC;AAAA;AACT,GACF;AACF;AA8BO,SAAS,GAAA,CACd,OACA,UAAA,EACa;AACb,EAAA,MAAM,GAAA,GAAM,UAAA,KAAe,CAAC,CAAA,EAAG,CAAA,KAAM,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,GAAI,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,CAAA;AAG7D,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA,EAAG,MAAM,CAAC,GAAA,CAAI,CAAA,EAAG,CAAC,CAAC,CAAA;AACxC;AAuCO,SAAS,KAAA,CACd,KAAA,EACA,qBAAA,EACA,UAAA,EACa;AACb,EAAA,OAAO,GAAA;AAAA,IAAI,KAAA;AAAA,IAAO,CAAC,GAAG,CAAA,KACpB,UAAA,KAAe,SACX,GAAA,CAAI,IAAA,CAAK,qBAAA,CAAsB,CAAC,CAAC,CAAA,GAAI,IAAI,IAAA,CAAK,qBAAA,CAAsB,CAAC,CAAC,CAAA,GACtE,UAAA,CAAW,sBAAsB,CAAC,CAAA,EAAG,qBAAA,CAAsB,CAAC,CAAC;AAAA,GACnE;AACF;AA0CO,SAAS,KAAA,CACd,KAAA,EACA,qBAAA,EACA,UAAA,EACa;AACb,EAAA,OAAO,GAAA;AAAA,IAAI,KAAA;AAAA,IAAO,CAAC,GAAG,CAAA,KACpB,UAAA,KAAe,SACX,GAAA,CAAI,IAAA,CAAK,qBAAA,CAAsB,CAAC,CAAC,CAAA,GAAI,IAAI,IAAA,CAAK,qBAAA,CAAsB,CAAC,CAAC,CAAA,GACtE,UAAA,CAAW,sBAAsB,CAAC,CAAA,EAAG,qBAAA,CAAsB,CAAC,CAAC;AAAA,GACnE;AACF;AA4BO,SAAS,SACX,IAAA,EAMqD;AACxD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,SAAA,CAAU,GAAG,IAAI,CAAA;AAAA,IAE1B,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,SAAA,CAAU,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAEhD;AAEA,MAAM,SAAA,GAAY,CAChB,KAAA,EACA,SAAA,KAEA,KAAA,CAAM,MAAA;AAAA,EACJ,CAAC,GAAA,EAAK,IAAA,EAAM,KAAA,KACV,UAAU,IAAA,EAAM,QAAA,CAAS,KAAK,CAAC,CAAA,GAAI,MAAA,CAAO,GAAA,CAAI,GAAA,EAAK,CAAC,CAAA,GAAI,GAAA;AAAA,EAC1D,SAAS,CAAC;AACZ,CAAA;AA+BK,SAAS,WACX,IAAA,EAMuE;AAC1E,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,WAAA,CAAY,GAAG,IAAI,CAAA;AAAA,IAE5B,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,WAAA,CAAY,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAElD;AAEA,MAAM,WAAA,GAAc,CAClB,KAAA,EACA,OAAA,KAC0B;AAC1B,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAqB;AAE5C,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,CAAC,CAAA,IAAK,KAAA,CAAM,SAAQ,EAAG;AACxC,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,CAAA,EAAG,QAAA,CAAS,KAAK,CAAC,CAAA;AAEtC,IAAA,MAAM,IAAA,GAAO,UAAA,CAAW,GAAA,CAAI,GAAG,CAAA,IAAK,CAAA;AAEpC,IAAA,UAAA,CAAW,GAAA,CAAI,GAAA,EAAK,QAAA,CAAS,IAAA,GAAO,CAAC,CAAC,CAAA;AAAA,EACxC;AAEA,EAAA,OAAO,IAAA,CAAK,OAAO,UAAU,CAAA;AAC/B,CAAA;AAyCO,SAAS,SACX,IAAA,EAkB+B;AAClC,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,SAAA,CAAU,GAAG,IAAI,CAAA;AAAA,IAE1B,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,SAAA,CAAU,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAEhD;AAEA,MAAM,SAAA,GAAY,CAChB,KAAA,EACA,UAAA,EAKA,iBAEA,KAAA,CAAM,MAAA;AAAA,EACJ,CAAC,MAAM,IAAA,EAAM,KAAA,KAAU,WAAW,IAAA,EAAM,IAAA,EAAM,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,EAC7D;AACF,CAAA;AAyCK,SAAS,SACX,IAAA,EAkB+B;AAClC,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,SAAA,CAAU,GAAG,IAAI,CAAA;AAAA,IAE1B,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,SAAA,CAAU,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA;AAEhD;AAEA,MAAM,SAAA,GAAY,CAChB,KAAA,EACA,UAAA,EAKA,iBAEA,KAAA,CAAM,WAAA;AAAA,EACJ,CAAC,MAAM,IAAA,EAAM,KAAA,KAAU,WAAW,IAAA,EAAM,IAAA,EAAM,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,EAC7D;AACF,CAAA;AA+BK,SAAS,IAAI,KAAA,EAAkC;AACpD,EAAA,OAAO,MAAM,MAAA,CAAO,CAAC,MAAM,IAAA,KAAS,IAAA,GAAO,MAAM,CAAC,CAAA;AACpD;AA2CO,SAAS,KAAA,CACd,OACA,KAAA,EACQ;AACR,EAAA,OAAO,KAAA,CAAM,OAAO,CAAC,IAAA,EAAM,SAAS,IAAA,GAAO,KAAA,CAAM,IAAI,CAAA,EAAG,CAAC,CAAA;AAC3D;AA4BO,SAAS,QACX,IAAA,EAKsD;AACzD,EAAA,QAAQ,KAAK,MAAA;AAAQ,IACnB,KAAK,CAAA;AACH,MAAA,OAAO,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,EAAO,MAAS,CAAA;AAAA,IAE7C,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,GAAG,CAAA,GAAI,IAAA;AAEd,MAAA,IAAI,QAAA,CAAS,GAAG,CAAA,IAAK,WAAA,CAAY,GAAG,CAAA,EAAG;AACrC,QAAA,OAAO,CAAC,KAAA,KAAU,QAAA,CAAS,KAAA,EAAO,GAAG,CAAA;AAAA,MACvC;AAEA,MAAA,OAAO,QAAA,CAAS,KAAK,MAAS,CAAA;AAAA,IAChC;AAAA,IAEA,KAAK,CAAA,EAAG;AACN,MAAA,MAAM,CAAC,KAAA,EAAO,SAAS,CAAA,GAAI,IAAA;AAE3B,MAAA,OAAO,QAAA,CAAS,OAAO,SAAS,CAAA;AAAA,IAClC;AAAA;AAEJ;AAEA,MAAM,QAAA,GAAW,CACf,KAAA,EACA,SAAA,KAC0B;AAC1B,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA;AAEnC,IAAA,OAAOC,GAAU,MAAM,CAAA;AAAA,EACzB,SAAS,KAAA,EAAO;AACd,IAAA,OAAOC,GAAO;AAAA,MACZ,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,IAAI,KAAA,CAAM,eAAA,CAAgB,KAAK,CAAC;AAAA,KAC3D;AAAA,EACF;AACF,CAAA;AAOO,MAAM,MAAA,GAAS;AAOf,MAAM,WAAA,GAAc;;;;"}
|
|
1
|
+
{"version":3,"file":"array-utils-reducing-value.mjs","sourceRoot":"","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"names":[],"mappings":"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"}
|