ts-data-forge 14.10.2 → 14.11.0
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 +34 -1
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs +4 -3
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +10 -3
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +2 -2
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +2 -1
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/built-in-tag.d.mts +22 -0
- package/dist/built-in-tag.d.mts.map +1 -0
- package/dist/built-in-tag.mjs +34 -0
- package/dist/built-in-tag.mjs.map +1 -0
- package/dist/collections/stack.mjs +3 -3
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/iterator/range.d.mts +1 -1
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs +5 -2
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +4 -9
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +9 -9
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +3 -9
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +9 -10
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +3 -18
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +9 -10
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +3 -14
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +9 -10
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/negative-finite-number.d.mts +4 -16
- package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/negative-finite-number.mjs +9 -10
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/negative-int.d.mts +3 -16
- package/dist/number/branded-types/negative-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-int.mjs +9 -11
- package/dist/number/branded-types/negative-int.mjs.map +1 -1
- package/dist/number/branded-types/negative-safe-int.d.mts +3 -17
- package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-safe-int.mjs +9 -11
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +4 -14
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +9 -9
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +3 -19
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +9 -10
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +3 -17
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +9 -10
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.d.mts +4 -14
- package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.mjs +9 -9
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-int.d.mts +3 -14
- package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-int.mjs +9 -10
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.d.mts +3 -15
- package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.mjs +9 -10
- package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +4 -10
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +9 -10
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +3 -10
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +9 -11
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +3 -19
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +12 -11
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +3 -15
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +12 -11
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +6 -14
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +9 -13
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +3 -20
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +9 -11
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +3 -18
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +9 -11
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +4 -16
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +9 -9
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +3 -16
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +9 -10
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +3 -21
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +9 -10
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +3 -19
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +9 -10
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +5 -19
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +9 -11
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +3 -20
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +9 -10
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +3 -18
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +9 -10
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +5 -12
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +9 -12
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +3 -15
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +9 -11
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +3 -14
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +9 -10
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +3 -18
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +9 -10
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +3 -16
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +9 -10
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +13 -15
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +20 -25
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +12 -14
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +18 -23
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/index.d.mts +1 -1
- package/dist/number/index.d.mts.map +1 -1
- package/dist/number/index.mjs +1 -1
- package/dist/number/index.mjs.map +1 -1
- package/dist/number/num/impl/index.d.mts +2 -0
- package/dist/number/num/impl/index.d.mts.map +1 -0
- package/dist/number/num/impl/index.mjs +2 -0
- package/dist/number/num/impl/index.mjs.map +1 -0
- package/dist/number/num/impl/num.d.mts +531 -0
- package/dist/number/num/impl/num.d.mts.map +1 -0
- package/dist/number/num/impl/num.mjs +542 -0
- package/dist/number/num/impl/num.mjs.map +1 -0
- package/dist/number/num/index.d.mts +17 -0
- package/dist/number/num/index.d.mts.map +1 -0
- package/dist/number/num/index.mjs +17 -0
- package/dist/number/num/index.mjs.map +1 -0
- package/dist/number/operators/finite-number.d.mts +16 -0
- package/dist/number/operators/finite-number.d.mts.map +1 -0
- package/dist/number/operators/finite-number.mjs +7 -0
- package/dist/number/operators/finite-number.mjs.map +1 -0
- package/dist/number/operators/int.d.mts +16 -0
- package/dist/number/operators/int.d.mts.map +1 -0
- package/dist/number/operators/int.mjs +8 -0
- package/dist/number/operators/int.mjs.map +1 -0
- package/dist/number/operators/int16.d.mts +25 -0
- package/dist/number/operators/int16.d.mts.map +1 -0
- package/dist/number/operators/int16.mjs +8 -0
- package/dist/number/operators/int16.mjs.map +1 -0
- package/dist/number/operators/int32.d.mts +21 -0
- package/dist/number/operators/int32.d.mts.map +1 -0
- package/dist/number/operators/int32.mjs +8 -0
- package/dist/number/operators/int32.mjs.map +1 -0
- package/dist/number/operators/int8.d.mts +24 -0
- package/dist/number/operators/int8.d.mts.map +1 -0
- package/dist/number/operators/int8.mjs +8 -0
- package/dist/number/operators/int8.mjs.map +1 -0
- package/dist/number/operators/negative-finite-number.d.mts +11 -0
- package/dist/number/operators/negative-finite-number.d.mts.map +1 -0
- package/dist/number/operators/negative-finite-number.mjs +8 -0
- package/dist/number/operators/negative-finite-number.mjs.map +1 -0
- package/dist/number/operators/negative-int.d.mts +10 -0
- package/dist/number/operators/negative-int.d.mts.map +1 -0
- package/dist/number/operators/negative-int.mjs +9 -0
- package/dist/number/operators/negative-int.mjs.map +1 -0
- package/dist/number/operators/negative-safe-int.d.mts +10 -0
- package/dist/number/operators/negative-safe-int.d.mts.map +1 -0
- package/dist/number/operators/negative-safe-int.mjs +9 -0
- package/dist/number/operators/negative-safe-int.mjs.map +1 -0
- package/dist/number/operators/non-negative-finite-number.d.mts +22 -0
- package/dist/number/operators/non-negative-finite-number.d.mts.map +1 -0
- package/dist/number/operators/non-negative-finite-number.mjs +7 -0
- package/dist/number/operators/non-negative-finite-number.mjs.map +1 -0
- package/dist/number/operators/non-negative-int16.d.mts +27 -0
- package/dist/number/operators/non-negative-int16.d.mts.map +1 -0
- package/dist/number/operators/non-negative-int16.mjs +8 -0
- package/dist/number/operators/non-negative-int16.mjs.map +1 -0
- package/dist/number/operators/non-negative-int32.d.mts +25 -0
- package/dist/number/operators/non-negative-int32.d.mts.map +1 -0
- package/dist/number/operators/non-negative-int32.mjs +8 -0
- package/dist/number/operators/non-negative-int32.mjs.map +1 -0
- package/dist/number/operators/non-positive-finite-number.d.mts +11 -0
- package/dist/number/operators/non-positive-finite-number.d.mts.map +1 -0
- package/dist/number/operators/non-positive-finite-number.mjs +7 -0
- package/dist/number/operators/non-positive-finite-number.mjs.map +1 -0
- package/dist/number/operators/non-positive-int.d.mts +10 -0
- package/dist/number/operators/non-positive-int.d.mts.map +1 -0
- package/dist/number/operators/non-positive-int.mjs +8 -0
- package/dist/number/operators/non-positive-int.mjs.map +1 -0
- package/dist/number/operators/non-positive-safe-int.d.mts +10 -0
- package/dist/number/operators/non-positive-safe-int.d.mts.map +1 -0
- package/dist/number/operators/non-positive-safe-int.mjs +8 -0
- package/dist/number/operators/non-positive-safe-int.mjs.map +1 -0
- package/dist/number/operators/non-zero-finite-number.d.mts +16 -0
- package/dist/number/operators/non-zero-finite-number.d.mts.map +1 -0
- package/dist/number/operators/non-zero-finite-number.mjs +8 -0
- package/dist/number/operators/non-zero-finite-number.mjs.map +1 -0
- package/dist/number/operators/non-zero-int.d.mts +10 -0
- package/dist/number/operators/non-zero-int.d.mts.map +1 -0
- package/dist/number/operators/non-zero-int.mjs +9 -0
- package/dist/number/operators/non-zero-int.mjs.map +1 -0
- package/dist/number/operators/non-zero-int16.d.mts +10 -0
- package/dist/number/operators/non-zero-int16.d.mts.map +1 -0
- package/dist/number/operators/non-zero-int16.mjs +9 -0
- package/dist/number/operators/non-zero-int16.mjs.map +1 -0
- package/dist/number/operators/non-zero-int32.d.mts +10 -0
- package/dist/number/operators/non-zero-int32.d.mts.map +1 -0
- package/dist/number/operators/non-zero-int32.mjs +9 -0
- package/dist/number/operators/non-zero-int32.mjs.map +1 -0
- package/dist/number/operators/non-zero-safe-int.d.mts +10 -0
- package/dist/number/operators/non-zero-safe-int.d.mts.map +1 -0
- package/dist/number/operators/non-zero-safe-int.mjs +11 -0
- package/dist/number/operators/non-zero-safe-int.mjs.map +1 -0
- package/dist/number/operators/non-zero-uint16.d.mts +2 -0
- package/dist/number/operators/non-zero-uint16.d.mts.map +1 -0
- package/dist/number/operators/non-zero-uint16.mjs +9 -0
- package/dist/number/operators/non-zero-uint16.mjs.map +1 -0
- package/dist/number/operators/non-zero-uint32.d.mts +2 -0
- package/dist/number/operators/non-zero-uint32.d.mts.map +1 -0
- package/dist/number/operators/non-zero-uint32.mjs +9 -0
- package/dist/number/operators/non-zero-uint32.mjs.map +1 -0
- package/dist/number/operators/positive-finite-number.d.mts +23 -0
- package/dist/number/operators/positive-finite-number.d.mts.map +1 -0
- package/dist/number/operators/positive-finite-number.mjs +7 -0
- package/dist/number/operators/positive-finite-number.mjs.map +1 -0
- package/dist/number/operators/positive-int.d.mts +23 -0
- package/dist/number/operators/positive-int.d.mts.map +1 -0
- package/dist/number/operators/positive-int.mjs +8 -0
- package/dist/number/operators/positive-int.mjs.map +1 -0
- package/dist/number/operators/positive-int16.d.mts +28 -0
- package/dist/number/operators/positive-int16.d.mts.map +1 -0
- package/dist/number/operators/positive-int16.mjs +8 -0
- package/dist/number/operators/positive-int16.mjs.map +1 -0
- package/dist/number/operators/positive-int32.d.mts +26 -0
- package/dist/number/operators/positive-int32.d.mts.map +1 -0
- package/dist/number/operators/positive-int32.mjs +8 -0
- package/dist/number/operators/positive-int32.mjs.map +1 -0
- package/dist/number/operators/positive-safe-int.d.mts +24 -0
- package/dist/number/operators/positive-safe-int.d.mts.map +1 -0
- package/dist/number/operators/positive-safe-int.mjs +9 -0
- package/dist/number/operators/positive-safe-int.mjs.map +1 -0
- package/dist/number/operators/positive-uint16.d.mts +27 -0
- package/dist/number/operators/positive-uint16.d.mts.map +1 -0
- package/dist/number/operators/positive-uint16.mjs +8 -0
- package/dist/number/operators/positive-uint16.mjs.map +1 -0
- package/dist/number/operators/positive-uint32.d.mts +25 -0
- package/dist/number/operators/positive-uint32.d.mts.map +1 -0
- package/dist/number/operators/positive-uint32.mjs +8 -0
- package/dist/number/operators/positive-uint32.mjs.map +1 -0
- package/dist/number/operators/safe-int.d.mts +17 -0
- package/dist/number/operators/safe-int.d.mts.map +1 -0
- package/dist/number/operators/safe-int.mjs +10 -0
- package/dist/number/operators/safe-int.mjs.map +1 -0
- package/dist/number/operators/safe-uint.d.mts +22 -0
- package/dist/number/operators/safe-uint.d.mts.map +1 -0
- package/dist/number/operators/safe-uint.mjs +9 -0
- package/dist/number/operators/safe-uint.mjs.map +1 -0
- package/dist/number/operators/uint.d.mts +14 -0
- package/dist/number/operators/uint.d.mts.map +1 -0
- package/dist/number/operators/uint.mjs +8 -0
- package/dist/number/operators/uint.mjs.map +1 -0
- package/dist/number/operators/uint16.d.mts +25 -0
- package/dist/number/operators/uint16.d.mts.map +1 -0
- package/dist/number/operators/uint16.mjs +8 -0
- package/dist/number/operators/uint16.mjs.map +1 -0
- package/dist/number/operators/uint32.d.mts +23 -0
- package/dist/number/operators/uint32.d.mts.map +1 -0
- package/dist/number/operators/uint32.mjs +8 -0
- package/dist/number/operators/uint32.mjs.map +1 -0
- package/dist/number/operators/uint8.d.mts +24 -0
- package/dist/number/operators/uint8.d.mts.map +1 -0
- package/dist/number/operators/uint8.mjs +8 -0
- package/dist/number/operators/uint8.mjs.map +1 -0
- package/dist/number/refined-number-utils.d.mts +2 -2
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +1 -1
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.mjs +1 -1
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/fast-deep-equal.mjs +1 -1
- package/dist/others/fast-deep-equal.mjs.map +1 -1
- package/package.json +22 -9
- package/src/array/impl/array-utils-reducing-value.mts +4 -3
- package/src/array/impl/array-utils-shape-invariants.test.mts +1 -1
- package/src/array/impl/array-utils-slice-clamped.mts +1 -1
- package/src/array/impl/array-utils-slicing.mts +12 -3
- package/src/array/impl/array-utils-transformation.mts +6 -2
- package/src/array/impl/array-utils-validation.mts +2 -1
- package/src/built-in-tag.mts +59 -0
- package/src/built-in-tag.test.mts +215 -0
- package/src/collections/stack.mts +3 -3
- package/src/iterator/range.mts +10 -2
- package/src/iterator/range.test.mts +7 -0
- package/src/number/branded-types/finite-number.mts +23 -25
- package/src/number/branded-types/int.mts +20 -26
- package/src/number/branded-types/int16.mts +21 -26
- package/src/number/branded-types/int32.mts +21 -26
- package/src/number/branded-types/negative-finite-number.mts +25 -26
- package/src/number/branded-types/negative-int.mts +20 -27
- package/src/number/branded-types/negative-safe-int.mts +23 -28
- package/src/number/branded-types/non-negative-finite-number.mts +24 -25
- package/src/number/branded-types/non-negative-int16.mts +23 -26
- package/src/number/branded-types/non-negative-int32.mts +23 -26
- package/src/number/branded-types/non-positive-finite-number.mts +24 -25
- package/src/number/branded-types/non-positive-int.mts +20 -26
- package/src/number/branded-types/non-positive-safe-int.mts +21 -26
- package/src/number/branded-types/non-zero-finite-number.mts +23 -25
- package/src/number/branded-types/non-zero-int.mts +19 -25
- package/src/number/branded-types/non-zero-int16.mts +27 -28
- package/src/number/branded-types/non-zero-int32.mts +27 -28
- package/src/number/branded-types/non-zero-safe-int.mts +25 -35
- package/src/number/branded-types/non-zero-uint16.mts +24 -28
- package/src/number/branded-types/non-zero-uint32.mts +24 -28
- package/src/number/branded-types/positive-finite-number.mts +25 -25
- package/src/number/branded-types/positive-int.mts +21 -26
- package/src/number/branded-types/positive-int16.mts +23 -26
- package/src/number/branded-types/positive-int32.mts +23 -26
- package/src/number/branded-types/positive-safe-int.mts +24 -31
- package/src/number/branded-types/positive-uint16.mts +23 -26
- package/src/number/branded-types/positive-uint32.mts +23 -26
- package/src/number/branded-types/safe-int.mts +22 -29
- package/src/number/branded-types/safe-uint.mts +21 -27
- package/src/number/branded-types/uint.mts +21 -26
- package/src/number/branded-types/uint16.mts +21 -26
- package/src/number/branded-types/uint32.mts +21 -26
- package/src/number/enum/int8.mts +40 -52
- package/src/number/enum/uint8.mts +40 -48
- package/src/number/index.mts +1 -1
- package/src/number/num/impl/index.mts +1 -0
- package/src/number/num/impl/num.mts +715 -0
- package/src/number/{num.test.mts → num/impl/num.test.mts} +4 -4
- package/src/number/num/index.mts +16 -0
- package/src/number/num-arithmetic.test.mts +1 -1
- package/src/number/operators/finite-number.mts +20 -0
- package/src/number/operators/int.mts +20 -0
- package/src/number/operators/int16.mts +33 -0
- package/src/number/operators/int32.mts +33 -0
- package/src/number/operators/int8.mts +18 -0
- package/src/number/operators/negative-finite-number.mts +22 -0
- package/src/number/operators/negative-int.mts +22 -0
- package/src/number/operators/negative-safe-int.mts +32 -0
- package/src/number/operators/non-negative-finite-number.mts +32 -0
- package/src/number/operators/non-negative-int16.mts +33 -0
- package/src/number/operators/non-negative-int32.mts +33 -0
- package/src/number/operators/non-positive-finite-number.mts +21 -0
- package/src/number/operators/non-positive-int.mts +21 -0
- package/src/number/operators/non-positive-safe-int.mts +31 -0
- package/src/number/operators/non-zero-finite-number.mts +21 -0
- package/src/number/operators/non-zero-int.mts +22 -0
- package/src/number/operators/non-zero-int16.mts +32 -0
- package/src/number/operators/non-zero-int32.mts +32 -0
- package/src/number/operators/non-zero-safe-int.mts +34 -0
- package/src/number/operators/non-zero-uint16.mts +32 -0
- package/src/number/operators/non-zero-uint32.mts +32 -0
- package/src/number/operators/positive-finite-number.mts +32 -0
- package/src/number/operators/positive-int.mts +32 -0
- package/src/number/operators/positive-int16.mts +33 -0
- package/src/number/operators/positive-int32.mts +33 -0
- package/src/number/operators/positive-safe-int.mts +34 -0
- package/src/number/operators/positive-uint16.mts +33 -0
- package/src/number/operators/positive-uint32.mts +33 -0
- package/src/number/operators/safe-int.mts +35 -0
- package/src/number/operators/safe-uint.mts +33 -0
- package/src/number/operators/uint.mts +31 -0
- package/src/number/operators/uint16.mts +32 -0
- package/src/number/operators/uint32.mts +32 -0
- package/src/number/operators/uint8.mts +16 -0
- package/src/number/refined-number-utils.mts +4 -4
- package/src/object/object.mts +1 -1
- package/src/others/fast-deep-equal.mts +1 -1
- package/dist/number/num.d.mts +0 -550
- package/dist/number/num.d.mts.map +0 -1
- package/dist/number/num.mjs +0 -563
- package/dist/number/num.mjs.map +0 -1
- package/src/guard/is-error.test.mts +0 -145
- package/src/number/num.mts +0 -735
|
@@ -1,36 +1,24 @@
|
|
|
1
1
|
import type { Uint as TtfImported_Uint } from 'ts-type-forge';
|
|
2
2
|
import { expectType } from '../../expect-type.mjs';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export type Uint = TtfImported_Uint;
|
|
6
|
-
|
|
7
|
-
type ElementType = Uint;
|
|
8
|
-
|
|
9
|
-
const typeNameInMessage = 'a non-negative integer';
|
|
10
|
-
|
|
11
|
-
const {
|
|
3
|
+
import {
|
|
12
4
|
MIN_VALUE,
|
|
13
5
|
add,
|
|
14
|
-
castType,
|
|
15
6
|
div,
|
|
16
7
|
fromNumber,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
min: min_,
|
|
8
|
+
max as max_,
|
|
9
|
+
min as min_,
|
|
20
10
|
mul,
|
|
21
11
|
pow,
|
|
22
12
|
random,
|
|
23
13
|
sub,
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
typeNameInMessage,
|
|
33
|
-
} as const);
|
|
14
|
+
} from '../operators/uint.mjs';
|
|
15
|
+
import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
16
|
+
|
|
17
|
+
export type Uint = TtfImported_Uint;
|
|
18
|
+
|
|
19
|
+
type ElementType = Uint;
|
|
20
|
+
|
|
21
|
+
const typeNameInMessage = 'a non-negative integer';
|
|
34
22
|
|
|
35
23
|
/**
|
|
36
24
|
* Type guard that checks if a value is a non-negative integer.
|
|
@@ -52,7 +40,8 @@ const {
|
|
|
52
40
|
* @param value - The value to check
|
|
53
41
|
* @returns `true` if the value is a non-negative integer, `false` otherwise
|
|
54
42
|
*/
|
|
55
|
-
export const isUint = is
|
|
43
|
+
export const isUint = (value: number): value is Uint =>
|
|
44
|
+
Number.isInteger(value) && value >= 0;
|
|
56
45
|
|
|
57
46
|
/**
|
|
58
47
|
* Casts a `number` to the `Uint` branded type.
|
|
@@ -74,7 +63,13 @@ export const isUint = is;
|
|
|
74
63
|
* @returns The value as an `Uint`
|
|
75
64
|
* @throws {TypeError} If the value is not a non-negative integer
|
|
76
65
|
*/
|
|
77
|
-
export const asUint =
|
|
66
|
+
export const asUint = <N extends number>(value: N): Uint & N => {
|
|
67
|
+
if (!isUint(value)) {
|
|
68
|
+
throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return value;
|
|
72
|
+
};
|
|
78
73
|
|
|
79
74
|
/**
|
|
80
75
|
* Namespace providing type-safe operations for the `Uint` branded type.
|
|
@@ -104,7 +99,7 @@ export const Uint = {
|
|
|
104
99
|
* @returns `true` if the value is a non-negative integer, `false` otherwise
|
|
105
100
|
* @see {@link isUint} for usage examples
|
|
106
101
|
*/
|
|
107
|
-
is,
|
|
102
|
+
is: isUint,
|
|
108
103
|
|
|
109
104
|
/**
|
|
110
105
|
* The smallest value representable as `Uint` (the lower saturation target of
|
|
@@ -1,37 +1,25 @@
|
|
|
1
1
|
import type { Uint16 as TtfImported_Uint16 } from 'ts-type-forge';
|
|
2
2
|
import { expectType } from '../../expect-type.mjs';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export type Uint16 = TtfImported_Uint16;
|
|
6
|
-
|
|
7
|
-
type ElementType = Uint16;
|
|
8
|
-
|
|
9
|
-
const typeNameInMessage = 'a non-negative integer less than 2^16';
|
|
10
|
-
|
|
11
|
-
const {
|
|
3
|
+
import {
|
|
12
4
|
MAX_VALUE,
|
|
13
5
|
MIN_VALUE,
|
|
14
6
|
add,
|
|
15
|
-
castType,
|
|
16
7
|
div,
|
|
17
8
|
fromNumber,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
min: min_,
|
|
9
|
+
max as max_,
|
|
10
|
+
min as min_,
|
|
21
11
|
mul,
|
|
22
12
|
pow,
|
|
23
13
|
random,
|
|
24
14
|
sub,
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
typeNameInMessage,
|
|
34
|
-
} as const);
|
|
15
|
+
} from '../operators/uint16.mjs';
|
|
16
|
+
import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
17
|
+
|
|
18
|
+
export type Uint16 = TtfImported_Uint16;
|
|
19
|
+
|
|
20
|
+
type ElementType = Uint16;
|
|
21
|
+
|
|
22
|
+
const typeNameInMessage = 'a non-negative integer less than 2^16';
|
|
35
23
|
|
|
36
24
|
/**
|
|
37
25
|
* Type guard that checks if a value is a non-negative integer less than 2^16.
|
|
@@ -42,7 +30,8 @@ const {
|
|
|
42
30
|
* @param value - The value to check
|
|
43
31
|
* @returns `true` if the value is a non-negative integer less than 2^16, `false` otherwise
|
|
44
32
|
*/
|
|
45
|
-
export const isUint16 = is
|
|
33
|
+
export const isUint16 = (value: number): value is Uint16 =>
|
|
34
|
+
Number.isSafeInteger(value) && 0 <= value && value <= 2 ** 16 - 1;
|
|
46
35
|
|
|
47
36
|
/**
|
|
48
37
|
* Casts a `number` to the `Uint16` branded type.
|
|
@@ -54,7 +43,13 @@ export const isUint16 = is;
|
|
|
54
43
|
* @returns The value as an `Uint16`
|
|
55
44
|
* @throws {TypeError} If the value is not a non-negative integer less than 2^16
|
|
56
45
|
*/
|
|
57
|
-
export const asUint16 =
|
|
46
|
+
export const asUint16 = <N extends number>(value: N): Uint16 & N => {
|
|
47
|
+
if (!isUint16(value)) {
|
|
48
|
+
throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return value;
|
|
52
|
+
};
|
|
58
53
|
|
|
59
54
|
/**
|
|
60
55
|
* Namespace providing type-safe operations for the `Uint16` branded type.
|
|
@@ -70,7 +65,7 @@ export const Uint16 = {
|
|
|
70
65
|
* @returns `true` if the value is a non-negative integer less than 2^16, `false` otherwise
|
|
71
66
|
* @see {@link isUint16} for usage examples
|
|
72
67
|
*/
|
|
73
|
-
is,
|
|
68
|
+
is: isUint16,
|
|
74
69
|
|
|
75
70
|
/**
|
|
76
71
|
* The smallest value representable as `Uint16` (the lower saturation target
|
|
@@ -1,37 +1,25 @@
|
|
|
1
1
|
import type { Uint32 as TtfImported_Uint32 } from 'ts-type-forge';
|
|
2
2
|
import { expectType } from '../../expect-type.mjs';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export type Uint32 = TtfImported_Uint32;
|
|
6
|
-
|
|
7
|
-
type ElementType = Uint32;
|
|
8
|
-
|
|
9
|
-
const typeNameInMessage = 'a non-negative integer less than 2^32';
|
|
10
|
-
|
|
11
|
-
const {
|
|
3
|
+
import {
|
|
12
4
|
MAX_VALUE,
|
|
13
5
|
MIN_VALUE,
|
|
14
6
|
add,
|
|
15
|
-
castType,
|
|
16
7
|
div,
|
|
17
8
|
fromNumber,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
min: min_,
|
|
9
|
+
max as max_,
|
|
10
|
+
min as min_,
|
|
21
11
|
mul,
|
|
22
12
|
pow,
|
|
23
13
|
random,
|
|
24
14
|
sub,
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
typeNameInMessage,
|
|
34
|
-
} as const);
|
|
15
|
+
} from '../operators/uint32.mjs';
|
|
16
|
+
import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
17
|
+
|
|
18
|
+
export type Uint32 = TtfImported_Uint32;
|
|
19
|
+
|
|
20
|
+
type ElementType = Uint32;
|
|
21
|
+
|
|
22
|
+
const typeNameInMessage = 'a non-negative integer less than 2^32';
|
|
35
23
|
|
|
36
24
|
/**
|
|
37
25
|
* Type guard that checks if a value is a non-negative integer less than 2^32.
|
|
@@ -42,7 +30,8 @@ const {
|
|
|
42
30
|
* @param value - The value to check
|
|
43
31
|
* @returns `true` if the value is a non-negative integer less than 2^32, `false` otherwise
|
|
44
32
|
*/
|
|
45
|
-
export const isUint32 = is
|
|
33
|
+
export const isUint32 = (value: number): value is Uint32 =>
|
|
34
|
+
Number.isSafeInteger(value) && 0 <= value && value <= 2 ** 32 - 1;
|
|
46
35
|
|
|
47
36
|
/**
|
|
48
37
|
* Casts a `number` to the `Uint32` branded type.
|
|
@@ -54,7 +43,13 @@ export const isUint32 = is;
|
|
|
54
43
|
* @returns The value as an `Uint32`
|
|
55
44
|
* @throws {TypeError} If the value is not a non-negative integer less than 2^32
|
|
56
45
|
*/
|
|
57
|
-
export const asUint32 =
|
|
46
|
+
export const asUint32 = <N extends number>(value: N): Uint32 & N => {
|
|
47
|
+
if (!isUint32(value)) {
|
|
48
|
+
throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return value;
|
|
52
|
+
};
|
|
58
53
|
|
|
59
54
|
/**
|
|
60
55
|
* Namespace providing type-safe operations for the `Uint32` branded type.
|
|
@@ -70,7 +65,7 @@ export const Uint32 = {
|
|
|
70
65
|
* @returns `true` if the value is a non-negative integer less than 2^32, `false` otherwise
|
|
71
66
|
* @see {@link isUint32} for usage examples
|
|
72
67
|
*/
|
|
73
|
-
is,
|
|
68
|
+
is: isUint32,
|
|
74
69
|
|
|
75
70
|
/**
|
|
76
71
|
* The smallest value representable as `Uint32` (the lower saturation target
|
package/src/number/enum/int8.mts
CHANGED
|
@@ -5,47 +5,58 @@ import type {
|
|
|
5
5
|
Int8 as TtfImported_Int8,
|
|
6
6
|
} from 'ts-type-forge';
|
|
7
7
|
import { expectType } from '../../expect-type.mjs';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
MAX_VALUE,
|
|
10
|
+
MIN_VALUE,
|
|
11
|
+
castType as castTypeImpl,
|
|
12
|
+
fromNumber as fromNumberImpl,
|
|
13
|
+
random as randomImpl,
|
|
14
|
+
} from '../operators/int8.mjs';
|
|
15
|
+
import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
9
16
|
|
|
10
17
|
export type Int8 = TtfImported_Int8;
|
|
11
18
|
|
|
12
19
|
const typeNameInMessage = 'an integer in [-128, 127]';
|
|
13
20
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
127
|
|
25
|
-
>({
|
|
26
|
-
integerOrSafeInteger: 'SafeInteger',
|
|
27
|
-
MIN_VALUE: -128,
|
|
28
|
-
MAX_VALUE: 127,
|
|
29
|
-
typeNameInMessage,
|
|
30
|
-
} as const);
|
|
21
|
+
/**
|
|
22
|
+
* Type guard that checks if a value is an integer in [-128, 127].
|
|
23
|
+
*
|
|
24
|
+
* Returns `true` for an integer in [-128, 127] — a value with no fractional
|
|
25
|
+
* component.
|
|
26
|
+
*
|
|
27
|
+
* @param value - The value to check
|
|
28
|
+
* @returns `true` if the value is an integer in [-128, 127], `false` otherwise
|
|
29
|
+
*/
|
|
30
|
+
export const isInt8 = (value: number): value is Int8 =>
|
|
31
|
+
Number.isSafeInteger(value) && -128 <= value && value <= 127;
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Casts a `number` to the `Int8` branded type.
|
|
35
|
+
*
|
|
36
|
+
* Validates that the value is an integer in [-128, 127] and returns it with the
|
|
37
|
+
* `Int8` brand. Throws a `TypeError` otherwise.
|
|
38
|
+
*
|
|
39
|
+
* @param value - The value to cast
|
|
40
|
+
* @returns The value as an `Int8`
|
|
41
|
+
* @throws {TypeError} If the value is not an integer in [-128, 127]
|
|
42
|
+
*/
|
|
43
|
+
export const asInt8 = (value: number): Int8 => {
|
|
44
|
+
if (!isInt8(value)) {
|
|
45
|
+
throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
|
|
46
|
+
}
|
|
33
47
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
castTypeImpl(x) as Int8;
|
|
48
|
+
return value;
|
|
49
|
+
};
|
|
37
50
|
|
|
38
|
-
const fromNumber = (a: number): Int8 =>
|
|
51
|
+
const fromNumber = (a: number): Int8 => asInt8(fromNumberImpl(a));
|
|
39
52
|
|
|
40
53
|
const abs = <N extends Int8>(x: N): AbsoluteValue<N> =>
|
|
41
54
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, @typescript-eslint/no-unnecessary-type-assertion -- unnecessary only under the strict standard library; the stock one types `Math.abs` as returning `number`
|
|
42
55
|
Math.abs(x) as unknown as AbsoluteValue<N>;
|
|
43
56
|
|
|
44
|
-
const min_ = (...values: readonly Int8[]): Int8 =>
|
|
45
|
-
castType(Math.min(...values));
|
|
57
|
+
const min_ = (...values: readonly Int8[]): Int8 => asInt8(Math.min(...values));
|
|
46
58
|
|
|
47
|
-
const max_ = (...values: readonly Int8[]): Int8 =>
|
|
48
|
-
castType(Math.max(...values));
|
|
59
|
+
const max_ = (...values: readonly Int8[]): Int8 => asInt8(Math.max(...values));
|
|
49
60
|
|
|
50
61
|
const pow = (x: Int8, y: Int8): Int8 => fromNumber(x ** y);
|
|
51
62
|
|
|
@@ -59,30 +70,7 @@ const div = (x: Int8, y: StrictExclude<Int8, 0>): Int8 =>
|
|
|
59
70
|
fromNumber(Math.floor(x / y));
|
|
60
71
|
|
|
61
72
|
const random = (min: Int8, max: Int8): Int8 =>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Type guard that checks if a value is an integer in [-128, 127].
|
|
66
|
-
*
|
|
67
|
-
* Returns `true` for an integer in [-128, 127] — a value with no fractional
|
|
68
|
-
* component.
|
|
69
|
-
*
|
|
70
|
-
* @param value - The value to check
|
|
71
|
-
* @returns `true` if the value is an integer in [-128, 127], `false` otherwise
|
|
72
|
-
*/
|
|
73
|
-
export const isInt8 = is;
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Casts a `number` to the `Int8` branded type.
|
|
77
|
-
*
|
|
78
|
-
* Validates that the value is an integer in [-128, 127] and returns it with the
|
|
79
|
-
* `Int8` brand. Throws a `TypeError` otherwise.
|
|
80
|
-
*
|
|
81
|
-
* @param value - The value to cast
|
|
82
|
-
* @returns The value as an `Int8`
|
|
83
|
-
* @throws {TypeError} If the value is not an integer in [-128, 127]
|
|
84
|
-
*/
|
|
85
|
-
export const asInt8 = castType;
|
|
73
|
+
asInt8(randomImpl(castTypeImpl(min), castTypeImpl(max)));
|
|
86
74
|
|
|
87
75
|
/**
|
|
88
76
|
* Namespace providing type-safe operations for the `Int8` branded type.
|
|
@@ -98,7 +86,7 @@ export const Int8 = {
|
|
|
98
86
|
* @returns `true` if the value is an integer in [-128, 127], `false` otherwise
|
|
99
87
|
* @see {@link isInt8} for usage examples
|
|
100
88
|
*/
|
|
101
|
-
is,
|
|
89
|
+
is: isInt8,
|
|
102
90
|
|
|
103
91
|
/**
|
|
104
92
|
* The smallest value representable as `Int8` (the lower saturation target of
|
|
@@ -4,55 +4,18 @@ import type {
|
|
|
4
4
|
Uint16,
|
|
5
5
|
} from 'ts-type-forge';
|
|
6
6
|
import { expectType } from '../../expect-type.mjs';
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
export type Uint8 = TtfImported_Uint8;
|
|
10
|
-
|
|
11
|
-
const typeNameInMessage = 'an non-negative integer less than 256';
|
|
12
|
-
|
|
13
|
-
const {
|
|
7
|
+
import {
|
|
14
8
|
MAX_VALUE,
|
|
15
9
|
MIN_VALUE,
|
|
16
|
-
castType
|
|
17
|
-
fromNumber
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
{
|
|
22
|
-
integerOrSafeInteger: 'SafeInteger',
|
|
23
|
-
MIN_VALUE: 0,
|
|
24
|
-
MAX_VALUE: 255,
|
|
25
|
-
typeNameInMessage,
|
|
26
|
-
} as const,
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
const is = (x: number): x is Uint8 => isImpl(x);
|
|
30
|
-
|
|
31
|
-
const castType = (x: number): Uint8 =>
|
|
32
|
-
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
33
|
-
castTypeImpl(x) as Uint8;
|
|
34
|
-
|
|
35
|
-
const fromNumber = (a: number): Uint8 => castType(fromNumberImpl(a));
|
|
36
|
-
|
|
37
|
-
const min_ = (...values: readonly Uint8[]): Uint8 =>
|
|
38
|
-
castType(Math.min(...values));
|
|
39
|
-
|
|
40
|
-
const max_ = (...values: readonly Uint8[]): Uint8 =>
|
|
41
|
-
castType(Math.max(...values));
|
|
42
|
-
|
|
43
|
-
const pow = (x: Uint8, y: Uint8): Uint8 => fromNumber(x ** y);
|
|
10
|
+
castType as castTypeImpl,
|
|
11
|
+
fromNumber as fromNumberImpl,
|
|
12
|
+
random as randomImpl,
|
|
13
|
+
} from '../operators/uint8.mjs';
|
|
14
|
+
import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
44
15
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const sub = (x: Uint8, y: Uint8): Uint8 => fromNumber(x - y);
|
|
48
|
-
|
|
49
|
-
const mul = (x: Uint8, y: Uint8): Uint8 => fromNumber(x * y);
|
|
50
|
-
|
|
51
|
-
const div = (x: Uint8, y: StrictExclude<Uint8, 0>): Uint8 =>
|
|
52
|
-
fromNumber(Math.floor(x / y));
|
|
16
|
+
export type Uint8 = TtfImported_Uint8;
|
|
53
17
|
|
|
54
|
-
const
|
|
55
|
-
castType(randomImpl(castTypeImpl(min), castTypeImpl(max)));
|
|
18
|
+
const typeNameInMessage = 'an non-negative integer less than 256';
|
|
56
19
|
|
|
57
20
|
/**
|
|
58
21
|
* Type guard that checks if a value is an non-negative integer less than 256.
|
|
@@ -63,7 +26,8 @@ const random = (min: Uint8, max: Uint8): Uint8 =>
|
|
|
63
26
|
* @param value - The value to check
|
|
64
27
|
* @returns `true` if the value is an non-negative integer less than 256, `false` otherwise
|
|
65
28
|
*/
|
|
66
|
-
export const isUint8 = is
|
|
29
|
+
export const isUint8 = (value: number): value is Uint8 =>
|
|
30
|
+
Number.isSafeInteger(value) && 0 <= value && value <= 255;
|
|
67
31
|
|
|
68
32
|
/**
|
|
69
33
|
* Casts a `number` to the `Uint8` branded type.
|
|
@@ -75,7 +39,35 @@ export const isUint8 = is;
|
|
|
75
39
|
* @returns The value as an `Uint8`
|
|
76
40
|
* @throws {TypeError} If the value is not an non-negative integer less than 256
|
|
77
41
|
*/
|
|
78
|
-
export const asUint8 =
|
|
42
|
+
export const asUint8 = (value: number): Uint8 => {
|
|
43
|
+
if (!isUint8(value)) {
|
|
44
|
+
throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return value;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const fromNumber = (a: number): Uint8 => asUint8(fromNumberImpl(a));
|
|
51
|
+
|
|
52
|
+
const min_ = (...values: readonly Uint8[]): Uint8 =>
|
|
53
|
+
asUint8(Math.min(...values));
|
|
54
|
+
|
|
55
|
+
const max_ = (...values: readonly Uint8[]): Uint8 =>
|
|
56
|
+
asUint8(Math.max(...values));
|
|
57
|
+
|
|
58
|
+
const pow = (x: Uint8, y: Uint8): Uint8 => fromNumber(x ** y);
|
|
59
|
+
|
|
60
|
+
const add = (x: Uint8, y: Uint8): Uint8 => fromNumber(x + y);
|
|
61
|
+
|
|
62
|
+
const sub = (x: Uint8, y: Uint8): Uint8 => fromNumber(x - y);
|
|
63
|
+
|
|
64
|
+
const mul = (x: Uint8, y: Uint8): Uint8 => fromNumber(x * y);
|
|
65
|
+
|
|
66
|
+
const div = (x: Uint8, y: StrictExclude<Uint8, 0>): Uint8 =>
|
|
67
|
+
fromNumber(Math.floor(x / y));
|
|
68
|
+
|
|
69
|
+
const random = (min: Uint8, max: Uint8): Uint8 =>
|
|
70
|
+
asUint8(randomImpl(castTypeImpl(min), castTypeImpl(max)));
|
|
79
71
|
|
|
80
72
|
/**
|
|
81
73
|
* Namespace providing type-safe operations for the `Uint8` branded type.
|
|
@@ -91,7 +83,7 @@ export const Uint8 = {
|
|
|
91
83
|
* @returns `true` if the value is an non-negative integer less than 256, `false` otherwise
|
|
92
84
|
* @see {@link isUint8} for usage examples
|
|
93
85
|
*/
|
|
94
|
-
is,
|
|
86
|
+
is: isUint8,
|
|
95
87
|
|
|
96
88
|
/**
|
|
97
89
|
* The smallest value representable as `Uint8` (the lower saturation target of
|
package/src/number/index.mts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './num.mjs';
|