ts-data-forge 9.0.0 → 9.0.1
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.d.mts.map +1 -1
- package/dist/array/impl/array-utils-creation.mjs +17 -112
- package/dist/array/impl/array-utils-creation.mjs.map +1 -1
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
- package/dist/array/impl/array-utils-element-access.mjs +22 -61
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
- package/dist/array/impl/array-utils-iterators.d.mts.map +1 -1
- package/dist/array/impl/array-utils-iterators.mjs +9 -63
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
- package/dist/array/impl/array-utils-modification.mjs +78 -78
- package/dist/array/impl/array-utils-modification.mjs.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs +95 -89
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.mjs +100 -92
- package/dist/array/impl/array-utils-search.mjs.map +1 -1
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
- package/dist/array/impl/array-utils-set-op.mjs +31 -141
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
- package/dist/array/impl/array-utils-size.d.mts.map +1 -1
- package/dist/array/impl/array-utils-size.mjs +4 -8
- package/dist/array/impl/array-utils-size.mjs.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs +11 -12
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +44 -96
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.d.mts +1 -1
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +150 -292
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +18 -169
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/collections/imap-mapped.d.mts.map +1 -1
- package/dist/collections/imap-mapped.mjs +243 -330
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +190 -275
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +1 -1
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +222 -444
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +1 -1
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +158 -324
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +106 -178
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +95 -165
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/expect-type.d.mts +1 -1
- package/dist/expect-type.d.mts.map +1 -1
- package/dist/expect-type.mjs +1 -69
- package/dist/expect-type.mjs.map +1 -1
- package/dist/functional/match.mjs +9 -9
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-expect-to-be.mjs +13 -14
- package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-filter.mjs +14 -15
- package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-flat-map.mjs +10 -11
- package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-from-nullable.mjs +1 -25
- package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-none.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-none.mjs +0 -19
- package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.mjs +1 -23
- package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.mjs +0 -20
- package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-map.mjs +13 -14
- package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-none.mjs +0 -16
- package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-or-else.mjs +10 -11
- package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-some.mjs +2 -21
- package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.mjs +1 -27
- package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-or.mjs +9 -10
- package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs +4 -32
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap.mjs +4 -4
- package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-zip.mjs +1 -35
- package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
- package/dist/functional/optional/impl/tag.mjs +2 -3
- package/dist/functional/optional/impl/tag.mjs.map +1 -1
- package/dist/functional/pipe.d.mts.map +1 -1
- package/dist/functional/pipe.mjs +9 -34
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result/impl/result-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-err.mjs +2 -27
- package/dist/functional/result/impl/result-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-expect-to-be.mjs +13 -15
- package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
- package/dist/functional/result/impl/result-flat-map.mjs +16 -16
- package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-fold.mjs +16 -16
- package/dist/functional/result/impl/result-fold.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
- package/dist/functional/result/impl/result-from-promise.mjs +4 -31
- package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.mjs +8 -38
- package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-err.mjs +0 -19
- package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-ok.mjs +0 -19
- package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-result.mjs +1 -23
- package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
- package/dist/functional/result/impl/result-map-err.mjs +16 -16
- package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-map.mjs +16 -16
- package/dist/functional/result/impl/result-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-ok.mjs +2 -27
- package/dist/functional/result/impl/result-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-or-else.mjs +10 -12
- package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
- package/dist/functional/result/impl/result-swap.d.mts.map +1 -1
- package/dist/functional/result/impl/result-swap.mjs +4 -22
- package/dist/functional/result/impl/result-swap.mjs.map +1 -1
- package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -1
- package/dist/functional/result/impl/result-to-optional.mjs +0 -27
- package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-or.mjs +9 -11
- package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs +13 -40
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.mjs +4 -32
- package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs +9 -11
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok.mjs +4 -4
- package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs +4 -35
- package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-zip.d.mts.map +1 -1
- package/dist/functional/result/impl/result-zip.mjs +1 -34
- package/dist/functional/result/impl/result-zip.mjs.map +1 -1
- package/dist/functional/result/impl/tag.mjs +2 -3
- package/dist/functional/result/impl/tag.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/tag.mjs +3 -5
- package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs +2 -15
- 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 +13 -13
- 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 +27 -26
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +21 -22
- package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +4 -20
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +7 -25
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +0 -17
- package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +0 -19
- 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.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +1 -25
- 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.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +0 -18
- 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 +13 -15
- 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 +18 -18
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map.mjs +21 -22
- package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +2 -16
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +9 -9
- package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +4 -22
- 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 +9 -9
- 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.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +12 -27
- 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.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +4 -19
- 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 +9 -9
- 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 +4 -5
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +15 -27
- 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 +9 -9
- 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.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +10 -24
- 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.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +4 -19
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +3 -19
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +14 -45
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/variant-name.d.mts +1 -1
- package/dist/functional/ternary-result/impl/variant-name.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/variant-name.mjs +8 -9
- package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +0 -41
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/is-length-bounded-string.d.mts.map +1 -1
- package/dist/guard/is-length-bounded-string.mjs +0 -157
- package/dist/guard/is-length-bounded-string.mjs.map +1 -1
- package/dist/guard/is-non-empty-string.d.mts +1 -1
- package/dist/guard/is-non-empty-string.d.mts.map +1 -1
- package/dist/guard/is-non-empty-string.mjs +1 -38
- package/dist/guard/is-non-empty-string.mjs.map +1 -1
- package/dist/guard/is-non-null-object.d.mts.map +1 -1
- package/dist/guard/is-non-null-object.mjs +1 -35
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-primitive.d.mts.map +1 -1
- package/dist/guard/is-primitive.mjs +12 -43
- package/dist/guard/is-primitive.mjs.map +1 -1
- package/dist/guard/is-record.d.mts.map +1 -1
- package/dist/guard/is-record.mjs +0 -86
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.d.mts.map +1 -1
- package/dist/guard/is-type.mjs +12 -399
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +0 -40
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/iterator/range.mjs +16 -16
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +52 -340
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +3 -3
- package/dist/number/branded-types/finite-number.mjs +135 -154
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +4 -4
- package/dist/number/branded-types/int.mjs +205 -245
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +15 -15
- package/dist/number/branded-types/int16.mjs +116 -123
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +11 -11
- package/dist/number/branded-types/int32.mjs +116 -123
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/negative-finite-number.d.mts +4 -4
- package/dist/number/branded-types/negative-finite-number.mjs +129 -144
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/negative-int.d.mts +5 -5
- package/dist/number/branded-types/negative-int.mjs +94 -113
- package/dist/number/branded-types/negative-int.mjs.map +1 -1
- package/dist/number/branded-types/negative-safe-int.d.mts +5 -5
- package/dist/number/branded-types/negative-safe-int.mjs +103 -124
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +5 -5
- package/dist/number/branded-types/non-negative-finite-number.mjs +136 -142
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +16 -16
- package/dist/number/branded-types/non-negative-int16.mjs +109 -118
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +12 -12
- package/dist/number/branded-types/non-negative-int32.mjs +110 -119
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.d.mts +3 -3
- package/dist/number/branded-types/non-positive-finite-number.mjs +120 -124
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-int.d.mts +4 -4
- package/dist/number/branded-types/non-positive-int.mjs +167 -212
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.d.mts +4 -4
- package/dist/number/branded-types/non-positive-safe-int.mjs +95 -106
- package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +4 -4
- package/dist/number/branded-types/non-zero-finite-number.mjs +114 -123
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +2 -2
- package/dist/number/branded-types/non-zero-int.mjs +72 -83
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +7 -7
- package/dist/number/branded-types/non-zero-int16.mjs +96 -107
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +5 -5
- package/dist/number/branded-types/non-zero-int32.mjs +97 -108
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +2 -2
- package/dist/number/branded-types/non-zero-safe-int.mjs +100 -111
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +8 -8
- package/dist/number/branded-types/non-zero-uint16.mjs +96 -107
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +6 -6
- package/dist/number/branded-types/non-zero-uint32.mjs +96 -107
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +8 -8
- package/dist/number/branded-types/positive-finite-number.mjs +139 -141
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +11 -11
- package/dist/number/branded-types/positive-int.mjs +228 -271
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +19 -19
- package/dist/number/branded-types/positive-int16.mjs +109 -118
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +15 -15
- package/dist/number/branded-types/positive-int32.mjs +109 -118
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +11 -11
- package/dist/number/branded-types/positive-safe-int.mjs +244 -275
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +17 -17
- package/dist/number/branded-types/positive-uint16.mjs +109 -118
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +13 -13
- package/dist/number/branded-types/positive-uint32.mjs +110 -119
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +4 -4
- package/dist/number/branded-types/safe-int.mjs +251 -292
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +8 -8
- package/dist/number/branded-types/safe-uint.mjs +111 -119
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +8 -8
- package/dist/number/branded-types/uint.mjs +198 -225
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +14 -14
- package/dist/number/branded-types/uint16.mjs +109 -119
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +10 -10
- package/dist/number/branded-types/uint32.mjs +110 -117
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.mjs +119 -145
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.mjs +107 -121
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/num.d.mts +2 -2
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +76 -537
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +1 -1
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +127 -263
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +107 -222
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/cast-mutable.d.mts.map +1 -1
- package/dist/others/cast-mutable.mjs +8 -37
- package/dist/others/cast-mutable.mjs.map +1 -1
- package/dist/others/cast-readonly.d.mts.map +1 -1
- package/dist/others/cast-readonly.mjs +8 -36
- package/dist/others/cast-readonly.mjs.map +1 -1
- package/dist/others/debounce-function.d.mts.map +1 -1
- package/dist/others/debounce-function.mjs +7 -16
- package/dist/others/debounce-function.mjs.map +1 -1
- package/dist/others/fast-deep-equal.d.mts.map +1 -1
- package/dist/others/fast-deep-equal.mjs +43 -59
- package/dist/others/fast-deep-equal.mjs.map +1 -1
- package/dist/others/if-then.d.mts.map +1 -1
- package/dist/others/if-then.mjs +0 -29
- package/dist/others/if-then.mjs.map +1 -1
- package/dist/others/map-nullable.mjs +9 -9
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.mjs +12 -12
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +0 -50
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.d.mts.map +1 -1
- package/dist/others/unknown-to-string.mjs +41 -88
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +4 -49
- package/dist/promise/promise.mjs.map +1 -1
- package/package.json +8 -7
|
@@ -48,124 +48,130 @@ import '../../number/refined-number-utils.mjs';
|
|
|
48
48
|
import { isNonEmpty } from './array-utils-validation.mjs';
|
|
49
49
|
|
|
50
50
|
function min(array, comparator) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
if (!isNonEmpty(array)) {
|
|
52
|
+
return none;
|
|
53
|
+
}
|
|
54
|
+
const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
|
|
55
|
+
return some(
|
|
56
|
+
array.reduce(
|
|
57
|
+
(currentMin, curr) => cmp(curr, currentMin) < 0 ? curr : currentMin,
|
|
58
|
+
array[0]
|
|
59
|
+
)
|
|
60
|
+
);
|
|
56
61
|
}
|
|
57
62
|
function max(array, comparator) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return min(array, (x, y) => -cmp(x, y));
|
|
63
|
+
const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
|
|
64
|
+
return min(array, (x, y) => -cmp(x, y));
|
|
61
65
|
}
|
|
62
66
|
function minBy(array, comparatorValueMapper, comparator) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
return min(
|
|
68
|
+
array,
|
|
69
|
+
(x, y) => comparator === void 0 ? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y)) : comparator(comparatorValueMapper(x), comparatorValueMapper(y))
|
|
70
|
+
);
|
|
66
71
|
}
|
|
67
72
|
function maxBy(array, comparatorValueMapper, comparator) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
return max(
|
|
74
|
+
array,
|
|
75
|
+
(x, y) => comparator === void 0 ? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y)) : comparator(comparatorValueMapper(x), comparatorValueMapper(y))
|
|
76
|
+
);
|
|
71
77
|
}
|
|
72
78
|
function count(...args) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
switch (args.length) {
|
|
80
|
+
case 2: {
|
|
81
|
+
const [array, predicate] = args;
|
|
82
|
+
return array.reduce(
|
|
83
|
+
(acc, curr, index) => predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc,
|
|
84
|
+
asUint32(0)
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
case 1: {
|
|
88
|
+
const [predicate] = args;
|
|
89
|
+
return (array) => count(array, predicate);
|
|
82
90
|
}
|
|
91
|
+
}
|
|
83
92
|
}
|
|
84
93
|
function countBy(...args) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
case 1: {
|
|
97
|
-
const [grouper] = args;
|
|
98
|
-
return (array) => countBy(array, grouper);
|
|
99
|
-
}
|
|
94
|
+
switch (args.length) {
|
|
95
|
+
case 2: {
|
|
96
|
+
const [array, grouper] = args;
|
|
97
|
+
const mut_groups = /* @__PURE__ */ new Map();
|
|
98
|
+
for (const [index, e] of array.entries()) {
|
|
99
|
+
const key = grouper(e, asUint32(index));
|
|
100
|
+
const curr = mut_groups.get(key) ?? 0;
|
|
101
|
+
mut_groups.set(key, asUint32(curr + 1));
|
|
102
|
+
}
|
|
103
|
+
return IMap.create(mut_groups);
|
|
100
104
|
}
|
|
105
|
+
case 1: {
|
|
106
|
+
const [grouper] = args;
|
|
107
|
+
return (array) => countBy(array, grouper);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
101
110
|
}
|
|
102
111
|
function foldl(...args) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
+
switch (args.length) {
|
|
113
|
+
case 3: {
|
|
114
|
+
const [array, callbackfn, initialValue] = args;
|
|
115
|
+
return array.reduce(
|
|
116
|
+
(prev, curr, index) => callbackfn(prev, curr, asUint32(index)),
|
|
117
|
+
initialValue
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
case 2: {
|
|
121
|
+
const [callbackfn, initialValue] = args;
|
|
122
|
+
return (array) => foldl(array, callbackfn, initialValue);
|
|
112
123
|
}
|
|
124
|
+
}
|
|
113
125
|
}
|
|
114
126
|
function foldr(...args) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return (array) => foldr(array, callbackfn, initialValue);
|
|
123
|
-
}
|
|
127
|
+
switch (args.length) {
|
|
128
|
+
case 3: {
|
|
129
|
+
const [array, callbackfn, initialValue] = args;
|
|
130
|
+
return array.reduceRight(
|
|
131
|
+
(prev, curr, index) => callbackfn(prev, curr, asUint32(index)),
|
|
132
|
+
initialValue
|
|
133
|
+
);
|
|
124
134
|
}
|
|
135
|
+
case 2: {
|
|
136
|
+
const [callbackfn, initialValue] = args;
|
|
137
|
+
return (array) => foldr(array, callbackfn, initialValue);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
125
140
|
}
|
|
126
141
|
function sum(array) {
|
|
127
|
-
|
|
142
|
+
return array.reduce((prev, curr) => prev + curr, 0);
|
|
128
143
|
}
|
|
129
144
|
function sumBy(array, mapFn) {
|
|
130
|
-
|
|
145
|
+
return array.reduce((prev, curr) => prev + mapFn(curr), 0);
|
|
131
146
|
}
|
|
132
147
|
function join(...args) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
148
|
+
switch (args.length) {
|
|
149
|
+
case 0:
|
|
150
|
+
return (array) => joinImpl(array, void 0);
|
|
151
|
+
case 1: {
|
|
152
|
+
const [arg] = args;
|
|
153
|
+
if (isString(arg) || isUndefined(arg)) {
|
|
154
|
+
return (array) => joinImpl(array, arg);
|
|
155
|
+
}
|
|
156
|
+
return joinImpl(arg, void 0);
|
|
157
|
+
}
|
|
158
|
+
case 2: {
|
|
159
|
+
const [array, separator] = args;
|
|
160
|
+
return joinImpl(array, separator);
|
|
147
161
|
}
|
|
162
|
+
}
|
|
148
163
|
}
|
|
149
164
|
const joinImpl = (array, separator) => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
165
|
+
try {
|
|
166
|
+
const result = array.join(separator);
|
|
167
|
+
return ok(result);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
return err(
|
|
170
|
+
isError(error) ? error : new Error(unknownToString(error))
|
|
171
|
+
);
|
|
172
|
+
}
|
|
157
173
|
};
|
|
158
|
-
/**
|
|
159
|
-
* Alias for `foldl`.
|
|
160
|
-
*
|
|
161
|
-
* @see {@link foldl}
|
|
162
|
-
*/
|
|
163
174
|
const reduce = foldl;
|
|
164
|
-
/**
|
|
165
|
-
* Alias for `foldr`.
|
|
166
|
-
*
|
|
167
|
-
* @see {@link foldr}
|
|
168
|
-
*/
|
|
169
175
|
const reduceRight = foldr;
|
|
170
176
|
|
|
171
177
|
export { count, countBy, foldl, foldr, join, max, maxBy, min, minBy, reduce, reduceRight, sum, sumBy };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-reducing-value.mjs","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"sourcesContent":[null],"names":["Optional.none","Optional.some","Result.ok","Result.err"],"mappings":"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"}
|
|
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 NonEmptyArray, 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-validation.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 NonEmptyArray<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 NonEmptyArray<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 NonEmptyArray<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 NonEmptyArray<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 NonEmptyArray<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 NonEmptyArray<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 NonEmptyArray<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 NonEmptyArray<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 const [array, predicate] = args;\n\n return array.reduce<Uint32>(\n (acc, curr, index) =>\n predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc,\n asUint32(0),\n );\n }\n\n case 1: {\n const [predicate] = args;\n\n return (array) => count(array, predicate);\n }\n }\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 const [array, grouper] = args;\n\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 case 1: {\n const [grouper] = args;\n\n return (array) => countBy(array, grouper);\n }\n }\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 const [array, callbackfn, initialValue] = args;\n\n return array.reduce(\n (prev, curr, index) => callbackfn(prev, curr, asUint32(index)),\n initialValue,\n );\n }\n\n case 2: {\n const [callbackfn, initialValue] = args;\n\n return (array) => foldl(array, callbackfn, initialValue);\n }\n }\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 const [array, callbackfn, initialValue] = args;\n\n return array.reduceRight(\n (prev, curr, index) => callbackfn(prev, curr, asUint32(index)),\n initialValue,\n );\n }\n\n case 2: {\n const [callbackfn, initialValue] = args;\n\n return (array) => foldr(array, callbackfn, initialValue);\n }\n }\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<N extends Uint, E>(\n array: readonly E[],\n mapFn: (item: E) => N,\n): Uint;\n\nexport function sumBy<N extends Int, E>(\n array: readonly E[],\n mapFn: (item: E) => N,\n): Int;\n\nexport function sumBy<N extends number, E>(\n array: readonly E[],\n mapFn: (item: E) => N,\n): number;\n\nexport function sumBy<N extends number, E>(\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":"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"}
|
|
@@ -40,120 +40,128 @@ import '../../number/num.mjs';
|
|
|
40
40
|
import '../../number/refined-number-utils.mjs';
|
|
41
41
|
|
|
42
42
|
function find(...args) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
case 1: {
|
|
55
|
-
const [predicate] = args;
|
|
56
|
-
return (array) => find(array, predicate);
|
|
57
|
-
}
|
|
43
|
+
switch (args.length) {
|
|
44
|
+
case 2: {
|
|
45
|
+
const [array, predicate] = args;
|
|
46
|
+
const foundIndex = array.findIndex(
|
|
47
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
48
|
+
predicate
|
|
49
|
+
);
|
|
50
|
+
return foundIndex === -1 ? none : (
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
52
|
+
some(array[foundIndex])
|
|
53
|
+
);
|
|
58
54
|
}
|
|
55
|
+
case 1: {
|
|
56
|
+
const [predicate] = args;
|
|
57
|
+
return (array) => find(array, predicate);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
59
60
|
}
|
|
60
61
|
function findLast(...args) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
62
|
+
switch (args.length) {
|
|
63
|
+
case 2: {
|
|
64
|
+
const [array, predicate] = args;
|
|
65
|
+
const foundIndex = array.findLastIndex(
|
|
66
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
67
|
+
predicate
|
|
68
|
+
);
|
|
69
|
+
return foundIndex === -1 ? none : (
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
71
|
+
some(array[foundIndex])
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
case 1: {
|
|
75
|
+
const [predicate] = args;
|
|
76
|
+
return (array) => findLast(array, predicate);
|
|
76
77
|
}
|
|
78
|
+
}
|
|
77
79
|
}
|
|
78
80
|
function findIndex(...args) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return (array) => findIndex(array, predicate);
|
|
89
|
-
}
|
|
81
|
+
switch (args.length) {
|
|
82
|
+
case 2: {
|
|
83
|
+
const [array, predicate] = args;
|
|
84
|
+
return pipe(
|
|
85
|
+
array.findIndex(
|
|
86
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
87
|
+
predicate
|
|
88
|
+
)
|
|
89
|
+
).map((idx) => idx >= 0 ? asUint32(idx) : -1).value;
|
|
90
90
|
}
|
|
91
|
+
case 1: {
|
|
92
|
+
const [predicate] = args;
|
|
93
|
+
return (array) => findIndex(array, predicate);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
91
96
|
}
|
|
92
97
|
function findLastIndex(...args) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
98
|
+
switch (args.length) {
|
|
99
|
+
case 2: {
|
|
100
|
+
const [array, predicate] = args;
|
|
101
|
+
return pipe(
|
|
102
|
+
array.findLastIndex(
|
|
103
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
104
|
+
predicate
|
|
105
|
+
)
|
|
106
|
+
).map((idx) => idx >= 0 ? asUint32(idx) : -1).value;
|
|
107
|
+
}
|
|
108
|
+
case 1: {
|
|
109
|
+
const [predicate] = args;
|
|
110
|
+
return (array) => findLastIndex(array, predicate);
|
|
104
111
|
}
|
|
112
|
+
}
|
|
105
113
|
}
|
|
106
114
|
function indexOf(...args) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
case 1: {
|
|
114
|
-
const [searchElement] = args;
|
|
115
|
-
return (array) => indexOf(array, searchElement);
|
|
116
|
-
}
|
|
115
|
+
switch (args.length) {
|
|
116
|
+
case 2: {
|
|
117
|
+
const [array, searchElement] = args;
|
|
118
|
+
const index = array.indexOf(searchElement);
|
|
119
|
+
return index !== -1 ? asUint32(index) : -1;
|
|
117
120
|
}
|
|
121
|
+
case 1: {
|
|
122
|
+
const [searchElement] = args;
|
|
123
|
+
return (array) => indexOf(array, searchElement);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
118
126
|
}
|
|
119
127
|
function indexOfFrom(...args) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
128
|
+
switch (args.length) {
|
|
129
|
+
case 3: {
|
|
130
|
+
const [array, searchElement, fromIndex] = args;
|
|
131
|
+
const index = array.indexOf(searchElement, fromIndex);
|
|
132
|
+
return index !== -1 ? asUint32(index) : -1;
|
|
133
|
+
}
|
|
134
|
+
case 2: {
|
|
135
|
+
const [searchElement, fromIndex] = args;
|
|
136
|
+
return (array) => indexOfFrom(array, searchElement, fromIndex);
|
|
130
137
|
}
|
|
138
|
+
}
|
|
131
139
|
}
|
|
132
140
|
function lastIndexOf(...args) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
case 1: {
|
|
140
|
-
const [searchElement] = args;
|
|
141
|
-
return (array) => lastIndexOf(array, searchElement);
|
|
142
|
-
}
|
|
141
|
+
switch (args.length) {
|
|
142
|
+
case 2: {
|
|
143
|
+
const [array, searchElement] = args;
|
|
144
|
+
const index = array.lastIndexOf(searchElement);
|
|
145
|
+
return index !== -1 ? asUint32(index) : -1;
|
|
143
146
|
}
|
|
147
|
+
case 1: {
|
|
148
|
+
const [searchElement] = args;
|
|
149
|
+
return (array) => lastIndexOf(array, searchElement);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
144
152
|
}
|
|
145
153
|
function lastIndexOfFrom(...args) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
154
|
+
switch (args.length) {
|
|
155
|
+
case 3: {
|
|
156
|
+
const [array, searchElement, fromIndex] = args;
|
|
157
|
+
const index = array.lastIndexOf(searchElement, fromIndex);
|
|
158
|
+
return index !== -1 ? asUint32(index) : -1;
|
|
159
|
+
}
|
|
160
|
+
case 2: {
|
|
161
|
+
const [searchElement, fromIndex] = args;
|
|
162
|
+
return (array) => lastIndexOfFrom(array, searchElement, fromIndex);
|
|
156
163
|
}
|
|
164
|
+
}
|
|
157
165
|
}
|
|
158
166
|
|
|
159
167
|
export { find, findIndex, findLast, findLastIndex, indexOf, indexOfFrom, lastIndexOf, lastIndexOfFrom };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-search.mjs","sources":["../../../src/array/impl/array-utils-search.mts"],"sourcesContent":[null],"names":["Optional.none","Optional.some"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"array-utils-search.mjs","sources":["../../../src/array/impl/array-utils-search.mts"],"sourcesContent":["import { expectType } from '../../expect-type.mjs';\nimport { Optional, pipe } from '../../functional/index.mjs';\nimport { asUint32 } from '../../number/index.mjs';\nimport {\n type ArgArrayIndexWithNegative,\n type ArrayIndex,\n type SizeType,\n} from '../../types.mjs';\n\n/**\n * Finds the first element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const users = [\n * { id: 1, name: 'Ada' },\n * { id: 2, name: 'Grace' },\n * ] as const;\n *\n * const found = Arr.find(users, (user) => user.id === 2);\n *\n * const missing = Arr.find<Readonly<{ id: number }>>((user) => user.id === 3)(\n * users,\n * );\n *\n * assert.deepStrictEqual(found, Optional.some({ id: 2, name: 'Grace' }));\n *\n * assert.deepStrictEqual(missing, Optional.none);\n * ```\n */\nexport function find<E, F extends E>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F,\n): Optional<F>;\n\nexport function find<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): Optional<Ar[number]>;\n\nexport function find<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => Optional<E>;\n\nexport function find<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): Optional<E> | ((array: readonly E[]) => Optional<E>) {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n const foundIndex = array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n expectType<\n Parameters<typeof array.findIndex>[0],\n (value: E, index: number, arr: readonly E[]) => unknown\n >('=');\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return foundIndex === -1\n ? Optional.none\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Optional.some(array[foundIndex]!);\n }\n\n case 1: {\n const [predicate] = args;\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return (array) => find(array, predicate);\n }\n }\n}\n\n/**\n * Finds the last element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const numbers = [1, 3, 2, 4, 5] as const;\n *\n * const lastEven = Arr.findLast(numbers, (n) => n % 2 === 0);\n *\n * const none = Arr.findLast<number>((n) => n > 10)(numbers);\n *\n * assert.deepStrictEqual(lastEven, Optional.some(4));\n *\n * assert.deepStrictEqual(none, Optional.none);\n * ```\n */\nexport function findLast<E, F extends E>(\n array: readonly E[],\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F,\n): Optional<F>;\n\nexport function findLast<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): Optional<Ar[number]>;\n\nexport function findLast<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => Optional<E>;\n\nexport function findLast<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): Optional<E> | ((array: readonly E[]) => Optional<E>) {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n const foundIndex = array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as () => boolean,\n );\n\n expectType<\n Parameters<typeof array.findIndex>[0],\n (value: E, index: number, arr: readonly E[]) => unknown\n >('=');\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return foundIndex === -1\n ? Optional.none\n : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n Optional.some(array[foundIndex]!);\n }\n\n case 1: {\n const [predicate] = args;\n\n expectType<\n typeof predicate,\n (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean\n >('=');\n\n return (array) => findLast(array, predicate);\n }\n }\n}\n\n/**\n * Finds the index of the first element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c'] as const;\n *\n * const indexOfB = Arr.findIndex(letters, (letter) => letter === 'b');\n *\n * const indexOfMissing = Arr.findIndex<string>((letter) => letter === 'z')(\n * letters,\n * );\n *\n * assert.isTrue(indexOfB === 1);\n *\n * assert.isTrue(indexOfMissing === -1);\n * ```\n */\nexport function findIndex<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): ArrayIndex<Ar> | -1;\n\nexport function findIndex<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function findIndex<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n return pipe(\n array.findIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as (value: E, index: number) => boolean,\n ),\n ).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;\n }\n\n case 1: {\n const [predicate] = args;\n\n return (array) => findIndex(array, predicate);\n }\n }\n}\n\n/**\n * Finds the index of the last element that satisfies a predicate.\n *\n * @example\n *\n * ```ts\n * const letters = ['a', 'b', 'c', 'b'] as const;\n *\n * const lastIndexOfB = Arr.findLastIndex(letters, (letter) => letter === 'b');\n *\n * const notFound = Arr.findLastIndex<string>((letter) => letter === 'z')(\n * letters,\n * );\n *\n * assert.isTrue(lastIndexOfB === 3);\n *\n * assert.isTrue(notFound === -1);\n * ```\n */\nexport function findLastIndex<const Ar extends readonly unknown[]>(\n array: Ar,\n predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean,\n): ArrayIndex<Ar> | -1;\n\nexport function findLastIndex<E>(\n predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function findLastIndex<E>(\n ...args:\n | readonly [\n array: readonly E[],\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n | readonly [\n predicate: (\n value: E,\n index: SizeType.Arr,\n arr: readonly E[],\n ) => boolean,\n ]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, predicate] = args;\n\n return pipe(\n array.findLastIndex(\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n predicate as (value: E, index: number) => boolean,\n ),\n ).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;\n }\n\n case 1: {\n const [predicate] = args;\n\n return (array) => findLastIndex(array, predicate);\n }\n }\n}\n\n/**\n * Gets the index of a value in an array.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * const indexOfBanana = Arr.indexOf(fruits, 'banana');\n *\n * const indexOfGrape = Arr.indexOf(fruits, 'grape');\n *\n * // Curried version\n * const findApple = Arr.indexOf('apple');\n *\n * const indexOfApple = findApple(fruits);\n *\n * console.log(indexOfBanana); // => 1\n *\n * console.log(indexOfGrape); // => -1\n *\n * console.log(indexOfApple); // => 0\n * ```\n */\nexport function indexOf<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n): ArrayIndex<Ar> | -1;\n\nexport function indexOf<E>(\n searchElement: E,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function indexOf<E>(\n ...args:\n | readonly [array: readonly E[], searchElement: E]\n | readonly [searchElement: E]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, searchElement] = args;\n\n const index = array.indexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 1: {\n const [searchElement] = args;\n\n return (array) => indexOf(array, searchElement);\n }\n }\n}\n\n/**\n * Gets the index of a value in an array, starting from a specified index.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * // Search for 'banana' starting from index 1\n * const firstBanana = Arr.indexOfFrom(fruits, 'banana', 1);\n *\n * // Search for 'banana' starting from index 2\n * const secondBanana = Arr.indexOfFrom(fruits, 'banana', 2);\n *\n * // Element not found\n * const notFound = Arr.indexOfFrom(fruits, 'grape', 0);\n *\n * // Curried version\n * const findBananaFrom2 = Arr.indexOfFrom('banana', 2);\n *\n * const index = findBananaFrom2(fruits);\n *\n * console.log(firstBanana); // => 1\n *\n * console.log(secondBanana); // => 3\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function indexOfFrom<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n fromIndex: ArgArrayIndexWithNegative<Ar>,\n): ArrayIndex<Ar> | -1;\n\nexport function indexOfFrom<E>(\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function indexOfFrom<E>(\n ...args:\n | readonly [\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n ]\n | readonly [searchElement: E, fromIndex: SizeType.ArgArrWithNegative]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 3: {\n const [array, searchElement, fromIndex] = args;\n\n const index = array.indexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 2: {\n const [searchElement, fromIndex] = args;\n\n return (array) => indexOfFrom(array, searchElement, fromIndex);\n }\n }\n}\n\n/**\n * Gets the last index of a value in an array.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana'] as readonly string[];\n *\n * const lastBanana = Arr.lastIndexOf(fruits, 'banana');\n *\n * const lastApple = Arr.lastIndexOf(fruits, 'apple');\n *\n * const notFound = Arr.lastIndexOf(fruits, 'grape');\n *\n * // Curried version\n * const findLastBanana = Arr.lastIndexOf('banana');\n *\n * const index = findLastBanana(fruits);\n *\n * console.log(lastBanana); // => 3\n *\n * console.log(lastApple); // => 0\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function lastIndexOf<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n): ArrayIndex<Ar> | -1;\n\nexport function lastIndexOf<E>(\n searchElement: E,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function lastIndexOf<E>(\n ...args:\n | readonly [array: readonly E[], searchElement: E]\n | readonly [searchElement: E]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 2: {\n const [array, searchElement] = args;\n\n const index = array.lastIndexOf(searchElement);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 1: {\n const [searchElement] = args;\n\n return (array) => lastIndexOf(array, searchElement);\n }\n }\n}\n\n/**\n * Gets the last index of a value in an array, starting from a specified index.\n *\n * @example\n *\n * ```ts\n * const fruits = ['apple', 'banana', 'orange', 'banana', 'grape'] as const;\n *\n * // Search backwards for 'banana' from index 3\n * const lastBananaFrom3 = Arr.lastIndexOfFrom(fruits, 'banana', 3);\n *\n * // Search backwards for 'banana' from index 2\n * const lastBananaFrom2 = Arr.lastIndexOfFrom(fruits, 'banana', 2);\n *\n * // Element not found\n * const notFound = Arr.lastIndexOfFrom(fruits, 'grape', 2);\n *\n * // Curried version\n * const findBananaFrom3 = Arr.lastIndexOfFrom('banana', 3);\n *\n * const index = findBananaFrom3(fruits);\n *\n * console.log(lastBananaFrom3); // => 3\n *\n * console.log(lastBananaFrom2); // => 1\n *\n * console.log(notFound); // => -1\n *\n * console.log(index); // => 3\n * ```\n */\nexport function lastIndexOfFrom<const Ar extends readonly unknown[]>(\n array: Ar,\n searchElement: Ar[number],\n fromIndex: ArgArrayIndexWithNegative<Ar>,\n): ArrayIndex<Ar> | -1;\n\nexport function lastIndexOfFrom<E>(\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n): (array: readonly E[]) => SizeType.Arr | -1;\n\nexport function lastIndexOfFrom<E>(\n ...args:\n | readonly [\n array: readonly E[],\n searchElement: E,\n fromIndex: SizeType.ArgArrWithNegative,\n ]\n | readonly [searchElement: E, fromIndex: SizeType.ArgArrWithNegative]\n): SizeType.Arr | ((array: readonly E[]) => SizeType.Arr | -1) | -1 {\n switch (args.length) {\n case 3: {\n const [array, searchElement, fromIndex] = args;\n\n const index = array.lastIndexOf(searchElement, fromIndex);\n\n return index !== -1 ? asUint32(index) : -1;\n }\n\n case 2: {\n const [searchElement, fromIndex] = args;\n\n return (array) => lastIndexOfFrom(array, searchElement, fromIndex);\n }\n }\n}\n"],"names":["Optional.none","Optional.some"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-utils-set-op.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"array-utils-set-op.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,UACV,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,aACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAChC,OAG8C,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAdC,CAAC,UACV,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,aACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,KAChC,OAUoB,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,UAC9D,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,OAIA,CAAC;AAEJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,UAAU,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,UAChE,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,OAAmC,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,GAC1B,EAAE,SAAS,SAAS,EACpB,EAAE,SAAS,SAAS,GAAG,EAAE,UAEjB,SAAS,EAAE,EAAE,UACb,SAAS,EAAE,EAAE,KACpB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAE+C,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,UACvC,SAAS,CAAC,EAAE,UACZ,SAAS,CAAC,EAAE,KACnB,SAAS,CAAC,EAA+C,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,eACxC,SAAS,CAAC,EAAE,eACZ,SAAS,CAAC,EAAE,KACxB,SAAS,CAAC,EAoCZ,CAAC"}
|