ts-data-forge 3.3.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -13
- package/dist/array/impl/array-utils-creation.d.mts +116 -0
- package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-creation.mjs +110 -0
- package/dist/array/impl/array-utils-creation.mjs.map +1 -0
- package/dist/array/impl/array-utils-element-access.d.mts +61 -0
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
- package/dist/array/impl/array-utils-element-access.mjs +66 -0
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
- package/dist/array/impl/array-utils-iterators.d.mts +59 -0
- package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
- package/dist/array/impl/array-utils-iterators.mjs +104 -0
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
- package/dist/array/impl/array-utils-modification.d.mts +154 -0
- package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
- package/dist/array/impl/array-utils-modification.mjs +139 -0
- package/dist/array/impl/array-utils-modification.mjs.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
- package/dist/array/impl/array-utils-search.d.mts +179 -0
- package/dist/array/impl/array-utils-search.d.mts.map +1 -0
- package/dist/array/impl/array-utils-search.mjs +153 -0
- package/dist/array/impl/array-utils-search.mjs.map +1 -0
- package/dist/array/impl/array-utils-set-op.d.mts +100 -0
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
- package/dist/array/impl/array-utils-set-op.mjs +137 -0
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
- package/dist/array/impl/array-utils-size.d.mts +24 -0
- package/dist/array/impl/array-utils-size.d.mts.map +1 -0
- package/dist/array/impl/array-utils-size.mjs +28 -0
- package/dist/array/impl/array-utils-size.mjs.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
- package/dist/array/impl/array-utils-slicing.d.mts +120 -0
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slicing.mjs +140 -0
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
- package/dist/array/impl/array-utils-transformation.d.mts +348 -0
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-transformation.mjs +331 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
- package/dist/array/impl/array-utils-validation.d.mts +149 -0
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-validation.mjs +166 -0
- package/dist/array/impl/array-utils-validation.mjs.map +1 -0
- package/dist/array/impl/index.d.mts +13 -0
- package/dist/array/impl/index.d.mts.map +1 -0
- package/dist/array/impl/index.mjs +13 -0
- package/dist/array/impl/index.mjs.map +1 -0
- package/dist/array/index.d.mts +1 -1
- package/dist/array/index.d.mts.map +1 -1
- package/dist/array/index.mjs +2 -1
- package/dist/array/index.mjs.map +1 -1
- package/dist/collections/imap-mapped.d.mts +83 -253
- package/dist/collections/imap-mapped.d.mts.map +1 -1
- package/dist/collections/imap-mapped.mjs +33 -164
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +436 -163
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +74 -94
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +828 -345
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +200 -242
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +397 -205
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +102 -184
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts +155 -135
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +55 -156
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +154 -154
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +54 -203
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.d.mts +1 -0
- package/dist/entry-point.d.mts.map +1 -1
- package/dist/entry-point.mjs +2 -1
- package/dist/entry-point.mjs.map +1 -1
- package/dist/expect-type.d.mts +43 -172
- package/dist/expect-type.d.mts.map +1 -1
- package/dist/expect-type.mjs +43 -172
- package/dist/expect-type.mjs.map +1 -1
- package/dist/functional/match.d.mts +35 -140
- package/dist/functional/match.d.mts.map +1 -1
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional.d.mts +282 -160
- package/dist/functional/optional.d.mts.map +1 -1
- package/dist/functional/optional.mjs +131 -71
- package/dist/functional/optional.mjs.map +1 -1
- package/dist/functional/pipe.d.mts +59 -113
- package/dist/functional/pipe.d.mts.map +1 -1
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result.d.mts +433 -332
- package/dist/functional/result.d.mts.map +1 -1
- package/dist/functional/result.mjs +233 -239
- package/dist/functional/result.mjs.map +1 -1
- package/dist/globals.d.mts +12 -5
- package/dist/guard/has-key.d.mts +23 -74
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +23 -74
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/is-non-empty-string.d.mts +20 -87
- package/dist/guard/is-non-empty-string.d.mts.map +1 -1
- package/dist/guard/is-non-empty-string.mjs +20 -87
- package/dist/guard/is-non-empty-string.mjs.map +1 -1
- package/dist/guard/is-non-null-object.d.mts +14 -84
- package/dist/guard/is-non-null-object.d.mts.map +1 -1
- package/dist/guard/is-non-null-object.mjs +14 -84
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-primitive.d.mts +13 -126
- package/dist/guard/is-primitive.d.mts.map +1 -1
- package/dist/guard/is-primitive.mjs +13 -126
- package/dist/guard/is-primitive.mjs.map +1 -1
- package/dist/guard/is-record.d.mts +21 -132
- package/dist/guard/is-record.d.mts.map +1 -1
- package/dist/guard/is-record.mjs +21 -132
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.d.mts +201 -238
- package/dist/guard/is-type.d.mts.map +1 -1
- package/dist/guard/is-type.mjs +201 -238
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.d.mts +22 -139
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +22 -139
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.d.mts +0 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/range.d.mts +29 -62
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts +191 -121
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +238 -136
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +24 -156
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +27 -159
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +122 -120
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +122 -120
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +22 -30
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +22 -30
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +22 -31
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +22 -31
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +24 -34
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +26 -35
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +15 -30
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +15 -30
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +27 -35
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +29 -36
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +29 -43
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +133 -123
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +133 -123
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +24 -35
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +24 -35
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +24 -35
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +24 -35
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +160 -34
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +24 -35
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +24 -35
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +26 -36
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +26 -36
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +140 -99
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +142 -101
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +24 -33
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +25 -34
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +121 -30
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +121 -30
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +26 -34
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +26 -34
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +26 -68
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +26 -68
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +37 -101
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +39 -170
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +45 -55
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +46 -155
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/num.d.mts +145 -206
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +143 -199
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +97 -21
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +91 -20
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +126 -208
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +68 -102
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/cast-mutable.d.mts +12 -88
- package/dist/others/cast-mutable.d.mts.map +1 -1
- package/dist/others/cast-mutable.mjs +13 -89
- package/dist/others/cast-mutable.mjs.map +1 -1
- package/dist/others/cast-readonly.d.mts +12 -168
- package/dist/others/cast-readonly.d.mts.map +1 -1
- package/dist/others/cast-readonly.mjs +13 -169
- package/dist/others/cast-readonly.mjs.map +1 -1
- package/dist/others/if-then.d.mts +6 -83
- package/dist/others/if-then.d.mts.map +1 -1
- package/dist/others/if-then.mjs +6 -83
- package/dist/others/if-then.mjs.map +1 -1
- package/dist/others/map-nullable.d.mts +12 -136
- package/dist/others/map-nullable.d.mts.map +1 -1
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.d.mts +14 -157
- package/dist/others/memoize-function.d.mts.map +1 -1
- package/dist/others/memoize-function.mjs +14 -157
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/tuple.d.mts +33 -151
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +33 -151
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.d.mts +11 -125
- package/dist/others/unknown-to-string.d.mts.map +1 -1
- package/dist/others/unknown-to-string.mjs +12 -126
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/promise.d.mts +33 -20
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +34 -21
- package/dist/promise/promise.mjs.map +1 -1
- package/package.json +47 -39
- package/src/array/impl/array-utils-creation.mts +192 -0
- package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
- package/src/array/impl/array-utils-element-access.mts +115 -0
- package/src/array/impl/array-utils-element-access.test.mts +151 -0
- package/src/array/impl/array-utils-iterators.mts +79 -0
- package/src/array/impl/array-utils-iterators.test.mts +98 -0
- package/src/array/impl/array-utils-modification.mts +434 -0
- package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
- package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
- package/src/array/impl/array-utils-reducing-value.mts +551 -0
- package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
- package/src/array/impl/array-utils-search.mts +509 -0
- package/src/array/impl/array-utils-search.test.mts +346 -0
- package/src/array/impl/array-utils-set-op.mts +166 -0
- package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
- package/src/array/impl/array-utils-size.mts +30 -0
- package/src/array/impl/array-utils-size.test.mts +9 -0
- package/src/array/impl/array-utils-slice-clamped.mts +51 -0
- package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
- package/src/array/impl/array-utils-slicing.mts +275 -0
- package/src/array/impl/array-utils-slicing.test.mts +158 -0
- package/src/array/impl/array-utils-transformation.mts +746 -0
- package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
- package/src/array/impl/array-utils-validation.mts +241 -0
- package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
- package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
- package/src/array/impl/index.mts +12 -0
- package/src/array/index.mts +1 -1
- package/src/collections/imap-mapped.mts +99 -265
- package/src/collections/imap.mts +477 -174
- package/src/collections/imap.test.mts +12 -19
- package/src/collections/iset-mapped.mts +892 -358
- package/src/collections/iset.mts +429 -213
- package/src/collections/queue.mts +174 -200
- package/src/collections/stack.mts +172 -245
- package/src/collections/stack.test.mts +9 -1
- package/src/entry-point.mts +1 -0
- package/src/expect-type.mts +43 -172
- package/src/functional/match.mts +35 -145
- package/src/functional/optional.mts +285 -163
- package/src/functional/optional.test.mts +4 -1
- package/src/functional/pipe.mts +60 -113
- package/src/functional/result.mts +452 -351
- package/src/functional/result.test.mts +9 -2
- package/src/globals.d.mts +12 -5
- package/src/guard/has-key.mts +23 -74
- package/src/guard/is-non-empty-string.mts +20 -87
- package/src/guard/is-non-null-object.mts +14 -84
- package/src/guard/is-non-null-object.test.mts +1 -1
- package/src/guard/is-primitive.mts +13 -126
- package/src/guard/is-primitive.test.mts +1 -1
- package/src/guard/is-record.mts +21 -132
- package/src/guard/is-type.mts +201 -238
- package/src/guard/is-type.test.mts +7 -7
- package/src/guard/key-is-in.mts +22 -139
- package/src/index.mts +0 -1
- package/src/iterator/range.mts +29 -62
- package/src/json/json.mts +202 -134
- package/src/json/json.test.mts +1 -3
- package/src/number/branded-types/finite-number.mts +27 -159
- package/src/number/branded-types/int.mts +122 -120
- package/src/number/branded-types/int16.mts +22 -30
- package/src/number/branded-types/int16.test.mts +24 -24
- package/src/number/branded-types/int32.mts +22 -31
- package/src/number/branded-types/int32.test.mts +39 -39
- package/src/number/branded-types/non-negative-finite-number.mts +31 -39
- package/src/number/branded-types/non-negative-int16.mts +24 -34
- package/src/number/branded-types/non-negative-int16.test.mts +16 -16
- package/src/number/branded-types/non-negative-int32.mts +26 -35
- package/src/number/branded-types/non-negative-int32.test.mts +30 -30
- package/src/number/branded-types/non-zero-finite-number.mts +25 -40
- package/src/number/branded-types/non-zero-int.mts +15 -30
- package/src/number/branded-types/non-zero-int16.mts +27 -35
- package/src/number/branded-types/non-zero-int16.test.mts +26 -26
- package/src/number/branded-types/non-zero-int32.mts +29 -36
- package/src/number/branded-types/non-zero-int32.test.mts +45 -42
- package/src/number/branded-types/non-zero-safe-int.mts +39 -40
- package/src/number/branded-types/non-zero-uint16.mts +24 -35
- package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
- package/src/number/branded-types/non-zero-uint32.mts +24 -35
- package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
- package/src/number/branded-types/positive-finite-number.mts +29 -43
- package/src/number/branded-types/positive-int.mts +134 -124
- package/src/number/branded-types/positive-int16.mts +24 -35
- package/src/number/branded-types/positive-int16.test.mts +14 -14
- package/src/number/branded-types/positive-int32.mts +24 -35
- package/src/number/branded-types/positive-int32.test.mts +26 -26
- package/src/number/branded-types/positive-safe-int.mts +160 -34
- package/src/number/branded-types/positive-uint16.mts +24 -35
- package/src/number/branded-types/positive-uint16.test.mts +16 -16
- package/src/number/branded-types/positive-uint32.mts +26 -36
- package/src/number/branded-types/positive-uint32.test.mts +31 -28
- package/src/number/branded-types/safe-int.mts +142 -101
- package/src/number/branded-types/safe-uint.mts +25 -34
- package/src/number/branded-types/uint.mts +121 -30
- package/src/number/branded-types/uint16.mts +26 -34
- package/src/number/branded-types/uint16.test.mts +16 -16
- package/src/number/branded-types/uint32.mts +26 -68
- package/src/number/branded-types/uint32.test.mts +28 -28
- package/src/number/enum/int8.mts +39 -170
- package/src/number/enum/uint8.mts +46 -155
- package/src/number/num.mts +157 -212
- package/src/number/num.test.mts +4 -4
- package/src/number/refined-number-utils.mts +109 -26
- package/src/object/object.mts +130 -212
- package/src/object/object.test.mts +29 -0
- package/src/others/cast-mutable.mts +13 -89
- package/src/others/cast-mutable.test.mts +80 -0
- package/src/others/cast-readonly.mts +13 -169
- package/src/others/if-then.mts +6 -83
- package/src/others/map-nullable.mts +12 -136
- package/src/others/map-nullable.test.mts +6 -6
- package/src/others/memoize-function.mts +14 -157
- package/src/others/tuple.mts +33 -151
- package/src/others/unknown-to-string.mts +12 -126
- package/src/others/unknown-to-string.test.mts +13 -1
- package/src/promise/promise.mts +34 -21
- package/src/promise/promise.test.mts +43 -0
- package/dist/array/array-utils.d.mts +0 -2956
- package/dist/array/array-utils.d.mts.map +0 -1
- package/dist/array/array-utils.mjs +0 -1838
- package/dist/array/array-utils.mjs.map +0 -1
- package/src/array/array-utils-search.test.mts +0 -169
- package/src/array/array-utils-slicing.test.mts +0 -274
- package/src/array/array-utils.mts +0 -4834
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iset.d.mts","sourceRoot":"","sources":["../../src/collections/iset.mts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"iset.d.mts","sourceRoot":"","sources":["../../src/collections/iset.mts"],"names":[],"mappings":"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"}
|
|
@@ -31,152 +31,90 @@ import '../number/refined-number-utils.mjs';
|
|
|
31
31
|
import { unknownToString } from '../others/unknown-to-string.mjs';
|
|
32
32
|
|
|
33
33
|
// No imports from functional needed anymore
|
|
34
|
-
/**
|
|
35
|
-
* Provides utility functions for ISet.
|
|
36
|
-
*/
|
|
34
|
+
/** Provides utility functions for ISet. */
|
|
37
35
|
var ISet;
|
|
38
36
|
(function (ISet) {
|
|
39
37
|
/**
|
|
40
38
|
* Creates a new ISet instance from an iterable of elements.
|
|
41
39
|
*
|
|
42
40
|
* This factory function accepts any iterable of elements, including arrays,
|
|
43
|
-
* JavaScript Sets, other ISets, or custom iterables. Duplicate elements in
|
|
44
|
-
* input iterable will be automatically deduplicated in the resulting
|
|
41
|
+
* JavaScript Sets, other ISets, or custom iterables. Duplicate elements in
|
|
42
|
+
* the input iterable will be automatically deduplicated in the resulting
|
|
43
|
+
* set.
|
|
45
44
|
*
|
|
46
45
|
* **Performance:** O(n) where n is the number of elements in the iterable.
|
|
47
46
|
*
|
|
48
|
-
* @template K The type of the elements. Must extend MapSetKeyType.
|
|
49
|
-
* @param iterable An iterable of elements (e.g., Array, Set, ISet, etc.)
|
|
50
|
-
* @returns A new ISet instance containing all unique elements from the iterable.
|
|
51
|
-
*
|
|
52
47
|
* @example
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* const
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* // From JavaScript Set
|
|
59
|
-
* const jsSet = new Set(["red", "green", "blue"]);
|
|
60
|
-
* const colors = ISet.create(jsSet);
|
|
61
|
-
* console.log(colors.has("red")); // Output: true
|
|
62
|
-
*
|
|
63
|
-
* // From another ISet (creates a copy)
|
|
64
|
-
* const originalTags = ISet.create(["typescript", "immutable"]);
|
|
65
|
-
* const copiedTags = ISet.create(originalTags);
|
|
66
|
-
* console.log(copiedTags.size); // Output: 2
|
|
67
|
-
*
|
|
68
|
-
* // Empty set
|
|
69
|
-
* const emptyPermissions = ISet.create<string>([]);
|
|
70
|
-
* console.log(emptyPermissions.isEmpty); // Output: true
|
|
71
|
-
*
|
|
72
|
-
* // Fluent operations
|
|
73
|
-
* const processedNumbers = ISet.create([1, 2, 3, 4, 5])
|
|
74
|
-
* .filter(x => x % 2 === 0) // Keep even numbers: 2, 4
|
|
75
|
-
* .add(6) // Add 6: 2, 4, 6
|
|
76
|
-
* .delete(2); // Remove 2: 4, 6
|
|
77
|
-
* console.log(processedNumbers.toArray().toSorted()); // Output: [4, 6]
|
|
78
|
-
*
|
|
79
|
-
* // From generator function
|
|
80
|
-
* function* generatePrimes(): Generator<number> {
|
|
81
|
-
* yield 2; yield 3; yield 5; yield 7;
|
|
82
|
-
* }
|
|
83
|
-
* const primes = ISet.create(generatePrimes());
|
|
84
|
-
* console.log(primes.size); // Output: 4
|
|
48
|
+
*
|
|
49
|
+
* ```ts
|
|
50
|
+
* const set = ISet.create(['a', 'a', 'b']);
|
|
51
|
+
*
|
|
52
|
+
* assert.deepStrictEqual(Array.from(set), ['a', 'b']);
|
|
85
53
|
* ```
|
|
54
|
+
*
|
|
55
|
+
* @template K The type of the elements. Must extend MapSetKeyType.
|
|
56
|
+
* @param iterable An iterable of elements (e.g., Array, Set, ISet, etc.)
|
|
57
|
+
* @returns A new ISet instance containing all unique elements from the
|
|
58
|
+
* iterable.
|
|
86
59
|
*/
|
|
87
60
|
ISet.create = (iterable) => new ISetClass(iterable);
|
|
88
61
|
/**
|
|
89
62
|
* Checks if two ISet instances are structurally equal.
|
|
90
63
|
*
|
|
91
|
-
* Two ISets are considered equal if they have the same size and contain
|
|
92
|
-
* elements. The order of elements does not matter for
|
|
93
|
-
* unordered collections. Elements are
|
|
64
|
+
* Two ISets are considered equal if they have the same size and contain
|
|
65
|
+
* exactly the same elements. The order of elements does not matter for
|
|
66
|
+
* equality comparison since sets are unordered collections. Elements are
|
|
67
|
+
* compared using JavaScript's `===` operator.
|
|
94
68
|
*
|
|
95
69
|
* **Performance:** O(n) where n is the size of the smaller set.
|
|
96
70
|
*
|
|
71
|
+
* @example
|
|
72
|
+
*
|
|
73
|
+
* ```ts
|
|
74
|
+
* const first = ISet.create<number>([1, 2]);
|
|
75
|
+
* const second = ISet.create<number>([2, 1]);
|
|
76
|
+
* const third = ISet.create<number>([1, 3]);
|
|
77
|
+
*
|
|
78
|
+
* assert.ok(ISet.equal(first, second));
|
|
79
|
+
* assert.notOk(ISet.equal(first, third));
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
97
82
|
* @template K The type of the elements.
|
|
98
83
|
* @param a The first ISet instance to compare.
|
|
99
84
|
* @param b The second ISet instance to compare.
|
|
100
|
-
* @returns `true` if the sets contain exactly the same elements, `false`
|
|
101
|
-
*
|
|
102
|
-
* @example
|
|
103
|
-
* ```typescript
|
|
104
|
-
* // Basic equality comparison
|
|
105
|
-
* const permissions1 = ISet.create(["read", "write", "execute"]);
|
|
106
|
-
* const permissions2 = ISet.create(["execute", "read", "write"]); // Order doesn't matter
|
|
107
|
-
* const permissions3 = ISet.create(["read", "write"]);
|
|
108
|
-
*
|
|
109
|
-
* console.log(ISet.equal(permissions1, permissions2)); // true
|
|
110
|
-
* console.log(ISet.equal(permissions1, permissions3)); // false (different sizes)
|
|
111
|
-
*
|
|
112
|
-
* // With different element types
|
|
113
|
-
* const numbers1 = ISet.create([1, 2, 3]);
|
|
114
|
-
* const numbers2 = ISet.create([3, 1, 2]);
|
|
115
|
-
* const numbers3 = ISet.create([1, 2, 4]); // Different element
|
|
116
|
-
*
|
|
117
|
-
* console.log(ISet.equal(numbers1, numbers2)); // true
|
|
118
|
-
* console.log(ISet.equal(numbers1, numbers3)); // false
|
|
119
|
-
*
|
|
120
|
-
* // Empty sets
|
|
121
|
-
* const empty1 = ISet.create<string>([]);
|
|
122
|
-
* const empty2 = ISet.create<string>([]);
|
|
123
|
-
* console.log(ISet.equal(empty1, empty2)); // true
|
|
124
|
-
*
|
|
125
|
-
* // Single element sets
|
|
126
|
-
* const single1 = ISet.create(["unique"]);
|
|
127
|
-
* const single2 = ISet.create(["unique"]);
|
|
128
|
-
* const single3 = ISet.create(["different"]);
|
|
129
|
-
*
|
|
130
|
-
* console.log(ISet.equal(single1, single2)); // true
|
|
131
|
-
* console.log(ISet.equal(single1, single3)); // false
|
|
132
|
-
* ```
|
|
85
|
+
* @returns `true` if the sets contain exactly the same elements, `false`
|
|
86
|
+
* otherwise.
|
|
133
87
|
*/
|
|
134
88
|
ISet.equal = (a, b) => a.size === b.size && a.every((e) => b.has(e));
|
|
135
89
|
/**
|
|
136
|
-
* Computes the difference between two ISet instances, identifying added and
|
|
90
|
+
* Computes the difference between two ISet instances, identifying added and
|
|
91
|
+
* deleted elements.
|
|
137
92
|
*
|
|
138
|
-
* This function performs a set difference operation to determine what
|
|
139
|
-
* and what elements were deleted when transitioning from
|
|
140
|
-
* This is useful for change detection, state
|
|
93
|
+
* This function performs a set difference operation to determine what
|
|
94
|
+
* elements were added and what elements were deleted when transitioning from
|
|
95
|
+
* the old set to the new set. This is useful for change detection, state
|
|
96
|
+
* management, and synchronization scenarios.
|
|
141
97
|
*
|
|
142
|
-
* **Performance:** O(n + m) where n and m are the sizes of the old and new
|
|
143
|
-
*
|
|
144
|
-
* @template K The type of the elements.
|
|
145
|
-
* @param oldSet The original set representing the previous state.
|
|
146
|
-
* @param newSet The new set representing the current state.
|
|
147
|
-
* @returns An object with `added` and `deleted` properties, each containing an ISet
|
|
148
|
-
* of elements that were added or removed respectively.
|
|
98
|
+
* **Performance:** O(n + m) where n and m are the sizes of the old and new
|
|
99
|
+
* sets respectively.
|
|
149
100
|
*
|
|
150
101
|
* @example
|
|
151
|
-
* ```typescript
|
|
152
|
-
* // User permission changes
|
|
153
|
-
* const oldPermissions = ISet.create(["read", "write", "delete"]);
|
|
154
|
-
* const newPermissions = ISet.create(["read", "write", "execute", "admin"]);
|
|
155
|
-
*
|
|
156
|
-
* const permissionDiff = ISet.diff(oldPermissions, newPermissions);
|
|
157
|
-
*
|
|
158
|
-
* console.log("Permissions removed:", permissionDiff.deleted.toArray());
|
|
159
|
-
* // Output: ["delete"]
|
|
160
|
-
*
|
|
161
|
-
* console.log("Permissions added:", permissionDiff.added.toArray());
|
|
162
|
-
* // Output: ["execute", "admin"]
|
|
163
102
|
*
|
|
164
|
-
*
|
|
165
|
-
* const
|
|
166
|
-
* const
|
|
167
|
-
* const noDiff = ISet.diff(unchanged1, unchanged2);
|
|
103
|
+
* ```ts
|
|
104
|
+
* const previous = ISet.create<string>(['draft', 'review']);
|
|
105
|
+
* const current = ISet.create<string>(['review', 'published']);
|
|
168
106
|
*
|
|
169
|
-
*
|
|
170
|
-
* console.log(noDiff.deleted.isEmpty); // true
|
|
107
|
+
* const { added, deleted } = ISet.diff(previous, current);
|
|
171
108
|
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
* const newTags = ISet.create(["typescript", "vue"]);
|
|
175
|
-
* const tagDiff = ISet.diff(oldTags, newTags);
|
|
176
|
-
*
|
|
177
|
-
* console.log(tagDiff.deleted.toArray()); // ["javascript", "react"]
|
|
178
|
-
* console.log(tagDiff.added.toArray()); // ["typescript", "vue"]
|
|
109
|
+
* assert.deepStrictEqual(Array.from(added), ['published']);
|
|
110
|
+
* assert.deepStrictEqual(Array.from(deleted), ['draft']);
|
|
179
111
|
* ```
|
|
112
|
+
*
|
|
113
|
+
* @template K The type of the elements.
|
|
114
|
+
* @param oldSet The original set representing the previous state.
|
|
115
|
+
* @param newSet The new set representing the current state.
|
|
116
|
+
* @returns An object with `added` and `deleted` properties, each containing
|
|
117
|
+
* an ISet of elements that were added or removed respectively.
|
|
180
118
|
*/
|
|
181
119
|
ISet.diff = (oldSet, newSet) => ({
|
|
182
120
|
deleted: oldSet.subtract(newSet),
|
|
@@ -185,99 +123,69 @@ var ISet;
|
|
|
185
123
|
/**
|
|
186
124
|
* Computes the intersection of two ISet instances.
|
|
187
125
|
*
|
|
188
|
-
* Returns a new set containing only the elements that are present in both
|
|
189
|
-
* This operation is commutative: `intersection(a, b) ===
|
|
126
|
+
* Returns a new set containing only the elements that are present in both
|
|
127
|
+
* input sets. This operation is commutative: `intersection(a, b) ===
|
|
128
|
+
* intersection(b, a)`.
|
|
129
|
+
*
|
|
130
|
+
* **Performance:** O(min(n, m)) where n and m are the sizes of the input
|
|
131
|
+
* sets.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
*
|
|
135
|
+
* ```ts
|
|
136
|
+
* const left = ISet.create<number>([1, 2, 3]);
|
|
137
|
+
* const right = ISet.create<number>([2, 4]);
|
|
138
|
+
*
|
|
139
|
+
* const overlap = ISet.intersection(left, right);
|
|
190
140
|
*
|
|
191
|
-
*
|
|
141
|
+
* assert.deepStrictEqual(Array.from(overlap), [2]);
|
|
142
|
+
* ```
|
|
192
143
|
*
|
|
193
144
|
* @template K The type of the elements.
|
|
194
145
|
* @param a The first set.
|
|
195
146
|
* @param b The second set.
|
|
196
147
|
* @returns A new ISet instance containing elements common to both sets.
|
|
197
|
-
*
|
|
198
|
-
* @example
|
|
199
|
-
* ```typescript
|
|
200
|
-
* // Finding common permissions between user and role
|
|
201
|
-
* const userPermissions = ISet.create(["read", "write", "delete", "admin"]);
|
|
202
|
-
* const rolePermissions = ISet.create(["read", "write", "execute"]);
|
|
203
|
-
*
|
|
204
|
-
* const commonPermissions = ISet.intersection(userPermissions, rolePermissions);
|
|
205
|
-
* console.log(commonPermissions.toArray()); // ["read", "write"]
|
|
206
|
-
*
|
|
207
|
-
* // No common elements
|
|
208
|
-
* const setA = ISet.create([1, 2, 3]);
|
|
209
|
-
* const setB = ISet.create([4, 5, 6]);
|
|
210
|
-
* const noCommon = ISet.intersection(setA, setB);
|
|
211
|
-
* console.log(noCommon.isEmpty); // true
|
|
212
|
-
*
|
|
213
|
-
* // Complete overlap
|
|
214
|
-
* const identical1 = ISet.create(["a", "b", "c"]);
|
|
215
|
-
* const identical2 = ISet.create(["a", "b", "c"]);
|
|
216
|
-
* const completeOverlap = ISet.intersection(identical1, identical2);
|
|
217
|
-
* console.log(ISet.equal(completeOverlap, identical1)); // true
|
|
218
|
-
*
|
|
219
|
-
* // Intersection with empty set
|
|
220
|
-
* const nonEmpty = ISet.create([1, 2, 3]);
|
|
221
|
-
* const empty = ISet.create<number>([]);
|
|
222
|
-
* const withEmpty = ISet.intersection(nonEmpty, empty);
|
|
223
|
-
* console.log(withEmpty.isEmpty); // true
|
|
224
|
-
* ```
|
|
225
148
|
*/
|
|
226
149
|
ISet.intersection = (a, b) => a.intersect(b);
|
|
227
150
|
/**
|
|
228
151
|
* Computes the union of two ISet instances.
|
|
229
152
|
*
|
|
230
|
-
* Returns a new set containing all elements that are present in either input
|
|
231
|
-
* Duplicate elements are automatically handled since sets only contain
|
|
232
|
-
* This operation is commutative: `union(a, b) === union(b,
|
|
153
|
+
* Returns a new set containing all elements that are present in either input
|
|
154
|
+
* set. Duplicate elements are automatically handled since sets only contain
|
|
155
|
+
* unique values. This operation is commutative: `union(a, b) === union(b,
|
|
156
|
+
* a)`.
|
|
233
157
|
*
|
|
234
158
|
* **Performance:** O(n + m) where n and m are the sizes of the input sets.
|
|
235
159
|
*
|
|
160
|
+
* @example
|
|
161
|
+
*
|
|
162
|
+
* ```ts
|
|
163
|
+
* const numbers = ISet.create([1, 2]);
|
|
164
|
+
* const words = ISet.create(['one', 'two']);
|
|
165
|
+
*
|
|
166
|
+
* const union = ISet.union(numbers, words);
|
|
167
|
+
*
|
|
168
|
+
* assert.deepStrictEqual(Array.from(union), [1, 2, 'one', 'two']);
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
236
171
|
* @template K1 The type of elements in the first set.
|
|
237
172
|
* @template K2 The type of elements in the second set.
|
|
238
173
|
* @param a The first set.
|
|
239
174
|
* @param b The second set.
|
|
240
175
|
* @returns A new ISet instance containing all elements from both sets.
|
|
241
|
-
*
|
|
242
|
-
* @example
|
|
243
|
-
* ```typescript
|
|
244
|
-
* // Combining permissions from multiple sources
|
|
245
|
-
* const userPermissions = ISet.create(["read", "write"]);
|
|
246
|
-
* const rolePermissions = ISet.create(["write", "execute", "admin"]);
|
|
247
|
-
*
|
|
248
|
-
* const allPermissions = ISet.union(userPermissions, rolePermissions);
|
|
249
|
-
* console.log(allPermissions.toArray().toSorted());
|
|
250
|
-
* // Output: ["admin", "execute", "read", "write"]
|
|
251
|
-
*
|
|
252
|
-
* // Union with different types (type widening)
|
|
253
|
-
* const numbers = ISet.create([1, 2, 3]);
|
|
254
|
-
* const strings = ISet.create(["a", "b"]);
|
|
255
|
-
* const mixed = ISet.union(numbers, strings); // ISet<number | string>
|
|
256
|
-
* console.log(mixed.size); // 5
|
|
257
|
-
*
|
|
258
|
-
* // Union with empty set
|
|
259
|
-
* const nonEmpty = ISet.create(["item1", "item2"]);
|
|
260
|
-
* const empty = ISet.create<string>([]);
|
|
261
|
-
* const withEmpty = ISet.union(nonEmpty, empty);
|
|
262
|
-
* console.log(ISet.equal(withEmpty, nonEmpty)); // true
|
|
263
|
-
*
|
|
264
|
-
* // Overlapping sets
|
|
265
|
-
* const featuresA = ISet.create(["feature1", "feature2", "feature3"]);
|
|
266
|
-
* const featuresB = ISet.create(["feature2", "feature3", "feature4"]);
|
|
267
|
-
* const allFeatures = ISet.union(featuresA, featuresB);
|
|
268
|
-
* console.log(allFeatures.size); // 4 (duplicates removed)
|
|
269
|
-
* ```
|
|
270
176
|
*/
|
|
271
177
|
ISet.union = (a, b) => a.union(b);
|
|
272
178
|
})(ISet || (ISet = {}));
|
|
273
179
|
/**
|
|
274
180
|
* Internal class implementation for ISet providing immutable set operations.
|
|
275
181
|
*
|
|
276
|
-
* This class implements the ISet interface using JavaScript's native Set as the
|
|
277
|
-
* storage mechanism for optimal performance. All mutation operations
|
|
278
|
-
* rather than modifying the existing set, ensuring
|
|
182
|
+
* This class implements the ISet interface using JavaScript's native Set as the
|
|
183
|
+
* underlying storage mechanism for optimal performance. All mutation operations
|
|
184
|
+
* create new instances rather than modifying the existing set, ensuring
|
|
185
|
+
* immutability.
|
|
279
186
|
*
|
|
280
187
|
* **Implementation Details:**
|
|
188
|
+
*
|
|
281
189
|
* - Uses ReadonlySet<K> internally for type safety and performance
|
|
282
190
|
* - Implements copy-on-write semantics for efficiency
|
|
283
191
|
* - Provides optional debug messaging for development
|
|
@@ -295,8 +203,8 @@ class ISetClass {
|
|
|
295
203
|
*
|
|
296
204
|
* @param iterable An iterable of elements to populate the set.
|
|
297
205
|
* @param showNotFoundMessage Whether to log warning messages when operations
|
|
298
|
-
*
|
|
299
|
-
*
|
|
206
|
+
* are performed on non-existent elements. Useful for debugging. Defaults to
|
|
207
|
+
* false for production use.
|
|
300
208
|
* @internal Use ISet.create() instead of calling this constructor directly.
|
|
301
209
|
*/
|
|
302
210
|
constructor(iterable, showNotFoundMessage = false) {
|
|
@@ -313,7 +221,7 @@ class ISetClass {
|
|
|
313
221
|
}
|
|
314
222
|
/** @inheritdoc */
|
|
315
223
|
has(key) {
|
|
316
|
-
// eslint-disable-next-line
|
|
224
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
317
225
|
return this.#set.has(key);
|
|
318
226
|
}
|
|
319
227
|
/** @inheritdoc */
|
|
@@ -384,12 +292,12 @@ class ISetClass {
|
|
|
384
292
|
}
|
|
385
293
|
/** @inheritdoc */
|
|
386
294
|
isSubsetOf(set) {
|
|
387
|
-
// eslint-disable-next-line
|
|
295
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
388
296
|
return this.every((k) => set.has(k));
|
|
389
297
|
}
|
|
390
298
|
/** @inheritdoc */
|
|
391
299
|
isSupersetOf(set) {
|
|
392
|
-
// eslint-disable-next-line
|
|
300
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
393
301
|
return set.every((k) => this.has(k));
|
|
394
302
|
}
|
|
395
303
|
/** @inheritdoc */
|
|
@@ -405,6 +313,16 @@ class ISetClass {
|
|
|
405
313
|
return ISet.create([...this, ...set]);
|
|
406
314
|
}
|
|
407
315
|
/**
|
|
316
|
+
* @example
|
|
317
|
+
*
|
|
318
|
+
* ```ts
|
|
319
|
+
* const set = ISet.create(['first', 'second']);
|
|
320
|
+
*
|
|
321
|
+
* const collected = Array.from(set);
|
|
322
|
+
*
|
|
323
|
+
* assert.deepStrictEqual(collected, ['first', 'second']);
|
|
324
|
+
* ```
|
|
325
|
+
*
|
|
408
326
|
* @inheritdoc
|
|
409
327
|
*/
|
|
410
328
|
[Symbol.iterator]() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iset.mjs","sources":["../../src/collections/iset.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;
|
|
1
|
+
{"version":3,"file":"iset.mjs","sources":["../../src/collections/iset.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|