ts-data-forge 3.2.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -21
- package/dist/array/impl/array-utils-creation.d.mts +116 -0
- package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-creation.mjs +110 -0
- package/dist/array/impl/array-utils-creation.mjs.map +1 -0
- package/dist/array/impl/array-utils-element-access.d.mts +61 -0
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
- package/dist/array/impl/array-utils-element-access.mjs +66 -0
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
- package/dist/array/impl/array-utils-iterators.d.mts +59 -0
- package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
- package/dist/array/impl/array-utils-iterators.mjs +104 -0
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
- package/dist/array/impl/array-utils-modification.d.mts +154 -0
- package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
- package/dist/array/impl/array-utils-modification.mjs +139 -0
- package/dist/array/impl/array-utils-modification.mjs.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
- package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
- package/dist/array/impl/array-utils-search.d.mts +179 -0
- package/dist/array/impl/array-utils-search.d.mts.map +1 -0
- package/dist/array/impl/array-utils-search.mjs +153 -0
- package/dist/array/impl/array-utils-search.mjs.map +1 -0
- package/dist/array/impl/array-utils-set-op.d.mts +100 -0
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
- package/dist/array/impl/array-utils-set-op.mjs +137 -0
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
- package/dist/array/impl/array-utils-size.d.mts +24 -0
- package/dist/array/impl/array-utils-size.d.mts.map +1 -0
- package/dist/array/impl/array-utils-size.mjs +28 -0
- package/dist/array/impl/array-utils-size.mjs.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
- package/dist/array/impl/array-utils-slicing.d.mts +120 -0
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
- package/dist/array/impl/array-utils-slicing.mjs +140 -0
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
- package/dist/array/impl/array-utils-transformation.d.mts +348 -0
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-transformation.mjs +331 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
- package/dist/array/impl/array-utils-validation.d.mts +149 -0
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
- package/dist/array/impl/array-utils-validation.mjs +166 -0
- package/dist/array/impl/array-utils-validation.mjs.map +1 -0
- package/dist/array/impl/index.d.mts +13 -0
- package/dist/array/impl/index.d.mts.map +1 -0
- package/dist/array/impl/index.mjs +13 -0
- package/dist/array/impl/index.mjs.map +1 -0
- package/dist/array/index.d.mts +1 -1
- package/dist/array/index.d.mts.map +1 -1
- package/dist/array/index.mjs +2 -1
- package/dist/array/index.mjs.map +1 -1
- package/dist/collections/imap-mapped.d.mts +83 -253
- package/dist/collections/imap-mapped.d.mts.map +1 -1
- package/dist/collections/imap-mapped.mjs +33 -164
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +436 -163
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +74 -94
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +828 -345
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +200 -242
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +397 -205
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +102 -184
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts +155 -135
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +55 -156
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +154 -154
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +54 -203
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.d.mts +3 -0
- package/dist/entry-point.d.mts.map +1 -0
- package/dist/entry-point.mjs +62 -0
- package/dist/entry-point.mjs.map +1 -0
- package/dist/expect-type.d.mts +43 -172
- package/dist/expect-type.d.mts.map +1 -1
- package/dist/expect-type.mjs +43 -172
- package/dist/expect-type.mjs.map +1 -1
- package/dist/functional/match.d.mts +35 -140
- package/dist/functional/match.d.mts.map +1 -1
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional.d.mts +282 -160
- package/dist/functional/optional.d.mts.map +1 -1
- package/dist/functional/optional.mjs +131 -71
- package/dist/functional/optional.mjs.map +1 -1
- package/dist/functional/pipe.d.mts +59 -113
- package/dist/functional/pipe.d.mts.map +1 -1
- package/dist/functional/pipe.mjs.map +1 -1
- package/dist/functional/result.d.mts +433 -332
- package/dist/functional/result.d.mts.map +1 -1
- package/dist/functional/result.mjs +233 -239
- package/dist/functional/result.mjs.map +1 -1
- package/dist/globals.d.mts +12 -5
- package/dist/guard/has-key.d.mts +23 -74
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +23 -74
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/is-non-empty-string.d.mts +20 -87
- package/dist/guard/is-non-empty-string.d.mts.map +1 -1
- package/dist/guard/is-non-empty-string.mjs +20 -87
- package/dist/guard/is-non-empty-string.mjs.map +1 -1
- package/dist/guard/is-non-null-object.d.mts +14 -84
- package/dist/guard/is-non-null-object.d.mts.map +1 -1
- package/dist/guard/is-non-null-object.mjs +14 -84
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-primitive.d.mts +13 -126
- package/dist/guard/is-primitive.d.mts.map +1 -1
- package/dist/guard/is-primitive.mjs +13 -126
- package/dist/guard/is-primitive.mjs.map +1 -1
- package/dist/guard/is-record.d.mts +21 -132
- package/dist/guard/is-record.d.mts.map +1 -1
- package/dist/guard/is-record.mjs +21 -132
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.d.mts +201 -238
- package/dist/guard/is-type.d.mts.map +1 -1
- package/dist/guard/is-type.mjs +201 -238
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.d.mts +22 -139
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +22 -139
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.d.mts +0 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/range.d.mts +29 -62
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts +191 -121
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +238 -136
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +24 -156
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +27 -159
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +122 -120
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +122 -120
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +22 -30
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +22 -30
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +22 -31
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +22 -31
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +24 -34
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +26 -35
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +15 -30
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +15 -30
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +27 -35
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +29 -36
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +29 -43
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +133 -123
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +133 -123
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +24 -35
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +24 -35
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +24 -35
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +24 -35
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +160 -34
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +24 -35
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +24 -35
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +26 -36
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +26 -36
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +140 -99
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +142 -101
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +24 -33
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +25 -34
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +121 -30
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +121 -30
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +26 -34
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +26 -34
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +26 -68
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +26 -68
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +37 -101
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +39 -170
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +45 -55
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +46 -155
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/num.d.mts +145 -206
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +143 -199
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +97 -21
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +91 -20
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +126 -208
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +68 -102
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/cast-mutable.d.mts +12 -88
- package/dist/others/cast-mutable.d.mts.map +1 -1
- package/dist/others/cast-mutable.mjs +13 -89
- package/dist/others/cast-mutable.mjs.map +1 -1
- package/dist/others/cast-readonly.d.mts +12 -168
- package/dist/others/cast-readonly.d.mts.map +1 -1
- package/dist/others/cast-readonly.mjs +13 -169
- package/dist/others/cast-readonly.mjs.map +1 -1
- package/dist/others/if-then.d.mts +6 -83
- package/dist/others/if-then.d.mts.map +1 -1
- package/dist/others/if-then.mjs +6 -83
- package/dist/others/if-then.mjs.map +1 -1
- package/dist/others/map-nullable.d.mts +12 -136
- package/dist/others/map-nullable.d.mts.map +1 -1
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/memoize-function.d.mts +14 -157
- package/dist/others/memoize-function.d.mts.map +1 -1
- package/dist/others/memoize-function.mjs +14 -157
- package/dist/others/memoize-function.mjs.map +1 -1
- package/dist/others/tuple.d.mts +33 -151
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +33 -151
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.d.mts +11 -125
- package/dist/others/unknown-to-string.d.mts.map +1 -1
- package/dist/others/unknown-to-string.mjs +14 -127
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/promise.d.mts +33 -20
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +34 -21
- package/dist/promise/promise.mjs.map +1 -1
- package/dist/types.d.mts +1 -1
- package/package.json +54 -50
- package/src/array/impl/array-utils-creation.mts +192 -0
- package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
- package/src/array/impl/array-utils-element-access.mts +115 -0
- package/src/array/impl/array-utils-element-access.test.mts +151 -0
- package/src/array/impl/array-utils-iterators.mts +79 -0
- package/src/array/impl/array-utils-iterators.test.mts +98 -0
- package/src/array/impl/array-utils-modification.mts +434 -0
- package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
- package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
- package/src/array/impl/array-utils-reducing-value.mts +551 -0
- package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
- package/src/array/impl/array-utils-search.mts +509 -0
- package/src/array/impl/array-utils-search.test.mts +346 -0
- package/src/array/impl/array-utils-set-op.mts +166 -0
- package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
- package/src/array/impl/array-utils-size.mts +30 -0
- package/src/array/impl/array-utils-size.test.mts +9 -0
- package/src/array/impl/array-utils-slice-clamped.mts +51 -0
- package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
- package/src/array/impl/array-utils-slicing.mts +275 -0
- package/src/array/impl/array-utils-slicing.test.mts +158 -0
- package/src/array/impl/array-utils-transformation.mts +746 -0
- package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
- package/src/array/impl/array-utils-validation.mts +241 -0
- package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
- package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
- package/src/array/impl/index.mts +12 -0
- package/src/array/index.mts +1 -1
- package/src/collections/imap-mapped.mts +99 -265
- package/src/collections/imap.mts +477 -174
- package/src/collections/imap.test.mts +12 -19
- package/src/collections/iset-mapped.mts +892 -358
- package/src/collections/iset.mts +429 -213
- package/src/collections/queue.mts +174 -200
- package/src/collections/stack.mts +172 -245
- package/src/collections/stack.test.mts +9 -1
- package/src/entry-point.mts +2 -0
- package/src/expect-type.mts +43 -172
- package/src/functional/match.mts +35 -145
- package/src/functional/optional.mts +285 -163
- package/src/functional/optional.test.mts +4 -1
- package/src/functional/pipe.mts +60 -113
- package/src/functional/result.mts +452 -351
- package/src/functional/result.test.mts +9 -2
- package/src/globals.d.mts +12 -5
- package/src/guard/has-key.mts +23 -74
- package/src/guard/is-non-empty-string.mts +20 -87
- package/src/guard/is-non-null-object.mts +14 -84
- package/src/guard/is-non-null-object.test.mts +1 -1
- package/src/guard/is-primitive.mts +13 -126
- package/src/guard/is-primitive.test.mts +1 -1
- package/src/guard/is-record.mts +21 -132
- package/src/guard/is-record.test.mts +0 -1
- package/src/guard/is-type.mts +201 -238
- package/src/guard/is-type.test.mts +7 -7
- package/src/guard/key-is-in.mts +22 -139
- package/src/index.mts +0 -1
- package/src/iterator/range.mts +29 -62
- package/src/json/json.mts +202 -134
- package/src/json/json.test.mts +1 -3
- package/src/number/branded-types/finite-number.mts +27 -159
- package/src/number/branded-types/int.mts +122 -120
- package/src/number/branded-types/int16.mts +22 -30
- package/src/number/branded-types/int16.test.mts +24 -24
- package/src/number/branded-types/int32.mts +22 -31
- package/src/number/branded-types/int32.test.mts +39 -39
- package/src/number/branded-types/non-negative-finite-number.mts +31 -39
- package/src/number/branded-types/non-negative-int16.mts +24 -34
- package/src/number/branded-types/non-negative-int16.test.mts +16 -16
- package/src/number/branded-types/non-negative-int32.mts +26 -35
- package/src/number/branded-types/non-negative-int32.test.mts +30 -30
- package/src/number/branded-types/non-zero-finite-number.mts +25 -40
- package/src/number/branded-types/non-zero-int.mts +15 -30
- package/src/number/branded-types/non-zero-int16.mts +27 -35
- package/src/number/branded-types/non-zero-int16.test.mts +26 -26
- package/src/number/branded-types/non-zero-int32.mts +29 -36
- package/src/number/branded-types/non-zero-int32.test.mts +45 -42
- package/src/number/branded-types/non-zero-safe-int.mts +39 -40
- package/src/number/branded-types/non-zero-uint16.mts +24 -35
- package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
- package/src/number/branded-types/non-zero-uint32.mts +24 -35
- package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
- package/src/number/branded-types/positive-finite-number.mts +29 -43
- package/src/number/branded-types/positive-int.mts +134 -124
- package/src/number/branded-types/positive-int16.mts +24 -35
- package/src/number/branded-types/positive-int16.test.mts +14 -14
- package/src/number/branded-types/positive-int32.mts +24 -35
- package/src/number/branded-types/positive-int32.test.mts +26 -26
- package/src/number/branded-types/positive-safe-int.mts +160 -34
- package/src/number/branded-types/positive-uint16.mts +24 -35
- package/src/number/branded-types/positive-uint16.test.mts +16 -16
- package/src/number/branded-types/positive-uint32.mts +26 -36
- package/src/number/branded-types/positive-uint32.test.mts +31 -28
- package/src/number/branded-types/safe-int.mts +142 -101
- package/src/number/branded-types/safe-uint.mts +25 -34
- package/src/number/branded-types/uint.mts +121 -30
- package/src/number/branded-types/uint16.mts +26 -34
- package/src/number/branded-types/uint16.test.mts +16 -16
- package/src/number/branded-types/uint32.mts +26 -68
- package/src/number/branded-types/uint32.test.mts +28 -28
- package/src/number/enum/int8.mts +39 -170
- package/src/number/enum/uint8.mts +46 -155
- package/src/number/num.mts +157 -212
- package/src/number/num.test.mts +4 -4
- package/src/number/refined-number-utils.mts +109 -26
- package/src/object/object.mts +130 -212
- package/src/object/object.test.mts +29 -0
- package/src/others/cast-mutable.mts +13 -89
- package/src/others/cast-mutable.test.mts +80 -0
- package/src/others/cast-readonly.mts +13 -169
- package/src/others/if-then.mts +6 -83
- package/src/others/map-nullable.mts +12 -136
- package/src/others/map-nullable.test.mts +6 -6
- package/src/others/memoize-function.mts +14 -157
- package/src/others/tuple.mts +33 -151
- package/src/others/unknown-to-string.mts +15 -127
- package/src/others/unknown-to-string.test.mts +14 -2
- package/src/promise/promise.mts +34 -21
- package/src/promise/promise.test.mts +43 -0
- package/dist/array/array-utils.d.mts +0 -2956
- package/dist/array/array-utils.d.mts.map +0 -1
- package/dist/array/array-utils.mjs +0 -1838
- package/dist/array/array-utils.mjs.map +0 -1
- package/src/array/array-utils-search.test.mts +0 -169
- package/src/array/array-utils-slicing.test.mts +0 -274
- package/src/array/array-utils.mts +0 -4834
package/dist/json/json.d.mts
CHANGED
|
@@ -3,170 +3,240 @@ import { Result } from '../functional/index.mjs';
|
|
|
3
3
|
* A collection of type-safe JSON utility functions that provide safe parsing,
|
|
4
4
|
* stringification, and manipulation of JSON data. All functions return `Result`
|
|
5
5
|
* types to handle errors without throwing exceptions.
|
|
6
|
-
*
|
|
7
|
-
* @example Basic usage
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { Json, Result } from 'ts-data-forge';
|
|
10
|
-
*
|
|
11
|
-
* // Parse JSON safely
|
|
12
|
-
* const parseResult = Json.parse('{"name": "Alice", "age": 30}');
|
|
13
|
-
* if (Result.isOk(parseResult)) {
|
|
14
|
-
* console.log(parseResult.value); // { name: 'Alice', age: 30 }
|
|
15
|
-
* }
|
|
16
|
-
*
|
|
17
|
-
* // Stringify with error handling
|
|
18
|
-
* const stringifyResult = Json.stringify({ name: 'Bob', age: 25 });
|
|
19
|
-
* if (Result.isOk(stringifyResult)) {
|
|
20
|
-
* console.log(stringifyResult.value); // '{"name":"Bob","age":25}'
|
|
21
|
-
* }
|
|
22
|
-
* ```
|
|
23
6
|
*/
|
|
24
7
|
export declare namespace Json {
|
|
25
8
|
/**
|
|
26
|
-
* Safely converts a JSON string into a JavaScript value without throwing
|
|
27
|
-
*
|
|
28
|
-
* This function provides type-safe JSON parsing by wrapping the native `JSON.parse`
|
|
29
|
-
* in a `Result` type, allowing you to handle parsing errors gracefully without
|
|
30
|
-
* try-catch blocks.
|
|
31
|
-
*
|
|
32
|
-
* @param text - A valid JSON string to parse. Can contain any valid JSON data type:
|
|
33
|
-
* primitives (string, number, boolean, null), arrays, or objects.
|
|
34
|
-
* @param reviver - Optional function that transforms parsed values. Called for each
|
|
35
|
-
* key-value pair in the JSON. The function receives the key name and parsed value,
|
|
36
|
-
* and should return the transformed value. For nested objects, inner objects are
|
|
37
|
-
* processed before outer objects.
|
|
38
|
-
* @returns A `Result<JsonValue, string>` containing:
|
|
39
|
-
* - On success: `Result.ok(parsedValue)` where `parsedValue` is the parsed JSON
|
|
40
|
-
* - On failure: `Result.err(errorMessage)` where `errorMessage` describes the parsing error
|
|
9
|
+
* Safely converts a JSON string into a JavaScript value without throwing
|
|
10
|
+
* exceptions.
|
|
41
11
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* if (Result.isOk(result)) {
|
|
46
|
-
* console.log(result.value.name); // 'John'
|
|
47
|
-
* }
|
|
48
|
-
* ```
|
|
12
|
+
* This function provides type-safe JSON parsing by wrapping the native
|
|
13
|
+
* `JSON.parse` in a `Result` type, allowing you to handle parsing errors
|
|
14
|
+
* gracefully without try-catch blocks.
|
|
49
15
|
*
|
|
50
16
|
* @example
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* const validJson = '{"name": "Alice", "age": 30}';
|
|
20
|
+
* const invalidJson = '{invalid json}';
|
|
21
|
+
*
|
|
22
|
+
* const parsed = Json.parse(validJson);
|
|
23
|
+
* const failed = Json.parse(invalidJson);
|
|
24
|
+
*
|
|
25
|
+
* assert.ok(Result.isOk(parsed));
|
|
26
|
+
* if (Result.isOk(parsed)) {
|
|
27
|
+
* assert.deepStrictEqual(parsed.value, { name: 'Alice', age: 30 });
|
|
55
28
|
* }
|
|
29
|
+
*
|
|
30
|
+
* assert.ok(Result.isErr(failed));
|
|
31
|
+
*
|
|
32
|
+
* // With reviver
|
|
33
|
+
* const jsonWithDate = '{"created": "2024-01-01T00:00:00.000Z"}';
|
|
34
|
+
* const withReviver = Json.parse(jsonWithDate, (key, value) => {
|
|
35
|
+
* if (key === 'created' && typeof value === 'string') {
|
|
36
|
+
* return new Date(value);
|
|
37
|
+
* }
|
|
38
|
+
* return value;
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* assert.ok(Result.isOk(withReviver));
|
|
56
42
|
* ```
|
|
43
|
+
*
|
|
44
|
+
* @param text - A valid JSON string to parse. Can contain any valid JSON data
|
|
45
|
+
* type: primitives (string, number, boolean, null), arrays, or objects.
|
|
46
|
+
* @param reviver - Optional function that transforms parsed values. Called
|
|
47
|
+
* for each key-value pair in the JSON. The function receives the key name
|
|
48
|
+
* and parsed value, and should return the transformed value. For nested
|
|
49
|
+
* objects, inner objects are processed before outer objects.
|
|
50
|
+
* @returns A `Result<JsonValue, string>` containing:
|
|
51
|
+
*
|
|
52
|
+
* - On success: `Result.ok(parsedValue)` where `parsedValue` is the parsed JSON
|
|
53
|
+
* - On failure: `Result.err(errorMessage)` where `errorMessage` describes the
|
|
54
|
+
* parsing error
|
|
57
55
|
*/
|
|
58
56
|
const parse: (text: string, reviver?: (this: unknown, key: string, value: JsonValue) => unknown) => Result<JsonValue, string>;
|
|
59
57
|
/**
|
|
60
|
-
* Safely converts a JavaScript value to a JSON string without throwing
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* accepts: primitives, objects, arrays. Non-serializable values (functions, undefined,
|
|
68
|
-
* symbols) will be omitted or converted to null according to JSON.stringify behavior.
|
|
69
|
-
* @param replacer - Optional function that transforms values during serialization.
|
|
70
|
-
* Called for each key-value pair. Should return the value to be serialized, or
|
|
71
|
-
* undefined to omit the property from the result.
|
|
72
|
-
* @param space - Optional parameter for formatting the output JSON:
|
|
73
|
-
* - Number (1-10): Number of spaces to indent each level
|
|
74
|
-
* - String: String to use for indentation (first 10 characters)
|
|
75
|
-
* - undefined/null: No formatting (compact output)
|
|
76
|
-
* @returns A `Result<string, string>` containing:
|
|
77
|
-
* - On success: `Result.ok(jsonString)` where `jsonString` is the serialized JSON
|
|
78
|
-
* - On failure: `Result.err(errorMessage)` where `errorMessage` describes the error
|
|
58
|
+
* Safely converts a JavaScript value to a JSON string without throwing
|
|
59
|
+
* exceptions.
|
|
60
|
+
*
|
|
61
|
+
* This function provides type-safe JSON stringification by wrapping the
|
|
62
|
+
* native `JSON.stringify` in a `Result` type, allowing you to handle
|
|
63
|
+
* serialization errors gracefully (such as circular references or BigInt
|
|
64
|
+
* values).
|
|
79
65
|
*
|
|
80
66
|
* @example
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* const
|
|
84
|
-
*
|
|
85
|
-
*
|
|
67
|
+
*
|
|
68
|
+
* ```ts
|
|
69
|
+
* const data = { name: 'Bob', age: 25, active: true };
|
|
70
|
+
*
|
|
71
|
+
* // Basic stringify
|
|
72
|
+
* const basic = Json.stringify(data);
|
|
73
|
+
* assert.ok(Result.isOk(basic));
|
|
74
|
+
* if (Result.isOk(basic)) {
|
|
75
|
+
* assert(basic.value === '{"name":"Bob","age":25,"active":true}');
|
|
86
76
|
* }
|
|
87
|
-
* ```
|
|
88
77
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
78
|
+
* // With formatting
|
|
79
|
+
* const formatted = Json.stringify(data, undefined, 2);
|
|
80
|
+
* assert.ok(Result.isOk(formatted));
|
|
81
|
+
*
|
|
82
|
+
* // With replacer
|
|
83
|
+
* const filtered = Json.stringify(data, (key, value) => {
|
|
84
|
+
* if (key === 'age') return undefined; // omit age field
|
|
85
|
+
* return value;
|
|
86
|
+
* });
|
|
87
|
+
*
|
|
88
|
+
* assert.ok(Result.isOk(filtered));
|
|
89
|
+
* if (Result.isOk(filtered)) {
|
|
90
|
+
* assert.ok(!filtered.value.includes('age'));
|
|
96
91
|
* }
|
|
97
92
|
* ```
|
|
98
|
-
*/
|
|
99
|
-
const stringify: (value: unknown, replacer?: (this: unknown, key: string, val: unknown) => unknown, space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
|
|
100
|
-
/**
|
|
101
|
-
* Safely converts a JavaScript value to a JSON string, including only the specified properties.
|
|
102
93
|
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
94
|
+
* @param value - The JavaScript value to serialize. Can be any value that
|
|
95
|
+
* JSON.stringify accepts: primitives, objects, arrays. Non-serializable
|
|
96
|
+
* values (functions, undefined, symbols) will be omitted or converted to
|
|
97
|
+
* null according to JSON.stringify behavior.
|
|
98
|
+
* @param replacer - Optional function that transforms values during
|
|
99
|
+
* serialization. Called for each key-value pair. Should return the value to
|
|
100
|
+
* be serialized, or undefined to omit the property from the result.
|
|
101
|
+
* @param space - Optional parameter for formatting the output JSON:
|
|
106
102
|
*
|
|
107
|
-
* @param value - The JavaScript value to serialize. While any value is accepted,
|
|
108
|
-
* the property filtering only applies to objects and nested objects.
|
|
109
|
-
* @param propertiesToBeSelected - Optional array of property names (strings) and array
|
|
110
|
-
* indices (numbers) to include in the serialization. If provided, only these properties
|
|
111
|
-
* will appear in the output JSON. If undefined, all properties are included.
|
|
112
|
-
* @param space - Optional formatting parameter:
|
|
113
103
|
* - Number (1-10): Number of spaces to indent each level
|
|
114
104
|
* - String: String to use for indentation (first 10 characters)
|
|
115
|
-
* -
|
|
105
|
+
* - Undefined/null: No formatting (compact output)
|
|
106
|
+
*
|
|
116
107
|
* @returns A `Result<string, string>` containing:
|
|
117
|
-
*
|
|
118
|
-
* - On
|
|
108
|
+
*
|
|
109
|
+
* - On success: `Result.ok(jsonString)` where `jsonString` is the serialized
|
|
110
|
+
* JSON
|
|
111
|
+
* - On failure: `Result.err(errorMessage)` where `errorMessage` describes the
|
|
112
|
+
* error
|
|
113
|
+
*/
|
|
114
|
+
const stringify: (value: unknown, replacer?: (this: unknown, key: string, val: unknown) => unknown, space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
|
|
115
|
+
/**
|
|
116
|
+
* Safely converts a JavaScript value to a JSON string, including only the
|
|
117
|
+
* specified properties.
|
|
118
|
+
*
|
|
119
|
+
* This function provides selective serialization by allowing you to specify
|
|
120
|
+
* exactly which object properties should be included in the resulting JSON.
|
|
121
|
+
* It's useful for creating filtered or minimal representations of objects,
|
|
122
|
+
* such as for API responses or logging.
|
|
119
123
|
*
|
|
120
124
|
* @example
|
|
121
|
-
*
|
|
125
|
+
*
|
|
126
|
+
* ```ts
|
|
122
127
|
* const user = {
|
|
123
128
|
* id: 1,
|
|
124
|
-
* name: '
|
|
125
|
-
* email: '
|
|
126
|
-
* password: 'secret123'
|
|
129
|
+
* name: 'Charlie',
|
|
130
|
+
* email: 'charlie@example.com',
|
|
131
|
+
* password: 'secret123',
|
|
132
|
+
* role: 'admin',
|
|
127
133
|
* };
|
|
128
134
|
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
135
|
+
* // Select only safe properties to serialize
|
|
136
|
+
* const safeJson = Json.stringifySelected(user, ['id', 'name', 'role']);
|
|
137
|
+
*
|
|
138
|
+
* assert.ok(Result.isOk(safeJson));
|
|
139
|
+
* if (Result.isOk(safeJson)) {
|
|
140
|
+
* const parsed: unknown = JSON.parse(safeJson.value);
|
|
141
|
+
* assert.deepStrictEqual(parsed, {
|
|
142
|
+
* id: 1,
|
|
143
|
+
* name: 'Charlie',
|
|
144
|
+
* role: 'admin',
|
|
145
|
+
* });
|
|
146
|
+
* assert.ok(!safeJson.value.includes('password'));
|
|
147
|
+
* assert.ok(!safeJson.value.includes('email'));
|
|
133
148
|
* }
|
|
134
|
-
* ```
|
|
135
|
-
*/
|
|
136
|
-
const stringifySelected: (value: unknown, propertiesToBeSelected?: readonly (number | string)[], space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
|
|
137
|
-
/**
|
|
138
|
-
* Safely converts a JavaScript record to a JSON string with keys sorted alphabetically at all levels.
|
|
139
149
|
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
150
|
+
* // With formatting
|
|
151
|
+
* const formatted = Json.stringifySelected(user, ['id', 'name'], 2);
|
|
152
|
+
* assert.ok(Result.isOk(formatted));
|
|
153
|
+
* ```
|
|
144
154
|
*
|
|
145
|
-
* @param value -
|
|
146
|
-
*
|
|
147
|
-
*
|
|
155
|
+
* @param value - The JavaScript value to serialize. While any value is
|
|
156
|
+
* accepted, the property filtering only applies to objects and nested
|
|
157
|
+
* objects.
|
|
158
|
+
* @param propertiesToBeSelected - Optional array of property names (strings)
|
|
159
|
+
* and array indices (numbers) to include in the serialization. If provided,
|
|
160
|
+
* only these properties will appear in the output JSON. If undefined, all
|
|
161
|
+
* properties are included.
|
|
148
162
|
* @param space - Optional formatting parameter:
|
|
163
|
+
*
|
|
149
164
|
* - Number (1-10): Number of spaces to indent each level
|
|
150
165
|
* - String: String to use for indentation (first 10 characters)
|
|
151
|
-
* -
|
|
166
|
+
* - Undefined/null: No formatting (compact output)
|
|
167
|
+
*
|
|
152
168
|
* @returns A `Result<string, string>` containing:
|
|
153
|
-
*
|
|
169
|
+
*
|
|
170
|
+
* - On success: `Result.ok(jsonString)` with only selected properties
|
|
154
171
|
* - On failure: `Result.err(errorMessage)` describing the serialization error
|
|
172
|
+
*/
|
|
173
|
+
const stringifySelected: (value: unknown, propertiesToBeSelected?: readonly (number | string)[], space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
|
|
174
|
+
/**
|
|
175
|
+
* Safely converts a JavaScript record to a JSON string with keys sorted
|
|
176
|
+
* alphabetically at all levels.
|
|
177
|
+
*
|
|
178
|
+
* This function creates deterministic JSON output by ensuring that object
|
|
179
|
+
* keys appear in alphabetical order at every level of nesting. This is
|
|
180
|
+
* particularly useful for creating consistent output for comparison, hashing,
|
|
181
|
+
* caching, or when you need reproducible JSON representations across
|
|
182
|
+
* different JavaScript engines or runs.
|
|
155
183
|
*
|
|
156
184
|
* @example
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
185
|
+
*
|
|
186
|
+
* ```ts
|
|
187
|
+
* const unorderedData = {
|
|
188
|
+
* zebra: 1,
|
|
189
|
+
* apple: 2,
|
|
190
|
+
* mango: 3,
|
|
191
|
+
* nested: {
|
|
192
|
+
* zulu: 'z',
|
|
193
|
+
* alpha: 'a',
|
|
194
|
+
* beta: 'b',
|
|
195
|
+
* },
|
|
162
196
|
* };
|
|
163
197
|
*
|
|
164
|
-
*
|
|
198
|
+
* // Keys will be sorted alphabetically at all levels
|
|
199
|
+
* const sorted = Json.stringifySortedKey(unorderedData);
|
|
200
|
+
*
|
|
201
|
+
* assert.ok(Result.isOk(sorted));
|
|
165
202
|
* if (Result.isOk(sorted)) {
|
|
166
|
-
*
|
|
167
|
-
*
|
|
203
|
+
* // Keys should appear in alphabetical order
|
|
204
|
+
* const expected =
|
|
205
|
+
* '{"apple":2,"mango":3,"nested":{"alpha":"a","beta":"b","zulu":"z"},"zebra":1}';
|
|
206
|
+
* assert(sorted.value === expected);
|
|
207
|
+
* }
|
|
208
|
+
*
|
|
209
|
+
* // With formatting
|
|
210
|
+
* const formatted = Json.stringifySortedKey(unorderedData, 2);
|
|
211
|
+
* assert.ok(Result.isOk(formatted));
|
|
212
|
+
* if (Result.isOk(formatted)) {
|
|
213
|
+
* // Check that keys are in order (first key should be "apple")
|
|
214
|
+
* assert.ok(
|
|
215
|
+
* formatted.value.indexOf('"apple"') < formatted.value.indexOf('"mango"'),
|
|
216
|
+
* );
|
|
217
|
+
* assert.ok(
|
|
218
|
+
* formatted.value.indexOf('"mango"') < formatted.value.indexOf('"nested"'),
|
|
219
|
+
* );
|
|
220
|
+
* assert.ok(
|
|
221
|
+
* formatted.value.indexOf('"nested"') < formatted.value.indexOf('"zebra"'),
|
|
222
|
+
* );
|
|
168
223
|
* }
|
|
169
224
|
* ```
|
|
225
|
+
*
|
|
226
|
+
* @param value - An object (`UnknownRecord`) to serialize. Must be a plain
|
|
227
|
+
* object (not an array, primitive, or null). Nested objects and arrays
|
|
228
|
+
* within the object will also have their keys sorted alphabetically.
|
|
229
|
+
* @param space - Optional formatting parameter:
|
|
230
|
+
*
|
|
231
|
+
* - Number (1-10): Number of spaces to indent each level
|
|
232
|
+
* - String: String to use for indentation (first 10 characters)
|
|
233
|
+
* - Undefined/null: No formatting (compact output)
|
|
234
|
+
*
|
|
235
|
+
* @returns A `Result<string, string>` containing:
|
|
236
|
+
*
|
|
237
|
+
* - On success: `Result.ok(jsonString)` with all object keys sorted
|
|
238
|
+
* alphabetically
|
|
239
|
+
* - On failure: `Result.err(errorMessage)` describing the serialization error
|
|
170
240
|
*/
|
|
171
241
|
const stringifySortedKey: (value: UnknownRecord, space?: UintRangeInclusive<1, 10> | string) => Result<string, string>;
|
|
172
242
|
}
|
package/dist/json/json.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.mts","sourceRoot":"","sources":["../../src/json/json.mts"],"names":[],"mappings":"AACA,OAAO,EAAQ,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIvD
|
|
1
|
+
{"version":3,"file":"json.d.mts","sourceRoot":"","sources":["../../src/json/json.mts"],"names":[],"mappings":"AACA,OAAO,EAAQ,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIvD;;;;GAIG;AACH,yBAAiB,IAAI,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACI,MAAM,KAAK,GAChB,MAAM,MAAM,EACZ,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,OAAO,KAClE,MAAM,CAAC,SAAS,EAAE,MAAM,CAa1B,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwDG;IACI,MAAM,SAAS,GACpB,OAAO,OAAO,EACd,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,EAChE,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAOvB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyDG;IACI,MAAM,iBAAiB,GAC5B,OAAO,OAAO,EACd,yBAAyB,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACrD,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CASvB,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkEG;IACI,MAAM,kBAAkB,GAC7B,OAAO,aAAa,EACpB,QAAQ,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,KACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAMvB,CAAC;CACH"}
|