ts-data-forge 3.3.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -13
- package/dist/array/impl/array-utils-creation.d.mts +116 -0
- package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-creation.mjs +110 -0
- package/dist/array/impl/array-utils-creation.mjs.map +1 -0
- package/dist/array/impl/array-utils-element-access.d.mts +61 -0
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
- package/dist/array/impl/array-utils-element-access.mjs +66 -0
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
- package/dist/array/impl/array-utils-iterators.d.mts +59 -0
- package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
- package/dist/array/impl/array-utils-iterators.mjs +104 -0
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
- package/dist/array/impl/array-utils-modification.d.mts +154 -0
- package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
- package/dist/array/impl/array-utils-modification.mjs +139 -0
- package/dist/array/impl/array-utils-modification.mjs.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
- package/dist/array/impl/array-utils-search.d.mts +179 -0
- package/dist/array/impl/array-utils-search.d.mts.map +1 -0
- package/dist/array/impl/array-utils-search.mjs +153 -0
- package/dist/array/impl/array-utils-search.mjs.map +1 -0
- package/dist/array/impl/array-utils-set-op.d.mts +100 -0
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
- package/dist/array/impl/array-utils-set-op.mjs +137 -0
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
- package/dist/array/impl/array-utils-size.d.mts +24 -0
- package/dist/array/impl/array-utils-size.d.mts.map +1 -0
- package/dist/array/impl/array-utils-size.mjs +28 -0
- package/dist/array/impl/array-utils-size.mjs.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
- package/dist/array/impl/array-utils-slicing.d.mts +120 -0
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slicing.mjs +140 -0
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
- package/dist/array/impl/array-utils-transformation.d.mts +348 -0
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-transformation.mjs +331 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
- package/dist/array/impl/array-utils-validation.d.mts +149 -0
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-validation.mjs +166 -0
- package/dist/array/impl/array-utils-validation.mjs.map +1 -0
- package/dist/array/impl/index.d.mts +13 -0
- package/dist/array/impl/index.d.mts.map +1 -0
- package/dist/array/impl/index.mjs +13 -0
- package/dist/array/impl/index.mjs.map +1 -0
- package/dist/array/index.d.mts +1 -1
- package/dist/array/index.d.mts.map +1 -1
- package/dist/array/index.mjs +2 -1
- package/dist/array/index.mjs.map +1 -1
- package/dist/collections/imap-mapped.d.mts +83 -253
- package/dist/collections/imap-mapped.d.mts.map +1 -1
- package/dist/collections/imap-mapped.mjs +33 -164
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +436 -163
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +74 -94
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +828 -345
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +200 -242
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +397 -205
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +102 -184
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts +155 -135
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +55 -156
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +154 -154
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +54 -203
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.d.mts +1 -0
- package/dist/entry-point.d.mts.map +1 -1
- package/dist/entry-point.mjs +2 -1
- package/dist/entry-point.mjs.map +1 -1
- package/dist/expect-type.d.mts +43 -172
- package/dist/expect-type.d.mts.map +1 -1
- package/dist/expect-type.mjs +43 -172
- package/dist/expect-type.mjs.map +1 -1
- package/dist/functional/match.d.mts +35 -140
- package/dist/functional/match.d.mts.map +1 -1
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional.d.mts +282 -160
- package/dist/functional/optional.d.mts.map +1 -1
- package/dist/functional/optional.mjs +131 -71
- package/dist/functional/optional.mjs.map +1 -1
- package/dist/functional/pipe.d.mts +59 -113
- package/dist/functional/pipe.d.mts.map +1 -1
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result.d.mts +433 -332
- package/dist/functional/result.d.mts.map +1 -1
- package/dist/functional/result.mjs +233 -239
- package/dist/functional/result.mjs.map +1 -1
- package/dist/globals.d.mts +12 -5
- package/dist/guard/has-key.d.mts +23 -74
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +23 -74
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/is-non-empty-string.d.mts +20 -87
- package/dist/guard/is-non-empty-string.d.mts.map +1 -1
- package/dist/guard/is-non-empty-string.mjs +20 -87
- package/dist/guard/is-non-empty-string.mjs.map +1 -1
- package/dist/guard/is-non-null-object.d.mts +14 -84
- package/dist/guard/is-non-null-object.d.mts.map +1 -1
- package/dist/guard/is-non-null-object.mjs +14 -84
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-primitive.d.mts +13 -126
- package/dist/guard/is-primitive.d.mts.map +1 -1
- package/dist/guard/is-primitive.mjs +13 -126
- package/dist/guard/is-primitive.mjs.map +1 -1
- package/dist/guard/is-record.d.mts +21 -132
- package/dist/guard/is-record.d.mts.map +1 -1
- package/dist/guard/is-record.mjs +21 -132
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.d.mts +201 -238
- package/dist/guard/is-type.d.mts.map +1 -1
- package/dist/guard/is-type.mjs +201 -238
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.d.mts +22 -139
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +22 -139
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.d.mts +0 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/range.d.mts +29 -62
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts +191 -121
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +238 -136
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +24 -156
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +27 -159
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +122 -120
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +122 -120
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +22 -30
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +22 -30
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +22 -31
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +22 -31
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +24 -34
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +26 -35
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +15 -30
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +15 -30
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +27 -35
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +29 -36
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +29 -43
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +133 -123
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +133 -123
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +24 -35
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +24 -35
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +24 -35
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +24 -35
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +160 -34
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +24 -35
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +24 -35
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +26 -36
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +26 -36
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +140 -99
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +142 -101
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +24 -33
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +25 -34
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +121 -30
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +121 -30
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +26 -34
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +26 -34
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +26 -68
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +26 -68
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +37 -101
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +39 -170
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +45 -55
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +46 -155
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/num.d.mts +145 -206
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +143 -199
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +97 -21
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +91 -20
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +126 -208
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +68 -102
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/cast-mutable.d.mts +12 -88
- package/dist/others/cast-mutable.d.mts.map +1 -1
- package/dist/others/cast-mutable.mjs +13 -89
- package/dist/others/cast-mutable.mjs.map +1 -1
- package/dist/others/cast-readonly.d.mts +12 -168
- package/dist/others/cast-readonly.d.mts.map +1 -1
- package/dist/others/cast-readonly.mjs +13 -169
- package/dist/others/cast-readonly.mjs.map +1 -1
- package/dist/others/if-then.d.mts +6 -83
- package/dist/others/if-then.d.mts.map +1 -1
- package/dist/others/if-then.mjs +6 -83
- package/dist/others/if-then.mjs.map +1 -1
- package/dist/others/map-nullable.d.mts +12 -136
- package/dist/others/map-nullable.d.mts.map +1 -1
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.d.mts +14 -157
- package/dist/others/memoize-function.d.mts.map +1 -1
- package/dist/others/memoize-function.mjs +14 -157
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/tuple.d.mts +33 -151
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +33 -151
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.d.mts +11 -125
- package/dist/others/unknown-to-string.d.mts.map +1 -1
- package/dist/others/unknown-to-string.mjs +12 -126
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/promise.d.mts +33 -20
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +34 -21
- package/dist/promise/promise.mjs.map +1 -1
- package/package.json +47 -39
- package/src/array/impl/array-utils-creation.mts +192 -0
- package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
- package/src/array/impl/array-utils-element-access.mts +115 -0
- package/src/array/impl/array-utils-element-access.test.mts +151 -0
- package/src/array/impl/array-utils-iterators.mts +79 -0
- package/src/array/impl/array-utils-iterators.test.mts +98 -0
- package/src/array/impl/array-utils-modification.mts +434 -0
- package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
- package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
- package/src/array/impl/array-utils-reducing-value.mts +551 -0
- package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
- package/src/array/impl/array-utils-search.mts +509 -0
- package/src/array/impl/array-utils-search.test.mts +346 -0
- package/src/array/impl/array-utils-set-op.mts +166 -0
- package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
- package/src/array/impl/array-utils-size.mts +30 -0
- package/src/array/impl/array-utils-size.test.mts +9 -0
- package/src/array/impl/array-utils-slice-clamped.mts +51 -0
- package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
- package/src/array/impl/array-utils-slicing.mts +275 -0
- package/src/array/impl/array-utils-slicing.test.mts +158 -0
- package/src/array/impl/array-utils-transformation.mts +746 -0
- package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
- package/src/array/impl/array-utils-validation.mts +241 -0
- package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
- package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
- package/src/array/impl/index.mts +12 -0
- package/src/array/index.mts +1 -1
- package/src/collections/imap-mapped.mts +99 -265
- package/src/collections/imap.mts +477 -174
- package/src/collections/imap.test.mts +12 -19
- package/src/collections/iset-mapped.mts +892 -358
- package/src/collections/iset.mts +429 -213
- package/src/collections/queue.mts +174 -200
- package/src/collections/stack.mts +172 -245
- package/src/collections/stack.test.mts +9 -1
- package/src/entry-point.mts +1 -0
- package/src/expect-type.mts +43 -172
- package/src/functional/match.mts +35 -145
- package/src/functional/optional.mts +285 -163
- package/src/functional/optional.test.mts +4 -1
- package/src/functional/pipe.mts +60 -113
- package/src/functional/result.mts +452 -351
- package/src/functional/result.test.mts +9 -2
- package/src/globals.d.mts +12 -5
- package/src/guard/has-key.mts +23 -74
- package/src/guard/is-non-empty-string.mts +20 -87
- package/src/guard/is-non-null-object.mts +14 -84
- package/src/guard/is-non-null-object.test.mts +1 -1
- package/src/guard/is-primitive.mts +13 -126
- package/src/guard/is-primitive.test.mts +1 -1
- package/src/guard/is-record.mts +21 -132
- package/src/guard/is-type.mts +201 -238
- package/src/guard/is-type.test.mts +7 -7
- package/src/guard/key-is-in.mts +22 -139
- package/src/index.mts +0 -1
- package/src/iterator/range.mts +29 -62
- package/src/json/json.mts +202 -134
- package/src/json/json.test.mts +1 -3
- package/src/number/branded-types/finite-number.mts +27 -159
- package/src/number/branded-types/int.mts +122 -120
- package/src/number/branded-types/int16.mts +22 -30
- package/src/number/branded-types/int16.test.mts +24 -24
- package/src/number/branded-types/int32.mts +22 -31
- package/src/number/branded-types/int32.test.mts +39 -39
- package/src/number/branded-types/non-negative-finite-number.mts +31 -39
- package/src/number/branded-types/non-negative-int16.mts +24 -34
- package/src/number/branded-types/non-negative-int16.test.mts +16 -16
- package/src/number/branded-types/non-negative-int32.mts +26 -35
- package/src/number/branded-types/non-negative-int32.test.mts +30 -30
- package/src/number/branded-types/non-zero-finite-number.mts +25 -40
- package/src/number/branded-types/non-zero-int.mts +15 -30
- package/src/number/branded-types/non-zero-int16.mts +27 -35
- package/src/number/branded-types/non-zero-int16.test.mts +26 -26
- package/src/number/branded-types/non-zero-int32.mts +29 -36
- package/src/number/branded-types/non-zero-int32.test.mts +45 -42
- package/src/number/branded-types/non-zero-safe-int.mts +39 -40
- package/src/number/branded-types/non-zero-uint16.mts +24 -35
- package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
- package/src/number/branded-types/non-zero-uint32.mts +24 -35
- package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
- package/src/number/branded-types/positive-finite-number.mts +29 -43
- package/src/number/branded-types/positive-int.mts +134 -124
- package/src/number/branded-types/positive-int16.mts +24 -35
- package/src/number/branded-types/positive-int16.test.mts +14 -14
- package/src/number/branded-types/positive-int32.mts +24 -35
- package/src/number/branded-types/positive-int32.test.mts +26 -26
- package/src/number/branded-types/positive-safe-int.mts +160 -34
- package/src/number/branded-types/positive-uint16.mts +24 -35
- package/src/number/branded-types/positive-uint16.test.mts +16 -16
- package/src/number/branded-types/positive-uint32.mts +26 -36
- package/src/number/branded-types/positive-uint32.test.mts +31 -28
- package/src/number/branded-types/safe-int.mts +142 -101
- package/src/number/branded-types/safe-uint.mts +25 -34
- package/src/number/branded-types/uint.mts +121 -30
- package/src/number/branded-types/uint16.mts +26 -34
- package/src/number/branded-types/uint16.test.mts +16 -16
- package/src/number/branded-types/uint32.mts +26 -68
- package/src/number/branded-types/uint32.test.mts +28 -28
- package/src/number/enum/int8.mts +39 -170
- package/src/number/enum/uint8.mts +46 -155
- package/src/number/num.mts +157 -212
- package/src/number/num.test.mts +4 -4
- package/src/number/refined-number-utils.mts +109 -26
- package/src/object/object.mts +130 -212
- package/src/object/object.test.mts +29 -0
- package/src/others/cast-mutable.mts +13 -89
- package/src/others/cast-mutable.test.mts +80 -0
- package/src/others/cast-readonly.mts +13 -169
- package/src/others/if-then.mts +6 -83
- package/src/others/map-nullable.mts +12 -136
- package/src/others/map-nullable.test.mts +6 -6
- package/src/others/memoize-function.mts +14 -157
- package/src/others/tuple.mts +33 -151
- package/src/others/unknown-to-string.mts +12 -126
- package/src/others/unknown-to-string.test.mts +13 -1
- package/src/promise/promise.mts +34 -21
- package/src/promise/promise.test.mts +43 -0
- package/dist/array/array-utils.d.mts +0 -2956
- package/dist/array/array-utils.d.mts.map +0 -1
- package/dist/array/array-utils.mjs +0 -1838
- package/dist/array/array-utils.mjs.map +0 -1
- package/src/array/array-utils-search.test.mts +0 -169
- package/src/array/array-utils-slicing.test.mts +0 -274
- package/src/array/array-utils.mts +0 -4834
package/dist/guard/is-type.mjs
CHANGED
|
@@ -2,429 +2,392 @@
|
|
|
2
2
|
* Type guard that checks if a value is `undefined`.
|
|
3
3
|
*
|
|
4
4
|
* **Type Narrowing Behavior:**
|
|
5
|
+
*
|
|
5
6
|
* - Narrows the input type to `undefined` when `true`
|
|
6
7
|
* - Useful for explicit undefined checks
|
|
7
8
|
*
|
|
8
|
-
* @param u - The value to check
|
|
9
|
-
* @returns `true` if `u` is `undefined`, `false` otherwise.
|
|
10
|
-
* When `true`, TypeScript narrows the type to `undefined`.
|
|
11
|
-
*
|
|
12
9
|
* @example
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* // value is now typed as string
|
|
21
|
-
* console.log('Value length:', value.length);
|
|
22
|
-
* }
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const values: (number | undefined)[] = [1, undefined, 2];
|
|
13
|
+
*
|
|
14
|
+
* const undefinedValues = values.filter(isUndefined);
|
|
15
|
+
*
|
|
16
|
+
* assert.deepStrictEqual(undefinedValues, [undefined]);
|
|
23
17
|
* ```
|
|
18
|
+
*
|
|
19
|
+
* @param u - The value to check
|
|
20
|
+
* @returns `true` if `u` is `undefined`, `false` otherwise. When `true`,
|
|
21
|
+
* TypeScript narrows the type to `undefined`.
|
|
24
22
|
*/
|
|
25
23
|
const isUndefined = (u) => u === undefined;
|
|
26
24
|
/**
|
|
27
25
|
* Type guard that checks if a value is not `undefined`.
|
|
28
26
|
*
|
|
29
27
|
* **Type Narrowing Behavior:**
|
|
28
|
+
*
|
|
30
29
|
* - Excludes `undefined` from the input type when `true`
|
|
31
30
|
* - Preserves all other types in the union
|
|
32
31
|
* - Commonly used to filter out undefined values
|
|
33
32
|
*
|
|
34
|
-
* @template T - The type of the input value
|
|
35
|
-
* @param u - The value to check
|
|
36
|
-
* @returns `true` if `u` is not `undefined`, `false` otherwise.
|
|
37
|
-
* When `true`, TypeScript excludes `undefined` from the type.
|
|
38
|
-
*
|
|
39
33
|
* @example
|
|
40
|
-
* ```typescript
|
|
41
|
-
* const items: (string | undefined)[] = ['a', undefined, 'b', undefined, 'c'];
|
|
42
34
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* const values: (number | undefined)[] = [1, undefined, 2];
|
|
45
37
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* });
|
|
38
|
+
* const definedValues = values.filter(isNotUndefined);
|
|
39
|
+
*
|
|
40
|
+
* assert.deepStrictEqual(definedValues, [1, 2]);
|
|
50
41
|
* ```
|
|
42
|
+
*
|
|
43
|
+
* @template T - The type of the input value
|
|
44
|
+
* @param u - The value to check
|
|
45
|
+
* @returns `true` if `u` is not `undefined`, `false` otherwise. When `true`,
|
|
46
|
+
* TypeScript excludes `undefined` from the type.
|
|
51
47
|
*/
|
|
52
48
|
const isNotUndefined = (u) => u !== undefined;
|
|
53
49
|
/**
|
|
54
50
|
* Type guard that checks if a value is a boolean.
|
|
55
51
|
*
|
|
56
52
|
* **Type Narrowing Behavior:**
|
|
53
|
+
*
|
|
57
54
|
* - Narrows `unknown` to `boolean` when `true`
|
|
58
55
|
* - Preserves literal boolean types (`true | false`)
|
|
59
56
|
*
|
|
60
|
-
* @param u - The value to check
|
|
61
|
-
* @returns `true` if `u` is a boolean, `false` otherwise.
|
|
62
|
-
* When `true`, TypeScript narrows the type to `boolean`.
|
|
63
|
-
*
|
|
64
57
|
* @example
|
|
65
|
-
* ```typescript
|
|
66
|
-
* const userInput: unknown = parseInput();
|
|
67
58
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
59
|
+
* ```ts
|
|
60
|
+
* const flags: unknown[] = [true, 'no', false];
|
|
61
|
+
*
|
|
62
|
+
* const booleans = flags.filter(isBoolean);
|
|
63
|
+
*
|
|
64
|
+
* assert.deepStrictEqual(booleans, [true, false]);
|
|
72
65
|
* ```
|
|
66
|
+
*
|
|
67
|
+
* @param u - The value to check
|
|
68
|
+
* @returns `true` if `u` is a boolean, `false` otherwise. When `true`,
|
|
69
|
+
* TypeScript narrows the type to `boolean`.
|
|
73
70
|
*/
|
|
74
71
|
const isBoolean = (u) => typeof u === 'boolean';
|
|
75
72
|
/**
|
|
76
73
|
* Type guard that checks if a value is not a boolean.
|
|
77
74
|
*
|
|
78
75
|
* **Type Narrowing Behavior:**
|
|
76
|
+
*
|
|
79
77
|
* - Excludes `boolean` from the input type when `true`
|
|
80
78
|
* - Preserves all other types in the union
|
|
81
79
|
*
|
|
82
|
-
* @template T - The type of the input value
|
|
83
|
-
* @param u - The value to check
|
|
84
|
-
* @returns `true` if `u` is not a boolean, `false` otherwise.
|
|
85
|
-
* When `true`, TypeScript excludes `boolean` from the type.
|
|
86
|
-
*
|
|
87
80
|
* @example
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* const
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* }
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* const flags: unknown[] = [true, 'no', false];
|
|
84
|
+
*
|
|
85
|
+
* const nonBooleans = flags.filter(isNotBoolean);
|
|
86
|
+
*
|
|
87
|
+
* assert.deepStrictEqual(nonBooleans, ['no']);
|
|
96
88
|
* ```
|
|
89
|
+
*
|
|
90
|
+
* @template T - The type of the input value
|
|
91
|
+
* @param u - The value to check
|
|
92
|
+
* @returns `true` if `u` is not a boolean, `false` otherwise. When `true`,
|
|
93
|
+
* TypeScript excludes `boolean` from the type.
|
|
97
94
|
*/
|
|
98
95
|
const isNotBoolean = (u) => typeof u !== 'boolean';
|
|
99
96
|
/**
|
|
100
97
|
* Type guard that checks if a value is a number.
|
|
101
98
|
*
|
|
102
99
|
* **Type Narrowing Behavior:**
|
|
100
|
+
*
|
|
103
101
|
* - Narrows `unknown` to `number` when `true`
|
|
104
102
|
* - Includes `NaN`, `Infinity`, and `-Infinity` as valid numbers
|
|
105
103
|
* - Preserves literal number types when possible
|
|
106
104
|
*
|
|
107
|
-
* @param u - The value to check
|
|
108
|
-
* @returns `true` if `u` is a number, `false` otherwise.
|
|
109
|
-
* When `true`, TypeScript narrows the type to `number`.
|
|
110
|
-
*
|
|
111
105
|
* @example
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* // Note: this includes NaN and Infinity
|
|
120
|
-
* if (Number.isFinite(userInput)) {
|
|
121
|
-
* console.log('Finite number:', userInput);
|
|
122
|
-
* }
|
|
123
|
-
* }
|
|
106
|
+
*
|
|
107
|
+
* ```ts
|
|
108
|
+
* const mixed: unknown[] = [1, '2', 3];
|
|
109
|
+
*
|
|
110
|
+
* const numbers = mixed.filter(isNumber);
|
|
111
|
+
*
|
|
112
|
+
* assert.deepStrictEqual(numbers, [1, 3]);
|
|
124
113
|
* ```
|
|
114
|
+
*
|
|
115
|
+
* @param u - The value to check
|
|
116
|
+
* @returns `true` if `u` is a number, `false` otherwise. When `true`,
|
|
117
|
+
* TypeScript narrows the type to `number`.
|
|
125
118
|
*/
|
|
126
119
|
const isNumber = (u) => typeof u === 'number';
|
|
127
120
|
/**
|
|
128
121
|
* Type guard that checks if a value is not a number.
|
|
129
122
|
*
|
|
130
123
|
* **Type Narrowing Behavior:**
|
|
124
|
+
*
|
|
131
125
|
* - Excludes `number` from the input type when `true`
|
|
132
126
|
* - Preserves all other types in the union
|
|
133
127
|
*
|
|
134
|
-
* @template T - The type of the input value
|
|
135
|
-
* @param u - The value to check
|
|
136
|
-
* @returns `true` if `u` is not a number, `false` otherwise.
|
|
137
|
-
* When `true`, TypeScript excludes `number` from the type.
|
|
138
|
-
*
|
|
139
128
|
* @example
|
|
140
|
-
* ```typescript
|
|
141
|
-
* type Value = string | number | boolean;
|
|
142
|
-
* const values: Value[] = ['hello', 42, true, 3.14, false];
|
|
143
129
|
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
130
|
+
* ```ts
|
|
131
|
+
* const mixed: unknown[] = [1, '2', 3];
|
|
132
|
+
*
|
|
133
|
+
* const nonNumbers = mixed.filter(isNotNumber);
|
|
134
|
+
*
|
|
135
|
+
* assert.deepStrictEqual(nonNumbers, ['2']);
|
|
146
136
|
* ```
|
|
137
|
+
*
|
|
138
|
+
* @template T - The type of the input value
|
|
139
|
+
* @param u - The value to check
|
|
140
|
+
* @returns `true` if `u` is not a number, `false` otherwise. When `true`,
|
|
141
|
+
* TypeScript excludes `number` from the type.
|
|
147
142
|
*/
|
|
148
143
|
const isNotNumber = (u) => typeof u !== 'number';
|
|
149
144
|
/**
|
|
150
145
|
* Type guard that checks if a value is a bigint.
|
|
151
146
|
*
|
|
152
147
|
* **Type Narrowing Behavior:**
|
|
148
|
+
*
|
|
153
149
|
* - Narrows `unknown` to `bigint` when `true`
|
|
154
150
|
* - Identifies values created with `BigInt()` constructor or `n` suffix
|
|
155
151
|
*
|
|
156
|
-
* @param u - The value to check
|
|
157
|
-
* @returns `true` if `u` is a bigint, `false` otherwise.
|
|
158
|
-
* When `true`, TypeScript narrows the type to `bigint`.
|
|
159
|
-
*
|
|
160
152
|
* @example
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
* }
|
|
153
|
+
*
|
|
154
|
+
* ```ts
|
|
155
|
+
* const values: unknown[] = [1n, 2, 3n];
|
|
156
|
+
*
|
|
157
|
+
* const bigints = values.filter(isBigint);
|
|
158
|
+
*
|
|
159
|
+
* assert.deepStrictEqual(bigints, [1n, 3n]);
|
|
169
160
|
* ```
|
|
161
|
+
*
|
|
162
|
+
* @param u - The value to check
|
|
163
|
+
* @returns `true` if `u` is a bigint, `false` otherwise. When `true`,
|
|
164
|
+
* TypeScript narrows the type to `bigint`.
|
|
170
165
|
*/
|
|
171
166
|
const isBigint = (u) => typeof u === 'bigint';
|
|
172
167
|
/**
|
|
173
168
|
* Type guard that checks if a value is not a bigint.
|
|
174
169
|
*
|
|
175
170
|
* **Type Narrowing Behavior:**
|
|
171
|
+
*
|
|
176
172
|
* - Excludes `bigint` from the input type when `true`
|
|
177
173
|
* - Preserves all other types in the union
|
|
178
174
|
*
|
|
179
|
-
* @template T - The type of the input value
|
|
180
|
-
* @param u - The value to check
|
|
181
|
-
* @returns `true` if `u` is not a bigint, `false` otherwise.
|
|
182
|
-
* When `true`, TypeScript excludes `bigint` from the type.
|
|
183
|
-
*
|
|
184
175
|
* @example
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* const
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
* }
|
|
176
|
+
*
|
|
177
|
+
* ```ts
|
|
178
|
+
* const values: unknown[] = [1n, 2, 3n];
|
|
179
|
+
*
|
|
180
|
+
* const nonBigints = values.filter(isNotBigint);
|
|
181
|
+
*
|
|
182
|
+
* assert.deepStrictEqual(nonBigints, [2]);
|
|
193
183
|
* ```
|
|
184
|
+
*
|
|
185
|
+
* @template T - The type of the input value
|
|
186
|
+
* @param u - The value to check
|
|
187
|
+
* @returns `true` if `u` is not a bigint, `false` otherwise. When `true`,
|
|
188
|
+
* TypeScript excludes `bigint` from the type.
|
|
194
189
|
*/
|
|
195
190
|
const isNotBigint = (u) => typeof u !== 'bigint';
|
|
196
191
|
/**
|
|
197
192
|
* Type guard that checks if a value is a string.
|
|
198
193
|
*
|
|
199
194
|
* **Type Narrowing Behavior:**
|
|
195
|
+
*
|
|
200
196
|
* - Narrows `unknown` to `string` when `true`
|
|
201
197
|
* - Preserves literal string types when possible
|
|
202
198
|
* - Includes empty strings
|
|
203
199
|
*
|
|
204
|
-
* @param u - The value to check
|
|
205
|
-
* @returns `true` if `u` is a string, `false` otherwise.
|
|
206
|
-
* When `true`, TypeScript narrows the type to `string`.
|
|
207
|
-
*
|
|
208
200
|
* @example
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
* // You can further check for non-empty strings
|
|
218
|
-
* if (userInput.length > 0) {
|
|
219
|
-
* console.log('Non-empty string:', userInput);
|
|
220
|
-
* }
|
|
221
|
-
* }
|
|
201
|
+
*
|
|
202
|
+
* ```ts
|
|
203
|
+
* const values: unknown[] = ['Ada', 42, 'Lovelace'];
|
|
204
|
+
*
|
|
205
|
+
* const strings = values.filter(isString);
|
|
206
|
+
*
|
|
207
|
+
* assert.deepStrictEqual(strings, ['Ada', 'Lovelace']);
|
|
222
208
|
* ```
|
|
209
|
+
*
|
|
210
|
+
* @param u - The value to check
|
|
211
|
+
* @returns `true` if `u` is a string, `false` otherwise. When `true`,
|
|
212
|
+
* TypeScript narrows the type to `string`.
|
|
223
213
|
*/
|
|
224
214
|
const isString = (u) => typeof u === 'string';
|
|
225
215
|
/**
|
|
226
216
|
* Type guard that checks if a value is not a string.
|
|
227
217
|
*
|
|
228
218
|
* **Type Narrowing Behavior:**
|
|
219
|
+
*
|
|
229
220
|
* - Excludes `string` from the input type when `true`
|
|
230
221
|
* - Preserves all other types in the union
|
|
231
222
|
*
|
|
232
|
-
* @template T - The type of the input value
|
|
233
|
-
* @param u - The value to check
|
|
234
|
-
* @returns `true` if `u` is not a string, `false` otherwise.
|
|
235
|
-
* When `true`, TypeScript excludes `string` from the type.
|
|
236
|
-
*
|
|
237
223
|
* @example
|
|
238
|
-
* ```typescript
|
|
239
|
-
* type Value = string | number | boolean;
|
|
240
|
-
* const mixedValues: Value[] = ['hello', 42, true, 'world', 3.14];
|
|
241
224
|
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
225
|
+
* ```ts
|
|
226
|
+
* const values: unknown[] = ['Ada', 42, 'Lovelace'];
|
|
227
|
+
*
|
|
228
|
+
* const nonStrings = values.filter(isNotString);
|
|
229
|
+
*
|
|
230
|
+
* assert.deepStrictEqual(nonStrings, [42]);
|
|
244
231
|
* ```
|
|
232
|
+
*
|
|
233
|
+
* @template T - The type of the input value
|
|
234
|
+
* @param u - The value to check
|
|
235
|
+
* @returns `true` if `u` is not a string, `false` otherwise. When `true`,
|
|
236
|
+
* TypeScript excludes `string` from the type.
|
|
245
237
|
*/
|
|
246
238
|
const isNotString = (u) => typeof u !== 'string';
|
|
247
239
|
/**
|
|
248
240
|
* Type guard that checks if a value is a symbol.
|
|
249
241
|
*
|
|
250
242
|
* **Type Narrowing Behavior:**
|
|
243
|
+
*
|
|
251
244
|
* - Narrows `unknown` to `symbol` when `true`
|
|
252
245
|
* - Identifies values created with `Symbol()` constructor
|
|
253
246
|
*
|
|
254
|
-
* @param u - The value to check
|
|
255
|
-
* @returns `true` if `u` is a symbol, `false` otherwise.
|
|
256
|
-
* When `true`, TypeScript narrows the type to `symbol`.
|
|
257
|
-
*
|
|
258
247
|
* @example
|
|
259
|
-
*
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
248
|
+
*
|
|
249
|
+
* ```ts
|
|
250
|
+
* const id = Symbol('id');
|
|
251
|
+
* const shared = Symbol.for('shared');
|
|
252
|
+
* const tokens: unknown[] = [id, 'shared', shared];
|
|
253
|
+
*
|
|
254
|
+
* const symbols = tokens.filter(isSymbol);
|
|
255
|
+
*
|
|
256
|
+
* assert.deepStrictEqual(symbols, [id, shared]);
|
|
267
257
|
* ```
|
|
258
|
+
*
|
|
259
|
+
* @param u - The value to check
|
|
260
|
+
* @returns `true` if `u` is a symbol, `false` otherwise. When `true`,
|
|
261
|
+
* TypeScript narrows the type to `symbol`.
|
|
268
262
|
*/
|
|
269
263
|
const isSymbol = (u) => typeof u === 'symbol';
|
|
270
264
|
/**
|
|
271
265
|
* Type guard that checks if a value is not a symbol.
|
|
272
266
|
*
|
|
273
267
|
* **Type Narrowing Behavior:**
|
|
268
|
+
*
|
|
274
269
|
* - Excludes `symbol` from the input type when `true`
|
|
275
270
|
* - Preserves all other types in the union
|
|
276
271
|
*
|
|
277
|
-
* @template T - The type of the input value
|
|
278
|
-
* @param u - The value to check
|
|
279
|
-
* @returns `true` if `u` is not a symbol, `false` otherwise.
|
|
280
|
-
* When `true`, TypeScript excludes `symbol` from the type.
|
|
281
|
-
*
|
|
282
272
|
* @example
|
|
283
|
-
*
|
|
284
|
-
*
|
|
285
|
-
* const
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
273
|
+
*
|
|
274
|
+
* ```ts
|
|
275
|
+
* const id = Symbol('id');
|
|
276
|
+
* const tokens: unknown[] = [id, 'shared'];
|
|
277
|
+
*
|
|
278
|
+
* const nonSymbols = tokens.filter(isNotSymbol);
|
|
279
|
+
*
|
|
280
|
+
* assert.deepStrictEqual(nonSymbols, ['shared']);
|
|
291
281
|
* ```
|
|
282
|
+
*
|
|
283
|
+
* @template T - The type of the input value
|
|
284
|
+
* @param u - The value to check
|
|
285
|
+
* @returns `true` if `u` is not a symbol, `false` otherwise. When `true`,
|
|
286
|
+
* TypeScript excludes `symbol` from the type.
|
|
292
287
|
*/
|
|
293
288
|
const isNotSymbol = (u) => typeof u !== 'symbol';
|
|
294
289
|
/**
|
|
295
290
|
* Type guard that checks if a value is `null`.
|
|
296
291
|
*
|
|
297
292
|
* **Type Narrowing Behavior:**
|
|
293
|
+
*
|
|
298
294
|
* - Narrows the input type to `null` when `true`
|
|
299
295
|
* - Useful for explicit null checks
|
|
300
296
|
*
|
|
301
|
-
* @param u - The value to check
|
|
302
|
-
* @returns `true` if `u` is `null`, `false` otherwise.
|
|
303
|
-
* When `true`, TypeScript narrows the type to `null`.
|
|
304
|
-
*
|
|
305
297
|
* @example
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
* // value is now typed as string
|
|
314
|
-
* console.log('Value length:', value.length);
|
|
315
|
-
* }
|
|
298
|
+
*
|
|
299
|
+
* ```ts
|
|
300
|
+
* const values: readonly (number | null)[] = [null, 5] as const;
|
|
301
|
+
*
|
|
302
|
+
* const nullValues = values.filter(isNull);
|
|
303
|
+
*
|
|
304
|
+
* assert.deepStrictEqual(nullValues, [null]);
|
|
316
305
|
* ```
|
|
306
|
+
*
|
|
307
|
+
* @param u - The value to check
|
|
308
|
+
* @returns `true` if `u` is `null`, `false` otherwise. When `true`, TypeScript
|
|
309
|
+
* narrows the type to `null`.
|
|
317
310
|
*/
|
|
318
311
|
const isNull = (u) => u === null;
|
|
319
312
|
/**
|
|
320
313
|
* Type guard that checks if a value is not `null`.
|
|
321
314
|
*
|
|
322
315
|
* **Type Narrowing Behavior:**
|
|
316
|
+
*
|
|
323
317
|
* - Excludes `null` from the input type when `true`
|
|
324
318
|
* - Preserves all other types including `undefined`
|
|
325
319
|
* - Commonly used to filter out null values
|
|
326
320
|
*
|
|
327
|
-
* @template T - The type of the input value (which could be `null`)
|
|
328
|
-
* @param u - The value to check
|
|
329
|
-
* @returns `true` if `u` is not `null`, `false` otherwise.
|
|
330
|
-
* When `true`, TypeScript excludes `null` from the type.
|
|
331
|
-
*
|
|
332
321
|
* @example
|
|
333
|
-
* ```typescript
|
|
334
|
-
* const items: (string | null)[] = ['a', null, 'b', null, 'c'];
|
|
335
322
|
*
|
|
336
|
-
*
|
|
337
|
-
*
|
|
323
|
+
* ```ts
|
|
324
|
+
* const values: (number | null)[] = [null, 5];
|
|
325
|
+
*
|
|
326
|
+
* const nonNullValues = values.filter(isNotNull);
|
|
338
327
|
*
|
|
339
|
-
*
|
|
340
|
-
* // item is guaranteed to be string, not null
|
|
341
|
-
* console.log(item.toUpperCase());
|
|
342
|
-
* });
|
|
328
|
+
* assert.deepStrictEqual(nonNullValues, [5]);
|
|
343
329
|
* ```
|
|
330
|
+
*
|
|
331
|
+
* @template T - The type of the input value (which could be `null`)
|
|
332
|
+
* @param u - The value to check
|
|
333
|
+
* @returns `true` if `u` is not `null`, `false` otherwise. When `true`,
|
|
334
|
+
* TypeScript excludes `null` from the type.
|
|
344
335
|
*/
|
|
345
336
|
const isNotNull = (u) => u !== null;
|
|
346
337
|
/**
|
|
347
338
|
* Type guard that checks if a value is `null` or `undefined` (nullish).
|
|
348
339
|
*
|
|
349
|
-
* This function uses the loose equality operator (`==`) to check for both
|
|
350
|
-
* in a single comparison, which is the standard
|
|
340
|
+
* This function uses the loose equality operator (`==`) to check for both
|
|
341
|
+
* `null` and `undefined` in a single comparison, which is the standard
|
|
342
|
+
* JavaScript idiom for nullish checks.
|
|
351
343
|
*
|
|
352
344
|
* **Type Narrowing Behavior:**
|
|
345
|
+
*
|
|
353
346
|
* - Narrows the input type to `null | undefined` when `true`
|
|
354
347
|
* - Useful for checking if a value is "nullish" (either null or undefined)
|
|
355
348
|
*
|
|
356
|
-
* @param u - The value to check
|
|
357
|
-
* @returns `true` if `u` is `null` or `undefined`, `false` otherwise.
|
|
358
|
-
* When `true`, TypeScript narrows the type to `null | undefined`.
|
|
359
|
-
*
|
|
360
349
|
* @example
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
*
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
* // value is now typed as string
|
|
369
|
-
* console.log('Value length:', value.length);
|
|
370
|
-
* }
|
|
350
|
+
*
|
|
351
|
+
* ```ts
|
|
352
|
+
* const values: (string | null | undefined)[] = ['Ada', null, undefined];
|
|
353
|
+
*
|
|
354
|
+
* const nullishValues = values.filter(isNullish);
|
|
355
|
+
*
|
|
356
|
+
* assert.deepStrictEqual(nullishValues, [null, undefined]);
|
|
371
357
|
* ```
|
|
358
|
+
*
|
|
359
|
+
* @param u - The value to check
|
|
360
|
+
* @returns `true` if `u` is `null` or `undefined`, `false` otherwise. When
|
|
361
|
+
* `true`, TypeScript narrows the type to `null | undefined`.
|
|
372
362
|
*/
|
|
373
363
|
const isNullish = (u) => u == null;
|
|
374
364
|
/**
|
|
375
365
|
* Type guard that checks if a value is not `null` or `undefined` (non-nullish).
|
|
376
366
|
*
|
|
377
|
-
* This function uses the loose inequality operator (`!=`) to check that a value
|
|
378
|
-
* `null` nor `undefined` in a single comparison. This is equivalent
|
|
379
|
-
* `NonNullable<T>` utility type.
|
|
367
|
+
* This function uses the loose inequality operator (`!=`) to check that a value
|
|
368
|
+
* is neither `null` nor `undefined` in a single comparison. This is equivalent
|
|
369
|
+
* to TypeScript's `NonNullable<T>` utility type.
|
|
380
370
|
*
|
|
381
371
|
* **Type Narrowing Behavior:**
|
|
372
|
+
*
|
|
382
373
|
* - Excludes both `null` and `undefined` from the input type when `true`
|
|
383
374
|
* - Equivalent to applying TypeScript's `NonNullable<T>` utility type
|
|
384
375
|
* - Commonly used to filter out nullish values from arrays
|
|
385
376
|
*
|
|
386
|
-
* @template T - The type of the input value
|
|
387
|
-
* @param u - The value to check
|
|
388
|
-
* @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.
|
|
389
|
-
* When `true`, TypeScript narrows the type to `NonNullable<T>`.
|
|
390
|
-
*
|
|
391
377
|
* @example
|
|
392
|
-
* ```typescript
|
|
393
|
-
* const items: (string | null | undefined)[] = [
|
|
394
|
-
* 'hello',
|
|
395
|
-
* null,
|
|
396
|
-
* 'world',
|
|
397
|
-
* undefined,
|
|
398
|
-
* 'test'
|
|
399
|
-
* ];
|
|
400
|
-
*
|
|
401
|
-
* const definedItems = items.filter(isNonNullish);
|
|
402
|
-
* // definedItems is now string[] - both null and undefined values are filtered out
|
|
403
|
-
*
|
|
404
|
-
* definedItems.forEach(item => {
|
|
405
|
-
* // item is guaranteed to be string, never null or undefined
|
|
406
|
-
* console.log(item.toUpperCase());
|
|
407
|
-
* });
|
|
408
|
-
* ```
|
|
409
378
|
*
|
|
410
|
-
*
|
|
411
|
-
*
|
|
412
|
-
*
|
|
413
|
-
*
|
|
414
|
-
*
|
|
415
|
-
*
|
|
416
|
-
* email?: string;
|
|
417
|
-
* };
|
|
418
|
-
* }
|
|
419
|
-
*
|
|
420
|
-
* const user: User = getUser();
|
|
421
|
-
*
|
|
422
|
-
* // Instead of optional chaining: user.profile?.name
|
|
423
|
-
* if (isNonNullish(user.profile) && isNonNullish(user.profile.name)) {
|
|
424
|
-
* // user.profile.name is now guaranteed to be string
|
|
425
|
-
* console.log('User name:', user.profile.name.toUpperCase());
|
|
426
|
-
* }
|
|
379
|
+
* ```ts
|
|
380
|
+
* const values: (string | null | undefined)[] = ['Ada', null, undefined];
|
|
381
|
+
*
|
|
382
|
+
* const definedValues = values.filter(isNonNullish);
|
|
383
|
+
*
|
|
384
|
+
* assert.deepStrictEqual(definedValues, ['Ada']);
|
|
427
385
|
* ```
|
|
386
|
+
*
|
|
387
|
+
* @template T - The type of the input value
|
|
388
|
+
* @param u - The value to check
|
|
389
|
+
* @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.
|
|
390
|
+
* When `true`, TypeScript narrows the type to `NonNullable<T>`.
|
|
428
391
|
*/
|
|
429
392
|
const isNonNullish = (u) => u != null;
|
|
430
393
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-type.mjs","sources":["../../src/guard/is-type.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"is-type.mjs","sources":["../../src/guard/is-type.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,WAAW,GAAG,CAAC,CAAU,KAAqB,CAAC,KAAK;AAEjE;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACI,MAAM,cAAc,GAAG,CAAK,CAAI,KACrC,CAAC,KAAK;AAER;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,SAAS,GAAG,CAAC,CAAU,KAAmB,OAAO,CAAC,KAAK;AAEpE;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,YAAY,GAAG,CAAK,CAAI,KACnC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAU,KAAkB,OAAO,CAAC,KAAK;AAElE;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,WAAW,GAAG,CAAK,CAAI,KAClC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAU,KAAkB,OAAO,CAAC,KAAK;AAElE;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,WAAW,GAAG,CAAK,CAAI,KAClC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAU,KAAkB,OAAO,CAAC,KAAK;AAElE;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACI,MAAM,WAAW,GAAG,CAAK,CAAI,KAClC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACI,MAAM,QAAQ,GAAG,CAAC,CAAU,KAAkB,OAAO,CAAC,KAAK;AAElE;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACI,MAAM,WAAW,GAAG,CAAK,CAAI,KAClC,OAAO,CAAC,KAAK;AAEf;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,MAAM,GAAG,CAAC,CAAU,KAAgB,CAAC,KAAK;AAEvD;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AACI,MAAM,SAAS,GAAG,CAAK,CAAW,KAAa,CAAC,KAAK;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,SAAS,GAAG,CAAC,CAAU,KAA4B,CAAC,IAAI;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACI,MAAM,YAAY,GAAG,CAAK,CAAI,KAA0B,CAAC,IAAI;;;;"}
|