ts-data-forge 5.0.1 → 5.1.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 +101 -50
- package/dist/array/impl/array-utils-creation.d.mts +14 -0
- package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-creation.mjs +12 -0
- package/dist/array/impl/array-utils-creation.mjs.map +1 -1
- package/dist/array/impl/array-utils-element-access.d.mts +10 -0
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
- package/dist/array/impl/array-utils-element-access.mjs +6 -0
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
- package/dist/array/impl/array-utils-modification.d.mts +14 -0
- package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
- package/dist/array/impl/array-utils-modification.mjs.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.d.mts +34 -10
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.d.mts +34 -4
- package/dist/array/impl/array-utils-search.d.mts.map +1 -1
- package/dist/array/impl/array-utils-search.mjs.map +1 -1
- package/dist/array/impl/array-utils-set-op.d.mts +20 -7
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
- package/dist/array/impl/array-utils-set-op.mjs +20 -7
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
- package/dist/array/impl/array-utils-size.d.mts +5 -2
- package/dist/array/impl/array-utils-size.d.mts.map +1 -1
- package/dist/array/impl/array-utils-size.mjs +5 -2
- package/dist/array/impl/array-utils-size.mjs.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.d.mts +2 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.d.mts +17 -2
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +9 -2
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.d.mts +27 -0
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +6 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.d.mts +35 -18
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +25 -14
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +35 -15
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +5 -3
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +46 -19
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +9 -2
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +48 -19
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +9 -2
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts +65 -25
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +13 -5
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +60 -25
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +12 -5
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.mjs +1 -1
- package/dist/functional/match.d.mts +1 -1
- package/dist/functional/match.d.mts.map +1 -1
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-expect-to-be.d.mts +3 -2
- package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-filter.d.mts +3 -0
- package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -0
- package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-from-nullable.d.mts +2 -0
- package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-from-nullable.mjs +2 -0
- package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-none.d.mts +1 -1
- package/dist/functional/optional/impl/optional-is-none.mjs +1 -1
- package/dist/functional/optional/impl/optional-is-optional.d.mts +4 -2
- package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.mjs +4 -2
- package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.d.mts +2 -1
- package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.mjs +2 -1
- package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-map.d.mts +2 -0
- package/dist/functional/optional/impl/optional-map.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-none.d.mts +4 -2
- package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-none.mjs +4 -2
- package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-or-else.d.mts +4 -0
- package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-some.d.mts +5 -3
- package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-some.mjs +4 -2
- package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.d.mts +4 -2
- package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.mjs +4 -2
- package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-or.d.mts +7 -4
- package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +2 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs +2 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap.d.mts +4 -2
- package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-zip.d.mts +3 -1
- package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-zip.mjs +3 -1
- package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
- package/dist/functional/pipe.d.mts +2 -2
- package/dist/functional/result/impl/result-err.d.mts +4 -2
- package/dist/functional/result/impl/result-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-err.mjs +3 -1
- package/dist/functional/result/impl/result-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-expect-to-be.d.mts +3 -2
- package/dist/functional/result/impl/result-expect-to-be.d.mts.map +1 -1
- package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
- package/dist/functional/result/impl/result-flat-map.d.mts +5 -0
- package/dist/functional/result/impl/result-flat-map.d.mts.map +1 -1
- package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-fold.d.mts +4 -0
- package/dist/functional/result/impl/result-fold.d.mts.map +1 -1
- package/dist/functional/result/impl/result-fold.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-promise.d.mts +4 -1
- package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
- package/dist/functional/result/impl/result-from-promise.mjs +4 -1
- package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.d.mts +3 -1
- package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.mjs +3 -1
- package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-err.d.mts +4 -2
- package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-err.mjs +4 -2
- package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-ok.d.mts +4 -2
- package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-ok.mjs +4 -2
- package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-result.d.mts +7 -3
- package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-result.mjs +7 -3
- package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
- package/dist/functional/result/impl/result-map-err.d.mts +3 -0
- package/dist/functional/result/impl/result-map-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-map.d.mts +4 -0
- package/dist/functional/result/impl/result-map.d.mts.map +1 -1
- package/dist/functional/result/impl/result-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-ok.d.mts +4 -2
- package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-ok.mjs +3 -1
- package/dist/functional/result/impl/result-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-or-else.d.mts +4 -0
- package/dist/functional/result/impl/result-or-else.d.mts.map +1 -1
- package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
- package/dist/functional/result/impl/result-swap.d.mts +2 -0
- package/dist/functional/result/impl/result-swap.d.mts.map +1 -1
- package/dist/functional/result/impl/result-swap.mjs +2 -0
- package/dist/functional/result/impl/result-swap.mjs.map +1 -1
- package/dist/functional/result/impl/result-to-optional.d.mts +2 -0
- package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -1
- package/dist/functional/result/impl/result-to-optional.mjs +2 -0
- package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-or.d.mts +7 -4
- package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +3 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs +3 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.d.mts +3 -2
- package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.mjs +3 -2
- package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +7 -4
- package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok.d.mts +3 -2
- package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.d.mts +3 -1
- package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs +3 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-zip.d.mts +3 -1
- package/dist/functional/result/impl/result-zip.d.mts.map +1 -1
- package/dist/functional/result/impl/result-zip.mjs +3 -1
- package/dist/functional/result/impl/result-zip.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +3 -2
- package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs +2 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +4 -0
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +3 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +3 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +3 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +3 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +7 -3
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +7 -3
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +3 -0
- package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +3 -0
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +6 -0
- package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +4 -0
- package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +4 -0
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
- package/dist/globals.d.mts +12 -1
- package/dist/guard/has-key.d.mts +6 -3
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +2 -2
- package/dist/guard/index.mjs +1 -1
- package/dist/guard/is-record.d.mts +31 -0
- package/dist/guard/is-record.d.mts.map +1 -1
- package/dist/guard/is-record.mjs +32 -1
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.d.mts +3 -0
- package/dist/guard/is-type.d.mts.map +1 -1
- package/dist/guard/is-type.mjs +3 -0
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.d.mts +3 -2
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +3 -2
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/iterator/range.d.mts +4 -0
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs +1 -0
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts +42 -21
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +42 -21
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +33 -19
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +33 -19
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
- package/dist/number/branded-types/positive-int.d.mts +34 -20
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +34 -20
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +47 -26
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +48 -27
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +48 -27
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +50 -29
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +1 -1
- package/dist/number/branded-types/uint.d.mts +31 -19
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +31 -19
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/num.d.mts +29 -20
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +24 -17
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +33 -11
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +33 -11
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +12 -3
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +10 -3
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/tuple.d.mts +14 -3
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +14 -3
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.d.mts.map +1 -1
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/promise.d.mts +8 -4
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +8 -4
- package/dist/promise/promise.mjs.map +1 -1
- package/package.json +26 -28
- package/src/array/impl/array-utils-creation.mts +20 -0
- package/src/array/impl/array-utils-creation.test.mts +72 -1
- package/src/array/impl/array-utils-element-access.mts +13 -0
- package/src/array/impl/array-utils-element-access.test.mts +36 -15
- package/src/array/impl/array-utils-iterators.test.mts +17 -0
- package/src/array/impl/array-utils-modification.mts +78 -19
- package/src/array/impl/array-utils-modification.test.mts +75 -0
- package/src/array/impl/array-utils-overload-type-error.test.mts +19 -0
- package/src/array/impl/array-utils-reducing-value.mts +61 -16
- package/src/array/impl/array-utils-reducing-value.test.mts +107 -25
- package/src/array/impl/array-utils-search.mts +57 -4
- package/src/array/impl/array-utils-search.test.mts +61 -10
- package/src/array/impl/array-utils-set-op.mts +26 -7
- package/src/array/impl/array-utils-set-op.test.mts +129 -13
- package/src/array/impl/array-utils-size.mts +5 -2
- package/src/array/impl/array-utils-size.test.mts +1 -0
- package/src/array/impl/array-utils-slice-clamped.mts +7 -0
- package/src/array/impl/array-utils-slice-clamped.test.mts +20 -0
- package/src/array/impl/array-utils-slicing.mts +29 -2
- package/src/array/impl/array-utils-slicing.test.mts +57 -0
- package/src/array/impl/array-utils-transformation.mts +58 -0
- package/src/array/impl/array-utils-transformation.test.mts +115 -3
- package/src/array/impl/array-utils-validation.mts +41 -18
- package/src/array/impl/array-utils-validation.test.mts +176 -78
- package/src/array/impl/array.test.mts +18 -6
- package/src/collections/imap-mapped.mts +11 -0
- package/src/collections/imap-mapped.test.mts +86 -18
- package/src/collections/imap.mts +47 -15
- package/src/collections/imap.test.mts +137 -31
- package/src/collections/iset-mapped.mts +54 -19
- package/src/collections/iset-mapped.test.mts +163 -52
- package/src/collections/iset.mts +53 -19
- package/src/collections/iset.test.mts +323 -130
- package/src/collections/queue.mts +78 -25
- package/src/collections/queue.test.mts +65 -35
- package/src/collections/stack.mts +67 -25
- package/src/collections/stack.test.mts +59 -15
- package/src/functional/match.mts +17 -1
- package/src/functional/match.test.mts +2 -0
- package/src/functional/optional/impl/optional-expect-to-be.mts +5 -2
- package/src/functional/optional/impl/optional-filter.mts +6 -0
- package/src/functional/optional/impl/optional-flat-map.mts +4 -0
- package/src/functional/optional/impl/optional-from-nullable.mts +2 -0
- package/src/functional/optional/impl/optional-is-none.mts +1 -1
- package/src/functional/optional/impl/optional-is-optional.mts +4 -2
- package/src/functional/optional/impl/optional-is-some.mts +2 -1
- package/src/functional/optional/impl/optional-map.mts +5 -0
- package/src/functional/optional/impl/optional-none.mts +4 -2
- package/src/functional/optional/impl/optional-or-else.mts +6 -0
- package/src/functional/optional/impl/optional-some.mts +5 -3
- package/src/functional/optional/impl/optional-to-nullable.mts +4 -2
- package/src/functional/optional/impl/optional-unwrap-or.mts +9 -4
- package/src/functional/optional/impl/optional-unwrap-throw.mts +2 -1
- package/src/functional/optional/impl/optional-unwrap.mts +4 -2
- package/src/functional/optional/impl/optional-zip.mts +3 -1
- package/src/functional/optional.test.mts +126 -54
- package/src/functional/pipe.mts +2 -2
- package/src/functional/pipe.test.mts +7 -4
- package/src/functional/result/impl/result-err.mts +4 -2
- package/src/functional/result/impl/result-expect-to-be.mts +5 -2
- package/src/functional/result/impl/result-flat-map.mts +7 -0
- package/src/functional/result/impl/result-fold.mts +6 -0
- package/src/functional/result/impl/result-from-promise.mts +4 -1
- package/src/functional/result/impl/result-from-throwable.mts +5 -1
- package/src/functional/result/impl/result-is-err.mts +4 -2
- package/src/functional/result/impl/result-is-ok.mts +4 -2
- package/src/functional/result/impl/result-is-result.mts +7 -3
- package/src/functional/result/impl/result-map-err.mts +5 -0
- package/src/functional/result/impl/result-map.mts +6 -0
- package/src/functional/result/impl/result-ok.mts +4 -2
- package/src/functional/result/impl/result-or-else.mts +6 -0
- package/src/functional/result/impl/result-swap.mts +2 -0
- package/src/functional/result/impl/result-to-optional.mts +2 -0
- package/src/functional/result/impl/result-unwrap-err-or.mts +9 -4
- package/src/functional/result/impl/result-unwrap-err-throw.mts +3 -1
- package/src/functional/result/impl/result-unwrap-err.mts +3 -2
- package/src/functional/result/impl/result-unwrap-ok-or.mts +9 -4
- package/src/functional/result/impl/result-unwrap-ok.mts +4 -2
- package/src/functional/result/impl/result-unwrap-throw.mts +3 -1
- package/src/functional/result/impl/result-zip.mts +3 -1
- package/src/functional/result.test.mts +182 -152
- package/src/functional/ternary-result/impl/ternary-result-err.mts +3 -2
- package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +4 -0
- package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +7 -0
- package/src/functional/ternary-result/impl/ternary-result-fold.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +3 -1
- package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +4 -1
- package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +7 -3
- package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-map-err.mts +6 -0
- package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +6 -0
- package/src/functional/ternary-result/impl/ternary-result-map.mts +9 -0
- package/src/functional/ternary-result/impl/ternary-result-ok.mts +1 -1
- package/src/functional/ternary-result/impl/ternary-result-or-else.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +2 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +2 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +3 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +2 -0
- package/src/functional/ternary-result/impl/ternary-result-warn.mts +4 -1
- package/src/functional/ternary-result/impl/ternary-result-zip.mts +4 -0
- package/src/functional/ternary-result.test.mts +99 -8
- package/src/globals.d.mts +12 -1
- package/src/guard/has-key.mts +8 -5
- package/src/guard/has-key.test.mts +9 -5
- package/src/guard/is-error.test.mts +143 -0
- package/src/guard/is-non-empty-string.test.mts +44 -24
- package/src/guard/is-non-null-object.test.mts +45 -26
- package/src/guard/is-primitive.test.mts +51 -28
- package/src/guard/is-record.mts +34 -0
- package/src/guard/is-record.test.mts +28 -7
- package/src/guard/is-type.mts +3 -0
- package/src/guard/is-type.test.mts +285 -155
- package/src/guard/key-is-in.mts +3 -2
- package/src/guard/key-is-in.test.mts +2 -2
- package/src/iterator/range.mts +9 -0
- package/src/json/json.mts +50 -21
- package/src/json/json.test.mts +224 -176
- package/src/number/branded-types/finite-number.test.mts +51 -11
- package/src/number/branded-types/int.mts +33 -19
- package/src/number/branded-types/int.test.mts +56 -14
- package/src/number/branded-types/int16.test.mts +63 -16
- package/src/number/branded-types/int32.test.mts +63 -16
- package/src/number/branded-types/non-negative-finite-number.test.mts +52 -12
- package/src/number/branded-types/non-negative-int16.test.mts +59 -16
- package/src/number/branded-types/non-negative-int32.test.mts +59 -16
- package/src/number/branded-types/non-zero-finite-number.test.mts +65 -14
- package/src/number/branded-types/non-zero-int.test.mts +72 -19
- package/src/number/branded-types/non-zero-int16.test.mts +60 -16
- package/src/number/branded-types/non-zero-int32.test.mts +60 -16
- package/src/number/branded-types/non-zero-safe-int.mts +2 -2
- package/src/number/branded-types/non-zero-safe-int.test.mts +85 -23
- package/src/number/branded-types/non-zero-uint16.test.mts +53 -16
- package/src/number/branded-types/non-zero-uint32.test.mts +53 -16
- package/src/number/branded-types/positive-finite-number.test.mts +59 -14
- package/src/number/branded-types/positive-int.mts +34 -20
- package/src/number/branded-types/positive-int.test.mts +64 -17
- package/src/number/branded-types/positive-int16.test.mts +50 -15
- package/src/number/branded-types/positive-int32.test.mts +50 -15
- package/src/number/branded-types/positive-safe-int.mts +48 -27
- package/src/number/branded-types/positive-safe-int.test.mts +68 -19
- package/src/number/branded-types/positive-uint16.test.mts +53 -16
- package/src/number/branded-types/positive-uint32.test.mts +53 -16
- package/src/number/branded-types/safe-int.mts +50 -29
- package/src/number/branded-types/safe-int.test.mts +70 -18
- package/src/number/branded-types/safe-uint.mts +1 -1
- package/src/number/branded-types/safe-uint.test.mts +65 -17
- package/src/number/branded-types/uint.mts +31 -19
- package/src/number/branded-types/uint.test.mts +58 -15
- package/src/number/branded-types/uint16.test.mts +56 -15
- package/src/number/branded-types/uint32.test.mts +56 -15
- package/src/number/enum/int8.test.mts +7 -1
- package/src/number/enum/uint8.test.mts +7 -1
- package/src/number/num.mts +32 -21
- package/src/number/num.test.mts +88 -26
- package/src/number/refined-number-utils.mts +38 -13
- package/src/object/object.mts +19 -3
- package/src/object/object.test.mts +16 -6
- package/src/others/cast-mutable.test.mts +8 -1
- package/src/others/cast-readonly.test.mts +21 -4
- package/src/others/if-then.test.mts +40 -24
- package/src/others/map-nullable.mts +3 -0
- package/src/others/map-nullable.test.mts +27 -0
- package/src/others/memoize-function.test.mts +41 -0
- package/src/others/tuple.mts +14 -3
- package/src/others/unknown-to-string.mts +2 -0
- package/src/others/unknown-to-string.test.mts +10 -0
- package/src/promise/promise.mts +8 -4
- package/src/promise/promise.test.mts +8 -13
|
@@ -44,22 +44,30 @@ export type Queue<T> = Readonly<{
|
|
|
44
44
|
* ```ts
|
|
45
45
|
* const queue = createQueue<number>();
|
|
46
46
|
*
|
|
47
|
-
* assert.
|
|
48
|
-
*
|
|
47
|
+
* assert.isTrue(queue.isEmpty);
|
|
48
|
+
*
|
|
49
|
+
* assert.isTrue(queue.size === 0);
|
|
49
50
|
*
|
|
50
51
|
* queue.enqueue(1);
|
|
52
|
+
*
|
|
51
53
|
* queue.enqueue(2);
|
|
52
54
|
*
|
|
53
|
-
* assert.
|
|
54
|
-
*
|
|
55
|
+
* assert.isFalse(queue.isEmpty);
|
|
56
|
+
*
|
|
57
|
+
* assert.isTrue(queue.size === 2);
|
|
58
|
+
*
|
|
55
59
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
|
|
60
|
+
*
|
|
56
61
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
|
|
62
|
+
*
|
|
57
63
|
* assert.deepStrictEqual(queue.dequeue(), Optional.none);
|
|
58
64
|
*
|
|
59
65
|
* const seededQueue = createQueue(['first', 'second']);
|
|
60
66
|
*
|
|
61
|
-
* assert(seededQueue.size === 2);
|
|
67
|
+
* assert.isTrue(seededQueue.size === 2);
|
|
68
|
+
*
|
|
62
69
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
|
|
70
|
+
*
|
|
63
71
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
|
|
64
72
|
* ```
|
|
65
73
|
*/
|
|
@@ -73,22 +81,30 @@ export type Queue<T> = Readonly<{
|
|
|
73
81
|
* ```ts
|
|
74
82
|
* const queue = createQueue<number>();
|
|
75
83
|
*
|
|
76
|
-
* assert.
|
|
77
|
-
*
|
|
84
|
+
* assert.isTrue(queue.isEmpty);
|
|
85
|
+
*
|
|
86
|
+
* assert.isTrue(queue.size === 0);
|
|
78
87
|
*
|
|
79
88
|
* queue.enqueue(1);
|
|
89
|
+
*
|
|
80
90
|
* queue.enqueue(2);
|
|
81
91
|
*
|
|
82
|
-
* assert.
|
|
83
|
-
*
|
|
92
|
+
* assert.isFalse(queue.isEmpty);
|
|
93
|
+
*
|
|
94
|
+
* assert.isTrue(queue.size === 2);
|
|
95
|
+
*
|
|
84
96
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
|
|
97
|
+
*
|
|
85
98
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
|
|
99
|
+
*
|
|
86
100
|
* assert.deepStrictEqual(queue.dequeue(), Optional.none);
|
|
87
101
|
*
|
|
88
102
|
* const seededQueue = createQueue(['first', 'second']);
|
|
89
103
|
*
|
|
90
|
-
* assert(seededQueue.size === 2);
|
|
104
|
+
* assert.isTrue(seededQueue.size === 2);
|
|
105
|
+
*
|
|
91
106
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
|
|
107
|
+
*
|
|
92
108
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
|
|
93
109
|
* ```
|
|
94
110
|
*/
|
|
@@ -102,22 +118,30 @@ export type Queue<T> = Readonly<{
|
|
|
102
118
|
* ```ts
|
|
103
119
|
* const queue = createQueue<number>();
|
|
104
120
|
*
|
|
105
|
-
* assert.
|
|
106
|
-
*
|
|
121
|
+
* assert.isTrue(queue.isEmpty);
|
|
122
|
+
*
|
|
123
|
+
* assert.isTrue(queue.size === 0);
|
|
107
124
|
*
|
|
108
125
|
* queue.enqueue(1);
|
|
126
|
+
*
|
|
109
127
|
* queue.enqueue(2);
|
|
110
128
|
*
|
|
111
|
-
* assert.
|
|
112
|
-
*
|
|
129
|
+
* assert.isFalse(queue.isEmpty);
|
|
130
|
+
*
|
|
131
|
+
* assert.isTrue(queue.size === 2);
|
|
132
|
+
*
|
|
113
133
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
|
|
134
|
+
*
|
|
114
135
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
|
|
136
|
+
*
|
|
115
137
|
* assert.deepStrictEqual(queue.dequeue(), Optional.none);
|
|
116
138
|
*
|
|
117
139
|
* const seededQueue = createQueue(['first', 'second']);
|
|
118
140
|
*
|
|
119
|
-
* assert(seededQueue.size === 2);
|
|
141
|
+
* assert.isTrue(seededQueue.size === 2);
|
|
142
|
+
*
|
|
120
143
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
|
|
144
|
+
*
|
|
121
145
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
|
|
122
146
|
* ```
|
|
123
147
|
*
|
|
@@ -134,22 +158,30 @@ export type Queue<T> = Readonly<{
|
|
|
134
158
|
* ```ts
|
|
135
159
|
* const queue = createQueue<number>();
|
|
136
160
|
*
|
|
137
|
-
* assert.
|
|
138
|
-
*
|
|
161
|
+
* assert.isTrue(queue.isEmpty);
|
|
162
|
+
*
|
|
163
|
+
* assert.isTrue(queue.size === 0);
|
|
139
164
|
*
|
|
140
165
|
* queue.enqueue(1);
|
|
166
|
+
*
|
|
141
167
|
* queue.enqueue(2);
|
|
142
168
|
*
|
|
143
|
-
* assert.
|
|
144
|
-
*
|
|
169
|
+
* assert.isFalse(queue.isEmpty);
|
|
170
|
+
*
|
|
171
|
+
* assert.isTrue(queue.size === 2);
|
|
172
|
+
*
|
|
145
173
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
|
|
174
|
+
*
|
|
146
175
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
|
|
176
|
+
*
|
|
147
177
|
* assert.deepStrictEqual(queue.dequeue(), Optional.none);
|
|
148
178
|
*
|
|
149
179
|
* const seededQueue = createQueue(['first', 'second']);
|
|
150
180
|
*
|
|
151
|
-
* assert(seededQueue.size === 2);
|
|
181
|
+
* assert.isTrue(seededQueue.size === 2);
|
|
182
|
+
*
|
|
152
183
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
|
|
184
|
+
*
|
|
153
185
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
|
|
154
186
|
* ```
|
|
155
187
|
*
|
|
@@ -206,8 +238,11 @@ class QueueClass<T> implements Queue<T> {
|
|
|
206
238
|
);
|
|
207
239
|
|
|
208
240
|
this.#head = 0;
|
|
241
|
+
|
|
209
242
|
this.#tail = 0;
|
|
243
|
+
|
|
210
244
|
this.#mut_size = 0;
|
|
245
|
+
|
|
211
246
|
this.#capacity = initialCapacity;
|
|
212
247
|
|
|
213
248
|
// Add initial values
|
|
@@ -247,8 +282,11 @@ class QueueClass<T> implements Queue<T> {
|
|
|
247
282
|
|
|
248
283
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
249
284
|
const element = this.#buffer[this.#head]!;
|
|
285
|
+
|
|
250
286
|
this.#buffer[this.#head] = undefined; // Clear reference for garbage collection
|
|
287
|
+
|
|
251
288
|
this.#head = (this.#head + 1) % this.#capacity;
|
|
289
|
+
|
|
252
290
|
this.#mut_size -= 1;
|
|
253
291
|
|
|
254
292
|
return Optional.some(element);
|
|
@@ -278,7 +316,9 @@ class QueueClass<T> implements Queue<T> {
|
|
|
278
316
|
}
|
|
279
317
|
|
|
280
318
|
this.#buffer[this.#tail] = value;
|
|
319
|
+
|
|
281
320
|
this.#tail = (this.#tail + 1) % this.#capacity;
|
|
321
|
+
|
|
282
322
|
this.#mut_size += 1;
|
|
283
323
|
}
|
|
284
324
|
|
|
@@ -289,6 +329,7 @@ class QueueClass<T> implements Queue<T> {
|
|
|
289
329
|
*/
|
|
290
330
|
#resize(): void {
|
|
291
331
|
const newCapacity = asUint32(this.#capacity * 2);
|
|
332
|
+
|
|
292
333
|
const newBuffer = Array.from<unknown, T | undefined>(
|
|
293
334
|
{ length: newCapacity },
|
|
294
335
|
() => undefined,
|
|
@@ -297,12 +338,16 @@ class QueueClass<T> implements Queue<T> {
|
|
|
297
338
|
// Copy elements in order from head to tail
|
|
298
339
|
for (const i of range(asSafeUint(this.#mut_size))) {
|
|
299
340
|
const sourceIndex = (this.#head + i) % this.#capacity;
|
|
341
|
+
|
|
300
342
|
newBuffer[i] = this.#buffer[sourceIndex];
|
|
301
343
|
}
|
|
302
344
|
|
|
303
345
|
this.#buffer = newBuffer;
|
|
346
|
+
|
|
304
347
|
this.#head = 0;
|
|
348
|
+
|
|
305
349
|
this.#tail = this.#mut_size;
|
|
350
|
+
|
|
306
351
|
this.#capacity = newCapacity;
|
|
307
352
|
}
|
|
308
353
|
}
|
|
@@ -336,22 +381,30 @@ class QueueClass<T> implements Queue<T> {
|
|
|
336
381
|
* ```ts
|
|
337
382
|
* const queue = createQueue<number>();
|
|
338
383
|
*
|
|
339
|
-
* assert.
|
|
340
|
-
*
|
|
384
|
+
* assert.isTrue(queue.isEmpty);
|
|
385
|
+
*
|
|
386
|
+
* assert.isTrue(queue.size === 0);
|
|
341
387
|
*
|
|
342
388
|
* queue.enqueue(1);
|
|
389
|
+
*
|
|
343
390
|
* queue.enqueue(2);
|
|
344
391
|
*
|
|
345
|
-
* assert.
|
|
346
|
-
*
|
|
392
|
+
* assert.isFalse(queue.isEmpty);
|
|
393
|
+
*
|
|
394
|
+
* assert.isTrue(queue.size === 2);
|
|
395
|
+
*
|
|
347
396
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(1));
|
|
397
|
+
*
|
|
348
398
|
* assert.deepStrictEqual(queue.dequeue(), Optional.some(2));
|
|
399
|
+
*
|
|
349
400
|
* assert.deepStrictEqual(queue.dequeue(), Optional.none);
|
|
350
401
|
*
|
|
351
402
|
* const seededQueue = createQueue(['first', 'second']);
|
|
352
403
|
*
|
|
353
|
-
* assert(seededQueue.size === 2);
|
|
404
|
+
* assert.isTrue(seededQueue.size === 2);
|
|
405
|
+
*
|
|
354
406
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('first'));
|
|
407
|
+
*
|
|
355
408
|
* assert.deepStrictEqual(seededQueue.dequeue(), Optional.some('second'));
|
|
356
409
|
* ```
|
|
357
410
|
*
|
|
@@ -9,14 +9,16 @@ describe('Queue test', () => {
|
|
|
9
9
|
test('should be empty if initialized without values', () => {
|
|
10
10
|
const q = createQueue();
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
assert.isTrue(q.isEmpty);
|
|
13
|
+
|
|
13
14
|
expect(q.size).toBe(0);
|
|
14
15
|
});
|
|
15
16
|
|
|
16
17
|
test('should not be empty if initialized with values', () => {
|
|
17
18
|
const q = createQueue([1, 2, 3]);
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
assert.isFalse(q.isEmpty);
|
|
21
|
+
|
|
20
22
|
expect(q.size).toBe(3);
|
|
21
23
|
});
|
|
22
24
|
});
|
|
@@ -32,12 +34,14 @@ describe('Queue test', () => {
|
|
|
32
34
|
test('should increase size and not be empty after enqueueing to an empty queue', () => {
|
|
33
35
|
mut_q.enqueue(1);
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
assert.isFalse(mut_q.isEmpty);
|
|
38
|
+
|
|
36
39
|
expect(mut_q.size).toBe(1);
|
|
37
40
|
});
|
|
38
41
|
|
|
39
42
|
test('should increase size when enqueueing to a non-empty queue', () => {
|
|
40
43
|
mut_q.enqueue(1);
|
|
44
|
+
|
|
41
45
|
mut_q.enqueue(2);
|
|
42
46
|
|
|
43
47
|
expect(mut_q.size).toBe(2);
|
|
@@ -47,20 +51,24 @@ describe('Queue test', () => {
|
|
|
47
51
|
describe('dequeue', () => {
|
|
48
52
|
test('should return Optional.none and size should be 0 when dequeuing from an empty queue', () => {
|
|
49
53
|
const q = createQueue<number>();
|
|
54
|
+
|
|
50
55
|
const result = q.dequeue();
|
|
51
56
|
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
assert.isTrue(Optional.isNone(result));
|
|
58
|
+
|
|
59
|
+
assert.isTrue(q.isEmpty);
|
|
60
|
+
|
|
54
61
|
expect(q.size).toBe(0);
|
|
55
62
|
});
|
|
56
63
|
|
|
57
64
|
test('should decrease size and return the dequeued element for a non-empty queue', () => {
|
|
58
65
|
const q = createQueue([1, 2, 3]); // FIFO: elements are in order [1, 2, 3]
|
|
66
|
+
|
|
59
67
|
const initialSize = q.size;
|
|
60
68
|
|
|
61
69
|
const result1 = q.dequeue(); // Dequeues 1 (first element)
|
|
62
70
|
|
|
63
|
-
|
|
71
|
+
assert.isTrue(Optional.isSome(result1));
|
|
64
72
|
|
|
65
73
|
if (Optional.isSome(result1)) {
|
|
66
74
|
expect(result1.value).toBe(1);
|
|
@@ -70,7 +78,7 @@ describe('Queue test', () => {
|
|
|
70
78
|
|
|
71
79
|
const result2 = q.dequeue(); // Dequeues 2
|
|
72
80
|
|
|
73
|
-
|
|
81
|
+
assert.isTrue(Optional.isSome(result2));
|
|
74
82
|
|
|
75
83
|
if (Optional.isSome(result2)) {
|
|
76
84
|
expect(result2.value).toBe(2);
|
|
@@ -81,46 +89,56 @@ describe('Queue test', () => {
|
|
|
81
89
|
|
|
82
90
|
test('should become empty after dequeuing all elements', () => {
|
|
83
91
|
const q = createQueue([1, 2]); // Internal: [1, 2]
|
|
92
|
+
|
|
84
93
|
q.dequeue(); // Dequeues 1
|
|
94
|
+
|
|
85
95
|
q.dequeue(); // Dequeues 2
|
|
86
96
|
|
|
87
|
-
|
|
97
|
+
assert.isTrue(q.isEmpty);
|
|
98
|
+
|
|
88
99
|
expect(q.size).toBe(0);
|
|
89
100
|
|
|
90
101
|
const result = q.dequeue(); // Dequeue from empty
|
|
91
102
|
|
|
92
|
-
|
|
103
|
+
assert.isTrue(Optional.isNone(result));
|
|
93
104
|
});
|
|
94
105
|
});
|
|
95
106
|
|
|
96
107
|
describe('FIFO behavior', () => {
|
|
97
108
|
test('elements should be dequeued in first-in, first-out order', () => {
|
|
98
109
|
const q = createQueue<number>();
|
|
110
|
+
|
|
99
111
|
q.enqueue(1); // internal: [1]
|
|
112
|
+
|
|
100
113
|
q.enqueue(2); // internal: [1, 2]
|
|
114
|
+
|
|
101
115
|
q.enqueue(3); // internal: [1, 2, 3]
|
|
102
116
|
|
|
103
117
|
expect(q.size).toBe(3);
|
|
104
118
|
|
|
105
119
|
let mut_result = q.dequeue(); // Dequeues 1 (first in)
|
|
106
120
|
|
|
107
|
-
|
|
121
|
+
assert.isTrue(Optional.isSome(mut_result) && mut_result.value === 1);
|
|
122
|
+
|
|
108
123
|
expect(q.size).toBe(2);
|
|
109
124
|
|
|
110
125
|
mut_result = q.dequeue(); // Dequeues 2
|
|
111
126
|
|
|
112
|
-
|
|
127
|
+
assert.isTrue(Optional.isSome(mut_result) && mut_result.value === 2);
|
|
128
|
+
|
|
113
129
|
expect(q.size).toBe(1);
|
|
114
130
|
|
|
115
131
|
mut_result = q.dequeue(); // Dequeues 3
|
|
116
132
|
|
|
117
|
-
|
|
133
|
+
assert.isTrue(Optional.isSome(mut_result) && mut_result.value === 3);
|
|
134
|
+
|
|
118
135
|
expect(q.size).toBe(0);
|
|
119
|
-
|
|
136
|
+
|
|
137
|
+
assert.isTrue(q.isEmpty);
|
|
120
138
|
|
|
121
139
|
mut_result = q.dequeue();
|
|
122
140
|
|
|
123
|
-
|
|
141
|
+
assert.isTrue(Optional.isNone(mut_result));
|
|
124
142
|
});
|
|
125
143
|
|
|
126
144
|
test('initial values are dequeued in the same order (FIFO)', () => {
|
|
@@ -130,45 +148,47 @@ describe('Queue test', () => {
|
|
|
130
148
|
|
|
131
149
|
const result1 = q.dequeue(); // Dequeues 1 (first element)
|
|
132
150
|
|
|
133
|
-
|
|
151
|
+
assert.isTrue(Optional.isSome(result1) && result1.value === 1);
|
|
134
152
|
|
|
135
153
|
const result2 = q.dequeue(); // Dequeues 2
|
|
136
154
|
|
|
137
|
-
|
|
155
|
+
assert.isTrue(Optional.isSome(result2) && result2.value === 2);
|
|
138
156
|
|
|
139
157
|
const result3 = q.dequeue(); // Dequeues 3
|
|
140
158
|
|
|
141
|
-
|
|
159
|
+
assert.isTrue(Optional.isSome(result3) && result3.value === 3);
|
|
142
160
|
|
|
143
|
-
|
|
161
|
+
assert.isTrue(q.isEmpty);
|
|
144
162
|
});
|
|
145
163
|
|
|
146
164
|
test('mixed enqueue and dequeue operations maintain FIFO order', () => {
|
|
147
165
|
const q = createQueue<string>();
|
|
148
166
|
|
|
149
167
|
q.enqueue('A');
|
|
168
|
+
|
|
150
169
|
q.enqueue('B');
|
|
151
170
|
|
|
152
171
|
const result1 = q.dequeue();
|
|
153
172
|
|
|
154
|
-
|
|
173
|
+
assert.isTrue(Optional.isSome(result1) && result1.value === 'A');
|
|
155
174
|
|
|
156
175
|
q.enqueue('C');
|
|
176
|
+
|
|
157
177
|
q.enqueue('D');
|
|
158
178
|
|
|
159
179
|
const result2 = q.dequeue();
|
|
160
180
|
|
|
161
|
-
|
|
181
|
+
assert.isTrue(Optional.isSome(result2) && result2.value === 'B');
|
|
162
182
|
|
|
163
183
|
const result3 = q.dequeue();
|
|
164
184
|
|
|
165
|
-
|
|
185
|
+
assert.isTrue(Optional.isSome(result3) && result3.value === 'C');
|
|
166
186
|
|
|
167
187
|
const result4 = q.dequeue();
|
|
168
188
|
|
|
169
|
-
|
|
189
|
+
assert.isTrue(Optional.isSome(result4) && result4.value === 'D');
|
|
170
190
|
|
|
171
|
-
|
|
191
|
+
assert.isTrue(q.isEmpty);
|
|
172
192
|
});
|
|
173
193
|
});
|
|
174
194
|
|
|
@@ -183,22 +203,30 @@ describe('Queue test', () => {
|
|
|
183
203
|
|
|
184
204
|
// Remove first 3 elements
|
|
185
205
|
expect(Optional.unwrap(q.dequeue())).toBe(1);
|
|
206
|
+
|
|
186
207
|
expect(Optional.unwrap(q.dequeue())).toBe(2);
|
|
208
|
+
|
|
187
209
|
expect(Optional.unwrap(q.dequeue())).toBe(3);
|
|
188
210
|
|
|
189
211
|
// Add more elements (this should wrap around in the buffer)
|
|
190
212
|
q.enqueue(6);
|
|
213
|
+
|
|
191
214
|
q.enqueue(7);
|
|
215
|
+
|
|
192
216
|
q.enqueue(8);
|
|
193
217
|
|
|
194
218
|
// Verify FIFO order is maintained
|
|
195
219
|
expect(Optional.unwrap(q.dequeue())).toBe(4);
|
|
220
|
+
|
|
196
221
|
expect(Optional.unwrap(q.dequeue())).toBe(5);
|
|
222
|
+
|
|
197
223
|
expect(Optional.unwrap(q.dequeue())).toBe(6);
|
|
224
|
+
|
|
198
225
|
expect(Optional.unwrap(q.dequeue())).toBe(7);
|
|
226
|
+
|
|
199
227
|
expect(Optional.unwrap(q.dequeue())).toBe(8);
|
|
200
228
|
|
|
201
|
-
|
|
229
|
+
assert.isTrue(q.isEmpty);
|
|
202
230
|
});
|
|
203
231
|
|
|
204
232
|
test('should automatically resize when buffer becomes full', () => {
|
|
@@ -215,10 +243,10 @@ describe('Queue test', () => {
|
|
|
215
243
|
for (const i of range(1, 21)) {
|
|
216
244
|
const result = q.dequeue();
|
|
217
245
|
|
|
218
|
-
|
|
246
|
+
assert.isTrue(Optional.isSome(result) && result.value === i);
|
|
219
247
|
}
|
|
220
248
|
|
|
221
|
-
|
|
249
|
+
assert.isTrue(q.isEmpty);
|
|
222
250
|
});
|
|
223
251
|
|
|
224
252
|
test('should handle multiple resize operations', () => {
|
|
@@ -247,11 +275,12 @@ describe('Queue test', () => {
|
|
|
247
275
|
for (const i of range(51, 101)) {
|
|
248
276
|
expect(Optional.unwrap(q.dequeue())).toBe(i);
|
|
249
277
|
}
|
|
278
|
+
|
|
250
279
|
for (const i of range(101, 151)) {
|
|
251
280
|
expect(Optional.unwrap(q.dequeue())).toBe(i);
|
|
252
281
|
}
|
|
253
282
|
|
|
254
|
-
|
|
283
|
+
assert.isTrue(q.isEmpty);
|
|
255
284
|
});
|
|
256
285
|
|
|
257
286
|
test('should handle edge case of single element operations', () => {
|
|
@@ -265,15 +294,15 @@ describe('Queue test', () => {
|
|
|
265
294
|
|
|
266
295
|
const result = q.dequeue();
|
|
267
296
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
);
|
|
271
|
-
expect(q.isEmpty).toBe(true);
|
|
297
|
+
assert.isTrue(Optional.isSome(result) && result.value === `item-${i}`);
|
|
298
|
+
|
|
299
|
+
assert.isTrue(q.isEmpty);
|
|
272
300
|
}
|
|
273
301
|
});
|
|
274
302
|
|
|
275
303
|
test('should handle large initial values array', () => {
|
|
276
304
|
const largeArray = Arr.range(1, asUint32(51));
|
|
305
|
+
|
|
277
306
|
const q = createQueue(largeArray);
|
|
278
307
|
|
|
279
308
|
expect(q.size).toBe(50);
|
|
@@ -283,11 +312,12 @@ describe('Queue test', () => {
|
|
|
283
312
|
expect(Optional.unwrap(q.dequeue())).toBe(i);
|
|
284
313
|
}
|
|
285
314
|
|
|
286
|
-
|
|
315
|
+
assert.isTrue(q.isEmpty);
|
|
287
316
|
});
|
|
288
317
|
|
|
289
318
|
test('should properly clean up references for garbage collection', () => {
|
|
290
319
|
const q = createQueue<{ id: number }>();
|
|
320
|
+
|
|
291
321
|
const objects = Arr.seq(10).map((i) => ({ id: i }));
|
|
292
322
|
|
|
293
323
|
// Add all objects
|
|
@@ -299,17 +329,17 @@ describe('Queue test', () => {
|
|
|
299
329
|
for (const i of range(0, 5)) {
|
|
300
330
|
const result = q.dequeue();
|
|
301
331
|
|
|
302
|
-
|
|
332
|
+
assert.isTrue(Optional.isSome(result) && result.value.id === i);
|
|
303
333
|
}
|
|
304
334
|
|
|
305
335
|
// Remaining objects should still be accessible
|
|
306
336
|
for (const i of range(5, 10)) {
|
|
307
337
|
const result = q.dequeue();
|
|
308
338
|
|
|
309
|
-
|
|
339
|
+
assert.isTrue(Optional.isSome(result) && result.value.id === i);
|
|
310
340
|
}
|
|
311
341
|
|
|
312
|
-
|
|
342
|
+
assert.isTrue(q.isEmpty);
|
|
313
343
|
});
|
|
314
344
|
});
|
|
315
345
|
});
|