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
|
@@ -7,9 +7,11 @@ import { asUint32, Num } from '../../number/index.mjs';
|
|
|
7
7
|
*
|
|
8
8
|
* ```ts
|
|
9
9
|
* const maybeArray: unknown = [1, 2, 3];
|
|
10
|
+
*
|
|
10
11
|
* const maybeValue: unknown = 'Ada';
|
|
11
12
|
*
|
|
12
13
|
* assert.ok(Arr.isArray(maybeArray));
|
|
14
|
+
*
|
|
13
15
|
* assert.notOk(Arr.isArray(maybeValue));
|
|
14
16
|
*
|
|
15
17
|
* if (Arr.isArray(maybeArray)) {
|
|
@@ -40,9 +42,11 @@ type Cast<A, B> = A extends B ? A : never;
|
|
|
40
42
|
*
|
|
41
43
|
* ```ts
|
|
42
44
|
* const emptyNumbers: readonly number[] = [] as const;
|
|
45
|
+
*
|
|
43
46
|
* const words = ['Ada', 'Lovelace'] as const;
|
|
44
47
|
*
|
|
45
48
|
* assert.ok(Arr.isEmpty(emptyNumbers));
|
|
49
|
+
*
|
|
46
50
|
* assert.notOk(Arr.isEmpty(words));
|
|
47
51
|
*
|
|
48
52
|
* if (Arr.isEmpty(emptyNumbers)) {
|
|
@@ -60,9 +64,11 @@ export const isEmpty = <E,>(array: readonly E[]): array is readonly [] =>
|
|
|
60
64
|
*
|
|
61
65
|
* ```ts
|
|
62
66
|
* const users: readonly { id: number }[] = [{ id: 1 }];
|
|
67
|
+
*
|
|
63
68
|
* const emptyUsers: readonly { id: number }[] = [];
|
|
64
69
|
*
|
|
65
70
|
* assert.ok(Arr.isNonEmpty(users));
|
|
71
|
+
*
|
|
66
72
|
* assert.notOk(Arr.isNonEmpty(emptyUsers));
|
|
67
73
|
*
|
|
68
74
|
* if (Arr.isNonEmpty(users)) {
|
|
@@ -81,9 +87,11 @@ export const isNonEmpty = <E,>(
|
|
|
81
87
|
*
|
|
82
88
|
* ```ts
|
|
83
89
|
* const pair: readonly number[] = [1, 2];
|
|
90
|
+
*
|
|
84
91
|
* const triple: readonly number[] = [1, 2, 3];
|
|
85
92
|
*
|
|
86
93
|
* assert.ok(Arr.isArrayOfLength(pair, 2));
|
|
94
|
+
*
|
|
87
95
|
* assert.notOk(Arr.isArrayOfLength(triple, 2));
|
|
88
96
|
*
|
|
89
97
|
* if (Arr.isArrayOfLength(pair, 2)) {
|
|
@@ -103,9 +111,11 @@ export const isArrayOfLength = <E, N extends SizeType.ArgArr>(
|
|
|
103
111
|
*
|
|
104
112
|
* ```ts
|
|
105
113
|
* const queue: readonly string[] = ['task-1', 'task-2'];
|
|
114
|
+
*
|
|
106
115
|
* const emptyQueue: readonly string[] = [];
|
|
107
116
|
*
|
|
108
117
|
* assert.ok(Arr.isArrayAtLeastLength(queue, 1));
|
|
118
|
+
*
|
|
109
119
|
* assert.notOk(Arr.isArrayAtLeastLength(emptyQueue, 1));
|
|
110
120
|
*
|
|
111
121
|
* if (Arr.isArrayAtLeastLength(queue, 1)) {
|
|
@@ -125,12 +135,15 @@ export const isArrayAtLeastLength = <E, N extends SizeType.ArgArr>(
|
|
|
125
135
|
*
|
|
126
136
|
* ```ts
|
|
127
137
|
* const numbers = [2, 4, 6] as const;
|
|
138
|
+
*
|
|
128
139
|
* const words = ['Ada', 'Grace'] as const;
|
|
129
140
|
*
|
|
130
141
|
* const allEven = Arr.every(numbers, (value) => value % 2 === 0);
|
|
142
|
+
*
|
|
131
143
|
* const allStartWithA = Arr.every(words, (value) => value.startsWith('A'));
|
|
132
144
|
*
|
|
133
145
|
* assert.ok(allEven);
|
|
146
|
+
*
|
|
134
147
|
* assert.notOk(allStartWithA);
|
|
135
148
|
* ```
|
|
136
149
|
*/
|
|
@@ -165,10 +178,13 @@ export function every<E>(
|
|
|
165
178
|
switch (args.length) {
|
|
166
179
|
case 2: {
|
|
167
180
|
const [array, predicate] = args;
|
|
181
|
+
|
|
168
182
|
return array.every((a, i) => predicate(a, asUint32(i)));
|
|
169
183
|
}
|
|
184
|
+
|
|
170
185
|
case 1: {
|
|
171
186
|
const [predicate] = args;
|
|
187
|
+
|
|
172
188
|
return (array) => every(array, predicate);
|
|
173
189
|
}
|
|
174
190
|
}
|
|
@@ -181,12 +197,15 @@ export function every<E>(
|
|
|
181
197
|
*
|
|
182
198
|
* ```ts
|
|
183
199
|
* const numbers = [1, 3, 5] as const;
|
|
200
|
+
*
|
|
184
201
|
* const words = ['Ada', 'Grace'] as const;
|
|
185
202
|
*
|
|
186
203
|
* const hasEven = Arr.some(numbers, (value) => value % 2 === 0);
|
|
204
|
+
*
|
|
187
205
|
* const hasShortName = Arr.some(words, (value) => value.length <= 3);
|
|
188
206
|
*
|
|
189
207
|
* assert.notOk(hasEven);
|
|
208
|
+
*
|
|
190
209
|
* assert.ok(hasShortName);
|
|
191
210
|
* ```
|
|
192
211
|
*/
|
|
@@ -210,10 +229,13 @@ export function some<E>(
|
|
|
210
229
|
switch (args.length) {
|
|
211
230
|
case 2: {
|
|
212
231
|
const [array, predicate] = args;
|
|
232
|
+
|
|
213
233
|
return array.some((a, i) => predicate(a, asUint32(i)));
|
|
214
234
|
}
|
|
235
|
+
|
|
215
236
|
case 1: {
|
|
216
237
|
const [predicate] = args;
|
|
238
|
+
|
|
217
239
|
return (array) => some(array, predicate);
|
|
218
240
|
}
|
|
219
241
|
}
|
|
@@ -228,6 +250,7 @@ export function some<E>(
|
|
|
228
250
|
* const items = ['Ada', 'Grace', 'Katherine'] as const;
|
|
229
251
|
*
|
|
230
252
|
* assert.ok(Arr.indexIsInRange(items, 1));
|
|
253
|
+
*
|
|
231
254
|
* assert.notOk(Arr.indexIsInRange(items, 3));
|
|
232
255
|
*
|
|
233
256
|
* if (Arr.indexIsInRange(items, 2)) {
|
|
@@ -14,16 +14,23 @@ describe('Arr validations', () => {
|
|
|
14
14
|
describe(isArray, () => {
|
|
15
15
|
test('should return true for arrays', () => {
|
|
16
16
|
expect(isArray([1, 2, 3])).toBe(true);
|
|
17
|
+
|
|
17
18
|
expect(isArray([])).toBe(true);
|
|
19
|
+
|
|
18
20
|
expect(isArray(['a', 'b'])).toBe(true);
|
|
19
21
|
});
|
|
20
22
|
|
|
21
23
|
test('should return false for non-arrays', () => {
|
|
22
24
|
expect(isArray('hello')).toBe(false);
|
|
25
|
+
|
|
23
26
|
expect(isArray(123)).toBe(false);
|
|
27
|
+
|
|
24
28
|
expect(isArray(null)).toBe(false);
|
|
29
|
+
|
|
25
30
|
expect(isArray(undefined)).toBe(false);
|
|
31
|
+
|
|
26
32
|
expect(isArray({})).toBe(false);
|
|
33
|
+
|
|
27
34
|
expect(isArray(new Set())).toBe(false);
|
|
28
35
|
});
|
|
29
36
|
|
|
@@ -34,18 +41,23 @@ describe('Arr validations', () => {
|
|
|
34
41
|
if (isArray(value)) {
|
|
35
42
|
// value should be typed as number[]
|
|
36
43
|
expectType<typeof value, readonly number[]>('=');
|
|
44
|
+
|
|
37
45
|
return value.length;
|
|
38
46
|
}
|
|
47
|
+
|
|
39
48
|
return 0;
|
|
40
49
|
};
|
|
41
50
|
|
|
42
51
|
expect(processValue([1, 2, 3])).toBe(3);
|
|
52
|
+
|
|
43
53
|
expect(processValue('hello')).toBe(0);
|
|
54
|
+
|
|
44
55
|
expect(processValue(null)).toBe(0);
|
|
45
56
|
});
|
|
46
57
|
|
|
47
58
|
test('should work with readonly arrays', () => {
|
|
48
59
|
const readonlyArray: readonly number[] = [1, 2, 3];
|
|
60
|
+
|
|
49
61
|
if (isArray(readonlyArray)) {
|
|
50
62
|
expectType<typeof readonlyArray, readonly number[]>('=');
|
|
51
63
|
|
|
@@ -55,6 +67,7 @@ describe('Arr validations', () => {
|
|
|
55
67
|
|
|
56
68
|
test('should work with mutable arrays', () => {
|
|
57
69
|
const mutableArray: number[] = [1, 2, 3];
|
|
70
|
+
|
|
58
71
|
if (isArray(mutableArray)) {
|
|
59
72
|
expectType<typeof mutableArray, number[]>('=');
|
|
60
73
|
|
|
@@ -69,18 +82,24 @@ describe('Arr validations', () => {
|
|
|
69
82
|
if (isArray(value)) {
|
|
70
83
|
// Only number[] should remain
|
|
71
84
|
expectType<typeof value, readonly number[]>('=');
|
|
85
|
+
|
|
72
86
|
return value.length;
|
|
73
87
|
}
|
|
88
|
+
|
|
74
89
|
// Non-array types
|
|
75
90
|
expectType<typeof value, string | boolean | Readonly<{ a: number }>>(
|
|
76
91
|
'=',
|
|
77
92
|
);
|
|
93
|
+
|
|
78
94
|
return -1;
|
|
79
95
|
};
|
|
80
96
|
|
|
81
97
|
expect(checkUnion([1, 2])).toBe(2);
|
|
98
|
+
|
|
82
99
|
expect(checkUnion('test')).toBe(-1);
|
|
100
|
+
|
|
83
101
|
expect(checkUnion(true)).toBe(-1);
|
|
102
|
+
|
|
84
103
|
expect(checkUnion({ a: 1 })).toBe(-1);
|
|
85
104
|
});
|
|
86
105
|
|
|
@@ -97,38 +116,51 @@ describe('Arr validations', () => {
|
|
|
97
116
|
if (isArray(value)) {
|
|
98
117
|
// Only number[] should remain
|
|
99
118
|
expectType<typeof value, readonly unknown[]>('=');
|
|
119
|
+
|
|
100
120
|
return value.length;
|
|
101
121
|
}
|
|
122
|
+
|
|
102
123
|
// Non-array types
|
|
103
124
|
expectType<
|
|
104
125
|
typeof value,
|
|
105
126
|
string | boolean | Readonly<{ a: number }> | unknown | object
|
|
106
127
|
>('=');
|
|
128
|
+
|
|
107
129
|
return -1;
|
|
108
130
|
};
|
|
109
131
|
|
|
110
132
|
expect(checkUnion([1, 2])).toBe(2);
|
|
133
|
+
|
|
111
134
|
expect(checkUnion('test')).toBe(-1);
|
|
135
|
+
|
|
112
136
|
expect(checkUnion(true)).toBe(-1);
|
|
137
|
+
|
|
113
138
|
expect(checkUnion({ a: 1 })).toBe(-1);
|
|
114
139
|
});
|
|
115
140
|
|
|
116
141
|
test('should return true for arrays (additional)', () => {
|
|
117
142
|
expect(isArray([])).toBe(true);
|
|
143
|
+
|
|
118
144
|
expect(isArray([1, 2, 3])).toBe(true);
|
|
145
|
+
|
|
119
146
|
expect(isArray(['a', 'b'])).toBe(true);
|
|
120
147
|
});
|
|
121
148
|
|
|
122
149
|
test('should return false for non-arrays (additional)', () => {
|
|
123
150
|
expect(isArray('string')).toBe(false);
|
|
151
|
+
|
|
124
152
|
expect(isArray(123)).toBe(false);
|
|
153
|
+
|
|
125
154
|
expect(isArray({})).toBe(false);
|
|
155
|
+
|
|
126
156
|
expect(isArray(null)).toBe(false);
|
|
157
|
+
|
|
127
158
|
expect(isArray(undefined)).toBe(false);
|
|
128
159
|
});
|
|
129
160
|
|
|
130
161
|
test('should work as type guard (additional)', () => {
|
|
131
162
|
const value: unknown = [1, 2, 3];
|
|
163
|
+
|
|
132
164
|
if (isArray(value)) {
|
|
133
165
|
expectType<typeof value, readonly unknown[]>('=');
|
|
134
166
|
|
|
@@ -145,6 +177,7 @@ describe('Arr validations', () => {
|
|
|
145
177
|
describe('comprehensive type guard tests', () => {
|
|
146
178
|
test('should narrow unknown type to array', () => {
|
|
147
179
|
const value: unknown = [1, 2, 3];
|
|
180
|
+
|
|
148
181
|
if (isArray(value)) {
|
|
149
182
|
expectType<typeof value, readonly unknown[]>('=');
|
|
150
183
|
} else {
|
|
@@ -154,6 +187,7 @@ describe('Arr validations', () => {
|
|
|
154
187
|
|
|
155
188
|
test('should handle any type', () => {
|
|
156
189
|
const value: any = [1, 2, 3];
|
|
190
|
+
|
|
157
191
|
if (isArray(value)) {
|
|
158
192
|
expectType<typeof value, readonly unknown[]>('=');
|
|
159
193
|
}
|
|
@@ -161,6 +195,7 @@ describe('Arr validations', () => {
|
|
|
161
195
|
|
|
162
196
|
test('should work with nested arrays', () => {
|
|
163
197
|
const nested: readonly (readonly number[])[] = [[1], [2], [3]];
|
|
198
|
+
|
|
164
199
|
if (isArray(nested)) {
|
|
165
200
|
expectType<typeof nested, readonly (readonly number[])[]>('=');
|
|
166
201
|
}
|
|
@@ -168,6 +203,7 @@ describe('Arr validations', () => {
|
|
|
168
203
|
|
|
169
204
|
test('should distinguish between array and tuple types', () => {
|
|
170
205
|
const tuple: readonly [1, 2, 3] = [1, 2, 3];
|
|
206
|
+
|
|
171
207
|
if (isArray(tuple)) {
|
|
172
208
|
expectType<typeof tuple, readonly [1, 2, 3]>('=');
|
|
173
209
|
}
|
|
@@ -175,6 +211,7 @@ describe('Arr validations', () => {
|
|
|
175
211
|
|
|
176
212
|
test('should work with empty tuple type', () => {
|
|
177
213
|
const emptyTuple: readonly [] = [];
|
|
214
|
+
|
|
178
215
|
if (isArray(emptyTuple)) {
|
|
179
216
|
expectType<typeof emptyTuple, readonly []>('=');
|
|
180
217
|
}
|
|
@@ -185,7 +222,9 @@ describe('Arr validations', () => {
|
|
|
185
222
|
| readonly string[]
|
|
186
223
|
| readonly number[]
|
|
187
224
|
| readonly boolean[];
|
|
225
|
+
|
|
188
226
|
const mixedArray: MixedArrayUnion = [1, 2, 3];
|
|
227
|
+
|
|
189
228
|
if (isArray(mixedArray)) {
|
|
190
229
|
expectType<typeof mixedArray, MixedArrayUnion>('<=');
|
|
191
230
|
}
|
|
@@ -197,16 +236,19 @@ describe('Arr validations', () => {
|
|
|
197
236
|
// Type is narrowed to array type within this block
|
|
198
237
|
return value.length;
|
|
199
238
|
}
|
|
239
|
+
|
|
200
240
|
return 0;
|
|
201
241
|
};
|
|
202
242
|
|
|
203
243
|
expect(processGeneric([1, 2, 3])).toBe(3);
|
|
244
|
+
|
|
204
245
|
expect(processGeneric('hello')).toBe(0);
|
|
205
246
|
});
|
|
206
247
|
|
|
207
248
|
test('should handle never type correctly', () => {
|
|
208
249
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
209
250
|
const neverValue = undefined as never;
|
|
251
|
+
|
|
210
252
|
if (isArray(neverValue)) {
|
|
211
253
|
expectType<typeof neverValue, never>('=');
|
|
212
254
|
}
|
|
@@ -214,22 +256,27 @@ describe('Arr validations', () => {
|
|
|
214
256
|
|
|
215
257
|
test('should work with conditional types', () => {
|
|
216
258
|
type ArrayOrValue<T> = T extends readonly unknown[] ? T : readonly T[];
|
|
259
|
+
|
|
217
260
|
const makeArray = <T,>(value: T): ArrayOrValue<T> => {
|
|
218
261
|
if (isArray(value)) {
|
|
219
262
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
220
263
|
return value as ArrayOrValue<T>;
|
|
221
264
|
}
|
|
265
|
+
|
|
222
266
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
223
267
|
return [value] as ArrayOrValue<T>;
|
|
224
268
|
};
|
|
225
269
|
|
|
226
270
|
assert.deepStrictEqual(makeArray([1, 2, 3]), [1, 2, 3]);
|
|
271
|
+
|
|
227
272
|
assert.deepStrictEqual(makeArray(5), [5]);
|
|
228
273
|
});
|
|
229
274
|
|
|
230
275
|
test('should handle intersection types', () => {
|
|
231
276
|
type TaggedArray = readonly number[] & { tag: string };
|
|
277
|
+
|
|
232
278
|
const tagged = Object.assign([1, 2, 3], { tag: 'test' }) as TaggedArray;
|
|
279
|
+
|
|
233
280
|
if (isArray(tagged)) {
|
|
234
281
|
expectType<typeof tagged, TaggedArray>('=');
|
|
235
282
|
|
|
@@ -239,8 +286,10 @@ describe('Arr validations', () => {
|
|
|
239
286
|
|
|
240
287
|
test('should work with branded types', () => {
|
|
241
288
|
type BrandedArray = readonly number[] & Readonly<{ __brand: unknown }>;
|
|
289
|
+
|
|
242
290
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
243
291
|
const branded = [1, 2, 3] as unknown as BrandedArray;
|
|
292
|
+
|
|
244
293
|
if (isArray(branded)) {
|
|
245
294
|
expectType<typeof branded, BrandedArray>('=');
|
|
246
295
|
}
|
|
@@ -258,32 +307,43 @@ describe('Arr validations', () => {
|
|
|
258
307
|
const processComplex = (value: ComplexUnion): number => {
|
|
259
308
|
if (isArray(value)) {
|
|
260
309
|
expectType<typeof value, readonly number[]>('=');
|
|
310
|
+
|
|
261
311
|
return value.length;
|
|
262
312
|
}
|
|
313
|
+
|
|
263
314
|
if (typeof value === 'string') {
|
|
264
315
|
expectType<typeof value, string>('=');
|
|
316
|
+
|
|
265
317
|
return value.length;
|
|
266
318
|
}
|
|
319
|
+
|
|
267
320
|
if (value === null) {
|
|
268
321
|
expectType<typeof value, null>('=');
|
|
322
|
+
|
|
269
323
|
return 0;
|
|
270
324
|
}
|
|
325
|
+
|
|
271
326
|
expectType<
|
|
272
327
|
typeof value,
|
|
273
328
|
| { type: 'array'; data: readonly string[] }
|
|
274
329
|
| { type: 'object'; data: Record<string, unknown> }
|
|
275
330
|
>('=');
|
|
331
|
+
|
|
276
332
|
return -1;
|
|
277
333
|
};
|
|
278
334
|
|
|
279
335
|
expect(processComplex([1, 2, 3])).toBe(3);
|
|
336
|
+
|
|
280
337
|
expect(processComplex('test')).toBe(4);
|
|
338
|
+
|
|
281
339
|
expect(processComplex(null)).toBe(0);
|
|
340
|
+
|
|
282
341
|
expect(processComplex({ type: 'array', data: ['a', 'b'] })).toBe(-1);
|
|
283
342
|
});
|
|
284
343
|
|
|
285
344
|
test('should preserve literal types in arrays', () => {
|
|
286
345
|
const literalArray = [1, 2, 3] as const;
|
|
346
|
+
|
|
287
347
|
if (isArray(literalArray)) {
|
|
288
348
|
expectType<typeof literalArray, readonly [1, 2, 3]>('=');
|
|
289
349
|
}
|
|
@@ -291,6 +351,7 @@ describe('Arr validations', () => {
|
|
|
291
351
|
|
|
292
352
|
test('should handle arrays with mixed element types', () => {
|
|
293
353
|
const mixed: readonly (string | number | boolean)[] = [1, 'two', true];
|
|
354
|
+
|
|
294
355
|
if (isArray(mixed)) {
|
|
295
356
|
expectType<typeof mixed, readonly (string | number | boolean)[]>('=');
|
|
296
357
|
}
|
|
@@ -298,7 +359,9 @@ describe('Arr validations', () => {
|
|
|
298
359
|
|
|
299
360
|
test('should work with symbol-keyed arrays', () => {
|
|
300
361
|
const sym = Symbol('test');
|
|
362
|
+
|
|
301
363
|
const arrWithSymbol = Object.assign([1, 2, 3], { [sym]: 'value' });
|
|
364
|
+
|
|
302
365
|
if (isArray(arrWithSymbol)) {
|
|
303
366
|
expect(arrWithSymbol).toHaveLength(3);
|
|
304
367
|
}
|
|
@@ -308,6 +371,7 @@ describe('Arr validations', () => {
|
|
|
308
371
|
|
|
309
372
|
describe(isEmpty, () => {
|
|
310
373
|
const xs = [1, 2, 3] as const;
|
|
374
|
+
|
|
311
375
|
const result = isEmpty(xs);
|
|
312
376
|
|
|
313
377
|
expectType<typeof result, boolean>('=');
|
|
@@ -323,6 +387,7 @@ describe('Arr validations', () => {
|
|
|
323
387
|
|
|
324
388
|
describe(isNonEmpty, () => {
|
|
325
389
|
const xs = [1, 2, 3] as const;
|
|
390
|
+
|
|
326
391
|
const result = isNonEmpty(xs);
|
|
327
392
|
|
|
328
393
|
expectType<typeof result, boolean>('=');
|
|
@@ -395,18 +460,23 @@ describe('Arr validations', () => {
|
|
|
395
460
|
|
|
396
461
|
test('should return true for arrays of exact length (additional)', () => {
|
|
397
462
|
expect(isArrayOfLength([1, 2, 3], 3)).toBe(true);
|
|
463
|
+
|
|
398
464
|
expect(isArrayOfLength([], 0)).toBe(true);
|
|
465
|
+
|
|
399
466
|
expect(isArrayOfLength(['a'], 1)).toBe(true);
|
|
400
467
|
});
|
|
401
468
|
|
|
402
469
|
test('should return false for arrays of different length (additional)', () => {
|
|
403
470
|
expect(isArrayOfLength([1, 2, 3], 2)).toBe(false);
|
|
471
|
+
|
|
404
472
|
expect(isArrayOfLength([1, 2, 3], 4)).toBe(false);
|
|
473
|
+
|
|
405
474
|
expect(isArrayOfLength([], 1)).toBe(false);
|
|
406
475
|
});
|
|
407
476
|
|
|
408
477
|
test('should work as type guard with exact length (additional)', () => {
|
|
409
478
|
const array: readonly number[] = [1, 2, 3];
|
|
479
|
+
|
|
410
480
|
if (isArrayOfLength(array, 3)) {
|
|
411
481
|
expectType<typeof array, ArrayOfLength<3, number>>('=');
|
|
412
482
|
|
|
@@ -474,18 +544,23 @@ describe('Arr validations', () => {
|
|
|
474
544
|
|
|
475
545
|
test('should return true for arrays of at least specified length (additional)', () => {
|
|
476
546
|
expect(isArrayAtLeastLength([1, 2, 3], 3)).toBe(true);
|
|
547
|
+
|
|
477
548
|
expect(isArrayAtLeastLength([1, 2, 3], 2)).toBe(true);
|
|
549
|
+
|
|
478
550
|
expect(isArrayAtLeastLength([1, 2, 3], 1)).toBe(true);
|
|
551
|
+
|
|
479
552
|
expect(isArrayAtLeastLength([1, 2, 3], 0)).toBe(true);
|
|
480
553
|
});
|
|
481
554
|
|
|
482
555
|
test('should return false for arrays shorter than specified length (additional)', () => {
|
|
483
556
|
expect(isArrayAtLeastLength([1, 2, 3], 4)).toBe(false);
|
|
557
|
+
|
|
484
558
|
expect(isArrayAtLeastLength([], 1)).toBe(false);
|
|
485
559
|
});
|
|
486
560
|
|
|
487
561
|
test('should work as type guard for at least length (additional)', () => {
|
|
488
562
|
const array: readonly number[] = [1, 2, 3];
|
|
563
|
+
|
|
489
564
|
if (isArrayAtLeastLength(array, 2)) {
|
|
490
565
|
expectType<typeof array, ArrayAtLeastLen<2, number>>('=');
|
|
491
566
|
|
|
@@ -497,6 +572,7 @@ describe('Arr validations', () => {
|
|
|
497
572
|
describe(every, () => {
|
|
498
573
|
test('should return true when all elements satisfy predicate', () => {
|
|
499
574
|
const evens = [2, 4, 6, 8];
|
|
575
|
+
|
|
500
576
|
const allEven = every(evens, (n) => n % 2 === 0);
|
|
501
577
|
|
|
502
578
|
expect(allEven).toBe(true);
|
|
@@ -504,6 +580,7 @@ describe('Arr validations', () => {
|
|
|
504
580
|
|
|
505
581
|
test('should return false when not all elements satisfy predicate', () => {
|
|
506
582
|
const mixed = [2, 3, 4, 6];
|
|
583
|
+
|
|
507
584
|
const allEven = every(mixed, (n) => n % 2 === 0);
|
|
508
585
|
|
|
509
586
|
expect(allEven).toBe(false);
|
|
@@ -511,6 +588,7 @@ describe('Arr validations', () => {
|
|
|
511
588
|
|
|
512
589
|
test('should work as type guard', () => {
|
|
513
590
|
const mixed: (string | number)[] = ['hello', 'world'];
|
|
591
|
+
|
|
514
592
|
if (every(mixed, (x): x is string => typeof x === 'string')) {
|
|
515
593
|
// TypeScript narrows mixed to readonly string[] here
|
|
516
594
|
expect(mixed.every((s) => typeof s === 'string')).toBe(true);
|
|
@@ -519,16 +597,21 @@ describe('Arr validations', () => {
|
|
|
519
597
|
|
|
520
598
|
test('should work with curried version', () => {
|
|
521
599
|
const isPositive = (n: number): boolean => n > 0;
|
|
600
|
+
|
|
522
601
|
const allPositive = every(isPositive);
|
|
523
602
|
|
|
524
603
|
expect(allPositive([1, 2, 3])).toBe(true);
|
|
604
|
+
|
|
525
605
|
expect(allPositive([1, -2, 3])).toBe(false);
|
|
526
606
|
});
|
|
527
607
|
|
|
528
608
|
test('should work with curried type guards', () => {
|
|
529
609
|
const isString = (x: unknown): x is string => typeof x === 'string';
|
|
610
|
+
|
|
530
611
|
const allStrings = every(isString);
|
|
612
|
+
|
|
531
613
|
const data: unknown[] = ['a', 'b', 'c'];
|
|
614
|
+
|
|
532
615
|
if (allStrings(data)) {
|
|
533
616
|
// TypeScript narrows data to readonly string[] here
|
|
534
617
|
expect(data.join('')).toBe('abc');
|
|
@@ -537,6 +620,7 @@ describe('Arr validations', () => {
|
|
|
537
620
|
|
|
538
621
|
test('should return true for empty array', () => {
|
|
539
622
|
const empty: number[] = [];
|
|
623
|
+
|
|
540
624
|
const result = every(empty, (n) => n > 0);
|
|
541
625
|
|
|
542
626
|
expect(result).toBe(true);
|
|
@@ -544,6 +628,7 @@ describe('Arr validations', () => {
|
|
|
544
628
|
|
|
545
629
|
test('should pass index to predicate', () => {
|
|
546
630
|
const numbers = [0, 1, 2, 3];
|
|
631
|
+
|
|
547
632
|
const indexMatchesValue = every(numbers, (val, idx) => val === idx);
|
|
548
633
|
|
|
549
634
|
expect(indexMatchesValue).toBe(true);
|
|
@@ -553,6 +638,7 @@ describe('Arr validations', () => {
|
|
|
553
638
|
describe(some, () => {
|
|
554
639
|
test('should return true when at least one element satisfies predicate', () => {
|
|
555
640
|
const numbers = [1, 3, 5, 8];
|
|
641
|
+
|
|
556
642
|
const hasEven = some(numbers, (n) => n % 2 === 0);
|
|
557
643
|
|
|
558
644
|
expect(hasEven).toBe(true);
|
|
@@ -560,6 +646,7 @@ describe('Arr validations', () => {
|
|
|
560
646
|
|
|
561
647
|
test('should return false when no elements satisfy predicate', () => {
|
|
562
648
|
const odds = [1, 3, 5, 7];
|
|
649
|
+
|
|
563
650
|
const hasEven = some(odds, (n) => n % 2 === 0);
|
|
564
651
|
|
|
565
652
|
expect(hasEven).toBe(false);
|
|
@@ -567,14 +654,17 @@ describe('Arr validations', () => {
|
|
|
567
654
|
|
|
568
655
|
test('should work with curried version', () => {
|
|
569
656
|
const isNegative = (n: number): boolean => n < 0;
|
|
657
|
+
|
|
570
658
|
const hasNegative = some(isNegative);
|
|
571
659
|
|
|
572
660
|
expect(hasNegative([1, 2, -3])).toBe(true);
|
|
661
|
+
|
|
573
662
|
expect(hasNegative([1, 2, 3])).toBe(false);
|
|
574
663
|
});
|
|
575
664
|
|
|
576
665
|
test('should return false for empty array', () => {
|
|
577
666
|
const empty: number[] = [];
|
|
667
|
+
|
|
578
668
|
const result = some(empty, (n) => n > 0);
|
|
579
669
|
|
|
580
670
|
expect(result).toBe(false);
|
|
@@ -582,6 +672,7 @@ describe('Arr validations', () => {
|
|
|
582
672
|
|
|
583
673
|
test('should pass index to predicate', () => {
|
|
584
674
|
const numbers = [10, 10, 10, 30];
|
|
675
|
+
|
|
585
676
|
const hasValueMatchingIndex = some(
|
|
586
677
|
numbers,
|
|
587
678
|
(val, idx) => val === idx * 10,
|
|
@@ -596,7 +687,9 @@ describe('Arr validations', () => {
|
|
|
596
687
|
const array = ['a', 'b', 'c'];
|
|
597
688
|
|
|
598
689
|
expect(indexIsInRange(array, 0)).toBe(true);
|
|
690
|
+
|
|
599
691
|
expect(indexIsInRange(array, 1)).toBe(true);
|
|
692
|
+
|
|
600
693
|
expect(indexIsInRange(array, 2)).toBe(true);
|
|
601
694
|
});
|
|
602
695
|
|
|
@@ -604,6 +697,7 @@ describe('Arr validations', () => {
|
|
|
604
697
|
const array = ['a', 'b', 'c'];
|
|
605
698
|
|
|
606
699
|
expect(indexIsInRange(array, 3)).toBe(false);
|
|
700
|
+
|
|
607
701
|
expect(indexIsInRange(array, 10)).toBe(false);
|
|
608
702
|
});
|
|
609
703
|
|
|
@@ -611,6 +705,7 @@ describe('Arr validations', () => {
|
|
|
611
705
|
const empty: readonly string[] = [];
|
|
612
706
|
|
|
613
707
|
expect(indexIsInRange(empty, 0)).toBe(false);
|
|
708
|
+
|
|
614
709
|
// @ts-expect-error negative indices should not be allowed
|
|
615
710
|
expect(indexIsInRange(empty, -1)).toBe(false);
|
|
616
711
|
});
|
|
@@ -620,6 +715,7 @@ describe('Arr validations', () => {
|
|
|
620
715
|
|
|
621
716
|
// @ts-expect-error floating point indices should not be allowed
|
|
622
717
|
expect(indexIsInRange(array, 1.5)).toBe(true); // JavaScript arrays accept floating point indices
|
|
718
|
+
|
|
623
719
|
// @ts-expect-error floating point indices should not be allowed
|
|
624
720
|
expect(indexIsInRange(array, 3.1)).toBe(false);
|
|
625
721
|
});
|
|
@@ -32,6 +32,7 @@ describe('Array.some', () => {
|
|
|
32
32
|
|
|
33
33
|
describe('Array.flat', () => {
|
|
34
34
|
const xs = [1, 2, [3, 4, [5, 6, [7, 8]]]] as const;
|
|
35
|
+
|
|
35
36
|
const result = xs.flat();
|
|
36
37
|
|
|
37
38
|
expectType<
|
|
@@ -47,6 +48,7 @@ describe('Array.flat', () => {
|
|
|
47
48
|
describe('Array.includes', () => {
|
|
48
49
|
{
|
|
49
50
|
const xs = [2, 1, 3] as const;
|
|
51
|
+
|
|
50
52
|
const result = xs.includes(2);
|
|
51
53
|
|
|
52
54
|
expectType<typeof result, boolean>('=');
|
|
@@ -55,8 +57,10 @@ describe('Array.includes', () => {
|
|
|
55
57
|
expect(result).toBe(true);
|
|
56
58
|
});
|
|
57
59
|
}
|
|
60
|
+
|
|
58
61
|
{
|
|
59
62
|
const xs: readonly number[] = [2, 1, 3];
|
|
63
|
+
|
|
60
64
|
const result = xs.includes(4);
|
|
61
65
|
|
|
62
66
|
expectType<typeof result, boolean>('=');
|
|
@@ -70,6 +74,7 @@ describe('Array.includes', () => {
|
|
|
70
74
|
describe('Array.find', () => {
|
|
71
75
|
{
|
|
72
76
|
const xs = [{ v: 2 }, { v: 1 }, { v: 3 }] as const;
|
|
77
|
+
|
|
73
78
|
const result = xs.find((x) => x.v === 1);
|
|
74
79
|
|
|
75
80
|
expectType<typeof result, Readonly<{ v: 1 }> | undefined>('=');
|
|
@@ -78,12 +83,14 @@ describe('Array.find', () => {
|
|
|
78
83
|
assert.deepStrictEqual(result, { v: 1 });
|
|
79
84
|
});
|
|
80
85
|
}
|
|
86
|
+
|
|
81
87
|
{
|
|
82
88
|
const xs: readonly Readonly<{ v: 1 | 2 | 3 }>[] = [
|
|
83
89
|
{ v: 2 },
|
|
84
90
|
{ v: 1 },
|
|
85
91
|
{ v: 3 },
|
|
86
92
|
] as const;
|
|
93
|
+
|
|
87
94
|
const result = xs.find((x) => x.v === 1);
|
|
88
95
|
|
|
89
96
|
expectType<typeof result, Readonly<{ v: 1 | 2 | 3 }> | undefined>('=');
|
|
@@ -97,6 +104,7 @@ describe('Array.find', () => {
|
|
|
97
104
|
describe('Array.findIndex', () => {
|
|
98
105
|
{
|
|
99
106
|
const xs = [{ v: 2 }, { v: 1 }, { v: 3 }] as const;
|
|
107
|
+
|
|
100
108
|
const result = xs.findIndex((x) => x.v === 1);
|
|
101
109
|
|
|
102
110
|
expectType<typeof result, number>('=');
|
|
@@ -105,12 +113,14 @@ describe('Array.findIndex', () => {
|
|
|
105
113
|
expect(result).toBe(1);
|
|
106
114
|
});
|
|
107
115
|
}
|
|
116
|
+
|
|
108
117
|
{
|
|
109
118
|
const xs: readonly Readonly<{ v: 1 | 2 | 3 }>[] = [
|
|
110
119
|
{ v: 2 },
|
|
111
120
|
{ v: 1 },
|
|
112
121
|
{ v: 3 },
|
|
113
122
|
] as const;
|
|
123
|
+
|
|
114
124
|
const result = xs.findIndex((x) => x.v === 1);
|
|
115
125
|
|
|
116
126
|
expectType<typeof result, number>('=');
|
|
@@ -124,6 +134,7 @@ describe('Array.findIndex', () => {
|
|
|
124
134
|
describe('Array.filter', () => {
|
|
125
135
|
{
|
|
126
136
|
const xs = [1, 2, 3] as const;
|
|
137
|
+
|
|
127
138
|
const filtered = xs.filter((x): x is 1 | 3 => x % 2 === 1);
|
|
128
139
|
|
|
129
140
|
expectType<typeof filtered, (1 | 3)[]>('=');
|
|
@@ -135,6 +146,7 @@ describe('Array.filter', () => {
|
|
|
135
146
|
|
|
136
147
|
{
|
|
137
148
|
const xs = [1, 2, 3] as const;
|
|
149
|
+
|
|
138
150
|
const filtered = xs.filter((x) => x % 2 === 1);
|
|
139
151
|
|
|
140
152
|
expectType<typeof filtered, (1 | 2 | 3)[]>('=');
|