ts-data-forge 3.2.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 +45 -21
- 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 +3 -0
- package/dist/entry-point.d.mts.map +1 -0
- package/dist/entry-point.mjs +62 -0
- package/dist/entry-point.mjs.map +1 -0
- 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 +14 -127
- 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/dist/types.d.mts +1 -1
- package/package.json +54 -50
- 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 +2 -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-record.test.mts +0 -1
- 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 +15 -127
- package/src/others/unknown-to-string.test.mts +14 -2
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.mjs","sources":["../../src/functional/result.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIA;AACA,MAAM,aAAa,GAAG,0BAA0B;AAEhD;AACA,MAAM,cAAc,GAAG,2BAA2B;
|
|
1
|
+
{"version":3,"file":"result.mjs","sources":["../../src/functional/result.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/globals.d.mts
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
/* eslint-disable import/unambiguous */
|
|
2
|
-
|
|
3
1
|
/// <reference types="ts-type-forge" />
|
|
4
2
|
|
|
5
3
|
type SmallPositiveInt = WithSmallInt<PositiveInt>;
|
|
6
4
|
|
|
7
|
-
/**
|
|
8
|
-
* Represents the type of keys that can be used in a standard JavaScript Map.
|
|
9
|
-
*/
|
|
5
|
+
/** Represents the type of keys that can be used in a standard JavaScript Map. */
|
|
10
6
|
type MapSetKeyType = Primitive;
|
|
11
7
|
|
|
8
|
+
type ArrayIndex<Ar extends readonly unknown[]> =
|
|
9
|
+
IsFixedLengthList<Ar> extends true ? IndexOfTuple<Ar> : SizeType.Arr;
|
|
10
|
+
|
|
11
|
+
type ArgArrayIndex<Ar extends readonly unknown[]> =
|
|
12
|
+
IsFixedLengthList<Ar> extends true ? IndexOfTuple<Ar> : SizeType.ArgArr;
|
|
13
|
+
|
|
14
|
+
type ArgArrayIndexWithNegative<Ar extends readonly unknown[]> =
|
|
15
|
+
IsFixedLengthList<Ar> extends true
|
|
16
|
+
? IndexOfTuple<[...Ar, 0]> | NegativeIndexOfTuple<Ar>
|
|
17
|
+
: SizeType.ArgArrWithNegative;
|
|
18
|
+
|
|
12
19
|
// https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/length
|
|
13
20
|
// https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/length
|
|
14
21
|
// Max array length : 2^32 - 1
|
package/dist/guard/has-key.d.mts
CHANGED
|
@@ -1,91 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Type guard function that checks if an object has a specific key as its own
|
|
2
|
+
* Type guard function that checks if an object has a specific key as its own
|
|
3
|
+
* property.
|
|
3
4
|
*
|
|
4
|
-
* This function uses `Object.hasOwn()` to check if the given object has the
|
|
5
|
-
* as its own property (not inherited). It acts as a type guard
|
|
6
|
-
* object to guarantee the key exists, enabling
|
|
5
|
+
* This function uses `Object.hasOwn()` to check if the given object has the
|
|
6
|
+
* specified key as its own property (not inherited). It acts as a type guard
|
|
7
|
+
* that narrows the type of the object to guarantee the key exists, enabling
|
|
8
|
+
* type-safe property access.
|
|
7
9
|
*
|
|
8
10
|
* **Type Narrowing Behavior:**
|
|
9
|
-
*
|
|
11
|
+
*
|
|
12
|
+
* - When the guard returns `true`, TypeScript narrows the object type to include
|
|
13
|
+
* the checked key
|
|
10
14
|
* - For union types, only union members that contain the key are preserved
|
|
11
15
|
* - The key's value type is preserved from the original object type when possible
|
|
12
16
|
*
|
|
13
|
-
* @template R - The type of the input object, must extend UnknownRecord
|
|
14
|
-
* @template K - The type of the key to check for, must extend PropertyKey (string | number | symbol)
|
|
15
|
-
* @param obj - The object to check for the presence of the key
|
|
16
|
-
* @param key - The key to check for in the object
|
|
17
|
-
* @returns `true` if the object has the specified key as its own property, `false` otherwise.
|
|
18
|
-
* When `true`, TypeScript narrows the object type to guarantee the key exists.
|
|
19
|
-
*
|
|
20
17
|
* @example
|
|
21
|
-
* Basic usage with known object structure:
|
|
22
|
-
* ```typescript
|
|
23
|
-
* const obj = { a: 1, b: 'hello' };
|
|
24
|
-
*
|
|
25
|
-
* if (hasKey(obj, 'a')) {
|
|
26
|
-
* // obj is narrowed to guarantee 'a' exists
|
|
27
|
-
* console.log(obj.a); // TypeScript knows 'a' exists and is type number
|
|
28
|
-
* // No need for optional chaining or undefined checks
|
|
29
|
-
* }
|
|
30
18
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* console.log(obj.c); // But TypeScript would know 'c' exists if it did
|
|
34
|
-
* }
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* Working with dynamic objects and unknown keys:
|
|
39
|
-
* ```typescript
|
|
40
|
-
* const dynamicObj: Record<string, unknown> = { x: 10, y: 20 };
|
|
41
|
-
* const userInput: string = getUserInput();
|
|
19
|
+
* ```ts
|
|
20
|
+
* const maybeUser: { id?: number; name?: string } = { id: 42 };
|
|
42
21
|
*
|
|
43
|
-
* if (hasKey(
|
|
44
|
-
* //
|
|
45
|
-
*
|
|
46
|
-
* console.log(`Value for ${userInput}:`, value);
|
|
22
|
+
* if (hasKey(maybeUser, 'id')) {
|
|
23
|
+
* // `maybeUser` is now known to have an `id` property.
|
|
24
|
+
* assert(maybeUser.id === 42);
|
|
47
25
|
* } else {
|
|
48
|
-
*
|
|
49
|
-
* }
|
|
50
|
-
* ```
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* Type narrowing with union types:
|
|
54
|
-
* ```typescript
|
|
55
|
-
* type UserPreferences =
|
|
56
|
-
* | { theme: 'dark'; notifications: boolean }
|
|
57
|
-
* | { theme: 'light' }
|
|
58
|
-
* | { autoSave: true; interval: number };
|
|
59
|
-
*
|
|
60
|
-
* const preferences: UserPreferences = getPreferences();
|
|
61
|
-
*
|
|
62
|
-
* if (hasKey(preferences, 'theme')) {
|
|
63
|
-
* // preferences is narrowed to the first two union members
|
|
64
|
-
* console.log(preferences.theme); // 'dark' | 'light'
|
|
65
|
-
* }
|
|
66
|
-
*
|
|
67
|
-
* if (hasKey(preferences, 'autoSave')) {
|
|
68
|
-
* // preferences is narrowed to the third union member
|
|
69
|
-
* console.log(preferences.interval); // number (we know this exists)
|
|
70
|
-
* }
|
|
71
|
-
* ```
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* Basic usage with isRecord for progressive narrowing:
|
|
75
|
-
* ```typescript
|
|
76
|
-
* const data: unknown = parseApiResponse();
|
|
77
|
-
*
|
|
78
|
-
* if (isRecord(data) && hasKey(data, 'user')) {
|
|
79
|
-
* // data is now Record<string, unknown> with guaranteed 'user' key
|
|
80
|
-
* const user = data.user;
|
|
81
|
-
*
|
|
82
|
-
* if (isRecord(user) && hasKey(user, 'name')) {
|
|
83
|
-
* // Safely access nested properties
|
|
84
|
-
* console.log('User name:', user.name);
|
|
85
|
-
* }
|
|
26
|
+
* assert.fail('Expected the object to contain the id key.');
|
|
86
27
|
* }
|
|
87
28
|
* ```
|
|
88
29
|
*
|
|
30
|
+
* @template R - The type of the input object, must extend UnknownRecord
|
|
31
|
+
* @template K - The type of the key to check for, must extend PropertyKey
|
|
32
|
+
* (string | number | symbol)
|
|
33
|
+
* @param obj - The object to check for the presence of the key
|
|
34
|
+
* @param key - The key to check for in the object
|
|
35
|
+
* @returns `true` if the object has the specified key as its own property,
|
|
36
|
+
* `false` otherwise. When `true`, TypeScript narrows the object type to
|
|
37
|
+
* guarantee the key exists.
|
|
89
38
|
* @see {@link keyIsIn} - Similar function that narrows the key type instead of the object type
|
|
90
39
|
*/
|
|
91
40
|
export declare const hasKey: <const R extends UnknownRecord, const K extends PropertyKey>(obj: R, key: K) => obj is HasKeyReturnType<R, K>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-key.d.mts","sourceRoot":"","sources":["../../src/guard/has-key.mts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"has-key.d.mts","sourceRoot":"","sources":["../../src/guard/has-key.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,MAAM,GACjB,KAAK,CAAC,CAAC,SAAS,aAAa,EAC7B,KAAK,CAAC,CAAC,SAAS,WAAW,EAE3B,KAAK,CAAC,EACN,KAAK,CAAC,KACL,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,aAAa,EACvB,CAAC,SAAS,WAAW,IACnB,CAAC,SAAS,CAAC,GACX,CAAC,SAAS,MAAM,CAAC,GACf,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,MAAM,SAAS,MAAM,CAAC,GACpB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GACjC,CAAC,GACP,KAAK,GACP,KAAK,CAAC"}
|
package/dist/guard/has-key.mjs
CHANGED
|
@@ -1,91 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Type guard function that checks if an object has a specific key as its own
|
|
2
|
+
* Type guard function that checks if an object has a specific key as its own
|
|
3
|
+
* property.
|
|
3
4
|
*
|
|
4
|
-
* This function uses `Object.hasOwn()` to check if the given object has the
|
|
5
|
-
* as its own property (not inherited). It acts as a type guard
|
|
6
|
-
* object to guarantee the key exists, enabling
|
|
5
|
+
* This function uses `Object.hasOwn()` to check if the given object has the
|
|
6
|
+
* specified key as its own property (not inherited). It acts as a type guard
|
|
7
|
+
* that narrows the type of the object to guarantee the key exists, enabling
|
|
8
|
+
* type-safe property access.
|
|
7
9
|
*
|
|
8
10
|
* **Type Narrowing Behavior:**
|
|
9
|
-
*
|
|
11
|
+
*
|
|
12
|
+
* - When the guard returns `true`, TypeScript narrows the object type to include
|
|
13
|
+
* the checked key
|
|
10
14
|
* - For union types, only union members that contain the key are preserved
|
|
11
15
|
* - The key's value type is preserved from the original object type when possible
|
|
12
16
|
*
|
|
13
|
-
* @template R - The type of the input object, must extend UnknownRecord
|
|
14
|
-
* @template K - The type of the key to check for, must extend PropertyKey (string | number | symbol)
|
|
15
|
-
* @param obj - The object to check for the presence of the key
|
|
16
|
-
* @param key - The key to check for in the object
|
|
17
|
-
* @returns `true` if the object has the specified key as its own property, `false` otherwise.
|
|
18
|
-
* When `true`, TypeScript narrows the object type to guarantee the key exists.
|
|
19
|
-
*
|
|
20
17
|
* @example
|
|
21
|
-
* Basic usage with known object structure:
|
|
22
|
-
* ```typescript
|
|
23
|
-
* const obj = { a: 1, b: 'hello' };
|
|
24
|
-
*
|
|
25
|
-
* if (hasKey(obj, 'a')) {
|
|
26
|
-
* // obj is narrowed to guarantee 'a' exists
|
|
27
|
-
* console.log(obj.a); // TypeScript knows 'a' exists and is type number
|
|
28
|
-
* // No need for optional chaining or undefined checks
|
|
29
|
-
* }
|
|
30
18
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* console.log(obj.c); // But TypeScript would know 'c' exists if it did
|
|
34
|
-
* }
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* Working with dynamic objects and unknown keys:
|
|
39
|
-
* ```typescript
|
|
40
|
-
* const dynamicObj: Record<string, unknown> = { x: 10, y: 20 };
|
|
41
|
-
* const userInput: string = getUserInput();
|
|
19
|
+
* ```ts
|
|
20
|
+
* const maybeUser: { id?: number; name?: string } = { id: 42 };
|
|
42
21
|
*
|
|
43
|
-
* if (hasKey(
|
|
44
|
-
* //
|
|
45
|
-
*
|
|
46
|
-
* console.log(`Value for ${userInput}:`, value);
|
|
22
|
+
* if (hasKey(maybeUser, 'id')) {
|
|
23
|
+
* // `maybeUser` is now known to have an `id` property.
|
|
24
|
+
* assert(maybeUser.id === 42);
|
|
47
25
|
* } else {
|
|
48
|
-
*
|
|
49
|
-
* }
|
|
50
|
-
* ```
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* Type narrowing with union types:
|
|
54
|
-
* ```typescript
|
|
55
|
-
* type UserPreferences =
|
|
56
|
-
* | { theme: 'dark'; notifications: boolean }
|
|
57
|
-
* | { theme: 'light' }
|
|
58
|
-
* | { autoSave: true; interval: number };
|
|
59
|
-
*
|
|
60
|
-
* const preferences: UserPreferences = getPreferences();
|
|
61
|
-
*
|
|
62
|
-
* if (hasKey(preferences, 'theme')) {
|
|
63
|
-
* // preferences is narrowed to the first two union members
|
|
64
|
-
* console.log(preferences.theme); // 'dark' | 'light'
|
|
65
|
-
* }
|
|
66
|
-
*
|
|
67
|
-
* if (hasKey(preferences, 'autoSave')) {
|
|
68
|
-
* // preferences is narrowed to the third union member
|
|
69
|
-
* console.log(preferences.interval); // number (we know this exists)
|
|
70
|
-
* }
|
|
71
|
-
* ```
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* Basic usage with isRecord for progressive narrowing:
|
|
75
|
-
* ```typescript
|
|
76
|
-
* const data: unknown = parseApiResponse();
|
|
77
|
-
*
|
|
78
|
-
* if (isRecord(data) && hasKey(data, 'user')) {
|
|
79
|
-
* // data is now Record<string, unknown> with guaranteed 'user' key
|
|
80
|
-
* const user = data.user;
|
|
81
|
-
*
|
|
82
|
-
* if (isRecord(user) && hasKey(user, 'name')) {
|
|
83
|
-
* // Safely access nested properties
|
|
84
|
-
* console.log('User name:', user.name);
|
|
85
|
-
* }
|
|
26
|
+
* assert.fail('Expected the object to contain the id key.');
|
|
86
27
|
* }
|
|
87
28
|
* ```
|
|
88
29
|
*
|
|
30
|
+
* @template R - The type of the input object, must extend UnknownRecord
|
|
31
|
+
* @template K - The type of the key to check for, must extend PropertyKey
|
|
32
|
+
* (string | number | symbol)
|
|
33
|
+
* @param obj - The object to check for the presence of the key
|
|
34
|
+
* @param key - The key to check for in the object
|
|
35
|
+
* @returns `true` if the object has the specified key as its own property,
|
|
36
|
+
* `false` otherwise. When `true`, TypeScript narrows the object type to
|
|
37
|
+
* guarantee the key exists.
|
|
89
38
|
* @see {@link keyIsIn} - Similar function that narrows the key type instead of the object type
|
|
90
39
|
*/
|
|
91
40
|
const hasKey = (obj, key) => Object.hasOwn(obj, key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-key.mjs","sources":["../../src/guard/has-key.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"has-key.mjs","sources":["../../src/guard/has-key.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACI,MAAM,MAAM,GAAG,CAIpB,GAAM,EACN,GAAM,KAC4B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG;;;;"}
|
|
@@ -1,106 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type guard that checks if a value is a non-empty string.
|
|
3
3
|
*
|
|
4
|
-
* This function performs both a type check (ensuring the value is a string) and
|
|
5
|
-
* (ensuring the string is not empty). It acts as a type guard
|
|
6
|
-
* exclude `null`, `undefined`, and empty
|
|
4
|
+
* This function performs both a type check (ensuring the value is a string) and
|
|
5
|
+
* a length check (ensuring the string is not empty). It acts as a type guard
|
|
6
|
+
* that narrows the input type to exclude `null`, `undefined`, and empty
|
|
7
|
+
* strings.
|
|
7
8
|
*
|
|
8
9
|
* **Type Narrowing Behavior:**
|
|
10
|
+
*
|
|
9
11
|
* - Eliminates `null` and `undefined` from the type
|
|
10
12
|
* - Excludes empty string (`""`) from the type
|
|
11
13
|
* - Preserves literal string types when possible
|
|
12
14
|
* - Whitespace-only strings are considered non-empty
|
|
13
15
|
*
|
|
14
|
-
* @template S - The input type, which can include `string`, `null`, or `undefined`
|
|
15
|
-
* @param s - The value to check
|
|
16
|
-
* @returns `true` if `s` is a string with length > 0, `false` otherwise.
|
|
17
|
-
* When `true`, TypeScript narrows the type to exclude empty strings and nullish values.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* Basic usage with different string types:
|
|
21
|
-
* ```typescript
|
|
22
|
-
* isNonEmptyString("hello"); // true
|
|
23
|
-
* isNonEmptyString(" "); // true (whitespace is considered non-empty)
|
|
24
|
-
* isNonEmptyString("\t\n"); // true (whitespace characters are non-empty)
|
|
25
|
-
* isNonEmptyString(""); // false
|
|
26
|
-
* isNonEmptyString(null); // false
|
|
27
|
-
* isNonEmptyString(undefined); // false
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* Type guard usage with nullable strings:
|
|
32
|
-
* ```typescript
|
|
33
|
-
* const userInput: string | null | undefined = getUserInput();
|
|
34
|
-
*
|
|
35
|
-
* if (isNonEmptyString(userInput)) {
|
|
36
|
-
* // userInput is now typed as non-empty string
|
|
37
|
-
* console.log(userInput.charAt(0)); // Safe to access string methods
|
|
38
|
-
* console.log(userInput.toUpperCase()); // No need for null checks
|
|
39
|
-
* const length = userInput.length; // Guaranteed to be > 0
|
|
40
|
-
* } else {
|
|
41
|
-
* console.log('No valid input provided');
|
|
42
|
-
* }
|
|
43
|
-
* ```
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* Working with literal string types:
|
|
47
|
-
* ```typescript
|
|
48
|
-
* type Status = "active" | "inactive" | "" | null;
|
|
49
|
-
* const status: Status = getStatus();
|
|
50
|
-
*
|
|
51
|
-
* if (isNonEmptyString(status)) {
|
|
52
|
-
* // status is now typed as "active" | "inactive"
|
|
53
|
-
* console.log(`Status is: ${status}`);
|
|
54
|
-
* }
|
|
55
|
-
* ```
|
|
56
|
-
*
|
|
57
16
|
* @example
|
|
58
|
-
* Form validation patterns:
|
|
59
|
-
* ```typescript
|
|
60
|
-
* interface FormData {
|
|
61
|
-
* name?: string;
|
|
62
|
-
* email?: string;
|
|
63
|
-
* phone?: string;
|
|
64
|
-
* }
|
|
65
|
-
*
|
|
66
|
-
* function validateForm(data: FormData): string[] {
|
|
67
|
-
* const errors: string[] = [];
|
|
68
|
-
*
|
|
69
|
-
* if (!isNonEmptyString(data.name)) {
|
|
70
|
-
* errors.push('Name is required');
|
|
71
|
-
* }
|
|
72
|
-
*
|
|
73
|
-
* if (!isNonEmptyString(data.email)) {
|
|
74
|
-
* errors.push('Email is required');
|
|
75
|
-
* } else if (!data.email.includes('@')) {
|
|
76
|
-
* // Safe to access string methods after guard
|
|
77
|
-
* errors.push('Invalid email format');
|
|
78
|
-
* }
|
|
79
17
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* @example
|
|
85
|
-
* Filtering arrays of potentially empty strings:
|
|
86
|
-
* ```typescript
|
|
87
|
-
* const responses: (string | null | undefined)[] = [
|
|
88
|
-
* "hello",
|
|
89
|
-
* "",
|
|
90
|
-
* "world",
|
|
91
|
-
* null,
|
|
18
|
+
* ```ts
|
|
19
|
+
* const words: readonly (string | undefined)[] = [
|
|
20
|
+
* 'Ada',
|
|
92
21
|
* undefined,
|
|
93
|
-
*
|
|
94
|
-
*
|
|
22
|
+
* '',
|
|
23
|
+
* 'Lovelace',
|
|
24
|
+
* ] as const;
|
|
95
25
|
*
|
|
96
|
-
* const
|
|
97
|
-
* // validResponses is now string[] containing ["hello", "world", " "]
|
|
26
|
+
* const nonEmpty = words.filter(isNonEmptyString);
|
|
98
27
|
*
|
|
99
|
-
*
|
|
100
|
-
* // Each response is guaranteed to be a non-empty string
|
|
101
|
-
* console.log(response.trim().toUpperCase());
|
|
102
|
-
* });
|
|
28
|
+
* assert.deepStrictEqual(nonEmpty, ['Ada', 'Lovelace']);
|
|
103
29
|
* ```
|
|
30
|
+
*
|
|
31
|
+
* @template S - The input type, which can include `string`, `null`, or
|
|
32
|
+
* `undefined`
|
|
33
|
+
* @param s - The value to check
|
|
34
|
+
* @returns `true` if `s` is a string with length > 0, `false` otherwise. When
|
|
35
|
+
* `true`, TypeScript narrows the type to exclude empty strings and nullish
|
|
36
|
+
* values.
|
|
104
37
|
*/
|
|
105
38
|
export declare const isNonEmptyString: <S extends string | null | undefined>(s: S) => s is RelaxedExclude<NonNullable<S>, "">;
|
|
106
39
|
//# sourceMappingURL=is-non-empty-string.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-non-empty-string.d.mts","sourceRoot":"","sources":["../../src/guard/is-non-empty-string.mts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"is-non-empty-string.d.mts","sourceRoot":"","sources":["../../src/guard/is-non-empty-string.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,EAClE,GAAG,CAAC,KACH,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CACF,CAAC"}
|
|
@@ -1,106 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type guard that checks if a value is a non-empty string.
|
|
3
3
|
*
|
|
4
|
-
* This function performs both a type check (ensuring the value is a string) and
|
|
5
|
-
* (ensuring the string is not empty). It acts as a type guard
|
|
6
|
-
* exclude `null`, `undefined`, and empty
|
|
4
|
+
* This function performs both a type check (ensuring the value is a string) and
|
|
5
|
+
* a length check (ensuring the string is not empty). It acts as a type guard
|
|
6
|
+
* that narrows the input type to exclude `null`, `undefined`, and empty
|
|
7
|
+
* strings.
|
|
7
8
|
*
|
|
8
9
|
* **Type Narrowing Behavior:**
|
|
10
|
+
*
|
|
9
11
|
* - Eliminates `null` and `undefined` from the type
|
|
10
12
|
* - Excludes empty string (`""`) from the type
|
|
11
13
|
* - Preserves literal string types when possible
|
|
12
14
|
* - Whitespace-only strings are considered non-empty
|
|
13
15
|
*
|
|
14
|
-
* @template S - The input type, which can include `string`, `null`, or `undefined`
|
|
15
|
-
* @param s - The value to check
|
|
16
|
-
* @returns `true` if `s` is a string with length > 0, `false` otherwise.
|
|
17
|
-
* When `true`, TypeScript narrows the type to exclude empty strings and nullish values.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* Basic usage with different string types:
|
|
21
|
-
* ```typescript
|
|
22
|
-
* isNonEmptyString("hello"); // true
|
|
23
|
-
* isNonEmptyString(" "); // true (whitespace is considered non-empty)
|
|
24
|
-
* isNonEmptyString("\t\n"); // true (whitespace characters are non-empty)
|
|
25
|
-
* isNonEmptyString(""); // false
|
|
26
|
-
* isNonEmptyString(null); // false
|
|
27
|
-
* isNonEmptyString(undefined); // false
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* Type guard usage with nullable strings:
|
|
32
|
-
* ```typescript
|
|
33
|
-
* const userInput: string | null | undefined = getUserInput();
|
|
34
|
-
*
|
|
35
|
-
* if (isNonEmptyString(userInput)) {
|
|
36
|
-
* // userInput is now typed as non-empty string
|
|
37
|
-
* console.log(userInput.charAt(0)); // Safe to access string methods
|
|
38
|
-
* console.log(userInput.toUpperCase()); // No need for null checks
|
|
39
|
-
* const length = userInput.length; // Guaranteed to be > 0
|
|
40
|
-
* } else {
|
|
41
|
-
* console.log('No valid input provided');
|
|
42
|
-
* }
|
|
43
|
-
* ```
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* Working with literal string types:
|
|
47
|
-
* ```typescript
|
|
48
|
-
* type Status = "active" | "inactive" | "" | null;
|
|
49
|
-
* const status: Status = getStatus();
|
|
50
|
-
*
|
|
51
|
-
* if (isNonEmptyString(status)) {
|
|
52
|
-
* // status is now typed as "active" | "inactive"
|
|
53
|
-
* console.log(`Status is: ${status}`);
|
|
54
|
-
* }
|
|
55
|
-
* ```
|
|
56
|
-
*
|
|
57
16
|
* @example
|
|
58
|
-
* Form validation patterns:
|
|
59
|
-
* ```typescript
|
|
60
|
-
* interface FormData {
|
|
61
|
-
* name?: string;
|
|
62
|
-
* email?: string;
|
|
63
|
-
* phone?: string;
|
|
64
|
-
* }
|
|
65
|
-
*
|
|
66
|
-
* function validateForm(data: FormData): string[] {
|
|
67
|
-
* const errors: string[] = [];
|
|
68
|
-
*
|
|
69
|
-
* if (!isNonEmptyString(data.name)) {
|
|
70
|
-
* errors.push('Name is required');
|
|
71
|
-
* }
|
|
72
|
-
*
|
|
73
|
-
* if (!isNonEmptyString(data.email)) {
|
|
74
|
-
* errors.push('Email is required');
|
|
75
|
-
* } else if (!data.email.includes('@')) {
|
|
76
|
-
* // Safe to access string methods after guard
|
|
77
|
-
* errors.push('Invalid email format');
|
|
78
|
-
* }
|
|
79
17
|
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* @example
|
|
85
|
-
* Filtering arrays of potentially empty strings:
|
|
86
|
-
* ```typescript
|
|
87
|
-
* const responses: (string | null | undefined)[] = [
|
|
88
|
-
* "hello",
|
|
89
|
-
* "",
|
|
90
|
-
* "world",
|
|
91
|
-
* null,
|
|
18
|
+
* ```ts
|
|
19
|
+
* const words: readonly (string | undefined)[] = [
|
|
20
|
+
* 'Ada',
|
|
92
21
|
* undefined,
|
|
93
|
-
*
|
|
94
|
-
*
|
|
22
|
+
* '',
|
|
23
|
+
* 'Lovelace',
|
|
24
|
+
* ] as const;
|
|
95
25
|
*
|
|
96
|
-
* const
|
|
97
|
-
* // validResponses is now string[] containing ["hello", "world", " "]
|
|
26
|
+
* const nonEmpty = words.filter(isNonEmptyString);
|
|
98
27
|
*
|
|
99
|
-
*
|
|
100
|
-
* // Each response is guaranteed to be a non-empty string
|
|
101
|
-
* console.log(response.trim().toUpperCase());
|
|
102
|
-
* });
|
|
28
|
+
* assert.deepStrictEqual(nonEmpty, ['Ada', 'Lovelace']);
|
|
103
29
|
* ```
|
|
30
|
+
*
|
|
31
|
+
* @template S - The input type, which can include `string`, `null`, or
|
|
32
|
+
* `undefined`
|
|
33
|
+
* @param s - The value to check
|
|
34
|
+
* @returns `true` if `s` is a string with length > 0, `false` otherwise. When
|
|
35
|
+
* `true`, TypeScript narrows the type to exclude empty strings and nullish
|
|
36
|
+
* values.
|
|
104
37
|
*/
|
|
105
38
|
const isNonEmptyString = (s) => typeof s === 'string' && s.length > 0;
|
|
106
39
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-non-empty-string.mjs","sources":["../../src/guard/is-non-empty-string.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"is-non-empty-string.mjs","sources":["../../src/guard/is-non-empty-string.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;AACI,MAAM,gBAAgB,GAAG,CAC9B,CAAI,KAEJ,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG;;;;"}
|