@duplojs/utils 0.3.0 → 1.0.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/dist/array/at/default.cjs +12 -0
- package/dist/array/at/default.d.ts +5 -0
- package/dist/array/at/default.mjs +10 -0
- package/dist/array/at/first.cjs +7 -0
- package/dist/array/at/first.d.ts +2 -0
- package/dist/array/at/first.mjs +5 -0
- package/dist/array/at/index.d.ts +3 -0
- package/dist/array/at/last.cjs +7 -0
- package/dist/array/at/last.d.ts +1 -0
- package/dist/array/at/last.mjs +5 -0
- package/dist/array/concat.cjs +12 -0
- package/dist/array/concat.d.ts +2 -0
- package/dist/array/concat.mjs +10 -0
- package/dist/array/copyWithin.cjs +12 -0
- package/dist/array/copyWithin.d.ts +2 -0
- package/dist/array/copyWithin.mjs +10 -0
- package/dist/array/every.cjs +12 -0
- package/dist/array/every.d.ts +6 -0
- package/dist/array/every.mjs +10 -0
- package/dist/array/fill/all.cjs +12 -0
- package/dist/array/fill/all.d.ts +2 -0
- package/dist/array/fill/all.mjs +10 -0
- package/dist/array/fill/default.cjs +12 -0
- package/dist/array/fill/default.d.ts +2 -0
- package/dist/array/fill/default.mjs +10 -0
- package/dist/array/fill/index.d.ts +2 -0
- package/dist/array/filter.cjs +12 -0
- package/dist/array/filter.d.ts +8 -0
- package/dist/array/filter.mjs +10 -0
- package/dist/array/find.cjs +12 -0
- package/dist/array/find.d.ts +8 -0
- package/dist/array/find.mjs +10 -0
- package/dist/array/findAndReplace.cjs +19 -0
- package/dist/array/findAndReplace.d.ts +7 -0
- package/dist/array/findAndReplace.mjs +17 -0
- package/dist/array/findAndSplice/delete.cjs +19 -0
- package/dist/array/findAndSplice/delete.d.ts +6 -0
- package/dist/array/findAndSplice/delete.mjs +17 -0
- package/dist/array/findAndSplice/index.d.ts +3 -0
- package/dist/array/findAndSplice/insert.cjs +19 -0
- package/dist/array/findAndSplice/insert.d.ts +6 -0
- package/dist/array/findAndSplice/insert.mjs +17 -0
- package/dist/array/findAndSplice/replace.cjs +19 -0
- package/dist/array/findAndSplice/replace.d.ts +6 -0
- package/dist/array/findAndSplice/replace.mjs +17 -0
- package/dist/array/findIndex.cjs +17 -0
- package/dist/array/findIndex.d.ts +6 -0
- package/dist/array/findIndex.mjs +15 -0
- package/dist/array/findLast.cjs +18 -0
- package/dist/array/findLast.d.ts +8 -0
- package/dist/array/findLast.mjs +16 -0
- package/dist/array/findLastIndex.cjs +18 -0
- package/dist/array/findLastIndex.d.ts +6 -0
- package/dist/array/findLastIndex.mjs +16 -0
- package/dist/array/flat.cjs +19 -0
- package/dist/array/flat.d.ts +4 -0
- package/dist/array/flat.mjs +17 -0
- package/dist/array/flatMap.cjs +12 -0
- package/dist/array/flatMap.d.ts +6 -0
- package/dist/array/flatMap.mjs +10 -0
- package/dist/array/from.cjs +16 -0
- package/dist/array/from.d.ts +1 -0
- package/dist/array/from.mjs +14 -0
- package/dist/array/group.cjs +37 -0
- package/dist/array/group.d.ts +16 -0
- package/dist/array/group.mjs +34 -0
- package/dist/array/includes.cjs +12 -0
- package/dist/array/includes.d.ts +2 -0
- package/dist/array/includes.mjs +10 -0
- package/dist/array/index.cjs +102 -0
- package/dist/array/index.d.ts +40 -0
- package/dist/array/index.mjs +48 -0
- package/dist/array/indexOf.cjs +23 -0
- package/dist/array/indexOf.d.ts +2 -0
- package/dist/array/indexOf.mjs +21 -0
- package/dist/array/is.cjs +7 -0
- package/dist/array/is.d.ts +1 -0
- package/dist/array/is.mjs +5 -0
- package/dist/array/join.cjs +12 -0
- package/dist/array/join.d.ts +8 -0
- package/dist/array/join.mjs +10 -0
- package/dist/array/lastIndexOf.cjs +23 -0
- package/dist/array/lastIndexOf.d.ts +2 -0
- package/dist/array/lastIndexOf.mjs +21 -0
- package/dist/array/map.cjs +12 -0
- package/dist/array/map.d.ts +6 -0
- package/dist/array/map.mjs +10 -0
- package/dist/array/maxElements.cjs +12 -0
- package/dist/array/maxElements.d.ts +2 -0
- package/dist/array/maxElements.mjs +10 -0
- package/dist/array/maxOf.cjs +17 -0
- package/dist/array/maxOf.d.ts +1 -0
- package/dist/array/maxOf.mjs +15 -0
- package/dist/array/minElements.cjs +12 -0
- package/dist/array/minElements.d.ts +3 -0
- package/dist/array/minElements.mjs +10 -0
- package/dist/array/minOf.cjs +17 -0
- package/dist/array/minOf.d.ts +1 -0
- package/dist/array/minOf.mjs +15 -0
- package/dist/array/pop.cjs +7 -0
- package/dist/array/pop.d.ts +3 -0
- package/dist/array/pop.mjs +5 -0
- package/dist/array/push.cjs +12 -0
- package/dist/array/push.d.ts +2 -0
- package/dist/array/push.mjs +10 -0
- package/dist/array/reduce.cjs +41 -0
- package/dist/array/reduce.d.ts +30 -0
- package/dist/array/reduce.mjs +39 -0
- package/dist/array/reduceRight.cjs +41 -0
- package/dist/array/reduceRight.d.ts +30 -0
- package/dist/array/reduceRight.mjs +39 -0
- package/dist/array/reverse.cjs +7 -0
- package/dist/array/reverse.d.ts +3 -0
- package/dist/array/reverse.mjs +5 -0
- package/dist/array/set.cjs +14 -0
- package/dist/array/set.d.ts +2 -0
- package/dist/array/set.mjs +12 -0
- package/dist/array/shift.cjs +7 -0
- package/dist/array/shift.d.ts +3 -0
- package/dist/array/shift.mjs +5 -0
- package/dist/array/slice.cjs +12 -0
- package/dist/array/slice.d.ts +2 -0
- package/dist/array/slice.mjs +10 -0
- package/dist/array/some.cjs +12 -0
- package/dist/array/some.d.ts +6 -0
- package/dist/array/some.mjs +10 -0
- package/dist/array/sort/default.cjs +12 -0
- package/dist/array/sort/default.d.ts +2 -0
- package/dist/array/sort/default.mjs +10 -0
- package/dist/array/sort/index.d.ts +3 -0
- package/dist/array/sort/number.cjs +14 -0
- package/dist/array/sort/number.d.ts +4 -0
- package/dist/array/sort/number.mjs +12 -0
- package/dist/array/sort/string.cjs +24 -0
- package/dist/array/sort/string.d.ts +4 -0
- package/dist/array/sort/string.mjs +22 -0
- package/dist/array/splice/delete.cjs +14 -0
- package/dist/array/splice/delete.d.ts +2 -0
- package/dist/array/splice/delete.mjs +12 -0
- package/dist/array/splice/index.d.ts +3 -0
- package/dist/array/splice/insert.cjs +14 -0
- package/dist/array/splice/insert.d.ts +2 -0
- package/dist/array/splice/insert.mjs +12 -0
- package/dist/array/splice/replace.cjs +14 -0
- package/dist/array/splice/replace.d.ts +2 -0
- package/dist/array/splice/replace.mjs +12 -0
- package/dist/array/sum.cjs +11 -0
- package/dist/array/sum.d.ts +1 -0
- package/dist/array/sum.mjs +9 -0
- package/dist/array/types/atTuple.d.ts +1 -0
- package/dist/array/types/excludeTuple.d.ts +29 -0
- package/dist/array/types/extractTuple.d.ts +38 -0
- package/dist/array/types/index.d.ts +7 -0
- package/dist/array/types/mergeUnionTuple.d.ts +7 -0
- package/dist/array/types/popTuple.d.ts +2 -0
- package/dist/array/types/reverseTuple.d.ts +2 -0
- package/dist/array/types/shiftTuple.d.ts +2 -0
- package/dist/array/types/tupleHasSpread.d.ts +2 -0
- package/dist/array/unshift.cjs +12 -0
- package/dist/array/unshift.d.ts +2 -0
- package/dist/array/unshift.mjs +10 -0
- package/dist/common/addWrappedProperties.cjs +13 -0
- package/dist/common/addWrappedProperties.d.ts +4 -0
- package/dist/common/addWrappedProperties.mjs +11 -0
- package/dist/common/asyncInnerPipe.cjs +14 -0
- package/dist/common/asyncInnerPipe.d.ts +15 -0
- package/dist/common/asyncInnerPipe.mjs +12 -0
- package/dist/common/asyncLoop.cjs +19 -0
- package/dist/common/asyncLoop.d.ts +10 -0
- package/dist/common/asyncLoop.mjs +17 -0
- package/dist/common/asyncPipe.cjs +11 -0
- package/dist/common/asyncPipe.d.ts +16 -0
- package/dist/common/asyncPipe.mjs +9 -0
- package/dist/common/asyncRetry.cjs +25 -0
- package/dist/common/asyncRetry.d.ts +8 -0
- package/dist/common/asyncRetry.mjs +22 -0
- package/dist/common/clone.cjs +24 -0
- package/dist/{clone.d.ts → common/clone.d.ts} +1 -1
- package/dist/common/clone.mjs +22 -0
- package/dist/common/enum.cjs +11 -0
- package/dist/common/enum.d.ts +9 -0
- package/dist/common/enum.mjs +9 -0
- package/dist/common/escapeRegExp.cjs +7 -0
- package/dist/common/escapeRegExp.mjs +5 -0
- package/dist/common/externalPromise.cjs +17 -0
- package/dist/common/externalPromise.d.ts +5 -0
- package/dist/common/externalPromise.mjs +15 -0
- package/dist/common/forward.cjs +7 -0
- package/dist/common/forward.d.ts +1 -0
- package/dist/common/forward.mjs +5 -0
- package/dist/common/index.d.ts +27 -0
- package/dist/common/innerPipe.cjs +13 -0
- package/dist/common/innerPipe.d.ts +12 -0
- package/dist/common/innerPipe.mjs +11 -0
- package/dist/common/interpolation.cjs +9 -0
- package/dist/{interpolation.d.ts → common/interpolation.d.ts} +3 -3
- package/dist/common/interpolation.mjs +7 -0
- package/dist/common/kind.cjs +29 -0
- package/dist/common/kind.d.ts +26 -0
- package/dist/common/kind.mjs +26 -0
- package/dist/common/loop.cjs +19 -0
- package/dist/common/loop.d.ts +15 -0
- package/dist/common/loop.mjs +17 -0
- package/dist/common/pipe.cjs +11 -0
- package/dist/common/pipe.d.ts +12 -0
- package/dist/common/pipe.mjs +9 -0
- package/dist/common/promiseObject.cjs +12 -0
- package/dist/common/promiseObject.d.ts +7 -0
- package/dist/common/promiseObject.mjs +10 -0
- package/dist/common/simpleClone.cjs +25 -0
- package/dist/common/simpleClone.d.ts +1 -0
- package/dist/common/simpleClone.mjs +23 -0
- package/dist/common/sleep.cjs +7 -0
- package/dist/common/sleep.d.ts +1 -0
- package/dist/common/sleep.mjs +5 -0
- package/dist/common/stringToBytes.cjs +43 -0
- package/dist/{stringToBytes.d.ts → common/stringToBytes.d.ts} +3 -0
- package/dist/common/stringToBytes.mjs +40 -0
- package/dist/common/stringToMillisecond.cjs +48 -0
- package/dist/common/stringToMillisecond.d.ts +18 -0
- package/dist/common/stringToMillisecond.mjs +45 -0
- package/dist/common/toJson.cjs +34 -0
- package/dist/common/toJson.d.ts +11 -0
- package/dist/common/toJson.mjs +32 -0
- package/dist/common/toString.cjs +7 -0
- package/dist/common/toString.d.ts +1 -0
- package/dist/common/toString.mjs +5 -0
- package/dist/common/toTransform.cjs +34 -0
- package/dist/common/toTransform.d.ts +11 -0
- package/dist/common/toTransform.mjs +32 -0
- package/dist/common/toWrappedValue.cjs +11 -0
- package/dist/common/toWrappedValue.d.ts +4 -0
- package/dist/common/toWrappedValue.mjs +9 -0
- package/dist/common/types/IsExtends.d.ts +1 -0
- package/dist/common/types/adaptor.d.ts +1 -0
- package/dist/common/types/addOne.d.ts +23 -0
- package/dist/common/types/and.d.ts +2 -0
- package/dist/common/types/anyFunction.d.ts +1 -0
- package/dist/common/types/anyObject.d.ts +4 -0
- package/dist/common/types/anyTuple.d.ts +1 -0
- package/dist/common/types/anyValue.d.ts +2 -0
- package/dist/common/types/breakGenericLink.d.ts +1 -0
- package/dist/common/types/createTupleFromLength.d.ts +6 -0
- package/dist/common/types/deepPartial.d.ts +3 -0
- package/dist/common/types/deepRemoveReadonly.d.ts +3 -0
- package/dist/common/types/escapeAny.d.ts +1 -0
- package/dist/common/types/escapeVoid.d.ts +1 -0
- package/dist/common/types/expectType.d.ts +6 -0
- package/dist/common/types/fixDeepFunctionInfer.d.ts +2 -0
- package/dist/common/types/forcePredicate.d.ts +3 -0
- package/dist/common/types/index.d.ts +37 -0
- package/dist/common/types/isStringLIteral.d.ts +2 -0
- package/dist/common/types/isUnion.d.ts +2 -0
- package/dist/common/types/lastUnionElement.d.ts +2 -0
- package/dist/common/types/maybeArray.d.ts +1 -0
- package/dist/common/types/maybePromise.d.ts +1 -0
- package/dist/common/types/maybeWrapped.d.ts +2 -0
- package/dist/common/types/neverCoalescing.d.ts +2 -0
- package/dist/common/types/not.d.ts +1 -0
- package/dist/common/types/objectEntry.d.ts +2 -0
- package/dist/common/types/objectKey.d.ts +1 -0
- package/dist/common/types/or.d.ts +2 -0
- package/dist/common/types/removeDuplicateInUnion.d.ts +4 -0
- package/dist/common/types/removeReadonly.d.ts +3 -0
- package/dist/common/types/simplifyTopLevel.d.ts +3 -0
- package/dist/common/types/simplifyType.d.ts +3 -0
- package/dist/common/types/simplifyTypeForce.d.ts +3 -0
- package/dist/common/types/toLargeEnsemble.d.ts +6 -0
- package/dist/common/types/unionContain.d.ts +2 -0
- package/dist/common/types/unionToIntersection.d.ts +1 -0
- package/dist/common/types/unionToTuple.d.ts +5 -0
- package/dist/common/unwrap.cjs +11 -0
- package/dist/common/unwrap.d.ts +4 -0
- package/dist/common/unwrap.mjs +9 -0
- package/dist/common/when.d.ts +5 -0
- package/dist/common/whenNot.d.ts +5 -0
- package/dist/common/wrapValue.cjs +15 -0
- package/dist/common/wrapValue.d.ts +9 -0
- package/dist/common/wrapValue.mjs +11 -0
- package/dist/either/base.cjs +7 -0
- package/dist/either/base.d.ts +1 -0
- package/dist/either/base.mjs +5 -0
- package/dist/either/bool/base.cjs +7 -0
- package/dist/either/bool/base.d.ts +1 -0
- package/dist/either/bool/base.mjs +5 -0
- package/dist/either/bool/create.cjs +16 -0
- package/dist/either/bool/create.d.ts +4 -0
- package/dist/either/bool/create.mjs +14 -0
- package/dist/either/bool/falsy.cjs +44 -0
- package/dist/either/bool/falsy.d.ts +16 -0
- package/dist/either/bool/falsy.mjs +39 -0
- package/dist/either/bool/index.d.ts +4 -0
- package/dist/either/bool/truthy.cjs +44 -0
- package/dist/either/bool/truthy.d.ts +15 -0
- package/dist/either/bool/truthy.mjs +39 -0
- package/dist/either/future/MaybeFutureEither.d.ts +2 -0
- package/dist/either/future/base.cjs +7 -0
- package/dist/either/future/base.d.ts +1 -0
- package/dist/either/future/base.mjs +5 -0
- package/dist/either/future/create.cjs +49 -0
- package/dist/either/future/create.d.ts +25 -0
- package/dist/either/future/create.mjs +46 -0
- package/dist/either/future/error.cjs +13 -0
- package/dist/either/future/error.d.ts +6 -0
- package/dist/either/future/error.mjs +10 -0
- package/dist/either/future/index.d.ts +4 -0
- package/dist/either/future/success.cjs +13 -0
- package/dist/either/future/success.d.ts +6 -0
- package/dist/either/future/success.mjs +10 -0
- package/dist/either/hasInformation.cjs +10 -0
- package/dist/either/hasInformation.d.ts +7 -0
- package/dist/either/hasInformation.mjs +8 -0
- package/dist/either/index.cjs +108 -0
- package/dist/either/index.d.ts +10 -0
- package/dist/either/index.mjs +35 -0
- package/dist/either/left/create.cjs +13 -0
- package/dist/either/left/create.d.ts +6 -0
- package/dist/either/left/create.mjs +10 -0
- package/dist/either/left/error.cjs +12 -0
- package/dist/either/left/error.d.ts +5 -0
- package/dist/either/left/error.mjs +9 -0
- package/dist/either/left/fail.cjs +12 -0
- package/dist/either/left/fail.d.ts +5 -0
- package/dist/either/left/fail.mjs +9 -0
- package/dist/either/left/index.d.ts +5 -0
- package/dist/either/left/is.cjs +13 -0
- package/dist/either/left/is.d.ts +2 -0
- package/dist/either/left/is.mjs +11 -0
- package/dist/either/left/when.cjs +18 -0
- package/dist/either/left/when.d.ts +4 -0
- package/dist/either/left/when.mjs +16 -0
- package/dist/either/nullable/base.cjs +7 -0
- package/dist/either/nullable/base.d.ts +1 -0
- package/dist/either/nullable/base.mjs +5 -0
- package/dist/either/nullable/create.cjs +12 -0
- package/dist/either/nullable/create.d.ts +3 -0
- package/dist/either/nullable/create.mjs +10 -0
- package/dist/either/nullable/empty.cjs +44 -0
- package/dist/either/nullable/empty.d.ts +15 -0
- package/dist/either/nullable/empty.mjs +39 -0
- package/dist/either/nullable/filled.cjs +44 -0
- package/dist/either/nullable/filled.d.ts +15 -0
- package/dist/either/nullable/filled.mjs +39 -0
- package/dist/either/nullable/index.d.ts +4 -0
- package/dist/either/nullish/base.cjs +7 -0
- package/dist/either/nullish/base.d.ts +1 -0
- package/dist/either/nullish/base.mjs +5 -0
- package/dist/either/nullish/create.cjs +12 -0
- package/dist/either/nullish/create.d.ts +3 -0
- package/dist/either/nullish/create.mjs +10 -0
- package/dist/either/nullish/empty.cjs +44 -0
- package/dist/either/nullish/empty.d.ts +16 -0
- package/dist/either/nullish/empty.mjs +39 -0
- package/dist/either/nullish/filled.cjs +44 -0
- package/dist/either/nullish/filled.d.ts +15 -0
- package/dist/either/nullish/filled.mjs +39 -0
- package/dist/either/nullish/index.d.ts +4 -0
- package/dist/either/optional/base.cjs +7 -0
- package/dist/either/optional/base.d.ts +1 -0
- package/dist/either/optional/base.mjs +5 -0
- package/dist/either/optional/create.cjs +12 -0
- package/dist/either/optional/create.d.ts +3 -0
- package/dist/either/optional/create.mjs +10 -0
- package/dist/either/optional/empty.cjs +43 -0
- package/dist/either/optional/empty.d.ts +15 -0
- package/dist/either/optional/empty.mjs +38 -0
- package/dist/either/optional/filled.cjs +44 -0
- package/dist/either/optional/filled.d.ts +15 -0
- package/dist/either/optional/filled.mjs +39 -0
- package/dist/either/optional/index.d.ts +4 -0
- package/dist/either/right/asyncPipe.cjs +28 -0
- package/dist/either/right/asyncPipe.d.ts +22 -0
- package/dist/either/right/asyncPipe.mjs +26 -0
- package/dist/either/right/create.cjs +13 -0
- package/dist/either/right/create.d.ts +6 -0
- package/dist/either/right/create.mjs +10 -0
- package/dist/either/right/index.d.ts +7 -0
- package/dist/either/right/is.cjs +13 -0
- package/dist/either/right/is.d.ts +2 -0
- package/dist/either/right/is.mjs +11 -0
- package/dist/either/right/ok.cjs +12 -0
- package/dist/either/right/ok.d.ts +5 -0
- package/dist/either/right/ok.mjs +9 -0
- package/dist/either/right/pipe.cjs +22 -0
- package/dist/either/right/pipe.d.ts +19 -0
- package/dist/either/right/pipe.mjs +20 -0
- package/dist/either/right/success.cjs +12 -0
- package/dist/either/right/success.d.ts +5 -0
- package/dist/either/right/success.mjs +9 -0
- package/dist/either/right/when.cjs +18 -0
- package/dist/either/right/when.d.ts +4 -0
- package/dist/either/right/when.mjs +16 -0
- package/dist/either/whenHasInformation.cjs +24 -0
- package/dist/either/whenHasInformation.d.ts +8 -0
- package/dist/either/whenHasInformation.mjs +22 -0
- package/dist/generator/asyncFilter.cjs +20 -0
- package/dist/generator/asyncFilter.d.ts +8 -0
- package/dist/generator/asyncFilter.mjs +18 -0
- package/dist/generator/asyncLoop.cjs +26 -0
- package/dist/generator/asyncLoop.d.ts +10 -0
- package/dist/generator/asyncLoop.mjs +24 -0
- package/dist/generator/asyncMap.cjs +18 -0
- package/dist/generator/asyncMap.d.ts +6 -0
- package/dist/generator/asyncMap.mjs +16 -0
- package/dist/generator/asyncReduce.cjs +44 -0
- package/dist/generator/asyncReduce.d.ts +30 -0
- package/dist/generator/asyncReduce.mjs +42 -0
- package/dist/generator/execute.cjs +17 -0
- package/dist/generator/execute.d.ts +2 -0
- package/dist/generator/execute.mjs +15 -0
- package/dist/generator/filter.cjs +20 -0
- package/dist/generator/filter.d.ts +8 -0
- package/dist/generator/filter.mjs +18 -0
- package/dist/generator/index.cjs +23 -0
- package/dist/generator/index.d.ts +9 -0
- package/dist/generator/index.mjs +9 -0
- package/dist/generator/loop.cjs +26 -0
- package/dist/generator/loop.d.ts +15 -0
- package/dist/generator/loop.mjs +24 -0
- package/dist/generator/map.cjs +18 -0
- package/dist/generator/map.d.ts +6 -0
- package/dist/generator/map.mjs +16 -0
- package/dist/generator/reduce.cjs +42 -0
- package/dist/generator/reduce.d.ts +30 -0
- package/dist/generator/reduce.mjs +40 -0
- package/dist/index.cjs +79 -133
- package/dist/index.d.ts +15 -25
- package/dist/index.mjs +47 -124
- package/dist/number/abs.cjs +7 -0
- package/dist/number/abs.d.ts +1 -0
- package/dist/number/abs.mjs +5 -0
- package/dist/number/acos.cjs +7 -0
- package/dist/number/acos.d.ts +1 -0
- package/dist/number/acos.mjs +5 -0
- package/dist/number/add.cjs +12 -0
- package/dist/number/add.d.ts +2 -0
- package/dist/number/add.mjs +10 -0
- package/dist/number/asin.cjs +7 -0
- package/dist/number/asin.d.ts +1 -0
- package/dist/number/asin.mjs +5 -0
- package/dist/number/atan.cjs +7 -0
- package/dist/number/atan.d.ts +1 -0
- package/dist/number/atan.mjs +5 -0
- package/dist/number/atan2.cjs +12 -0
- package/dist/number/atan2.d.ts +2 -0
- package/dist/number/atan2.mjs +10 -0
- package/dist/number/ceil.cjs +7 -0
- package/dist/number/ceil.d.ts +1 -0
- package/dist/number/ceil.mjs +5 -0
- package/dist/number/clamp.cjs +14 -0
- package/dist/number/clamp.d.ts +2 -0
- package/dist/number/clamp.mjs +12 -0
- package/dist/number/cos.cjs +7 -0
- package/dist/number/cos.d.ts +1 -0
- package/dist/number/cos.mjs +5 -0
- package/dist/number/divide.cjs +12 -0
- package/dist/number/divide.d.ts +2 -0
- package/dist/number/divide.mjs +10 -0
- package/dist/number/floor.cjs +7 -0
- package/dist/number/floor.d.ts +1 -0
- package/dist/number/floor.mjs +5 -0
- package/dist/number/index.cjs +49 -0
- package/dist/number/index.d.ts +22 -0
- package/dist/number/index.mjs +22 -0
- package/dist/number/max.cjs +12 -0
- package/dist/number/max.d.ts +2 -0
- package/dist/number/max.mjs +10 -0
- package/dist/number/min.cjs +12 -0
- package/dist/number/min.d.ts +2 -0
- package/dist/number/min.mjs +10 -0
- package/dist/number/modulo.cjs +12 -0
- package/dist/number/modulo.d.ts +2 -0
- package/dist/number/modulo.mjs +10 -0
- package/dist/number/multiply.cjs +12 -0
- package/dist/number/multiply.d.ts +2 -0
- package/dist/number/multiply.mjs +10 -0
- package/dist/number/negate.cjs +7 -0
- package/dist/number/negate.d.ts +1 -0
- package/dist/number/negate.mjs +5 -0
- package/dist/number/power.cjs +12 -0
- package/dist/number/power.d.ts +2 -0
- package/dist/number/power.mjs +10 -0
- package/dist/number/round.cjs +7 -0
- package/dist/number/round.d.ts +1 -0
- package/dist/number/round.mjs +5 -0
- package/dist/number/sin.cjs +7 -0
- package/dist/number/sin.d.ts +1 -0
- package/dist/number/sin.mjs +5 -0
- package/dist/number/subtract.cjs +12 -0
- package/dist/number/subtract.d.ts +2 -0
- package/dist/number/subtract.mjs +10 -0
- package/dist/number/tan.cjs +7 -0
- package/dist/number/tan.d.ts +1 -0
- package/dist/number/tan.mjs +5 -0
- package/dist/number/trunc.cjs +7 -0
- package/dist/number/trunc.d.ts +1 -0
- package/dist/number/trunc.mjs +5 -0
- package/dist/object/assign.cjs +15 -0
- package/dist/object/assign.d.ts +4 -0
- package/dist/object/assign.mjs +13 -0
- package/dist/object/entries.cjs +10 -0
- package/dist/object/entries.d.ts +7 -0
- package/dist/object/entries.mjs +8 -0
- package/dist/object/fromEntries.cjs +7 -0
- package/dist/object/fromEntries.d.ts +6 -0
- package/dist/object/fromEntries.mjs +5 -0
- package/dist/object/getProperty.cjs +12 -0
- package/dist/object/getProperty.d.ts +8 -0
- package/dist/object/getProperty.mjs +10 -0
- package/dist/object/hasKeys.cjs +18 -0
- package/dist/object/hasKeys.d.ts +3 -0
- package/dist/object/hasKeys.mjs +16 -0
- package/dist/object/index.cjs +31 -0
- package/dist/object/index.d.ts +14 -0
- package/dist/object/index.mjs +13 -0
- package/dist/object/keys.cjs +7 -0
- package/dist/object/keys.d.ts +1 -0
- package/dist/object/keys.mjs +5 -0
- package/dist/object/omit.cjs +24 -0
- package/dist/object/omit.d.ts +8 -0
- package/dist/object/omit.mjs +22 -0
- package/dist/object/override.cjs +18 -0
- package/dist/object/override.d.ts +2 -0
- package/dist/object/override.mjs +16 -0
- package/dist/object/pick.cjs +24 -0
- package/dist/object/pick.d.ts +7 -0
- package/dist/object/pick.mjs +22 -0
- package/dist/object/to.cjs +16 -0
- package/dist/object/to.d.ts +10 -0
- package/dist/object/to.mjs +14 -0
- package/dist/object/transformProperties.cjs +18 -0
- package/dist/object/transformProperties.d.ts +10 -0
- package/dist/object/transformProperties.mjs +16 -0
- package/dist/object/transformProperty.cjs +15 -0
- package/dist/object/transformProperty.d.ts +7 -0
- package/dist/object/transformProperty.mjs +13 -0
- package/dist/object/types/UnionObjectToIntersection.d.ts +2 -0
- package/dist/object/types/assignObjects.d.ts +2 -0
- package/dist/object/types/flatObject.d.ts +25 -0
- package/dist/object/types/getPropsWithValue.d.ts +4 -0
- package/dist/object/types/index.d.ts +6 -0
- package/dist/object/types/partialKeys.d.ts +2 -0
- package/dist/object/types/requiredKeys.d.ts +2 -0
- package/dist/object/values.cjs +7 -0
- package/dist/object/values.d.ts +4 -0
- package/dist/object/values.mjs +5 -0
- package/dist/pattern/exhaustive.cjs +9 -0
- package/dist/pattern/exhaustive.d.ts +3 -0
- package/dist/pattern/exhaustive.mjs +7 -0
- package/dist/pattern/index.cjs +22 -0
- package/dist/pattern/index.d.ts +8 -0
- package/dist/pattern/index.mjs +8 -0
- package/dist/pattern/isMatch.cjs +44 -0
- package/dist/pattern/isMatch.d.ts +2 -0
- package/dist/pattern/isMatch.mjs +42 -0
- package/dist/pattern/match.cjs +18 -0
- package/dist/pattern/match.d.ts +6 -0
- package/dist/pattern/match.mjs +16 -0
- package/dist/pattern/matchPrimitive.cjs +17 -0
- package/dist/pattern/matchPrimitive.d.ts +3 -0
- package/dist/pattern/matchPrimitive.mjs +15 -0
- package/dist/pattern/otherwise.cjs +17 -0
- package/dist/pattern/otherwise.d.ts +4 -0
- package/dist/pattern/otherwise.mjs +15 -0
- package/dist/pattern/result.cjs +13 -0
- package/dist/pattern/result.d.ts +7 -0
- package/dist/pattern/result.mjs +10 -0
- package/dist/pattern/types/complexMatchedValue/array.d.ts +40 -0
- package/dist/pattern/types/complexMatchedValue/index.d.ts +6 -0
- package/dist/pattern/types/complexMatchedValue/maybeAll.d.ts +3 -0
- package/dist/pattern/types/complexMatchedValue/object.d.ts +11 -0
- package/dist/pattern/types/complexMatchedValue/primitive.d.ts +9 -0
- package/dist/pattern/types/complexUnMatchedValue/array.d.ts +27 -0
- package/dist/pattern/types/complexUnMatchedValue/getIncompleteUnion.d.ts +66 -0
- package/dist/pattern/types/complexUnMatchedValue/index.d.ts +9 -0
- package/dist/pattern/types/complexUnMatchedValue/maybeAll.d.ts +3 -0
- package/dist/pattern/types/complexUnMatchedValue/object.d.ts +17 -0
- package/dist/pattern/types/complexUnMatchedValue/primitive.d.ts +8 -0
- package/dist/pattern/types/complexUnMatchedValue/unionObject.d.ts +3 -0
- package/dist/pattern/types/index.d.ts +3 -0
- package/dist/pattern/types/pattern.cjs +5 -0
- package/dist/pattern/types/pattern.d.ts +37 -0
- package/dist/pattern/types/pattern.mjs +3 -0
- package/dist/pattern/union.cjs +20 -0
- package/dist/pattern/union.d.ts +6 -0
- package/dist/pattern/union.mjs +18 -0
- package/dist/string/at/default.cjs +12 -0
- package/dist/string/at/default.d.ts +2 -0
- package/dist/string/at/default.mjs +10 -0
- package/dist/string/at/first.cjs +7 -0
- package/dist/string/at/first.d.ts +2 -0
- package/dist/string/at/first.mjs +5 -0
- package/dist/string/at/index.d.ts +3 -0
- package/dist/string/at/last.cjs +9 -0
- package/dist/string/at/last.d.ts +2 -0
- package/dist/string/at/last.mjs +7 -0
- package/dist/string/capitalize.cjs +7 -0
- package/dist/string/capitalize.d.ts +1 -0
- package/dist/string/capitalize.mjs +5 -0
- package/dist/string/charAt.cjs +12 -0
- package/dist/string/charAt.d.ts +2 -0
- package/dist/string/charAt.mjs +10 -0
- package/dist/string/concat.cjs +12 -0
- package/dist/string/concat.d.ts +2 -0
- package/dist/string/concat.mjs +10 -0
- package/dist/string/endsWith.cjs +12 -0
- package/dist/string/endsWith.d.ts +2 -0
- package/dist/string/endsWith.mjs +10 -0
- package/dist/string/includes.cjs +12 -0
- package/dist/string/includes.d.ts +2 -0
- package/dist/string/includes.mjs +10 -0
- package/dist/string/index.cjs +67 -0
- package/dist/string/index.d.ts +28 -0
- package/dist/string/index.mjs +31 -0
- package/dist/string/indexOf.cjs +13 -0
- package/dist/string/indexOf.d.ts +2 -0
- package/dist/string/indexOf.mjs +11 -0
- package/dist/string/isKeyof.cjs +12 -0
- package/dist/string/isKeyof.d.ts +3 -0
- package/dist/string/isKeyof.mjs +10 -0
- package/dist/string/lastIndexOf.cjs +13 -0
- package/dist/string/lastIndexOf.d.ts +2 -0
- package/dist/string/lastIndexOf.mjs +11 -0
- package/dist/string/match.cjs +13 -0
- package/dist/string/match.d.ts +2 -0
- package/dist/string/match.mjs +11 -0
- package/dist/string/matchAll.cjs +12 -0
- package/dist/string/matchAll.d.ts +2 -0
- package/dist/string/matchAll.mjs +10 -0
- package/dist/string/normalize.cjs +12 -0
- package/dist/string/normalize.d.ts +3 -0
- package/dist/string/normalize.mjs +10 -0
- package/dist/string/padEnd.cjs +12 -0
- package/dist/string/padEnd.d.ts +2 -0
- package/dist/string/padEnd.mjs +10 -0
- package/dist/string/padStart.cjs +12 -0
- package/dist/string/padStart.d.ts +2 -0
- package/dist/string/padStart.mjs +10 -0
- package/dist/string/repeat.cjs +15 -0
- package/dist/string/repeat.d.ts +2 -0
- package/dist/string/repeat.mjs +13 -0
- package/dist/string/replace.cjs +12 -0
- package/dist/string/replace.d.ts +2 -0
- package/dist/string/replace.mjs +10 -0
- package/dist/string/replaceAll.cjs +12 -0
- package/dist/string/replaceAll.d.ts +2 -0
- package/dist/string/replaceAll.mjs +10 -0
- package/dist/string/search.cjs +13 -0
- package/dist/string/search.d.ts +2 -0
- package/dist/string/search.mjs +11 -0
- package/dist/string/slice.cjs +12 -0
- package/dist/string/slice.d.ts +2 -0
- package/dist/string/slice.mjs +10 -0
- package/dist/string/split.cjs +16 -0
- package/dist/string/split.d.ts +9 -0
- package/dist/string/split.mjs +14 -0
- package/dist/string/startsWith.cjs +12 -0
- package/dist/string/startsWith.d.ts +2 -0
- package/dist/string/startsWith.mjs +10 -0
- package/dist/string/substring.cjs +12 -0
- package/dist/string/substring.d.ts +2 -0
- package/dist/string/substring.mjs +10 -0
- package/dist/string/test.cjs +12 -0
- package/dist/string/test.d.ts +2 -0
- package/dist/string/test.mjs +10 -0
- package/dist/string/toLowerCase.cjs +7 -0
- package/dist/string/toLowerCase.d.ts +1 -0
- package/dist/string/toLowerCase.mjs +5 -0
- package/dist/string/toUpperCase.cjs +7 -0
- package/dist/string/toUpperCase.d.ts +1 -0
- package/dist/string/toUpperCase.mjs +5 -0
- package/dist/string/trim/default.cjs +7 -0
- package/dist/string/trim/default.d.ts +1 -0
- package/dist/string/trim/default.mjs +5 -0
- package/dist/string/trim/end.cjs +7 -0
- package/dist/string/trim/end.d.ts +1 -0
- package/dist/string/trim/end.mjs +5 -0
- package/dist/string/trim/index.d.ts +3 -0
- package/dist/string/trim/start.cjs +7 -0
- package/dist/string/trim/start.d.ts +1 -0
- package/dist/string/trim/start.mjs +5 -0
- package/dist/string/types/NormalizeForm.d.ts +1 -0
- package/dist/string/types/endsWith.d.ts +1 -0
- package/dist/string/types/first.d.ts +2 -0
- package/dist/string/types/includes.d.ts +1 -0
- package/dist/string/types/index.d.ts +5 -0
- package/dist/string/types/last.d.ts +2 -0
- package/dist/string/types/split.d.ts +9 -0
- package/dist/string/types/startsWith.d.ts +1 -0
- package/dist/string/uncapitalize.cjs +7 -0
- package/dist/string/uncapitalize.d.ts +1 -0
- package/dist/string/uncapitalize.mjs +5 -0
- package/package.json +20 -27
- package/dist/addThis.d.ts +0 -2
- package/dist/entryUseMapper.d.ts +0 -6
- package/dist/expectType.d.ts +0 -6
- package/dist/getLastOfUnion.d.ts +0 -2
- package/dist/getPropsWithTrueValue.d.ts +0 -3
- package/dist/getTypedEntries.d.ts +0 -6
- package/dist/getTypedKeys.d.ts +0 -1
- package/dist/hasKey.d.ts +0 -2
- package/dist/incremente.d.ts +0 -33
- package/dist/mergeObjects.d.ts +0 -4
- package/dist/overrideInterface.d.ts +0 -1
- package/dist/partialKeys.d.ts +0 -2
- package/dist/requiredKeys.d.ts +0 -2
- package/dist/simpleClone.d.ts +0 -1
- package/dist/simplifyType.d.ts +0 -9
- package/dist/sleep.d.ts +0 -1
- package/dist/types.d.ts +0 -4
- package/dist/unPartial.d.ts +0 -10
- package/dist/unionToIntersection.d.ts +0 -1
- package/dist/unionToTuple.d.ts +0 -4
- package/dist/uniqueGeneric.d.ts +0 -5
- /package/dist/{escapeRegExp.d.ts → common/escapeRegExp.d.ts} +0 -0
- /package/dist/{isEqual.d.ts → common/types/isEqual.d.ts} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var pattern = require('./types/pattern.cjs');
|
|
4
|
+
|
|
5
|
+
const SymbolToolPatternFunction = Symbol.for(pattern.SymbolToolPatternFunctionLabel);
|
|
6
|
+
function isMatch(input, pattern) {
|
|
7
|
+
if (typeof pattern === "string"
|
|
8
|
+
|| typeof pattern === "number"
|
|
9
|
+
|| typeof pattern === "boolean"
|
|
10
|
+
|| typeof pattern === "bigint"
|
|
11
|
+
|| pattern === null
|
|
12
|
+
|| pattern === undefined) {
|
|
13
|
+
return input === pattern;
|
|
14
|
+
}
|
|
15
|
+
else if (typeof pattern === "function") {
|
|
16
|
+
return pattern(input);
|
|
17
|
+
}
|
|
18
|
+
else if (pattern instanceof Array && input instanceof Array) {
|
|
19
|
+
for (const key in pattern) {
|
|
20
|
+
if (!isMatch(input[key], pattern[key])) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
else if (pattern
|
|
27
|
+
&& typeof pattern === "object"
|
|
28
|
+
&& SymbolToolPatternFunction in pattern) {
|
|
29
|
+
return pattern[SymbolToolPatternFunction](input);
|
|
30
|
+
}
|
|
31
|
+
else if (pattern
|
|
32
|
+
&& typeof pattern === "object"
|
|
33
|
+
&& input && typeof input === "object") {
|
|
34
|
+
for (const key in pattern) {
|
|
35
|
+
if (!isMatch(input[key], pattern[key])) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
exports.isMatch = isMatch;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { SymbolToolPatternFunctionLabel } from './types/pattern.mjs';
|
|
2
|
+
|
|
3
|
+
const SymbolToolPatternFunction = Symbol.for(SymbolToolPatternFunctionLabel);
|
|
4
|
+
function isMatch(input, pattern) {
|
|
5
|
+
if (typeof pattern === "string"
|
|
6
|
+
|| typeof pattern === "number"
|
|
7
|
+
|| typeof pattern === "boolean"
|
|
8
|
+
|| typeof pattern === "bigint"
|
|
9
|
+
|| pattern === null
|
|
10
|
+
|| pattern === undefined) {
|
|
11
|
+
return input === pattern;
|
|
12
|
+
}
|
|
13
|
+
else if (typeof pattern === "function") {
|
|
14
|
+
return pattern(input);
|
|
15
|
+
}
|
|
16
|
+
else if (pattern instanceof Array && input instanceof Array) {
|
|
17
|
+
for (const key in pattern) {
|
|
18
|
+
if (!isMatch(input[key], pattern[key])) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
else if (pattern
|
|
25
|
+
&& typeof pattern === "object"
|
|
26
|
+
&& SymbolToolPatternFunction in pattern) {
|
|
27
|
+
return pattern[SymbolToolPatternFunction](input);
|
|
28
|
+
}
|
|
29
|
+
else if (pattern
|
|
30
|
+
&& typeof pattern === "object"
|
|
31
|
+
&& input && typeof input === "object") {
|
|
32
|
+
for (const key in pattern) {
|
|
33
|
+
if (!isMatch(input[key], pattern[key])) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { isMatch };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var result = require('./result.cjs');
|
|
4
|
+
var isMatch = require('./isMatch.cjs');
|
|
5
|
+
|
|
6
|
+
function match(...args) {
|
|
7
|
+
if (args.length === 2) {
|
|
8
|
+
const [pattern, theFunction] = args;
|
|
9
|
+
return (input) => match(input, pattern, theFunction);
|
|
10
|
+
}
|
|
11
|
+
const [input, pattern, theFunction] = args;
|
|
12
|
+
if (isMatch.isMatch(input, pattern)) {
|
|
13
|
+
return result.result(theFunction(input));
|
|
14
|
+
}
|
|
15
|
+
return input;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.match = match;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type IsEqual, type AnyValue, type EscapeVoid, type FixDeepFunctionInfer } from "../common";
|
|
2
|
+
import { type PatternValue, type Pattern } from "./types/pattern";
|
|
3
|
+
import { type PatternResult } from "./result";
|
|
4
|
+
import { type ComplexMatchedValue, type ComplexUnMatchedValue } from "./types";
|
|
5
|
+
export declare function match<GenericInput extends AnyValue, GenericInputValue extends Exclude<GenericInput, PatternResult>, GenericInputPatternResult extends Extract<GenericInput, PatternResult>, const GenericPattern extends Pattern<GenericInputValue>, GenericPatternValue extends PatternValue<GenericPattern>, GenericOutput extends AnyValue | EscapeVoid, GenericMatchedValue extends Extract<ComplexMatchedValue<GenericInputValue, GenericPatternValue>, any>>(pattern: FixDeepFunctionInfer<Pattern<GenericInputValue>, GenericPattern>, theFunction: (value: Extract<ComplexMatchedValue<GenericInputValue, PatternValue<GenericPattern>>, any>) => GenericOutput): (input: GenericInput | GenericInputValue | GenericInputPatternResult) => ((IsEqual<GenericMatchedValue, never> extends true ? never : PatternResult<GenericOutput>) | GenericInputPatternResult | Extract<ComplexUnMatchedValue<GenericInputValue, GenericPatternValue>, any>);
|
|
6
|
+
export declare function match<GenericInput extends AnyValue, GenericInputValue extends Exclude<GenericInput, PatternResult>, GenericInputPatternResult extends Extract<GenericInput, PatternResult>, const GenericPattern extends Pattern<GenericInputValue>, GenericPatternValue extends PatternValue<GenericPattern>, GenericOutput extends AnyValue | EscapeVoid, GenericMatchedValue extends Extract<ComplexMatchedValue<GenericInputValue, GenericPatternValue>, any>>(input: GenericInput | GenericInputValue | GenericInputPatternResult, pattern: FixDeepFunctionInfer<Pattern<GenericInputValue>, GenericPattern>, theFunction: (value: Extract<ComplexMatchedValue<GenericInputValue, PatternValue<GenericPattern>>, any>) => GenericOutput): ((IsEqual<GenericMatchedValue, never> extends true ? never : PatternResult<GenericOutput>) | GenericInputPatternResult | Extract<ComplexUnMatchedValue<GenericInputValue, GenericPatternValue>, any>);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { result } from './result.mjs';
|
|
2
|
+
import { isMatch } from './isMatch.mjs';
|
|
3
|
+
|
|
4
|
+
function match(...args) {
|
|
5
|
+
if (args.length === 2) {
|
|
6
|
+
const [pattern, theFunction] = args;
|
|
7
|
+
return (input) => match(input, pattern, theFunction);
|
|
8
|
+
}
|
|
9
|
+
const [input, pattern, theFunction] = args;
|
|
10
|
+
if (isMatch(input, pattern)) {
|
|
11
|
+
return result(theFunction(input));
|
|
12
|
+
}
|
|
13
|
+
return input;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { match };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var result = require('./result.cjs');
|
|
4
|
+
|
|
5
|
+
function matchPrimitive(primitive, theFunction) {
|
|
6
|
+
const formattedPrimitive = primitive instanceof Array
|
|
7
|
+
? primitive
|
|
8
|
+
: [primitive];
|
|
9
|
+
return (input) => {
|
|
10
|
+
if (!result.isResult(input) && formattedPrimitive.includes(input)) {
|
|
11
|
+
return result.result(theFunction(input));
|
|
12
|
+
}
|
|
13
|
+
return input;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
exports.matchPrimitive = matchPrimitive;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type AnyValue } from "..";
|
|
2
|
+
import { type PatternResult } from "./result";
|
|
3
|
+
export declare function matchPrimitive<GenericInput extends AnyValue, GenericMatch extends Exclude<GenericInput, PatternResult>, GenericOutput extends AnyValue>(primitive: GenericMatch | GenericMatch[], theFunction: (predicatedInput: Extract<GenericInput, GenericMatch>) => GenericOutput): (input: GenericInput) => PatternResult<GenericOutput> | Exclude<GenericInput, GenericMatch>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { isResult, result } from './result.mjs';
|
|
2
|
+
|
|
3
|
+
function matchPrimitive(primitive, theFunction) {
|
|
4
|
+
const formattedPrimitive = primitive instanceof Array
|
|
5
|
+
? primitive
|
|
6
|
+
: [primitive];
|
|
7
|
+
return (input) => {
|
|
8
|
+
if (!isResult(input) && formattedPrimitive.includes(input)) {
|
|
9
|
+
return result(theFunction(input));
|
|
10
|
+
}
|
|
11
|
+
return input;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { matchPrimitive };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var unwrap = require('../common/unwrap.cjs');
|
|
4
|
+
var result = require('./result.cjs');
|
|
5
|
+
|
|
6
|
+
function otherwise(...args) {
|
|
7
|
+
if (args.length === 1) {
|
|
8
|
+
const [theFunction] = args;
|
|
9
|
+
return (input) => otherwise(input, theFunction);
|
|
10
|
+
}
|
|
11
|
+
const [input, theFunction] = args;
|
|
12
|
+
return result.isResult(input)
|
|
13
|
+
? unwrap.unwrap(input)
|
|
14
|
+
: theFunction(input);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
exports.otherwise = otherwise;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type AnyValue, type Unwrap } from "../common";
|
|
2
|
+
import { type PatternResult } from "./result";
|
|
3
|
+
export declare function otherwise<GenericInput extends AnyValue, GenericInputValue extends Exclude<GenericInput, PatternResult>, GenericInputPatternResult extends Extract<GenericInput, PatternResult>, GenericOutput extends AnyValue>(theFunction: (rest: GenericInputValue) => GenericOutput): (input: GenericInput | GenericInputPatternResult | GenericInputValue) => (GenericOutput | Unwrap<GenericInputPatternResult>);
|
|
4
|
+
export declare function otherwise<GenericInput extends AnyValue, GenericInputValue extends Exclude<GenericInput, PatternResult>, GenericInputPatternResult extends Extract<GenericInput, PatternResult>, GenericOutput extends AnyValue>(input: GenericInput | GenericInputPatternResult | GenericInputValue, theFunction: (rest: GenericInputValue) => GenericOutput): (GenericOutput | Unwrap<GenericInputPatternResult>);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { unwrap } from '../common/unwrap.mjs';
|
|
2
|
+
import { isResult } from './result.mjs';
|
|
3
|
+
|
|
4
|
+
function otherwise(...args) {
|
|
5
|
+
if (args.length === 1) {
|
|
6
|
+
const [theFunction] = args;
|
|
7
|
+
return (input) => otherwise(input, theFunction);
|
|
8
|
+
}
|
|
9
|
+
const [input, theFunction] = args;
|
|
10
|
+
return isResult(input)
|
|
11
|
+
? unwrap(input)
|
|
12
|
+
: theFunction(input);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { otherwise };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var kind = require('../common/kind.cjs');
|
|
4
|
+
var wrapValue = require('../common/wrapValue.cjs');
|
|
5
|
+
|
|
6
|
+
const patternResultKind = kind.createKind("pattern-result");
|
|
7
|
+
function result(value) {
|
|
8
|
+
return patternResultKind.addTo(wrapValue.wrapValue(value), null);
|
|
9
|
+
}
|
|
10
|
+
const isResult = patternResultKind.has;
|
|
11
|
+
|
|
12
|
+
exports.isResult = isResult;
|
|
13
|
+
exports.result = result;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Kind, type WrappedValue } from "../common";
|
|
2
|
+
declare const patternResultKind: import("../common").KindHandler<import("../common").KindDefinition<"pattern-result", unknown>>;
|
|
3
|
+
export interface PatternResult<GenericValue extends unknown = unknown> extends Kind<typeof patternResultKind.definition>, WrappedValue<GenericValue> {
|
|
4
|
+
}
|
|
5
|
+
export declare function result<const GenericValue extends unknown>(value: GenericValue): PatternResult<GenericValue>;
|
|
6
|
+
export declare const isResult: <GenericInput extends unknown>(input: GenericInput) => input is Extract<GenericInput, Kind<import("../common").KindDefinition<"pattern-result", unknown>, unknown>>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createKind } from '../common/kind.mjs';
|
|
2
|
+
import { wrapValue } from '../common/wrapValue.mjs';
|
|
3
|
+
|
|
4
|
+
const patternResultKind = createKind("pattern-result");
|
|
5
|
+
function result(value) {
|
|
6
|
+
return patternResultKind.addTo(wrapValue(value), null);
|
|
7
|
+
}
|
|
8
|
+
const isResult = patternResultKind.has;
|
|
9
|
+
|
|
10
|
+
export { isResult, result };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type BreakGenericLink, type Adaptor, type AnyTuple, type IsEqual } from "../../../common";
|
|
2
|
+
import { type ComplexMatchedValue } from ".";
|
|
3
|
+
type ComplexMatchedArrayTuple<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
4
|
+
Exclude<Extract<GenericInput, any[]>, AnyTuple>,
|
|
5
|
+
Extract<GenericPatternValue, AnyTuple>
|
|
6
|
+
] extends [
|
|
7
|
+
infer InferredInput,
|
|
8
|
+
infer InferredPatternValue
|
|
9
|
+
] ? InferredInput extends any[] ? InferredPatternValue extends AnyTuple ? Extract<InferredInput, InferredPatternValue> extends infer InferredObviousMatchedValue ? IsEqual<InferredObviousMatchedValue, never> extends false ? InferredObviousMatchedValue : InferredPatternValue extends readonly [
|
|
10
|
+
infer InferredPatternFirst,
|
|
11
|
+
...infer InferredPatternRest
|
|
12
|
+
] ? [
|
|
13
|
+
Extract<ComplexMatchedValue<InferredInput[number], InferredPatternFirst>, any>,
|
|
14
|
+
...(InferredPatternRest extends readonly [] ? InferredInput : Adaptor<ComplexMatchedValue<InferredInput, InferredPatternRest>, any[]>)
|
|
15
|
+
] : never : never : never : never : never);
|
|
16
|
+
type ComplexMatchedTupleTuple<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
17
|
+
Extract<GenericInput, AnyTuple>,
|
|
18
|
+
Extract<GenericPatternValue, AnyTuple>
|
|
19
|
+
] extends [
|
|
20
|
+
infer InferredInput,
|
|
21
|
+
infer InferredPatternValue
|
|
22
|
+
] ? InferredInput extends any ? InferredPatternValue extends any ? Extract<InferredInput, InferredPatternValue> extends infer InferredObviousMatchedValue ? IsEqual<InferredObviousMatchedValue, never> extends false ? InferredObviousMatchedValue : [
|
|
23
|
+
InferredInput,
|
|
24
|
+
InferredPatternValue
|
|
25
|
+
] extends [
|
|
26
|
+
readonly [infer InferredInputFirst, ...infer inferredInputRest],
|
|
27
|
+
readonly [infer InferredPatternValueFirst, ...infer inferredPatternValueRest]
|
|
28
|
+
] ? Extract<ComplexMatchedValue<InferredInputFirst, InferredPatternValueFirst>, any> extends infer InferredResult extends InferredInputFirst ? IsEqual<InferredResult, never> extends true ? never : [
|
|
29
|
+
InferredResult,
|
|
30
|
+
...Adaptor<(IsEqual<inferredPatternValueRest[number], never> extends true ? inferredInputRest : ComplexMatchedValue<inferredInputRest, inferredPatternValueRest>), readonly any[]>
|
|
31
|
+
] : never : never : never : never : never : never);
|
|
32
|
+
type ComplexMatchedArrayArray<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
33
|
+
Exclude<Extract<GenericInput, readonly any[]>, AnyTuple>,
|
|
34
|
+
Exclude<Extract<GenericPatternValue, readonly any[]>, AnyTuple>
|
|
35
|
+
] extends [
|
|
36
|
+
infer InferredInput extends readonly any[],
|
|
37
|
+
infer InferredPatternValue extends readonly any[]
|
|
38
|
+
] ? IsEqual<InferredPatternValue, never> extends true ? never : InferredPatternValue extends InferredInput ? InferredInput : Extract<ComplexMatchedValue<InferredInput[number], InferredPatternValue[number]>, any>[] : never);
|
|
39
|
+
export type ComplexMatchedArray<GenericInput extends unknown, GenericPatternValue extends unknown> = GenericPatternValue extends readonly [] ? BreakGenericLink<GenericInput> : (ComplexMatchedTupleTuple<GenericInput, GenericPatternValue> | ComplexMatchedArrayTuple<GenericInput, GenericPatternValue> | ComplexMatchedArrayArray<GenericInput, GenericPatternValue>);
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ComplexMatchedPrimitive } from "./primitive";
|
|
2
|
+
import { type ComplexMatchedObject } from "./object";
|
|
3
|
+
import { type ComplexMatchedArray } from "./array";
|
|
4
|
+
import { type PatternValueMaybeAll } from "../pattern";
|
|
5
|
+
import { type ComplexMatchedMaybeAll } from "./maybeAll";
|
|
6
|
+
export type ComplexMatchedValue<GenericInput extends unknown, GenericPatternValue extends unknown> = Exclude<GenericPatternValue, PatternValueMaybeAll> extends infer InferredPatternValue ? (ComplexMatchedPrimitive<GenericInput, InferredPatternValue> | ComplexMatchedObject<GenericInput, InferredPatternValue> | ComplexMatchedArray<GenericInput, InferredPatternValue> | ComplexMatchedMaybeAll<GenericInput, GenericPatternValue>) : never;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type Unwrap, type IsEqual } from "../../../common";
|
|
2
|
+
import { type PatternValueMaybeAll } from "../pattern";
|
|
3
|
+
export type ComplexMatchedMaybeAll<GenericInput extends unknown, GenericPatternValue extends unknown> = Extract<GenericPatternValue, PatternValueMaybeAll> extends infer InferredPatternValue ? IsEqual<InferredPatternValue, never> extends true ? never : Extract<Unwrap<InferredPatternValue>, GenericInput> : never;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Adaptor, type SimplifyTopLevel, type IsEqual } from "../../../common";
|
|
2
|
+
import { type ComplexMatchedValue } from ".";
|
|
3
|
+
export type ComplexMatchedObject<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
4
|
+
Exclude<Extract<GenericInput, object>, readonly any[]>,
|
|
5
|
+
Exclude<Extract<GenericPatternValue, object>, readonly any[]>
|
|
6
|
+
] extends [
|
|
7
|
+
infer InferredInput,
|
|
8
|
+
infer InferredPatternValue
|
|
9
|
+
] ? InferredInput extends any ? InferredPatternValue extends any ? Extract<InferredInput, InferredPatternValue> extends infer InferredObviousMatchedValue ? IsEqual<InferredObviousMatchedValue, never> extends false ? InferredObviousMatchedValue : IsEqual<Extract<keyof InferredInput, keyof InferredPatternValue>, keyof InferredPatternValue> extends false ? never : SimplifyTopLevel<Omit<InferredInput, keyof InferredPatternValue> & {
|
|
10
|
+
-readonly [Prop in keyof InferredPatternValue]: Extract<ComplexMatchedValue<InferredInput[Adaptor<Prop, keyof InferredInput>], InferredPatternValue[Prop]>, any>;
|
|
11
|
+
}> extends infer InferredResult extends InferredInput ? IsEqual<InferredResult, InferredInput> extends true ? InferredInput : InferredResult : never : never : never : never : never);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type IsEqual } from "../../../common";
|
|
2
|
+
import { type EligiblePrimitiveMatch } from "../pattern";
|
|
3
|
+
export type ComplexMatchedPrimitive<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
4
|
+
Extract<GenericInput, EligiblePrimitiveMatch>,
|
|
5
|
+
Extract<GenericPatternValue, EligiblePrimitiveMatch>
|
|
6
|
+
] extends [
|
|
7
|
+
infer inferredInput extends EligiblePrimitiveMatch,
|
|
8
|
+
infer inferredPatternValue extends EligiblePrimitiveMatch
|
|
9
|
+
] ? Extract<inferredInput, inferredPatternValue> extends infer inferredValue ? IsEqual<inferredValue, never> extends true ? inferredPatternValue : inferredValue : never : never);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type Adaptor, type AnyTuple, type IsEqual, type IsUnion } from "../../../common";
|
|
2
|
+
import { type ComplexUnMatchedValue } from ".";
|
|
3
|
+
type ComplexUnMatchedArrayTuple<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
4
|
+
Exclude<Extract<GenericInput, readonly any[]>, AnyTuple>,
|
|
5
|
+
Extract<GenericPatternValue, AnyTuple>
|
|
6
|
+
] extends [
|
|
7
|
+
infer InferredInput,
|
|
8
|
+
infer _InferredPatternValue
|
|
9
|
+
] ? InferredInput : never);
|
|
10
|
+
type ComplexUnMatchedTupleTuple<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
11
|
+
Extract<GenericInput, AnyTuple>,
|
|
12
|
+
Extract<GenericPatternValue, AnyTuple>
|
|
13
|
+
] extends [
|
|
14
|
+
infer InferredInput,
|
|
15
|
+
infer InferredPatternValue
|
|
16
|
+
] ? IsEqual<InferredPatternValue, never> extends true ? InferredInput : IsUnion<InferredPatternValue> extends true ? never : InferredInput extends InferredPatternValue ? never : [
|
|
17
|
+
InferredInput,
|
|
18
|
+
InferredPatternValue
|
|
19
|
+
] extends [
|
|
20
|
+
readonly [infer InferredInputFirst, ...infer InferredInputRest],
|
|
21
|
+
readonly [infer InferredPatternValueFirst, ...infer InferredPatternValueRest]
|
|
22
|
+
] ? Extract<ComplexUnMatchedValue<InferredInputFirst, InferredPatternValueFirst>, any> extends infer InferredResultFirst ? InferredPatternValueRest extends readonly [] ? IsEqual<InferredResultFirst, never> extends true ? never : [InferredResultFirst, ...InferredInputRest] : ComplexUnMatchedValue<InferredInputRest, InferredPatternValueRest> extends infer InferredResultRest ? [
|
|
23
|
+
IsEqual<InferredResultFirst, never> extends true ? InferredInputFirst : InferredResultFirst,
|
|
24
|
+
...Adaptor<IsEqual<InferredResultRest, never> extends true ? InferredPatternValueRest : InferredResultRest, readonly any[]>
|
|
25
|
+
] : never : never : never : never);
|
|
26
|
+
export type ComplexUnMatchedArray<GenericInput extends unknown, GenericPatternValue extends unknown> = Exclude<GenericPatternValue, readonly []> extends infer InferredPatternValue ? IsEqual<InferredPatternValue, never> extends true ? never : (ComplexUnMatchedTupleTuple<GenericInput, InferredPatternValue> | ComplexUnMatchedArrayTuple<GenericInput, InferredPatternValue>) : never;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type AnyTuple, type Adaptor, type IsEqual, type Or } from "../../../common";
|
|
2
|
+
import { type PatternValueMaybeAll, type EligiblePrimitiveMatch } from "../pattern";
|
|
3
|
+
import { type FlatObject } from "../../../object";
|
|
4
|
+
import { type ExcludeTuple } from "../../../array/types/excludeTuple";
|
|
5
|
+
export type GetIncompleteUnion<GenericInput extends unknown, GenericPatternValue extends unknown> = (([
|
|
6
|
+
Extract<GenericInput, EligiblePrimitiveMatch>,
|
|
7
|
+
Extract<GenericPatternValue, EligiblePrimitiveMatch>
|
|
8
|
+
] extends [
|
|
9
|
+
infer InferredInput,
|
|
10
|
+
infer InferredPatternValue
|
|
11
|
+
] ? IsEqual<InferredPatternValue, never> extends true ? never : IsEqual<Exclude<InferredInput, InferredPatternValue>, never> extends true ? {} : true : never) | ([
|
|
12
|
+
Exclude<Extract<GenericInput, object>, GenericPatternValue | readonly any[]>,
|
|
13
|
+
Exclude<Extract<GenericPatternValue, object>, readonly any[]>
|
|
14
|
+
] extends [
|
|
15
|
+
infer InferredInput,
|
|
16
|
+
infer InferredPatternValue
|
|
17
|
+
] ? IsEqual<InferredPatternValue, never> extends true ? never : IsEqual<InferredInput, Exclude<Extract<GenericInput, object>, readonly any[]>> extends true ? FlatObject<{
|
|
18
|
+
[Prop in (InferredPatternValue extends any ? keyof InferredPatternValue : never)]: GetIncompleteUnion<InferredInput[Adaptor<Prop, keyof InferredInput>], Extract<InferredPatternValue, {
|
|
19
|
+
[SubProp in Prop]: any;
|
|
20
|
+
}>[Prop]>;
|
|
21
|
+
}> : IsEqual<InferredInput, never> extends true ? {} : {
|
|
22
|
+
"@duplojs/utils/{object}": true;
|
|
23
|
+
} : never) | ([
|
|
24
|
+
ExcludeTuple<Extract<GenericInput, AnyTuple>, Extract<GenericPatternValue, readonly any[]>>,
|
|
25
|
+
Extract<GenericPatternValue, AnyTuple | readonly []>
|
|
26
|
+
] extends [
|
|
27
|
+
infer InferredInput,
|
|
28
|
+
infer InferredPatternValue
|
|
29
|
+
] ? IsEqual<InferredPatternValue, never> extends true ? never : IsEqual<InferredInput, Extract<GenericInput, AnyTuple>> extends true ? [
|
|
30
|
+
InferredInput,
|
|
31
|
+
InferredPatternValue
|
|
32
|
+
] extends [
|
|
33
|
+
readonly [infer InferredInputFirst, ...infer InferredInputRest],
|
|
34
|
+
readonly [infer InferredPatternValueFirst, ...infer InferredPatternValueRest]
|
|
35
|
+
] ? GetIncompleteUnion<InferredInputFirst, InferredPatternValueFirst> extends infer InferredResultFirst ? FlatObject<{
|
|
36
|
+
"@duplojs/utils/[tuple.first": InferredResultFirst;
|
|
37
|
+
"@duplojs/utils/tuple.rest]": GetIncompleteUnion<InferredInputRest, InferredPatternValueRest>;
|
|
38
|
+
}> : never : never : IsEqual<InferredInput, never> extends true ? {} : {
|
|
39
|
+
"@duplojs/utils/[tuple]": true;
|
|
40
|
+
} : never) | ([
|
|
41
|
+
Exclude<Extract<GenericInput, readonly any[]>, AnyTuple>,
|
|
42
|
+
Extract<GenericPatternValue, AnyTuple>
|
|
43
|
+
] extends [
|
|
44
|
+
infer InferredInput extends readonly any[],
|
|
45
|
+
infer InferredPatternValue
|
|
46
|
+
] ? Or<[
|
|
47
|
+
IsEqual<InferredPatternValue, never>,
|
|
48
|
+
IsEqual<InferredInput, never>
|
|
49
|
+
]> extends true ? never : InferredPatternValue extends readonly [
|
|
50
|
+
infer InferredPatternValueFirst,
|
|
51
|
+
...infer InferredPatternValueRest
|
|
52
|
+
] ? GetIncompleteUnion<InferredInput[number], InferredPatternValueFirst> extends infer InferredResultFirst ? FlatObject<{
|
|
53
|
+
"@duplojs/utils/[array.first": InferredResultFirst;
|
|
54
|
+
"@duplojs/utils/array.rest]": IsEqual<InferredResultFirst, {}> extends true ? GetIncompleteUnion<InferredInput, InferredPatternValueRest> : never;
|
|
55
|
+
}> : {} : {} : never) | (Extract<GenericPatternValue, PatternValueMaybeAll> extends infer InferredPatternValue ? IsEqual<InferredPatternValue, never> extends true ? never : {
|
|
56
|
+
"@duplojs/utils/{maybeAll}": true;
|
|
57
|
+
} : never) | ([
|
|
58
|
+
Extract<GenericInput, readonly any[]>,
|
|
59
|
+
Extract<GenericPatternValue, readonly []>
|
|
60
|
+
] extends [
|
|
61
|
+
infer InferredInput extends readonly any[],
|
|
62
|
+
infer InferredPatternValue
|
|
63
|
+
] ? Or<[
|
|
64
|
+
IsEqual<InferredPatternValue, never>,
|
|
65
|
+
IsEqual<InferredInput, never>
|
|
66
|
+
]> extends true ? never : {} : never));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type UnionToTuple } from "../../../common";
|
|
2
|
+
import { type GetIncompleteUnion } from "./getIncompleteUnion";
|
|
3
|
+
import { type ComplexUnMatchedPrimitive } from "./primitive";
|
|
4
|
+
import { type ComplexUnMatchedObject } from "./object";
|
|
5
|
+
import { type ComplexUnMatchedUnionObject } from "./unionObject";
|
|
6
|
+
import { type ComplexUnMatchedArray } from "./array";
|
|
7
|
+
import { type PatternValueMaybeAll } from "../pattern";
|
|
8
|
+
import { type ComplexUnMatchedMaybeAll } from "./maybeAll";
|
|
9
|
+
export type ComplexUnMatchedValue<GenericInput extends unknown, GenericPatternValue extends unknown> = UnionToTuple<keyof GetIncompleteUnion<GenericInput, GenericPatternValue>>["length"] extends 0 | 1 ? Exclude<GenericPatternValue, PatternValueMaybeAll> extends infer InferredPatternValue ? (ComplexUnMatchedPrimitive<GenericInput, InferredPatternValue> | ComplexUnMatchedObject<GenericInput, InferredPatternValue> | ComplexUnMatchedArray<GenericInput, InferredPatternValue> | ComplexUnMatchedUnionObject<GenericInput, InferredPatternValue> | ComplexUnMatchedMaybeAll<GenericInput, GenericPatternValue>) : never : GenericInput;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type Unwrap, type IsEqual } from "../../../common";
|
|
2
|
+
import { type PatternValueMaybeAll } from "../pattern";
|
|
3
|
+
export type ComplexUnMatchedMaybeAll<GenericInput extends unknown, GenericPatternValue extends unknown> = Extract<GenericPatternValue, PatternValueMaybeAll> extends infer InferredPatternValue ? IsEqual<InferredPatternValue, never> extends true ? never : Extract<Unwrap<InferredPatternValue>, GenericInput> : never;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Adaptor, type SimplifyTopLevel, type IsEqual, type IsUnion, type NeverCoalescing, type RemoveReadonly } from "../../../common";
|
|
2
|
+
import { type ComplexUnMatchedValue } from ".";
|
|
3
|
+
export type ComplexUnMatchedObject<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
4
|
+
Exclude<Extract<GenericInput, object>, readonly any[]>,
|
|
5
|
+
Exclude<Extract<GenericPatternValue, object>, readonly any[]>
|
|
6
|
+
] extends [
|
|
7
|
+
infer InferredInput,
|
|
8
|
+
infer InferredPatternValue
|
|
9
|
+
] ? IsEqual<InferredPatternValue, never> extends true ? InferredInput : IsUnion<InferredPatternValue> extends true ? never : InferredInput extends any ? InferredInput extends InferredPatternValue ? never : IsEqual<Extract<keyof InferredInput, keyof InferredPatternValue>, keyof InferredPatternValue> extends false ? InferredInput : (IsEqual<{
|
|
10
|
+
[Prop in keyof InferredPatternValue]: ComplexUnMatchedValue<InferredInput[Adaptor<Prop, keyof InferredInput>], InferredPatternValue[Prop]>;
|
|
11
|
+
} extends infer InferredObjectArray extends object ? InferredObjectArray[keyof InferredObjectArray] : never, never> extends true ? never : ({
|
|
12
|
+
-readonly [Prop in keyof InferredPatternValue]: NeverCoalescing<Extract<ComplexUnMatchedValue<InferredInput[Adaptor<Prop, keyof InferredInput>], InferredPatternValue[Prop]>, any>, InferredInput[Adaptor<Prop, keyof InferredInput>]>;
|
|
13
|
+
} & Omit<InferredInput, keyof InferredPatternValue>) extends infer InferredObject extends object ? ({
|
|
14
|
+
[Prop in keyof InferredObject as undefined extends InferredObject[Prop] ? Prop : never]?: InferredObject[Prop];
|
|
15
|
+
} & {
|
|
16
|
+
[Prop in keyof InferredObject as undefined extends InferredObject[Prop] ? never : Prop]: InferredObject[Prop];
|
|
17
|
+
}) extends infer InferredResult ? IsEqual<RemoveReadonly<InferredResult>, RemoveReadonly<InferredInput>> extends true ? InferredInput : SimplifyTopLevel<InferredResult> : never : never) : never : never);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type EligiblePrimitiveMatch } from "../pattern";
|
|
2
|
+
export type ComplexUnMatchedPrimitive<GenericInput extends unknown, GenericPatternValue extends unknown> = ([
|
|
3
|
+
Extract<GenericInput, EligiblePrimitiveMatch>,
|
|
4
|
+
Extract<GenericPatternValue, EligiblePrimitiveMatch>
|
|
5
|
+
] extends [
|
|
6
|
+
infer inferredInput,
|
|
7
|
+
infer inferredPatternValue
|
|
8
|
+
] ? Exclude<inferredInput, inferredPatternValue> : never);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type RemoveDuplicateInUnion, type IsUnion } from "../../../common";
|
|
2
|
+
import { type ComplexUnMatchedValue } from ".";
|
|
3
|
+
export type ComplexUnMatchedUnionObject<GenericInput extends unknown, GenericPatternValue extends unknown> = (IsUnion<Extract<GenericPatternValue, object>> extends false ? never : Extract<GenericPatternValue, any> extends infer InferredPatternValue ? (InferredPatternValue extends object ? ComplexUnMatchedValue<GenericInput, InferredPatternValue> extends infer InferredResult ? ComplexUnMatchedValue<InferredResult, Exclude<GenericPatternValue, InferredPatternValue>> : never : never) extends infer InferredResult ? RemoveDuplicateInUnion<InferredResult> : never : never);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type MergeUnionTuple } from "../../array/types/mergeUnionTuple";
|
|
2
|
+
import { type AnyTuple, type Adaptor, type IsEqual, type ObjectKey, type WrappedValue } from "../../common";
|
|
3
|
+
export type EligiblePrimitiveMatch = string | number | bigint | boolean | undefined | null;
|
|
4
|
+
type PrimitivePattern<GenericInput extends unknown> = GenericInput extends EligiblePrimitiveMatch ? GenericInput : never;
|
|
5
|
+
type ObjectPattern<GenericInput extends unknown> = Exclude<GenericInput, readonly any[]> extends infer InferredInput ? [
|
|
6
|
+
Extract<InferredInput, object>,
|
|
7
|
+
InferredInput extends object ? keyof InferredInput : never
|
|
8
|
+
] extends [
|
|
9
|
+
infer InferredInputObject extends object,
|
|
10
|
+
infer InferredInputKeyofObject extends ObjectKey
|
|
11
|
+
] ? {
|
|
12
|
+
readonly [Prop in InferredInputKeyofObject]?: Extract<InferredInputObject, Partial<Record<Prop, any>>> extends infer InferredValue extends object ? Prop extends keyof InferredValue ? Pattern<InferredValue[Prop]> : never : never;
|
|
13
|
+
} extends infer InferredResult ? IsEqual<InferredResult, {}> extends true ? never : InferredResult : never : never : never;
|
|
14
|
+
type ArrayPattern<GenericInput extends unknown> = ((Extract<GenericInput, AnyTuple> extends infer InferredInput extends AnyTuple ? IsEqual<InferredInput, never> extends true ? never : MergeUnionTuple<InferredInput> extends readonly [infer InferredFirst, ...infer InferredRest] ? (readonly [] | readonly [Pattern<InferredFirst>] | (InferredRest extends readonly [] ? never : readonly [
|
|
15
|
+
Pattern<InferredFirst>,
|
|
16
|
+
...Adaptor<Pattern<InferredRest>, readonly any[]>
|
|
17
|
+
])) : never : never) | (Exclude<Extract<GenericInput, readonly any[]>, AnyTuple> extends infer InferredInput extends readonly any[] ? IsEqual<InferredInput, never> extends true ? never : readonly Pattern<InferredInput[number]>[] : never));
|
|
18
|
+
type PredicatePattern<GenericInput extends unknown = any> = (input: GenericInput) => boolean;
|
|
19
|
+
declare const SymbolToolPattern: unique symbol;
|
|
20
|
+
type SymbolToolPattern = typeof SymbolToolPattern;
|
|
21
|
+
export declare const SymbolToolPatternFunctionLabel = "SymbolToolPatternFunctionLabel";
|
|
22
|
+
declare const SymbolToolPatternFunction: unique symbol;
|
|
23
|
+
type SymbolToolPatternFunction = typeof SymbolToolPatternFunction;
|
|
24
|
+
export interface ToolPattern<GenericInput extends unknown = any, GenericPattern extends unknown = any> {
|
|
25
|
+
[SymbolToolPatternFunction](input: GenericInput): boolean;
|
|
26
|
+
[SymbolToolPattern]: GenericPattern;
|
|
27
|
+
}
|
|
28
|
+
export type Pattern<GenericInput extends unknown = any> = (PredicatePattern<GenericInput> | ToolPattern<GenericInput> | PrimitivePattern<GenericInput> | ObjectPattern<GenericInput> | ArrayPattern<GenericInput>);
|
|
29
|
+
declare const SymbolPatternValueMaybeAll: unique symbol;
|
|
30
|
+
type SymbolPatternValueMaybeAll = typeof SymbolPatternValueMaybeAll;
|
|
31
|
+
export interface PatternValueMaybeAll<GenericValue extends unknown = any> extends WrappedValue<GenericValue> {
|
|
32
|
+
[SymbolPatternValueMaybeAll]: unknown;
|
|
33
|
+
}
|
|
34
|
+
export type PatternValue<GenericPattern extends Pattern> = GenericPattern extends EligiblePrimitiveMatch ? GenericPattern : GenericPattern extends (input: any) => input is infer InferredPredicate ? InferredPredicate : GenericPattern extends (input: infer InferredInput) => boolean ? PatternValueMaybeAll<InferredInput> : GenericPattern extends ToolPattern<any, infer InferredPattern> ? PatternValue<InferredPattern> : GenericPattern extends readonly [infer inferredFirst, ...infer inferredRest] ? IsEqual<inferredRest, readonly []> extends true ? [PatternValue<inferredFirst>] : [PatternValue<inferredFirst>, ...Adaptor<PatternValue<inferredRest>, any[]>] : GenericPattern extends readonly [] ? [] : GenericPattern extends readonly any[] ? PatternValue<GenericPattern[number]>[] : GenericPattern extends Record<ObjectKey, Pattern> ? {
|
|
35
|
+
[Prop in keyof GenericPattern]: PatternValue<GenericPattern[Prop]>;
|
|
36
|
+
} : never;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var isMatch = require('./isMatch.cjs');
|
|
4
|
+
var pattern = require('./types/pattern.cjs');
|
|
5
|
+
|
|
6
|
+
const SymbolToolPatternFunction = Symbol.for(pattern.SymbolToolPatternFunctionLabel);
|
|
7
|
+
function union(...patterns) {
|
|
8
|
+
return {
|
|
9
|
+
[SymbolToolPatternFunction]: (input) => {
|
|
10
|
+
for (const pattern of patterns) {
|
|
11
|
+
if (isMatch.isMatch(input, pattern)) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.union = union;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type FixDeepFunctionInfer } from "../common";
|
|
2
|
+
import { type Pattern, type ToolPattern } from "./types/pattern";
|
|
3
|
+
export declare function union<GenericInput extends unknown, const GenericPatterns extends readonly [
|
|
4
|
+
Pattern<GenericInput extends infer InferredInput ? InferredInput : never>,
|
|
5
|
+
...Pattern<GenericInput extends infer InferredInput ? InferredInput : never>[]
|
|
6
|
+
]>(...patterns: FixDeepFunctionInfer<readonly [Pattern<GenericInput>, ...Pattern<GenericInput>[]], GenericPatterns>): ToolPattern<GenericInput, GenericPatterns[number] extends infer InferredPattern ? InferredPattern : never>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isMatch } from './isMatch.mjs';
|
|
2
|
+
import { SymbolToolPatternFunctionLabel } from './types/pattern.mjs';
|
|
3
|
+
|
|
4
|
+
const SymbolToolPatternFunction = Symbol.for(SymbolToolPatternFunctionLabel);
|
|
5
|
+
function union(...patterns) {
|
|
6
|
+
return {
|
|
7
|
+
[SymbolToolPatternFunction]: (input) => {
|
|
8
|
+
for (const pattern of patterns) {
|
|
9
|
+
if (isMatch(input, pattern)) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { union };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare function at<GenericString extends string, GenericIndex extends number>(index: GenericIndex): (input: GenericString) => string | undefined;
|
|
2
|
+
export declare function at<GenericString extends string, GenericIndex extends number>(input: GenericString, index: GenericIndex): string | undefined;
|