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,23 +1,28 @@
|
|
|
1
1
|
import { Optional } from '../functional/index.mjs';
|
|
2
2
|
/**
|
|
3
|
-
* Interface for a high-performance stack with LIFO (Last-In, First-Out)
|
|
3
|
+
* Interface for a high-performance stack with LIFO (Last-In, First-Out)
|
|
4
|
+
* behavior.
|
|
4
5
|
*
|
|
5
|
-
* This interface defines a mutable stack data structure where elements are
|
|
6
|
-
* from the top, following the Last-In, First-Out
|
|
7
|
-
*
|
|
6
|
+
* This interface defines a mutable stack data structure where elements are
|
|
7
|
+
* added to and removed from the top, following the Last-In, First-Out
|
|
8
|
+
* principle. The implementation uses a dynamic array for optimal performance,
|
|
9
|
+
* providing O(1) operations for both push and pop operations.
|
|
8
10
|
*
|
|
9
11
|
* **LIFO Behavior:**
|
|
12
|
+
*
|
|
10
13
|
* - **push**: Adds elements to the top of the stack
|
|
11
14
|
* - **pop**: Removes and returns elements from the top of the stack
|
|
12
15
|
* - The last element added is the first element to be removed
|
|
13
16
|
*
|
|
14
17
|
* **Performance Characteristics:**
|
|
15
|
-
*
|
|
16
|
-
* -
|
|
17
|
-
* -
|
|
18
|
+
*
|
|
19
|
+
* - Push: O(1) amortized (O(n) when buffer needs resizing)
|
|
20
|
+
* - Pop: O(1) always
|
|
21
|
+
* - Size/isEmpty: O(1) always
|
|
18
22
|
* - Memory efficient with automatic garbage collection of removed elements
|
|
19
23
|
*
|
|
20
24
|
* **Use Cases:**
|
|
25
|
+
*
|
|
21
26
|
* - Function call management and recursion
|
|
22
27
|
* - Undo/redo functionality
|
|
23
28
|
* - Expression evaluation and parsing
|
|
@@ -26,63 +31,137 @@ import { Optional } from '../functional/index.mjs';
|
|
|
26
31
|
* - Browser history management
|
|
27
32
|
*
|
|
28
33
|
* @template T The type of elements stored in the stack.
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```typescript
|
|
32
|
-
* import { createStack, Stack } from './stack';
|
|
33
|
-
*
|
|
34
|
-
* // Example 1: Basic LIFO operations
|
|
35
|
-
* const operationStack: Stack<string> = createStack<string>();
|
|
36
|
-
*
|
|
37
|
-
* operationStack.push("operation1"); // Add to top
|
|
38
|
-
* operationStack.push("operation2"); // Add to top
|
|
39
|
-
* operationStack.push("operation3"); // Add to top
|
|
40
|
-
*
|
|
41
|
-
* console.log(operationStack.size); // Output: 3
|
|
42
|
-
*
|
|
43
|
-
* // Process operations in LIFO order
|
|
44
|
-
* console.log(operationStack.pop().unwrap()); // "operation3" (last in, first out)
|
|
45
|
-
* console.log(operationStack.pop().unwrap()); // "operation2"
|
|
46
|
-
* console.log(operationStack.size); // Output: 1
|
|
47
|
-
*
|
|
48
|
-
* // Example 2: Undo functionality
|
|
49
|
-
* type Action = { type: string; data: any; timestamp: number };
|
|
50
|
-
* const undoStack: Stack<Action> = createStack<Action>();
|
|
51
|
-
*
|
|
52
|
-
* undoStack.push({ type: "delete", data: { id: 123 }, timestamp: Date.now() });
|
|
53
|
-
* undoStack.push({ type: "edit", data: { field: "name", oldValue: "old" }, timestamp: Date.now() });
|
|
54
|
-
*
|
|
55
|
-
* // Undo last action
|
|
56
|
-
* if (!undoStack.isEmpty) {
|
|
57
|
-
* const lastAction = undoStack.pop().unwrap();
|
|
58
|
-
* console.log(`Undoing: ${lastAction.type}`);
|
|
59
|
-
* }
|
|
60
|
-
* ```
|
|
61
34
|
*/
|
|
62
35
|
export type Stack<T> = Readonly<{
|
|
63
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Checks if the stack is empty.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
*
|
|
41
|
+
* ```ts
|
|
42
|
+
* const stack = createStack<string>();
|
|
43
|
+
*
|
|
44
|
+
* assert.ok(stack.isEmpty);
|
|
45
|
+
* assert(stack.size === 0);
|
|
46
|
+
*
|
|
47
|
+
* stack.push('first');
|
|
48
|
+
* // eslint-disable-next-line unicorn/prefer-single-call
|
|
49
|
+
* stack.push('second');
|
|
50
|
+
*
|
|
51
|
+
* assert.notOk(stack.isEmpty);
|
|
52
|
+
* assert(stack.size === 2);
|
|
53
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('second'));
|
|
54
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('first'));
|
|
55
|
+
* assert.deepStrictEqual(stack.pop(), Optional.none);
|
|
56
|
+
*
|
|
57
|
+
* const seededStack = createStack([10, 20, 30]);
|
|
58
|
+
*
|
|
59
|
+
* assert(seededStack.size === 3);
|
|
60
|
+
* assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
64
63
|
isEmpty: boolean;
|
|
65
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* The number of elements in the stack.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
*
|
|
69
|
+
* ```ts
|
|
70
|
+
* const stack = createStack<string>();
|
|
71
|
+
*
|
|
72
|
+
* assert.ok(stack.isEmpty);
|
|
73
|
+
* assert(stack.size === 0);
|
|
74
|
+
*
|
|
75
|
+
* stack.push('first');
|
|
76
|
+
* // eslint-disable-next-line unicorn/prefer-single-call
|
|
77
|
+
* stack.push('second');
|
|
78
|
+
*
|
|
79
|
+
* assert.notOk(stack.isEmpty);
|
|
80
|
+
* assert(stack.size === 2);
|
|
81
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('second'));
|
|
82
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('first'));
|
|
83
|
+
* assert.deepStrictEqual(stack.pop(), Optional.none);
|
|
84
|
+
*
|
|
85
|
+
* const seededStack = createStack([10, 20, 30]);
|
|
86
|
+
*
|
|
87
|
+
* assert(seededStack.size === 3);
|
|
88
|
+
* assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
66
91
|
size: SizeType.Arr;
|
|
67
92
|
/**
|
|
68
93
|
* Removes and returns the element at the top of the stack.
|
|
69
|
-
*
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
*
|
|
97
|
+
* ```ts
|
|
98
|
+
* const stack = createStack<string>();
|
|
99
|
+
*
|
|
100
|
+
* assert.ok(stack.isEmpty);
|
|
101
|
+
* assert(stack.size === 0);
|
|
102
|
+
*
|
|
103
|
+
* stack.push('first');
|
|
104
|
+
* // eslint-disable-next-line unicorn/prefer-single-call
|
|
105
|
+
* stack.push('second');
|
|
106
|
+
*
|
|
107
|
+
* assert.notOk(stack.isEmpty);
|
|
108
|
+
* assert(stack.size === 2);
|
|
109
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('second'));
|
|
110
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('first'));
|
|
111
|
+
* assert.deepStrictEqual(stack.pop(), Optional.none);
|
|
112
|
+
*
|
|
113
|
+
* const seededStack = createStack([10, 20, 30]);
|
|
114
|
+
*
|
|
115
|
+
* assert(seededStack.size === 3);
|
|
116
|
+
* assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* @returns The element at the top of the stack, or `Optional.none` if the
|
|
120
|
+
* stack is empty.
|
|
70
121
|
*/
|
|
71
122
|
pop: () => Optional<T>;
|
|
72
123
|
/**
|
|
73
124
|
* Adds an element to the top of the stack.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
*
|
|
128
|
+
* ```ts
|
|
129
|
+
* const stack = createStack<string>();
|
|
130
|
+
*
|
|
131
|
+
* assert.ok(stack.isEmpty);
|
|
132
|
+
* assert(stack.size === 0);
|
|
133
|
+
*
|
|
134
|
+
* stack.push('first');
|
|
135
|
+
* // eslint-disable-next-line unicorn/prefer-single-call
|
|
136
|
+
* stack.push('second');
|
|
137
|
+
*
|
|
138
|
+
* assert.notOk(stack.isEmpty);
|
|
139
|
+
* assert(stack.size === 2);
|
|
140
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('second'));
|
|
141
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('first'));
|
|
142
|
+
* assert.deepStrictEqual(stack.pop(), Optional.none);
|
|
143
|
+
*
|
|
144
|
+
* const seededStack = createStack([10, 20, 30]);
|
|
145
|
+
*
|
|
146
|
+
* assert(seededStack.size === 3);
|
|
147
|
+
* assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
74
150
|
* @param value The element to add.
|
|
75
151
|
*/
|
|
76
152
|
push: (value: T) => void;
|
|
77
153
|
}>;
|
|
78
154
|
/**
|
|
79
|
-
* Creates a new Stack instance with LIFO (Last-In, First-Out) behavior using a
|
|
155
|
+
* Creates a new Stack instance with LIFO (Last-In, First-Out) behavior using a
|
|
156
|
+
* high-performance dynamic array.
|
|
80
157
|
*
|
|
81
|
-
* This factory function creates an optimized stack implementation that
|
|
82
|
-
* characteristics for both push and pop
|
|
83
|
-
*
|
|
158
|
+
* This factory function creates an optimized stack implementation that
|
|
159
|
+
* maintains excellent performance characteristics for both push and pop
|
|
160
|
+
* operations. The underlying dynamic array automatically resizes to accommodate
|
|
161
|
+
* growing workloads while providing predictable O(1) operations.
|
|
84
162
|
*
|
|
85
163
|
* **Implementation Features:**
|
|
164
|
+
*
|
|
86
165
|
* - **O(1) push operations** (amortized - occasionally O(n) when resizing)
|
|
87
166
|
* - **O(1) pop operations** (always)
|
|
88
167
|
* - **Automatic buffer resizing** - starts at 8 elements, doubles when full
|
|
@@ -90,121 +169,42 @@ export type Stack<T> = Readonly<{
|
|
|
90
169
|
* - **Dynamic array design** - eliminates need for complex memory management
|
|
91
170
|
*
|
|
92
171
|
* **Performance Benefits:**
|
|
172
|
+
*
|
|
93
173
|
* - No array shifting required for stack operations
|
|
94
174
|
* - Minimal memory allocation overhead
|
|
95
175
|
* - Predictable performance under high load
|
|
96
176
|
* - Efficient memory usage with automatic cleanup
|
|
97
177
|
*
|
|
98
|
-
* @template T The type of elements stored in the stack.
|
|
99
|
-
* @param initialValues Optional array of initial elements to populate the stack.
|
|
100
|
-
* Elements will be popped in reverse order of how they appear in the array
|
|
101
|
-
* (last array element will be popped first).
|
|
102
|
-
* If provided, the initial buffer capacity will be at least twice the array length.
|
|
103
|
-
* @returns A new Stack instance optimized for high-performance LIFO operations.
|
|
104
|
-
*
|
|
105
178
|
* @example
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* // Example 2: Expression evaluation with operator precedence
|
|
129
|
-
* const operatorStack = createStack<string>();
|
|
130
|
-
* const operandStack = createStack<number>();
|
|
131
|
-
*
|
|
132
|
-
* // Simulate parsing "3 + 4 * 2"
|
|
133
|
-
* operandStack.push(3);
|
|
134
|
-
* operatorStack.push("+");
|
|
135
|
-
* operandStack.push(4);
|
|
136
|
-
* operatorStack.push("*"); // Higher precedence
|
|
137
|
-
* operandStack.push(2);
|
|
138
|
-
*
|
|
139
|
-
* // Process higher precedence first (LIFO)
|
|
140
|
-
* const op = operatorStack.pop().unwrap(); // "*"
|
|
141
|
-
* const b = operandStack.pop().unwrap(); // 2
|
|
142
|
-
* const a = operandStack.pop().unwrap(); // 4
|
|
143
|
-
* operandStack.push(a * b); // Push result: 8
|
|
144
|
-
*
|
|
145
|
-
* // Example 3: Undo/Redo functionality
|
|
146
|
-
* type EditAction = {
|
|
147
|
-
* type: 'insert' | 'delete' | 'modify';
|
|
148
|
-
* position: number;
|
|
149
|
-
* oldValue: string;
|
|
150
|
-
* newValue: string;
|
|
151
|
-
* };
|
|
152
|
-
*
|
|
153
|
-
* const undoStack = createStack<EditAction>();
|
|
154
|
-
* const redoStack = createStack<EditAction>();
|
|
155
|
-
*
|
|
156
|
-
* // Perform edits (push to undo stack)
|
|
157
|
-
* const edit1: EditAction = { type: 'insert', position: 0, oldValue: '', newValue: 'Hello' };
|
|
158
|
-
* const edit2: EditAction = { type: 'insert', position: 5, oldValue: '', newValue: ' World' };
|
|
159
|
-
*
|
|
160
|
-
* undoStack.push(edit1);
|
|
161
|
-
* undoStack.push(edit2);
|
|
162
|
-
*
|
|
163
|
-
* // Undo last edit
|
|
164
|
-
* if (!undoStack.isEmpty) {
|
|
165
|
-
* const lastEdit = undoStack.pop().unwrap();
|
|
166
|
-
* redoStack.push(lastEdit);
|
|
167
|
-
* console.log(`Undid: ${lastEdit.type} at position ${lastEdit.position}`);
|
|
168
|
-
* }
|
|
169
|
-
*
|
|
170
|
-
* // Example 4: High-throughput data processing
|
|
171
|
-
* const processingStack = createStack<number>();
|
|
172
|
-
*
|
|
173
|
-
* // Add large amount of data (demonstrates amortized O(1) performance)
|
|
174
|
-
* for (const i of range(100000)) {
|
|
175
|
-
* processingStack.push(i); // Each push is O(1) amortized
|
|
176
|
-
* }
|
|
177
|
-
*
|
|
178
|
-
* // Process data in LIFO order
|
|
179
|
-
* let processedCount = 0;
|
|
180
|
-
* while (!processingStack.isEmpty) {
|
|
181
|
-
* const value = processingStack.pop().unwrap(); // O(1)
|
|
182
|
-
* // Process value...
|
|
183
|
-
* processedCount++;
|
|
184
|
-
* }
|
|
185
|
-
* console.log(`Processed ${processedCount} items`); // 100000
|
|
186
|
-
*
|
|
187
|
-
* // Example 5: Stack with pre-populated data
|
|
188
|
-
* const historyStack = createStack<string>([
|
|
189
|
-
* "page1.html",
|
|
190
|
-
* "page2.html",
|
|
191
|
-
* "page3.html",
|
|
192
|
-
* "page4.html"
|
|
193
|
-
* ]);
|
|
194
|
-
*
|
|
195
|
-
* console.log(historyStack.size); // Output: 4
|
|
196
|
-
*
|
|
197
|
-
* // Navigate back through history (LIFO order)
|
|
198
|
-
* while (!historyStack.isEmpty) {
|
|
199
|
-
* const page = historyStack.pop().unwrap();
|
|
200
|
-
* console.log(`Going back to: ${page}`);
|
|
201
|
-
* }
|
|
202
|
-
* // Output:
|
|
203
|
-
* // Going back to: page4.html (last added, first removed)
|
|
204
|
-
* // Going back to: page3.html
|
|
205
|
-
* // Going back to: page2.html
|
|
206
|
-
* // Going back to: page1.html
|
|
179
|
+
*
|
|
180
|
+
* ```ts
|
|
181
|
+
* const stack = createStack<string>();
|
|
182
|
+
*
|
|
183
|
+
* assert.ok(stack.isEmpty);
|
|
184
|
+
* assert(stack.size === 0);
|
|
185
|
+
*
|
|
186
|
+
* stack.push('first');
|
|
187
|
+
* // eslint-disable-next-line unicorn/prefer-single-call
|
|
188
|
+
* stack.push('second');
|
|
189
|
+
*
|
|
190
|
+
* assert.notOk(stack.isEmpty);
|
|
191
|
+
* assert(stack.size === 2);
|
|
192
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('second'));
|
|
193
|
+
* assert.deepStrictEqual(stack.pop(), Optional.some('first'));
|
|
194
|
+
* assert.deepStrictEqual(stack.pop(), Optional.none);
|
|
195
|
+
*
|
|
196
|
+
* const seededStack = createStack([10, 20, 30]);
|
|
197
|
+
*
|
|
198
|
+
* assert(seededStack.size === 3);
|
|
199
|
+
* assert.deepStrictEqual(seededStack.pop(), Optional.some(30));
|
|
207
200
|
* ```
|
|
201
|
+
*
|
|
202
|
+
* @template T The type of elements stored in the stack.
|
|
203
|
+
* @param initialValues Optional array of initial elements to populate the
|
|
204
|
+
* stack. Elements will be popped in reverse order of how they appear in the
|
|
205
|
+
* array (last array element will be popped first). If provided, the initial
|
|
206
|
+
* buffer capacity will be at least twice the array length.
|
|
207
|
+
* @returns A new Stack instance optimized for high-performance LIFO operations.
|
|
208
208
|
*/
|
|
209
209
|
export declare const createStack: <T>(initialValues?: readonly T[]) => Stack<T>;
|
|
210
210
|
//# sourceMappingURL=stack.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.d.mts","sourceRoot":"","sources":["../../src/collections/stack.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAInD
|
|
1
|
+
{"version":3,"file":"stack.d.mts","sourceRoot":"","sources":["../../src/collections/stack.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAInD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC;IAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,GAAG,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC1B,CAAC,CAAC;AAwIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAG,gBAAgB,SAAS,CAAC,EAAE,KAAG,KAAK,CAAC,CAAC,CACpC,CAAC"}
|