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
|
@@ -8,20 +8,25 @@ import { filterNot, partition } from './array-utils-transformation.mjs';
|
|
|
8
8
|
|
|
9
9
|
describe('Array overloaded functions - type error validation', () => {
|
|
10
10
|
const testArray = [1, 2, 3, 4, 5] as const;
|
|
11
|
+
|
|
11
12
|
const predicate = (x: number): boolean => x > 3;
|
|
12
13
|
|
|
13
14
|
describe('findIndex type safety', () => {
|
|
14
15
|
test('findIndex with correct arguments should work', () => {
|
|
15
16
|
// These should work fine
|
|
16
17
|
const _result1 = findIndex(testArray, predicate);
|
|
18
|
+
|
|
17
19
|
const _result2 = findIndex(predicate);
|
|
20
|
+
|
|
18
21
|
const _result3 = findIndex(predicate)(testArray);
|
|
19
22
|
|
|
20
23
|
expectType<typeof _result1, 0 | 1 | 2 | 3 | 4 | -1>('=');
|
|
24
|
+
|
|
21
25
|
expectType<
|
|
22
26
|
typeof _result2,
|
|
23
27
|
(array: readonly number[]) => SizeType.Arr | -1
|
|
24
28
|
>('=');
|
|
29
|
+
|
|
25
30
|
expectType<typeof _result3, SizeType.Arr | -1>('=');
|
|
26
31
|
});
|
|
27
32
|
|
|
@@ -41,14 +46,18 @@ describe('Array overloaded functions - type error validation', () => {
|
|
|
41
46
|
test('filterNot with correct arguments should work', () => {
|
|
42
47
|
// These should work fine
|
|
43
48
|
const _result1 = filterNot(testArray, predicate);
|
|
49
|
+
|
|
44
50
|
const _result2 = filterNot(predicate);
|
|
51
|
+
|
|
45
52
|
const _result3 = filterNot(predicate)(testArray);
|
|
46
53
|
|
|
47
54
|
expectType<typeof _result1, readonly number[]>('<=');
|
|
55
|
+
|
|
48
56
|
expectType<
|
|
49
57
|
typeof _result2,
|
|
50
58
|
(array: readonly number[]) => readonly number[]
|
|
51
59
|
>('<=');
|
|
60
|
+
|
|
52
61
|
expectType<typeof _result3, readonly number[]>('<=');
|
|
53
62
|
});
|
|
54
63
|
|
|
@@ -67,14 +76,18 @@ describe('Array overloaded functions - type error validation', () => {
|
|
|
67
76
|
test('partition with correct arguments should work', () => {
|
|
68
77
|
// These should work fine
|
|
69
78
|
const _result1 = partition(testArray, 2);
|
|
79
|
+
|
|
70
80
|
const _result2 = partition(2);
|
|
81
|
+
|
|
71
82
|
const _result3 = partition(2)(testArray);
|
|
72
83
|
|
|
73
84
|
expectType<typeof _result1, readonly (readonly number[])[]>('<=');
|
|
85
|
+
|
|
74
86
|
expectType<
|
|
75
87
|
typeof _result2,
|
|
76
88
|
<A>(array: readonly A[]) => readonly (readonly A[])[]
|
|
77
89
|
>('<=');
|
|
90
|
+
|
|
78
91
|
expectType<typeof _result3, readonly (readonly number[])[]>('<=');
|
|
79
92
|
});
|
|
80
93
|
|
|
@@ -93,9 +106,11 @@ describe('Array overloaded functions - type error validation', () => {
|
|
|
93
106
|
test('range with correct arguments should work', () => {
|
|
94
107
|
// These should work fine
|
|
95
108
|
const _result1 = range(1, 5);
|
|
109
|
+
|
|
96
110
|
const _result2 = range(1, 5, 1);
|
|
97
111
|
|
|
98
112
|
expectType<typeof _result1, readonly [1, 2, 3, 4]>('=');
|
|
113
|
+
|
|
99
114
|
expectType<typeof _result2, readonly [1, 2, 3, 4]>('=');
|
|
100
115
|
});
|
|
101
116
|
|
|
@@ -112,12 +127,15 @@ describe('Array overloaded functions - type error validation', () => {
|
|
|
112
127
|
test('spread with correct tuple types should work', () => {
|
|
113
128
|
// Correct usage with spread
|
|
114
129
|
const correctArgs1 = [testArray, predicate] as const;
|
|
130
|
+
|
|
115
131
|
const correctArgs2 = [predicate] as const;
|
|
116
132
|
|
|
117
133
|
const _result1 = findIndex(...correctArgs1);
|
|
134
|
+
|
|
118
135
|
const _result2 = findIndex(...correctArgs2);
|
|
119
136
|
|
|
120
137
|
expectType<typeof _result1, 0 | 1 | 2 | 3 | 4 | -1>('<=');
|
|
138
|
+
|
|
121
139
|
expectType<
|
|
122
140
|
typeof _result2,
|
|
123
141
|
(array: readonly number[]) => SizeType.Arr | -1
|
|
@@ -141,6 +159,7 @@ describe('Array overloaded functions - type error validation', () => {
|
|
|
141
159
|
test('composition should preserve type safety', () => {
|
|
142
160
|
// This should work
|
|
143
161
|
const findPositive = findIndex((x: number) => x > 0);
|
|
162
|
+
|
|
144
163
|
const filterNegative = filterNot((x: number) => x < 0);
|
|
145
164
|
|
|
146
165
|
const _composedResult = pipe(testArray)
|
|
@@ -13,14 +13,19 @@ import { isNonEmpty } from './array-utils-validation.mjs';
|
|
|
13
13
|
*
|
|
14
14
|
* ```ts
|
|
15
15
|
* const values = [5, 3, 9] as const;
|
|
16
|
+
*
|
|
16
17
|
* const empty: readonly number[] = [];
|
|
17
18
|
*
|
|
18
19
|
* const smallest = Arr.min(values);
|
|
20
|
+
*
|
|
19
21
|
* const none = Arr.min(empty);
|
|
22
|
+
*
|
|
20
23
|
* const custom = Arr.min(values, (a, b) => b - a);
|
|
21
24
|
*
|
|
22
25
|
* assert.deepStrictEqual(smallest, Optional.some(3));
|
|
26
|
+
*
|
|
23
27
|
* assert.deepStrictEqual(none, Optional.none);
|
|
28
|
+
*
|
|
24
29
|
* assert.deepStrictEqual(custom, Optional.some(9));
|
|
25
30
|
* ```
|
|
26
31
|
*/
|
|
@@ -62,9 +67,11 @@ export function min<E extends number>(
|
|
|
62
67
|
* const values = [5, 3, 9];
|
|
63
68
|
*
|
|
64
69
|
* const largest = Arr.max(values);
|
|
70
|
+
*
|
|
65
71
|
* const reversed = Arr.max(values, (a, b) => b - a);
|
|
66
72
|
*
|
|
67
73
|
* assert.deepStrictEqual(largest, Optional.some(9));
|
|
74
|
+
*
|
|
68
75
|
* assert.deepStrictEqual(reversed, Optional.some(3));
|
|
69
76
|
* ```
|
|
70
77
|
*/
|
|
@@ -84,6 +91,7 @@ export function max<E extends number>(
|
|
|
84
91
|
comparator?: (x: E, y: E) => number,
|
|
85
92
|
): Optional<E> {
|
|
86
93
|
const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
|
|
94
|
+
|
|
87
95
|
// Find max by finding min with an inverted comparator
|
|
88
96
|
return min(array, (x, y) => -cmp(x, y));
|
|
89
97
|
}
|
|
@@ -101,6 +109,7 @@ export function max<E extends number>(
|
|
|
101
109
|
* ] as const;
|
|
102
110
|
*
|
|
103
111
|
* const leastVisits = Arr.minBy(users, (user) => user.visits);
|
|
112
|
+
*
|
|
104
113
|
* const custom = Arr.minBy(
|
|
105
114
|
* users,
|
|
106
115
|
* (user) => user.visits,
|
|
@@ -108,6 +117,7 @@ export function max<E extends number>(
|
|
|
108
117
|
* );
|
|
109
118
|
*
|
|
110
119
|
* assert.deepStrictEqual(leastVisits, Optional.some({ id: 2, visits: 3 }));
|
|
120
|
+
*
|
|
111
121
|
* assert.deepStrictEqual(custom, Optional.some({ id: 1, visits: 10 }));
|
|
112
122
|
* ```
|
|
113
123
|
*/
|
|
@@ -148,6 +158,7 @@ export function minBy<E, V>(
|
|
|
148
158
|
* ];
|
|
149
159
|
*
|
|
150
160
|
* const mostStars = Arr.maxBy(projects, (project) => project.stars);
|
|
161
|
+
*
|
|
151
162
|
* const smallestStars = Arr.maxBy(
|
|
152
163
|
* projects,
|
|
153
164
|
* (project) => project.stars,
|
|
@@ -155,6 +166,7 @@ export function minBy<E, V>(
|
|
|
155
166
|
* );
|
|
156
167
|
*
|
|
157
168
|
* assert.deepStrictEqual(mostStars, Optional.some({ id: 'b', stars: 30 }));
|
|
169
|
+
*
|
|
158
170
|
* assert.deepStrictEqual(smallestStars, Optional.some({ id: 'a', stars: 10 }));
|
|
159
171
|
* ```
|
|
160
172
|
*/
|
|
@@ -191,9 +203,11 @@ export function maxBy<E, V>(
|
|
|
191
203
|
* const words = ['Ada', 'Grace', 'Linus'] as const;
|
|
192
204
|
*
|
|
193
205
|
* const longWords = Arr.count(words, (word) => word.length > 4);
|
|
206
|
+
*
|
|
194
207
|
* const withCurried = Arr.count<string>((word) => word.includes('a'))(words);
|
|
195
208
|
*
|
|
196
209
|
* assert(longWords === 2);
|
|
210
|
+
*
|
|
197
211
|
* assert(withCurried === 2);
|
|
198
212
|
* ```
|
|
199
213
|
*/
|
|
@@ -217,14 +231,17 @@ export function count<E>(
|
|
|
217
231
|
switch (args.length) {
|
|
218
232
|
case 2: {
|
|
219
233
|
const [array, predicate] = args;
|
|
234
|
+
|
|
220
235
|
return array.reduce<Uint32>(
|
|
221
236
|
(acc, curr, index) =>
|
|
222
237
|
predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc,
|
|
223
238
|
asUint32(0),
|
|
224
239
|
);
|
|
225
240
|
}
|
|
241
|
+
|
|
226
242
|
case 1: {
|
|
227
243
|
const [predicate] = args;
|
|
244
|
+
|
|
228
245
|
return (array) => count(array, predicate);
|
|
229
246
|
}
|
|
230
247
|
}
|
|
@@ -241,7 +258,9 @@ export function count<E>(
|
|
|
241
258
|
* const counts = Arr.countBy(words, (word) => word[0]);
|
|
242
259
|
*
|
|
243
260
|
* assert.deepStrictEqual(counts.get('A'), Optional.some(2));
|
|
261
|
+
*
|
|
244
262
|
* assert.deepStrictEqual(counts.get('G'), Optional.some(1));
|
|
263
|
+
*
|
|
245
264
|
* assert.deepStrictEqual(counts.get('B'), Optional.some(1));
|
|
246
265
|
* ```
|
|
247
266
|
*/
|
|
@@ -268,10 +287,12 @@ export function countBy<E, G extends MapSetKeyType>(
|
|
|
268
287
|
switch (args.length) {
|
|
269
288
|
case 2: {
|
|
270
289
|
const [array, grouper] = args;
|
|
290
|
+
|
|
271
291
|
const mut_groups = new Map<G, SizeType.Arr>();
|
|
272
292
|
|
|
273
293
|
for (const [index, e] of array.entries()) {
|
|
274
294
|
const key = grouper(e, asUint32(index));
|
|
295
|
+
|
|
275
296
|
const curr = mut_groups.get(key) ?? 0;
|
|
276
297
|
|
|
277
298
|
mut_groups.set(key, asUint32(curr + 1));
|
|
@@ -279,8 +300,10 @@ export function countBy<E, G extends MapSetKeyType>(
|
|
|
279
300
|
|
|
280
301
|
return IMap.create(mut_groups);
|
|
281
302
|
}
|
|
303
|
+
|
|
282
304
|
case 1: {
|
|
283
305
|
const [grouper] = args;
|
|
306
|
+
|
|
284
307
|
return (array) => countBy(array, grouper);
|
|
285
308
|
}
|
|
286
309
|
}
|
|
@@ -295,12 +318,14 @@ export function countBy<E, G extends MapSetKeyType>(
|
|
|
295
318
|
* const words = ['Ada', 'Lovelace'];
|
|
296
319
|
*
|
|
297
320
|
* const totalLength = Arr.foldl(words, (acc, word) => acc + word.length, 0);
|
|
321
|
+
*
|
|
298
322
|
* const concat = Arr.foldl<string | number, string>(
|
|
299
323
|
* (acc, value) => `${acc}-${value}`,
|
|
300
324
|
* 'items',
|
|
301
325
|
* )(words);
|
|
302
326
|
*
|
|
303
327
|
* assert(totalLength === 11);
|
|
328
|
+
*
|
|
304
329
|
* assert(concat === 'items-Ada-Lovelace');
|
|
305
330
|
* ```
|
|
306
331
|
*/
|
|
@@ -346,13 +371,16 @@ export function foldl<E, P>(
|
|
|
346
371
|
switch (args.length) {
|
|
347
372
|
case 3: {
|
|
348
373
|
const [array, callbackfn, initialValue] = args;
|
|
374
|
+
|
|
349
375
|
return array.reduce(
|
|
350
376
|
(prev, curr, index) => callbackfn(prev, curr, asUint32(index)),
|
|
351
377
|
initialValue,
|
|
352
378
|
);
|
|
353
379
|
}
|
|
380
|
+
|
|
354
381
|
case 2: {
|
|
355
382
|
const [callbackfn, initialValue] = args;
|
|
383
|
+
|
|
356
384
|
return (array) => foldl(array, callbackfn, initialValue);
|
|
357
385
|
}
|
|
358
386
|
}
|
|
@@ -367,12 +395,14 @@ export function foldl<E, P>(
|
|
|
367
395
|
* const numbers = [1, 2, 3];
|
|
368
396
|
*
|
|
369
397
|
* const subtractRight = Arr.foldr(numbers, (acc, value) => acc - value, 0);
|
|
398
|
+
*
|
|
370
399
|
* const joinFromRight = Arr.foldr<number, string>(
|
|
371
400
|
* (acc, value) => `${acc}${value}`,
|
|
372
401
|
* '',
|
|
373
402
|
* )(numbers);
|
|
374
403
|
*
|
|
375
404
|
* assert(subtractRight === -6);
|
|
405
|
+
*
|
|
376
406
|
* assert(joinFromRight === '321');
|
|
377
407
|
* ```
|
|
378
408
|
*/
|
|
@@ -418,13 +448,16 @@ export function foldr<E, P>(
|
|
|
418
448
|
switch (args.length) {
|
|
419
449
|
case 3: {
|
|
420
450
|
const [array, callbackfn, initialValue] = args;
|
|
451
|
+
|
|
421
452
|
return array.reduceRight(
|
|
422
453
|
(prev, curr, index) => callbackfn(prev, curr, asUint32(index)),
|
|
423
454
|
initialValue,
|
|
424
455
|
);
|
|
425
456
|
}
|
|
457
|
+
|
|
426
458
|
case 2: {
|
|
427
459
|
const [callbackfn, initialValue] = args;
|
|
460
|
+
|
|
428
461
|
return (array) => foldr(array, callbackfn, initialValue);
|
|
429
462
|
}
|
|
430
463
|
}
|
|
@@ -437,12 +470,15 @@ export function foldr<E, P>(
|
|
|
437
470
|
*
|
|
438
471
|
* ```ts
|
|
439
472
|
* const numbers = [1, 2, 3, 4] as const;
|
|
473
|
+
*
|
|
440
474
|
* const negatives = [3, -2, 5] as const;
|
|
441
475
|
*
|
|
442
476
|
* const total = Arr.sum(numbers);
|
|
477
|
+
*
|
|
443
478
|
* const totalNegatives = Arr.sum(negatives);
|
|
444
479
|
*
|
|
445
480
|
* assert(total === 10);
|
|
481
|
+
*
|
|
446
482
|
* assert(totalNegatives === 6);
|
|
447
483
|
* ```
|
|
448
484
|
*/
|
|
@@ -469,50 +505,59 @@ export function sum(array: readonly number[]): number {
|
|
|
469
505
|
* const numbers = [1, 2, 3] as const;
|
|
470
506
|
*
|
|
471
507
|
* const defaultSeparator = Arr.join(numbers);
|
|
508
|
+
*
|
|
472
509
|
* const hyphenSeparated = Arr.join(numbers, '-');
|
|
473
510
|
*
|
|
474
511
|
* assert.deepStrictEqual(defaultSeparator, Result.ok('1,2,3'));
|
|
512
|
+
*
|
|
475
513
|
* assert.deepStrictEqual(hyphenSeparated, Result.ok('1-2-3'));
|
|
476
514
|
* ```
|
|
477
515
|
*/
|
|
478
|
-
export function join
|
|
479
|
-
array: readonly
|
|
516
|
+
export function join(
|
|
517
|
+
array: readonly unknown[],
|
|
480
518
|
separator?: string,
|
|
481
519
|
): Result<string, Error>;
|
|
482
520
|
|
|
483
521
|
export function join(
|
|
484
522
|
separator?: string,
|
|
485
|
-
):
|
|
523
|
+
): (array: readonly unknown[]) => Result<string, Error>;
|
|
486
524
|
|
|
487
|
-
export function join
|
|
525
|
+
export function join(
|
|
488
526
|
...args:
|
|
489
|
-
| readonly [array: readonly
|
|
527
|
+
| readonly [array: readonly unknown[], separator?: string]
|
|
490
528
|
| readonly [separator?: string]
|
|
491
|
-
):
|
|
529
|
+
):
|
|
530
|
+
| Result<string, Error>
|
|
531
|
+
| ((array: readonly unknown[]) => Result<string, Error>) {
|
|
492
532
|
switch (args.length) {
|
|
493
533
|
case 0:
|
|
494
534
|
return (array) => joinImpl(array, undefined);
|
|
495
535
|
|
|
496
536
|
case 1: {
|
|
497
537
|
const [arg] = args;
|
|
538
|
+
|
|
498
539
|
if (isString(arg) || isUndefined(arg)) {
|
|
499
540
|
return (array) => joinImpl(array, arg);
|
|
500
541
|
}
|
|
542
|
+
|
|
501
543
|
return joinImpl(arg, undefined);
|
|
502
544
|
}
|
|
545
|
+
|
|
503
546
|
case 2: {
|
|
504
547
|
const [array, separator] = args;
|
|
548
|
+
|
|
505
549
|
return joinImpl(array, separator);
|
|
506
550
|
}
|
|
507
551
|
}
|
|
508
552
|
}
|
|
509
553
|
|
|
510
|
-
const joinImpl =
|
|
511
|
-
array: readonly
|
|
554
|
+
const joinImpl = (
|
|
555
|
+
array: readonly unknown[],
|
|
512
556
|
separator: string | undefined,
|
|
513
557
|
): Result<string, Error> => {
|
|
514
558
|
try {
|
|
515
559
|
const result = array.join(separator);
|
|
560
|
+
|
|
516
561
|
return Result.ok(result);
|
|
517
562
|
} catch (error) {
|
|
518
563
|
return Result.err(
|
|
@@ -18,6 +18,7 @@ describe('Arr reducing value', () => {
|
|
|
18
18
|
describe(min, () => {
|
|
19
19
|
{
|
|
20
20
|
const xs = [3, 5, 4] as const;
|
|
21
|
+
|
|
21
22
|
const result = min(xs);
|
|
22
23
|
|
|
23
24
|
expectType<typeof result, Some<3 | 4 | 5>>('=');
|
|
@@ -30,8 +31,10 @@ describe('Arr reducing value', () => {
|
|
|
30
31
|
}
|
|
31
32
|
});
|
|
32
33
|
}
|
|
34
|
+
|
|
33
35
|
{
|
|
34
36
|
const xs = [3, 5, 4] as const;
|
|
37
|
+
|
|
35
38
|
const result = min(xs, (a, b) => a - b);
|
|
36
39
|
|
|
37
40
|
expectType<typeof result, Some<3 | 4 | 5>>('=');
|
|
@@ -44,8 +47,10 @@ describe('Arr reducing value', () => {
|
|
|
44
47
|
}
|
|
45
48
|
});
|
|
46
49
|
}
|
|
50
|
+
|
|
47
51
|
{
|
|
48
52
|
const xs: readonly (3 | 4 | 5)[] = [3, 5, 4] as const;
|
|
53
|
+
|
|
49
54
|
const result = min(xs, (a, b) => a - b);
|
|
50
55
|
|
|
51
56
|
expectType<typeof result, Optional<3 | 4 | 5>>('=');
|
|
@@ -62,6 +67,7 @@ describe('Arr reducing value', () => {
|
|
|
62
67
|
|
|
63
68
|
describe(max, () => {
|
|
64
69
|
const xs = [3, 5, 4] as const;
|
|
70
|
+
|
|
65
71
|
const result = max(xs, (a, b) => a - b);
|
|
66
72
|
|
|
67
73
|
expectType<typeof result, Some<3 | 4 | 5>>('=');
|
|
@@ -76,6 +82,7 @@ describe('Arr reducing value', () => {
|
|
|
76
82
|
|
|
77
83
|
test('case 2: no comparator', () => {
|
|
78
84
|
const res = max(xs);
|
|
85
|
+
|
|
79
86
|
expectType<typeof res, Some<3 | 4 | 5>>('=');
|
|
80
87
|
|
|
81
88
|
expect(Optional.isSome(res)).toBe(true);
|
|
@@ -87,7 +94,9 @@ describe('Arr reducing value', () => {
|
|
|
87
94
|
|
|
88
95
|
test('case 3: readonly array', () => {
|
|
89
96
|
const arr: readonly number[] = [1, 5, 2];
|
|
97
|
+
|
|
90
98
|
const res = max(arr);
|
|
99
|
+
|
|
91
100
|
expectType<typeof res, Optional<number>>('=');
|
|
92
101
|
|
|
93
102
|
expect(Optional.isSome(res)).toBe(true);
|
|
@@ -99,7 +108,9 @@ describe('Arr reducing value', () => {
|
|
|
99
108
|
|
|
100
109
|
test('case 4: empty array', () => {
|
|
101
110
|
const arr: readonly number[] = [];
|
|
111
|
+
|
|
102
112
|
const res = max(arr);
|
|
113
|
+
|
|
103
114
|
expectType<typeof res, Optional<number>>('=');
|
|
104
115
|
|
|
105
116
|
expect(Optional.isNone(res)).toBe(true);
|
|
@@ -142,7 +153,9 @@ describe('Arr reducing value', () => {
|
|
|
142
153
|
|
|
143
154
|
test('case 2: empty array', () => {
|
|
144
155
|
const arr: readonly { x: number }[] = [];
|
|
156
|
+
|
|
145
157
|
const res = minBy(arr, (a) => a.x);
|
|
158
|
+
|
|
146
159
|
expectType<typeof res, Optional<{ x: number }>>('=');
|
|
147
160
|
|
|
148
161
|
expect(Optional.isNone(res)).toBe(true);
|
|
@@ -216,7 +229,9 @@ describe('Arr reducing value', () => {
|
|
|
216
229
|
|
|
217
230
|
test('case 2: empty array', () => {
|
|
218
231
|
const arr: readonly { x: number }[] = [];
|
|
232
|
+
|
|
219
233
|
const res = maxBy(arr, (a) => a.x);
|
|
234
|
+
|
|
220
235
|
expectType<typeof res, Optional<{ x: number }>>('=');
|
|
221
236
|
|
|
222
237
|
expect(Optional.isNone(res)).toBe(true);
|
|
@@ -274,11 +289,21 @@ describe('Arr reducing value', () => {
|
|
|
274
289
|
|
|
275
290
|
test('case 2: empty array', () => {
|
|
276
291
|
const arr: readonly number[] = [];
|
|
292
|
+
|
|
277
293
|
const res = count(arr, (x) => x > 0);
|
|
294
|
+
|
|
278
295
|
expectType<typeof res, Uint32>('=');
|
|
279
296
|
|
|
280
297
|
expect(res).toBe(0);
|
|
281
298
|
});
|
|
299
|
+
|
|
300
|
+
test('should work with curried version', () => {
|
|
301
|
+
const countEven = count((x: number) => x % 2 === 0);
|
|
302
|
+
|
|
303
|
+
const res = countEven([1, 2, 3, 4, 5, 6]);
|
|
304
|
+
|
|
305
|
+
expect(res).toBe(3);
|
|
306
|
+
});
|
|
282
307
|
});
|
|
283
308
|
|
|
284
309
|
describe(countBy, () => {
|
|
@@ -308,16 +333,41 @@ describe('Arr reducing value', () => {
|
|
|
308
333
|
|
|
309
334
|
test('case 2: empty array', () => {
|
|
310
335
|
const arr: readonly { x: number }[] = [];
|
|
336
|
+
|
|
311
337
|
const res = countBy(arr, (a) => a.x);
|
|
338
|
+
|
|
312
339
|
expectType<typeof res, IMap<number, Uint32>>('=');
|
|
313
340
|
|
|
314
341
|
expect(res.size).toBe(0);
|
|
315
342
|
});
|
|
343
|
+
|
|
344
|
+
test('should work with curried version', () => {
|
|
345
|
+
const groupByParity = countBy((x: number) => x % 2);
|
|
346
|
+
|
|
347
|
+
const res = groupByParity([1, 2, 3, 4, 5, 6]);
|
|
348
|
+
|
|
349
|
+
const even = res.get(0);
|
|
350
|
+
|
|
351
|
+
expect(Optional.isSome(even)).toBe(true);
|
|
352
|
+
|
|
353
|
+
if (Optional.isSome(even)) {
|
|
354
|
+
expect(even.value).toBe(3);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
const odd = res.get(1);
|
|
358
|
+
|
|
359
|
+
expect(Optional.isSome(odd)).toBe(true);
|
|
360
|
+
|
|
361
|
+
if (Optional.isSome(odd)) {
|
|
362
|
+
expect(odd.value).toBe(3);
|
|
363
|
+
}
|
|
364
|
+
});
|
|
316
365
|
});
|
|
317
366
|
|
|
318
367
|
describe(foldl, () => {
|
|
319
368
|
test('empty array', () => {
|
|
320
369
|
const result = foldl([], (acc, curr: number) => acc + curr, 0);
|
|
370
|
+
|
|
321
371
|
expectType<typeof result, number>('=');
|
|
322
372
|
|
|
323
373
|
expect(result).toBe(0);
|
|
@@ -325,6 +375,7 @@ describe('Arr reducing value', () => {
|
|
|
325
375
|
|
|
326
376
|
test('sum numbers', () => {
|
|
327
377
|
const result = foldl([1, 2, 3] as const, (acc, curr) => acc + curr, 0);
|
|
378
|
+
|
|
328
379
|
expectType<typeof result, number>('=');
|
|
329
380
|
|
|
330
381
|
expect(result).toBe(6);
|
|
@@ -336,15 +387,25 @@ describe('Arr reducing value', () => {
|
|
|
336
387
|
(acc, curr) => acc + curr,
|
|
337
388
|
'',
|
|
338
389
|
);
|
|
390
|
+
|
|
339
391
|
expectType<typeof result, string>('=');
|
|
340
392
|
|
|
341
393
|
expect(result).toBe('abc');
|
|
342
394
|
});
|
|
395
|
+
|
|
396
|
+
test('should work with curried version', () => {
|
|
397
|
+
const sumReduce = foldl((acc: number, curr: number) => acc + curr, 0);
|
|
398
|
+
|
|
399
|
+
const result = sumReduce([1, 2, 3, 4]);
|
|
400
|
+
|
|
401
|
+
expect(result).toBe(10);
|
|
402
|
+
});
|
|
343
403
|
});
|
|
344
404
|
|
|
345
405
|
describe(foldr, () => {
|
|
346
406
|
test('empty array', () => {
|
|
347
407
|
const result = foldr([], (acc, curr: number) => acc + curr, 0);
|
|
408
|
+
|
|
348
409
|
expectType<typeof result, number>('=');
|
|
349
410
|
|
|
350
411
|
expect(result).toBe(0);
|
|
@@ -353,6 +414,7 @@ describe('Arr reducing value', () => {
|
|
|
353
414
|
test('subtract numbers from right', () => {
|
|
354
415
|
// (1 - (2 - (3 - 0))) = 1 - (2 - 3) = 1 - (-1) = 2
|
|
355
416
|
const result = foldr([1, 2, 3] as const, (acc, curr) => curr - acc, 0);
|
|
417
|
+
|
|
356
418
|
expectType<typeof result, number>('=');
|
|
357
419
|
|
|
358
420
|
expect(result).toBe(2); // 3 - (2 - (1 - 0)) = 3 - (2 - 1) = 3 - 1 = 2. No, this is (acc, curr) => acc - curr.
|
|
@@ -369,6 +431,7 @@ describe('Arr reducing value', () => {
|
|
|
369
431
|
(acc, curr) => curr + acc,
|
|
370
432
|
'',
|
|
371
433
|
);
|
|
434
|
+
|
|
372
435
|
expectType<typeof result, string>('=');
|
|
373
436
|
|
|
374
437
|
expect(result).toBe('abc'); // c + (b + (a + "")) = cba. No, it's curr + acc.
|
|
@@ -376,11 +439,20 @@ describe('Arr reducing value', () => {
|
|
|
376
439
|
// Iteration 2: prev = "c", curr = "b". Result = "b" + "c" = "bc".
|
|
377
440
|
// Iteration 3: prev = "bc", curr = "a". Result = "a" + "bc" = "abc".
|
|
378
441
|
});
|
|
442
|
+
|
|
443
|
+
test('should work with curried version', () => {
|
|
444
|
+
const productReduce = foldr((acc: number, curr: number) => acc * curr, 1);
|
|
445
|
+
|
|
446
|
+
const result = productReduce([2, 3, 4]);
|
|
447
|
+
|
|
448
|
+
expect(result).toBe(24); // 1 * 4 * 3 * 2 = 24
|
|
449
|
+
});
|
|
379
450
|
});
|
|
380
451
|
|
|
381
452
|
describe(sum, () => {
|
|
382
453
|
test('empty array', () => {
|
|
383
454
|
const result = sum([]);
|
|
455
|
+
|
|
384
456
|
expectType<typeof result, 0>('=');
|
|
385
457
|
|
|
386
458
|
expect(result).toBe(0);
|
|
@@ -388,6 +460,7 @@ describe('Arr reducing value', () => {
|
|
|
388
460
|
|
|
389
461
|
test('one element array', () => {
|
|
390
462
|
const result = sum([23]);
|
|
463
|
+
|
|
391
464
|
expectType<typeof result, 23>('=');
|
|
392
465
|
|
|
393
466
|
expect(result).toBe(23);
|
|
@@ -395,6 +468,7 @@ describe('Arr reducing value', () => {
|
|
|
395
468
|
|
|
396
469
|
test('positive numbers', () => {
|
|
397
470
|
const result = sum([1, 2, 3, 4, 5] as const);
|
|
471
|
+
|
|
398
472
|
expectType<typeof result, number>('=');
|
|
399
473
|
|
|
400
474
|
expect(result).toBe(15);
|
|
@@ -402,6 +476,7 @@ describe('Arr reducing value', () => {
|
|
|
402
476
|
|
|
403
477
|
test('mixed numbers', () => {
|
|
404
478
|
const result = sum([1, -2, 3, 0, -5] as const);
|
|
479
|
+
|
|
405
480
|
expectType<typeof result, number>('=');
|
|
406
481
|
|
|
407
482
|
expect(result).toBe(-3);
|
|
@@ -411,6 +486,7 @@ describe('Arr reducing value', () => {
|
|
|
411
486
|
describe(join, () => {
|
|
412
487
|
test('should join array elements', () => {
|
|
413
488
|
const arr = ['Hello', 'World'];
|
|
489
|
+
|
|
414
490
|
const result = join(arr, ' ');
|
|
415
491
|
|
|
416
492
|
expect(Result.isOk(result)).toBe(true);
|
|
@@ -422,6 +498,7 @@ describe('Arr reducing value', () => {
|
|
|
422
498
|
|
|
423
499
|
test('should handle empty separator', () => {
|
|
424
500
|
const arr = ['a', 'b', 'c'];
|
|
501
|
+
|
|
425
502
|
const result = join(arr, '');
|
|
426
503
|
|
|
427
504
|
expect(Result.isOk(result)).toBe(true);
|
|
@@ -433,6 +510,7 @@ describe('Arr reducing value', () => {
|
|
|
433
510
|
|
|
434
511
|
test('should handle undefined separator', () => {
|
|
435
512
|
const arr = ['a', 'b', 'c'];
|
|
513
|
+
|
|
436
514
|
const result = join(arr);
|
|
437
515
|
|
|
438
516
|
expect(Result.isOk(result)).toBe(true);
|
|
@@ -441,5 +519,17 @@ describe('Arr reducing value', () => {
|
|
|
441
519
|
expect(result.value).toBe('a,b,c');
|
|
442
520
|
}
|
|
443
521
|
});
|
|
522
|
+
|
|
523
|
+
test('should work with curried version', () => {
|
|
524
|
+
const joinWithDash = join('-');
|
|
525
|
+
|
|
526
|
+
const result = joinWithDash(['x', 'y', 'z']);
|
|
527
|
+
|
|
528
|
+
expect(Result.isOk(result)).toBe(true);
|
|
529
|
+
|
|
530
|
+
if (Result.isOk(result)) {
|
|
531
|
+
expect(result.value).toBe('x-y-z');
|
|
532
|
+
}
|
|
533
|
+
});
|
|
444
534
|
});
|
|
445
535
|
});
|