ts-data-forge 3.3.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 +37 -13
- 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 +1 -0
- package/dist/entry-point.d.mts.map +1 -1
- package/dist/entry-point.mjs +2 -1
- package/dist/entry-point.mjs.map +1 -1
- 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 +12 -126
- 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/package.json +47 -39
- 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 +1 -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-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 +12 -126
- package/src/others/unknown-to-string.test.mts +13 -1
- 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
|
@@ -26,13 +26,24 @@ const {
|
|
|
26
26
|
>({
|
|
27
27
|
integerOrSafeInteger: 'SafeInteger',
|
|
28
28
|
MIN_VALUE: 1,
|
|
29
|
-
// eslint-disable-next-line
|
|
29
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
30
30
|
MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,
|
|
31
31
|
typeNameInMessage,
|
|
32
32
|
} as const);
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* Checks if a number is a PositiveSafeInt (a positive safe integer in the range
|
|
35
|
+
* Checks if a number is a PositiveSafeInt (a positive safe integer in the range
|
|
36
|
+
* [1, MAX_SAFE_INTEGER]).
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
*
|
|
40
|
+
* ```ts
|
|
41
|
+
* assert.ok(isPositiveSafeInt(1));
|
|
42
|
+
* assert.ok(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));
|
|
43
|
+
* assert.notOk(isPositiveSafeInt(0));
|
|
44
|
+
* assert.ok(PositiveSafeInt.is(42));
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
36
47
|
* @param value The value to check.
|
|
37
48
|
* @returns `true` if the value is a PositiveSafeInt, `false` otherwise.
|
|
38
49
|
*/
|
|
@@ -40,68 +51,78 @@ export const isPositiveSafeInt = is;
|
|
|
40
51
|
|
|
41
52
|
/**
|
|
42
53
|
* Casts a number to a PositiveSafeInt type.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
*
|
|
57
|
+
* ```ts
|
|
58
|
+
* const branded = asPositiveSafeInt(128);
|
|
59
|
+
*
|
|
60
|
+
* assert(branded === 128);
|
|
61
|
+
* assert.ok(PositiveSafeInt.is(branded));
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
43
64
|
* @param value The value to cast.
|
|
44
65
|
* @returns The value as a PositiveSafeInt type.
|
|
45
66
|
* @throws {TypeError} If the value is not a positive safe integer.
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* const x = asPositiveSafeInt(5); // PositiveSafeInt
|
|
49
|
-
* const y = asPositiveSafeInt(1000); // PositiveSafeInt
|
|
50
|
-
* // asPositiveSafeInt(0); // throws TypeError
|
|
51
|
-
* // asPositiveSafeInt(-1); // throws TypeError
|
|
52
|
-
* ```
|
|
53
67
|
*/
|
|
54
68
|
export const asPositiveSafeInt = castType;
|
|
55
69
|
|
|
56
70
|
/**
|
|
57
|
-
* Namespace providing type-safe arithmetic operations for positive safe
|
|
71
|
+
* Namespace providing type-safe arithmetic operations for positive safe
|
|
72
|
+
* integers.
|
|
58
73
|
*
|
|
59
|
-
* All operations automatically clamp results to the positive safe integer range
|
|
60
|
-
* This ensures that all arithmetic maintains both the
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* @example
|
|
64
|
-
* ```typescript
|
|
65
|
-
* const a = asPositiveSafeInt(1000000);
|
|
66
|
-
* const b = asPositiveSafeInt(2000000);
|
|
67
|
-
*
|
|
68
|
-
* // Arithmetic operations with positive safe range clamping
|
|
69
|
-
* const sum = PositiveSafeInt.add(a, b); // PositiveSafeInt (3000000)
|
|
70
|
-
* const diff = PositiveSafeInt.sub(a, b); // PositiveSafeInt (1 - clamped to MIN_VALUE)
|
|
71
|
-
* const product = PositiveSafeInt.mul(a, b); // PositiveSafeInt (2000000000000)
|
|
72
|
-
*
|
|
73
|
-
* // Range operations
|
|
74
|
-
* const clamped = PositiveSafeInt.clamp(0); // PositiveSafeInt (1)
|
|
75
|
-
* const minimum = PositiveSafeInt.min(a, b); // PositiveSafeInt (1000000)
|
|
76
|
-
* const maximum = PositiveSafeInt.max(a, b); // PositiveSafeInt (2000000)
|
|
77
|
-
*
|
|
78
|
-
* // Utility operations
|
|
79
|
-
* const random = PositiveSafeInt.random(); // PositiveSafeInt (random positive safe integer)
|
|
80
|
-
* const power = PositiveSafeInt.pow(asPositiveSafeInt(2), asPositiveSafeInt(10)); // PositiveSafeInt (1024)
|
|
81
|
-
* ```
|
|
74
|
+
* All operations automatically clamp results to the positive safe integer range
|
|
75
|
+
* [1, MAX_SAFE_INTEGER]. This ensures that all arithmetic maintains both the
|
|
76
|
+
* positive constraint and IEEE 754 precision guarantees, preventing precision
|
|
77
|
+
* loss and ensuring results are always positive.
|
|
82
78
|
*/
|
|
83
79
|
export const PositiveSafeInt = {
|
|
84
80
|
/**
|
|
85
81
|
* Type guard to check if a value is a PositiveSafeInt.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
*
|
|
85
|
+
* ```ts
|
|
86
|
+
* assert.ok(isPositiveSafeInt(1));
|
|
87
|
+
* assert.ok(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));
|
|
88
|
+
* assert.notOk(isPositiveSafeInt(0));
|
|
89
|
+
* assert.ok(PositiveSafeInt.is(42));
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
86
92
|
* @param value The value to check.
|
|
87
93
|
* @returns `true` if the value is a positive safe integer, `false` otherwise.
|
|
94
|
+
* @see {@link isPositiveSafeInt} for usage examples
|
|
88
95
|
*/
|
|
89
96
|
is,
|
|
90
97
|
|
|
91
98
|
/**
|
|
92
99
|
* The minimum value for a positive safe integer.
|
|
100
|
+
*
|
|
93
101
|
* @readonly
|
|
94
102
|
*/
|
|
95
103
|
MIN_VALUE,
|
|
96
104
|
|
|
97
105
|
/**
|
|
98
106
|
* The maximum safe integer value (2^53 - 1).
|
|
107
|
+
*
|
|
99
108
|
* @readonly
|
|
100
109
|
*/
|
|
101
110
|
MAX_VALUE,
|
|
102
111
|
|
|
103
112
|
/**
|
|
104
113
|
* Returns the smaller of two PositiveSafeInt values.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
*
|
|
117
|
+
* ```ts
|
|
118
|
+
* const smallest = PositiveSafeInt.min(
|
|
119
|
+
* asPositiveSafeInt(10),
|
|
120
|
+
* asPositiveSafeInt(5),
|
|
121
|
+
* );
|
|
122
|
+
*
|
|
123
|
+
* assert(smallest === 5);
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
105
126
|
* @param a The first PositiveSafeInt.
|
|
106
127
|
* @param b The second PositiveSafeInt.
|
|
107
128
|
* @returns The minimum value as a PositiveSafeInt.
|
|
@@ -110,6 +131,18 @@ export const PositiveSafeInt = {
|
|
|
110
131
|
|
|
111
132
|
/**
|
|
112
133
|
* Returns the larger of two PositiveSafeInt values.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
*
|
|
137
|
+
* ```ts
|
|
138
|
+
* const largest = PositiveSafeInt.max(
|
|
139
|
+
* asPositiveSafeInt(10),
|
|
140
|
+
* asPositiveSafeInt(5),
|
|
141
|
+
* );
|
|
142
|
+
*
|
|
143
|
+
* assert(largest === 10);
|
|
144
|
+
* ```
|
|
145
|
+
*
|
|
113
146
|
* @param a The first PositiveSafeInt.
|
|
114
147
|
* @param b The second PositiveSafeInt.
|
|
115
148
|
* @returns The maximum value as a PositiveSafeInt.
|
|
@@ -118,6 +151,19 @@ export const PositiveSafeInt = {
|
|
|
118
151
|
|
|
119
152
|
/**
|
|
120
153
|
* Clamps a number to the positive safe integer range.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
*
|
|
157
|
+
* ```ts
|
|
158
|
+
* const belowRange = PositiveSafeInt.clamp(0);
|
|
159
|
+
* const withinRange = PositiveSafeInt.clamp(123);
|
|
160
|
+
* const aboveRange = PositiveSafeInt.clamp(Number.MAX_SAFE_INTEGER + 10);
|
|
161
|
+
*
|
|
162
|
+
* assert(belowRange === 1);
|
|
163
|
+
* assert(withinRange === 123);
|
|
164
|
+
* assert(aboveRange === Number.MAX_SAFE_INTEGER);
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
121
167
|
* @param value The number to clamp.
|
|
122
168
|
* @returns The value clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
|
|
123
169
|
*/
|
|
@@ -125,12 +171,35 @@ export const PositiveSafeInt = {
|
|
|
125
171
|
|
|
126
172
|
/**
|
|
127
173
|
* Generates a random PositiveSafeInt value within the valid range.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
*
|
|
177
|
+
* ```ts
|
|
178
|
+
* const min = asPositiveSafeInt(1);
|
|
179
|
+
* const max = asPositiveSafeInt(6);
|
|
180
|
+
* const randomValue = PositiveSafeInt.random(min, max);
|
|
181
|
+
*
|
|
182
|
+
* assert.ok(PositiveSafeInt.is(randomValue));
|
|
183
|
+
* assert.ok(randomValue >= 1 && randomValue <= 6);
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
128
186
|
* @returns A random PositiveSafeInt between 1 and MAX_SAFE_INTEGER.
|
|
129
187
|
*/
|
|
130
188
|
random,
|
|
131
189
|
|
|
132
190
|
/**
|
|
133
191
|
* Raises a PositiveSafeInt to the power of another PositiveSafeInt.
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
*
|
|
195
|
+
* ```ts
|
|
196
|
+
* const base = asPositiveSafeInt(3);
|
|
197
|
+
* const exponent = asPositiveSafeInt(3);
|
|
198
|
+
* const power = PositiveSafeInt.pow(base, exponent);
|
|
199
|
+
*
|
|
200
|
+
* assert(power === 27);
|
|
201
|
+
* ```
|
|
202
|
+
*
|
|
134
203
|
* @param a The base PositiveSafeInt.
|
|
135
204
|
* @param b The exponent PositiveSafeInt.
|
|
136
205
|
* @returns `a ** b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
|
|
@@ -139,6 +208,19 @@ export const PositiveSafeInt = {
|
|
|
139
208
|
|
|
140
209
|
/**
|
|
141
210
|
* Adds two PositiveSafeInt values.
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
*
|
|
214
|
+
* ```ts
|
|
215
|
+
* const sum = PositiveSafeInt.add(
|
|
216
|
+
* asPositiveSafeInt(1000),
|
|
217
|
+
* asPositiveSafeInt(2048),
|
|
218
|
+
* );
|
|
219
|
+
*
|
|
220
|
+
* assert(sum === 3048);
|
|
221
|
+
* assert.ok(PositiveSafeInt.is(sum));
|
|
222
|
+
* ```
|
|
223
|
+
*
|
|
142
224
|
* @param a The first PositiveSafeInt.
|
|
143
225
|
* @param b The second PositiveSafeInt.
|
|
144
226
|
* @returns `a + b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
|
|
@@ -147,14 +229,41 @@ export const PositiveSafeInt = {
|
|
|
147
229
|
|
|
148
230
|
/**
|
|
149
231
|
* Subtracts one PositiveSafeInt from another.
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
*
|
|
235
|
+
* ```ts
|
|
236
|
+
* const difference = PositiveSafeInt.sub(
|
|
237
|
+
* asPositiveSafeInt(10),
|
|
238
|
+
* asPositiveSafeInt(20),
|
|
239
|
+
* );
|
|
240
|
+
*
|
|
241
|
+
* assert(difference === 1);
|
|
242
|
+
* assert.ok(PositiveSafeInt.is(difference));
|
|
243
|
+
* ```
|
|
244
|
+
*
|
|
150
245
|
* @param a The minuend PositiveSafeInt.
|
|
151
246
|
* @param b The subtrahend PositiveSafeInt.
|
|
152
|
-
* @returns `a - b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt
|
|
247
|
+
* @returns `a - b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt
|
|
248
|
+
* (minimum 1).
|
|
153
249
|
*/
|
|
154
250
|
sub,
|
|
155
251
|
|
|
156
252
|
/**
|
|
157
253
|
* Multiplies two PositiveSafeInt values.
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
*
|
|
257
|
+
* ```ts
|
|
258
|
+
* const product = PositiveSafeInt.mul(
|
|
259
|
+
* asPositiveSafeInt(50),
|
|
260
|
+
* asPositiveSafeInt(20),
|
|
261
|
+
* );
|
|
262
|
+
*
|
|
263
|
+
* assert(product === 1000);
|
|
264
|
+
* assert.ok(PositiveSafeInt.is(product));
|
|
265
|
+
* ```
|
|
266
|
+
*
|
|
158
267
|
* @param a The first PositiveSafeInt.
|
|
159
268
|
* @param b The second PositiveSafeInt.
|
|
160
269
|
* @returns `a * b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
|
|
@@ -163,6 +272,23 @@ export const PositiveSafeInt = {
|
|
|
163
272
|
|
|
164
273
|
/**
|
|
165
274
|
* Divides one PositiveSafeInt by another using floor division.
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
*
|
|
278
|
+
* ```ts
|
|
279
|
+
* const quotient = PositiveSafeInt.div(
|
|
280
|
+
* asPositiveSafeInt(25),
|
|
281
|
+
* asPositiveSafeInt(4),
|
|
282
|
+
* );
|
|
283
|
+
* const clamped = PositiveSafeInt.div(
|
|
284
|
+
* asPositiveSafeInt(5),
|
|
285
|
+
* asPositiveSafeInt(50),
|
|
286
|
+
* );
|
|
287
|
+
*
|
|
288
|
+
* assert(quotient === 6);
|
|
289
|
+
* assert(clamped === 1);
|
|
290
|
+
* ```
|
|
291
|
+
*
|
|
166
292
|
* @param a The dividend PositiveSafeInt.
|
|
167
293
|
* @param b The divisor PositiveSafeInt.
|
|
168
294
|
* @returns `⌊a / b⌋` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
|
|
@@ -31,7 +31,9 @@ const {
|
|
|
31
31
|
} as const);
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* Checks if a number is a PositiveUint16 (16-bit positive unsigned integer in
|
|
34
|
+
* Checks if a number is a PositiveUint16 (16-bit positive unsigned integer in
|
|
35
|
+
* the range [1, 2^16)).
|
|
36
|
+
*
|
|
35
37
|
* @param value The value to check.
|
|
36
38
|
* @returns `true` if the value is a PositiveUint16, `false` otherwise.
|
|
37
39
|
*/
|
|
@@ -39,70 +41,49 @@ export const isPositiveUint16 = is;
|
|
|
39
41
|
|
|
40
42
|
/**
|
|
41
43
|
* Casts a number to a PositiveUint16 type.
|
|
44
|
+
*
|
|
42
45
|
* @param value The value to cast.
|
|
43
46
|
* @returns The value as a PositiveUint16 type.
|
|
44
47
|
* @throws {TypeError} If the value is not a positive integer in [1, 2^16).
|
|
45
|
-
* @example
|
|
46
|
-
* ```typescript
|
|
47
|
-
* const x = asPositiveUint16(1000); // PositiveUint16
|
|
48
|
-
* const y = asPositiveUint16(65535); // PositiveUint16
|
|
49
|
-
* // asPositiveUint16(0); // throws TypeError
|
|
50
|
-
* // asPositiveUint16(-1); // throws TypeError
|
|
51
|
-
* // asPositiveUint16(65536); // throws TypeError
|
|
52
|
-
* ```
|
|
53
48
|
*/
|
|
54
49
|
export const asPositiveUint16 = castType;
|
|
55
50
|
|
|
56
51
|
/**
|
|
57
|
-
* Namespace providing type-safe arithmetic operations for 16-bit positive
|
|
58
|
-
*
|
|
59
|
-
* All operations automatically clamp results to the valid PositiveUint16 range [1, 65535].
|
|
60
|
-
* This ensures that all arithmetic maintains the 16-bit positive unsigned integer constraint,
|
|
61
|
-
* with results below 1 clamped to MIN_VALUE and overflow results clamped to MAX_VALUE.
|
|
62
|
-
*
|
|
63
|
-
* @example
|
|
64
|
-
* ```typescript
|
|
65
|
-
* const a = asPositiveUint16(60000);
|
|
66
|
-
* const b = asPositiveUint16(10000);
|
|
67
|
-
*
|
|
68
|
-
* // Arithmetic operations with automatic clamping and positive constraint
|
|
69
|
-
* const sum = PositiveUint16.add(a, b); // PositiveUint16 (65535 - clamped to MAX_VALUE)
|
|
70
|
-
* const diff = PositiveUint16.sub(a, b); // PositiveUint16 (50000)
|
|
71
|
-
* const reverseDiff = PositiveUint16.sub(b, a); // PositiveUint16 (1 - clamped to MIN_VALUE)
|
|
72
|
-
* const product = PositiveUint16.mul(a, b); // PositiveUint16 (65535 - clamped due to overflow)
|
|
73
|
-
*
|
|
74
|
-
* // Range operations (maintaining positive constraint)
|
|
75
|
-
* const clamped = PositiveUint16.clamp(-100); // PositiveUint16 (1)
|
|
76
|
-
* const minimum = PositiveUint16.min(a, b); // PositiveUint16 (10000)
|
|
77
|
-
* const maximum = PositiveUint16.max(a, b); // PositiveUint16 (60000)
|
|
52
|
+
* Namespace providing type-safe arithmetic operations for 16-bit positive
|
|
53
|
+
* unsigned integers.
|
|
78
54
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
55
|
+
* All operations automatically clamp results to the valid PositiveUint16 range
|
|
56
|
+
* [1, 65535]. This ensures that all arithmetic maintains the 16-bit positive
|
|
57
|
+
* unsigned integer constraint, with results below 1 clamped to MIN_VALUE and
|
|
58
|
+
* overflow results clamped to MAX_VALUE.
|
|
83
59
|
*/
|
|
84
60
|
export const PositiveUint16 = {
|
|
85
61
|
/**
|
|
86
62
|
* Type guard to check if a value is a PositiveUint16.
|
|
63
|
+
*
|
|
87
64
|
* @param value The value to check.
|
|
88
|
-
* @returns `true` if the value is a 16-bit positive unsigned integer, `false`
|
|
65
|
+
* @returns `true` if the value is a 16-bit positive unsigned integer, `false`
|
|
66
|
+
* otherwise.
|
|
89
67
|
*/
|
|
90
68
|
is,
|
|
91
69
|
|
|
92
70
|
/**
|
|
93
71
|
* The minimum value for a 16-bit positive unsigned integer.
|
|
72
|
+
*
|
|
94
73
|
* @readonly
|
|
95
74
|
*/
|
|
96
75
|
MIN_VALUE,
|
|
97
76
|
|
|
98
77
|
/**
|
|
99
78
|
* The maximum value for a 16-bit positive unsigned integer.
|
|
79
|
+
*
|
|
100
80
|
* @readonly
|
|
101
81
|
*/
|
|
102
82
|
MAX_VALUE,
|
|
103
83
|
|
|
104
84
|
/**
|
|
105
85
|
* Returns the smaller of two PositiveUint16 values.
|
|
86
|
+
*
|
|
106
87
|
* @param a The first PositiveUint16.
|
|
107
88
|
* @param b The second PositiveUint16.
|
|
108
89
|
* @returns The minimum value as a PositiveUint16.
|
|
@@ -111,6 +92,7 @@ export const PositiveUint16 = {
|
|
|
111
92
|
|
|
112
93
|
/**
|
|
113
94
|
* Returns the larger of two PositiveUint16 values.
|
|
95
|
+
*
|
|
114
96
|
* @param a The first PositiveUint16.
|
|
115
97
|
* @param b The second PositiveUint16.
|
|
116
98
|
* @returns The maximum value as a PositiveUint16.
|
|
@@ -119,6 +101,7 @@ export const PositiveUint16 = {
|
|
|
119
101
|
|
|
120
102
|
/**
|
|
121
103
|
* Clamps a number to the PositiveUint16 range.
|
|
104
|
+
*
|
|
122
105
|
* @param value The number to clamp.
|
|
123
106
|
* @returns The value clamped to [1, 65535] as a PositiveUint16.
|
|
124
107
|
*/
|
|
@@ -126,12 +109,14 @@ export const PositiveUint16 = {
|
|
|
126
109
|
|
|
127
110
|
/**
|
|
128
111
|
* Generates a random PositiveUint16 value within the valid range.
|
|
112
|
+
*
|
|
129
113
|
* @returns A random PositiveUint16 between 1 and 65535.
|
|
130
114
|
*/
|
|
131
115
|
random,
|
|
132
116
|
|
|
133
117
|
/**
|
|
134
118
|
* Raises a PositiveUint16 to the power of another PositiveUint16.
|
|
119
|
+
*
|
|
135
120
|
* @param a The base PositiveUint16.
|
|
136
121
|
* @param b The exponent PositiveUint16.
|
|
137
122
|
* @returns `a ** b` clamped to [1, 65535] as a PositiveUint16.
|
|
@@ -140,6 +125,7 @@ export const PositiveUint16 = {
|
|
|
140
125
|
|
|
141
126
|
/**
|
|
142
127
|
* Adds two PositiveUint16 values.
|
|
128
|
+
*
|
|
143
129
|
* @param a The first PositiveUint16.
|
|
144
130
|
* @param b The second PositiveUint16.
|
|
145
131
|
* @returns `a + b` clamped to [1, 65535] as a PositiveUint16.
|
|
@@ -148,6 +134,7 @@ export const PositiveUint16 = {
|
|
|
148
134
|
|
|
149
135
|
/**
|
|
150
136
|
* Subtracts one PositiveUint16 from another.
|
|
137
|
+
*
|
|
151
138
|
* @param a The minuend PositiveUint16.
|
|
152
139
|
* @param b The subtrahend PositiveUint16.
|
|
153
140
|
* @returns `a - b` clamped to [1, 65535] as a PositiveUint16 (minimum 1).
|
|
@@ -156,6 +143,7 @@ export const PositiveUint16 = {
|
|
|
156
143
|
|
|
157
144
|
/**
|
|
158
145
|
* Multiplies two PositiveUint16 values.
|
|
146
|
+
*
|
|
159
147
|
* @param a The first PositiveUint16.
|
|
160
148
|
* @param b The second PositiveUint16.
|
|
161
149
|
* @returns `a * b` clamped to [1, 65535] as a PositiveUint16.
|
|
@@ -164,6 +152,7 @@ export const PositiveUint16 = {
|
|
|
164
152
|
|
|
165
153
|
/**
|
|
166
154
|
* Divides one PositiveUint16 by another using floor division.
|
|
155
|
+
*
|
|
167
156
|
* @param a The dividend PositiveUint16.
|
|
168
157
|
* @param b The divisor PositiveUint16.
|
|
169
158
|
* @returns `⌊a / b⌋` clamped to [1, 65535] as a PositiveUint16.
|
|
@@ -11,8 +11,8 @@ describe('PositiveUint16', () => {
|
|
|
11
11
|
test('accepts valid positive uint16 values', () => {
|
|
12
12
|
expect(() => asPositiveUint16(1)).not.toThrow();
|
|
13
13
|
expect(() => asPositiveUint16(1000)).not.toThrow();
|
|
14
|
-
expect(() => asPositiveUint16(
|
|
15
|
-
expect(() => asPositiveUint16(
|
|
14
|
+
expect(() => asPositiveUint16(65_535)).not.toThrow(); // 2^16 - 1
|
|
15
|
+
expect(() => asPositiveUint16(32_768)).not.toThrow(); // 2^15
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
test('rejects zero', () => {
|
|
@@ -20,8 +20,8 @@ describe('PositiveUint16', () => {
|
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
test('rejects values outside uint16 range', () => {
|
|
23
|
-
expect(() => asPositiveUint16(
|
|
24
|
-
expect(() => asPositiveUint16(
|
|
23
|
+
expect(() => asPositiveUint16(65_536)).toThrow(TypeError); // 2^16
|
|
24
|
+
expect(() => asPositiveUint16(100_000)).toThrow(TypeError);
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
test('rejects negative integers', () => {
|
|
@@ -44,7 +44,7 @@ describe('PositiveUint16', () => {
|
|
|
44
44
|
test('returns the same value for valid inputs', () => {
|
|
45
45
|
expect(asPositiveUint16(5)).toBe(5);
|
|
46
46
|
expect(asPositiveUint16(1)).toBe(1);
|
|
47
|
-
expect(asPositiveUint16(
|
|
47
|
+
expect(asPositiveUint16(65_535)).toBe(65_535);
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
test.each([
|
|
@@ -55,7 +55,7 @@ describe('PositiveUint16', () => {
|
|
|
55
55
|
{ name: '-3.4', value: -3.4 },
|
|
56
56
|
{ name: '0', value: 0 },
|
|
57
57
|
{ name: '-1', value: -1 },
|
|
58
|
-
{ name: '65536', value:
|
|
58
|
+
{ name: '65536', value: 65_536 },
|
|
59
59
|
] as const)(
|
|
60
60
|
`asPositiveUint16($name) should throw a TypeError`,
|
|
61
61
|
({ value }) => {
|
|
@@ -72,8 +72,8 @@ describe('PositiveUint16', () => {
|
|
|
72
72
|
test('correctly identifies positive uint16 values', () => {
|
|
73
73
|
expect(isPositiveUint16(1)).toBe(true);
|
|
74
74
|
expect(isPositiveUint16(1000)).toBe(true);
|
|
75
|
-
expect(isPositiveUint16(
|
|
76
|
-
expect(isPositiveUint16(
|
|
75
|
+
expect(isPositiveUint16(65_535)).toBe(true);
|
|
76
|
+
expect(isPositiveUint16(32_768)).toBe(true);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
test('correctly identifies zero', () => {
|
|
@@ -81,8 +81,8 @@ describe('PositiveUint16', () => {
|
|
|
81
81
|
});
|
|
82
82
|
|
|
83
83
|
test('correctly identifies values outside uint16 range', () => {
|
|
84
|
-
expect(isPositiveUint16(
|
|
85
|
-
expect(isPositiveUint16(
|
|
84
|
+
expect(isPositiveUint16(65_536)).toBe(false);
|
|
85
|
+
expect(isPositiveUint16(100_000)).toBe(false);
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
test('correctly identifies negative integers', () => {
|
|
@@ -110,7 +110,7 @@ describe('PositiveUint16', () => {
|
|
|
110
110
|
describe('constants', () => {
|
|
111
111
|
test('MIN_VALUE and MAX_VALUE', () => {
|
|
112
112
|
expect(PositiveUint16.MIN_VALUE).toBe(1);
|
|
113
|
-
expect(PositiveUint16.MAX_VALUE).toBe(
|
|
113
|
+
expect(PositiveUint16.MAX_VALUE).toBe(65_535);
|
|
114
114
|
});
|
|
115
115
|
});
|
|
116
116
|
|
|
@@ -125,10 +125,10 @@ describe('PositiveUint16', () => {
|
|
|
125
125
|
|
|
126
126
|
test('add (with clamping to positive uint16 range)', () => {
|
|
127
127
|
const result = PositiveUint16.add(
|
|
128
|
-
asPositiveUint16(
|
|
128
|
+
asPositiveUint16(65_000),
|
|
129
129
|
asPositiveUint16(1000),
|
|
130
130
|
);
|
|
131
|
-
expect(result).toBe(
|
|
131
|
+
expect(result).toBe(65_535); // clamped to max
|
|
132
132
|
expect(PositiveUint16.add(a, b)).toBe(150);
|
|
133
133
|
});
|
|
134
134
|
|
|
@@ -142,7 +142,7 @@ describe('PositiveUint16', () => {
|
|
|
142
142
|
asPositiveUint16(1000),
|
|
143
143
|
asPositiveUint16(100),
|
|
144
144
|
);
|
|
145
|
-
expect(result).toBe(
|
|
145
|
+
expect(result).toBe(65_535); // clamped to max
|
|
146
146
|
expect(
|
|
147
147
|
PositiveUint16.mul(asPositiveUint16(10), asPositiveUint16(5)),
|
|
148
148
|
).toBe(50);
|
|
@@ -163,7 +163,7 @@ describe('PositiveUint16', () => {
|
|
|
163
163
|
asPositiveUint16(256),
|
|
164
164
|
asPositiveUint16(3),
|
|
165
165
|
);
|
|
166
|
-
expect(result).toBe(
|
|
166
|
+
expect(result).toBe(65_535); // clamped to max
|
|
167
167
|
expect(PositiveUint16.pow(asPositiveUint16(2), asPositiveUint16(3))).toBe(
|
|
168
168
|
8,
|
|
169
169
|
);
|
|
@@ -189,7 +189,7 @@ describe('PositiveUint16', () => {
|
|
|
189
189
|
for (const _ of range(10)) {
|
|
190
190
|
const result = PositiveUint16.random(1, 30);
|
|
191
191
|
expect(result).toBeGreaterThanOrEqual(1);
|
|
192
|
-
expect(result).toBeLessThanOrEqual(
|
|
192
|
+
expect(result).toBeLessThanOrEqual(65_535);
|
|
193
193
|
}
|
|
194
194
|
});
|
|
195
195
|
});
|