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
|
@@ -139,7 +139,7 @@ describe('isNumber', () => {
|
|
|
139
139
|
expect(isNumber('123')).toBe(false);
|
|
140
140
|
expect(isNumber(true)).toBe(false);
|
|
141
141
|
expect(isNumber(null)).toBe(false);
|
|
142
|
-
expect(isNumber(
|
|
142
|
+
expect(isNumber(123n)).toBe(false);
|
|
143
143
|
// eslint-disable-next-line no-new-wrappers, unicorn/new-for-builtins
|
|
144
144
|
expect(isNumber(new Number(42))).toBe(false);
|
|
145
145
|
});
|
|
@@ -155,7 +155,7 @@ describe('isNumber', () => {
|
|
|
155
155
|
|
|
156
156
|
describe('isBigint', () => {
|
|
157
157
|
test('should return true for bigints', () => {
|
|
158
|
-
expect(isBigint(
|
|
158
|
+
expect(isBigint(0n)).toBe(true);
|
|
159
159
|
expect(isBigint(123n)).toBe(true);
|
|
160
160
|
expect(isBigint(-456n)).toBe(true);
|
|
161
161
|
});
|
|
@@ -265,7 +265,7 @@ describe('isNotNumber', () => {
|
|
|
265
265
|
expect(isNotNumber(false)).toBe(true);
|
|
266
266
|
expect(isNotNumber(null)).toBe(true);
|
|
267
267
|
expect(isNotNumber(undefined)).toBe(true);
|
|
268
|
-
expect(isNotNumber(
|
|
268
|
+
expect(isNotNumber(123n)).toBe(true);
|
|
269
269
|
expect(isNotNumber({})).toBe(true);
|
|
270
270
|
expect(isNotNumber([])).toBe(true);
|
|
271
271
|
expect(isNotNumber(Symbol('test'))).toBe(true);
|
|
@@ -284,7 +284,7 @@ describe('isNotNumber', () => {
|
|
|
284
284
|
|
|
285
285
|
describe('isNotBigint', () => {
|
|
286
286
|
test('should return false for bigint values', () => {
|
|
287
|
-
expect(isNotBigint(
|
|
287
|
+
expect(isNotBigint(0n)).toBe(false);
|
|
288
288
|
expect(isNotBigint(123n)).toBe(false);
|
|
289
289
|
expect(isNotBigint(-456n)).toBe(false);
|
|
290
290
|
});
|
|
@@ -326,7 +326,7 @@ describe('isNotString', () => {
|
|
|
326
326
|
expect(isNotString({})).toBe(true);
|
|
327
327
|
expect(isNotString([])).toBe(true);
|
|
328
328
|
expect(isNotString(Symbol('test'))).toBe(true);
|
|
329
|
-
expect(isNotString(
|
|
329
|
+
expect(isNotString(123n)).toBe(true);
|
|
330
330
|
});
|
|
331
331
|
|
|
332
332
|
test('should act as a type guard', () => {
|
|
@@ -356,7 +356,7 @@ describe('isNotSymbol', () => {
|
|
|
356
356
|
expect(isNotSymbol(undefined)).toBe(true);
|
|
357
357
|
expect(isNotSymbol({})).toBe(true);
|
|
358
358
|
expect(isNotSymbol([])).toBe(true);
|
|
359
|
-
expect(isNotSymbol(
|
|
359
|
+
expect(isNotSymbol(123n)).toBe(true);
|
|
360
360
|
});
|
|
361
361
|
|
|
362
362
|
test('should act as a type guard', () => {
|
|
@@ -417,7 +417,7 @@ describe('isNonNullish', () => {
|
|
|
417
417
|
expect(isNonNullish([])).toBe(true);
|
|
418
418
|
expect(isNonNullish(Number.NaN)).toBe(true);
|
|
419
419
|
expect(isNonNullish(Symbol('test'))).toBe(true);
|
|
420
|
-
expect(isNonNullish(
|
|
420
|
+
expect(isNonNullish(123n)).toBe(true);
|
|
421
421
|
});
|
|
422
422
|
|
|
423
423
|
test('should act as a type guard', () => {
|
package/src/guard/key-is-in.mts
CHANGED
|
@@ -1,157 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type guard that checks if a key exists as an own property in an object.
|
|
3
3
|
*
|
|
4
|
-
* This function is similar to `hasKey()` but with reversed parameter order and
|
|
5
|
-
* type narrowing behavior. While `hasKey()` narrows the object type,
|
|
6
|
-
* the key type to be a valid key of the given object.
|
|
4
|
+
* This function is similar to `hasKey()` but with reversed parameter order and
|
|
5
|
+
* different type narrowing behavior. While `hasKey()` narrows the object type,
|
|
6
|
+
* `keyIsIn()` narrows the key type to be a valid key of the given object.
|
|
7
7
|
*
|
|
8
8
|
* **Type Narrowing Behavior:**
|
|
9
|
+
*
|
|
9
10
|
* - Narrows the key type to be a key that exists in the object (`K & keyof R`)
|
|
10
|
-
* - Useful when you have a dynamic key and want to ensure it's valid for a
|
|
11
|
+
* - Useful when you have a dynamic key and want to ensure it's valid for a
|
|
12
|
+
* specific object
|
|
11
13
|
* - The object type remains unchanged
|
|
12
14
|
*
|
|
13
|
-
* **Implementation:** Uses `Object.hasOwn()` to check for own properties (not
|
|
14
|
-
*
|
|
15
|
-
* @template K - The type of the key to check, must extend PropertyKey (string | number | symbol)
|
|
16
|
-
* @template R - The type of the record (object), must extend UnknownRecord
|
|
17
|
-
* @param key - The key to check for
|
|
18
|
-
* @param obj - The object to check within
|
|
19
|
-
* @returns `true` if `key` is an own property of `obj`, `false` otherwise.
|
|
20
|
-
* When `true`, TypeScript narrows the key type to be a valid key of the object.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* Basic usage with known object structure:
|
|
24
|
-
* ```typescript
|
|
25
|
-
* const obj = { a: 1, b: 2, c: 3 };
|
|
26
|
-
* const userInput: string = getUserInput(); // Could be any string
|
|
27
|
-
*
|
|
28
|
-
* if (keyIsIn(userInput, obj)) {
|
|
29
|
-
* // userInput is now narrowed to 'a' | 'b' | 'c'
|
|
30
|
-
* const value = obj[userInput]; // Type-safe access, value is number
|
|
31
|
-
* console.log(`Value for ${userInput}:`, value);
|
|
32
|
-
* } else {
|
|
33
|
-
* console.log(`Key '${userInput}' not found in object`);
|
|
34
|
-
* }
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* Dynamic key validation for safe property access:
|
|
39
|
-
* ```typescript
|
|
40
|
-
* const config = {
|
|
41
|
-
* apiUrl: 'https://api.example.com',
|
|
42
|
-
* timeout: 5000,
|
|
43
|
-
* retries: 3
|
|
44
|
-
* } as const;
|
|
45
|
-
*
|
|
46
|
-
* function getConfigValue(key: string): unknown {
|
|
47
|
-
* if (keyIsIn(key, config)) {
|
|
48
|
-
* // key is now narrowed to 'apiUrl' | 'timeout' | 'retries'
|
|
49
|
-
* return config[key]; // Safe access with proper typing
|
|
50
|
-
* }
|
|
51
|
-
*
|
|
52
|
-
* throw new Error(`Invalid config key: ${key}`);
|
|
53
|
-
* }
|
|
54
|
-
*
|
|
55
|
-
* // Usage
|
|
56
|
-
* const apiUrl = getConfigValue('apiUrl'); // Returns string
|
|
57
|
-
* const timeout = getConfigValue('timeout'); // Returns number
|
|
58
|
-
* // getConfigValue('invalid') would throw an error
|
|
59
|
-
* ```
|
|
15
|
+
* **Implementation:** Uses `Object.hasOwn()` to check for own properties (not
|
|
16
|
+
* inherited).
|
|
60
17
|
*
|
|
61
18
|
* @example
|
|
62
|
-
* Form field validation:
|
|
63
|
-
* ```typescript
|
|
64
|
-
* interface FormData {
|
|
65
|
-
* name: string;
|
|
66
|
-
* email: string;
|
|
67
|
-
* age: number;
|
|
68
|
-
* }
|
|
69
|
-
*
|
|
70
|
-
* const formData: FormData = getFormData();
|
|
71
|
-
* const requiredFields: readonly string[] = ['name', 'email'] as const;
|
|
72
|
-
*
|
|
73
|
-
* function validateRequiredFields(data: FormData): string[] {
|
|
74
|
-
* const errors: string[] = [];
|
|
75
19
|
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* const value = data[field];
|
|
20
|
+
* ```ts
|
|
21
|
+
* const user = { id: 1, name: 'Ada' } as const;
|
|
22
|
+
* const maybeKey: string = 'name';
|
|
80
23
|
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* }
|
|
86
|
-
*
|
|
87
|
-
* return errors;
|
|
88
|
-
* }
|
|
89
|
-
* ```
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* Safe object property iteration:
|
|
93
|
-
* ```typescript
|
|
94
|
-
* const userPreferences = {
|
|
95
|
-
* theme: 'dark',
|
|
96
|
-
* language: 'en',
|
|
97
|
-
* notifications: true
|
|
98
|
-
* };
|
|
99
|
-
*
|
|
100
|
-
* const settingsToUpdate: string[] = getSettingsFromUser();
|
|
101
|
-
*
|
|
102
|
-
* function updatePreferences(updates: Record<string, unknown>) {
|
|
103
|
-
* const validUpdates: Partial<typeof userPreferences> = {};
|
|
104
|
-
*
|
|
105
|
-
* for (const [key, value] of Object.entries(updates)) {
|
|
106
|
-
* if (keyIsIn(key, userPreferences)) {
|
|
107
|
-
* // key is now narrowed to valid preference keys
|
|
108
|
-
* validUpdates[key] = value as typeof userPreferences[typeof key];
|
|
109
|
-
* } else {
|
|
110
|
-
* console.warn(`Unknown preference key: ${key}`);
|
|
111
|
-
* }
|
|
112
|
-
* }
|
|
113
|
-
*
|
|
114
|
-
* return { ...userPreferences, ...validUpdates };
|
|
115
|
-
* }
|
|
116
|
-
* ```
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* Comparison with hasKey() - different narrowing behavior:
|
|
120
|
-
* ```typescript
|
|
121
|
-
* const obj = { x: 10, y: 20 };
|
|
122
|
-
* const key: string = 'x';
|
|
123
|
-
*
|
|
124
|
-
* // Using keyIsIn - narrows the key type
|
|
125
|
-
* if (keyIsIn(key, obj)) {
|
|
126
|
-
* // key is now 'x' | 'y'
|
|
127
|
-
* const value = obj[key]; // Safe access
|
|
128
|
-
* }
|
|
129
|
-
*
|
|
130
|
-
* // Using hasKey - narrows the object type
|
|
131
|
-
* if (hasKey(obj, key)) {
|
|
132
|
-
* // obj type is narrowed to guarantee the key exists
|
|
133
|
-
* const value = obj.x; // Direct access
|
|
134
|
-
* }
|
|
135
|
-
* ```
|
|
136
|
-
*
|
|
137
|
-
* @example
|
|
138
|
-
* Working with union types:
|
|
139
|
-
* ```typescript
|
|
140
|
-
* type Config =
|
|
141
|
-
* | { type: 'database'; host: string; port: number }
|
|
142
|
-
* | { type: 'file'; path: string }
|
|
143
|
-
* | { type: 'memory'; maxSize: number };
|
|
144
|
-
*
|
|
145
|
-
* function getConfigProperty(config: Config, propName: string): unknown {
|
|
146
|
-
* if (keyIsIn(propName, config)) {
|
|
147
|
-
* // propName is narrowed to valid keys for the specific config type
|
|
148
|
-
* return config[propName];
|
|
149
|
-
* }
|
|
150
|
-
*
|
|
151
|
-
* return undefined;
|
|
24
|
+
* if (keyIsIn(maybeKey, user)) {
|
|
25
|
+
* assert(user[maybeKey] === 'Ada');
|
|
26
|
+
* } else {
|
|
27
|
+
* assert.fail('Expected a known key.');
|
|
152
28
|
* }
|
|
153
29
|
* ```
|
|
154
30
|
*
|
|
31
|
+
* @template K - The type of the key to check, must extend PropertyKey (string |
|
|
32
|
+
* number | symbol)
|
|
33
|
+
* @template R - The type of the record (object), must extend UnknownRecord
|
|
34
|
+
* @param key - The key to check for
|
|
35
|
+
* @param obj - The object to check within
|
|
36
|
+
* @returns `true` if `key` is an own property of `obj`, `false` otherwise. When
|
|
37
|
+
* `true`, TypeScript narrows the key type to be a valid key of the object.
|
|
155
38
|
* @see {@link hasKey} - Similar function that narrows the object type instead of the key type
|
|
156
39
|
*/
|
|
157
40
|
export const keyIsIn = <
|
package/src/index.mts
CHANGED
package/src/iterator/range.mts
CHANGED
|
@@ -1,94 +1,61 @@
|
|
|
1
1
|
import { SafeInt, asSafeInt } from '../number/index.mjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Generates a sequence of numbers within a specified range using a generator
|
|
4
|
+
* Generates a sequence of numbers within a specified range using a generator
|
|
5
|
+
* function.
|
|
5
6
|
*
|
|
6
|
-
* This function creates a generator that yields numbers from `start`
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* This function creates a generator that yields numbers from `start`
|
|
8
|
+
* (inclusive) to `end` (exclusive) with the specified `step`
|
|
9
|
+
* increment/decrement. The function implements the JavaScript iterator
|
|
10
|
+
* protocol, making it compatible with for-of loops, spread operator,
|
|
11
|
+
* Array.from(), and other iterator consumers.
|
|
9
12
|
*
|
|
10
13
|
* The function has two overloaded signatures:
|
|
11
|
-
*
|
|
14
|
+
*
|
|
15
|
+
* 1. For non-negative ranges: accepts SafeUint parameters and optional positive
|
|
16
|
+
* step
|
|
12
17
|
* 2. For general ranges: accepts SafeInt parameters and optional non-zero step
|
|
13
18
|
*
|
|
14
19
|
* **Generator Behavior:**
|
|
20
|
+
*
|
|
15
21
|
* - Yields values lazily (computed on-demand)
|
|
16
22
|
* - Returns `void` when iteration completes
|
|
17
23
|
* - Does not accept sent values (next parameter is ignored)
|
|
18
24
|
* - Automatically handles direction based on step sign and start/end relationship
|
|
19
25
|
*
|
|
20
26
|
* **Step Parameter Behavior:**
|
|
27
|
+
*
|
|
21
28
|
* - Positive step: iterates from start toward end (start < end expected)
|
|
22
29
|
* - Negative step: iterates from start toward end (start > end expected)
|
|
23
30
|
* - Zero step: not allowed (NonZeroSafeInt constraint)
|
|
24
31
|
* - Default step: 1 (positive direction)
|
|
25
32
|
*
|
|
26
33
|
* **Edge Cases:**
|
|
34
|
+
*
|
|
27
35
|
* - When start equals end: yields no values (empty sequence)
|
|
28
36
|
* - When step direction conflicts with start/end relationship: yields no values
|
|
29
37
|
* - All parameters must be safe integers (within JavaScript's safe integer range)
|
|
30
38
|
*
|
|
31
|
-
* @template T - The specific SafeInt or SafeUint type being generated
|
|
32
|
-
* @param start - The starting number of the sequence (inclusive). Must be a safe integer.
|
|
33
|
-
* @param end - The end number of the sequence (exclusive). Must be a safe integer.
|
|
34
|
-
* @param step - The increment or decrement value. Defaults to 1. Must be non-zero safe integer.
|
|
35
|
-
* @returns A Generator object that yields safe integers in the specified range.
|
|
36
|
-
*
|
|
37
39
|
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* // Basic ascending range
|
|
40
|
-
* for (const n of range(0, 5)) {
|
|
41
|
-
* console.log(n); // Outputs: 0, 1, 2, 3, 4
|
|
42
|
-
* }
|
|
43
|
-
*
|
|
44
|
-
* // Range with custom step
|
|
45
|
-
* for (const n of range(0, 10, 2)) {
|
|
46
|
-
* console.log(n); // Outputs: 0, 2, 4, 6, 8
|
|
47
|
-
* }
|
|
48
|
-
*
|
|
49
|
-
* // Descending range with negative step
|
|
50
|
-
* for (const n of range(10, 0, -1)) {
|
|
51
|
-
* console.log(n); // Outputs: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
|
|
52
|
-
* }
|
|
53
40
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* const zeroToThree = Array.from(range(0, 3));
|
|
43
|
+
* const threeToZero = Array.from(range(3, 0, -1));
|
|
44
|
+
* const defaultEnd = Array.from(range(4));
|
|
58
45
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* // Empty ranges
|
|
64
|
-
* Array.from(range(5, 5)); // [] (start equals end)
|
|
65
|
-
* Array.from(range(5, 3)); // [] (positive step, start > end)
|
|
66
|
-
* Array.from(range(3, 5, -1)); // [] (negative step, start < end)
|
|
67
|
-
*
|
|
68
|
-
* // Using with iterator protocol manually
|
|
69
|
-
* const gen = range(1, 4);
|
|
70
|
-
* console.log(gen.next()); // { value: 1, done: false }
|
|
71
|
-
* console.log(gen.next()); // { value: 2, done: false }
|
|
72
|
-
* console.log(gen.next()); // { value: 3, done: false }
|
|
73
|
-
* console.log(gen.next()); // { value: undefined, done: true }
|
|
74
|
-
*
|
|
75
|
-
* // Practical usage patterns
|
|
76
|
-
* // Create index sequences
|
|
77
|
-
* const indices = Array.from(range(0, items.length));
|
|
78
|
-
*
|
|
79
|
-
* // Generate test data
|
|
80
|
-
* const testIds = [...range(1, 101)]; // [1, 2, ..., 100]
|
|
81
|
-
*
|
|
82
|
-
* // Iterate with step intervals
|
|
83
|
-
* for (const minute of range(0, 60, 5)) {
|
|
84
|
-
* scheduleTask(minute); // Every 5 minutes
|
|
85
|
-
* }
|
|
86
|
-
*
|
|
87
|
-
* // Countdown sequences
|
|
88
|
-
* for (const count of range(10, 0, -1)) {
|
|
89
|
-
* console.log(`T-minus ${count}`);
|
|
90
|
-
* }
|
|
46
|
+
* assert.deepStrictEqual(zeroToThree, [0, 1, 2]);
|
|
47
|
+
* assert.deepStrictEqual(threeToZero, [3, 2, 1]);
|
|
48
|
+
* assert.deepStrictEqual(defaultEnd, [0, 1, 2, 3]);
|
|
91
49
|
* ```
|
|
50
|
+
*
|
|
51
|
+
* @template T - The specific SafeInt or SafeUint type being generated
|
|
52
|
+
* @param start - The starting number of the sequence (inclusive). Must be a
|
|
53
|
+
* safe integer.
|
|
54
|
+
* @param end - The end number of the sequence (exclusive). Must be a safe
|
|
55
|
+
* integer.
|
|
56
|
+
* @param step - The increment or decrement value. Defaults to 1. Must be
|
|
57
|
+
* non-zero safe integer.
|
|
58
|
+
* @returns A Generator object that yields safe integers in the specified range.
|
|
92
59
|
*/
|
|
93
60
|
export function range(
|
|
94
61
|
end: WithSmallInt<SafeUint, MaxInt>,
|