ts-data-forge 14.6.0 → 14.6.2
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/dist/array/impl/array-utils-creation.mjs +126 -26
- package/dist/array/impl/array-utils-creation.mjs.map +1 -1
- package/dist/array/impl/array-utils-element-access.mjs +63 -30
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
- package/dist/array/impl/array-utils-iterators.mjs +69 -53
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-array-cast.mjs +109 -73
- package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-array-guard.mjs +71 -33
- package/dist/array/impl/array-utils-length-bounded-array-guard.mjs.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs +102 -73
- package/dist/array/impl/array-utils-length-bounded-tuple-cast.mjs.map +1 -1
- package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs +77 -33
- package/dist/array/impl/array-utils-length-bounded-tuple-guard.mjs.map +1 -1
- package/dist/array/impl/array-utils-modification.mjs +75 -122
- package/dist/array/impl/array-utils-modification.mjs.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs +100 -150
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.mjs +110 -134
- package/dist/array/impl/array-utils-search.mjs.map +1 -1
- package/dist/array/impl/array-utils-set-op.mjs +146 -38
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
- package/dist/array/impl/array-utils-size.mjs +10 -8
- package/dist/array/impl/array-utils-size.mjs.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs +13 -50
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +94 -78
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +291 -199
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +54 -56
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/array/impl/index.mjs +17 -17
- package/dist/array/impl/index.mjs.map +1 -1
- package/dist/array/index.mjs +2 -3
- package/dist/array/index.mjs.map +1 -1
- package/dist/collections/imap-mapped.mjs +335 -291
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.mjs +280 -239
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/index.mjs +7 -7
- package/dist/collections/index.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +448 -263
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.mjs +328 -201
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.mjs +183 -151
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.mjs +169 -140
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.mjs +4 -77
- package/dist/entry-point.mjs.map +1 -1
- package/dist/expect-type.mjs +70 -4
- package/dist/expect-type.mjs.map +1 -1
- package/dist/functional/async-result/async-result.mjs +2 -3
- package/dist/functional/async-result/async-result.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-flat-map.mjs +19 -21
- package/dist/functional/async-result/impl/async-result-flat-map.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-from-promise.mjs +9 -10
- package/dist/functional/async-result/impl/async-result-from-promise.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-from-throwable.mjs +12 -14
- package/dist/functional/async-result/impl/async-result-from-throwable.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-map-err.mjs +16 -19
- package/dist/functional/async-result/impl/async-result-map-err.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-map.mjs +16 -19
- package/dist/functional/async-result/impl/async-result-map.mjs.map +1 -1
- package/dist/functional/async-result/impl/async-result-unwrap-or.mjs +36 -9
- package/dist/functional/async-result/impl/async-result-unwrap-or.mjs.map +1 -1
- package/dist/functional/async-result/impl/index.mjs +8 -7
- package/dist/functional/async-result/impl/index.mjs.map +1 -1
- package/dist/functional/async-result/impl/types.mjs +2 -2
- package/dist/functional/async-result/impl/types.mjs.map +1 -1
- package/dist/functional/async-result/index.mjs +2 -3
- package/dist/functional/async-result/index.mjs.map +1 -1
- package/dist/functional/index.mjs +7 -11
- package/dist/functional/index.mjs.map +1 -1
- package/dist/functional/match.mjs +27 -13
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional/impl/index.mjs +19 -18
- package/dist/functional/optional/impl/index.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-expect-to-be.mjs +16 -18
- package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-filter.mjs +17 -19
- package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-flat-map.mjs +13 -15
- package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-from-nullable.mjs +26 -5
- package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-none.mjs +21 -5
- package/dist/functional/optional/impl/optional-is-none.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.mjs +26 -8
- package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.mjs +22 -5
- package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-map.mjs +16 -18
- package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-match.mjs +16 -18
- package/dist/functional/optional/impl/optional-match.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-none.mjs +18 -5
- package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-or-else.mjs +13 -15
- package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-some.mjs +23 -7
- package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.mjs +28 -5
- package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-or.mjs +12 -14
- package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs +34 -9
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap.mjs +6 -9
- package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-zip.mjs +36 -5
- package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
- package/dist/functional/optional/impl/tag.mjs +4 -5
- package/dist/functional/optional/impl/tag.mjs.map +1 -1
- package/dist/functional/optional/impl/types.mjs +2 -2
- package/dist/functional/optional/impl/types.mjs.map +1 -1
- package/dist/functional/optional/index.mjs +2 -3
- package/dist/functional/optional/index.mjs.map +1 -1
- package/dist/functional/optional/optional.mjs +2 -3
- package/dist/functional/optional/optional.mjs.map +1 -1
- package/dist/functional/pipe.mjs +42 -14
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result/impl/index.mjs +28 -27
- package/dist/functional/result/impl/index.mjs.map +1 -1
- package/dist/functional/result/impl/result-err.mjs +29 -7
- package/dist/functional/result/impl/result-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-expect-to-be.mjs +17 -18
- package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
- package/dist/functional/result/impl/result-flat-map.mjs +18 -21
- package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-fold.mjs +18 -21
- package/dist/functional/result/impl/result-fold.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-optional.mjs +17 -20
- package/dist/functional/result/impl/result-from-optional.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-promise.mjs +37 -8
- package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.mjs +41 -14
- package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-err.mjs +21 -5
- package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-ok.mjs +21 -5
- package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-result.mjs +25 -7
- package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
- package/dist/functional/result/impl/result-map-err.mjs +18 -21
- package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-map.mjs +18 -21
- package/dist/functional/result/impl/result-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-match.mjs +17 -21
- package/dist/functional/result/impl/result-match.mjs.map +1 -1
- package/dist/functional/result/impl/result-ok.mjs +29 -7
- package/dist/functional/result/impl/result-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-or-else.mjs +14 -15
- package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
- package/dist/functional/result/impl/result-safe-try.mjs +32 -21
- package/dist/functional/result/impl/result-safe-try.mjs.map +1 -1
- package/dist/functional/result/impl/result-safe-unwrap.mjs +40 -12
- package/dist/functional/result/impl/result-safe-unwrap.mjs.map +1 -1
- package/dist/functional/result/impl/result-swap.mjs +23 -8
- package/dist/functional/result/impl/result-swap.mjs.map +1 -1
- package/dist/functional/result/impl/result-to-optional.mjs +30 -7
- package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-or.mjs +13 -14
- package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs +43 -20
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.mjs +33 -8
- package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs +13 -14
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok.mjs +6 -9
- package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs +38 -11
- package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-zip.mjs +35 -5
- package/dist/functional/result/impl/result-zip.mjs.map +1 -1
- package/dist/functional/result/impl/tag.mjs +4 -5
- package/dist/functional/result/impl/tag.mjs.map +1 -1
- package/dist/functional/result/impl/types.mjs +2 -2
- package/dist/functional/result/impl/types.mjs.map +1 -1
- package/dist/functional/result/index.mjs +2 -3
- package/dist/functional/result/index.mjs.map +1 -1
- package/dist/functional/result/result.mjs +2 -3
- package/dist/functional/result/result.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/index.mjs +29 -28
- package/dist/functional/ternary-result/impl/index.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/tag.mjs +6 -6
- package/dist/functional/ternary-result/impl/tag.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs +17 -7
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +15 -18
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +28 -32
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +24 -26
- package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +21 -8
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +28 -13
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +19 -5
- package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +21 -5
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +28 -8
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +20 -5
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +17 -18
- package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +20 -23
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map.mjs +24 -26
- package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +18 -7
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +11 -14
- package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +24 -10
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +11 -14
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +30 -19
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +20 -8
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +11 -14
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +7 -9
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +30 -22
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +11 -14
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +27 -17
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +20 -8
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +21 -8
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +47 -19
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/types.mjs +2 -2
- package/dist/functional/ternary-result/impl/types.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/variant-name.mjs +12 -14
- package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -1
- package/dist/functional/ternary-result/index.mjs +2 -3
- package/dist/functional/ternary-result/index.mjs.map +1 -1
- package/dist/functional/ternary-result/ternary-result.mjs +2 -3
- package/dist/functional/ternary-result/ternary-result.mjs.map +1 -1
- package/dist/guard/has-key.mjs +43 -4
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/index.mjs +8 -8
- package/dist/guard/index.mjs.map +1 -1
- package/dist/guard/is-non-empty-string.mjs +39 -4
- package/dist/guard/is-non-empty-string.mjs.map +1 -1
- package/dist/guard/is-non-null-object.mjs +36 -4
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-primitive.mjs +46 -15
- package/dist/guard/is-primitive.mjs.map +1 -1
- package/dist/guard/is-record.mjs +89 -6
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.mjs +404 -19
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.mjs +42 -4
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.mjs +12 -65
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/index.mjs +2 -2
- package/dist/iterator/index.mjs.map +1 -1
- package/dist/iterator/range.mjs +19 -57
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/index.mjs +2 -2
- package/dist/json/index.mjs.map +1 -1
- package/dist/json/json.mjs +346 -105
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +148 -137
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/index.mjs +33 -33
- package/dist/number/branded-types/index.mjs.map +1 -1
- package/dist/number/branded-types/int.mjs +245 -209
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.mjs +141 -131
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.mjs +141 -131
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/negative-finite-number.mjs +155 -149
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/negative-int.mjs +125 -110
- package/dist/number/branded-types/negative-int.mjs.map +1 -1
- package/dist/number/branded-types/negative-safe-int.mjs +126 -115
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +164 -154
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +137 -125
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +137 -125
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.mjs +143 -139
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-int.mjs +116 -99
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.mjs +118 -107
- package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +144 -129
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +102 -82
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +118 -105
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +118 -105
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +122 -108
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +118 -104
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +118 -104
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +167 -160
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +260 -224
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +134 -122
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +134 -122
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +292 -258
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +134 -122
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +134 -122
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +284 -255
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +135 -124
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.mjs +248 -211
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.mjs +132 -121
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.mjs +132 -121
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/index.mjs +3 -3
- package/dist/number/enum/index.mjs.map +1 -1
- package/dist/number/enum/int8.mjs +146 -131
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.mjs +133 -119
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/index.mjs +6 -37
- package/dist/number/index.mjs.map +1 -1
- package/dist/number/num-arithmetic-types.mjs +42 -1
- package/dist/number/num-arithmetic-types.mjs.map +1 -1
- package/dist/number/num.mjs +541 -83
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.mjs +294 -133
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/index.mjs +2 -2
- package/dist/object/index.mjs.map +1 -1
- package/dist/object/object.mjs +355 -202
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/cast-mutable.mjs +38 -11
- package/dist/others/cast-mutable.mjs.map +1 -1
- package/dist/others/cast-readonly.mjs +37 -11
- package/dist/others/cast-readonly.mjs.map +1 -1
- package/dist/others/debounce-function.mjs +22 -11
- package/dist/others/debounce-function.mjs.map +1 -1
- package/dist/others/fast-deep-equal.mjs +70 -51
- package/dist/others/fast-deep-equal.mjs.map +1 -1
- package/dist/others/if-then.mjs +32 -5
- package/dist/others/if-then.mjs.map +1 -1
- package/dist/others/index.mjs +10 -10
- package/dist/others/index.mjs.map +1 -1
- package/dist/others/map-nullable.mjs +11 -13
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.mjs +14 -16
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/tuple.mjs +52 -4
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.mjs +91 -47
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/index.mjs +2 -2
- package/dist/promise/index.mjs.map +1 -1
- package/dist/promise/promise.mjs +51 -10
- package/dist/promise/promise.mjs.map +1 -1
- package/dist/string/index.mjs +2 -2
- package/dist/string/index.mjs.map +1 -1
- package/dist/string/str.mjs +250 -83
- package/dist/string/str.mjs.map +1 -1
- package/dist/types.mjs +3 -2
- package/dist/types.mjs.map +1 -1
- package/package.json +5 -6
- package/src/array/impl/array-utils-length-constraint-preservation.test.mts +2 -2
- package/src/collections/imap-mapped.mts +4 -4
- package/src/collections/imap.mts +1 -1
- package/src/collections/imap.test.mts +1 -1
- package/src/collections/iset-mapped.mts +2 -1
- package/src/collections/iset.mts +1 -1
- package/src/functional/async-result.test.mts +3 -2
- package/src/functional/optional.test.mts +2 -1
- package/src/functional/result.test.mts +0 -2
- package/src/guard/is-non-empty-string.test.mts +2 -2
- package/src/guard/is-non-null-object.test.mts +3 -3
- package/src/guard/is-primitive.test.mts +3 -3
- package/src/guard/is-type.test.mts +3 -3
- package/src/json/json.test.mts +1 -1
- package/src/number/enum/int8.mts +1 -1
package/dist/guard/is-record.mjs
CHANGED
|
@@ -1,7 +1,90 @@
|
|
|
1
1
|
import { isNonNullObject } from './is-non-null-object.mjs';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Type guard that checks if a value is a record — a non-null, non-array
|
|
4
|
+
* object — and narrows it to `UnknownRecord` (= `ReadonlyRecord<string,
|
|
5
|
+
* unknown>`).
|
|
6
|
+
*
|
|
7
|
+
* This function is designed to be combined with {@link hasKey} to probe
|
|
8
|
+
* values of type `unknown` (e.g. parsed JSON, caught errors, external data)
|
|
9
|
+
* in a type-safe way: `if (isRecord(u) && hasKey(u, 'some-key')) { ... }`.
|
|
10
|
+
*
|
|
11
|
+
* **Type Narrowing Behavior:**
|
|
12
|
+
*
|
|
13
|
+
* - Narrows `unknown` to `UnknownRecord` (= `ReadonlyRecord<string, unknown>`)
|
|
14
|
+
* - Excludes `null`, `undefined`, primitives, and functions
|
|
15
|
+
* - Excludes arrays: arrays have no string index signature, so they are not
|
|
16
|
+
* assignable to `UnknownRecord`; admitting them at runtime would be
|
|
17
|
+
* inconsistent with the narrowed type
|
|
18
|
+
* - Returns `true` for every other non-null object, including dictionary
|
|
19
|
+
* objects created with `Object.create(null)` and instances such as `Date`,
|
|
20
|
+
* `RegExp`, `Map`, `Set`, `Error`, and user-defined classes
|
|
21
|
+
*
|
|
22
|
+
* **Why non-plain objects are included:** since every property of
|
|
23
|
+
* `UnknownRecord` is typed `unknown`, reading properties from any object
|
|
24
|
+
* through this narrowing is type-safe, and `hasKey` (backed by
|
|
25
|
+
* `Object.hasOwn`) answers own-property questions correctly on any object
|
|
26
|
+
* (e.g. `Map` entries are not own properties, so `hasKey` correctly returns
|
|
27
|
+
* `false` for them). Restricting the guard to plain objects would require
|
|
28
|
+
* prototype checks that misjudge cross-realm objects and would prevent
|
|
29
|
+
* probing useful instances such as `Error` subclasses.
|
|
30
|
+
*
|
|
31
|
+
* **Implementation:** `isNonNullObject(u) && !Array.isArray(u)`.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* const entries: readonly unknown[] = [
|
|
37
|
+
* { id: 1 },
|
|
38
|
+
* [1, 2],
|
|
39
|
+
* 'str',
|
|
40
|
+
* 0,
|
|
41
|
+
* null,
|
|
42
|
+
* ] as const;
|
|
43
|
+
*
|
|
44
|
+
* const records = entries.filter(isRecord);
|
|
45
|
+
*
|
|
46
|
+
* assert.deepStrictEqual(records, [{ id: 1 }]);
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param u - The value to check
|
|
50
|
+
* @returns `true` if `u` is a non-null, non-array object, `false` otherwise.
|
|
51
|
+
* When `true`, TypeScript narrows the type to `UnknownRecord`.
|
|
52
|
+
* @see {@link isNonNullObject} - For checking any non-null object (includes arrays)
|
|
53
|
+
* @see {@link hasKey} - For checking if a record has specific keys
|
|
54
|
+
*/
|
|
55
|
+
export const isRecord = (u) => isNonNullObject(u) && !Array.isArray(u);
|
|
56
|
+
/**
|
|
57
|
+
* Type guard that checks if a value is a mutable record.
|
|
58
|
+
*
|
|
59
|
+
* This function has the same runtime behavior as {@link isRecord} (non-null,
|
|
60
|
+
* non-array object check), but narrows the type to `MutableRecord<string,
|
|
61
|
+
* unknown>`, which is useful when you need to add or overwrite properties on
|
|
62
|
+
* the narrowed object.
|
|
63
|
+
*
|
|
64
|
+
* **Type Narrowing Behavior:**
|
|
65
|
+
*
|
|
66
|
+
* - Narrows `unknown` to `MutableRecord<string, unknown>`
|
|
67
|
+
* - Excludes `null`, `undefined`, primitives, functions, and arrays
|
|
68
|
+
* - Returns `true` for every other non-null object (see {@link isRecord} for
|
|
69
|
+
* details on non-plain objects such as `Date`, `Map`, and `Set`)
|
|
70
|
+
*
|
|
71
|
+
* **Implementation:** This is a type alias for {@link isRecord}.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
*
|
|
75
|
+
* ```ts
|
|
76
|
+
* const obj: unknown = { foo: 1 } as const;
|
|
77
|
+
*
|
|
78
|
+
* if (isMutableRecord(obj)) {
|
|
79
|
+
* obj['bar'] = 2; // Safe: obj is now known to be a mutable record
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @param u - The value to check
|
|
84
|
+
* @returns `true` if `u` is a non-null, non-array object, `false` otherwise.
|
|
85
|
+
* When `true`, TypeScript narrows the type to `MutableRecord<string,
|
|
86
|
+
* unknown>`.
|
|
87
|
+
* @see {@link isRecord} - For the underlying implementation and more details
|
|
88
|
+
*/
|
|
89
|
+
export const isMutableRecord = isRecord;
|
|
90
|
+
//# sourceMappingURL=is-record.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-record.mjs","sources":["../../src/guard/is-record.mts"],"
|
|
1
|
+
{"version":3,"file":"is-record.mjs","sourceRoot":"","sources":["../../src/guard/is-record.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAsB,EAAE,CACzD,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,eAAe,GAEe,QAAQ,CAAC"}
|
package/dist/guard/is-type.mjs
CHANGED
|
@@ -1,19 +1,404 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Type guard that checks if a value is `undefined`.
|
|
3
|
+
*
|
|
4
|
+
* **Type Narrowing Behavior:**
|
|
5
|
+
*
|
|
6
|
+
* - Narrows the input type to `undefined` when `true`
|
|
7
|
+
* - Useful for explicit undefined checks
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* const values: readonly (number | undefined)[] = [1, undefined, 2] as const;
|
|
13
|
+
*
|
|
14
|
+
* const undefinedValues = values.filter(isUndefined);
|
|
15
|
+
*
|
|
16
|
+
* assert.deepStrictEqual(undefinedValues, [undefined]);
|
|
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`.
|
|
22
|
+
*/
|
|
23
|
+
export const isUndefined = (u) => u === undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Type guard that checks if a value is not `undefined`.
|
|
26
|
+
*
|
|
27
|
+
* **Type Narrowing Behavior:**
|
|
28
|
+
*
|
|
29
|
+
* - Excludes `undefined` from the input type when `true`
|
|
30
|
+
* - Preserves all other types in the union
|
|
31
|
+
* - Commonly used to filter out undefined values
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* const values: readonly (number | undefined)[] = [1, undefined, 2] as const;
|
|
37
|
+
*
|
|
38
|
+
* const definedValues = values.filter(isNotUndefined);
|
|
39
|
+
*
|
|
40
|
+
* assert.deepStrictEqual(definedValues, [1, 2]);
|
|
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.
|
|
47
|
+
*/
|
|
48
|
+
export const isNotUndefined = (u) => u !== undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Type guard that checks if a value is a boolean.
|
|
51
|
+
*
|
|
52
|
+
* **Type Narrowing Behavior:**
|
|
53
|
+
*
|
|
54
|
+
* - Narrows `unknown` to `boolean` when `true`
|
|
55
|
+
* - Preserves literal boolean types (`true | false`)
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
*
|
|
59
|
+
* ```ts
|
|
60
|
+
* const flags: readonly unknown[] = [true, 'no', false] as const;
|
|
61
|
+
*
|
|
62
|
+
* const booleans = flags.filter(isBoolean);
|
|
63
|
+
*
|
|
64
|
+
* assert.deepStrictEqual(booleans, [true, false]);
|
|
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`.
|
|
70
|
+
*/
|
|
71
|
+
export const isBoolean = (u) => typeof u === 'boolean';
|
|
72
|
+
/**
|
|
73
|
+
* Type guard that checks if a value is not a boolean.
|
|
74
|
+
*
|
|
75
|
+
* **Type Narrowing Behavior:**
|
|
76
|
+
*
|
|
77
|
+
* - Excludes `boolean` from the input type when `true`
|
|
78
|
+
* - Preserves all other types in the union
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* const flags: readonly unknown[] = [true, 'no', false] as const;
|
|
84
|
+
*
|
|
85
|
+
* const nonBooleans = flags.filter(isNotBoolean);
|
|
86
|
+
*
|
|
87
|
+
* assert.deepStrictEqual(nonBooleans, ['no']);
|
|
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.
|
|
94
|
+
*/
|
|
95
|
+
export const isNotBoolean = (u) => typeof u !== 'boolean';
|
|
96
|
+
/**
|
|
97
|
+
* Type guard that checks if a value is a number.
|
|
98
|
+
*
|
|
99
|
+
* **Type Narrowing Behavior:**
|
|
100
|
+
*
|
|
101
|
+
* - Narrows `unknown` to `number` when `true`
|
|
102
|
+
* - Includes `NaN`, `Infinity`, and `-Infinity` as valid numbers
|
|
103
|
+
* - Preserves literal number types when possible
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
*
|
|
107
|
+
* ```ts
|
|
108
|
+
* const mixed: readonly unknown[] = [1, '2', 3] as const;
|
|
109
|
+
*
|
|
110
|
+
* const numbers = mixed.filter(isNumber);
|
|
111
|
+
*
|
|
112
|
+
* assert.deepStrictEqual(numbers, [1, 3]);
|
|
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`.
|
|
118
|
+
*/
|
|
119
|
+
export const isNumber = (u) => typeof u === 'number';
|
|
120
|
+
/**
|
|
121
|
+
* Type guard that checks if a value is not a number.
|
|
122
|
+
*
|
|
123
|
+
* **Type Narrowing Behavior:**
|
|
124
|
+
*
|
|
125
|
+
* - Excludes `number` from the input type when `true`
|
|
126
|
+
* - Preserves all other types in the union
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
*
|
|
130
|
+
* ```ts
|
|
131
|
+
* const mixed: readonly unknown[] = [1, '2', 3] as const;
|
|
132
|
+
*
|
|
133
|
+
* const nonNumbers = mixed.filter(isNotNumber);
|
|
134
|
+
*
|
|
135
|
+
* assert.deepStrictEqual(nonNumbers, ['2']);
|
|
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.
|
|
142
|
+
*/
|
|
143
|
+
export const isNotNumber = (u) => typeof u !== 'number';
|
|
144
|
+
/**
|
|
145
|
+
* Type guard that checks if a value is a bigint.
|
|
146
|
+
*
|
|
147
|
+
* **Type Narrowing Behavior:**
|
|
148
|
+
*
|
|
149
|
+
* - Narrows `unknown` to `bigint` when `true`
|
|
150
|
+
* - Identifies values created with `BigInt()` constructor or `n` suffix
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
*
|
|
154
|
+
* ```ts
|
|
155
|
+
* const values: readonly unknown[] = [1n, 2, 3n] as const;
|
|
156
|
+
*
|
|
157
|
+
* const bigints = values.filter(isBigint);
|
|
158
|
+
*
|
|
159
|
+
* assert.deepStrictEqual(bigints, [1n, 3n]);
|
|
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`.
|
|
165
|
+
*/
|
|
166
|
+
export const isBigint = (u) => typeof u === 'bigint';
|
|
167
|
+
/**
|
|
168
|
+
* Type guard that checks if a value is not a bigint.
|
|
169
|
+
*
|
|
170
|
+
* **Type Narrowing Behavior:**
|
|
171
|
+
*
|
|
172
|
+
* - Excludes `bigint` from the input type when `true`
|
|
173
|
+
* - Preserves all other types in the union
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
*
|
|
177
|
+
* ```ts
|
|
178
|
+
* const values: readonly unknown[] = [1n, 2, 3n] as const;
|
|
179
|
+
*
|
|
180
|
+
* const nonBigints = values.filter(isNotBigint);
|
|
181
|
+
*
|
|
182
|
+
* assert.deepStrictEqual(nonBigints, [2]);
|
|
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.
|
|
189
|
+
*/
|
|
190
|
+
export const isNotBigint = (u) => typeof u !== 'bigint';
|
|
191
|
+
/**
|
|
192
|
+
* Type guard that checks if a value is a string.
|
|
193
|
+
*
|
|
194
|
+
* **Type Narrowing Behavior:**
|
|
195
|
+
*
|
|
196
|
+
* - Narrows `unknown` to `string` when `true`
|
|
197
|
+
* - Preserves literal string types when possible
|
|
198
|
+
* - Includes empty strings
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
*
|
|
202
|
+
* ```ts
|
|
203
|
+
* const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;
|
|
204
|
+
*
|
|
205
|
+
* const strings = values.filter(isString);
|
|
206
|
+
*
|
|
207
|
+
* assert.deepStrictEqual(strings, ['Ada', 'Lovelace']);
|
|
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`.
|
|
213
|
+
*/
|
|
214
|
+
export const isString = (u) => typeof u === 'string';
|
|
215
|
+
/**
|
|
216
|
+
* Type guard that checks if a value is not a string.
|
|
217
|
+
*
|
|
218
|
+
* **Type Narrowing Behavior:**
|
|
219
|
+
*
|
|
220
|
+
* - Excludes `string` from the input type when `true`
|
|
221
|
+
* - Preserves all other types in the union
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
*
|
|
225
|
+
* ```ts
|
|
226
|
+
* const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;
|
|
227
|
+
*
|
|
228
|
+
* const nonStrings = values.filter(isNotString);
|
|
229
|
+
*
|
|
230
|
+
* assert.deepStrictEqual(nonStrings, [42]);
|
|
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.
|
|
237
|
+
*/
|
|
238
|
+
export const isNotString = (u) => typeof u !== 'string';
|
|
239
|
+
/**
|
|
240
|
+
* Type guard that checks if a value is a symbol.
|
|
241
|
+
*
|
|
242
|
+
* **Type Narrowing Behavior:**
|
|
243
|
+
*
|
|
244
|
+
* - Narrows `unknown` to `symbol` when `true`
|
|
245
|
+
* - Identifies values created with `Symbol()` constructor
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
*
|
|
249
|
+
* ```ts
|
|
250
|
+
* const id = Symbol('id');
|
|
251
|
+
*
|
|
252
|
+
* const shared = Symbol.for('shared');
|
|
253
|
+
*
|
|
254
|
+
* const tokens: readonly unknown[] = [id, 'shared', shared] as const;
|
|
255
|
+
*
|
|
256
|
+
* const symbols = tokens.filter(isSymbol);
|
|
257
|
+
*
|
|
258
|
+
* assert.deepStrictEqual(symbols, [id, shared]);
|
|
259
|
+
* ```
|
|
260
|
+
*
|
|
261
|
+
* @param u - The value to check
|
|
262
|
+
* @returns `true` if `u` is a symbol, `false` otherwise. When `true`,
|
|
263
|
+
* TypeScript narrows the type to `symbol`.
|
|
264
|
+
*/
|
|
265
|
+
export const isSymbol = (u) => typeof u === 'symbol';
|
|
266
|
+
/**
|
|
267
|
+
* Type guard that checks if a value is not a symbol.
|
|
268
|
+
*
|
|
269
|
+
* **Type Narrowing Behavior:**
|
|
270
|
+
*
|
|
271
|
+
* - Excludes `symbol` from the input type when `true`
|
|
272
|
+
* - Preserves all other types in the union
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
*
|
|
276
|
+
* ```ts
|
|
277
|
+
* const id = Symbol('id');
|
|
278
|
+
*
|
|
279
|
+
* const tokens: readonly unknown[] = [id, 'shared'] as const;
|
|
280
|
+
*
|
|
281
|
+
* const nonSymbols = tokens.filter(isNotSymbol);
|
|
282
|
+
*
|
|
283
|
+
* assert.deepStrictEqual(nonSymbols, ['shared']);
|
|
284
|
+
* ```
|
|
285
|
+
*
|
|
286
|
+
* @template T - The type of the input value
|
|
287
|
+
* @param u - The value to check
|
|
288
|
+
* @returns `true` if `u` is not a symbol, `false` otherwise. When `true`,
|
|
289
|
+
* TypeScript excludes `symbol` from the type.
|
|
290
|
+
*/
|
|
291
|
+
export const isNotSymbol = (u) => typeof u !== 'symbol';
|
|
292
|
+
/**
|
|
293
|
+
* Type guard that checks if a value is `null`.
|
|
294
|
+
*
|
|
295
|
+
* **Type Narrowing Behavior:**
|
|
296
|
+
*
|
|
297
|
+
* - Narrows the input type to `null` when `true`
|
|
298
|
+
* - Useful for explicit null checks
|
|
299
|
+
*
|
|
300
|
+
* @example
|
|
301
|
+
*
|
|
302
|
+
* ```ts
|
|
303
|
+
* const values: readonly (number | null)[] = [null, 5] as const;
|
|
304
|
+
*
|
|
305
|
+
* const nullValues = values.filter(isNull);
|
|
306
|
+
*
|
|
307
|
+
* assert.deepStrictEqual(nullValues, [null]);
|
|
308
|
+
* ```
|
|
309
|
+
*
|
|
310
|
+
* @param u - The value to check
|
|
311
|
+
* @returns `true` if `u` is `null`, `false` otherwise. When `true`, TypeScript
|
|
312
|
+
* narrows the type to `null`.
|
|
313
|
+
*/
|
|
314
|
+
export const isNull = (u) => u === null;
|
|
315
|
+
/**
|
|
316
|
+
* Type guard that checks if a value is not `null`.
|
|
317
|
+
*
|
|
318
|
+
* **Type Narrowing Behavior:**
|
|
319
|
+
*
|
|
320
|
+
* - Excludes `null` from the input type when `true`
|
|
321
|
+
* - Preserves all other types including `undefined`
|
|
322
|
+
* - Commonly used to filter out null values
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
*
|
|
326
|
+
* ```ts
|
|
327
|
+
* const values: readonly (number | null)[] = [null, 5] as const;
|
|
328
|
+
*
|
|
329
|
+
* const nonNullValues = values.filter(isNotNull);
|
|
330
|
+
*
|
|
331
|
+
* assert.deepStrictEqual(nonNullValues, [5]);
|
|
332
|
+
* ```
|
|
333
|
+
*
|
|
334
|
+
* @template T - The type of the input value (which could be `null`)
|
|
335
|
+
* @param u - The value to check
|
|
336
|
+
* @returns `true` if `u` is not `null`, `false` otherwise. When `true`,
|
|
337
|
+
* TypeScript excludes `null` from the type.
|
|
338
|
+
*/
|
|
339
|
+
export const isNotNull = (u) => u !== null;
|
|
340
|
+
/**
|
|
341
|
+
* Type guard that checks if a value is `null` or `undefined` (nullish).
|
|
342
|
+
*
|
|
343
|
+
* This function uses the loose equality operator (`==`) to check for both
|
|
344
|
+
* `null` and `undefined` in a single comparison, which is the standard
|
|
345
|
+
* JavaScript idiom for nullish checks.
|
|
346
|
+
*
|
|
347
|
+
* **Type Narrowing Behavior:**
|
|
348
|
+
*
|
|
349
|
+
* - Narrows the input type to `null | undefined` when `true`
|
|
350
|
+
* - Useful for checking if a value is "nullish" (either null or undefined)
|
|
351
|
+
*
|
|
352
|
+
* @example
|
|
353
|
+
*
|
|
354
|
+
* ```ts
|
|
355
|
+
* const values: readonly (string | null | undefined)[] = [
|
|
356
|
+
* 'Ada',
|
|
357
|
+
* null,
|
|
358
|
+
* undefined,
|
|
359
|
+
* ] as const;
|
|
360
|
+
*
|
|
361
|
+
* const nullishValues = values.filter(isNullish);
|
|
362
|
+
*
|
|
363
|
+
* assert.deepStrictEqual(nullishValues, [null, undefined]);
|
|
364
|
+
* ```
|
|
365
|
+
*
|
|
366
|
+
* @param u - The value to check
|
|
367
|
+
* @returns `true` if `u` is `null` or `undefined`, `false` otherwise. When
|
|
368
|
+
* `true`, TypeScript narrows the type to `null | undefined`.
|
|
369
|
+
*/
|
|
370
|
+
export const isNullish = (u) => u == null;
|
|
371
|
+
/**
|
|
372
|
+
* Type guard that checks if a value is not `null` or `undefined` (non-nullish).
|
|
373
|
+
*
|
|
374
|
+
* This function uses the loose inequality operator (`!=`) to check that a value
|
|
375
|
+
* is neither `null` nor `undefined` in a single comparison. This is equivalent
|
|
376
|
+
* to TypeScript's `NonNullable<T>` utility type.
|
|
377
|
+
*
|
|
378
|
+
* **Type Narrowing Behavior:**
|
|
379
|
+
*
|
|
380
|
+
* - Excludes both `null` and `undefined` from the input type when `true`
|
|
381
|
+
* - Equivalent to applying TypeScript's `NonNullable<T>` utility type
|
|
382
|
+
* - Commonly used to filter out nullish values from arrays
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
*
|
|
386
|
+
* ```ts
|
|
387
|
+
* const values: readonly (string | null | undefined)[] = [
|
|
388
|
+
* 'Ada',
|
|
389
|
+
* null,
|
|
390
|
+
* undefined,
|
|
391
|
+
* ] as const;
|
|
392
|
+
*
|
|
393
|
+
* const definedValues = values.filter(isNonNullish);
|
|
394
|
+
*
|
|
395
|
+
* assert.deepStrictEqual(definedValues, ['Ada']);
|
|
396
|
+
* ```
|
|
397
|
+
*
|
|
398
|
+
* @template T - The type of the input value
|
|
399
|
+
* @param u - The value to check
|
|
400
|
+
* @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.
|
|
401
|
+
* When `true`, TypeScript narrows the type to `NonNullable<T>`.
|
|
402
|
+
*/
|
|
403
|
+
export const isNonNullish = (u) => u != null;
|
|
404
|
+
//# sourceMappingURL=is-type.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-type.mjs","sources":["../../src/guard/is-type.mts"],"sourcesContent":["import { type RelaxedExclude } from 'ts-type-forge';\n\n/**\n * Type guard that checks if a value is `undefined`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows the input type to `undefined` when `true`\n * - Useful for explicit undefined checks\n *\n * @example\n *\n * ```ts\n * const values: readonly (number | undefined)[] = [1, undefined, 2] as const;\n *\n * const undefinedValues = values.filter(isUndefined);\n *\n * assert.deepStrictEqual(undefinedValues, [undefined]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is `undefined`, `false` otherwise. When `true`,\n * TypeScript narrows the type to `undefined`.\n */\nexport const isUndefined = (u: unknown): u is undefined => u === undefined;\n\n/**\n * Type guard that checks if a value is not `undefined`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `undefined` from the input type when `true`\n * - Preserves all other types in the union\n * - Commonly used to filter out undefined values\n *\n * @example\n *\n * ```ts\n * const values: readonly (number | undefined)[] = [1, undefined, 2] as const;\n *\n * const definedValues = values.filter(isNotUndefined);\n *\n * assert.deepStrictEqual(definedValues, [1, 2]);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not `undefined`, `false` otherwise. When `true`,\n * TypeScript excludes `undefined` from the type.\n */\nexport const isNotUndefined = <T,>(u: T): u is RelaxedExclude<T, undefined> =>\n u !== undefined;\n\n/**\n * Type guard that checks if a value is a boolean.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `boolean` when `true`\n * - Preserves literal boolean types (`true | false`)\n *\n * @example\n *\n * ```ts\n * const flags: readonly unknown[] = [true, 'no', false] as const;\n *\n * const booleans = flags.filter(isBoolean);\n *\n * assert.deepStrictEqual(booleans, [true, false]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a boolean, `false` otherwise. When `true`,\n * TypeScript narrows the type to `boolean`.\n */\nexport const isBoolean = (u: unknown): u is boolean => typeof u === 'boolean';\n\n/**\n * Type guard that checks if a value is not a boolean.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `boolean` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const flags: readonly unknown[] = [true, 'no', false] as const;\n *\n * const nonBooleans = flags.filter(isNotBoolean);\n *\n * assert.deepStrictEqual(nonBooleans, ['no']);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a boolean, `false` otherwise. When `true`,\n * TypeScript excludes `boolean` from the type.\n */\nexport const isNotBoolean = <T,>(u: T): u is RelaxedExclude<T, boolean> =>\n typeof u !== 'boolean';\n\n/**\n * Type guard that checks if a value is a number.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `number` when `true`\n * - Includes `NaN`, `Infinity`, and `-Infinity` as valid numbers\n * - Preserves literal number types when possible\n *\n * @example\n *\n * ```ts\n * const mixed: readonly unknown[] = [1, '2', 3] as const;\n *\n * const numbers = mixed.filter(isNumber);\n *\n * assert.deepStrictEqual(numbers, [1, 3]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a number, `false` otherwise. When `true`,\n * TypeScript narrows the type to `number`.\n */\nexport const isNumber = (u: unknown): u is number => typeof u === 'number';\n\n/**\n * Type guard that checks if a value is not a number.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `number` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const mixed: readonly unknown[] = [1, '2', 3] as const;\n *\n * const nonNumbers = mixed.filter(isNotNumber);\n *\n * assert.deepStrictEqual(nonNumbers, ['2']);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a number, `false` otherwise. When `true`,\n * TypeScript excludes `number` from the type.\n */\nexport const isNotNumber = <T,>(u: T): u is RelaxedExclude<T, number> =>\n typeof u !== 'number';\n\n/**\n * Type guard that checks if a value is a bigint.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `bigint` when `true`\n * - Identifies values created with `BigInt()` constructor or `n` suffix\n *\n * @example\n *\n * ```ts\n * const values: readonly unknown[] = [1n, 2, 3n] as const;\n *\n * const bigints = values.filter(isBigint);\n *\n * assert.deepStrictEqual(bigints, [1n, 3n]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a bigint, `false` otherwise. When `true`,\n * TypeScript narrows the type to `bigint`.\n */\nexport const isBigint = (u: unknown): u is bigint => typeof u === 'bigint';\n\n/**\n * Type guard that checks if a value is not a bigint.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `bigint` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const values: readonly unknown[] = [1n, 2, 3n] as const;\n *\n * const nonBigints = values.filter(isNotBigint);\n *\n * assert.deepStrictEqual(nonBigints, [2]);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a bigint, `false` otherwise. When `true`,\n * TypeScript excludes `bigint` from the type.\n */\nexport const isNotBigint = <T,>(u: T): u is RelaxedExclude<T, bigint> =>\n typeof u !== 'bigint';\n\n/**\n * Type guard that checks if a value is a string.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `string` when `true`\n * - Preserves literal string types when possible\n * - Includes empty strings\n *\n * @example\n *\n * ```ts\n * const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;\n *\n * const strings = values.filter(isString);\n *\n * assert.deepStrictEqual(strings, ['Ada', 'Lovelace']);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a string, `false` otherwise. When `true`,\n * TypeScript narrows the type to `string`.\n */\nexport const isString = (u: unknown): u is string => typeof u === 'string';\n\n/**\n * Type guard that checks if a value is not a string.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `string` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const values: readonly unknown[] = ['Ada', 42, 'Lovelace'] as const;\n *\n * const nonStrings = values.filter(isNotString);\n *\n * assert.deepStrictEqual(nonStrings, [42]);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a string, `false` otherwise. When `true`,\n * TypeScript excludes `string` from the type.\n */\nexport const isNotString = <T,>(u: T): u is RelaxedExclude<T, string> =>\n typeof u !== 'string';\n\n/**\n * Type guard that checks if a value is a symbol.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows `unknown` to `symbol` when `true`\n * - Identifies values created with `Symbol()` constructor\n *\n * @example\n *\n * ```ts\n * const id = Symbol('id');\n *\n * const shared = Symbol.for('shared');\n *\n * const tokens: readonly unknown[] = [id, 'shared', shared] as const;\n *\n * const symbols = tokens.filter(isSymbol);\n *\n * assert.deepStrictEqual(symbols, [id, shared]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is a symbol, `false` otherwise. When `true`,\n * TypeScript narrows the type to `symbol`.\n */\nexport const isSymbol = (u: unknown): u is symbol => typeof u === 'symbol';\n\n/**\n * Type guard that checks if a value is not a symbol.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `symbol` from the input type when `true`\n * - Preserves all other types in the union\n *\n * @example\n *\n * ```ts\n * const id = Symbol('id');\n *\n * const tokens: readonly unknown[] = [id, 'shared'] as const;\n *\n * const nonSymbols = tokens.filter(isNotSymbol);\n *\n * assert.deepStrictEqual(nonSymbols, ['shared']);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not a symbol, `false` otherwise. When `true`,\n * TypeScript excludes `symbol` from the type.\n */\nexport const isNotSymbol = <T,>(u: T): u is RelaxedExclude<T, symbol> =>\n typeof u !== 'symbol';\n\n/**\n * Type guard that checks if a value is `null`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows the input type to `null` when `true`\n * - Useful for explicit null checks\n *\n * @example\n *\n * ```ts\n * const values: readonly (number | null)[] = [null, 5] as const;\n *\n * const nullValues = values.filter(isNull);\n *\n * assert.deepStrictEqual(nullValues, [null]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is `null`, `false` otherwise. When `true`, TypeScript\n * narrows the type to `null`.\n */\nexport const isNull = (u: unknown): u is null => u === null;\n\n/**\n * Type guard that checks if a value is not `null`.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes `null` from the input type when `true`\n * - Preserves all other types including `undefined`\n * - Commonly used to filter out null values\n *\n * @example\n *\n * ```ts\n * const values: readonly (number | null)[] = [null, 5] as const;\n *\n * const nonNullValues = values.filter(isNotNull);\n *\n * assert.deepStrictEqual(nonNullValues, [5]);\n * ```\n *\n * @template T - The type of the input value (which could be `null`)\n * @param u - The value to check\n * @returns `true` if `u` is not `null`, `false` otherwise. When `true`,\n * TypeScript excludes `null` from the type.\n */\nexport const isNotNull = <T,>(u: T | null): u is T => u !== null;\n\n/**\n * Type guard that checks if a value is `null` or `undefined` (nullish).\n *\n * This function uses the loose equality operator (`==`) to check for both\n * `null` and `undefined` in a single comparison, which is the standard\n * JavaScript idiom for nullish checks.\n *\n * **Type Narrowing Behavior:**\n *\n * - Narrows the input type to `null | undefined` when `true`\n * - Useful for checking if a value is \"nullish\" (either null or undefined)\n *\n * @example\n *\n * ```ts\n * const values: readonly (string | null | undefined)[] = [\n * 'Ada',\n * null,\n * undefined,\n * ] as const;\n *\n * const nullishValues = values.filter(isNullish);\n *\n * assert.deepStrictEqual(nullishValues, [null, undefined]);\n * ```\n *\n * @param u - The value to check\n * @returns `true` if `u` is `null` or `undefined`, `false` otherwise. When\n * `true`, TypeScript narrows the type to `null | undefined`.\n */\nexport const isNullish = (u: unknown): u is null | undefined => u == null;\n\n/**\n * Type guard that checks if a value is not `null` or `undefined` (non-nullish).\n *\n * This function uses the loose inequality operator (`!=`) to check that a value\n * is neither `null` nor `undefined` in a single comparison. This is equivalent\n * to TypeScript's `NonNullable<T>` utility type.\n *\n * **Type Narrowing Behavior:**\n *\n * - Excludes both `null` and `undefined` from the input type when `true`\n * - Equivalent to applying TypeScript's `NonNullable<T>` utility type\n * - Commonly used to filter out nullish values from arrays\n *\n * @example\n *\n * ```ts\n * const values: readonly (string | null | undefined)[] = [\n * 'Ada',\n * null,\n * undefined,\n * ] as const;\n *\n * const definedValues = values.filter(isNonNullish);\n *\n * assert.deepStrictEqual(definedValues, ['Ada']);\n * ```\n *\n * @template T - The type of the input value\n * @param u - The value to check\n * @returns `true` if `u` is not `null` and not `undefined`, `false` otherwise.\n * When `true`, TypeScript narrows the type to `NonNullable<T>`.\n */\nexport const isNonNullish = <T,>(u: T): u is NonNullable<T> => u != null;\n"],"names":[],"mappings":"AAwBO,MAAM,WAAA,GAAc,CAAC,CAAA,KAA+B,CAAA,KAAM;AA0B1D,MAAM,cAAA,GAAiB,CAAK,CAAA,KACjC,CAAA,KAAM;AAwBD,MAAM,SAAA,GAAY,CAAC,CAAA,KAA6B,OAAO,CAAA,KAAM;AAyB7D,MAAM,YAAA,GAAe,CAAK,CAAA,KAC/B,OAAO,CAAA,KAAM;AAyBR,MAAM,QAAA,GAAW,CAAC,CAAA,KAA4B,OAAO,CAAA,KAAM;AAyB3D,MAAM,WAAA,GAAc,CAAK,CAAA,KAC9B,OAAO,CAAA,KAAM;AAwBR,MAAM,QAAA,GAAW,CAAC,CAAA,KAA4B,OAAO,CAAA,KAAM;AAyB3D,MAAM,WAAA,GAAc,CAAK,CAAA,KAC9B,OAAO,CAAA,KAAM;AAyBR,MAAM,QAAA,GAAW,CAAC,CAAA,KAA4B,OAAO,CAAA,KAAM;AAyB3D,MAAM,WAAA,GAAc,CAAK,CAAA,KAC9B,OAAO,CAAA,KAAM;AA4BR,MAAM,QAAA,GAAW,CAAC,CAAA,KAA4B,OAAO,CAAA,KAAM;AA2B3D,MAAM,WAAA,GAAc,CAAK,CAAA,KAC9B,OAAO,CAAA,KAAM;AAwBR,MAAM,MAAA,GAAS,CAAC,CAAA,KAA0B,CAAA,KAAM;AA0BhD,MAAM,SAAA,GAAY,CAAK,CAAA,KAAwB,CAAA,KAAM;AAgCrD,MAAM,SAAA,GAAY,CAAC,CAAA,KAAsC,CAAA,IAAK;AAkC9D,MAAM,YAAA,GAAe,CAAK,CAAA,KAA8B,CAAA,IAAK;;;;"}
|
|
1
|
+
{"version":3,"file":"is-type.mjs","sourceRoot":"","sources":["../../src/guard/is-type.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAU,EAAkB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAK,CAAI,EAAqC,EAAE,CAC5E,CAAC,KAAK,SAAS,CAAC;AAElB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAgB,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAK,CAAI,EAAmC,EAAE,CACxE,OAAO,CAAC,KAAK,SAAS,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAK,CAAI,EAAkC,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAK,CAAI,EAAkC,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAK,CAAI,EAAkC,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAK,CAAI,EAAkC,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAK,CAAW,EAAU,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAyB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAK,CAAI,EAAuB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC"}
|
package/dist/guard/key-is-in.mjs
CHANGED
|
@@ -1,4 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Type guard that checks if a key exists as an own property in an object.
|
|
3
|
+
*
|
|
4
|
+
* This function is similar to `hasKey()` but with reversed parameter order and
|
|
5
|
+
* different type narrowing behavior. While `hasKey()` narrows the object type,
|
|
6
|
+
* `keyIsIn()` narrows the key type to be a valid key of the given object.
|
|
7
|
+
*
|
|
8
|
+
* **Type Narrowing Behavior:**
|
|
9
|
+
*
|
|
10
|
+
* - Narrows the key type to be a key that exists in the object (`K & keyof R`)
|
|
11
|
+
* - Useful when you have a dynamic key and want to ensure it's valid for a
|
|
12
|
+
* specific object
|
|
13
|
+
* - The object type remains unchanged
|
|
14
|
+
*
|
|
15
|
+
* **Implementation:** Uses `Object.hasOwn()` to check for own properties (not
|
|
16
|
+
* inherited).
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* const user = { id: 1, name: 'Ada' } as const;
|
|
22
|
+
*
|
|
23
|
+
* const maybeKey: string = 'name';
|
|
24
|
+
*
|
|
25
|
+
* if (keyIsIn(maybeKey, user)) {
|
|
26
|
+
* assert.isTrue(user[maybeKey] === 'Ada');
|
|
27
|
+
* } else {
|
|
28
|
+
* assert.fail();
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @template K - The type of the key to check, must extend PropertyKey (string |
|
|
33
|
+
* number | symbol)
|
|
34
|
+
* @template R - The type of the record (object), must extend UnknownRecord
|
|
35
|
+
* @param key - The key to check for
|
|
36
|
+
* @param obj - The object to check within
|
|
37
|
+
* @returns `true` if `key` is an own property of `obj`, `false` otherwise. When
|
|
38
|
+
* `true`, TypeScript narrows the key type to be a valid key of the object.
|
|
39
|
+
* @see {@link hasKey} - Similar function that narrows the object type instead of the key type
|
|
40
|
+
*/
|
|
41
|
+
export const keyIsIn = (key, obj) => Object.hasOwn(obj, key);
|
|
42
|
+
//# sourceMappingURL=key-is-in.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-is-in.mjs","sources":["../../src/guard/key-is-in.mts"],"
|
|
1
|
+
{"version":3,"file":"key-is-in.mjs","sourceRoot":"","sources":["../../src/guard/key-is-in.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAIrB,GAAM,EACN,GAAM,EACuB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC"}
|