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
|
@@ -1,79 +1,61 @@
|
|
|
1
1
|
import { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
2
2
|
|
|
3
3
|
const typeNameInMessage = 'a non-negative safe integer';
|
|
4
|
-
const { MIN_VALUE,
|
|
4
|
+
const { MAX_VALUE, MIN_VALUE, add, castType, clamp, div, is, max: max_, min: min_, mul, pow, random, sub, } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger({
|
|
5
5
|
integerOrSafeInteger: 'SafeInteger',
|
|
6
6
|
MIN_VALUE: 0,
|
|
7
|
-
// eslint-disable-next-line
|
|
7
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
8
8
|
MAX_VALUE: Number.MAX_SAFE_INTEGER,
|
|
9
9
|
typeNameInMessage,
|
|
10
10
|
});
|
|
11
11
|
/**
|
|
12
12
|
* Checks if a number is a SafeUint.
|
|
13
|
+
*
|
|
13
14
|
* @param value The value to check.
|
|
14
15
|
* @returns `true` if the value is a SafeUint, `false` otherwise.
|
|
15
16
|
*/
|
|
16
17
|
const isSafeUint = is;
|
|
17
18
|
/**
|
|
18
19
|
* Casts a number to a SafeUint type.
|
|
20
|
+
*
|
|
19
21
|
* @param value The value to cast.
|
|
20
22
|
* @returns The value as a SafeUint type.
|
|
21
23
|
* @throws {TypeError} If the value is not a non-negative safe integer.
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* const x = asSafeUint(5); // SafeUint
|
|
25
|
-
* const y = asSafeUint(0); // SafeUint
|
|
26
|
-
* // asSafeUint(-1); // throws TypeError
|
|
27
|
-
* // asSafeUint(1.5); // throws TypeError
|
|
28
|
-
* ```
|
|
29
24
|
*/
|
|
30
25
|
const asSafeUint = castType;
|
|
31
26
|
/**
|
|
32
|
-
* Namespace providing type-safe arithmetic operations for safe unsigned
|
|
33
|
-
*
|
|
34
|
-
* All operations automatically clamp results to the safe unsigned integer range [0, MAX_SAFE_INTEGER].
|
|
35
|
-
* This ensures that all arithmetic maintains both the non-negative constraint and IEEE 754 precision guarantees,
|
|
36
|
-
* preventing precision loss while ensuring results are never negative.
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* ```typescript
|
|
40
|
-
* const a = asSafeUint(9007199254740000); // Near MAX_SAFE_INTEGER
|
|
41
|
-
* const b = asSafeUint(1000);
|
|
42
|
-
*
|
|
43
|
-
* // Arithmetic operations with safe unsigned range clamping
|
|
44
|
-
* const sum = SafeUint.add(a, b); // SafeUint (clamped to MAX_SAFE_INTEGER)
|
|
45
|
-
* const diff = SafeUint.sub(b, a); // SafeUint (0 - clamped to MIN_VALUE)
|
|
46
|
-
* const product = SafeUint.mul(a, b); // SafeUint (clamped to MAX_SAFE_INTEGER)
|
|
47
|
-
*
|
|
48
|
-
* // Range operations
|
|
49
|
-
* const clamped = SafeUint.clamp(-100); // SafeUint (0)
|
|
50
|
-
* const minimum = SafeUint.min(a, b); // SafeUint (1000)
|
|
51
|
-
* const maximum = SafeUint.max(a, b); // SafeUint (a)
|
|
27
|
+
* Namespace providing type-safe arithmetic operations for safe unsigned
|
|
28
|
+
* integers.
|
|
52
29
|
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
30
|
+
* All operations automatically clamp results to the safe unsigned integer range
|
|
31
|
+
* [0, MAX_SAFE_INTEGER]. This ensures that all arithmetic maintains both the
|
|
32
|
+
* non-negative constraint and IEEE 754 precision guarantees, preventing
|
|
33
|
+
* precision loss while ensuring results are never negative.
|
|
57
34
|
*/
|
|
58
35
|
const SafeUint = {
|
|
59
36
|
/**
|
|
60
37
|
* Type guard to check if a value is a SafeUint.
|
|
38
|
+
*
|
|
61
39
|
* @param value The value to check.
|
|
62
|
-
* @returns `true` if the value is a non-negative safe integer, `false`
|
|
40
|
+
* @returns `true` if the value is a non-negative safe integer, `false`
|
|
41
|
+
* otherwise.
|
|
63
42
|
*/
|
|
64
43
|
is,
|
|
65
44
|
/**
|
|
66
45
|
* The minimum value for a safe unsigned integer.
|
|
46
|
+
*
|
|
67
47
|
* @readonly
|
|
68
48
|
*/
|
|
69
49
|
MIN_VALUE,
|
|
70
50
|
/**
|
|
71
51
|
* The maximum safe integer value (2^53 - 1).
|
|
52
|
+
*
|
|
72
53
|
* @readonly
|
|
73
54
|
*/
|
|
74
55
|
MAX_VALUE,
|
|
75
56
|
/**
|
|
76
57
|
* Returns the smaller of two SafeUint values.
|
|
58
|
+
*
|
|
77
59
|
* @param a The first SafeUint.
|
|
78
60
|
* @param b The second SafeUint.
|
|
79
61
|
* @returns The minimum value as a SafeUint.
|
|
@@ -81,6 +63,7 @@ const SafeUint = {
|
|
|
81
63
|
min: min_,
|
|
82
64
|
/**
|
|
83
65
|
* Returns the larger of two SafeUint values.
|
|
66
|
+
*
|
|
84
67
|
* @param a The first SafeUint.
|
|
85
68
|
* @param b The second SafeUint.
|
|
86
69
|
* @returns The maximum value as a SafeUint.
|
|
@@ -88,17 +71,20 @@ const SafeUint = {
|
|
|
88
71
|
max: max_,
|
|
89
72
|
/**
|
|
90
73
|
* Clamps a number to the safe unsigned integer range.
|
|
74
|
+
*
|
|
91
75
|
* @param value The number to clamp.
|
|
92
76
|
* @returns The value clamped to [0, MAX_SAFE_INTEGER] as a SafeUint.
|
|
93
77
|
*/
|
|
94
78
|
clamp,
|
|
95
79
|
/**
|
|
96
80
|
* Generates a random SafeUint value within the valid range.
|
|
81
|
+
*
|
|
97
82
|
* @returns A random SafeUint between 0 and MAX_SAFE_INTEGER.
|
|
98
83
|
*/
|
|
99
84
|
random,
|
|
100
85
|
/**
|
|
101
86
|
* Raises a SafeUint to the power of another SafeUint.
|
|
87
|
+
*
|
|
102
88
|
* @param a The base SafeUint.
|
|
103
89
|
* @param b The exponent SafeUint.
|
|
104
90
|
* @returns `a ** b` clamped to [0, MAX_SAFE_INTEGER] as a SafeUint.
|
|
@@ -106,6 +92,7 @@ const SafeUint = {
|
|
|
106
92
|
pow,
|
|
107
93
|
/**
|
|
108
94
|
* Adds two SafeUint values.
|
|
95
|
+
*
|
|
109
96
|
* @param a The first SafeUint.
|
|
110
97
|
* @param b The second SafeUint.
|
|
111
98
|
* @returns `a + b` clamped to [0, MAX_SAFE_INTEGER] as a SafeUint.
|
|
@@ -113,13 +100,16 @@ const SafeUint = {
|
|
|
113
100
|
add,
|
|
114
101
|
/**
|
|
115
102
|
* Subtracts one SafeUint from another.
|
|
103
|
+
*
|
|
116
104
|
* @param a The minuend SafeUint.
|
|
117
105
|
* @param b The subtrahend SafeUint.
|
|
118
|
-
* @returns `a - b` clamped to [0, MAX_SAFE_INTEGER] as a SafeUint (minimum
|
|
106
|
+
* @returns `a - b` clamped to [0, MAX_SAFE_INTEGER] as a SafeUint (minimum
|
|
107
|
+
* 0).
|
|
119
108
|
*/
|
|
120
109
|
sub,
|
|
121
110
|
/**
|
|
122
111
|
* Multiplies two SafeUint values.
|
|
112
|
+
*
|
|
123
113
|
* @param a The first SafeUint.
|
|
124
114
|
* @param b The second SafeUint.
|
|
125
115
|
* @returns `a * b` clamped to [0, MAX_SAFE_INTEGER] as a SafeUint.
|
|
@@ -127,6 +117,7 @@ const SafeUint = {
|
|
|
127
117
|
mul,
|
|
128
118
|
/**
|
|
129
119
|
* Divides one SafeUint by another using floor division.
|
|
120
|
+
*
|
|
130
121
|
* @param a The dividend SafeUint.
|
|
131
122
|
* @param b The divisor SafeUint.
|
|
132
123
|
* @returns `⌊a / b⌋` clamped to [0, MAX_SAFE_INTEGER] as a SafeUint.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-uint.mjs","sources":["../../../src/number/branded-types/safe-uint.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,MAAM,iBAAiB,GAAG,6BAA6B;AAEvD,MAAM,EACJ,SAAS,EACT,SAAS,EACT,GAAG,
|
|
1
|
+
{"version":3,"file":"safe-uint.mjs","sources":["../../../src/number/branded-types/safe-uint.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,MAAM,iBAAiB,GAAG,6BAA6B;AAEvD,MAAM,EACJ,SAAS,EACT,SAAS,EACT,GAAG,EACH,QAAQ,EACR,KAAK,EACL,GAAG,EACH,EAAE,EACF,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,EACT,GAAG,EACH,GAAG,EACH,MAAM,EACN,GAAG,GACJ,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,mBAAmB,CAI7D;AACA,IAAA,oBAAoB,EAAE,aAAa;AACnC,IAAA,SAAS,EAAE,CAAC;;IAEZ,SAAS,EAAE,MAAM,CAAC,gBAA4B;IAC9C,iBAAiB;AACT,CAAA,CAAC;AAEX;;;;;AAKG;AACI,MAAM,UAAU,GAAG;AAE1B;;;;;;AAMG;AACI,MAAM,UAAU,GAAG;AAE1B;;;;;;;;AAQG;AACI,MAAM,QAAQ,GAAG;AACtB;;;;;;AAMG;IACH,EAAE;AAEF;;;;AAIG;IACH,SAAS;AAET;;;;AAIG;IACH,SAAS;AAET;;;;;;AAMG;AACH,IAAA,GAAG,EAAE,IAAI;AAET;;;;;;AAMG;AACH,IAAA,GAAG,EAAE,IAAI;AAET;;;;;AAKG;IACH,KAAK;AAEL;;;;AAIG;IACH,MAAM;AAEN;;;;;;AAMG;IACH,GAAG;AAEH;;;;;;AAMG;IACH,GAAG;AAEH;;;;;;;AAOG;IACH,GAAG;AAEH;;;;;;AAMG;IACH,GAAG;AAEH;;;;;;AAMG;IACH,GAAG;;;;;"}
|
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Checks if a number is a Uint.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* assert.ok(isUint(4));
|
|
8
|
+
* assert.notOk(isUint(-1));
|
|
9
|
+
* assert.ok(Uint.is(0));
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
3
12
|
* @param value The value to check.
|
|
4
13
|
* @returns `true` if the value is a Uint, `false` otherwise.
|
|
5
14
|
*/
|
|
6
15
|
export declare const isUint: (a: number) => a is NonNegativeInt;
|
|
7
16
|
/**
|
|
8
17
|
* Casts a number to a Uint type.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* const branded = asUint(12);
|
|
23
|
+
*
|
|
24
|
+
* assert(branded === 12);
|
|
25
|
+
* assert.ok(Uint.is(branded));
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
9
28
|
* @param value The value to cast.
|
|
10
29
|
* @returns The value as a Uint type.
|
|
11
30
|
* @throws {TypeError} If the value is not a non-negative integer.
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* const x = asUint(5); // Uint
|
|
15
|
-
* const y = asUint(0); // Uint
|
|
16
|
-
* // asUint(-1); // throws TypeError
|
|
17
|
-
* // asUint(1.5); // throws TypeError
|
|
18
|
-
* ```
|
|
19
31
|
*/
|
|
20
32
|
export declare const asUint: <N extends number>(x: N) => number & {
|
|
21
33
|
readonly NaNValue: false;
|
|
@@ -32,44 +44,44 @@ export declare const asUint: <N extends number>(x: N) => number & {
|
|
|
32
44
|
/**
|
|
33
45
|
* Namespace providing type-safe arithmetic operations for unsigned integers.
|
|
34
46
|
*
|
|
35
|
-
* All operations maintain the non-negative constraint by clamping negative
|
|
36
|
-
* This ensures that all arithmetic preserves the unsigned integer
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* ```typescript
|
|
40
|
-
* const a = asUint(100);
|
|
41
|
-
* const b = asUint(150);
|
|
42
|
-
*
|
|
43
|
-
* // Arithmetic operations with non-negative clamping
|
|
44
|
-
* const sum = Uint.add(a, b); // Uint (250)
|
|
45
|
-
* const diff = Uint.sub(a, b); // Uint (0 - clamped to MIN_VALUE)
|
|
46
|
-
* const product = Uint.mul(a, b); // Uint (15000)
|
|
47
|
-
* const quotient = Uint.div(b, a); // Uint (1)
|
|
48
|
-
*
|
|
49
|
-
* // Range operations
|
|
50
|
-
* const clamped = Uint.clamp(-50); // Uint (0)
|
|
51
|
-
* const minimum = Uint.min(a, b); // Uint (100)
|
|
52
|
-
* const maximum = Uint.max(a, b); // Uint (150)
|
|
53
|
-
*
|
|
54
|
-
* // Utility operations
|
|
55
|
-
* const random = Uint.random(); // Uint (random non-negative integer)
|
|
56
|
-
* const power = Uint.pow(asUint(2), asUint(8)); // Uint (256)
|
|
57
|
-
* ```
|
|
47
|
+
* All operations maintain the non-negative constraint by clamping negative
|
|
48
|
+
* results to 0. This ensures that all arithmetic preserves the unsigned integer
|
|
49
|
+
* property.
|
|
58
50
|
*/
|
|
59
51
|
export declare const Uint: {
|
|
60
52
|
/**
|
|
61
53
|
* Type guard to check if a value is a Uint.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
*
|
|
57
|
+
* ```ts
|
|
58
|
+
* assert.ok(isUint(4));
|
|
59
|
+
* assert.notOk(isUint(-1));
|
|
60
|
+
* assert.ok(Uint.is(0));
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
62
63
|
* @param value The value to check.
|
|
63
64
|
* @returns `true` if the value is a non-negative integer, `false` otherwise.
|
|
65
|
+
* @see {@link isUint} for usage examples
|
|
64
66
|
*/
|
|
65
67
|
readonly is: (a: number) => a is NonNegativeInt;
|
|
66
68
|
/**
|
|
67
69
|
* The minimum value for an unsigned integer.
|
|
70
|
+
*
|
|
68
71
|
* @readonly
|
|
69
72
|
*/
|
|
70
73
|
readonly MIN_VALUE: 0;
|
|
71
74
|
/**
|
|
72
75
|
* Returns the smaller of two Uint values.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
*
|
|
79
|
+
* ```ts
|
|
80
|
+
* const smallest = Uint.min(asUint(7), asUint(3));
|
|
81
|
+
*
|
|
82
|
+
* assert(smallest === 3);
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
73
85
|
* @param a The first Uint.
|
|
74
86
|
* @param b The second Uint.
|
|
75
87
|
* @returns The minimum value as a Uint.
|
|
@@ -77,6 +89,15 @@ export declare const Uint: {
|
|
|
77
89
|
readonly min: (...values: readonly WithSmallInt<NonNegativeInt, 40>[]) => NonNegativeInt;
|
|
78
90
|
/**
|
|
79
91
|
* Returns the larger of two Uint values.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* const largest = Uint.max(asUint(7), asUint(3));
|
|
97
|
+
*
|
|
98
|
+
* assert(largest === 7);
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
80
101
|
* @param a The first Uint.
|
|
81
102
|
* @param b The second Uint.
|
|
82
103
|
* @returns The maximum value as a Uint.
|
|
@@ -84,17 +105,51 @@ export declare const Uint: {
|
|
|
84
105
|
readonly max: (...values: readonly WithSmallInt<NonNegativeInt, 40>[]) => NonNegativeInt;
|
|
85
106
|
/**
|
|
86
107
|
* Clamps a number to the Uint range (non-negative).
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
*
|
|
111
|
+
* ```ts
|
|
112
|
+
* const clampedNegative = Uint.clamp(-5);
|
|
113
|
+
* const clampedPositive = Uint.clamp(42);
|
|
114
|
+
*
|
|
115
|
+
* assert(clampedNegative === 0);
|
|
116
|
+
* assert(clampedPositive === 42);
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
87
119
|
* @param value The number to clamp.
|
|
88
120
|
* @returns The value clamped to [0, +∞) as a Uint.
|
|
89
121
|
*/
|
|
90
122
|
readonly clamp: (x: number) => NonNegativeInt;
|
|
91
123
|
/**
|
|
92
124
|
* Generates a random Uint value.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
*
|
|
128
|
+
* ```ts
|
|
129
|
+
* const min = asUint(0);
|
|
130
|
+
* const max = asUint(3);
|
|
131
|
+
* const randomValue = Uint.random(min, max);
|
|
132
|
+
*
|
|
133
|
+
* assert.ok(Uint.is(randomValue));
|
|
134
|
+
* assert.ok(randomValue >= 0 && randomValue <= 3);
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
93
137
|
* @returns A random non-negative integer as a Uint.
|
|
94
138
|
*/
|
|
95
139
|
readonly random: (min?: WithSmallInt<NonNegativeInt, 40> | undefined, max?: WithSmallInt<NonNegativeInt, 40> | undefined) => NonNegativeInt;
|
|
96
140
|
/**
|
|
97
141
|
* Raises a Uint to the power of another Uint.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
*
|
|
145
|
+
* ```ts
|
|
146
|
+
* const base = asUint(2);
|
|
147
|
+
* const exponent = asUint(5);
|
|
148
|
+
* const power = Uint.pow(base, exponent);
|
|
149
|
+
*
|
|
150
|
+
* assert(power === 32);
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
98
153
|
* @param a The base Uint.
|
|
99
154
|
* @param b The exponent Uint.
|
|
100
155
|
* @returns `a ** b` clamped to [0, +∞) as a Uint.
|
|
@@ -102,6 +157,15 @@ export declare const Uint: {
|
|
|
102
157
|
readonly pow: (x: WithSmallInt<NonNegativeInt, 40>, y: WithSmallInt<NonNegativeInt, 40>) => NonNegativeInt;
|
|
103
158
|
/**
|
|
104
159
|
* Adds two Uint values.
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
*
|
|
163
|
+
* ```ts
|
|
164
|
+
* const sum = Uint.add(asUint(5), asUint(8));
|
|
165
|
+
*
|
|
166
|
+
* assert(sum === 13);
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
105
169
|
* @param a The first Uint.
|
|
106
170
|
* @param b The second Uint.
|
|
107
171
|
* @returns `a + b` clamped to [0, +∞) as a Uint.
|
|
@@ -109,6 +173,15 @@ export declare const Uint: {
|
|
|
109
173
|
readonly add: (x: WithSmallInt<NonNegativeInt, 40>, y: WithSmallInt<NonNegativeInt, 40>) => NonNegativeInt;
|
|
110
174
|
/**
|
|
111
175
|
* Subtracts one Uint from another.
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
*
|
|
179
|
+
* ```ts
|
|
180
|
+
* const difference = Uint.sub(asUint(5), asUint(8));
|
|
181
|
+
*
|
|
182
|
+
* assert(difference === 0);
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
112
185
|
* @param a The minuend Uint.
|
|
113
186
|
* @param b The subtrahend Uint.
|
|
114
187
|
* @returns `a - b` clamped to [0, +∞) as a Uint (minimum 0).
|
|
@@ -116,6 +189,15 @@ export declare const Uint: {
|
|
|
116
189
|
readonly sub: (x: WithSmallInt<NonNegativeInt, 40>, y: WithSmallInt<NonNegativeInt, 40>) => NonNegativeInt;
|
|
117
190
|
/**
|
|
118
191
|
* Multiplies two Uint values.
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
*
|
|
195
|
+
* ```ts
|
|
196
|
+
* const product = Uint.mul(asUint(7), asUint(6));
|
|
197
|
+
*
|
|
198
|
+
* assert(product === 42);
|
|
199
|
+
* ```
|
|
200
|
+
*
|
|
119
201
|
* @param a The first Uint.
|
|
120
202
|
* @param b The second Uint.
|
|
121
203
|
* @returns `a * b` clamped to [0, +∞) as a Uint.
|
|
@@ -123,6 +205,15 @@ export declare const Uint: {
|
|
|
123
205
|
readonly mul: (x: WithSmallInt<NonNegativeInt, 40>, y: WithSmallInt<NonNegativeInt, 40>) => NonNegativeInt;
|
|
124
206
|
/**
|
|
125
207
|
* Divides one Uint by another using floor division.
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
*
|
|
211
|
+
* ```ts
|
|
212
|
+
* const quotient = Uint.div(asUint(10), asUint(4));
|
|
213
|
+
*
|
|
214
|
+
* assert(quotient === 2);
|
|
215
|
+
* ```
|
|
216
|
+
*
|
|
126
217
|
* @param a The dividend Uint.
|
|
127
218
|
* @param b The divisor Uint.
|
|
128
219
|
* @returns `⌊a / b⌋` clamped to [0, +∞) as a Uint.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uint.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/uint.mts"],"names":[],"mappings":"AA+BA
|
|
1
|
+
{"version":3,"file":"uint.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/uint.mts"],"names":[],"mappings":"AA+BA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,oCAAK,CAAC;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;MAAW,CAAC;AAE/B;;;;;;GAMG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;OAcG;;IAGH;;;;OAIG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;;OAeG;;IAGH;;;;;;;;;;;;;;;OAeG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;OAcG;;;;;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
2
2
|
|
|
3
3
|
const typeNameInMessage = 'a non-negative integer';
|
|
4
|
-
const { MIN_VALUE,
|
|
4
|
+
const { MIN_VALUE, add, castType, clamp, div, is, max: max_, min: min_, mul, pow, random, sub, } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger({
|
|
5
5
|
integerOrSafeInteger: 'Integer',
|
|
6
6
|
MIN_VALUE: 0,
|
|
7
7
|
MAX_VALUE: Number.MAX_VALUE,
|
|
@@ -9,65 +9,77 @@ const { MIN_VALUE, min: min_, max: max_, pow, add, sub, mul, div, random, is, ca
|
|
|
9
9
|
});
|
|
10
10
|
/**
|
|
11
11
|
* Checks if a number is a Uint.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* assert.ok(isUint(4));
|
|
17
|
+
* assert.notOk(isUint(-1));
|
|
18
|
+
* assert.ok(Uint.is(0));
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
12
21
|
* @param value The value to check.
|
|
13
22
|
* @returns `true` if the value is a Uint, `false` otherwise.
|
|
14
23
|
*/
|
|
15
24
|
const isUint = is;
|
|
16
25
|
/**
|
|
17
26
|
* Casts a number to a Uint type.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* const branded = asUint(12);
|
|
32
|
+
*
|
|
33
|
+
* assert(branded === 12);
|
|
34
|
+
* assert.ok(Uint.is(branded));
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
18
37
|
* @param value The value to cast.
|
|
19
38
|
* @returns The value as a Uint type.
|
|
20
39
|
* @throws {TypeError} If the value is not a non-negative integer.
|
|
21
|
-
* @example
|
|
22
|
-
* ```typescript
|
|
23
|
-
* const x = asUint(5); // Uint
|
|
24
|
-
* const y = asUint(0); // Uint
|
|
25
|
-
* // asUint(-1); // throws TypeError
|
|
26
|
-
* // asUint(1.5); // throws TypeError
|
|
27
|
-
* ```
|
|
28
40
|
*/
|
|
29
41
|
const asUint = castType;
|
|
30
42
|
/**
|
|
31
43
|
* Namespace providing type-safe arithmetic operations for unsigned integers.
|
|
32
44
|
*
|
|
33
|
-
* All operations maintain the non-negative constraint by clamping negative
|
|
34
|
-
* This ensures that all arithmetic preserves the unsigned integer
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```typescript
|
|
38
|
-
* const a = asUint(100);
|
|
39
|
-
* const b = asUint(150);
|
|
40
|
-
*
|
|
41
|
-
* // Arithmetic operations with non-negative clamping
|
|
42
|
-
* const sum = Uint.add(a, b); // Uint (250)
|
|
43
|
-
* const diff = Uint.sub(a, b); // Uint (0 - clamped to MIN_VALUE)
|
|
44
|
-
* const product = Uint.mul(a, b); // Uint (15000)
|
|
45
|
-
* const quotient = Uint.div(b, a); // Uint (1)
|
|
46
|
-
*
|
|
47
|
-
* // Range operations
|
|
48
|
-
* const clamped = Uint.clamp(-50); // Uint (0)
|
|
49
|
-
* const minimum = Uint.min(a, b); // Uint (100)
|
|
50
|
-
* const maximum = Uint.max(a, b); // Uint (150)
|
|
51
|
-
*
|
|
52
|
-
* // Utility operations
|
|
53
|
-
* const random = Uint.random(); // Uint (random non-negative integer)
|
|
54
|
-
* const power = Uint.pow(asUint(2), asUint(8)); // Uint (256)
|
|
55
|
-
* ```
|
|
45
|
+
* All operations maintain the non-negative constraint by clamping negative
|
|
46
|
+
* results to 0. This ensures that all arithmetic preserves the unsigned integer
|
|
47
|
+
* property.
|
|
56
48
|
*/
|
|
57
49
|
const Uint = {
|
|
58
50
|
/**
|
|
59
51
|
* Type guard to check if a value is a Uint.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
*
|
|
55
|
+
* ```ts
|
|
56
|
+
* assert.ok(isUint(4));
|
|
57
|
+
* assert.notOk(isUint(-1));
|
|
58
|
+
* assert.ok(Uint.is(0));
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
60
61
|
* @param value The value to check.
|
|
61
62
|
* @returns `true` if the value is a non-negative integer, `false` otherwise.
|
|
63
|
+
* @see {@link isUint} for usage examples
|
|
62
64
|
*/
|
|
63
65
|
is,
|
|
64
66
|
/**
|
|
65
67
|
* The minimum value for an unsigned integer.
|
|
68
|
+
*
|
|
66
69
|
* @readonly
|
|
67
70
|
*/
|
|
68
71
|
MIN_VALUE,
|
|
69
72
|
/**
|
|
70
73
|
* Returns the smaller of two Uint values.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
*
|
|
77
|
+
* ```ts
|
|
78
|
+
* const smallest = Uint.min(asUint(7), asUint(3));
|
|
79
|
+
*
|
|
80
|
+
* assert(smallest === 3);
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
71
83
|
* @param a The first Uint.
|
|
72
84
|
* @param b The second Uint.
|
|
73
85
|
* @returns The minimum value as a Uint.
|
|
@@ -75,6 +87,15 @@ const Uint = {
|
|
|
75
87
|
min: min_,
|
|
76
88
|
/**
|
|
77
89
|
* Returns the larger of two Uint values.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
*
|
|
93
|
+
* ```ts
|
|
94
|
+
* const largest = Uint.max(asUint(7), asUint(3));
|
|
95
|
+
*
|
|
96
|
+
* assert(largest === 7);
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
78
99
|
* @param a The first Uint.
|
|
79
100
|
* @param b The second Uint.
|
|
80
101
|
* @returns The maximum value as a Uint.
|
|
@@ -82,17 +103,51 @@ const Uint = {
|
|
|
82
103
|
max: max_,
|
|
83
104
|
/**
|
|
84
105
|
* Clamps a number to the Uint range (non-negative).
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
*
|
|
109
|
+
* ```ts
|
|
110
|
+
* const clampedNegative = Uint.clamp(-5);
|
|
111
|
+
* const clampedPositive = Uint.clamp(42);
|
|
112
|
+
*
|
|
113
|
+
* assert(clampedNegative === 0);
|
|
114
|
+
* assert(clampedPositive === 42);
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
85
117
|
* @param value The number to clamp.
|
|
86
118
|
* @returns The value clamped to [0, +∞) as a Uint.
|
|
87
119
|
*/
|
|
88
120
|
clamp,
|
|
89
121
|
/**
|
|
90
122
|
* Generates a random Uint value.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
*
|
|
126
|
+
* ```ts
|
|
127
|
+
* const min = asUint(0);
|
|
128
|
+
* const max = asUint(3);
|
|
129
|
+
* const randomValue = Uint.random(min, max);
|
|
130
|
+
*
|
|
131
|
+
* assert.ok(Uint.is(randomValue));
|
|
132
|
+
* assert.ok(randomValue >= 0 && randomValue <= 3);
|
|
133
|
+
* ```
|
|
134
|
+
*
|
|
91
135
|
* @returns A random non-negative integer as a Uint.
|
|
92
136
|
*/
|
|
93
137
|
random,
|
|
94
138
|
/**
|
|
95
139
|
* Raises a Uint to the power of another Uint.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
*
|
|
143
|
+
* ```ts
|
|
144
|
+
* const base = asUint(2);
|
|
145
|
+
* const exponent = asUint(5);
|
|
146
|
+
* const power = Uint.pow(base, exponent);
|
|
147
|
+
*
|
|
148
|
+
* assert(power === 32);
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
96
151
|
* @param a The base Uint.
|
|
97
152
|
* @param b The exponent Uint.
|
|
98
153
|
* @returns `a ** b` clamped to [0, +∞) as a Uint.
|
|
@@ -100,6 +155,15 @@ const Uint = {
|
|
|
100
155
|
pow,
|
|
101
156
|
/**
|
|
102
157
|
* Adds two Uint values.
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
*
|
|
161
|
+
* ```ts
|
|
162
|
+
* const sum = Uint.add(asUint(5), asUint(8));
|
|
163
|
+
*
|
|
164
|
+
* assert(sum === 13);
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
103
167
|
* @param a The first Uint.
|
|
104
168
|
* @param b The second Uint.
|
|
105
169
|
* @returns `a + b` clamped to [0, +∞) as a Uint.
|
|
@@ -107,6 +171,15 @@ const Uint = {
|
|
|
107
171
|
add,
|
|
108
172
|
/**
|
|
109
173
|
* Subtracts one Uint from another.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
*
|
|
177
|
+
* ```ts
|
|
178
|
+
* const difference = Uint.sub(asUint(5), asUint(8));
|
|
179
|
+
*
|
|
180
|
+
* assert(difference === 0);
|
|
181
|
+
* ```
|
|
182
|
+
*
|
|
110
183
|
* @param a The minuend Uint.
|
|
111
184
|
* @param b The subtrahend Uint.
|
|
112
185
|
* @returns `a - b` clamped to [0, +∞) as a Uint (minimum 0).
|
|
@@ -114,6 +187,15 @@ const Uint = {
|
|
|
114
187
|
sub,
|
|
115
188
|
/**
|
|
116
189
|
* Multiplies two Uint values.
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
*
|
|
193
|
+
* ```ts
|
|
194
|
+
* const product = Uint.mul(asUint(7), asUint(6));
|
|
195
|
+
*
|
|
196
|
+
* assert(product === 42);
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
117
199
|
* @param a The first Uint.
|
|
118
200
|
* @param b The second Uint.
|
|
119
201
|
* @returns `a * b` clamped to [0, +∞) as a Uint.
|
|
@@ -121,6 +203,15 @@ const Uint = {
|
|
|
121
203
|
mul,
|
|
122
204
|
/**
|
|
123
205
|
* Divides one Uint by another using floor division.
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
*
|
|
209
|
+
* ```ts
|
|
210
|
+
* const quotient = Uint.div(asUint(10), asUint(4));
|
|
211
|
+
*
|
|
212
|
+
* assert(quotient === 2);
|
|
213
|
+
* ```
|
|
214
|
+
*
|
|
124
215
|
* @param a The dividend Uint.
|
|
125
216
|
* @param b The divisor Uint.
|
|
126
217
|
* @returns `⌊a / b⌋` clamped to [0, +∞) as a Uint.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uint.mjs","sources":["../../../src/number/branded-types/uint.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,MAAM,iBAAiB,GAAG,wBAAwB;AAElD,MAAM,EACJ,SAAS,EACT,GAAG,
|
|
1
|
+
{"version":3,"file":"uint.mjs","sources":["../../../src/number/branded-types/uint.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,MAAM,iBAAiB,GAAG,wBAAwB;AAElD,MAAM,EACJ,SAAS,EACT,GAAG,EACH,QAAQ,EACR,KAAK,EACL,GAAG,EACH,EAAE,EACF,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,EACT,GAAG,EACH,GAAG,EACH,MAAM,EACN,GAAG,GACJ,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,mBAAmB,CAI7D;AACA,IAAA,oBAAoB,EAAE,SAAS;AAC/B,IAAA,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,SAAS;IAC3B,iBAAiB;AACT,CAAA,CAAC;AAEX;;;;;;;;;;;;;AAaG;AACI,MAAM,MAAM,GAAG;AAEtB;;;;;;;;;;;;;;;AAeG;AACI,MAAM,MAAM,GAAG;AAEtB;;;;;;AAMG;AACI,MAAM,IAAI,GAAG;AAClB;;;;;;;;;;;;;;AAcG;IACH,EAAE;AAEF;;;;AAIG;IACH,SAAS;AAET;;;;;;;;;;;;;;AAcG;AACH,IAAA,GAAG,EAAE,IAAI;AAET;;;;;;;;;;;;;;AAcG;AACH,IAAA,GAAG,EAAE,IAAI;AAET;;;;;;;;;;;;;;;AAeG;IACH,KAAK;AAEL;;;;;;;;;;;;;;;AAeG;IACH,MAAM;AAEN;;;;;;;;;;;;;;;;AAgBG;IACH,GAAG;AAEH;;;;;;;;;;;;;;AAcG;IACH,GAAG;AAEH;;;;;;;;;;;;;;AAcG;IACH,GAAG;AAEH;;;;;;;;;;;;;;AAcG;IACH,GAAG;AAEH;;;;;;;;;;;;;;AAcG;IACH,GAAG;;;;;"}
|