ts-data-forge 3.3.0 → 4.0.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 +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 +60 -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 +213 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.mjs +162 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
- package/dist/array/impl/array-utils-search.d.mts +178 -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 +329 -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 -254
- package/dist/collections/imap-mapped.d.mts.map +1 -1
- package/dist/collections/imap-mapped.mjs +40 -170
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +436 -164
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +83 -101
- 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 -136
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +59 -160
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +154 -155
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +58 -207
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.d.mts +2 -0
- package/dist/entry-point.d.mts.map +1 -1
- package/dist/entry-point.mjs +8 -5
- 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/index.d.mts +2 -2
- package/dist/functional/index.d.mts.map +1 -1
- package/dist/functional/index.mjs +4 -2
- package/dist/functional/index.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/impl/index.d.mts +18 -0
- package/dist/functional/optional/impl/index.d.mts.map +1 -0
- package/dist/functional/optional/impl/index.mjs +17 -0
- package/dist/functional/optional/impl/index.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-expect-to-be.d.mts +29 -0
- package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-expect-to-be.mjs +25 -0
- package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-filter.d.mts +29 -0
- package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-filter.mjs +28 -0
- package/dist/functional/optional/impl/optional-filter.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-flat-map.d.mts +33 -0
- package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-flat-map.mjs +21 -0
- package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-from-nullable.d.mts +24 -0
- package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-from-nullable.mjs +29 -0
- package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-is-none.d.mts +22 -0
- package/dist/functional/optional/impl/optional-is-none.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-is-none.mjs +25 -0
- package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-is-optional.d.mts +18 -0
- package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-is-optional.mjs +27 -0
- package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-is-some.d.mts +22 -0
- package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-is-some.mjs +25 -0
- package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-map.d.mts +31 -0
- package/dist/functional/optional/impl/optional-map.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-map.mjs +25 -0
- package/dist/functional/optional/impl/optional-map.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-none.d.mts +16 -0
- package/dist/functional/optional/impl/optional-none.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-none.mjs +20 -0
- package/dist/functional/optional/impl/optional-none.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-or-else.d.mts +35 -0
- package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-or-else.mjs +19 -0
- package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-some.d.mts +19 -0
- package/dist/functional/optional/impl/optional-some.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-some.mjs +26 -0
- package/dist/functional/optional/impl/optional-some.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-to-nullable.d.mts +27 -0
- package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-to-nullable.mjs +31 -0
- package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-unwrap-or.d.mts +33 -0
- package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-unwrap-or.mjs +19 -0
- package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +29 -0
- package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs +38 -0
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-unwrap.d.mts +28 -0
- package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-unwrap.mjs +11 -0
- package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -0
- package/dist/functional/optional/impl/optional-zip.d.mts +31 -0
- package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -0
- package/dist/functional/optional/impl/optional-zip.mjs +39 -0
- package/dist/functional/optional/impl/optional-zip.mjs.map +1 -0
- package/dist/functional/optional/impl/tag.d.mts +5 -0
- package/dist/functional/optional/impl/tag.d.mts.map +1 -0
- package/dist/functional/optional/impl/tag.mjs +7 -0
- package/dist/functional/optional/impl/tag.mjs.map +1 -0
- package/dist/functional/optional/impl/types.d.mts +22 -0
- package/dist/functional/optional/impl/types.d.mts.map +1 -0
- package/dist/functional/optional/impl/types.mjs +2 -0
- package/dist/functional/optional/impl/types.mjs.map +1 -0
- package/dist/functional/optional/index.d.mts +2 -0
- package/dist/functional/optional/index.d.mts.map +1 -0
- package/dist/functional/optional/index.mjs +3 -0
- package/dist/functional/optional/index.mjs.map +1 -0
- package/dist/functional/pipe.d.mts +63 -117
- package/dist/functional/pipe.d.mts.map +1 -1
- package/dist/functional/pipe.mjs +4 -3
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result/impl/index.d.mts +24 -0
- package/dist/functional/result/impl/index.d.mts.map +1 -0
- package/dist/functional/result/impl/index.mjs +23 -0
- package/dist/functional/result/impl/index.mjs.map +1 -0
- package/dist/functional/result/impl/result-err.d.mts +25 -0
- package/dist/functional/result/impl/result-err.d.mts.map +1 -0
- package/dist/functional/result/impl/result-err.mjs +32 -0
- package/dist/functional/result/impl/result-err.mjs.map +1 -0
- package/dist/functional/result/impl/result-expect-to-be.d.mts +27 -0
- package/dist/functional/result/impl/result-expect-to-be.d.mts.map +1 -0
- package/dist/functional/result/impl/result-expect-to-be.mjs +26 -0
- package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -0
- package/dist/functional/result/impl/result-flat-map.d.mts +39 -0
- package/dist/functional/result/impl/result-flat-map.d.mts.map +1 -0
- package/dist/functional/result/impl/result-flat-map.mjs +24 -0
- package/dist/functional/result/impl/result-flat-map.mjs.map +1 -0
- package/dist/functional/result/impl/result-fold.d.mts +45 -0
- package/dist/functional/result/impl/result-fold.d.mts.map +1 -0
- package/dist/functional/result/impl/result-fold.mjs +26 -0
- package/dist/functional/result/impl/result-fold.mjs.map +1 -0
- package/dist/functional/result/impl/result-from-promise.d.mts +32 -0
- package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -0
- package/dist/functional/result/impl/result-from-promise.mjs +32 -0
- package/dist/functional/result/impl/result-from-promise.mjs.map +1 -0
- package/dist/functional/result/impl/result-from-throwable.d.mts +29 -0
- package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -0
- package/dist/functional/result/impl/result-from-throwable.mjs +46 -0
- package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -0
- package/dist/functional/result/impl/result-is-err.d.mts +20 -0
- package/dist/functional/result/impl/result-is-err.d.mts.map +1 -0
- package/dist/functional/result/impl/result-is-err.mjs +23 -0
- package/dist/functional/result/impl/result-is-err.mjs.map +1 -0
- package/dist/functional/result/impl/result-is-ok.d.mts +20 -0
- package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -0
- package/dist/functional/result/impl/result-is-ok.mjs +23 -0
- package/dist/functional/result/impl/result-is-ok.mjs.map +1 -0
- package/dist/functional/result/impl/result-is-result.d.mts +17 -0
- package/dist/functional/result/impl/result-is-result.d.mts.map +1 -0
- package/dist/functional/result/impl/result-is-result.mjs +26 -0
- package/dist/functional/result/impl/result-is-result.mjs.map +1 -0
- package/dist/functional/result/impl/result-map-err.d.mts +33 -0
- package/dist/functional/result/impl/result-map-err.d.mts.map +1 -0
- package/dist/functional/result/impl/result-map-err.mjs +25 -0
- package/dist/functional/result/impl/result-map-err.mjs.map +1 -0
- package/dist/functional/result/impl/result-map.d.mts +34 -0
- package/dist/functional/result/impl/result-map.d.mts.map +1 -0
- package/dist/functional/result/impl/result-map.mjs +25 -0
- package/dist/functional/result/impl/result-map.mjs.map +1 -0
- package/dist/functional/result/impl/result-ok.d.mts +25 -0
- package/dist/functional/result/impl/result-ok.d.mts.map +1 -0
- package/dist/functional/result/impl/result-ok.mjs +32 -0
- package/dist/functional/result/impl/result-ok.mjs.map +1 -0
- package/dist/functional/result/impl/result-or-else.d.mts +32 -0
- package/dist/functional/result/impl/result-or-else.d.mts.map +1 -0
- package/dist/functional/result/impl/result-or-else.mjs +20 -0
- package/dist/functional/result/impl/result-or-else.mjs.map +1 -0
- package/dist/functional/result/impl/result-swap.d.mts +20 -0
- package/dist/functional/result/impl/result-swap.d.mts.map +1 -0
- package/dist/functional/result/impl/result-swap.mjs +28 -0
- package/dist/functional/result/impl/result-swap.mjs.map +1 -0
- package/dist/functional/result/impl/result-to-optional.d.mts +28 -0
- package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -0
- package/dist/functional/result/impl/result-to-optional.mjs +34 -0
- package/dist/functional/result/impl/result-to-optional.mjs.map +1 -0
- package/dist/functional/result/impl/result-unwrap-err-or.d.mts +29 -0
- package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +1 -0
- package/dist/functional/result/impl/result-unwrap-err-or.mjs +20 -0
- package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -0
- package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +30 -0
- package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -0
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs +47 -0
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -0
- package/dist/functional/result/impl/result-unwrap-err.d.mts +31 -0
- package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -0
- package/dist/functional/result/impl/result-unwrap-err.mjs +36 -0
- package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -0
- package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +29 -0
- package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +1 -0
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs +20 -0
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -0
- package/dist/functional/result/impl/result-unwrap-ok.d.mts +23 -0
- package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +1 -0
- package/dist/functional/result/impl/result-unwrap-ok.mjs +11 -0
- package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -0
- package/dist/functional/result/impl/result-unwrap-throw.d.mts +30 -0
- package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -0
- package/dist/functional/result/impl/result-unwrap-throw.mjs +41 -0
- package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -0
- package/dist/functional/result/impl/result-zip.d.mts +29 -0
- package/dist/functional/result/impl/result-zip.d.mts.map +1 -0
- package/dist/functional/result/impl/result-zip.mjs +38 -0
- package/dist/functional/result/impl/result-zip.mjs.map +1 -0
- package/dist/functional/result/impl/tag.d.mts +5 -0
- package/dist/functional/result/impl/tag.d.mts.map +1 -0
- package/dist/functional/result/impl/tag.mjs +7 -0
- package/dist/functional/result/impl/tag.mjs.map +1 -0
- package/dist/functional/result/impl/types.d.mts +29 -0
- package/dist/functional/result/impl/types.d.mts.map +1 -0
- package/dist/functional/result/impl/types.mjs +2 -0
- package/dist/functional/result/impl/types.mjs.map +1 -0
- package/dist/functional/result/index.d.mts +2 -0
- package/dist/functional/result/index.d.mts.map +1 -0
- package/dist/functional/result/index.mjs +3 -0
- package/dist/functional/result/index.mjs.map +1 -0
- package/dist/globals.d.mts +95 -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 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -5
- 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 -122
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +246 -144
- 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 +28 -160
- 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 +123 -121
- 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 +23 -31
- 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 +23 -32
- 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 +32 -40
- 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 +25 -35
- 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 +27 -36
- 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 +26 -41
- 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 +16 -31
- 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 +28 -36
- 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 +30 -37
- 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 +40 -41
- 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 +25 -36
- 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 +25 -36
- 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 +30 -44
- 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 +134 -124
- 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 +25 -36
- 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 +25 -36
- 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 +161 -35
- 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 +25 -36
- 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 +27 -37
- 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 +143 -102
- 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 +26 -35
- 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 +122 -31
- 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 +27 -35
- 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 +27 -69
- 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 +40 -171
- 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 +47 -156
- 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 -22
- 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 -21
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +36 -24
- package/dist/promise/promise.mjs.map +1 -1
- package/package.json +58 -44
- 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 +535 -0
- package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +53 -58
- 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} +13 -13
- 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/index.mts +2 -2
- package/src/functional/match.mts +35 -145
- package/src/functional/optional/impl/index.mts +17 -0
- package/src/functional/optional/impl/optional-expect-to-be.mts +65 -0
- package/src/functional/optional/impl/optional-filter.mts +71 -0
- package/src/functional/optional/impl/optional-flat-map.mts +67 -0
- package/src/functional/optional/impl/optional-from-nullable.mts +28 -0
- package/src/functional/optional/impl/optional-is-none.mts +25 -0
- package/src/functional/optional/impl/optional-is-optional.mts +27 -0
- package/src/functional/optional/impl/optional-is-some.mts +25 -0
- package/src/functional/optional/impl/optional-map.mts +69 -0
- package/src/functional/optional/impl/optional-none.mts +17 -0
- package/src/functional/optional/impl/optional-or-else.mts +73 -0
- package/src/functional/optional/impl/optional-some.mts +23 -0
- package/src/functional/optional/impl/optional-to-nullable.mts +31 -0
- package/src/functional/optional/impl/optional-unwrap-or.mts +64 -0
- package/src/functional/optional/impl/optional-unwrap-throw.mts +39 -0
- package/src/functional/optional/impl/optional-unwrap.mts +41 -0
- package/src/functional/optional/impl/optional-zip.mts +40 -0
- package/src/functional/optional/impl/tag.mts +6 -0
- package/src/functional/optional/impl/types.mts +28 -0
- package/src/functional/optional/index.mts +1 -0
- package/src/functional/optional.test.mts +11 -9
- package/src/functional/pipe.mts +65 -118
- package/src/functional/pipe.test.mts +1 -1
- package/src/functional/result/impl/index.mts +23 -0
- package/src/functional/result/impl/result-err.mts +29 -0
- package/src/functional/result/impl/result-expect-to-be.mts +63 -0
- package/src/functional/result/impl/result-flat-map.mts +79 -0
- package/src/functional/result/impl/result-fold.mts +95 -0
- package/src/functional/result/impl/result-from-promise.mts +39 -0
- package/src/functional/result/impl/result-from-throwable.mts +42 -0
- package/src/functional/result/impl/result-is-err.mts +23 -0
- package/src/functional/result/impl/result-is-ok.mts +23 -0
- package/src/functional/result/impl/result-is-result.mts +23 -0
- package/src/functional/result/impl/result-map-err.mts +72 -0
- package/src/functional/result/impl/result-map.mts +73 -0
- package/src/functional/result/impl/result-ok.mts +29 -0
- package/src/functional/result/impl/result-or-else.mts +63 -0
- package/src/functional/result/impl/result-swap.mts +28 -0
- package/src/functional/result/impl/result-to-optional.mts +34 -0
- package/src/functional/result/impl/result-unwrap-err-or.mts +60 -0
- package/src/functional/result/impl/result-unwrap-err-throw.mts +53 -0
- package/src/functional/result/impl/result-unwrap-err.mts +36 -0
- package/src/functional/result/impl/result-unwrap-ok-or.mts +60 -0
- package/src/functional/result/impl/result-unwrap-ok.mts +35 -0
- package/src/functional/result/impl/result-unwrap-throw.mts +43 -0
- package/src/functional/result/impl/result-zip.mts +39 -0
- package/src/functional/result/impl/tag.mts +6 -0
- package/src/functional/result/impl/types.mts +35 -0
- package/src/functional/result/index.mts +1 -0
- package/src/functional/result.test.mts +14 -6
- package/src/globals.d.mts +95 -5
- package/src/guard/has-key.mts +23 -74
- package/src/guard/is-non-empty-string.mts +20 -87
- package/src/guard/is-non-empty-string.test.mts +1 -1
- package/src/guard/is-non-null-object.mts +14 -84
- package/src/guard/is-non-null-object.test.mts +4 -4
- package/src/guard/is-primitive.mts +13 -126
- package/src/guard/is-primitive.test.mts +4 -4
- package/src/guard/is-record.mts +21 -132
- package/src/guard/is-type.mts +201 -238
- package/src/guard/is-type.test.mts +10 -10
- package/src/guard/key-is-in.mts +22 -139
- package/src/index.mts +0 -2
- 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 +34 -166
- package/src/number/branded-types/int.mts +129 -127
- package/src/number/branded-types/int16.mts +31 -39
- package/src/number/branded-types/int16.test.mts +24 -24
- package/src/number/branded-types/int32.mts +31 -40
- package/src/number/branded-types/int32.test.mts +39 -39
- package/src/number/branded-types/non-negative-finite-number.mts +39 -47
- package/src/number/branded-types/non-negative-int16.mts +33 -43
- package/src/number/branded-types/non-negative-int16.test.mts +16 -16
- package/src/number/branded-types/non-negative-int32.mts +35 -44
- package/src/number/branded-types/non-negative-int32.test.mts +30 -30
- package/src/number/branded-types/non-zero-finite-number.mts +32 -47
- package/src/number/branded-types/non-zero-int.mts +22 -37
- package/src/number/branded-types/non-zero-int16.mts +36 -44
- package/src/number/branded-types/non-zero-int16.test.mts +26 -26
- package/src/number/branded-types/non-zero-int32.mts +38 -45
- package/src/number/branded-types/non-zero-int32.test.mts +45 -42
- package/src/number/branded-types/non-zero-safe-int.mts +48 -49
- package/src/number/branded-types/non-zero-uint16.mts +33 -44
- package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
- package/src/number/branded-types/non-zero-uint32.mts +33 -44
- package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
- package/src/number/branded-types/positive-finite-number.mts +37 -51
- package/src/number/branded-types/positive-int.mts +142 -132
- package/src/number/branded-types/positive-int16.mts +33 -44
- package/src/number/branded-types/positive-int16.test.mts +14 -14
- package/src/number/branded-types/positive-int32.mts +33 -44
- package/src/number/branded-types/positive-int32.test.mts +26 -26
- package/src/number/branded-types/positive-safe-int.mts +169 -43
- package/src/number/branded-types/positive-uint16.mts +33 -44
- package/src/number/branded-types/positive-uint16.test.mts +16 -16
- package/src/number/branded-types/positive-uint32.mts +35 -45
- package/src/number/branded-types/positive-uint32.test.mts +31 -28
- package/src/number/branded-types/safe-int.mts +151 -110
- package/src/number/branded-types/safe-uint.mts +34 -43
- package/src/number/branded-types/uint.mts +129 -38
- package/src/number/branded-types/uint16.mts +35 -43
- package/src/number/branded-types/uint16.test.mts +16 -16
- package/src/number/branded-types/uint32.mts +35 -77
- package/src/number/branded-types/uint32.test.mts +28 -28
- package/src/number/enum/int8.mts +42 -173
- package/src/number/enum/int8.test.mts +9 -9
- package/src/number/enum/uint8.mts +49 -158
- package/src/number/enum/uint8.test.mts +8 -8
- 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/dist/functional/optional.d.mts +0 -360
- package/dist/functional/optional.d.mts.map +0 -1
- package/dist/functional/optional.mjs +0 -268
- package/dist/functional/optional.mjs.map +0 -1
- package/dist/functional/result.d.mts +0 -611
- package/dist/functional/result.d.mts.map +0 -1
- package/dist/functional/result.mjs +0 -545
- package/dist/functional/result.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
- package/src/functional/optional.mts +0 -591
- package/src/functional/result.mts +0 -986
|
@@ -6,19 +6,19 @@ type ElementType = NonZeroUint16;
|
|
|
6
6
|
const typeNameInMessage = 'a non-zero integer in [1, 2^16)';
|
|
7
7
|
|
|
8
8
|
const {
|
|
9
|
-
MIN_VALUE,
|
|
10
9
|
MAX_VALUE,
|
|
11
|
-
|
|
12
|
-
max: max_,
|
|
13
|
-
pow,
|
|
10
|
+
MIN_VALUE,
|
|
14
11
|
add,
|
|
15
|
-
sub,
|
|
16
|
-
mul,
|
|
17
|
-
div,
|
|
18
|
-
randomNonZero: random,
|
|
19
|
-
is,
|
|
20
12
|
castType,
|
|
21
13
|
clamp,
|
|
14
|
+
div,
|
|
15
|
+
is,
|
|
16
|
+
max: max_,
|
|
17
|
+
min: min_,
|
|
18
|
+
mul,
|
|
19
|
+
pow,
|
|
20
|
+
randomNonZero: random,
|
|
21
|
+
sub,
|
|
22
22
|
} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
|
|
23
23
|
ElementType,
|
|
24
24
|
1,
|
|
@@ -32,7 +32,9 @@ const {
|
|
|
32
32
|
} as const);
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* Checks if a number is a NonZeroUint16 (16-bit non-zero unsigned integer in
|
|
35
|
+
* Checks if a number is a NonZeroUint16 (16-bit non-zero unsigned integer in
|
|
36
|
+
* the range [1, 2^16)).
|
|
37
|
+
*
|
|
36
38
|
* @param value The value to check.
|
|
37
39
|
* @returns `true` if the value is a NonZeroUint16, `false` otherwise.
|
|
38
40
|
*/
|
|
@@ -40,70 +42,49 @@ export const isNonZeroUint16 = is;
|
|
|
40
42
|
|
|
41
43
|
/**
|
|
42
44
|
* Casts a number to a NonZeroUint16 type.
|
|
45
|
+
*
|
|
43
46
|
* @param value The value to cast.
|
|
44
47
|
* @returns The value as a NonZeroUint16 type.
|
|
45
48
|
* @throws {TypeError} If the value is not a non-zero integer in [1, 2^16).
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* const x = asNonZeroUint16(1000); // NonZeroUint16
|
|
49
|
-
* const y = asNonZeroUint16(65535); // NonZeroUint16
|
|
50
|
-
* // asNonZeroUint16(0); // throws TypeError
|
|
51
|
-
* // asNonZeroUint16(-1); // throws TypeError
|
|
52
|
-
* // asNonZeroUint16(65536); // throws TypeError
|
|
53
|
-
* ```
|
|
54
49
|
*/
|
|
55
50
|
export const asNonZeroUint16 = castType;
|
|
56
51
|
|
|
57
52
|
/**
|
|
58
|
-
* Namespace providing type-safe arithmetic operations for 16-bit non-zero
|
|
59
|
-
*
|
|
60
|
-
* All operations automatically clamp results to the valid NonZeroUint16 range [1, 65535].
|
|
61
|
-
* This ensures that all arithmetic maintains the 16-bit non-zero unsigned integer constraint,
|
|
62
|
-
* with results below 1 clamped to MIN_VALUE and overflow results clamped to MAX_VALUE.
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```typescript
|
|
66
|
-
* const a = asNonZeroUint16(60000);
|
|
67
|
-
* const b = asNonZeroUint16(10000);
|
|
68
|
-
*
|
|
69
|
-
* // Arithmetic operations with automatic clamping and non-zero constraint
|
|
70
|
-
* const sum = NonZeroUint16.add(a, b); // NonZeroUint16 (65535 - clamped to MAX_VALUE)
|
|
71
|
-
* const diff = NonZeroUint16.sub(a, b); // NonZeroUint16 (50000)
|
|
72
|
-
* const reverseDiff = NonZeroUint16.sub(b, a); // NonZeroUint16 (1 - clamped to MIN_VALUE)
|
|
73
|
-
* const product = NonZeroUint16.mul(a, b); // NonZeroUint16 (65535 - clamped due to overflow)
|
|
74
|
-
*
|
|
75
|
-
* // Range operations (maintaining non-zero constraint)
|
|
76
|
-
* const clamped = NonZeroUint16.clamp(-100); // NonZeroUint16 (1)
|
|
77
|
-
* const minimum = NonZeroUint16.min(a, b); // NonZeroUint16 (10000)
|
|
78
|
-
* const maximum = NonZeroUint16.max(a, b); // NonZeroUint16 (60000)
|
|
53
|
+
* Namespace providing type-safe arithmetic operations for 16-bit non-zero
|
|
54
|
+
* unsigned integers.
|
|
79
55
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
56
|
+
* All operations automatically clamp results to the valid NonZeroUint16 range
|
|
57
|
+
* [1, 65535]. This ensures that all arithmetic maintains the 16-bit non-zero
|
|
58
|
+
* unsigned integer constraint, with results below 1 clamped to MIN_VALUE and
|
|
59
|
+
* overflow results clamped to MAX_VALUE.
|
|
84
60
|
*/
|
|
85
61
|
export const NonZeroUint16 = {
|
|
86
62
|
/**
|
|
87
63
|
* Type guard to check if a value is a NonZeroUint16.
|
|
64
|
+
*
|
|
88
65
|
* @param value The value to check.
|
|
89
|
-
* @returns `true` if the value is a 16-bit non-zero unsigned integer, `false`
|
|
66
|
+
* @returns `true` if the value is a 16-bit non-zero unsigned integer, `false`
|
|
67
|
+
* otherwise.
|
|
90
68
|
*/
|
|
91
69
|
is,
|
|
92
70
|
|
|
93
71
|
/**
|
|
94
72
|
* The minimum value for a 16-bit non-zero unsigned integer.
|
|
73
|
+
*
|
|
95
74
|
* @readonly
|
|
96
75
|
*/
|
|
97
76
|
MIN_VALUE,
|
|
98
77
|
|
|
99
78
|
/**
|
|
100
79
|
* The maximum value for a 16-bit non-zero unsigned integer.
|
|
80
|
+
*
|
|
101
81
|
* @readonly
|
|
102
82
|
*/
|
|
103
83
|
MAX_VALUE,
|
|
104
84
|
|
|
105
85
|
/**
|
|
106
86
|
* Returns the smaller of two NonZeroUint16 values.
|
|
87
|
+
*
|
|
107
88
|
* @param a The first NonZeroUint16.
|
|
108
89
|
* @param b The second NonZeroUint16.
|
|
109
90
|
* @returns The minimum value as a NonZeroUint16.
|
|
@@ -112,6 +93,7 @@ export const NonZeroUint16 = {
|
|
|
112
93
|
|
|
113
94
|
/**
|
|
114
95
|
* Returns the larger of two NonZeroUint16 values.
|
|
96
|
+
*
|
|
115
97
|
* @param a The first NonZeroUint16.
|
|
116
98
|
* @param b The second NonZeroUint16.
|
|
117
99
|
* @returns The maximum value as a NonZeroUint16.
|
|
@@ -120,6 +102,7 @@ export const NonZeroUint16 = {
|
|
|
120
102
|
|
|
121
103
|
/**
|
|
122
104
|
* Clamps a number to the NonZeroUint16 range.
|
|
105
|
+
*
|
|
123
106
|
* @param value The number to clamp.
|
|
124
107
|
* @returns The value clamped to [1, 65535] as a NonZeroUint16.
|
|
125
108
|
*/
|
|
@@ -127,12 +110,14 @@ export const NonZeroUint16 = {
|
|
|
127
110
|
|
|
128
111
|
/**
|
|
129
112
|
* Generates a random NonZeroUint16 value within the valid range.
|
|
113
|
+
*
|
|
130
114
|
* @returns A random NonZeroUint16 between 1 and 65535.
|
|
131
115
|
*/
|
|
132
116
|
random,
|
|
133
117
|
|
|
134
118
|
/**
|
|
135
119
|
* Raises a NonZeroUint16 to the power of another NonZeroUint16.
|
|
120
|
+
*
|
|
136
121
|
* @param a The base NonZeroUint16.
|
|
137
122
|
* @param b The exponent NonZeroUint16.
|
|
138
123
|
* @returns `a ** b` clamped to [1, 65535] as a NonZeroUint16.
|
|
@@ -141,6 +126,7 @@ export const NonZeroUint16 = {
|
|
|
141
126
|
|
|
142
127
|
/**
|
|
143
128
|
* Adds two NonZeroUint16 values.
|
|
129
|
+
*
|
|
144
130
|
* @param a The first NonZeroUint16.
|
|
145
131
|
* @param b The second NonZeroUint16.
|
|
146
132
|
* @returns `a + b` clamped to [1, 65535] as a NonZeroUint16.
|
|
@@ -149,6 +135,7 @@ export const NonZeroUint16 = {
|
|
|
149
135
|
|
|
150
136
|
/**
|
|
151
137
|
* Subtracts one NonZeroUint16 from another.
|
|
138
|
+
*
|
|
152
139
|
* @param a The minuend NonZeroUint16.
|
|
153
140
|
* @param b The subtrahend NonZeroUint16.
|
|
154
141
|
* @returns `a - b` clamped to [1, 65535] as a NonZeroUint16 (minimum 1).
|
|
@@ -157,6 +144,7 @@ export const NonZeroUint16 = {
|
|
|
157
144
|
|
|
158
145
|
/**
|
|
159
146
|
* Multiplies two NonZeroUint16 values.
|
|
147
|
+
*
|
|
160
148
|
* @param a The first NonZeroUint16.
|
|
161
149
|
* @param b The second NonZeroUint16.
|
|
162
150
|
* @returns `a * b` clamped to [1, 65535] as a NonZeroUint16.
|
|
@@ -165,6 +153,7 @@ export const NonZeroUint16 = {
|
|
|
165
153
|
|
|
166
154
|
/**
|
|
167
155
|
* Divides one NonZeroUint16 by another using floor division.
|
|
156
|
+
*
|
|
168
157
|
* @param a The dividend NonZeroUint16.
|
|
169
158
|
* @param b The divisor NonZeroUint16.
|
|
170
159
|
* @returns `⌊a / b⌋` clamped to [1, 65535] as a NonZeroUint16.
|
|
@@ -11,8 +11,8 @@ describe('NonZeroUint16', () => {
|
|
|
11
11
|
test('accepts valid non-zero uint16 values', () => {
|
|
12
12
|
expect(() => asNonZeroUint16(1)).not.toThrow();
|
|
13
13
|
expect(() => asNonZeroUint16(1000)).not.toThrow();
|
|
14
|
-
expect(() => asNonZeroUint16(
|
|
15
|
-
expect(() => asNonZeroUint16(
|
|
14
|
+
expect(() => asNonZeroUint16(65_535)).not.toThrow(); // 2^16 - 1
|
|
15
|
+
expect(() => asNonZeroUint16(32_768)).not.toThrow(); // 2^15
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
test('rejects zero', () => {
|
|
@@ -20,8 +20,8 @@ describe('NonZeroUint16', () => {
|
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
test('rejects values outside uint16 range', () => {
|
|
23
|
-
expect(() => asNonZeroUint16(
|
|
24
|
-
expect(() => asNonZeroUint16(
|
|
23
|
+
expect(() => asNonZeroUint16(65_536)).toThrow(TypeError); // 2^16
|
|
24
|
+
expect(() => asNonZeroUint16(100_000)).toThrow(TypeError);
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
test('rejects negative integers', () => {
|
|
@@ -44,7 +44,7 @@ describe('NonZeroUint16', () => {
|
|
|
44
44
|
test('returns the same value for valid inputs', () => {
|
|
45
45
|
expect(asNonZeroUint16(5)).toBe(5);
|
|
46
46
|
expect(asNonZeroUint16(1)).toBe(1);
|
|
47
|
-
expect(asNonZeroUint16(
|
|
47
|
+
expect(asNonZeroUint16(65_535)).toBe(65_535);
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
test.each([
|
|
@@ -55,7 +55,7 @@ describe('NonZeroUint16', () => {
|
|
|
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
|
`asNonZeroUint16($name) should throw a TypeError`,
|
|
61
61
|
({ value }) => {
|
|
@@ -72,8 +72,8 @@ describe('NonZeroUint16', () => {
|
|
|
72
72
|
test('correctly identifies non-zero uint16 values', () => {
|
|
73
73
|
expect(isNonZeroUint16(1)).toBe(true);
|
|
74
74
|
expect(isNonZeroUint16(1000)).toBe(true);
|
|
75
|
-
expect(isNonZeroUint16(
|
|
76
|
-
expect(isNonZeroUint16(
|
|
75
|
+
expect(isNonZeroUint16(65_535)).toBe(true);
|
|
76
|
+
expect(isNonZeroUint16(32_768)).toBe(true);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
test('correctly identifies zero', () => {
|
|
@@ -81,8 +81,8 @@ describe('NonZeroUint16', () => {
|
|
|
81
81
|
});
|
|
82
82
|
|
|
83
83
|
test('correctly identifies values outside uint16 range', () => {
|
|
84
|
-
expect(isNonZeroUint16(
|
|
85
|
-
expect(isNonZeroUint16(
|
|
84
|
+
expect(isNonZeroUint16(65_536)).toBe(false);
|
|
85
|
+
expect(isNonZeroUint16(100_000)).toBe(false);
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
test('correctly identifies negative integers', () => {
|
|
@@ -110,7 +110,7 @@ describe('NonZeroUint16', () => {
|
|
|
110
110
|
describe('constants', () => {
|
|
111
111
|
test('MIN_VALUE and MAX_VALUE', () => {
|
|
112
112
|
expect(NonZeroUint16.MIN_VALUE).toBe(1);
|
|
113
|
-
expect(NonZeroUint16.MAX_VALUE).toBe(
|
|
113
|
+
expect(NonZeroUint16.MAX_VALUE).toBe(65_535);
|
|
114
114
|
});
|
|
115
115
|
});
|
|
116
116
|
|
|
@@ -125,10 +125,10 @@ describe('NonZeroUint16', () => {
|
|
|
125
125
|
|
|
126
126
|
test('add (with clamping to non-zero uint16 range)', () => {
|
|
127
127
|
const result = NonZeroUint16.add(
|
|
128
|
-
asNonZeroUint16(
|
|
128
|
+
asNonZeroUint16(65_000),
|
|
129
129
|
asNonZeroUint16(1000),
|
|
130
130
|
);
|
|
131
|
-
expect(result).toBe(
|
|
131
|
+
expect(result).toBe(65_535); // clamped to max
|
|
132
132
|
expect(NonZeroUint16.add(a, b)).toBe(150);
|
|
133
133
|
});
|
|
134
134
|
|
|
@@ -142,7 +142,7 @@ describe('NonZeroUint16', () => {
|
|
|
142
142
|
asNonZeroUint16(1000),
|
|
143
143
|
asNonZeroUint16(100),
|
|
144
144
|
);
|
|
145
|
-
expect(result).toBe(
|
|
145
|
+
expect(result).toBe(65_535); // clamped to max
|
|
146
146
|
expect(NonZeroUint16.mul(asNonZeroUint16(10), asNonZeroUint16(5))).toBe(
|
|
147
147
|
50,
|
|
148
148
|
);
|
|
@@ -161,7 +161,7 @@ describe('NonZeroUint16', () => {
|
|
|
161
161
|
asNonZeroUint16(256),
|
|
162
162
|
asNonZeroUint16(3),
|
|
163
163
|
);
|
|
164
|
-
expect(result).toBe(
|
|
164
|
+
expect(result).toBe(65_535); // clamped to max
|
|
165
165
|
expect(NonZeroUint16.pow(asNonZeroUint16(2), asNonZeroUint16(3))).toBe(8);
|
|
166
166
|
});
|
|
167
167
|
});
|
|
@@ -185,7 +185,7 @@ describe('NonZeroUint16', () => {
|
|
|
185
185
|
for (const _ of range(10)) {
|
|
186
186
|
const result = NonZeroUint16.random(1, 30);
|
|
187
187
|
expect(result).toBeGreaterThanOrEqual(1);
|
|
188
|
-
expect(result).toBeLessThanOrEqual(
|
|
188
|
+
expect(result).toBeLessThanOrEqual(65_535);
|
|
189
189
|
}
|
|
190
190
|
});
|
|
191
191
|
});
|
|
@@ -6,19 +6,19 @@ type ElementType = NonZeroUint32;
|
|
|
6
6
|
const typeNameInMessage = 'a non-zero integer in [1, 2^32)';
|
|
7
7
|
|
|
8
8
|
const {
|
|
9
|
-
MIN_VALUE,
|
|
10
9
|
MAX_VALUE,
|
|
11
|
-
|
|
12
|
-
max: max_,
|
|
13
|
-
pow,
|
|
10
|
+
MIN_VALUE,
|
|
14
11
|
add,
|
|
15
|
-
sub,
|
|
16
|
-
mul,
|
|
17
|
-
div,
|
|
18
|
-
randomNonZero: random,
|
|
19
|
-
is,
|
|
20
12
|
castType,
|
|
21
13
|
clamp,
|
|
14
|
+
div,
|
|
15
|
+
is,
|
|
16
|
+
max: max_,
|
|
17
|
+
min: min_,
|
|
18
|
+
mul,
|
|
19
|
+
pow,
|
|
20
|
+
randomNonZero: random,
|
|
21
|
+
sub,
|
|
22
22
|
} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
|
|
23
23
|
ElementType,
|
|
24
24
|
1,
|
|
@@ -32,7 +32,9 @@ const {
|
|
|
32
32
|
} as const);
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* Checks if a number is a NonZeroUint32 (32-bit non-zero unsigned integer in
|
|
35
|
+
* Checks if a number is a NonZeroUint32 (32-bit non-zero unsigned integer in
|
|
36
|
+
* the range [1, 2^32)).
|
|
37
|
+
*
|
|
36
38
|
* @param value The value to check.
|
|
37
39
|
* @returns `true` if the value is a NonZeroUint32, `false` otherwise.
|
|
38
40
|
*/
|
|
@@ -40,70 +42,49 @@ export const isNonZeroUint32 = is;
|
|
|
40
42
|
|
|
41
43
|
/**
|
|
42
44
|
* Casts a number to a NonZeroUint32 type.
|
|
45
|
+
*
|
|
43
46
|
* @param value The value to cast.
|
|
44
47
|
* @returns The value as a NonZeroUint32 type.
|
|
45
48
|
* @throws {TypeError} If the value is not a non-zero integer in [1, 2^32).
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* const x = asNonZeroUint32(1000); // NonZeroUint32
|
|
49
|
-
* const y = asNonZeroUint32(4294967295); // NonZeroUint32
|
|
50
|
-
* // asNonZeroUint32(0); // throws TypeError
|
|
51
|
-
* // asNonZeroUint32(-1); // throws TypeError
|
|
52
|
-
* // asNonZeroUint32(4294967296); // throws TypeError
|
|
53
|
-
* ```
|
|
54
49
|
*/
|
|
55
50
|
export const asNonZeroUint32 = castType;
|
|
56
51
|
|
|
57
52
|
/**
|
|
58
|
-
* Namespace providing type-safe arithmetic operations for 32-bit non-zero
|
|
59
|
-
*
|
|
60
|
-
* All operations automatically clamp results to the valid NonZeroUint32 range [1, 4294967295].
|
|
61
|
-
* This ensures that all arithmetic maintains the 32-bit non-zero unsigned integer constraint,
|
|
62
|
-
* with results below 1 clamped to MIN_VALUE and overflow results clamped to MAX_VALUE.
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```typescript
|
|
66
|
-
* const a = asNonZeroUint32(4000000000);
|
|
67
|
-
* const b = asNonZeroUint32(1000000000);
|
|
68
|
-
*
|
|
69
|
-
* // Arithmetic operations with automatic clamping and non-zero constraint
|
|
70
|
-
* const sum = NonZeroUint32.add(a, b); // NonZeroUint32 (4294967295 - clamped to MAX_VALUE)
|
|
71
|
-
* const diff = NonZeroUint32.sub(a, b); // NonZeroUint32 (3000000000)
|
|
72
|
-
* const reverseDiff = NonZeroUint32.sub(b, a); // NonZeroUint32 (1 - clamped to MIN_VALUE)
|
|
73
|
-
* const product = NonZeroUint32.mul(a, b); // NonZeroUint32 (4294967295 - clamped due to overflow)
|
|
74
|
-
*
|
|
75
|
-
* // Range operations (maintaining non-zero constraint)
|
|
76
|
-
* const clamped = NonZeroUint32.clamp(-100); // NonZeroUint32 (1)
|
|
77
|
-
* const minimum = NonZeroUint32.min(a, b); // NonZeroUint32 (1000000000)
|
|
78
|
-
* const maximum = NonZeroUint32.max(a, b); // NonZeroUint32 (4000000000)
|
|
53
|
+
* Namespace providing type-safe arithmetic operations for 32-bit non-zero
|
|
54
|
+
* unsigned integers.
|
|
79
55
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
56
|
+
* All operations automatically clamp results to the valid NonZeroUint32 range
|
|
57
|
+
* [1, 4294967295]. This ensures that all arithmetic maintains the 32-bit
|
|
58
|
+
* non-zero unsigned integer constraint, with results below 1 clamped to
|
|
59
|
+
* MIN_VALUE and overflow results clamped to MAX_VALUE.
|
|
84
60
|
*/
|
|
85
61
|
export const NonZeroUint32 = {
|
|
86
62
|
/**
|
|
87
63
|
* Type guard to check if a value is a NonZeroUint32.
|
|
64
|
+
*
|
|
88
65
|
* @param value The value to check.
|
|
89
|
-
* @returns `true` if the value is a 32-bit non-zero unsigned integer, `false`
|
|
66
|
+
* @returns `true` if the value is a 32-bit non-zero unsigned integer, `false`
|
|
67
|
+
* otherwise.
|
|
90
68
|
*/
|
|
91
69
|
is,
|
|
92
70
|
|
|
93
71
|
/**
|
|
94
72
|
* The minimum value for a 32-bit non-zero unsigned integer.
|
|
73
|
+
*
|
|
95
74
|
* @readonly
|
|
96
75
|
*/
|
|
97
76
|
MIN_VALUE,
|
|
98
77
|
|
|
99
78
|
/**
|
|
100
79
|
* The maximum value for a 32-bit non-zero unsigned integer.
|
|
80
|
+
*
|
|
101
81
|
* @readonly
|
|
102
82
|
*/
|
|
103
83
|
MAX_VALUE,
|
|
104
84
|
|
|
105
85
|
/**
|
|
106
86
|
* Returns the smaller of two NonZeroUint32 values.
|
|
87
|
+
*
|
|
107
88
|
* @param a The first NonZeroUint32.
|
|
108
89
|
* @param b The second NonZeroUint32.
|
|
109
90
|
* @returns The minimum value as a NonZeroUint32.
|
|
@@ -112,6 +93,7 @@ export const NonZeroUint32 = {
|
|
|
112
93
|
|
|
113
94
|
/**
|
|
114
95
|
* Returns the larger of two NonZeroUint32 values.
|
|
96
|
+
*
|
|
115
97
|
* @param a The first NonZeroUint32.
|
|
116
98
|
* @param b The second NonZeroUint32.
|
|
117
99
|
* @returns The maximum value as a NonZeroUint32.
|
|
@@ -120,6 +102,7 @@ export const NonZeroUint32 = {
|
|
|
120
102
|
|
|
121
103
|
/**
|
|
122
104
|
* Clamps a number to the NonZeroUint32 range.
|
|
105
|
+
*
|
|
123
106
|
* @param value The number to clamp.
|
|
124
107
|
* @returns The value clamped to [1, 4294967295] as a NonZeroUint32.
|
|
125
108
|
*/
|
|
@@ -127,12 +110,14 @@ export const NonZeroUint32 = {
|
|
|
127
110
|
|
|
128
111
|
/**
|
|
129
112
|
* Generates a random NonZeroUint32 value within the valid range.
|
|
113
|
+
*
|
|
130
114
|
* @returns A random NonZeroUint32 between 1 and 4294967295.
|
|
131
115
|
*/
|
|
132
116
|
random,
|
|
133
117
|
|
|
134
118
|
/**
|
|
135
119
|
* Raises a NonZeroUint32 to the power of another NonZeroUint32.
|
|
120
|
+
*
|
|
136
121
|
* @param a The base NonZeroUint32.
|
|
137
122
|
* @param b The exponent NonZeroUint32.
|
|
138
123
|
* @returns `a ** b` clamped to [1, 4294967295] as a NonZeroUint32.
|
|
@@ -141,6 +126,7 @@ export const NonZeroUint32 = {
|
|
|
141
126
|
|
|
142
127
|
/**
|
|
143
128
|
* Adds two NonZeroUint32 values.
|
|
129
|
+
*
|
|
144
130
|
* @param a The first NonZeroUint32.
|
|
145
131
|
* @param b The second NonZeroUint32.
|
|
146
132
|
* @returns `a + b` clamped to [1, 4294967295] as a NonZeroUint32.
|
|
@@ -149,6 +135,7 @@ export const NonZeroUint32 = {
|
|
|
149
135
|
|
|
150
136
|
/**
|
|
151
137
|
* Subtracts one NonZeroUint32 from another.
|
|
138
|
+
*
|
|
152
139
|
* @param a The minuend NonZeroUint32.
|
|
153
140
|
* @param b The subtrahend NonZeroUint32.
|
|
154
141
|
* @returns `a - b` clamped to [1, 4294967295] as a NonZeroUint32 (minimum 1).
|
|
@@ -157,6 +144,7 @@ export const NonZeroUint32 = {
|
|
|
157
144
|
|
|
158
145
|
/**
|
|
159
146
|
* Multiplies two NonZeroUint32 values.
|
|
147
|
+
*
|
|
160
148
|
* @param a The first NonZeroUint32.
|
|
161
149
|
* @param b The second NonZeroUint32.
|
|
162
150
|
* @returns `a * b` clamped to [1, 4294967295] as a NonZeroUint32.
|
|
@@ -165,6 +153,7 @@ export const NonZeroUint32 = {
|
|
|
165
153
|
|
|
166
154
|
/**
|
|
167
155
|
* Divides one NonZeroUint32 by another using floor division.
|
|
156
|
+
*
|
|
168
157
|
* @param a The dividend NonZeroUint32.
|
|
169
158
|
* @param b The divisor NonZeroUint32.
|
|
170
159
|
* @returns `⌊a / b⌋` clamped to [1, 4294967295] as a NonZeroUint32.
|
|
@@ -11,8 +11,8 @@ describe('NonZeroUint32', () => {
|
|
|
11
11
|
test('accepts valid non-zero uint32 values', () => {
|
|
12
12
|
expect(() => asNonZeroUint32(1)).not.toThrow();
|
|
13
13
|
expect(() => asNonZeroUint32(1000)).not.toThrow();
|
|
14
|
-
expect(() => asNonZeroUint32(
|
|
15
|
-
expect(() => asNonZeroUint32(
|
|
14
|
+
expect(() => asNonZeroUint32(4_294_967_295)).not.toThrow(); // 2^32 - 1
|
|
15
|
+
expect(() => asNonZeroUint32(2_147_483_648)).not.toThrow(); // 2^31
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
test('rejects zero', () => {
|
|
@@ -20,8 +20,8 @@ describe('NonZeroUint32', () => {
|
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
test('rejects values outside uint32 range', () => {
|
|
23
|
-
expect(() => asNonZeroUint32(
|
|
24
|
-
expect(() => asNonZeroUint32(
|
|
23
|
+
expect(() => asNonZeroUint32(4_294_967_296)).toThrow(TypeError); // 2^32
|
|
24
|
+
expect(() => asNonZeroUint32(10_000_000_000)).toThrow(TypeError);
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
test('rejects negative integers', () => {
|
|
@@ -44,7 +44,7 @@ describe('NonZeroUint32', () => {
|
|
|
44
44
|
test('returns the same value for valid inputs', () => {
|
|
45
45
|
expect(asNonZeroUint32(5)).toBe(5);
|
|
46
46
|
expect(asNonZeroUint32(1)).toBe(1);
|
|
47
|
-
expect(asNonZeroUint32(
|
|
47
|
+
expect(asNonZeroUint32(4_294_967_295)).toBe(4_294_967_295);
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
test.each([
|
|
@@ -55,7 +55,7 @@ describe('NonZeroUint32', () => {
|
|
|
55
55
|
{ name: '-3.4', value: -3.4 },
|
|
56
56
|
{ name: '0', value: 0 },
|
|
57
57
|
{ name: '-1', value: -1 },
|
|
58
|
-
{ name: '4294967296', value:
|
|
58
|
+
{ name: '4294967296', value: 4_294_967_296 },
|
|
59
59
|
] as const)(
|
|
60
60
|
`asNonZeroUint32($name) should throw a TypeError`,
|
|
61
61
|
({ value }) => {
|
|
@@ -72,8 +72,8 @@ describe('NonZeroUint32', () => {
|
|
|
72
72
|
test('correctly identifies non-zero uint32 values', () => {
|
|
73
73
|
expect(isNonZeroUint32(1)).toBe(true);
|
|
74
74
|
expect(isNonZeroUint32(1000)).toBe(true);
|
|
75
|
-
expect(isNonZeroUint32(
|
|
76
|
-
expect(isNonZeroUint32(
|
|
75
|
+
expect(isNonZeroUint32(4_294_967_295)).toBe(true);
|
|
76
|
+
expect(isNonZeroUint32(2_147_483_648)).toBe(true);
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
test('correctly identifies zero', () => {
|
|
@@ -81,8 +81,8 @@ describe('NonZeroUint32', () => {
|
|
|
81
81
|
});
|
|
82
82
|
|
|
83
83
|
test('correctly identifies values outside uint32 range', () => {
|
|
84
|
-
expect(isNonZeroUint32(
|
|
85
|
-
expect(isNonZeroUint32(
|
|
84
|
+
expect(isNonZeroUint32(4_294_967_296)).toBe(false);
|
|
85
|
+
expect(isNonZeroUint32(10_000_000_000)).toBe(false);
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
test('correctly identifies negative integers', () => {
|
|
@@ -110,58 +110,58 @@ describe('NonZeroUint32', () => {
|
|
|
110
110
|
describe('constants', () => {
|
|
111
111
|
test('MIN_VALUE and MAX_VALUE', () => {
|
|
112
112
|
expect(NonZeroUint32.MIN_VALUE).toBe(1);
|
|
113
|
-
expect(NonZeroUint32.MAX_VALUE).toBe(
|
|
113
|
+
expect(NonZeroUint32.MAX_VALUE).toBe(4_294_967_295);
|
|
114
114
|
});
|
|
115
115
|
});
|
|
116
116
|
|
|
117
117
|
describe('mathematical operations', () => {
|
|
118
|
-
const a = asNonZeroUint32(
|
|
119
|
-
const b = asNonZeroUint32(
|
|
118
|
+
const a = asNonZeroUint32(1_000_000);
|
|
119
|
+
const b = asNonZeroUint32(500_000);
|
|
120
120
|
|
|
121
121
|
test('min and max', () => {
|
|
122
|
-
expect(NonZeroUint32.min(a, b)).toBe(
|
|
123
|
-
expect(NonZeroUint32.max(a, b)).toBe(
|
|
122
|
+
expect(NonZeroUint32.min(a, b)).toBe(500_000);
|
|
123
|
+
expect(NonZeroUint32.max(a, b)).toBe(1_000_000);
|
|
124
124
|
});
|
|
125
125
|
|
|
126
126
|
test('add (with clamping to non-zero uint32 range)', () => {
|
|
127
127
|
const result = NonZeroUint32.add(
|
|
128
|
-
asNonZeroUint32(
|
|
128
|
+
asNonZeroUint32(4_294_967_000),
|
|
129
129
|
asNonZeroUint32(1000),
|
|
130
130
|
);
|
|
131
|
-
expect(result).toBe(
|
|
132
|
-
expect(NonZeroUint32.add(a, b)).toBe(
|
|
131
|
+
expect(result).toBe(4_294_967_295); // clamped to max
|
|
132
|
+
expect(NonZeroUint32.add(a, b)).toBe(1_500_000);
|
|
133
133
|
});
|
|
134
134
|
|
|
135
135
|
test('sub (never goes below 1)', () => {
|
|
136
|
-
expect(NonZeroUint32.sub(a, b)).toBe(
|
|
136
|
+
expect(NonZeroUint32.sub(a, b)).toBe(500_000);
|
|
137
137
|
expect(NonZeroUint32.sub(b, a)).toBe(1); // clamped to 1
|
|
138
138
|
});
|
|
139
139
|
|
|
140
140
|
test('mul (with clamping to non-zero uint32 range)', () => {
|
|
141
141
|
const result = NonZeroUint32.mul(
|
|
142
|
-
asNonZeroUint32(
|
|
143
|
-
asNonZeroUint32(
|
|
142
|
+
asNonZeroUint32(100_000),
|
|
143
|
+
asNonZeroUint32(100_000),
|
|
144
144
|
);
|
|
145
|
-
expect(result).toBe(
|
|
145
|
+
expect(result).toBe(4_294_967_295); // clamped to max
|
|
146
146
|
expect(NonZeroUint32.mul(asNonZeroUint32(1000), asNonZeroUint32(5))).toBe(
|
|
147
147
|
5000,
|
|
148
148
|
);
|
|
149
149
|
});
|
|
150
150
|
|
|
151
151
|
test('div (floor division, never goes below 1)', () => {
|
|
152
|
-
expect(NonZeroUint32.div(a, asNonZeroUint32(
|
|
152
|
+
expect(NonZeroUint32.div(a, asNonZeroUint32(500_000))).toBe(2);
|
|
153
153
|
expect(NonZeroUint32.div(asNonZeroUint32(7), asNonZeroUint32(3))).toBe(2);
|
|
154
154
|
expect(
|
|
155
|
-
NonZeroUint32.div(asNonZeroUint32(
|
|
155
|
+
NonZeroUint32.div(asNonZeroUint32(500_000), asNonZeroUint32(1_000_000)),
|
|
156
156
|
).toBe(1); // floor(500000/1000000) = 0, clamped to 1
|
|
157
157
|
});
|
|
158
158
|
|
|
159
159
|
test('pow (with clamping to non-zero uint32 range)', () => {
|
|
160
160
|
const result = NonZeroUint32.pow(
|
|
161
|
-
asNonZeroUint32(
|
|
161
|
+
asNonZeroUint32(10_000),
|
|
162
162
|
asNonZeroUint32(3),
|
|
163
163
|
);
|
|
164
|
-
expect(result).toBe(
|
|
164
|
+
expect(result).toBe(4_294_967_295); // clamped to max
|
|
165
165
|
expect(NonZeroUint32.pow(asNonZeroUint32(2), asNonZeroUint32(3))).toBe(8);
|
|
166
166
|
});
|
|
167
167
|
});
|
|
@@ -185,7 +185,7 @@ describe('NonZeroUint32', () => {
|
|
|
185
185
|
for (const _ of range(10)) {
|
|
186
186
|
const result = NonZeroUint32.random(1, 30);
|
|
187
187
|
expect(result).toBeGreaterThanOrEqual(1);
|
|
188
|
-
expect(result).toBeLessThanOrEqual(
|
|
188
|
+
expect(result).toBeLessThanOrEqual(4_294_967_295);
|
|
189
189
|
}
|
|
190
190
|
});
|
|
191
191
|
});
|
|
@@ -194,7 +194,7 @@ describe('NonZeroUint32', () => {
|
|
|
194
194
|
test('type relationships', () => {
|
|
195
195
|
expectType<NonZeroUint32, number>('<=');
|
|
196
196
|
|
|
197
|
-
expectTypeOf(asNonZeroUint32(
|
|
197
|
+
expectTypeOf(asNonZeroUint32(1_000_000)).toExtend<NonZeroUint32>();
|
|
198
198
|
});
|
|
199
199
|
});
|
|
200
200
|
});
|