ts-data-forge 5.0.1 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -50
- package/dist/array/impl/array-utils-creation.d.mts +14 -0
- package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-creation.mjs +12 -0
- package/dist/array/impl/array-utils-creation.mjs.map +1 -1
- package/dist/array/impl/array-utils-element-access.d.mts +10 -0
- package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
- package/dist/array/impl/array-utils-element-access.mjs +6 -0
- package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
- package/dist/array/impl/array-utils-modification.d.mts +14 -0
- package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
- package/dist/array/impl/array-utils-modification.mjs.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.d.mts +34 -10
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.d.mts +34 -4
- package/dist/array/impl/array-utils-search.d.mts.map +1 -1
- package/dist/array/impl/array-utils-search.mjs.map +1 -1
- package/dist/array/impl/array-utils-set-op.d.mts +20 -7
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
- package/dist/array/impl/array-utils-set-op.mjs +20 -7
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
- package/dist/array/impl/array-utils-size.d.mts +5 -2
- package/dist/array/impl/array-utils-size.d.mts.map +1 -1
- package/dist/array/impl/array-utils-size.mjs +5 -2
- package/dist/array/impl/array-utils-size.mjs.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.d.mts +2 -0
- package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.d.mts +17 -2
- package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +9 -2
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.d.mts +27 -0
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +6 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.d.mts +35 -18
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +25 -14
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +35 -15
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +5 -3
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +46 -19
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs +9 -2
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +48 -19
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +9 -2
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.d.mts +65 -25
- package/dist/collections/queue.d.mts.map +1 -1
- package/dist/collections/queue.mjs +13 -5
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.d.mts +60 -25
- package/dist/collections/stack.d.mts.map +1 -1
- package/dist/collections/stack.mjs +12 -5
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.mjs +1 -1
- package/dist/functional/match.d.mts +1 -1
- package/dist/functional/match.d.mts.map +1 -1
- package/dist/functional/match.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-expect-to-be.d.mts +3 -2
- package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-filter.d.mts +3 -0
- package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -0
- package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-from-nullable.d.mts +2 -0
- package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-from-nullable.mjs +2 -0
- package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-none.d.mts +1 -1
- package/dist/functional/optional/impl/optional-is-none.mjs +1 -1
- package/dist/functional/optional/impl/optional-is-optional.d.mts +4 -2
- package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.mjs +4 -2
- package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.d.mts +2 -1
- package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-some.mjs +2 -1
- package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-map.d.mts +2 -0
- package/dist/functional/optional/impl/optional-map.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-none.d.mts +4 -2
- package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-none.mjs +4 -2
- package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-or-else.d.mts +4 -0
- package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-some.d.mts +5 -3
- package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-some.mjs +4 -2
- package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.d.mts +4 -2
- package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-to-nullable.mjs +4 -2
- package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-or.d.mts +7 -4
- package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +2 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs +2 -1
- package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap.d.mts +4 -2
- package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-zip.d.mts +3 -1
- package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-zip.mjs +3 -1
- package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
- package/dist/functional/pipe.d.mts +2 -2
- package/dist/functional/result/impl/result-err.d.mts +4 -2
- package/dist/functional/result/impl/result-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-err.mjs +3 -1
- package/dist/functional/result/impl/result-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-expect-to-be.d.mts +3 -2
- package/dist/functional/result/impl/result-expect-to-be.d.mts.map +1 -1
- package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
- package/dist/functional/result/impl/result-flat-map.d.mts +5 -0
- package/dist/functional/result/impl/result-flat-map.d.mts.map +1 -1
- package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-fold.d.mts +4 -0
- package/dist/functional/result/impl/result-fold.d.mts.map +1 -1
- package/dist/functional/result/impl/result-fold.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-promise.d.mts +4 -1
- package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
- package/dist/functional/result/impl/result-from-promise.mjs +4 -1
- package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.d.mts +3 -1
- package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
- package/dist/functional/result/impl/result-from-throwable.mjs +3 -1
- package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-err.d.mts +4 -2
- package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-err.mjs +4 -2
- package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-ok.d.mts +4 -2
- package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-ok.mjs +4 -2
- package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-result.d.mts +7 -3
- package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
- package/dist/functional/result/impl/result-is-result.mjs +7 -3
- package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
- package/dist/functional/result/impl/result-map-err.d.mts +3 -0
- package/dist/functional/result/impl/result-map-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-map.d.mts +4 -0
- package/dist/functional/result/impl/result-map.d.mts.map +1 -1
- package/dist/functional/result/impl/result-map.mjs.map +1 -1
- package/dist/functional/result/impl/result-ok.d.mts +4 -2
- package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-ok.mjs +3 -1
- package/dist/functional/result/impl/result-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-or-else.d.mts +4 -0
- package/dist/functional/result/impl/result-or-else.d.mts.map +1 -1
- package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
- package/dist/functional/result/impl/result-swap.d.mts +2 -0
- package/dist/functional/result/impl/result-swap.d.mts.map +1 -1
- package/dist/functional/result/impl/result-swap.mjs +2 -0
- package/dist/functional/result/impl/result-swap.mjs.map +1 -1
- package/dist/functional/result/impl/result-to-optional.d.mts +2 -0
- package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -1
- package/dist/functional/result/impl/result-to-optional.mjs +2 -0
- package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-or.d.mts +7 -4
- package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +3 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs +3 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.d.mts +3 -2
- package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err.mjs +3 -2
- package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +7 -4
- package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok.d.mts +3 -2
- package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.d.mts +3 -1
- package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs +3 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-zip.d.mts +3 -1
- package/dist/functional/result/impl/result-zip.d.mts.map +1 -1
- package/dist/functional/result/impl/result-zip.mjs +3 -1
- package/dist/functional/result/impl/result-zip.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +3 -2
- package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs +2 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +4 -0
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +3 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +3 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +3 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +3 -1
- package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +7 -3
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +7 -3
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +3 -0
- package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +3 -0
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +6 -0
- package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +2 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +4 -0
- package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +4 -0
- package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
- package/dist/globals.d.mts +12 -1
- package/dist/guard/has-key.d.mts +6 -3
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +2 -2
- package/dist/guard/index.mjs +1 -1
- package/dist/guard/is-record.d.mts +31 -0
- package/dist/guard/is-record.d.mts.map +1 -1
- package/dist/guard/is-record.mjs +32 -1
- package/dist/guard/is-record.mjs.map +1 -1
- package/dist/guard/is-type.d.mts +3 -0
- package/dist/guard/is-type.d.mts.map +1 -1
- package/dist/guard/is-type.mjs +3 -0
- package/dist/guard/is-type.mjs.map +1 -1
- package/dist/guard/key-is-in.d.mts +3 -2
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +3 -2
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/iterator/range.d.mts +4 -0
- package/dist/iterator/range.d.mts.map +1 -1
- package/dist/iterator/range.mjs +1 -0
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.d.mts +42 -21
- package/dist/json/json.d.mts.map +1 -1
- package/dist/json/json.mjs +42 -21
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +33 -19
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +33 -19
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
- package/dist/number/branded-types/positive-int.d.mts +34 -20
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +34 -20
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +47 -26
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +48 -27
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +48 -27
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +50 -29
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +1 -1
- package/dist/number/branded-types/uint.d.mts +31 -19
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +31 -19
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/num.d.mts +29 -20
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +24 -17
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +33 -11
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +33 -11
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +12 -3
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +10 -3
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/map-nullable.mjs.map +1 -1
- package/dist/others/tuple.d.mts +14 -3
- package/dist/others/tuple.d.mts.map +1 -1
- package/dist/others/tuple.mjs +14 -3
- package/dist/others/tuple.mjs.map +1 -1
- package/dist/others/unknown-to-string.d.mts.map +1 -1
- package/dist/others/unknown-to-string.mjs.map +1 -1
- package/dist/promise/promise.d.mts +8 -4
- package/dist/promise/promise.d.mts.map +1 -1
- package/dist/promise/promise.mjs +8 -4
- package/dist/promise/promise.mjs.map +1 -1
- package/package.json +26 -28
- package/src/array/impl/array-utils-creation.mts +20 -0
- package/src/array/impl/array-utils-creation.test.mts +72 -1
- package/src/array/impl/array-utils-element-access.mts +13 -0
- package/src/array/impl/array-utils-element-access.test.mts +36 -15
- package/src/array/impl/array-utils-iterators.test.mts +17 -0
- package/src/array/impl/array-utils-modification.mts +78 -19
- package/src/array/impl/array-utils-modification.test.mts +75 -0
- package/src/array/impl/array-utils-overload-type-error.test.mts +19 -0
- package/src/array/impl/array-utils-reducing-value.mts +61 -16
- package/src/array/impl/array-utils-reducing-value.test.mts +107 -25
- package/src/array/impl/array-utils-search.mts +57 -4
- package/src/array/impl/array-utils-search.test.mts +61 -10
- package/src/array/impl/array-utils-set-op.mts +26 -7
- package/src/array/impl/array-utils-set-op.test.mts +129 -13
- package/src/array/impl/array-utils-size.mts +5 -2
- package/src/array/impl/array-utils-size.test.mts +1 -0
- package/src/array/impl/array-utils-slice-clamped.mts +7 -0
- package/src/array/impl/array-utils-slice-clamped.test.mts +20 -0
- package/src/array/impl/array-utils-slicing.mts +29 -2
- package/src/array/impl/array-utils-slicing.test.mts +57 -0
- package/src/array/impl/array-utils-transformation.mts +58 -0
- package/src/array/impl/array-utils-transformation.test.mts +115 -3
- package/src/array/impl/array-utils-validation.mts +41 -18
- package/src/array/impl/array-utils-validation.test.mts +176 -78
- package/src/array/impl/array.test.mts +18 -6
- package/src/collections/imap-mapped.mts +11 -0
- package/src/collections/imap-mapped.test.mts +86 -18
- package/src/collections/imap.mts +47 -15
- package/src/collections/imap.test.mts +137 -31
- package/src/collections/iset-mapped.mts +54 -19
- package/src/collections/iset-mapped.test.mts +163 -52
- package/src/collections/iset.mts +53 -19
- package/src/collections/iset.test.mts +323 -130
- package/src/collections/queue.mts +78 -25
- package/src/collections/queue.test.mts +65 -35
- package/src/collections/stack.mts +67 -25
- package/src/collections/stack.test.mts +59 -15
- package/src/functional/match.mts +17 -1
- package/src/functional/match.test.mts +2 -0
- package/src/functional/optional/impl/optional-expect-to-be.mts +5 -2
- package/src/functional/optional/impl/optional-filter.mts +6 -0
- package/src/functional/optional/impl/optional-flat-map.mts +4 -0
- package/src/functional/optional/impl/optional-from-nullable.mts +2 -0
- package/src/functional/optional/impl/optional-is-none.mts +1 -1
- package/src/functional/optional/impl/optional-is-optional.mts +4 -2
- package/src/functional/optional/impl/optional-is-some.mts +2 -1
- package/src/functional/optional/impl/optional-map.mts +5 -0
- package/src/functional/optional/impl/optional-none.mts +4 -2
- package/src/functional/optional/impl/optional-or-else.mts +6 -0
- package/src/functional/optional/impl/optional-some.mts +5 -3
- package/src/functional/optional/impl/optional-to-nullable.mts +4 -2
- package/src/functional/optional/impl/optional-unwrap-or.mts +9 -4
- package/src/functional/optional/impl/optional-unwrap-throw.mts +2 -1
- package/src/functional/optional/impl/optional-unwrap.mts +4 -2
- package/src/functional/optional/impl/optional-zip.mts +3 -1
- package/src/functional/optional.test.mts +126 -54
- package/src/functional/pipe.mts +2 -2
- package/src/functional/pipe.test.mts +7 -4
- package/src/functional/result/impl/result-err.mts +4 -2
- package/src/functional/result/impl/result-expect-to-be.mts +5 -2
- package/src/functional/result/impl/result-flat-map.mts +7 -0
- package/src/functional/result/impl/result-fold.mts +6 -0
- package/src/functional/result/impl/result-from-promise.mts +4 -1
- package/src/functional/result/impl/result-from-throwable.mts +5 -1
- package/src/functional/result/impl/result-is-err.mts +4 -2
- package/src/functional/result/impl/result-is-ok.mts +4 -2
- package/src/functional/result/impl/result-is-result.mts +7 -3
- package/src/functional/result/impl/result-map-err.mts +5 -0
- package/src/functional/result/impl/result-map.mts +6 -0
- package/src/functional/result/impl/result-ok.mts +4 -2
- package/src/functional/result/impl/result-or-else.mts +6 -0
- package/src/functional/result/impl/result-swap.mts +2 -0
- package/src/functional/result/impl/result-to-optional.mts +2 -0
- package/src/functional/result/impl/result-unwrap-err-or.mts +9 -4
- package/src/functional/result/impl/result-unwrap-err-throw.mts +3 -1
- package/src/functional/result/impl/result-unwrap-err.mts +3 -2
- package/src/functional/result/impl/result-unwrap-ok-or.mts +9 -4
- package/src/functional/result/impl/result-unwrap-ok.mts +4 -2
- package/src/functional/result/impl/result-unwrap-throw.mts +3 -1
- package/src/functional/result/impl/result-zip.mts +3 -1
- package/src/functional/result.test.mts +182 -152
- package/src/functional/ternary-result/impl/ternary-result-err.mts +3 -2
- package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +4 -0
- package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +7 -0
- package/src/functional/ternary-result/impl/ternary-result-fold.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +3 -1
- package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +4 -1
- package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +7 -3
- package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-map-err.mts +6 -0
- package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +6 -0
- package/src/functional/ternary-result/impl/ternary-result-map.mts +9 -0
- package/src/functional/ternary-result/impl/ternary-result-ok.mts +1 -1
- package/src/functional/ternary-result/impl/ternary-result-or-else.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +2 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +2 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +3 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +5 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +1 -0
- package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +2 -0
- package/src/functional/ternary-result/impl/ternary-result-warn.mts +4 -1
- package/src/functional/ternary-result/impl/ternary-result-zip.mts +4 -0
- package/src/functional/ternary-result.test.mts +99 -8
- package/src/globals.d.mts +12 -1
- package/src/guard/has-key.mts +8 -5
- package/src/guard/has-key.test.mts +9 -5
- package/src/guard/is-error.test.mts +143 -0
- package/src/guard/is-non-empty-string.test.mts +44 -24
- package/src/guard/is-non-null-object.test.mts +45 -26
- package/src/guard/is-primitive.test.mts +51 -28
- package/src/guard/is-record.mts +34 -0
- package/src/guard/is-record.test.mts +28 -7
- package/src/guard/is-type.mts +3 -0
- package/src/guard/is-type.test.mts +285 -155
- package/src/guard/key-is-in.mts +3 -2
- package/src/guard/key-is-in.test.mts +2 -2
- package/src/iterator/range.mts +9 -0
- package/src/json/json.mts +50 -21
- package/src/json/json.test.mts +224 -176
- package/src/number/branded-types/finite-number.test.mts +51 -11
- package/src/number/branded-types/int.mts +33 -19
- package/src/number/branded-types/int.test.mts +56 -14
- package/src/number/branded-types/int16.test.mts +63 -16
- package/src/number/branded-types/int32.test.mts +63 -16
- package/src/number/branded-types/non-negative-finite-number.test.mts +52 -12
- package/src/number/branded-types/non-negative-int16.test.mts +59 -16
- package/src/number/branded-types/non-negative-int32.test.mts +59 -16
- package/src/number/branded-types/non-zero-finite-number.test.mts +65 -14
- package/src/number/branded-types/non-zero-int.test.mts +72 -19
- package/src/number/branded-types/non-zero-int16.test.mts +60 -16
- package/src/number/branded-types/non-zero-int32.test.mts +60 -16
- package/src/number/branded-types/non-zero-safe-int.mts +2 -2
- package/src/number/branded-types/non-zero-safe-int.test.mts +85 -23
- package/src/number/branded-types/non-zero-uint16.test.mts +53 -16
- package/src/number/branded-types/non-zero-uint32.test.mts +53 -16
- package/src/number/branded-types/positive-finite-number.test.mts +59 -14
- package/src/number/branded-types/positive-int.mts +34 -20
- package/src/number/branded-types/positive-int.test.mts +64 -17
- package/src/number/branded-types/positive-int16.test.mts +50 -15
- package/src/number/branded-types/positive-int32.test.mts +50 -15
- package/src/number/branded-types/positive-safe-int.mts +48 -27
- package/src/number/branded-types/positive-safe-int.test.mts +68 -19
- package/src/number/branded-types/positive-uint16.test.mts +53 -16
- package/src/number/branded-types/positive-uint32.test.mts +53 -16
- package/src/number/branded-types/safe-int.mts +50 -29
- package/src/number/branded-types/safe-int.test.mts +70 -18
- package/src/number/branded-types/safe-uint.mts +1 -1
- package/src/number/branded-types/safe-uint.test.mts +65 -17
- package/src/number/branded-types/uint.mts +31 -19
- package/src/number/branded-types/uint.test.mts +58 -15
- package/src/number/branded-types/uint16.test.mts +56 -15
- package/src/number/branded-types/uint32.test.mts +56 -15
- package/src/number/enum/int8.test.mts +7 -1
- package/src/number/enum/uint8.test.mts +7 -1
- package/src/number/num.mts +32 -21
- package/src/number/num.test.mts +88 -26
- package/src/number/refined-number-utils.mts +38 -13
- package/src/object/object.mts +19 -3
- package/src/object/object.test.mts +16 -6
- package/src/others/cast-mutable.test.mts +8 -1
- package/src/others/cast-readonly.test.mts +21 -4
- package/src/others/if-then.test.mts +40 -24
- package/src/others/map-nullable.mts +3 -0
- package/src/others/map-nullable.test.mts +27 -0
- package/src/others/memoize-function.test.mts +41 -0
- package/src/others/tuple.mts +14 -3
- package/src/others/unknown-to-string.mts +2 -0
- package/src/others/unknown-to-string.test.mts +10 -0
- package/src/promise/promise.mts +8 -4
- package/src/promise/promise.test.mts +8 -13
|
@@ -12,89 +12,122 @@ describe('Arr set operations', () => {
|
|
|
12
12
|
describe(eq, () => {
|
|
13
13
|
{
|
|
14
14
|
const xs = [1, 2, 3] as const;
|
|
15
|
+
|
|
15
16
|
const ys = [1, 2, 3] as const;
|
|
17
|
+
|
|
16
18
|
const result = eq(xs, ys);
|
|
19
|
+
|
|
17
20
|
expectType<typeof result, boolean>('=');
|
|
18
21
|
|
|
19
22
|
test('should return true for equal arrays of numbers', () => {
|
|
20
|
-
|
|
23
|
+
assert.isTrue(result);
|
|
21
24
|
});
|
|
22
25
|
}
|
|
26
|
+
|
|
23
27
|
{
|
|
24
28
|
const xs = [1, 2, 3] as const;
|
|
29
|
+
|
|
25
30
|
const ys = [1, 2, 4] as const;
|
|
31
|
+
|
|
26
32
|
const result = eq(xs, ys);
|
|
33
|
+
|
|
27
34
|
expectType<typeof result, boolean>('=');
|
|
28
35
|
|
|
29
36
|
test('should return false for different arrays of numbers', () => {
|
|
30
|
-
|
|
37
|
+
assert.isFalse(result);
|
|
31
38
|
});
|
|
32
39
|
}
|
|
40
|
+
|
|
33
41
|
{
|
|
34
42
|
const xs = [1, 2, 3] as const;
|
|
43
|
+
|
|
35
44
|
const ys = [1, 2] as const;
|
|
45
|
+
|
|
36
46
|
const result = eq(xs, ys);
|
|
47
|
+
|
|
37
48
|
expectType<typeof result, boolean>('=');
|
|
38
49
|
|
|
39
50
|
test('should return false for arrays of different lengths', () => {
|
|
40
|
-
|
|
51
|
+
assert.isFalse(result);
|
|
41
52
|
});
|
|
42
53
|
}
|
|
54
|
+
|
|
43
55
|
{
|
|
44
56
|
const xs = ['a', 'b'] as const;
|
|
57
|
+
|
|
45
58
|
const ys = ['a', 'b'] as const;
|
|
59
|
+
|
|
46
60
|
const result = eq(xs, ys);
|
|
61
|
+
|
|
47
62
|
expectType<typeof result, boolean>('=');
|
|
48
63
|
|
|
49
64
|
test('should return true for equal arrays of strings', () => {
|
|
50
|
-
|
|
65
|
+
assert.isTrue(result);
|
|
51
66
|
});
|
|
52
67
|
}
|
|
68
|
+
|
|
53
69
|
{
|
|
54
70
|
const xs = [] as const;
|
|
71
|
+
|
|
55
72
|
const ys = [] as const;
|
|
73
|
+
|
|
56
74
|
const result = eq(xs, ys);
|
|
75
|
+
|
|
57
76
|
expectType<typeof result, boolean>('=');
|
|
58
77
|
|
|
59
78
|
test('should return true for empty arrays', () => {
|
|
60
|
-
|
|
79
|
+
assert.isTrue(result);
|
|
61
80
|
});
|
|
62
81
|
}
|
|
82
|
+
|
|
63
83
|
{
|
|
64
84
|
const xs = [{ a: 1 }, { b: 2 }] as const;
|
|
85
|
+
|
|
65
86
|
const ys = [{ a: 1 }, { b: 2 }] as const;
|
|
87
|
+
|
|
66
88
|
// Default eq uses reference equality for objects
|
|
67
89
|
const result = eq(xs, ys);
|
|
90
|
+
|
|
68
91
|
expectType<typeof result, boolean>('=');
|
|
69
92
|
|
|
70
93
|
test('should return false for arrays of objects with default equality (reference check)', () => {
|
|
71
|
-
|
|
94
|
+
assert.isFalse(result);
|
|
72
95
|
});
|
|
73
96
|
}
|
|
97
|
+
|
|
74
98
|
{
|
|
75
99
|
const objA = { a: 1 };
|
|
100
|
+
|
|
76
101
|
const objB = { b: 2 };
|
|
102
|
+
|
|
77
103
|
const xs = [objA, objB] as const;
|
|
104
|
+
|
|
78
105
|
const ys = [objA, objB] as const;
|
|
106
|
+
|
|
79
107
|
const result = eq(xs, ys);
|
|
108
|
+
|
|
80
109
|
expectType<typeof result, boolean>('=');
|
|
81
110
|
|
|
82
111
|
test('should return true for arrays of same object references', () => {
|
|
83
|
-
|
|
112
|
+
assert.isTrue(result);
|
|
84
113
|
});
|
|
85
114
|
}
|
|
115
|
+
|
|
86
116
|
{
|
|
87
117
|
const xs = [{ a: 1 }, { b: 2 }] as const;
|
|
118
|
+
|
|
88
119
|
const ys = [{ a: 1 }, { b: 2 }] as const;
|
|
120
|
+
|
|
89
121
|
const result = eq(
|
|
90
122
|
xs,
|
|
91
123
|
ys,
|
|
92
124
|
(o1, o2) => JSON.stringify(o1) === JSON.stringify(o2),
|
|
93
125
|
);
|
|
126
|
+
|
|
94
127
|
expectType<typeof result, boolean>('=');
|
|
95
128
|
|
|
96
129
|
test('should return true for arrays of objects with custom equality function', () => {
|
|
97
|
-
|
|
130
|
+
assert.isTrue(result);
|
|
98
131
|
});
|
|
99
132
|
}
|
|
100
133
|
});
|
|
@@ -102,6 +135,7 @@ describe('Arr set operations', () => {
|
|
|
102
135
|
describe(isSubset, () => {
|
|
103
136
|
{
|
|
104
137
|
const xs = [1, 2, 3] as const;
|
|
138
|
+
|
|
105
139
|
const ys = [3, 2] as const;
|
|
106
140
|
|
|
107
141
|
const result = isSubset(ys, xs);
|
|
@@ -109,11 +143,13 @@ describe('Arr set operations', () => {
|
|
|
109
143
|
expectType<typeof result, boolean>('=');
|
|
110
144
|
|
|
111
145
|
test('case 1', () => {
|
|
112
|
-
|
|
146
|
+
assert.isTrue(result);
|
|
113
147
|
});
|
|
114
148
|
}
|
|
149
|
+
|
|
115
150
|
{
|
|
116
151
|
const xs = [1, 2, 3] as const;
|
|
152
|
+
|
|
117
153
|
const ys = [3, 2, 4] as const;
|
|
118
154
|
|
|
119
155
|
const result = isSubset(ys, xs);
|
|
@@ -121,7 +157,7 @@ describe('Arr set operations', () => {
|
|
|
121
157
|
expectType<typeof result, boolean>('=');
|
|
122
158
|
|
|
123
159
|
test('case 2', () => {
|
|
124
|
-
|
|
160
|
+
assert.isFalse(result);
|
|
125
161
|
});
|
|
126
162
|
}
|
|
127
163
|
});
|
|
@@ -129,6 +165,7 @@ describe('Arr set operations', () => {
|
|
|
129
165
|
describe(isSuperset, () => {
|
|
130
166
|
{
|
|
131
167
|
const xs = [1, 2, 3] as const;
|
|
168
|
+
|
|
132
169
|
const ys = [3, 2] as const;
|
|
133
170
|
|
|
134
171
|
const result = isSuperset(ys, xs);
|
|
@@ -136,17 +173,19 @@ describe('Arr set operations', () => {
|
|
|
136
173
|
expectType<typeof result, boolean>('=');
|
|
137
174
|
|
|
138
175
|
test('case 1', () => {
|
|
139
|
-
|
|
176
|
+
assert.isFalse(result);
|
|
140
177
|
});
|
|
141
178
|
|
|
142
179
|
const result2 = isSuperset(xs, ys);
|
|
143
180
|
|
|
144
181
|
test('case 2', () => {
|
|
145
|
-
|
|
182
|
+
assert.isTrue(result2);
|
|
146
183
|
});
|
|
147
184
|
}
|
|
185
|
+
|
|
148
186
|
{
|
|
149
187
|
const xs = [1, 2, 3] as const;
|
|
188
|
+
|
|
150
189
|
const ys = [3, 2, 4] as const;
|
|
151
190
|
|
|
152
191
|
const result = isSuperset(ys, xs);
|
|
@@ -154,7 +193,7 @@ describe('Arr set operations', () => {
|
|
|
154
193
|
expectType<typeof result, boolean>('=');
|
|
155
194
|
|
|
156
195
|
test('case 3', () => {
|
|
157
|
-
|
|
196
|
+
assert.isFalse(result);
|
|
158
197
|
});
|
|
159
198
|
}
|
|
160
199
|
});
|
|
@@ -162,48 +201,67 @@ describe('Arr set operations', () => {
|
|
|
162
201
|
describe(setIntersection, () => {
|
|
163
202
|
{
|
|
164
203
|
const xs = [1, 2, 3] as const;
|
|
204
|
+
|
|
165
205
|
const ys = [2, 3, 4] as const;
|
|
206
|
+
|
|
166
207
|
const result = setIntersection(xs, ys);
|
|
208
|
+
|
|
167
209
|
expectType<typeof result, readonly (2 | 3)[]>('=');
|
|
168
210
|
|
|
169
211
|
test('should return the intersection of two number arrays', () => {
|
|
170
212
|
assert.deepStrictEqual(result, [2, 3]);
|
|
171
213
|
});
|
|
172
214
|
}
|
|
215
|
+
|
|
173
216
|
{
|
|
174
217
|
const xs = ['a', 'b', 'c'] as const;
|
|
218
|
+
|
|
175
219
|
const ys = ['b', 'c', 'd'] as const;
|
|
220
|
+
|
|
176
221
|
const result = setIntersection(xs, ys);
|
|
222
|
+
|
|
177
223
|
expectType<typeof result, readonly ('b' | 'c')[]>('=');
|
|
178
224
|
|
|
179
225
|
test('should return the intersection of two string arrays', () => {
|
|
180
226
|
assert.deepStrictEqual(result, ['b', 'c']);
|
|
181
227
|
});
|
|
182
228
|
}
|
|
229
|
+
|
|
183
230
|
{
|
|
184
231
|
const xs = [1, 2, 3] as const;
|
|
232
|
+
|
|
185
233
|
const ys = [4, 5, 6] as const;
|
|
234
|
+
|
|
186
235
|
const result = setIntersection(xs, ys);
|
|
236
|
+
|
|
187
237
|
expectType<typeof result, readonly never[]>('=');
|
|
188
238
|
|
|
189
239
|
test('should return an empty array if there is no intersection', () => {
|
|
190
240
|
assert.deepStrictEqual(result, []);
|
|
191
241
|
});
|
|
192
242
|
}
|
|
243
|
+
|
|
193
244
|
{
|
|
194
245
|
const xs = [1, 2, 3] as const;
|
|
246
|
+
|
|
195
247
|
const ys = [] as const;
|
|
248
|
+
|
|
196
249
|
const result = setIntersection(xs, ys);
|
|
250
|
+
|
|
197
251
|
expectType<typeof result, readonly never[]>('=');
|
|
198
252
|
|
|
199
253
|
test('should return an empty array if one array is empty', () => {
|
|
200
254
|
assert.deepStrictEqual(result, []);
|
|
201
255
|
});
|
|
202
256
|
}
|
|
257
|
+
|
|
203
258
|
{
|
|
204
259
|
const xs = [] as const;
|
|
260
|
+
|
|
205
261
|
const ys = [1, 2, 3] as const;
|
|
262
|
+
|
|
206
263
|
const result = setIntersection(xs, ys);
|
|
264
|
+
|
|
207
265
|
expectType<typeof result, readonly never[]>('=');
|
|
208
266
|
|
|
209
267
|
test('should return an empty array if the first array is empty', () => {
|
|
@@ -215,58 +273,81 @@ describe('Arr set operations', () => {
|
|
|
215
273
|
describe(setDifference, () => {
|
|
216
274
|
{
|
|
217
275
|
const xs = [1, 2, 3] as const;
|
|
276
|
+
|
|
218
277
|
const ys = [2, 3, 4] as const;
|
|
278
|
+
|
|
219
279
|
const result = setDifference(xs, ys);
|
|
280
|
+
|
|
220
281
|
expectType<typeof result, readonly (1 | 2 | 3 | 4)[]>('=');
|
|
221
282
|
|
|
222
283
|
test('should return the difference xs - ys for number arrays', () => {
|
|
223
284
|
assert.deepStrictEqual(result, [1]);
|
|
224
285
|
});
|
|
225
286
|
}
|
|
287
|
+
|
|
226
288
|
{
|
|
227
289
|
const xs = ['a', 'b', 'c'] as const;
|
|
290
|
+
|
|
228
291
|
const ys = ['b', 'c', 'd'] as const;
|
|
292
|
+
|
|
229
293
|
const result = setDifference(xs, ys);
|
|
294
|
+
|
|
230
295
|
expectType<typeof result, readonly ('a' | 'b' | 'c' | 'd')[]>('=');
|
|
231
296
|
|
|
232
297
|
test('should return the difference xs - ys for string arrays', () => {
|
|
233
298
|
assert.deepStrictEqual(result, ['a']);
|
|
234
299
|
});
|
|
235
300
|
}
|
|
301
|
+
|
|
236
302
|
{
|
|
237
303
|
const xs = [1, 2, 3] as const;
|
|
304
|
+
|
|
238
305
|
const ys = [1, 2, 3] as const;
|
|
306
|
+
|
|
239
307
|
const result = setDifference(xs, ys);
|
|
308
|
+
|
|
240
309
|
expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
|
|
241
310
|
|
|
242
311
|
test('should return an empty array if xs is a subset of ys', () => {
|
|
243
312
|
assert.deepStrictEqual(result, []);
|
|
244
313
|
});
|
|
245
314
|
}
|
|
315
|
+
|
|
246
316
|
{
|
|
247
317
|
const xs = [1, 2, 3] as const;
|
|
318
|
+
|
|
248
319
|
const ys = [4, 5, 6] as const;
|
|
320
|
+
|
|
249
321
|
const result = setDifference(xs, ys);
|
|
322
|
+
|
|
250
323
|
expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5 | 6)[]>('=');
|
|
251
324
|
|
|
252
325
|
test('should return xs if there is no intersection', () => {
|
|
253
326
|
assert.deepStrictEqual(result, [1, 2, 3]);
|
|
254
327
|
});
|
|
255
328
|
}
|
|
329
|
+
|
|
256
330
|
{
|
|
257
331
|
const xs = [1, 2, 3] as const;
|
|
332
|
+
|
|
258
333
|
const ys = [] as const;
|
|
334
|
+
|
|
259
335
|
const result = setDifference(xs, ys);
|
|
336
|
+
|
|
260
337
|
expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
|
|
261
338
|
|
|
262
339
|
test('should return xs if ys is empty', () => {
|
|
263
340
|
assert.deepStrictEqual(result, [1, 2, 3]);
|
|
264
341
|
});
|
|
265
342
|
}
|
|
343
|
+
|
|
266
344
|
{
|
|
267
345
|
const xs = [] as const;
|
|
346
|
+
|
|
268
347
|
const ys = [1, 2, 3] as const;
|
|
348
|
+
|
|
269
349
|
const result = setDifference(xs, ys);
|
|
350
|
+
|
|
270
351
|
expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
|
|
271
352
|
|
|
272
353
|
test('should return an empty array if xs is empty', () => {
|
|
@@ -278,88 +359,123 @@ describe('Arr set operations', () => {
|
|
|
278
359
|
describe(sortedNumSetDifference, () => {
|
|
279
360
|
{
|
|
280
361
|
const xs = [1, 2, 3, 5] as const;
|
|
362
|
+
|
|
281
363
|
const ys = [2, 3, 4] as const;
|
|
364
|
+
|
|
282
365
|
const result = sortedNumSetDifference(xs, ys);
|
|
366
|
+
|
|
283
367
|
expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5)[]>('=');
|
|
284
368
|
|
|
285
369
|
test('should return the difference for sorted number arrays (xs - ys)', () => {
|
|
286
370
|
assert.deepStrictEqual(result, [1, 5]);
|
|
287
371
|
});
|
|
288
372
|
}
|
|
373
|
+
|
|
289
374
|
{
|
|
290
375
|
const xs = [1, 2, 3] as const;
|
|
376
|
+
|
|
291
377
|
const ys = [1, 2, 3] as const;
|
|
378
|
+
|
|
292
379
|
const result = sortedNumSetDifference(xs, ys);
|
|
380
|
+
|
|
293
381
|
expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
|
|
294
382
|
|
|
295
383
|
test('should return an empty array if sets are equal', () => {
|
|
296
384
|
assert.deepStrictEqual(result, []);
|
|
297
385
|
});
|
|
298
386
|
}
|
|
387
|
+
|
|
299
388
|
{
|
|
300
389
|
const xs = [1, 2, 3] as const;
|
|
390
|
+
|
|
301
391
|
const ys = [4, 5, 6] as const;
|
|
392
|
+
|
|
302
393
|
const result = sortedNumSetDifference(xs, ys);
|
|
394
|
+
|
|
303
395
|
expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5 | 6)[]>('=');
|
|
304
396
|
|
|
305
397
|
test('should return xs if no common elements', () => {
|
|
306
398
|
assert.deepStrictEqual(result, [1, 2, 3]);
|
|
307
399
|
});
|
|
308
400
|
}
|
|
401
|
+
|
|
309
402
|
{
|
|
310
403
|
const xs = [4, 5, 6] as const;
|
|
404
|
+
|
|
311
405
|
const ys = [1, 2, 3] as const;
|
|
406
|
+
|
|
312
407
|
const result = sortedNumSetDifference(xs, ys);
|
|
408
|
+
|
|
313
409
|
expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5 | 6)[]>('=');
|
|
314
410
|
|
|
315
411
|
test('should return xs if no common elements (ys < xs)', () => {
|
|
316
412
|
assert.deepStrictEqual(result, [4, 5, 6]);
|
|
317
413
|
});
|
|
318
414
|
}
|
|
415
|
+
|
|
319
416
|
{
|
|
320
417
|
const xs = [1, 2, 3, 4, 5] as const;
|
|
418
|
+
|
|
321
419
|
const ys = [2, 4] as const;
|
|
420
|
+
|
|
322
421
|
const result = sortedNumSetDifference(xs, ys);
|
|
422
|
+
|
|
323
423
|
expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5)[]>('=');
|
|
324
424
|
|
|
325
425
|
test('should return correct difference when ys is subset of xs', () => {
|
|
326
426
|
assert.deepStrictEqual(result, [1, 3, 5]);
|
|
327
427
|
});
|
|
328
428
|
}
|
|
429
|
+
|
|
329
430
|
{
|
|
330
431
|
const xs = [2, 4] as const;
|
|
432
|
+
|
|
331
433
|
const ys = [1, 2, 3, 4, 5] as const;
|
|
434
|
+
|
|
332
435
|
const result = sortedNumSetDifference(xs, ys);
|
|
436
|
+
|
|
333
437
|
expectType<typeof result, readonly (1 | 2 | 3 | 4 | 5)[]>('=');
|
|
334
438
|
|
|
335
439
|
test('should return empty array when xs is subset of ys', () => {
|
|
336
440
|
assert.deepStrictEqual(result, []);
|
|
337
441
|
});
|
|
338
442
|
}
|
|
443
|
+
|
|
339
444
|
{
|
|
340
445
|
const xs = [] as const;
|
|
446
|
+
|
|
341
447
|
const ys = [1, 2, 3] as const;
|
|
448
|
+
|
|
342
449
|
const result = sortedNumSetDifference(xs, ys);
|
|
450
|
+
|
|
343
451
|
expectType<typeof result, readonly (1 | 2 | 3)[]>('='); // Type is `readonly number[]` due to `ys`
|
|
344
452
|
|
|
345
453
|
test('should return an empty array if xs is empty', () => {
|
|
346
454
|
assert.deepStrictEqual(result, []);
|
|
347
455
|
});
|
|
348
456
|
}
|
|
457
|
+
|
|
349
458
|
{
|
|
350
459
|
const xs = [1, 2, 3] as const;
|
|
460
|
+
|
|
351
461
|
const ys = [] as const;
|
|
462
|
+
|
|
352
463
|
const result = sortedNumSetDifference(xs, ys);
|
|
464
|
+
|
|
353
465
|
expectType<typeof result, readonly (1 | 2 | 3)[]>('=');
|
|
354
466
|
|
|
355
467
|
test('should return xs if ys is empty', () => {
|
|
356
468
|
assert.deepStrictEqual(result, [1, 2, 3]);
|
|
357
469
|
});
|
|
358
470
|
}
|
|
471
|
+
|
|
359
472
|
{
|
|
360
473
|
const xs = [] as const;
|
|
474
|
+
|
|
361
475
|
const ys = [] as const;
|
|
476
|
+
|
|
362
477
|
const result = sortedNumSetDifference(xs, ys);
|
|
478
|
+
|
|
363
479
|
expectType<typeof result, readonly never[]>('='); // Type is `readonly number[]`
|
|
364
480
|
|
|
365
481
|
test('should return an empty array if both are empty', () => {
|
|
@@ -5,13 +5,16 @@
|
|
|
5
5
|
*
|
|
6
6
|
* ```ts
|
|
7
7
|
* const numbers = [1, 2, 3] as const;
|
|
8
|
+
*
|
|
8
9
|
* const letters: string[] = [];
|
|
9
10
|
*
|
|
10
11
|
* const sizeOfNumbers = Arr.size(numbers);
|
|
12
|
+
*
|
|
11
13
|
* const sizeOfLetters = Arr.size(letters);
|
|
12
14
|
*
|
|
13
|
-
* assert(sizeOfNumbers === 3);
|
|
14
|
-
*
|
|
15
|
+
* assert.isTrue(sizeOfNumbers === 3);
|
|
16
|
+
*
|
|
17
|
+
* assert.isTrue(sizeOfLetters === 0);
|
|
15
18
|
* ```
|
|
16
19
|
*/
|
|
17
20
|
export const size = <const Ar extends readonly unknown[]>(
|
|
@@ -9,9 +9,11 @@ import { Num } from '../../number/index.mjs';
|
|
|
9
9
|
* const letters = ['a', 'b', 'c', 'd', 'e'];
|
|
10
10
|
*
|
|
11
11
|
* const lastThree = Arr.sliceClamped(letters, -3, 10);
|
|
12
|
+
*
|
|
12
13
|
* const middleTwo = Arr.sliceClamped(1, 3)(letters);
|
|
13
14
|
*
|
|
14
15
|
* assert.deepStrictEqual(lastThree, ['a', 'b', 'c', 'd', 'e']);
|
|
16
|
+
*
|
|
15
17
|
* assert.deepStrictEqual(middleTwo, ['b', 'c']);
|
|
16
18
|
* ```
|
|
17
19
|
*/
|
|
@@ -38,13 +40,18 @@ export function sliceClamped<E>(
|
|
|
38
40
|
switch (args.length) {
|
|
39
41
|
case 3: {
|
|
40
42
|
const [array, start, end] = args;
|
|
43
|
+
|
|
41
44
|
const startClamped = Num.clamp(0, array.length)(start);
|
|
45
|
+
|
|
42
46
|
// Ensure endClamped is not less than startClamped.
|
|
43
47
|
const endClamped = Num.clamp(startClamped, array.length)(end);
|
|
48
|
+
|
|
44
49
|
return array.slice(startClamped, endClamped);
|
|
45
50
|
}
|
|
51
|
+
|
|
46
52
|
case 2: {
|
|
47
53
|
const [start, end] = args;
|
|
54
|
+
|
|
48
55
|
return (array) => sliceClamped(array, start, end);
|
|
49
56
|
}
|
|
50
57
|
}
|
|
@@ -80,27 +80,34 @@ describe('Arr', () => {
|
|
|
80
80
|
test('should be type error for index overflow for fixed length array', () => {
|
|
81
81
|
{
|
|
82
82
|
const array = [1, 2, 3, 4, 5] as const;
|
|
83
|
+
|
|
83
84
|
// @ts-expect-error end index is out of bounds
|
|
84
85
|
const result = sliceClamped(array, 0, 6);
|
|
85
86
|
|
|
86
87
|
assert.deepStrictEqual(result, array);
|
|
87
88
|
}
|
|
89
|
+
|
|
88
90
|
{
|
|
89
91
|
const array = [1, 2, 3, 4, 5] as const;
|
|
92
|
+
|
|
90
93
|
// @ts-expect-error end index is out of bounds
|
|
91
94
|
const result = sliceClamped(array, 0, -6);
|
|
92
95
|
|
|
93
96
|
assert.deepStrictEqual(result, []);
|
|
94
97
|
}
|
|
98
|
+
|
|
95
99
|
{
|
|
96
100
|
const array = [1, 2, 3, 4, 5] as const;
|
|
101
|
+
|
|
97
102
|
// @ts-expect-error start index is out of bounds
|
|
98
103
|
const result = sliceClamped(array, -6, 5);
|
|
99
104
|
|
|
100
105
|
assert.deepStrictEqual(result, array);
|
|
101
106
|
}
|
|
107
|
+
|
|
102
108
|
{
|
|
103
109
|
const array = [1, 2, 3, 4, 5] as const;
|
|
110
|
+
|
|
104
111
|
// @ts-expect-error start index is out of bounds
|
|
105
112
|
const result = sliceClamped(array, 6, 5);
|
|
106
113
|
|
|
@@ -110,6 +117,7 @@ describe('Arr', () => {
|
|
|
110
117
|
|
|
111
118
|
test('should slice with clamped indices', () => {
|
|
112
119
|
const array = [1, 2, 3, 4, 5];
|
|
120
|
+
|
|
113
121
|
const result = sliceClamped(array, 1, 3);
|
|
114
122
|
|
|
115
123
|
assert.deepStrictEqual(result, [2, 3]);
|
|
@@ -117,6 +125,7 @@ describe('Arr', () => {
|
|
|
117
125
|
|
|
118
126
|
test('should clamp start index below 0', () => {
|
|
119
127
|
const array = [1, 2, 3, 4, 5];
|
|
128
|
+
|
|
120
129
|
const result = sliceClamped(array, -10, 3);
|
|
121
130
|
|
|
122
131
|
assert.deepStrictEqual(result, [1, 2, 3]);
|
|
@@ -124,6 +133,7 @@ describe('Arr', () => {
|
|
|
124
133
|
|
|
125
134
|
test('should clamp end index above length', () => {
|
|
126
135
|
const array = [1, 2, 3, 4, 5];
|
|
136
|
+
|
|
127
137
|
const result = sliceClamped(array, asUint32(2), asUint32(100));
|
|
128
138
|
|
|
129
139
|
assert.deepStrictEqual(result, [3, 4, 5]);
|
|
@@ -131,6 +141,7 @@ describe('Arr', () => {
|
|
|
131
141
|
|
|
132
142
|
test('should work with both indices out of range', () => {
|
|
133
143
|
const array = [1, 2, 3];
|
|
144
|
+
|
|
134
145
|
const result = sliceClamped(array, asInt32(-10), asUint32(100));
|
|
135
146
|
|
|
136
147
|
assert.deepStrictEqual(result, [1, 2, 3]);
|
|
@@ -138,9 +149,18 @@ describe('Arr', () => {
|
|
|
138
149
|
|
|
139
150
|
test('should work with empty array', () => {
|
|
140
151
|
const array: readonly number[] = [];
|
|
152
|
+
|
|
141
153
|
const result = sliceClamped(array, 0, 5);
|
|
142
154
|
|
|
143
155
|
assert.deepStrictEqual(result, []);
|
|
144
156
|
});
|
|
157
|
+
|
|
158
|
+
test('should work with curried version', () => {
|
|
159
|
+
const slice1to3 = sliceClamped(1, 3);
|
|
160
|
+
|
|
161
|
+
const result = slice1to3([10, 20, 30, 40, 50]);
|
|
162
|
+
|
|
163
|
+
assert.deepStrictEqual(result, [20, 30]);
|
|
164
|
+
});
|
|
145
165
|
});
|
|
146
166
|
});
|