ts-data-forge 5.0.0 → 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 +7 -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 +1 -0
- 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 +2 -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 +1 -0
- 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 +7 -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 +1 -0
- 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 +3 -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 +9 -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 +8 -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 +4 -1
- 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 +4 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +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 +22 -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 +23 -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 +2 -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 +5 -0
- package/dist/promise/promise.mjs.map +1 -1
- package/package.json +20 -24
- 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 +55 -9
- 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 +6 -1
- 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 +5 -1
- package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +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 +4 -1
- 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)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isError } from '@sindresorhus/is';
|
|
1
2
|
import { IMap } from '../../collections/index.mjs';
|
|
2
3
|
import { Optional, Result } from '../../functional/index.mjs';
|
|
3
4
|
import { isString, isUndefined } from '../../guard/index.mjs';
|
|
@@ -12,14 +13,19 @@ import { isNonEmpty } from './array-utils-validation.mjs';
|
|
|
12
13
|
*
|
|
13
14
|
* ```ts
|
|
14
15
|
* const values = [5, 3, 9] as const;
|
|
16
|
+
*
|
|
15
17
|
* const empty: readonly number[] = [];
|
|
16
18
|
*
|
|
17
19
|
* const smallest = Arr.min(values);
|
|
20
|
+
*
|
|
18
21
|
* const none = Arr.min(empty);
|
|
22
|
+
*
|
|
19
23
|
* const custom = Arr.min(values, (a, b) => b - a);
|
|
20
24
|
*
|
|
21
25
|
* assert.deepStrictEqual(smallest, Optional.some(3));
|
|
26
|
+
*
|
|
22
27
|
* assert.deepStrictEqual(none, Optional.none);
|
|
28
|
+
*
|
|
23
29
|
* assert.deepStrictEqual(custom, Optional.some(9));
|
|
24
30
|
* ```
|
|
25
31
|
*/
|
|
@@ -61,9 +67,11 @@ export function min<E extends number>(
|
|
|
61
67
|
* const values = [5, 3, 9];
|
|
62
68
|
*
|
|
63
69
|
* const largest = Arr.max(values);
|
|
70
|
+
*
|
|
64
71
|
* const reversed = Arr.max(values, (a, b) => b - a);
|
|
65
72
|
*
|
|
66
73
|
* assert.deepStrictEqual(largest, Optional.some(9));
|
|
74
|
+
*
|
|
67
75
|
* assert.deepStrictEqual(reversed, Optional.some(3));
|
|
68
76
|
* ```
|
|
69
77
|
*/
|
|
@@ -83,6 +91,7 @@ export function max<E extends number>(
|
|
|
83
91
|
comparator?: (x: E, y: E) => number,
|
|
84
92
|
): Optional<E> {
|
|
85
93
|
const cmp = comparator ?? ((x, y) => Num.from(x) - Num.from(y));
|
|
94
|
+
|
|
86
95
|
// Find max by finding min with an inverted comparator
|
|
87
96
|
return min(array, (x, y) => -cmp(x, y));
|
|
88
97
|
}
|
|
@@ -100,6 +109,7 @@ export function max<E extends number>(
|
|
|
100
109
|
* ] as const;
|
|
101
110
|
*
|
|
102
111
|
* const leastVisits = Arr.minBy(users, (user) => user.visits);
|
|
112
|
+
*
|
|
103
113
|
* const custom = Arr.minBy(
|
|
104
114
|
* users,
|
|
105
115
|
* (user) => user.visits,
|
|
@@ -107,6 +117,7 @@ export function max<E extends number>(
|
|
|
107
117
|
* );
|
|
108
118
|
*
|
|
109
119
|
* assert.deepStrictEqual(leastVisits, Optional.some({ id: 2, visits: 3 }));
|
|
120
|
+
*
|
|
110
121
|
* assert.deepStrictEqual(custom, Optional.some({ id: 1, visits: 10 }));
|
|
111
122
|
* ```
|
|
112
123
|
*/
|
|
@@ -147,6 +158,7 @@ export function minBy<E, V>(
|
|
|
147
158
|
* ];
|
|
148
159
|
*
|
|
149
160
|
* const mostStars = Arr.maxBy(projects, (project) => project.stars);
|
|
161
|
+
*
|
|
150
162
|
* const smallestStars = Arr.maxBy(
|
|
151
163
|
* projects,
|
|
152
164
|
* (project) => project.stars,
|
|
@@ -154,6 +166,7 @@ export function minBy<E, V>(
|
|
|
154
166
|
* );
|
|
155
167
|
*
|
|
156
168
|
* assert.deepStrictEqual(mostStars, Optional.some({ id: 'b', stars: 30 }));
|
|
169
|
+
*
|
|
157
170
|
* assert.deepStrictEqual(smallestStars, Optional.some({ id: 'a', stars: 10 }));
|
|
158
171
|
* ```
|
|
159
172
|
*/
|
|
@@ -190,9 +203,11 @@ export function maxBy<E, V>(
|
|
|
190
203
|
* const words = ['Ada', 'Grace', 'Linus'] as const;
|
|
191
204
|
*
|
|
192
205
|
* const longWords = Arr.count(words, (word) => word.length > 4);
|
|
206
|
+
*
|
|
193
207
|
* const withCurried = Arr.count<string>((word) => word.includes('a'))(words);
|
|
194
208
|
*
|
|
195
209
|
* assert(longWords === 2);
|
|
210
|
+
*
|
|
196
211
|
* assert(withCurried === 2);
|
|
197
212
|
* ```
|
|
198
213
|
*/
|
|
@@ -216,14 +231,17 @@ export function count<E>(
|
|
|
216
231
|
switch (args.length) {
|
|
217
232
|
case 2: {
|
|
218
233
|
const [array, predicate] = args;
|
|
234
|
+
|
|
219
235
|
return array.reduce<Uint32>(
|
|
220
236
|
(acc, curr, index) =>
|
|
221
237
|
predicate(curr, asUint32(index)) ? Uint32.add(acc, 1) : acc,
|
|
222
238
|
asUint32(0),
|
|
223
239
|
);
|
|
224
240
|
}
|
|
241
|
+
|
|
225
242
|
case 1: {
|
|
226
243
|
const [predicate] = args;
|
|
244
|
+
|
|
227
245
|
return (array) => count(array, predicate);
|
|
228
246
|
}
|
|
229
247
|
}
|
|
@@ -240,7 +258,9 @@ export function count<E>(
|
|
|
240
258
|
* const counts = Arr.countBy(words, (word) => word[0]);
|
|
241
259
|
*
|
|
242
260
|
* assert.deepStrictEqual(counts.get('A'), Optional.some(2));
|
|
261
|
+
*
|
|
243
262
|
* assert.deepStrictEqual(counts.get('G'), Optional.some(1));
|
|
263
|
+
*
|
|
244
264
|
* assert.deepStrictEqual(counts.get('B'), Optional.some(1));
|
|
245
265
|
* ```
|
|
246
266
|
*/
|
|
@@ -267,10 +287,12 @@ export function countBy<E, G extends MapSetKeyType>(
|
|
|
267
287
|
switch (args.length) {
|
|
268
288
|
case 2: {
|
|
269
289
|
const [array, grouper] = args;
|
|
290
|
+
|
|
270
291
|
const mut_groups = new Map<G, SizeType.Arr>();
|
|
271
292
|
|
|
272
293
|
for (const [index, e] of array.entries()) {
|
|
273
294
|
const key = grouper(e, asUint32(index));
|
|
295
|
+
|
|
274
296
|
const curr = mut_groups.get(key) ?? 0;
|
|
275
297
|
|
|
276
298
|
mut_groups.set(key, asUint32(curr + 1));
|
|
@@ -278,8 +300,10 @@ export function countBy<E, G extends MapSetKeyType>(
|
|
|
278
300
|
|
|
279
301
|
return IMap.create(mut_groups);
|
|
280
302
|
}
|
|
303
|
+
|
|
281
304
|
case 1: {
|
|
282
305
|
const [grouper] = args;
|
|
306
|
+
|
|
283
307
|
return (array) => countBy(array, grouper);
|
|
284
308
|
}
|
|
285
309
|
}
|
|
@@ -294,12 +318,14 @@ export function countBy<E, G extends MapSetKeyType>(
|
|
|
294
318
|
* const words = ['Ada', 'Lovelace'];
|
|
295
319
|
*
|
|
296
320
|
* const totalLength = Arr.foldl(words, (acc, word) => acc + word.length, 0);
|
|
321
|
+
*
|
|
297
322
|
* const concat = Arr.foldl<string | number, string>(
|
|
298
323
|
* (acc, value) => `${acc}-${value}`,
|
|
299
324
|
* 'items',
|
|
300
325
|
* )(words);
|
|
301
326
|
*
|
|
302
327
|
* assert(totalLength === 11);
|
|
328
|
+
*
|
|
303
329
|
* assert(concat === 'items-Ada-Lovelace');
|
|
304
330
|
* ```
|
|
305
331
|
*/
|
|
@@ -345,13 +371,16 @@ export function foldl<E, P>(
|
|
|
345
371
|
switch (args.length) {
|
|
346
372
|
case 3: {
|
|
347
373
|
const [array, callbackfn, initialValue] = args;
|
|
374
|
+
|
|
348
375
|
return array.reduce(
|
|
349
376
|
(prev, curr, index) => callbackfn(prev, curr, asUint32(index)),
|
|
350
377
|
initialValue,
|
|
351
378
|
);
|
|
352
379
|
}
|
|
380
|
+
|
|
353
381
|
case 2: {
|
|
354
382
|
const [callbackfn, initialValue] = args;
|
|
383
|
+
|
|
355
384
|
return (array) => foldl(array, callbackfn, initialValue);
|
|
356
385
|
}
|
|
357
386
|
}
|
|
@@ -366,12 +395,14 @@ export function foldl<E, P>(
|
|
|
366
395
|
* const numbers = [1, 2, 3];
|
|
367
396
|
*
|
|
368
397
|
* const subtractRight = Arr.foldr(numbers, (acc, value) => acc - value, 0);
|
|
398
|
+
*
|
|
369
399
|
* const joinFromRight = Arr.foldr<number, string>(
|
|
370
400
|
* (acc, value) => `${acc}${value}`,
|
|
371
401
|
* '',
|
|
372
402
|
* )(numbers);
|
|
373
403
|
*
|
|
374
404
|
* assert(subtractRight === -6);
|
|
405
|
+
*
|
|
375
406
|
* assert(joinFromRight === '321');
|
|
376
407
|
* ```
|
|
377
408
|
*/
|
|
@@ -417,13 +448,16 @@ export function foldr<E, P>(
|
|
|
417
448
|
switch (args.length) {
|
|
418
449
|
case 3: {
|
|
419
450
|
const [array, callbackfn, initialValue] = args;
|
|
451
|
+
|
|
420
452
|
return array.reduceRight(
|
|
421
453
|
(prev, curr, index) => callbackfn(prev, curr, asUint32(index)),
|
|
422
454
|
initialValue,
|
|
423
455
|
);
|
|
424
456
|
}
|
|
457
|
+
|
|
425
458
|
case 2: {
|
|
426
459
|
const [callbackfn, initialValue] = args;
|
|
460
|
+
|
|
427
461
|
return (array) => foldr(array, callbackfn, initialValue);
|
|
428
462
|
}
|
|
429
463
|
}
|
|
@@ -436,12 +470,15 @@ export function foldr<E, P>(
|
|
|
436
470
|
*
|
|
437
471
|
* ```ts
|
|
438
472
|
* const numbers = [1, 2, 3, 4] as const;
|
|
473
|
+
*
|
|
439
474
|
* const negatives = [3, -2, 5] as const;
|
|
440
475
|
*
|
|
441
476
|
* const total = Arr.sum(numbers);
|
|
477
|
+
*
|
|
442
478
|
* const totalNegatives = Arr.sum(negatives);
|
|
443
479
|
*
|
|
444
480
|
* assert(total === 10);
|
|
481
|
+
*
|
|
445
482
|
* assert(totalNegatives === 6);
|
|
446
483
|
* ```
|
|
447
484
|
*/
|
|
@@ -468,54 +505,63 @@ export function sum(array: readonly number[]): number {
|
|
|
468
505
|
* const numbers = [1, 2, 3] as const;
|
|
469
506
|
*
|
|
470
507
|
* const defaultSeparator = Arr.join(numbers);
|
|
508
|
+
*
|
|
471
509
|
* const hyphenSeparated = Arr.join(numbers, '-');
|
|
472
510
|
*
|
|
473
511
|
* assert.deepStrictEqual(defaultSeparator, Result.ok('1,2,3'));
|
|
512
|
+
*
|
|
474
513
|
* assert.deepStrictEqual(hyphenSeparated, Result.ok('1-2-3'));
|
|
475
514
|
* ```
|
|
476
515
|
*/
|
|
477
|
-
export function join
|
|
478
|
-
array: readonly
|
|
516
|
+
export function join(
|
|
517
|
+
array: readonly unknown[],
|
|
479
518
|
separator?: string,
|
|
480
519
|
): Result<string, Error>;
|
|
481
520
|
|
|
482
521
|
export function join(
|
|
483
522
|
separator?: string,
|
|
484
|
-
):
|
|
523
|
+
): (array: readonly unknown[]) => Result<string, Error>;
|
|
485
524
|
|
|
486
|
-
export function join
|
|
525
|
+
export function join(
|
|
487
526
|
...args:
|
|
488
|
-
| readonly [array: readonly
|
|
527
|
+
| readonly [array: readonly unknown[], separator?: string]
|
|
489
528
|
| readonly [separator?: string]
|
|
490
|
-
):
|
|
529
|
+
):
|
|
530
|
+
| Result<string, Error>
|
|
531
|
+
| ((array: readonly unknown[]) => Result<string, Error>) {
|
|
491
532
|
switch (args.length) {
|
|
492
533
|
case 0:
|
|
493
534
|
return (array) => joinImpl(array, undefined);
|
|
494
535
|
|
|
495
536
|
case 1: {
|
|
496
537
|
const [arg] = args;
|
|
538
|
+
|
|
497
539
|
if (isString(arg) || isUndefined(arg)) {
|
|
498
540
|
return (array) => joinImpl(array, arg);
|
|
499
541
|
}
|
|
542
|
+
|
|
500
543
|
return joinImpl(arg, undefined);
|
|
501
544
|
}
|
|
545
|
+
|
|
502
546
|
case 2: {
|
|
503
547
|
const [array, separator] = args;
|
|
548
|
+
|
|
504
549
|
return joinImpl(array, separator);
|
|
505
550
|
}
|
|
506
551
|
}
|
|
507
552
|
}
|
|
508
553
|
|
|
509
|
-
const joinImpl =
|
|
510
|
-
array: readonly
|
|
554
|
+
const joinImpl = (
|
|
555
|
+
array: readonly unknown[],
|
|
511
556
|
separator: string | undefined,
|
|
512
557
|
): Result<string, Error> => {
|
|
513
558
|
try {
|
|
514
559
|
const result = array.join(separator);
|
|
560
|
+
|
|
515
561
|
return Result.ok(result);
|
|
516
562
|
} catch (error) {
|
|
517
563
|
return Result.err(
|
|
518
|
-
|
|
564
|
+
isError(error) ? error : new Error(unknownToString(error)),
|
|
519
565
|
);
|
|
520
566
|
}
|
|
521
567
|
};
|
|
@@ -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
|
});
|