ts-data-forge 5.0.1 → 5.1.0
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 +55 -6
- 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 +26 -2
- 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 +30 -0
- 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 +13 -0
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
- package/dist/array/impl/array-utils-set-op.mjs +13 -0
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
- package/dist/array/impl/array-utils-size.d.mts +3 -0
- package/dist/array/impl/array-utils-size.d.mts.map +1 -1
- package/dist/array/impl/array-utils-size.mjs +3 -0
- 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 +15 -0
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +7 -0
- 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 +17 -0
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +11 -0
- 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 +20 -0
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +2 -0
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +27 -0
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +7 -0
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +29 -0
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +7 -0
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts +40 -0
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +8 -0
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +35 -0
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +7 -0
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.mjs +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 +1 -0
- 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-optional.d.mts +2 -0
- package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.mjs +2 -0
- package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.d.mts +1 -0
- package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.mjs +1 -0
- 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 +2 -0
- package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-none.mjs +2 -0
- 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 +3 -1
- package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-some.mjs +2 -0
- package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.d.mts +2 -0
- package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.mjs +2 -0
- package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-or.d.mts +3 -0
- 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 +1 -0
- package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs +1 -0
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap.d.mts +2 -0
- 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 +2 -0
- package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-zip.mjs +2 -0
- package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
- package/dist/functional/result/impl/result-err.d.mts +3 -1
- package/dist/functional/result/impl/result-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-err.mjs +2 -0
- package/dist/functional/result/impl/result-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-expect-to-be.d.mts +1 -0
- 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 +3 -0
- package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
- package/dist/functional/result/impl/result-from-promise.mjs +3 -0
- package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.d.mts +2 -0
- package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.mjs +2 -0
- package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-err.d.mts +2 -0
- package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-err.mjs +2 -0
- package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-ok.d.mts +2 -0
- package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-ok.mjs +2 -0
- package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-result.d.mts +4 -0
- package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-result.mjs +4 -0
- 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 +3 -1
- package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-ok.mjs +2 -0
- 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 +3 -0
- 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 +2 -0
- package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs +2 -0
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.d.mts +1 -0
- package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.mjs +1 -0
- package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +3 -0
- 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 +1 -0
- 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 +2 -0
- package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs +2 -0
- 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 +2 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs +1 -0
- 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 +2 -0
- 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 +2 -0
- 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 +2 -0
- 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 +2 -0
- 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 +4 -0
- 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 +4 -0
- 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 +10 -0
- 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 +1 -0
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +1 -0
- 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 +21 -0
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +21 -0
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +14 -0
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +14 -0
- 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 +14 -0
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +14 -0
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +21 -0
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +22 -1
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +21 -0
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +23 -2
- 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 +12 -0
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +12 -0
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/num.d.mts +9 -0
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +8 -1
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +22 -0
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +22 -0
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +9 -0
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +7 -0
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/tuple.d.mts +11 -0
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +11 -0
- 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 +4 -0
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +4 -0
- package/dist/promise/promise.mjs.map +1 -1
- package/package.json +18 -22
- package/src/array/impl/array-utils-creation.mts +20 -0
- package/src/array/impl/array-utils-creation.test.mts +71 -0
- package/src/array/impl/array-utils-element-access.mts +13 -0
- package/src/array/impl/array-utils-element-access.test.mts +21 -0
- package/src/array/impl/array-utils-iterators.test.mts +17 -0
- package/src/array/impl/array-utils-modification.mts +40 -0
- 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 +53 -8
- package/src/array/impl/array-utils-reducing-value.test.mts +90 -0
- package/src/array/impl/array-utils-search.mts +53 -0
- package/src/array/impl/array-utils-search.test.mts +51 -0
- package/src/array/impl/array-utils-set-op.mts +19 -0
- package/src/array/impl/array-utils-set-op.test.mts +116 -0
- package/src/array/impl/array-utils-size.mts +3 -0
- 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 +27 -0
- 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 +113 -1
- package/src/array/impl/array-utils-validation.mts +23 -0
- package/src/array/impl/array-utils-validation.test.mts +96 -0
- package/src/array/impl/array.test.mts +12 -0
- package/src/collections/imap-mapped.mts +11 -0
- package/src/collections/imap-mapped.test.mts +70 -0
- package/src/collections/imap.mts +32 -0
- package/src/collections/imap.test.mts +106 -0
- package/src/collections/iset-mapped.mts +35 -0
- package/src/collections/iset-mapped.test.mts +111 -0
- package/src/collections/iset.mts +34 -0
- package/src/collections/iset.test.mts +193 -0
- package/src/collections/queue.mts +53 -0
- package/src/collections/queue.test.mts +32 -0
- package/src/collections/stack.mts +42 -0
- package/src/collections/stack.test.mts +44 -0
- package/src/functional/match.mts +16 -0
- package/src/functional/match.test.mts +2 -0
- package/src/functional/optional/impl/optional-expect-to-be.mts +3 -0
- 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-optional.mts +2 -0
- package/src/functional/optional/impl/optional-is-some.mts +1 -0
- package/src/functional/optional/impl/optional-map.mts +5 -0
- package/src/functional/optional/impl/optional-none.mts +2 -0
- package/src/functional/optional/impl/optional-or-else.mts +6 -0
- package/src/functional/optional/impl/optional-some.mts +3 -1
- package/src/functional/optional/impl/optional-to-nullable.mts +2 -0
- package/src/functional/optional/impl/optional-unwrap-or.mts +5 -0
- package/src/functional/optional/impl/optional-unwrap-throw.mts +1 -0
- package/src/functional/optional/impl/optional-unwrap.mts +2 -0
- package/src/functional/optional/impl/optional-zip.mts +2 -0
- package/src/functional/optional.test.mts +73 -0
- package/src/functional/pipe.test.mts +3 -0
- package/src/functional/result/impl/result-err.mts +3 -1
- package/src/functional/result/impl/result-expect-to-be.mts +3 -0
- 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 +3 -0
- package/src/functional/result/impl/result-from-throwable.mts +4 -0
- package/src/functional/result/impl/result-is-err.mts +2 -0
- package/src/functional/result/impl/result-is-ok.mts +2 -0
- package/src/functional/result/impl/result-is-result.mts +4 -0
- 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 +3 -1
- 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 +5 -0
- package/src/functional/result/impl/result-unwrap-err-throw.mts +2 -0
- package/src/functional/result/impl/result-unwrap-err.mts +1 -0
- package/src/functional/result/impl/result-unwrap-ok-or.mts +5 -0
- package/src/functional/result/impl/result-unwrap-ok.mts +2 -0
- package/src/functional/result/impl/result-unwrap-throw.mts +2 -0
- package/src/functional/result/impl/result-zip.mts +3 -1
- package/src/functional/result.test.mts +88 -0
- package/src/functional/ternary-result/impl/ternary-result-err.mts +2 -1
- 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 +2 -0
- package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +3 -0
- 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 +4 -0
- 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 +91 -0
- package/src/globals.d.mts +10 -0
- package/src/guard/has-key.test.mts +9 -0
- package/src/guard/is-non-empty-string.test.mts +20 -0
- package/src/guard/is-non-null-object.test.mts +19 -0
- package/src/guard/is-primitive.test.mts +23 -0
- package/src/guard/is-record.mts +34 -0
- package/src/guard/is-record.test.mts +21 -0
- package/src/guard/is-type.mts +3 -0
- package/src/guard/is-type.test.mts +134 -0
- package/src/guard/key-is-in.mts +1 -0
- package/src/iterator/range.mts +9 -0
- package/src/json/json.mts +29 -0
- package/src/json/json.test.mts +87 -0
- package/src/number/branded-types/finite-number.test.mts +38 -0
- package/src/number/branded-types/int.mts +14 -0
- package/src/number/branded-types/int.test.mts +42 -0
- package/src/number/branded-types/int16.test.mts +47 -0
- package/src/number/branded-types/int32.test.mts +47 -0
- package/src/number/branded-types/non-negative-finite-number.test.mts +40 -0
- package/src/number/branded-types/non-negative-int16.test.mts +43 -0
- package/src/number/branded-types/non-negative-int32.test.mts +43 -0
- package/src/number/branded-types/non-zero-finite-number.test.mts +51 -0
- package/src/number/branded-types/non-zero-int.test.mts +53 -0
- package/src/number/branded-types/non-zero-int16.test.mts +44 -0
- package/src/number/branded-types/non-zero-int32.test.mts +44 -0
- package/src/number/branded-types/non-zero-safe-int.mts +2 -2
- package/src/number/branded-types/non-zero-safe-int.test.mts +62 -0
- package/src/number/branded-types/non-zero-uint16.test.mts +37 -0
- package/src/number/branded-types/non-zero-uint32.test.mts +37 -0
- package/src/number/branded-types/positive-finite-number.test.mts +45 -0
- package/src/number/branded-types/positive-int.mts +14 -0
- package/src/number/branded-types/positive-int.test.mts +47 -0
- package/src/number/branded-types/positive-int16.test.mts +35 -0
- package/src/number/branded-types/positive-int32.test.mts +35 -0
- package/src/number/branded-types/positive-safe-int.mts +22 -1
- package/src/number/branded-types/positive-safe-int.test.mts +49 -0
- package/src/number/branded-types/positive-uint16.test.mts +37 -0
- package/src/number/branded-types/positive-uint32.test.mts +37 -0
- package/src/number/branded-types/safe-int.mts +23 -2
- package/src/number/branded-types/safe-int.test.mts +52 -0
- package/src/number/branded-types/safe-uint.mts +1 -1
- package/src/number/branded-types/safe-uint.test.mts +48 -0
- package/src/number/branded-types/uint.mts +12 -0
- package/src/number/branded-types/uint.test.mts +43 -0
- package/src/number/branded-types/uint16.test.mts +41 -0
- package/src/number/branded-types/uint32.test.mts +41 -0
- package/src/number/enum/int8.test.mts +6 -0
- package/src/number/enum/uint8.test.mts +6 -0
- package/src/number/num.mts +12 -1
- package/src/number/num.test.mts +62 -0
- package/src/number/refined-number-utils.mts +25 -0
- package/src/object/object.mts +15 -0
- package/src/object/object.test.mts +10 -0
- package/src/others/cast-mutable.test.mts +7 -0
- package/src/others/cast-readonly.test.mts +17 -0
- package/src/others/if-then.test.mts +16 -0
- 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 +11 -0
- package/src/others/unknown-to-string.mts +2 -0
- package/src/others/unknown-to-string.test.mts +10 -0
- package/src/promise/promise.mts +4 -0
- package/src/promise/promise.test.mts +1 -0
|
@@ -373,8 +373,11 @@ class IMapMappedClass<K, V, KM extends MapSetKeyType>
|
|
|
373
373
|
showNotFoundMessage: boolean = false,
|
|
374
374
|
) {
|
|
375
375
|
this.#map = new Map(Array.from(iterable, ([k, v]) => [toKey(k), v]));
|
|
376
|
+
|
|
376
377
|
this.#toKey = toKey;
|
|
378
|
+
|
|
377
379
|
this.#fromKey = fromKey;
|
|
380
|
+
|
|
378
381
|
this.#showNotFoundMessage = showNotFoundMessage;
|
|
379
382
|
}
|
|
380
383
|
|
|
@@ -391,6 +394,7 @@ class IMapMappedClass<K, V, KM extends MapSetKeyType>
|
|
|
391
394
|
/** @inheritdoc */
|
|
392
395
|
get(key: K): Optional<V> {
|
|
393
396
|
if (!this.has(key)) return Optional.none;
|
|
397
|
+
|
|
394
398
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
395
399
|
return Optional.some(this.#map.get(this.#toKey(key))!);
|
|
396
400
|
}
|
|
@@ -429,8 +433,10 @@ class IMapMappedClass<K, V, KM extends MapSetKeyType>
|
|
|
429
433
|
`IMapMapped.delete: key not found: ${String(this.#toKey(key))}`,
|
|
430
434
|
);
|
|
431
435
|
}
|
|
436
|
+
|
|
432
437
|
return this;
|
|
433
438
|
}
|
|
439
|
+
|
|
434
440
|
const keyMapped = this.#toKey(key);
|
|
435
441
|
|
|
436
442
|
return IMapMapped.create(
|
|
@@ -445,6 +451,7 @@ class IMapMappedClass<K, V, KM extends MapSetKeyType>
|
|
|
445
451
|
/** @inheritdoc */
|
|
446
452
|
set(key: K, value: V): IMapMapped<K, V, KM> {
|
|
447
453
|
if (value === this.get(key)) return this; // has no changes
|
|
454
|
+
|
|
448
455
|
const keyMapped = this.#toKey(key);
|
|
449
456
|
|
|
450
457
|
if (!this.has(key)) {
|
|
@@ -476,6 +483,7 @@ class IMapMappedClass<K, V, KM extends MapSetKeyType>
|
|
|
476
483
|
`IMapMapped.update: key not found: ${String(this.#toKey(key))}`,
|
|
477
484
|
);
|
|
478
485
|
}
|
|
486
|
+
|
|
479
487
|
return this;
|
|
480
488
|
}
|
|
481
489
|
|
|
@@ -512,10 +520,12 @@ class IMapMappedClass<K, V, KM extends MapSetKeyType>
|
|
|
512
520
|
switch (action.type) {
|
|
513
521
|
case 'delete':
|
|
514
522
|
mut_result.delete(key);
|
|
523
|
+
|
|
515
524
|
break;
|
|
516
525
|
|
|
517
526
|
case 'set':
|
|
518
527
|
mut_result.set(key, action.value);
|
|
528
|
+
|
|
519
529
|
break;
|
|
520
530
|
|
|
521
531
|
case 'update': {
|
|
@@ -527,6 +537,7 @@ class IMapMappedClass<K, V, KM extends MapSetKeyType>
|
|
|
527
537
|
`IMapMapped.withMutations::update: key not found: ${String(key)}`,
|
|
528
538
|
);
|
|
529
539
|
}
|
|
540
|
+
|
|
530
541
|
break;
|
|
531
542
|
}
|
|
532
543
|
|
|
@@ -2,13 +2,17 @@ import { Optional } from '../functional/index.mjs';
|
|
|
2
2
|
import { IMapMapped } from './imap-mapped.mjs';
|
|
3
3
|
|
|
4
4
|
const toKey = (a: Readonly<{ v: number }>): number => a.v;
|
|
5
|
+
|
|
5
6
|
const fromKey = (k: number): Readonly<{ v: number }> => ({ v: k });
|
|
6
7
|
|
|
7
8
|
type TestKey = { id: number; type: string };
|
|
9
|
+
|
|
8
10
|
const testKeyToString = (key: Readonly<TestKey>): string =>
|
|
9
11
|
`${key.type}_${key.id}`;
|
|
12
|
+
|
|
10
13
|
const stringToTestKey = (str: string): TestKey => {
|
|
11
14
|
const [type, idStr] = str.split('_');
|
|
15
|
+
|
|
12
16
|
return { type: type ?? '', id: Number(idStr ?? '0') };
|
|
13
17
|
};
|
|
14
18
|
|
|
@@ -65,7 +69,9 @@ describe('IMapMapped.create', () => {
|
|
|
65
69
|
);
|
|
66
70
|
|
|
67
71
|
expect(map.size).toBe(2);
|
|
72
|
+
|
|
68
73
|
expect(Optional.unwrap(map.get({ id: 1, type: 'user' }))).toBe('Alice');
|
|
74
|
+
|
|
69
75
|
expect(Optional.unwrap(map.get({ id: 2, type: 'admin' }))).toBe('Bob');
|
|
70
76
|
});
|
|
71
77
|
|
|
@@ -78,23 +84,29 @@ describe('IMapMapped.create', () => {
|
|
|
78
84
|
testKeyToString,
|
|
79
85
|
stringToTestKey,
|
|
80
86
|
);
|
|
87
|
+
|
|
81
88
|
const copy = IMapMapped.create(original, testKeyToString, stringToTestKey);
|
|
82
89
|
|
|
83
90
|
expect(copy.size).toBe(2);
|
|
91
|
+
|
|
84
92
|
expect(Optional.unwrap(copy.get({ id: 1, type: 'user' }))).toBe('Alice');
|
|
93
|
+
|
|
85
94
|
expect(Optional.unwrap(copy.get({ id: 2, type: 'admin' }))).toBe('Bob');
|
|
86
95
|
});
|
|
87
96
|
|
|
88
97
|
test('should handle complex key transformations', () => {
|
|
89
98
|
type ComplexKey = { nested: { id: number }; arr: number[] };
|
|
99
|
+
|
|
90
100
|
const complexKeyToString = (
|
|
91
101
|
key: DeepReadonly<{
|
|
92
102
|
nested: { id: number };
|
|
93
103
|
arr: number[];
|
|
94
104
|
}>,
|
|
95
105
|
): string => `${key.nested.id}_${key.arr.join(',')}`;
|
|
106
|
+
|
|
96
107
|
const stringToComplexKey = (str: string): ComplexKey => {
|
|
97
108
|
const [idStr, arrStr] = str.split('_');
|
|
109
|
+
|
|
98
110
|
return {
|
|
99
111
|
nested: { id: Number(idStr ?? '0') },
|
|
100
112
|
arr: (arrStr ?? '').split(',').map(Number),
|
|
@@ -108,6 +120,7 @@ describe('IMapMapped.create', () => {
|
|
|
108
120
|
);
|
|
109
121
|
|
|
110
122
|
expect(map.size).toBe(1);
|
|
123
|
+
|
|
111
124
|
expect(
|
|
112
125
|
Optional.unwrap(map.get({ nested: { id: 1 }, arr: [1, 2, 3] })),
|
|
113
126
|
).toBe('test');
|
|
@@ -124,6 +137,7 @@ describe('IMapMapped.equal', () => {
|
|
|
124
137
|
testKeyToString,
|
|
125
138
|
stringToTestKey,
|
|
126
139
|
);
|
|
140
|
+
|
|
127
141
|
const map2 = IMapMapped.create(
|
|
128
142
|
[
|
|
129
143
|
[{ id: 1, type: 'user' }, 'Alice'],
|
|
@@ -135,8 +149,11 @@ describe('IMapMapped.equal', () => {
|
|
|
135
149
|
|
|
136
150
|
// Test structural equality, not reference equality
|
|
137
151
|
expect(map1.size).toBe(map2.size);
|
|
152
|
+
|
|
138
153
|
expect(map1.has({ id: 1, type: 'user' })).toBe(true);
|
|
154
|
+
|
|
139
155
|
expect(map2.has({ id: 1, type: 'user' })).toBe(true);
|
|
156
|
+
|
|
140
157
|
expect(Optional.unwrap(map1.get({ id: 1, type: 'user' }))).toBe(
|
|
141
158
|
Optional.unwrap(map2.get({ id: 1, type: 'user' })),
|
|
142
159
|
);
|
|
@@ -151,6 +168,7 @@ describe('IMapMapped.equal', () => {
|
|
|
151
168
|
testKeyToString,
|
|
152
169
|
stringToTestKey,
|
|
153
170
|
);
|
|
171
|
+
|
|
154
172
|
const map2 = IMapMapped.create(
|
|
155
173
|
[
|
|
156
174
|
[{ id: 1, type: 'user' }, 'Alice'],
|
|
@@ -172,6 +190,7 @@ describe('IMapMapped.equal', () => {
|
|
|
172
190
|
testKeyToString,
|
|
173
191
|
stringToTestKey,
|
|
174
192
|
);
|
|
193
|
+
|
|
175
194
|
const map2 = IMapMapped.create(
|
|
176
195
|
[
|
|
177
196
|
[{ id: 1, type: 'user' }, 'Alice'],
|
|
@@ -190,6 +209,7 @@ describe('IMapMapped.equal', () => {
|
|
|
190
209
|
testKeyToString,
|
|
191
210
|
stringToTestKey,
|
|
192
211
|
);
|
|
212
|
+
|
|
193
213
|
const map2 = IMapMapped.create<TestKey, string, string>(
|
|
194
214
|
[],
|
|
195
215
|
testKeyToString,
|
|
@@ -321,6 +341,7 @@ describe('IMapMapped.set', () => {
|
|
|
321
341
|
fromKey,
|
|
322
342
|
),
|
|
323
343
|
);
|
|
344
|
+
|
|
324
345
|
assert.deepStrictEqual(
|
|
325
346
|
s0,
|
|
326
347
|
IMapMapped.create(
|
|
@@ -358,6 +379,7 @@ describe('IMapMapped.set', () => {
|
|
|
358
379
|
fromKey,
|
|
359
380
|
),
|
|
360
381
|
);
|
|
382
|
+
|
|
361
383
|
assert.deepStrictEqual(
|
|
362
384
|
s0,
|
|
363
385
|
IMapMapped.create(
|
|
@@ -383,6 +405,7 @@ describe('IMapMapped.set', () => {
|
|
|
383
405
|
s0.set({ v: 1 }, '1'),
|
|
384
406
|
IMapMapped.create([[{ v: 1 }, '1']], toKey, fromKey),
|
|
385
407
|
);
|
|
408
|
+
|
|
386
409
|
assert.deepStrictEqual(s0, IMapMapped.create([], toKey, fromKey));
|
|
387
410
|
});
|
|
388
411
|
});
|
|
@@ -394,6 +417,7 @@ describe('IMapMapped.update', () => {
|
|
|
394
417
|
testKeyToString,
|
|
395
418
|
stringToTestKey,
|
|
396
419
|
);
|
|
420
|
+
|
|
397
421
|
const updated = map.update({ id: 1, type: 'user' }, (name) =>
|
|
398
422
|
name.toUpperCase(),
|
|
399
423
|
);
|
|
@@ -407,11 +431,13 @@ describe('IMapMapped.update', () => {
|
|
|
407
431
|
testKeyToString,
|
|
408
432
|
stringToTestKey,
|
|
409
433
|
);
|
|
434
|
+
|
|
410
435
|
const updated = map.update({ id: 2, type: 'user' }, (name) =>
|
|
411
436
|
name.toUpperCase(),
|
|
412
437
|
);
|
|
413
438
|
|
|
414
439
|
expect(updated).toBe(map);
|
|
440
|
+
|
|
415
441
|
expect(Optional.isNone(updated.get({ id: 2, type: 'user' }))).toBe(true);
|
|
416
442
|
});
|
|
417
443
|
});
|
|
@@ -440,6 +466,7 @@ describe('IMapMapped.delete', () => {
|
|
|
440
466
|
fromKey,
|
|
441
467
|
),
|
|
442
468
|
);
|
|
469
|
+
|
|
443
470
|
assert.deepStrictEqual(
|
|
444
471
|
s0,
|
|
445
472
|
IMapMapped.create(
|
|
@@ -476,6 +503,7 @@ describe('IMapMapped.delete', () => {
|
|
|
476
503
|
fromKey,
|
|
477
504
|
),
|
|
478
505
|
);
|
|
506
|
+
|
|
479
507
|
assert.deepStrictEqual(
|
|
480
508
|
s0,
|
|
481
509
|
IMapMapped.create(
|
|
@@ -497,6 +525,7 @@ describe('IMapMapped.delete', () => {
|
|
|
497
525
|
s0.delete({ v: 1 }),
|
|
498
526
|
IMapMapped.create([], toKey, fromKey),
|
|
499
527
|
);
|
|
528
|
+
|
|
500
529
|
assert.deepStrictEqual(s0, IMapMapped.create([], toKey, fromKey));
|
|
501
530
|
});
|
|
502
531
|
|
|
@@ -509,10 +538,13 @@ describe('IMapMapped.delete', () => {
|
|
|
509
538
|
testKeyToString,
|
|
510
539
|
stringToTestKey,
|
|
511
540
|
);
|
|
541
|
+
|
|
512
542
|
const updated = map.delete({ id: 2, type: 'admin' });
|
|
513
543
|
|
|
514
544
|
expect(updated).not.toBe(map); // Should return new instance
|
|
545
|
+
|
|
515
546
|
expect(updated.size).toBe(1);
|
|
547
|
+
|
|
516
548
|
expect(map.size).toBe(2); // Original unchanged
|
|
517
549
|
});
|
|
518
550
|
});
|
|
@@ -614,7 +646,9 @@ describe('IMapMapped.withMutations', () => {
|
|
|
614
646
|
]);
|
|
615
647
|
|
|
616
648
|
expect(updated.size).toBe(2);
|
|
649
|
+
|
|
617
650
|
expect(Optional.unwrap(updated.get({ id: 1, type: 'user' }))).toBe('ALICE');
|
|
651
|
+
|
|
618
652
|
expect(Optional.unwrap(updated.get({ id: 2, type: 'admin' }))).toBe('Bob');
|
|
619
653
|
});
|
|
620
654
|
|
|
@@ -624,9 +658,11 @@ describe('IMapMapped.withMutations', () => {
|
|
|
624
658
|
testKeyToString,
|
|
625
659
|
stringToTestKey,
|
|
626
660
|
);
|
|
661
|
+
|
|
627
662
|
const updated = map.withMutations([]);
|
|
628
663
|
|
|
629
664
|
expect(updated.size).toBe(1);
|
|
665
|
+
|
|
630
666
|
expect(Optional.unwrap(updated.get({ id: 1, type: 'user' }))).toBe('Alice');
|
|
631
667
|
});
|
|
632
668
|
});
|
|
@@ -641,11 +677,13 @@ describe('IMapMapped.map', () => {
|
|
|
641
677
|
testKeyToString,
|
|
642
678
|
stringToTestKey,
|
|
643
679
|
);
|
|
680
|
+
|
|
644
681
|
const transformed = map.map((value) => value.toUpperCase());
|
|
645
682
|
|
|
646
683
|
expect(Optional.unwrap(transformed.get({ id: 1, type: 'user' }))).toBe(
|
|
647
684
|
'ALICE',
|
|
648
685
|
);
|
|
686
|
+
|
|
649
687
|
expect(Optional.unwrap(transformed.get({ id: 2, type: 'admin' }))).toBe(
|
|
650
688
|
'BOB',
|
|
651
689
|
);
|
|
@@ -660,11 +698,13 @@ describe('IMapMapped.map', () => {
|
|
|
660
698
|
testKeyToString,
|
|
661
699
|
stringToTestKey,
|
|
662
700
|
);
|
|
701
|
+
|
|
663
702
|
const transformed = map.map((value, key) => `${key.type}:${value}`);
|
|
664
703
|
|
|
665
704
|
expect(Optional.unwrap(transformed.get({ id: 1, type: 'user' }))).toBe(
|
|
666
705
|
'user:Alice',
|
|
667
706
|
);
|
|
707
|
+
|
|
668
708
|
expect(Optional.unwrap(transformed.get({ id: 2, type: 'admin' }))).toBe(
|
|
669
709
|
'admin:Bob',
|
|
670
710
|
);
|
|
@@ -681,14 +721,17 @@ describe('IMapMapped.mapKeys', () => {
|
|
|
681
721
|
testKeyToString,
|
|
682
722
|
stringToTestKey,
|
|
683
723
|
);
|
|
724
|
+
|
|
684
725
|
const transformed = map.mapKeys((key) => ({ ...key, id: key.id * 10 }));
|
|
685
726
|
|
|
686
727
|
expect(Optional.isNone(transformed.get({ id: 1, type: 'user' }))).toBe(
|
|
687
728
|
true,
|
|
688
729
|
);
|
|
730
|
+
|
|
689
731
|
expect(Optional.unwrap(transformed.get({ id: 10, type: 'user' }))).toBe(
|
|
690
732
|
'Alice',
|
|
691
733
|
);
|
|
734
|
+
|
|
692
735
|
expect(Optional.unwrap(transformed.get({ id: 20, type: 'admin' }))).toBe(
|
|
693
736
|
'Bob',
|
|
694
737
|
);
|
|
@@ -705,6 +748,7 @@ describe('IMapMapped.mapEntries', () => {
|
|
|
705
748
|
testKeyToString,
|
|
706
749
|
stringToTestKey,
|
|
707
750
|
);
|
|
751
|
+
|
|
708
752
|
const transformed = map.mapEntries(([key, value]) => [
|
|
709
753
|
{ ...key, id: key.id * 10 },
|
|
710
754
|
value.toUpperCase(),
|
|
@@ -713,6 +757,7 @@ describe('IMapMapped.mapEntries', () => {
|
|
|
713
757
|
expect(Optional.unwrap(transformed.get({ id: 10, type: 'user' }))).toBe(
|
|
714
758
|
'ALICE',
|
|
715
759
|
);
|
|
760
|
+
|
|
716
761
|
expect(Optional.unwrap(transformed.get({ id: 20, type: 'admin' }))).toBe(
|
|
717
762
|
'BOB',
|
|
718
763
|
);
|
|
@@ -730,11 +775,14 @@ describe('IMapMapped.forEach', () => {
|
|
|
730
775
|
toKey,
|
|
731
776
|
fromKey,
|
|
732
777
|
);
|
|
778
|
+
|
|
733
779
|
const keys = [{ v: 1 }, { v: 2 }, { v: 3 }];
|
|
780
|
+
|
|
734
781
|
const values = ['1', '2', '3'];
|
|
735
782
|
|
|
736
783
|
for (const [key, value] of s0.entries()) {
|
|
737
784
|
expect(keys).toContainEqual(key);
|
|
785
|
+
|
|
738
786
|
expect(values).toContainEqual(value);
|
|
739
787
|
}
|
|
740
788
|
});
|
|
@@ -748,6 +796,7 @@ describe('IMapMapped.forEach', () => {
|
|
|
748
796
|
testKeyToString,
|
|
749
797
|
stringToTestKey,
|
|
750
798
|
);
|
|
799
|
+
|
|
751
800
|
const mut_collected: [TestKey, string][] = [];
|
|
752
801
|
|
|
753
802
|
for (const [key, value] of map.entries()) {
|
|
@@ -755,7 +804,9 @@ describe('IMapMapped.forEach', () => {
|
|
|
755
804
|
}
|
|
756
805
|
|
|
757
806
|
expect(mut_collected).toHaveLength(2);
|
|
807
|
+
|
|
758
808
|
expect(mut_collected).toContainEqual([{ id: 1, type: 'user' }, 'Alice']);
|
|
809
|
+
|
|
759
810
|
expect(mut_collected).toContainEqual([{ id: 2, type: 'admin' }, 'Bob']);
|
|
760
811
|
});
|
|
761
812
|
});
|
|
@@ -771,6 +822,7 @@ describe('IMapMapped.keys', () => {
|
|
|
771
822
|
toKey,
|
|
772
823
|
fromKey,
|
|
773
824
|
);
|
|
825
|
+
|
|
774
826
|
const keys = [{ v: 1 }, { v: 2 }, { v: 3 }];
|
|
775
827
|
|
|
776
828
|
for (const k of s0.keys()) {
|
|
@@ -790,6 +842,7 @@ describe('IMapMapped.values', () => {
|
|
|
790
842
|
toKey,
|
|
791
843
|
fromKey,
|
|
792
844
|
);
|
|
845
|
+
|
|
793
846
|
const values = ['1', '2', '3'];
|
|
794
847
|
|
|
795
848
|
for (const v of s0.values()) {
|
|
@@ -809,11 +862,14 @@ describe('IMapMapped.entries', () => {
|
|
|
809
862
|
toKey,
|
|
810
863
|
fromKey,
|
|
811
864
|
);
|
|
865
|
+
|
|
812
866
|
const keys = [{ v: 1 }, { v: 2 }, { v: 3 }];
|
|
867
|
+
|
|
813
868
|
const values = ['1', '2', '3'];
|
|
814
869
|
|
|
815
870
|
for (const [k, v] of s0.entries()) {
|
|
816
871
|
expect(keys).toContainEqual(k);
|
|
872
|
+
|
|
817
873
|
expect(values).toContainEqual(v);
|
|
818
874
|
}
|
|
819
875
|
});
|
|
@@ -829,10 +885,13 @@ describe('IMapMapped.toKeysArray', () => {
|
|
|
829
885
|
testKeyToString,
|
|
830
886
|
stringToTestKey,
|
|
831
887
|
);
|
|
888
|
+
|
|
832
889
|
const keys = map.toKeysArray();
|
|
833
890
|
|
|
834
891
|
expect(keys).toHaveLength(2);
|
|
892
|
+
|
|
835
893
|
expect(keys).toContainEqual({ id: 1, type: 'user' });
|
|
894
|
+
|
|
836
895
|
expect(keys).toContainEqual({ id: 2, type: 'admin' });
|
|
837
896
|
});
|
|
838
897
|
});
|
|
@@ -847,10 +906,13 @@ describe('IMapMapped.toValuesArray', () => {
|
|
|
847
906
|
testKeyToString,
|
|
848
907
|
stringToTestKey,
|
|
849
908
|
);
|
|
909
|
+
|
|
850
910
|
const values = map.toValuesArray();
|
|
851
911
|
|
|
852
912
|
expect(values).toHaveLength(2);
|
|
913
|
+
|
|
853
914
|
expect(values).toContain('Alice');
|
|
915
|
+
|
|
854
916
|
expect(values).toContain('Bob');
|
|
855
917
|
});
|
|
856
918
|
});
|
|
@@ -865,10 +927,13 @@ describe('IMapMapped.toEntriesArray', () => {
|
|
|
865
927
|
testKeyToString,
|
|
866
928
|
stringToTestKey,
|
|
867
929
|
);
|
|
930
|
+
|
|
868
931
|
const entries = map.toEntriesArray();
|
|
869
932
|
|
|
870
933
|
expect(entries).toHaveLength(2);
|
|
934
|
+
|
|
871
935
|
expect(entries).toContainEqual([{ id: 1, type: 'user' }, 'Alice']);
|
|
936
|
+
|
|
872
937
|
expect(entries).toContainEqual([{ id: 2, type: 'admin' }, 'Bob']);
|
|
873
938
|
});
|
|
874
939
|
});
|
|
@@ -883,7 +948,9 @@ describe('IMapMapped.toArray', () => {
|
|
|
883
948
|
testKeyToString,
|
|
884
949
|
stringToTestKey,
|
|
885
950
|
);
|
|
951
|
+
|
|
886
952
|
const entries = map.toArray();
|
|
953
|
+
|
|
887
954
|
const entriesArray = map.toEntriesArray();
|
|
888
955
|
|
|
889
956
|
assert.deepStrictEqual(entries, entriesArray);
|
|
@@ -900,10 +967,13 @@ describe('IMapMapped.toRawMap', () => {
|
|
|
900
967
|
testKeyToString,
|
|
901
968
|
stringToTestKey,
|
|
902
969
|
);
|
|
970
|
+
|
|
903
971
|
const rawMap = map.toRawMap();
|
|
904
972
|
|
|
905
973
|
expect(rawMap.size).toBe(2);
|
|
974
|
+
|
|
906
975
|
expect(rawMap.get('user_1')).toBe('Alice');
|
|
976
|
+
|
|
907
977
|
expect(rawMap.get('admin_2')).toBe('Bob');
|
|
908
978
|
});
|
|
909
979
|
});
|
package/src/collections/imap.mts
CHANGED
|
@@ -62,6 +62,7 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
62
62
|
* ]);
|
|
63
63
|
*
|
|
64
64
|
* assert.ok(map.has('id'));
|
|
65
|
+
*
|
|
65
66
|
* assert.notOk(map.has('missing'));
|
|
66
67
|
* ```
|
|
67
68
|
*
|
|
@@ -79,6 +80,7 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
79
80
|
* const map = IMap.create([['user', { id: 1 }]]);
|
|
80
81
|
*
|
|
81
82
|
* assert.deepStrictEqual(map.get('user'), Optional.some({ id: 1 }));
|
|
83
|
+
*
|
|
82
84
|
* assert.deepStrictEqual(map.get('missing'), Optional.none);
|
|
83
85
|
* ```
|
|
84
86
|
*
|
|
@@ -102,9 +104,11 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
102
104
|
* ]);
|
|
103
105
|
*
|
|
104
106
|
* const allEven = map.every((value) => value % 2 === 0);
|
|
107
|
+
*
|
|
105
108
|
* const isNarrowed = map.every((value): value is 2 | 4 => value % 2 === 0);
|
|
106
109
|
*
|
|
107
110
|
* assert.ok(allEven);
|
|
111
|
+
*
|
|
108
112
|
* assert.ok(isNarrowed);
|
|
109
113
|
* ```
|
|
110
114
|
*
|
|
@@ -139,6 +143,7 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
139
143
|
* const map = IMap.create(entries);
|
|
140
144
|
*
|
|
141
145
|
* assert.ok(map.some((value) => value > 4));
|
|
146
|
+
*
|
|
142
147
|
* assert.notOk(map.some((value) => value > 10));
|
|
143
148
|
* ```
|
|
144
149
|
*
|
|
@@ -164,8 +169,11 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
164
169
|
* const withoutB = original.delete('b');
|
|
165
170
|
*
|
|
166
171
|
* assert.deepStrictEqual(original.get('b'), Optional.some(2));
|
|
172
|
+
*
|
|
167
173
|
* assert.deepStrictEqual(withoutB.get('b'), Optional.none);
|
|
174
|
+
*
|
|
168
175
|
* assert(original.size === 2);
|
|
176
|
+
*
|
|
169
177
|
* assert(withoutB.size === 1);
|
|
170
178
|
* ```
|
|
171
179
|
*
|
|
@@ -188,10 +196,13 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
188
196
|
* const base = IMap.create<'count' | 'status', number | string>(entries);
|
|
189
197
|
*
|
|
190
198
|
* const updated = base.set('count', 2);
|
|
199
|
+
*
|
|
191
200
|
* const extended = base.set('status', 'ok');
|
|
192
201
|
*
|
|
193
202
|
* assert.deepStrictEqual(base.get('count'), Optional.some(1));
|
|
203
|
+
*
|
|
194
204
|
* assert.deepStrictEqual(updated.get('count'), Optional.some(2));
|
|
205
|
+
*
|
|
195
206
|
* assert.deepStrictEqual(extended.get('status'), Optional.some('ok'));
|
|
196
207
|
* ```
|
|
197
208
|
*
|
|
@@ -215,10 +226,13 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
215
226
|
* const scores = IMap.create<'alice' | 'bob' | 'charlie', number>(entries);
|
|
216
227
|
*
|
|
217
228
|
* const boosted = scores.update('alice', (value) => value + 5);
|
|
229
|
+
*
|
|
218
230
|
* const unchanged = scores.update('charlie', (value) => value + 1);
|
|
219
231
|
*
|
|
220
232
|
* assert.deepStrictEqual(boosted.get('alice'), Optional.some(15));
|
|
233
|
+
*
|
|
221
234
|
* assert.deepStrictEqual(scores.get('alice'), Optional.some(10));
|
|
235
|
+
*
|
|
222
236
|
* assert(unchanged === scores);
|
|
223
237
|
* ```
|
|
224
238
|
*
|
|
@@ -255,8 +269,11 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
255
269
|
* const mutated = base.withMutations(actions);
|
|
256
270
|
*
|
|
257
271
|
* assert.deepStrictEqual(mutated.get('c'), Optional.some(3));
|
|
272
|
+
*
|
|
258
273
|
* assert.deepStrictEqual(mutated.get('b'), Optional.some(20));
|
|
274
|
+
*
|
|
259
275
|
* assert.deepStrictEqual(mutated.get('a'), Optional.none);
|
|
276
|
+
*
|
|
260
277
|
* assert.deepStrictEqual(base.get('b'), Optional.some(2));
|
|
261
278
|
* ```
|
|
262
279
|
*
|
|
@@ -559,6 +576,7 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
|
|
|
559
576
|
* const raw = map.toRawMap();
|
|
560
577
|
*
|
|
561
578
|
* assert.ok(is.map(raw));
|
|
579
|
+
*
|
|
562
580
|
* assert(raw.get('key') === 1);
|
|
563
581
|
* ```
|
|
564
582
|
*
|
|
@@ -616,6 +634,7 @@ export namespace IMap {
|
|
|
616
634
|
* ]);
|
|
617
635
|
*
|
|
618
636
|
* assert(map.size === 2);
|
|
637
|
+
*
|
|
619
638
|
* assert.deepStrictEqual(map.get('status'), Optional.some('active'));
|
|
620
639
|
* ```
|
|
621
640
|
*
|
|
@@ -658,6 +677,7 @@ export namespace IMap {
|
|
|
658
677
|
* ]);
|
|
659
678
|
*
|
|
660
679
|
* assert.ok(IMap.equal(first, second));
|
|
680
|
+
*
|
|
661
681
|
* assert.notOk(IMap.equal(first, third));
|
|
662
682
|
* ```
|
|
663
683
|
*
|
|
@@ -719,6 +739,7 @@ class IMapClass<K extends MapSetKeyType, V>
|
|
|
719
739
|
showNotFoundMessage: boolean = false,
|
|
720
740
|
) {
|
|
721
741
|
this.#map = new Map(iterable);
|
|
742
|
+
|
|
722
743
|
this.#showNotFoundMessage = showNotFoundMessage;
|
|
723
744
|
}
|
|
724
745
|
|
|
@@ -736,6 +757,7 @@ class IMapClass<K extends MapSetKeyType, V>
|
|
|
736
757
|
/** @inheritdoc */
|
|
737
758
|
get(key: K | (WidenLiteral<K> & {})): Optional<V> {
|
|
738
759
|
if (!this.has(key)) return Optional.none;
|
|
760
|
+
|
|
739
761
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, @typescript-eslint/no-non-null-assertion
|
|
740
762
|
return Optional.some(this.#map.get(key as K)!);
|
|
741
763
|
}
|
|
@@ -771,8 +793,10 @@ class IMapClass<K extends MapSetKeyType, V>
|
|
|
771
793
|
if (!this.has(key)) {
|
|
772
794
|
if (this.#showNotFoundMessage) {
|
|
773
795
|
const keyStr = unknownToString(key);
|
|
796
|
+
|
|
774
797
|
console.warn(`IMap.delete: key not found: ${keyStr}`);
|
|
775
798
|
}
|
|
799
|
+
|
|
776
800
|
return this;
|
|
777
801
|
}
|
|
778
802
|
|
|
@@ -784,7 +808,9 @@ class IMapClass<K extends MapSetKeyType, V>
|
|
|
784
808
|
/** @inheritdoc */
|
|
785
809
|
set(key: K, value: V): IMap<K, V> {
|
|
786
810
|
const curr = this.get(key);
|
|
811
|
+
|
|
787
812
|
if (Optional.isSome(curr) && value === curr.value) return this; // has no changes
|
|
813
|
+
|
|
788
814
|
if (!this.has(key)) {
|
|
789
815
|
return IMap.create([...this.#map, tp(key, value)]);
|
|
790
816
|
} else {
|
|
@@ -801,8 +827,10 @@ class IMapClass<K extends MapSetKeyType, V>
|
|
|
801
827
|
if (Optional.isNone(curr)) {
|
|
802
828
|
if (this.#showNotFoundMessage) {
|
|
803
829
|
const keyStr = unknownToString(key);
|
|
830
|
+
|
|
804
831
|
console.warn(`IMap.update: key not found: ${keyStr}`);
|
|
805
832
|
}
|
|
833
|
+
|
|
806
834
|
return this;
|
|
807
835
|
}
|
|
808
836
|
|
|
@@ -827,10 +855,12 @@ class IMapClass<K extends MapSetKeyType, V>
|
|
|
827
855
|
switch (action.type) {
|
|
828
856
|
case 'delete':
|
|
829
857
|
mut_result.delete(action.key);
|
|
858
|
+
|
|
830
859
|
break;
|
|
831
860
|
|
|
832
861
|
case 'set':
|
|
833
862
|
mut_result.set(action.key, action.value);
|
|
863
|
+
|
|
834
864
|
break;
|
|
835
865
|
|
|
836
866
|
case 'update': {
|
|
@@ -841,8 +871,10 @@ class IMapClass<K extends MapSetKeyType, V>
|
|
|
841
871
|
if (!mut_result.has(key) || curr === undefined) {
|
|
842
872
|
if (this.#showNotFoundMessage) {
|
|
843
873
|
const keyStr = unknownToString(key);
|
|
874
|
+
|
|
844
875
|
console.warn(`IMap.withMutations: key not found: ${keyStr}`);
|
|
845
876
|
}
|
|
877
|
+
|
|
846
878
|
break;
|
|
847
879
|
}
|
|
848
880
|
|