ts-data-forge 3.2.0 → 3.3.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/README.md +45 -21
- package/dist/array/impl/array-utils-creation.d.mts +116 -0
- package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-creation.mjs +110 -0
- package/dist/array/impl/array-utils-creation.mjs.map +1 -0
- package/dist/array/impl/array-utils-element-access.d.mts +61 -0
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
- package/dist/array/impl/array-utils-element-access.mjs +66 -0
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
- package/dist/array/impl/array-utils-iterators.d.mts +59 -0
- package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
- package/dist/array/impl/array-utils-iterators.mjs +104 -0
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
- package/dist/array/impl/array-utils-modification.d.mts +154 -0
- package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
- package/dist/array/impl/array-utils-modification.mjs +139 -0
- package/dist/array/impl/array-utils-modification.mjs.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
- package/dist/array/impl/array-utils-search.d.mts +179 -0
- package/dist/array/impl/array-utils-search.d.mts.map +1 -0
- package/dist/array/impl/array-utils-search.mjs +153 -0
- package/dist/array/impl/array-utils-search.mjs.map +1 -0
- package/dist/array/impl/array-utils-set-op.d.mts +100 -0
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
- package/dist/array/impl/array-utils-set-op.mjs +137 -0
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
- package/dist/array/impl/array-utils-size.d.mts +24 -0
- package/dist/array/impl/array-utils-size.d.mts.map +1 -0
- package/dist/array/impl/array-utils-size.mjs +28 -0
- package/dist/array/impl/array-utils-size.mjs.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
- package/dist/array/impl/array-utils-slicing.d.mts +120 -0
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slicing.mjs +140 -0
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
- package/dist/array/impl/array-utils-transformation.d.mts +348 -0
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-transformation.mjs +331 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
- package/dist/array/impl/array-utils-validation.d.mts +149 -0
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-validation.mjs +166 -0
- package/dist/array/impl/array-utils-validation.mjs.map +1 -0
- package/dist/array/impl/index.d.mts +13 -0
- package/dist/array/impl/index.d.mts.map +1 -0
- package/dist/array/impl/index.mjs +13 -0
- package/dist/array/impl/index.mjs.map +1 -0
- package/dist/array/index.d.mts +1 -1
- package/dist/array/index.d.mts.map +1 -1
- package/dist/array/index.mjs +2 -1
- package/dist/array/index.mjs.map +1 -1
- package/dist/collections/imap-mapped.d.mts +83 -253
- package/dist/collections/imap-mapped.d.mts.map +1 -1
- package/dist/collections/imap-mapped.mjs +33 -164
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +436 -163
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +74 -94
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +828 -345
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +200 -242
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +397 -205
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +102 -184
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts +155 -135
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +55 -156
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +154 -154
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +54 -203
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.d.mts +3 -0
- package/dist/entry-point.d.mts.map +1 -0
- package/dist/entry-point.mjs +62 -0
- package/dist/entry-point.mjs.map +1 -0
- package/dist/expect-type.d.mts +43 -172
- package/dist/expect-type.d.mts.map +1 -1
- package/dist/expect-type.mjs +43 -172
- package/dist/expect-type.mjs.map +1 -1
- package/dist/functional/match.d.mts +35 -140
- package/dist/functional/match.d.mts.map +1 -1
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional.d.mts +282 -160
- package/dist/functional/optional.d.mts.map +1 -1
- package/dist/functional/optional.mjs +131 -71
- package/dist/functional/optional.mjs.map +1 -1
- package/dist/functional/pipe.d.mts +59 -113
- package/dist/functional/pipe.d.mts.map +1 -1
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result.d.mts +433 -332
- package/dist/functional/result.d.mts.map +1 -1
- package/dist/functional/result.mjs +233 -239
- package/dist/functional/result.mjs.map +1 -1
- package/dist/globals.d.mts +12 -5
- package/dist/guard/has-key.d.mts +23 -74
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +23 -74
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/is-non-empty-string.d.mts +20 -87
- package/dist/guard/is-non-empty-string.d.mts.map +1 -1
- package/dist/guard/is-non-empty-string.mjs +20 -87
- package/dist/guard/is-non-empty-string.mjs.map +1 -1
- package/dist/guard/is-non-null-object.d.mts +14 -84
- package/dist/guard/is-non-null-object.d.mts.map +1 -1
- package/dist/guard/is-non-null-object.mjs +14 -84
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-primitive.d.mts +13 -126
- package/dist/guard/is-primitive.d.mts.map +1 -1
- package/dist/guard/is-primitive.mjs +13 -126
- package/dist/guard/is-primitive.mjs.map +1 -1
- package/dist/guard/is-record.d.mts +21 -132
- package/dist/guard/is-record.d.mts.map +1 -1
- package/dist/guard/is-record.mjs +21 -132
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.d.mts +201 -238
- package/dist/guard/is-type.d.mts.map +1 -1
- package/dist/guard/is-type.mjs +201 -238
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.d.mts +22 -139
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +22 -139
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.d.mts +0 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/range.d.mts +29 -62
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts +191 -121
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +238 -136
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +24 -156
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +27 -159
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +122 -120
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +122 -120
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +22 -30
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +22 -30
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +22 -31
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +22 -31
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +24 -34
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +26 -35
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +15 -30
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +15 -30
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +27 -35
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +29 -36
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +29 -43
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +133 -123
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +133 -123
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +24 -35
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +24 -35
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +24 -35
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +24 -35
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +160 -34
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +24 -35
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +24 -35
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +26 -36
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +26 -36
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +140 -99
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +142 -101
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +24 -33
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +25 -34
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +121 -30
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +121 -30
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +26 -34
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +26 -34
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +26 -68
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +26 -68
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +37 -101
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +39 -170
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +45 -55
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +46 -155
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/num.d.mts +145 -206
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +143 -199
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +97 -21
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +91 -20
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +126 -208
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +68 -102
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/cast-mutable.d.mts +12 -88
- package/dist/others/cast-mutable.d.mts.map +1 -1
- package/dist/others/cast-mutable.mjs +13 -89
- package/dist/others/cast-mutable.mjs.map +1 -1
- package/dist/others/cast-readonly.d.mts +12 -168
- package/dist/others/cast-readonly.d.mts.map +1 -1
- package/dist/others/cast-readonly.mjs +13 -169
- package/dist/others/cast-readonly.mjs.map +1 -1
- package/dist/others/if-then.d.mts +6 -83
- package/dist/others/if-then.d.mts.map +1 -1
- package/dist/others/if-then.mjs +6 -83
- package/dist/others/if-then.mjs.map +1 -1
- package/dist/others/map-nullable.d.mts +12 -136
- package/dist/others/map-nullable.d.mts.map +1 -1
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.d.mts +14 -157
- package/dist/others/memoize-function.d.mts.map +1 -1
- package/dist/others/memoize-function.mjs +14 -157
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/tuple.d.mts +33 -151
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +33 -151
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.d.mts +11 -125
- package/dist/others/unknown-to-string.d.mts.map +1 -1
- package/dist/others/unknown-to-string.mjs +14 -127
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/promise.d.mts +33 -20
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +34 -21
- package/dist/promise/promise.mjs.map +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +54 -50
- package/src/array/impl/array-utils-creation.mts +192 -0
- package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
- package/src/array/impl/array-utils-element-access.mts +115 -0
- package/src/array/impl/array-utils-element-access.test.mts +151 -0
- package/src/array/impl/array-utils-iterators.mts +79 -0
- package/src/array/impl/array-utils-iterators.test.mts +98 -0
- package/src/array/impl/array-utils-modification.mts +434 -0
- package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
- package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
- package/src/array/impl/array-utils-reducing-value.mts +551 -0
- package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
- package/src/array/impl/array-utils-search.mts +509 -0
- package/src/array/impl/array-utils-search.test.mts +346 -0
- package/src/array/impl/array-utils-set-op.mts +166 -0
- package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
- package/src/array/impl/array-utils-size.mts +30 -0
- package/src/array/impl/array-utils-size.test.mts +9 -0
- package/src/array/impl/array-utils-slice-clamped.mts +51 -0
- package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
- package/src/array/impl/array-utils-slicing.mts +275 -0
- package/src/array/impl/array-utils-slicing.test.mts +158 -0
- package/src/array/impl/array-utils-transformation.mts +746 -0
- package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
- package/src/array/impl/array-utils-validation.mts +241 -0
- package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
- package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
- package/src/array/impl/index.mts +12 -0
- package/src/array/index.mts +1 -1
- package/src/collections/imap-mapped.mts +99 -265
- package/src/collections/imap.mts +477 -174
- package/src/collections/imap.test.mts +12 -19
- package/src/collections/iset-mapped.mts +892 -358
- package/src/collections/iset.mts +429 -213
- package/src/collections/queue.mts +174 -200
- package/src/collections/stack.mts +172 -245
- package/src/collections/stack.test.mts +9 -1
- package/src/entry-point.mts +2 -0
- package/src/expect-type.mts +43 -172
- package/src/functional/match.mts +35 -145
- package/src/functional/optional.mts +285 -163
- package/src/functional/optional.test.mts +4 -1
- package/src/functional/pipe.mts +60 -113
- package/src/functional/result.mts +452 -351
- package/src/functional/result.test.mts +9 -2
- package/src/globals.d.mts +12 -5
- package/src/guard/has-key.mts +23 -74
- package/src/guard/is-non-empty-string.mts +20 -87
- package/src/guard/is-non-null-object.mts +14 -84
- package/src/guard/is-non-null-object.test.mts +1 -1
- package/src/guard/is-primitive.mts +13 -126
- package/src/guard/is-primitive.test.mts +1 -1
- package/src/guard/is-record.mts +21 -132
- package/src/guard/is-record.test.mts +0 -1
- package/src/guard/is-type.mts +201 -238
- package/src/guard/is-type.test.mts +7 -7
- package/src/guard/key-is-in.mts +22 -139
- package/src/index.mts +0 -1
- package/src/iterator/range.mts +29 -62
- package/src/json/json.mts +202 -134
- package/src/json/json.test.mts +1 -3
- package/src/number/branded-types/finite-number.mts +27 -159
- package/src/number/branded-types/int.mts +122 -120
- package/src/number/branded-types/int16.mts +22 -30
- package/src/number/branded-types/int16.test.mts +24 -24
- package/src/number/branded-types/int32.mts +22 -31
- package/src/number/branded-types/int32.test.mts +39 -39
- package/src/number/branded-types/non-negative-finite-number.mts +31 -39
- package/src/number/branded-types/non-negative-int16.mts +24 -34
- package/src/number/branded-types/non-negative-int16.test.mts +16 -16
- package/src/number/branded-types/non-negative-int32.mts +26 -35
- package/src/number/branded-types/non-negative-int32.test.mts +30 -30
- package/src/number/branded-types/non-zero-finite-number.mts +25 -40
- package/src/number/branded-types/non-zero-int.mts +15 -30
- package/src/number/branded-types/non-zero-int16.mts +27 -35
- package/src/number/branded-types/non-zero-int16.test.mts +26 -26
- package/src/number/branded-types/non-zero-int32.mts +29 -36
- package/src/number/branded-types/non-zero-int32.test.mts +45 -42
- package/src/number/branded-types/non-zero-safe-int.mts +39 -40
- package/src/number/branded-types/non-zero-uint16.mts +24 -35
- package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
- package/src/number/branded-types/non-zero-uint32.mts +24 -35
- package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
- package/src/number/branded-types/positive-finite-number.mts +29 -43
- package/src/number/branded-types/positive-int.mts +134 -124
- package/src/number/branded-types/positive-int16.mts +24 -35
- package/src/number/branded-types/positive-int16.test.mts +14 -14
- package/src/number/branded-types/positive-int32.mts +24 -35
- package/src/number/branded-types/positive-int32.test.mts +26 -26
- package/src/number/branded-types/positive-safe-int.mts +160 -34
- package/src/number/branded-types/positive-uint16.mts +24 -35
- package/src/number/branded-types/positive-uint16.test.mts +16 -16
- package/src/number/branded-types/positive-uint32.mts +26 -36
- package/src/number/branded-types/positive-uint32.test.mts +31 -28
- package/src/number/branded-types/safe-int.mts +142 -101
- package/src/number/branded-types/safe-uint.mts +25 -34
- package/src/number/branded-types/uint.mts +121 -30
- package/src/number/branded-types/uint16.mts +26 -34
- package/src/number/branded-types/uint16.test.mts +16 -16
- package/src/number/branded-types/uint32.mts +26 -68
- package/src/number/branded-types/uint32.test.mts +28 -28
- package/src/number/enum/int8.mts +39 -170
- package/src/number/enum/uint8.mts +46 -155
- package/src/number/num.mts +157 -212
- package/src/number/num.test.mts +4 -4
- package/src/number/refined-number-utils.mts +109 -26
- package/src/object/object.mts +130 -212
- package/src/object/object.test.mts +29 -0
- package/src/others/cast-mutable.mts +13 -89
- package/src/others/cast-mutable.test.mts +80 -0
- package/src/others/cast-readonly.mts +13 -169
- package/src/others/if-then.mts +6 -83
- package/src/others/map-nullable.mts +12 -136
- package/src/others/map-nullable.test.mts +6 -6
- package/src/others/memoize-function.mts +14 -157
- package/src/others/tuple.mts +33 -151
- package/src/others/unknown-to-string.mts +15 -127
- package/src/others/unknown-to-string.test.mts +14 -2
- package/src/promise/promise.mts +34 -21
- package/src/promise/promise.test.mts +43 -0
- package/dist/array/array-utils.d.mts +0 -2956
- package/dist/array/array-utils.d.mts.map +0 -1
- package/dist/array/array-utils.mjs +0 -1838
- package/dist/array/array-utils.mjs.map +0 -1
- package/src/array/array-utils-search.test.mts +0 -169
- package/src/array/array-utils-slicing.test.mts +0 -274
- package/src/array/array-utils.mts +0 -4834
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import '../../collections/imap-mapped.mjs';
|
|
2
|
+
import { IMap } from '../../collections/imap.mjs';
|
|
3
|
+
import '../../collections/iset-mapped.mjs';
|
|
4
|
+
import '../../collections/iset.mjs';
|
|
5
|
+
import { isString, isUndefined } from '../../guard/is-type.mjs';
|
|
6
|
+
import { Optional } from '../../functional/optional.mjs';
|
|
7
|
+
import { Result } from '../../functional/result.mjs';
|
|
8
|
+
import '../../number/branded-types/finite-number.mjs';
|
|
9
|
+
import '../../number/branded-types/int.mjs';
|
|
10
|
+
import '../../number/branded-types/int16.mjs';
|
|
11
|
+
import '../../number/branded-types/int32.mjs';
|
|
12
|
+
import '../../number/branded-types/non-negative-finite-number.mjs';
|
|
13
|
+
import '../../number/branded-types/non-negative-int16.mjs';
|
|
14
|
+
import '../../number/branded-types/non-negative-int32.mjs';
|
|
15
|
+
import '../../number/branded-types/non-zero-finite-number.mjs';
|
|
16
|
+
import '../../number/branded-types/non-zero-int.mjs';
|
|
17
|
+
import '../../number/branded-types/non-zero-int16.mjs';
|
|
18
|
+
import '../../number/branded-types/non-zero-int32.mjs';
|
|
19
|
+
import '../../number/branded-types/non-zero-safe-int.mjs';
|
|
20
|
+
import '../../number/branded-types/non-zero-uint16.mjs';
|
|
21
|
+
import '../../number/branded-types/non-zero-uint32.mjs';
|
|
22
|
+
import '../../number/branded-types/positive-finite-number.mjs';
|
|
23
|
+
import '../../number/branded-types/positive-int.mjs';
|
|
24
|
+
import '../../number/branded-types/positive-int16.mjs';
|
|
25
|
+
import '../../number/branded-types/positive-int32.mjs';
|
|
26
|
+
import '../../number/branded-types/positive-safe-int.mjs';
|
|
27
|
+
import '../../number/branded-types/positive-uint16.mjs';
|
|
28
|
+
import '../../number/branded-types/positive-uint32.mjs';
|
|
29
|
+
import '../../number/branded-types/safe-int.mjs';
|
|
30
|
+
import '../../number/branded-types/safe-uint.mjs';
|
|
31
|
+
import '../../number/branded-types/uint.mjs';
|
|
32
|
+
import '../../number/branded-types/uint16.mjs';
|
|
33
|
+
import { Uint32, asUint32 } from '../../number/branded-types/uint32.mjs';
|
|
34
|
+
import '../../number/enum/int8.mjs';
|
|
35
|
+
import '../../number/enum/uint8.mjs';
|
|
36
|
+
import { Num } from '../../number/num.mjs';
|
|
37
|
+
import '../../number/refined-number-utils.mjs';
|
|
38
|
+
import { unknownToString } from '../../others/unknown-to-string.mjs';
|
|
39
|
+
import { isNonEmpty } from './array-utils-validation.mjs';
|
|
40
|
+
|
|
41
|
+
function min(array, comparator) {
|
|
42
|
+
if (!isNonEmpty(array)) {
|
|
43
|
+
return Optional.none;
|
|
44
|
+
}
|
|
45
|
+
const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
|
|
46
|
+
return Optional.some(array.reduce((currentMin, curr) => (cmp(curr, currentMin) < 0 ? curr : currentMin), array[0]));
|
|
47
|
+
}
|
|
48
|
+
function max(array, comparator) {
|
|
49
|
+
const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
|
|
50
|
+
// Find max by finding min with an inverted comparator
|
|
51
|
+
return min(array, (x, y) => -cmp(x, y));
|
|
52
|
+
}
|
|
53
|
+
function minBy(array, comparatorValueMapper, comparator) {
|
|
54
|
+
return min(array, (x, y) => comparator === undefined
|
|
55
|
+
? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y))
|
|
56
|
+
: comparator(comparatorValueMapper(x), comparatorValueMapper(y)));
|
|
57
|
+
}
|
|
58
|
+
function maxBy(array, comparatorValueMapper, comparator) {
|
|
59
|
+
return max(array, (x, y) => comparator === undefined
|
|
60
|
+
? Num.from(comparatorValueMapper(x)) - Num.from(comparatorValueMapper(y))
|
|
61
|
+
: comparator(comparatorValueMapper(x), comparatorValueMapper(y)));
|
|
62
|
+
}
|
|
63
|
+
function count(...args) {
|
|
64
|
+
switch (args.length) {
|
|
65
|
+
case 2: {
|
|
66
|
+
const [array, predicate] = args;
|
|
67
|
+
return array.reduce((acc, curr, index) => predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc, asUint32(0));
|
|
68
|
+
}
|
|
69
|
+
case 1: {
|
|
70
|
+
const [predicate] = args;
|
|
71
|
+
return (array) => count(array, predicate);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function countBy(...args) {
|
|
76
|
+
switch (args.length) {
|
|
77
|
+
case 2: {
|
|
78
|
+
const [array, grouper] = args;
|
|
79
|
+
const mut_groups = new Map();
|
|
80
|
+
for (const [index, e] of array.entries()) {
|
|
81
|
+
const key = grouper(e, asUint32(index));
|
|
82
|
+
const curr = mut_groups.get(key) ?? 0;
|
|
83
|
+
mut_groups.set(key, asUint32(curr + 1));
|
|
84
|
+
}
|
|
85
|
+
return IMap.create(mut_groups);
|
|
86
|
+
}
|
|
87
|
+
case 1: {
|
|
88
|
+
const [grouper] = args;
|
|
89
|
+
return (array) => countBy(array, grouper);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function foldl(...args) {
|
|
94
|
+
switch (args.length) {
|
|
95
|
+
case 3: {
|
|
96
|
+
const [array, callbackfn, initialValue] = args;
|
|
97
|
+
return array.reduce((prev, curr, index) => callbackfn(prev, curr, asUint32(index)), initialValue);
|
|
98
|
+
}
|
|
99
|
+
case 2: {
|
|
100
|
+
const [callbackfn, initialValue] = args;
|
|
101
|
+
return (array) => foldl(array, callbackfn, initialValue);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function foldr(...args) {
|
|
106
|
+
switch (args.length) {
|
|
107
|
+
case 3: {
|
|
108
|
+
const [array, callbackfn, initialValue] = args;
|
|
109
|
+
return array.reduceRight((prev, curr, index) => callbackfn(prev, curr, asUint32(index)), initialValue);
|
|
110
|
+
}
|
|
111
|
+
case 2: {
|
|
112
|
+
const [callbackfn, initialValue] = args;
|
|
113
|
+
return (array) => foldr(array, callbackfn, initialValue);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function sum(array) {
|
|
118
|
+
return array.reduce((prev, curr) => prev + curr, 0);
|
|
119
|
+
}
|
|
120
|
+
function join(...args) {
|
|
121
|
+
switch (args.length) {
|
|
122
|
+
case 0:
|
|
123
|
+
return (array) => joinImpl(array, undefined);
|
|
124
|
+
case 1: {
|
|
125
|
+
const [arg] = args;
|
|
126
|
+
if (isString(arg) || isUndefined(arg)) {
|
|
127
|
+
return (array) => joinImpl(array, arg);
|
|
128
|
+
}
|
|
129
|
+
return joinImpl(arg, undefined);
|
|
130
|
+
}
|
|
131
|
+
case 2: {
|
|
132
|
+
const [array, separator] = args;
|
|
133
|
+
return joinImpl(array, separator);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const joinImpl = (array, separator) => {
|
|
138
|
+
try {
|
|
139
|
+
const result = array.join(separator);
|
|
140
|
+
return Result.ok(result);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
return Result.err(Error.isError(error) ? error : new Error(unknownToString(error)));
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Alias for `foldl`.
|
|
148
|
+
*
|
|
149
|
+
* @see {@link foldl}
|
|
150
|
+
*/
|
|
151
|
+
const reduce = foldl;
|
|
152
|
+
/**
|
|
153
|
+
* Alias for `foldr`.
|
|
154
|
+
*
|
|
155
|
+
* @see {@link foldr}
|
|
156
|
+
*/
|
|
157
|
+
const reduceRight = foldr;
|
|
158
|
+
|
|
159
|
+
export { count, countBy, foldl, foldr, join, max, maxBy, min, minBy, reduce, reduceRight, sum };
|
|
160
|
+
//# sourceMappingURL=array-utils-reducing-value.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-utils-reducing-value.mjs","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { Optional } from '../../functional/index.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Finds the first element that satisfies a predicate.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* const users = [
|
|
9
|
+
* { id: 1, name: 'Ada' },
|
|
10
|
+
* { id: 2, name: 'Grace' },
|
|
11
|
+
* ];
|
|
12
|
+
*
|
|
13
|
+
* const found = Arr.find(users, (user) => user.id === 2);
|
|
14
|
+
* const missing = Arr.find<{ id: number }>((user) => user.id === 3)(users);
|
|
15
|
+
*
|
|
16
|
+
* assert.deepStrictEqual(found, Optional.some({ id: 2, name: 'Grace' }));
|
|
17
|
+
* assert.deepStrictEqual(missing, Optional.none);
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function find<E, F extends E>(array: readonly E[], predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F): Optional<F>;
|
|
21
|
+
export declare function find<const Ar extends readonly unknown[]>(array: Ar, predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean): Optional<Ar[number]>;
|
|
22
|
+
export declare function find<E>(predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean): (array: readonly E[]) => Optional<E>;
|
|
23
|
+
/**
|
|
24
|
+
* Finds the last element that satisfies a predicate.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* const numbers = [1, 3, 2, 4, 5];
|
|
30
|
+
*
|
|
31
|
+
* const lastEven = Arr.findLast(numbers, (n) => n % 2 === 0);
|
|
32
|
+
* const none = Arr.findLast<number>((n) => n > 10)(numbers);
|
|
33
|
+
*
|
|
34
|
+
* assert.deepStrictEqual(lastEven, Optional.some(4));
|
|
35
|
+
* assert.deepStrictEqual(none, Optional.none);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function findLast<E, F extends E>(array: readonly E[], predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => value is F): Optional<F>;
|
|
39
|
+
export declare function findLast<const Ar extends readonly unknown[]>(array: Ar, predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean): Optional<Ar[number]>;
|
|
40
|
+
export declare function findLast<E>(predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean): (array: readonly E[]) => Optional<E>;
|
|
41
|
+
/**
|
|
42
|
+
* Finds the index of the first element that satisfies a predicate.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* const letters = ['a', 'b', 'c'];
|
|
48
|
+
*
|
|
49
|
+
* const indexOfB = Arr.findIndex(letters, (letter) => letter === 'b');
|
|
50
|
+
* // eslint-disable-next-line unicorn/prefer-array-index-of
|
|
51
|
+
* const indexOfMissing = Arr.findIndex<string>((letter) => letter === 'z')(
|
|
52
|
+
* letters,
|
|
53
|
+
* );
|
|
54
|
+
*
|
|
55
|
+
* assert(indexOfB === 1);
|
|
56
|
+
* assert(indexOfMissing === -1);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function findIndex<const Ar extends readonly unknown[]>(array: Ar, predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean): ArrayIndex<Ar> | -1;
|
|
60
|
+
export declare function findIndex<E>(predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean): (array: readonly E[]) => SizeType.Arr | -1;
|
|
61
|
+
/**
|
|
62
|
+
* Finds the index of the last element that satisfies a predicate.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
*
|
|
66
|
+
* ```ts
|
|
67
|
+
* const letters = ['a', 'b', 'c', 'b'];
|
|
68
|
+
*
|
|
69
|
+
* const lastIndexOfB = Arr.findLastIndex(letters, (letter) => letter === 'b');
|
|
70
|
+
* // eslint-disable-next-line unicorn/prefer-array-index-of
|
|
71
|
+
* const notFound = Arr.findLastIndex<string>((letter) => letter === 'z')(letters);
|
|
72
|
+
*
|
|
73
|
+
* assert(lastIndexOfB === 3);
|
|
74
|
+
* assert(notFound === -1);
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function findLastIndex<const Ar extends readonly unknown[]>(array: Ar, predicate: (value: Ar[number], index: ArrayIndex<Ar>, arr: Ar) => boolean): ArrayIndex<Ar> | -1;
|
|
78
|
+
export declare function findLastIndex<E>(predicate: (value: E, index: SizeType.Arr, arr: readonly E[]) => boolean): (array: readonly E[]) => SizeType.Arr | -1;
|
|
79
|
+
/**
|
|
80
|
+
* Gets the index of a value in an array.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
*
|
|
84
|
+
* ```ts
|
|
85
|
+
* const fruits = ['apple', 'banana', 'orange', 'banana'];
|
|
86
|
+
*
|
|
87
|
+
* const indexOfBanana = Arr.indexOf(fruits, 'banana');
|
|
88
|
+
* const indexOfGrape = Arr.indexOf(fruits, 'grape');
|
|
89
|
+
*
|
|
90
|
+
* // Curried version
|
|
91
|
+
* const findApple = Arr.indexOf('apple');
|
|
92
|
+
* const indexOfApple = findApple(fruits);
|
|
93
|
+
*
|
|
94
|
+
* console.log(indexOfBanana); // => 1
|
|
95
|
+
* console.log(indexOfGrape); // => -1
|
|
96
|
+
* console.log(indexOfApple); // => 0
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function indexOf<const Ar extends readonly unknown[]>(array: Ar, searchElement: Ar[number]): ArrayIndex<Ar> | -1;
|
|
100
|
+
export declare function indexOf<E>(searchElement: E): (array: readonly E[]) => SizeType.Arr | -1;
|
|
101
|
+
/**
|
|
102
|
+
* Gets the index of a value in an array, starting from a specified index.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
*
|
|
106
|
+
* ```ts
|
|
107
|
+
* const fruits = ['apple', 'banana', 'orange', 'banana'];
|
|
108
|
+
*
|
|
109
|
+
* // Search for 'banana' starting from index 1
|
|
110
|
+
* const firstBanana = Arr.indexOfFrom(fruits, 'banana', 1);
|
|
111
|
+
* // Search for 'banana' starting from index 2
|
|
112
|
+
* const secondBanana = Arr.indexOfFrom(fruits, 'banana', 2);
|
|
113
|
+
* // Element not found
|
|
114
|
+
* const notFound = Arr.indexOfFrom(fruits, 'grape', 0);
|
|
115
|
+
*
|
|
116
|
+
* // Curried version
|
|
117
|
+
* const findBananaFrom2 = Arr.indexOfFrom('banana', 2);
|
|
118
|
+
* const index = findBananaFrom2(fruits);
|
|
119
|
+
*
|
|
120
|
+
* console.log(firstBanana); // => 1
|
|
121
|
+
* console.log(secondBanana); // => 3
|
|
122
|
+
* console.log(notFound); // => -1
|
|
123
|
+
* console.log(index); // => 3
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function indexOfFrom<const Ar extends readonly unknown[]>(array: Ar, searchElement: Ar[number], fromIndex: ArgArrayIndexWithNegative<Ar>): ArrayIndex<Ar> | -1;
|
|
127
|
+
export declare function indexOfFrom<E>(searchElement: E, fromIndex: SizeType.ArgArrWithNegative): (array: readonly E[]) => SizeType.Arr | -1;
|
|
128
|
+
/**
|
|
129
|
+
* Gets the last index of a value in an array.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
*
|
|
133
|
+
* ```ts
|
|
134
|
+
* const fruits = ['apple', 'banana', 'orange', 'banana'];
|
|
135
|
+
*
|
|
136
|
+
* const lastBanana = Arr.lastIndexOf(fruits, 'banana');
|
|
137
|
+
* const lastApple = Arr.lastIndexOf(fruits, 'apple');
|
|
138
|
+
* const notFound = Arr.lastIndexOf(fruits, 'grape');
|
|
139
|
+
*
|
|
140
|
+
* // Curried version
|
|
141
|
+
* const findLastBanana = Arr.lastIndexOf('banana');
|
|
142
|
+
* const index = findLastBanana(fruits);
|
|
143
|
+
*
|
|
144
|
+
* console.log(lastBanana); // => 3
|
|
145
|
+
* console.log(lastApple); // => 0
|
|
146
|
+
* console.log(notFound); // => -1
|
|
147
|
+
* console.log(index); // => 3
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export declare function lastIndexOf<const Ar extends readonly unknown[]>(array: Ar, searchElement: Ar[number]): ArrayIndex<Ar> | -1;
|
|
151
|
+
export declare function lastIndexOf<E>(searchElement: E): (array: readonly E[]) => SizeType.Arr | -1;
|
|
152
|
+
/**
|
|
153
|
+
* Gets the last index of a value in an array, starting from a specified index.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
*
|
|
157
|
+
* ```ts
|
|
158
|
+
* const fruits = ['apple', 'banana', 'orange', 'banana', 'grape'];
|
|
159
|
+
*
|
|
160
|
+
* // Search backwards for 'banana' from index 3
|
|
161
|
+
* const lastBananaFrom3 = Arr.lastIndexOfFrom(fruits, 'banana', 3);
|
|
162
|
+
* // Search backwards for 'banana' from index 2
|
|
163
|
+
* const lastBananaFrom2 = Arr.lastIndexOfFrom(fruits, 'banana', 2);
|
|
164
|
+
* // Element not found
|
|
165
|
+
* const notFound = Arr.lastIndexOfFrom(fruits, 'grape', 2);
|
|
166
|
+
*
|
|
167
|
+
* // Curried version
|
|
168
|
+
* const findBananaFrom3 = Arr.lastIndexOfFrom('banana', 3);
|
|
169
|
+
* const index = findBananaFrom3(fruits);
|
|
170
|
+
*
|
|
171
|
+
* console.log(lastBananaFrom3); // => 3
|
|
172
|
+
* console.log(lastBananaFrom2); // => 1
|
|
173
|
+
* console.log(notFound); // => -1
|
|
174
|
+
* console.log(index); // => 3
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export declare function lastIndexOfFrom<const Ar extends readonly unknown[]>(array: Ar, searchElement: Ar[number], fromIndex: ArgArrayIndexWithNegative<Ar>): ArrayIndex<Ar> | -1;
|
|
178
|
+
export declare function lastIndexOfFrom<E>(searchElement: E, fromIndex: SizeType.ArgArrWithNegative): (array: readonly E[]) => SizeType.Arr | -1;
|
|
179
|
+
//# sourceMappingURL=array-utils-search.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-utils-search.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-search.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAQ,MAAM,4BAA4B,CAAC;AAG5D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EACjC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,GAC1E,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEf,wBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EACtD,KAAK,EAAE,EAAE,EACT,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,OAAO,GACxE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAExB,wBAAgB,IAAI,CAAC,CAAC,EACpB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,OAAO,GACvE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AAwDxC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EACrC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,GAC1E,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEf,wBAAgB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EAC1D,KAAK,EAAE,EAAE,EACT,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,OAAO,GACxE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAExB,wBAAgB,QAAQ,CAAC,CAAC,EACxB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,OAAO,GACvE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AAwDxC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EAC3D,KAAK,EAAE,EAAE,EACT,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,OAAO,GACxE,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAgB,SAAS,CAAC,CAAC,EACzB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,OAAO,GACvE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAqC9C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EAC/D,KAAK,EAAE,EAAE,EACT,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,OAAO,GACxE,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAgB,aAAa,CAAC,CAAC,EAC7B,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,OAAO,GACvE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAqC9C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EACzD,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,GACxB,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAgB,OAAO,CAAC,CAAC,EACvB,aAAa,EAAE,CAAC,GACf,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAqB9C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EAC7D,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,EACzB,SAAS,EAAE,yBAAyB,CAAC,EAAE,CAAC,GACvC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAgB,WAAW,CAAC,CAAC,EAC3B,aAAa,EAAE,CAAC,EAChB,SAAS,EAAE,QAAQ,CAAC,kBAAkB,GACrC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAwB9C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EAC7D,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,GACxB,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAgB,WAAW,CAAC,CAAC,EAC3B,aAAa,EAAE,CAAC,GACf,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAoB9C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,EACjE,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,EACzB,SAAS,EAAE,yBAAyB,CAAC,EAAE,CAAC,GACvC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAEvB,wBAAgB,eAAe,CAAC,CAAC,EAC/B,aAAa,EAAE,CAAC,EAChB,SAAS,EAAE,QAAQ,CAAC,kBAAkB,GACrC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { Optional } from '../../functional/optional.mjs';
|
|
2
|
+
import { pipe } from '../../functional/pipe.mjs';
|
|
3
|
+
import '../../functional/result.mjs';
|
|
4
|
+
import '../../number/branded-types/finite-number.mjs';
|
|
5
|
+
import '../../number/branded-types/int.mjs';
|
|
6
|
+
import '../../number/branded-types/int16.mjs';
|
|
7
|
+
import '../../number/branded-types/int32.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-zero-finite-number.mjs';
|
|
12
|
+
import '../../number/branded-types/non-zero-int.mjs';
|
|
13
|
+
import '../../number/branded-types/non-zero-int16.mjs';
|
|
14
|
+
import '../../number/branded-types/non-zero-int32.mjs';
|
|
15
|
+
import '../../number/branded-types/non-zero-safe-int.mjs';
|
|
16
|
+
import '../../number/branded-types/non-zero-uint16.mjs';
|
|
17
|
+
import '../../number/branded-types/non-zero-uint32.mjs';
|
|
18
|
+
import '../../number/branded-types/positive-finite-number.mjs';
|
|
19
|
+
import '../../number/branded-types/positive-int.mjs';
|
|
20
|
+
import '../../number/branded-types/positive-int16.mjs';
|
|
21
|
+
import '../../number/branded-types/positive-int32.mjs';
|
|
22
|
+
import '../../number/branded-types/positive-safe-int.mjs';
|
|
23
|
+
import '../../number/branded-types/positive-uint16.mjs';
|
|
24
|
+
import '../../number/branded-types/positive-uint32.mjs';
|
|
25
|
+
import '../../number/branded-types/safe-int.mjs';
|
|
26
|
+
import '../../number/branded-types/safe-uint.mjs';
|
|
27
|
+
import '../../number/branded-types/uint.mjs';
|
|
28
|
+
import '../../number/branded-types/uint16.mjs';
|
|
29
|
+
import { asUint32 } from '../../number/branded-types/uint32.mjs';
|
|
30
|
+
import '../../number/enum/int8.mjs';
|
|
31
|
+
import '../../number/enum/uint8.mjs';
|
|
32
|
+
import '../../number/num.mjs';
|
|
33
|
+
import '../../number/refined-number-utils.mjs';
|
|
34
|
+
|
|
35
|
+
function find(...args) {
|
|
36
|
+
switch (args.length) {
|
|
37
|
+
case 2: {
|
|
38
|
+
const [array, predicate] = args;
|
|
39
|
+
const foundIndex = array.findIndex(
|
|
40
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
41
|
+
predicate);
|
|
42
|
+
return foundIndex === -1
|
|
43
|
+
? Optional.none
|
|
44
|
+
: // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
45
|
+
Optional.some(array[foundIndex]);
|
|
46
|
+
}
|
|
47
|
+
case 1: {
|
|
48
|
+
const [predicate] = args;
|
|
49
|
+
return (array) => find(array, predicate);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function findLast(...args) {
|
|
54
|
+
switch (args.length) {
|
|
55
|
+
case 2: {
|
|
56
|
+
const [array, predicate] = args;
|
|
57
|
+
const foundIndex = array.findLastIndex(
|
|
58
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
59
|
+
predicate);
|
|
60
|
+
return foundIndex === -1
|
|
61
|
+
? Optional.none
|
|
62
|
+
: // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
63
|
+
Optional.some(array[foundIndex]);
|
|
64
|
+
}
|
|
65
|
+
case 1: {
|
|
66
|
+
const [predicate] = args;
|
|
67
|
+
return (array) => findLast(array, predicate);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function findIndex(...args) {
|
|
72
|
+
switch (args.length) {
|
|
73
|
+
case 2: {
|
|
74
|
+
const [array, predicate] = args;
|
|
75
|
+
return pipe(array.findIndex(
|
|
76
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
77
|
+
predicate)).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;
|
|
78
|
+
}
|
|
79
|
+
case 1: {
|
|
80
|
+
const [predicate] = args;
|
|
81
|
+
return (array) => findIndex(array, predicate);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function findLastIndex(...args) {
|
|
86
|
+
switch (args.length) {
|
|
87
|
+
case 2: {
|
|
88
|
+
const [array, predicate] = args;
|
|
89
|
+
return pipe(array.findLastIndex(
|
|
90
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
91
|
+
predicate)).map((idx) => (idx >= 0 ? asUint32(idx) : -1)).value;
|
|
92
|
+
}
|
|
93
|
+
case 1: {
|
|
94
|
+
const [predicate] = args;
|
|
95
|
+
return (array) => findLastIndex(array, predicate);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function indexOf(...args) {
|
|
100
|
+
switch (args.length) {
|
|
101
|
+
case 2: {
|
|
102
|
+
const [array, searchElement] = args;
|
|
103
|
+
const index = array.indexOf(searchElement);
|
|
104
|
+
return index !== -1 ? asUint32(index) : -1;
|
|
105
|
+
}
|
|
106
|
+
case 1: {
|
|
107
|
+
const [searchElement] = args;
|
|
108
|
+
return (array) => indexOf(array, searchElement);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function indexOfFrom(...args) {
|
|
113
|
+
switch (args.length) {
|
|
114
|
+
case 3: {
|
|
115
|
+
const [array, searchElement, fromIndex] = args;
|
|
116
|
+
const index = array.indexOf(searchElement, fromIndex);
|
|
117
|
+
return index !== -1 ? asUint32(index) : -1;
|
|
118
|
+
}
|
|
119
|
+
case 2: {
|
|
120
|
+
const [searchElement, fromIndex] = args;
|
|
121
|
+
return (array) => indexOfFrom(array, searchElement, fromIndex);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function lastIndexOf(...args) {
|
|
126
|
+
switch (args.length) {
|
|
127
|
+
case 2: {
|
|
128
|
+
const [array, searchElement] = args;
|
|
129
|
+
const index = array.lastIndexOf(searchElement);
|
|
130
|
+
return index !== -1 ? asUint32(index) : -1;
|
|
131
|
+
}
|
|
132
|
+
case 1: {
|
|
133
|
+
const [searchElement] = args;
|
|
134
|
+
return (array) => lastIndexOf(array, searchElement);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function lastIndexOfFrom(...args) {
|
|
139
|
+
switch (args.length) {
|
|
140
|
+
case 3: {
|
|
141
|
+
const [array, searchElement, fromIndex] = args;
|
|
142
|
+
const index = array.lastIndexOf(searchElement, fromIndex);
|
|
143
|
+
return index !== -1 ? asUint32(index) : -1;
|
|
144
|
+
}
|
|
145
|
+
case 2: {
|
|
146
|
+
const [searchElement, fromIndex] = args;
|
|
147
|
+
return (array) => lastIndexOfFrom(array, searchElement, fromIndex);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export { find, findIndex, findLast, findLastIndex, indexOf, indexOfFrom, lastIndexOf, lastIndexOfFrom };
|
|
153
|
+
//# sourceMappingURL=array-utils-search.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-utils-search.mjs","sources":["../../../src/array/impl/array-utils-search.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if two arrays are equal by comparing their elements.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* const numbers = [1, 2, 3] as const;
|
|
8
|
+
* const sameNumbers = [1, 2, 3] as const;
|
|
9
|
+
* const differentNumbers = [1, 2, 4] as const;
|
|
10
|
+
*
|
|
11
|
+
* assert.ok(Arr.eq(numbers, sameNumbers));
|
|
12
|
+
* assert.notOk(Arr.eq(numbers, differentNumbers));
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare const eq: <E>(array1: readonly E[], array2: readonly E[], equality?: (a: E, b: E) => boolean) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Alias for `eq`.
|
|
18
|
+
*
|
|
19
|
+
* @see {@link eq}
|
|
20
|
+
*/
|
|
21
|
+
export declare const equal: <E>(array1: readonly E[], array2: readonly E[], equality?: (a: E, b: E) => boolean) => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if the first array is a subset of the second array.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* const subset = [1, 2] as const;
|
|
29
|
+
* const superset = [1, 2, 3] as const;
|
|
30
|
+
* const notSubset = [2, 4] as const;
|
|
31
|
+
*
|
|
32
|
+
* assert.ok(Arr.isSubset(subset, superset));
|
|
33
|
+
* assert.notOk(Arr.isSubset(notSubset, superset));
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const isSubset: <E1 extends Primitive, E2 extends Primitive = E1>(array1: readonly E1[], array2: readonly E2[]) => boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Checks if the first array is a superset of the second array.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
*
|
|
42
|
+
* ```ts
|
|
43
|
+
* const potentialSuperset = ['a', 'b', 'c'] as const;
|
|
44
|
+
* const subset = ['a', 'c'] as const;
|
|
45
|
+
* const notSuperset = ['a', 'd'] as const;
|
|
46
|
+
*
|
|
47
|
+
* assert.ok(Arr.isSuperset(potentialSuperset, subset));
|
|
48
|
+
* assert.notOk(Arr.isSuperset(subset, potentialSuperset));
|
|
49
|
+
* assert.notOk(Arr.isSuperset(potentialSuperset, notSuperset));
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare const isSuperset: <E1 extends Primitive, E2 extends Primitive = E1>(array1: readonly E1[], array2: readonly E2[]) => boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Returns the intersection of two arrays.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
*
|
|
58
|
+
* ```ts
|
|
59
|
+
* const refs = ['Ada', 'Alan', 'Grace'] as const;
|
|
60
|
+
* const attendees = ['Grace', 'Alan', 'Barbara'] as const;
|
|
61
|
+
*
|
|
62
|
+
* const both = Arr.setIntersection(refs, attendees);
|
|
63
|
+
*
|
|
64
|
+
* assert.deepStrictEqual(both, ['Alan', 'Grace']);
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare const setIntersection: <E1 extends Primitive, E2 extends Primitive = E1>(array1: readonly E1[], array2: readonly E2[]) => readonly (E1 & E2)[];
|
|
68
|
+
/**
|
|
69
|
+
* Returns the set difference of two arrays (elements in first but not in second).
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
*
|
|
73
|
+
* ```ts
|
|
74
|
+
* const baseline = [1, 2, 3, 4] as const;
|
|
75
|
+
* const removed = [2, 4] as const;
|
|
76
|
+
*
|
|
77
|
+
* const remaining = Arr.setDifference(baseline, removed);
|
|
78
|
+
*
|
|
79
|
+
* assert.deepStrictEqual(remaining, [1, 3]);
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare const setDifference: <E extends Primitive>(array1: readonly E[], array2: readonly E[]) => readonly E[];
|
|
83
|
+
/**
|
|
84
|
+
* Returns the set difference of two sorted numeric arrays (optimized for sorted arrays).
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
*
|
|
88
|
+
* ```ts
|
|
89
|
+
* const upcoming = [1, 3, 5, 7, 9] as const;
|
|
90
|
+
* const completed = [3, 4, 7] as const;
|
|
91
|
+
*
|
|
92
|
+
* const remaining = Arr.sortedNumSetDifference(upcoming, completed);
|
|
93
|
+
*
|
|
94
|
+
* const expected = [1, 5, 9] as const;
|
|
95
|
+
*
|
|
96
|
+
* assert.deepStrictEqual(remaining, expected);
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare const sortedNumSetDifference: <E extends number>(sortedList1: readonly E[], sortedList2: readonly E[]) => readonly E[];
|
|
100
|
+
//# sourceMappingURL=array-utils-set-op.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-utils-set-op.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-set-op.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,EAAE,GAAI,CAAC,EAClB,QAAQ,SAAS,CAAC,EAAE,EACpB,QAAQ,SAAS,CAAC,EAAE,EACpB,WAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAmB,KAC5C,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;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,EACtE,QAAQ,SAAS,EAAE,EAAE,EACrB,QAAQ,SAAS,EAAE,EAAE,KACpB,OAIA,CAAC;AAEJ;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,GAAI,EAAE,SAAS,SAAS,EAAE,EAAE,SAAS,SAAS,GAAG,EAAE,EACxE,QAAQ,SAAS,EAAE,EAAE,EACrB,QAAQ,SAAS,EAAE,EAAE,KACpB,OAAmC,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,EAAE,SAAS,SAAS,EACpB,EAAE,SAAS,SAAS,GAAG,EAAE,EAEzB,QAAQ,SAAS,EAAE,EAAE,EACrB,QAAQ,SAAS,EAAE,EAAE,KACpB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAE+C,CAAC;AAErE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,EAC/C,QAAQ,SAAS,CAAC,EAAE,EACpB,QAAQ,SAAS,CAAC,EAAE,KACnB,SAAS,CAAC,EAA+C,CAAC;AAE7D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,EACrD,aAAa,SAAS,CAAC,EAAE,EACzB,aAAa,SAAS,CAAC,EAAE,KACxB,SAAS,CAAC,EA8BZ,CAAC"}
|