@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,20 @@
|
|
|
1
|
+
import { unwrap } from '../../common/unwrap.mjs';
|
|
2
|
+
import { isLeft } from '../left/is.mjs';
|
|
3
|
+
import { success } from './success.mjs';
|
|
4
|
+
import { isRight } from './is.mjs';
|
|
5
|
+
|
|
6
|
+
/* eslint-disable @typescript-eslint/max-params */
|
|
7
|
+
function rightPipe(input, ...pipes) {
|
|
8
|
+
let acc = isRight(input) || isLeft(input)
|
|
9
|
+
? input
|
|
10
|
+
: success(input);
|
|
11
|
+
for (const pipe of pipes) {
|
|
12
|
+
acc = pipe(unwrap(acc));
|
|
13
|
+
if (isLeft(acc)) {
|
|
14
|
+
return acc;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return acc;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { rightPipe };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var create = require('./create.cjs');
|
|
4
|
+
var kind = require('../../common/kind.cjs');
|
|
5
|
+
|
|
6
|
+
const eitherSuccessKind = kind.createKind("either-success");
|
|
7
|
+
function success(value) {
|
|
8
|
+
return eitherSuccessKind.addTo(create.right("success", value));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
exports.eitherSuccessKind = eitherSuccessKind;
|
|
12
|
+
exports.success = success;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type EitherRight } from "./create";
|
|
2
|
+
import { type Kind } from "../../common/kind";
|
|
3
|
+
export declare const eitherSuccessKind: import("../../common/kind").KindHandler<import("../../common/kind").KindDefinition<"either-success", unknown>>;
|
|
4
|
+
export type EitherSuccess<GenericValue extends unknown = unknown> = (EitherRight<"success", GenericValue> & Kind<typeof eitherSuccessKind.definition>);
|
|
5
|
+
export declare function success<const GenericValue extends unknown>(value: GenericValue): EitherSuccess<GenericValue>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { right } from './create.mjs';
|
|
2
|
+
import { createKind } from '../../common/kind.mjs';
|
|
3
|
+
|
|
4
|
+
const eitherSuccessKind = createKind("either-success");
|
|
5
|
+
function success(value) {
|
|
6
|
+
return eitherSuccessKind.addTo(right("success", value));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { eitherSuccessKind, success };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var unwrap = require('../../common/unwrap.cjs');
|
|
4
|
+
var is = require('./is.cjs');
|
|
5
|
+
|
|
6
|
+
function whenIsRight(...args) {
|
|
7
|
+
if (args.length === 1) {
|
|
8
|
+
const [theFunction] = args;
|
|
9
|
+
return (input) => whenIsRight(input, theFunction);
|
|
10
|
+
}
|
|
11
|
+
const [input, theFunction] = args;
|
|
12
|
+
if (is.isRight(input)) {
|
|
13
|
+
return theFunction(unwrap.unwrap(input));
|
|
14
|
+
}
|
|
15
|
+
return input;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.whenIsRight = whenIsRight;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type EscapeVoid, type AnyValue, type Unwrap } from "../../common";
|
|
2
|
+
import { type EitherRight } from "./create";
|
|
3
|
+
export declare function whenIsRight<const GenericInput extends unknown, const GenericOutput extends AnyValue | EscapeVoid>(theFunction: (eitherValue: Unwrap<Extract<GenericInput, EitherRight>>) => GenericOutput): (input: GenericInput) => Exclude<GenericInput, EitherRight> | GenericOutput;
|
|
4
|
+
export declare function whenIsRight<const GenericInput extends unknown, const GenericOutput extends AnyValue | EscapeVoid>(input: GenericInput, theFunction: (eitherValue: Unwrap<Extract<GenericInput, EitherRight>>) => GenericOutput): Exclude<GenericInput, EitherRight> | GenericOutput;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { unwrap } from '../../common/unwrap.mjs';
|
|
2
|
+
import { isRight } from './is.mjs';
|
|
3
|
+
|
|
4
|
+
function whenIsRight(...args) {
|
|
5
|
+
if (args.length === 1) {
|
|
6
|
+
const [theFunction] = args;
|
|
7
|
+
return (input) => whenIsRight(input, theFunction);
|
|
8
|
+
}
|
|
9
|
+
const [input, theFunction] = args;
|
|
10
|
+
if (isRight(input)) {
|
|
11
|
+
return theFunction(unwrap(input));
|
|
12
|
+
}
|
|
13
|
+
return input;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { whenIsRight };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var unwrap = require('../common/unwrap.cjs');
|
|
4
|
+
var base = require('./base.cjs');
|
|
5
|
+
var is = require('./left/is.cjs');
|
|
6
|
+
var is$1 = require('./right/is.cjs');
|
|
7
|
+
|
|
8
|
+
function whenHasInformation(...args) {
|
|
9
|
+
if (args.length === 2) {
|
|
10
|
+
const [information, theFunction] = args;
|
|
11
|
+
return (input) => whenHasInformation(input, information, theFunction);
|
|
12
|
+
}
|
|
13
|
+
const [input, information, theFunction] = args;
|
|
14
|
+
const formattedInformation = information instanceof Array
|
|
15
|
+
? information
|
|
16
|
+
: [information];
|
|
17
|
+
if ((is.isLeft(input)
|
|
18
|
+
|| is$1.isRight(input)) && formattedInformation.includes(base.eitherInformationKind.getValue(input))) {
|
|
19
|
+
return theFunction(unwrap.unwrap(input));
|
|
20
|
+
}
|
|
21
|
+
return input;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.whenHasInformation = whenHasInformation;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Kind, type WrappedValue, type AnyValue, type Unwrap } from "../common";
|
|
2
|
+
import { type EitherRight } from "./right";
|
|
3
|
+
import { type EitherLeft } from "./left";
|
|
4
|
+
import { eitherInformationKind } from "./base";
|
|
5
|
+
type Either = EitherRight | EitherLeft;
|
|
6
|
+
export declare function whenHasInformation<const GenericInput extends unknown, GenericInformation extends (GenericInput extends Either ? ReturnType<typeof eitherInformationKind.getValue<GenericInput>> : never), const GenericOutput extends AnyValue>(information: GenericInformation | GenericInformation[], theFunction: (value: Unwrap<Extract<GenericInput, Kind<typeof eitherInformationKind.definition, GenericInformation> & WrappedValue>>) => GenericOutput): (input: GenericInput) => GenericOutput | Exclude<GenericInput, Kind<typeof eitherInformationKind.definition, GenericInformation>>;
|
|
7
|
+
export declare function whenHasInformation<const GenericInput extends unknown, GenericInformation extends (GenericInput extends Either ? ReturnType<typeof eitherInformationKind.getValue<GenericInput>> : never), const GenericOutput extends AnyValue>(input: GenericInput, information: GenericInformation | GenericInformation[], theFunction: (value: Unwrap<Extract<GenericInput, Kind<typeof eitherInformationKind.definition, GenericInformation> & WrappedValue>>) => GenericOutput): GenericOutput | Exclude<GenericInput, Kind<typeof eitherInformationKind.definition, GenericInformation>>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { unwrap } from '../common/unwrap.mjs';
|
|
2
|
+
import { eitherInformationKind } from './base.mjs';
|
|
3
|
+
import { isLeft } from './left/is.mjs';
|
|
4
|
+
import { isRight } from './right/is.mjs';
|
|
5
|
+
|
|
6
|
+
function whenHasInformation(...args) {
|
|
7
|
+
if (args.length === 2) {
|
|
8
|
+
const [information, theFunction] = args;
|
|
9
|
+
return (input) => whenHasInformation(input, information, theFunction);
|
|
10
|
+
}
|
|
11
|
+
const [input, information, theFunction] = args;
|
|
12
|
+
const formattedInformation = information instanceof Array
|
|
13
|
+
? information
|
|
14
|
+
: [information];
|
|
15
|
+
if ((isLeft(input)
|
|
16
|
+
|| isRight(input)) && formattedInformation.includes(eitherInformationKind.getValue(input))) {
|
|
17
|
+
return theFunction(unwrap(input));
|
|
18
|
+
}
|
|
19
|
+
return input;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { whenHasInformation };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function asyncFilter(...args) {
|
|
4
|
+
if (args.length === 1) {
|
|
5
|
+
const [predicate] = args;
|
|
6
|
+
return (iterator) => asyncFilter(iterator, predicate);
|
|
7
|
+
}
|
|
8
|
+
const [iterator, predicate] = args;
|
|
9
|
+
let index = 0;
|
|
10
|
+
return (async function* () {
|
|
11
|
+
for await (const element of iterator) {
|
|
12
|
+
if (predicate(element, { index })) {
|
|
13
|
+
yield element;
|
|
14
|
+
}
|
|
15
|
+
index++;
|
|
16
|
+
}
|
|
17
|
+
})();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.asyncFilter = asyncFilter;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface AsyncGeneratorFilterParams {
|
|
2
|
+
index: number;
|
|
3
|
+
}
|
|
4
|
+
export declare function asyncFilter<GenericElement extends unknown, GenericOutput extends GenericElement>(predicate: (item: GenericElement, params: AsyncGeneratorFilterParams) => item is GenericOutput): (iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>) => AsyncGenerator<GenericOutput, unknown, unknown>;
|
|
5
|
+
export declare function asyncFilter<GenericElement extends unknown, GenericOutput extends GenericElement>(iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>, predicate: (item: GenericElement, params: AsyncGeneratorFilterParams) => item is GenericOutput): AsyncGenerator<GenericOutput, unknown, unknown>;
|
|
6
|
+
export declare function asyncFilter<GenericElement extends unknown>(predicate: (item: GenericElement, params: AsyncGeneratorFilterParams) => boolean): (iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>) => AsyncGenerator<GenericElement, unknown, unknown>;
|
|
7
|
+
export declare function asyncFilter<GenericElement extends unknown>(iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>, predicate: (item: GenericElement, params: AsyncGeneratorFilterParams) => boolean): AsyncGenerator<GenericElement, unknown, unknown>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
function asyncFilter(...args) {
|
|
2
|
+
if (args.length === 1) {
|
|
3
|
+
const [predicate] = args;
|
|
4
|
+
return (iterator) => asyncFilter(iterator, predicate);
|
|
5
|
+
}
|
|
6
|
+
const [iterator, predicate] = args;
|
|
7
|
+
let index = 0;
|
|
8
|
+
return (async function* () {
|
|
9
|
+
for await (const element of iterator) {
|
|
10
|
+
if (predicate(element, { index })) {
|
|
11
|
+
yield element;
|
|
12
|
+
}
|
|
13
|
+
index++;
|
|
14
|
+
}
|
|
15
|
+
})();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { asyncFilter };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
async function* asyncLoop(loop) {
|
|
4
|
+
let previousOutput = undefined;
|
|
5
|
+
for (let count = 0; true; count++) {
|
|
6
|
+
const result = await loop({
|
|
7
|
+
previousOutput,
|
|
8
|
+
count,
|
|
9
|
+
next: (data) => ({ "-nextData": data }),
|
|
10
|
+
exit: (data) => ({ "-exitData": data }),
|
|
11
|
+
});
|
|
12
|
+
if ("-exitData" in result) {
|
|
13
|
+
if (result["-exitData"] !== undefined) {
|
|
14
|
+
yield result["-exitData"];
|
|
15
|
+
}
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
previousOutput = result["-nextData"];
|
|
19
|
+
if (previousOutput !== undefined) {
|
|
20
|
+
yield previousOutput;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.asyncLoop = asyncLoop;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type AnyValue } from "../common";
|
|
2
|
+
import { type GeneratorLoopParams } from "./loop";
|
|
3
|
+
interface LoopOutputExistResult<GenericOutput extends any> {
|
|
4
|
+
"-exitData": GenericOutput | undefined;
|
|
5
|
+
}
|
|
6
|
+
interface LoopOutputNextResult<GenericOutput extends any> {
|
|
7
|
+
"-nextData": GenericOutput | undefined;
|
|
8
|
+
}
|
|
9
|
+
export declare function asyncLoop<GenericRawExitOutput extends AnyValue = undefined, GenericRawNextOutput extends AnyValue = undefined>(loop: (params: GeneratorLoopParams<GenericRawNextOutput>) => Promise<LoopOutputNextResult<GenericRawNextOutput> | LoopOutputNextResult<undefined> | LoopOutputExistResult<GenericRawExitOutput> | LoopOutputExistResult<undefined>>): AsyncGenerator<Exclude<GenericRawExitOutput | GenericRawNextOutput, undefined>, unknown, unknown>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
async function* asyncLoop(loop) {
|
|
2
|
+
let previousOutput = undefined;
|
|
3
|
+
for (let count = 0; true; count++) {
|
|
4
|
+
const result = await loop({
|
|
5
|
+
previousOutput,
|
|
6
|
+
count,
|
|
7
|
+
next: (data) => ({ "-nextData": data }),
|
|
8
|
+
exit: (data) => ({ "-exitData": data }),
|
|
9
|
+
});
|
|
10
|
+
if ("-exitData" in result) {
|
|
11
|
+
if (result["-exitData"] !== undefined) {
|
|
12
|
+
yield result["-exitData"];
|
|
13
|
+
}
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
previousOutput = result["-nextData"];
|
|
17
|
+
if (previousOutput !== undefined) {
|
|
18
|
+
yield previousOutput;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { asyncLoop };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function asyncMap(...args) {
|
|
4
|
+
if (args.length === 1) {
|
|
5
|
+
const [theFunction] = args;
|
|
6
|
+
return (iterator) => asyncMap(iterator, theFunction);
|
|
7
|
+
}
|
|
8
|
+
const [iterator, theFunction] = args;
|
|
9
|
+
let index = 0;
|
|
10
|
+
return (async function* () {
|
|
11
|
+
for await (const element of iterator) {
|
|
12
|
+
yield theFunction(element, { index });
|
|
13
|
+
index++;
|
|
14
|
+
}
|
|
15
|
+
})();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.asyncMap = asyncMap;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
interface AsyncGeneratorMapParams {
|
|
2
|
+
index: number;
|
|
3
|
+
}
|
|
4
|
+
export declare function asyncMap<const GenericInput extends unknown, const GenericOutput extends unknown>(theFunction: (arg: GenericInput, params: AsyncGeneratorMapParams) => Promise<GenericOutput>): (iterator: AsyncIterable<GenericInput> | Iterable<GenericInput>) => AsyncGenerator<GenericOutput, unknown, unknown>;
|
|
5
|
+
export declare function asyncMap<const GenericInput extends unknown, const GenericOutput extends unknown>(iterator: AsyncIterable<GenericInput> | Iterable<GenericInput>, theFunction: (arg: GenericInput, params: AsyncGeneratorMapParams) => Promise<GenericOutput>): AsyncGenerator<GenericOutput, unknown, unknown>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
function asyncMap(...args) {
|
|
2
|
+
if (args.length === 1) {
|
|
3
|
+
const [theFunction] = args;
|
|
4
|
+
return (iterator) => asyncMap(iterator, theFunction);
|
|
5
|
+
}
|
|
6
|
+
const [iterator, theFunction] = args;
|
|
7
|
+
let index = 0;
|
|
8
|
+
return (async function* () {
|
|
9
|
+
for await (const element of iterator) {
|
|
10
|
+
yield theFunction(element, { index });
|
|
11
|
+
index++;
|
|
12
|
+
}
|
|
13
|
+
})();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { asyncMap };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var kind = require('../common/kind.cjs');
|
|
4
|
+
var wrapValue = require('../common/wrapValue.cjs');
|
|
5
|
+
var unwrap = require('../common/unwrap.cjs');
|
|
6
|
+
var override = require('../object/override.cjs');
|
|
7
|
+
|
|
8
|
+
const generatorAsyncReduceFromKind = kind.createKind("generator-async-reduce-from");
|
|
9
|
+
const getStartValueParams = {
|
|
10
|
+
from: (value) => generatorAsyncReduceFromKind.addTo(wrapValue.wrapValue(value), null),
|
|
11
|
+
};
|
|
12
|
+
function asyncReduce(...args) {
|
|
13
|
+
if (args.length === 2) {
|
|
14
|
+
const [getStartValue, theFunction] = args;
|
|
15
|
+
return (iterator) => asyncReduce(iterator, getStartValue, theFunction);
|
|
16
|
+
}
|
|
17
|
+
const [iterator, getStartValue, theFunction] = args;
|
|
18
|
+
let lastValue = unwrap.unwrap(typeof getStartValue === "function"
|
|
19
|
+
? getStartValue(getStartValueParams)
|
|
20
|
+
: getStartValue);
|
|
21
|
+
return (async () => {
|
|
22
|
+
let index = 0;
|
|
23
|
+
for await (const element of iterator) {
|
|
24
|
+
const result = theFunction({
|
|
25
|
+
element,
|
|
26
|
+
index,
|
|
27
|
+
lastValue,
|
|
28
|
+
nextWithObject: ((object1, object2) => ({
|
|
29
|
+
"-next": override.override(object1, object2),
|
|
30
|
+
})),
|
|
31
|
+
exit: (output) => ({ "-exit": output }),
|
|
32
|
+
next: (output) => ({ "-next": output }),
|
|
33
|
+
});
|
|
34
|
+
if ("-exit" in result) {
|
|
35
|
+
return result["-exit"];
|
|
36
|
+
}
|
|
37
|
+
lastValue = result["-next"];
|
|
38
|
+
index++;
|
|
39
|
+
}
|
|
40
|
+
return lastValue;
|
|
41
|
+
})();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
exports.asyncReduce = asyncReduce;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Kind } from "../common/kind";
|
|
2
|
+
import { type WrappedValue } from "../common/wrapValue";
|
|
3
|
+
import { type Unwrap } from "../common/unwrap";
|
|
4
|
+
import { type ToLargeEnsemble } from "../common";
|
|
5
|
+
interface AsyncGeneratorReduceNext<GenericOutput extends unknown> {
|
|
6
|
+
"-next": GenericOutput;
|
|
7
|
+
}
|
|
8
|
+
interface ArrayReduceExit<GenericOutput extends unknown> {
|
|
9
|
+
"-exit": GenericOutput;
|
|
10
|
+
}
|
|
11
|
+
type ExitOrNext<GenericOutput extends unknown = unknown> = ArrayReduceExit<GenericOutput> | AsyncGeneratorReduceNext<GenericOutput>;
|
|
12
|
+
export interface AsyncGeneratorReduceFunctionParams<GenericElement extends unknown = unknown, GenericOutput extends unknown = unknown> {
|
|
13
|
+
element: GenericElement;
|
|
14
|
+
index: number;
|
|
15
|
+
lastValue: GenericOutput;
|
|
16
|
+
nextWithObject: GenericOutput extends object ? (object1: GenericOutput, object2: Partial<GenericOutput>) => AsyncGeneratorReduceNext<GenericOutput> : undefined;
|
|
17
|
+
next(output: GenericOutput): AsyncGeneratorReduceNext<GenericOutput>;
|
|
18
|
+
exit(output: GenericOutput): ArrayReduceExit<GenericOutput>;
|
|
19
|
+
}
|
|
20
|
+
declare const generatorAsyncReduceFromKind: import("../common").KindHandler<import("../common").KindDefinition<"generator-async-reduce-from", unknown>>;
|
|
21
|
+
export interface AsyncGeneratorReduceFromResult<GenericValue extends unknown = unknown> extends Kind<typeof generatorAsyncReduceFromKind.definition>, WrappedValue<GenericValue> {
|
|
22
|
+
}
|
|
23
|
+
interface GetStartValueParams {
|
|
24
|
+
from<GenericValue extends unknown>(value: GenericValue): AsyncGeneratorReduceFromResult<GenericValue>;
|
|
25
|
+
}
|
|
26
|
+
export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(startValue: GenericReduceFrom, theFunction: (params: AsyncGeneratorReduceFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNext<ToLargeEnsemble<GenericReduceFrom>>): (iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>) => Promise<ToLargeEnsemble<GenericReduceFrom>>;
|
|
27
|
+
export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends AsyncGeneratorReduceFromResult>(getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: AsyncGeneratorReduceFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNext<Unwrap<GenericReduceFrom>>): (iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>) => Promise<Unwrap<GenericReduceFrom>>;
|
|
28
|
+
export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>, startValue: GenericReduceFrom, theFunction: (params: AsyncGeneratorReduceFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNext<ToLargeEnsemble<GenericReduceFrom>>): Promise<ToLargeEnsemble<GenericReduceFrom>>;
|
|
29
|
+
export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends AsyncGeneratorReduceFromResult>(iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>, getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: AsyncGeneratorReduceFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNext<Unwrap<GenericReduceFrom>>): Promise<Unwrap<GenericReduceFrom>>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createKind } from '../common/kind.mjs';
|
|
2
|
+
import { wrapValue } from '../common/wrapValue.mjs';
|
|
3
|
+
import { unwrap } from '../common/unwrap.mjs';
|
|
4
|
+
import { override } from '../object/override.mjs';
|
|
5
|
+
|
|
6
|
+
const generatorAsyncReduceFromKind = createKind("generator-async-reduce-from");
|
|
7
|
+
const getStartValueParams = {
|
|
8
|
+
from: (value) => generatorAsyncReduceFromKind.addTo(wrapValue(value), null),
|
|
9
|
+
};
|
|
10
|
+
function asyncReduce(...args) {
|
|
11
|
+
if (args.length === 2) {
|
|
12
|
+
const [getStartValue, theFunction] = args;
|
|
13
|
+
return (iterator) => asyncReduce(iterator, getStartValue, theFunction);
|
|
14
|
+
}
|
|
15
|
+
const [iterator, getStartValue, theFunction] = args;
|
|
16
|
+
let lastValue = unwrap(typeof getStartValue === "function"
|
|
17
|
+
? getStartValue(getStartValueParams)
|
|
18
|
+
: getStartValue);
|
|
19
|
+
return (async () => {
|
|
20
|
+
let index = 0;
|
|
21
|
+
for await (const element of iterator) {
|
|
22
|
+
const result = theFunction({
|
|
23
|
+
element,
|
|
24
|
+
index,
|
|
25
|
+
lastValue,
|
|
26
|
+
nextWithObject: ((object1, object2) => ({
|
|
27
|
+
"-next": override(object1, object2),
|
|
28
|
+
})),
|
|
29
|
+
exit: (output) => ({ "-exit": output }),
|
|
30
|
+
next: (output) => ({ "-next": output }),
|
|
31
|
+
});
|
|
32
|
+
if ("-exit" in result) {
|
|
33
|
+
return result["-exit"];
|
|
34
|
+
}
|
|
35
|
+
lastValue = result["-next"];
|
|
36
|
+
index++;
|
|
37
|
+
}
|
|
38
|
+
return lastValue;
|
|
39
|
+
})();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { asyncReduce };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function execute(iterator) {
|
|
4
|
+
if (Symbol.iterator in iterator) {
|
|
5
|
+
for (const __ of iterator) {
|
|
6
|
+
}
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return (async () => {
|
|
11
|
+
for await (const __ of iterator) {
|
|
12
|
+
}
|
|
13
|
+
})();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
exports.execute = execute;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function filter(...args) {
|
|
4
|
+
if (args.length === 1) {
|
|
5
|
+
const [predicate] = args;
|
|
6
|
+
return (iterator) => filter(iterator, predicate);
|
|
7
|
+
}
|
|
8
|
+
const [iterator, predicate] = args;
|
|
9
|
+
let index = 0;
|
|
10
|
+
return (function* () {
|
|
11
|
+
for (const element of iterator) {
|
|
12
|
+
if (predicate(element, { index })) {
|
|
13
|
+
yield element;
|
|
14
|
+
}
|
|
15
|
+
index++;
|
|
16
|
+
}
|
|
17
|
+
})();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.filter = filter;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface GeneratorFilterParams {
|
|
2
|
+
index: number;
|
|
3
|
+
}
|
|
4
|
+
export declare function filter<GenericElement extends unknown, GenericOutput extends GenericElement>(predicate: (item: GenericElement, params: GeneratorFilterParams) => item is GenericOutput): (iterator: Iterable<GenericElement>) => Generator<GenericOutput, unknown, unknown>;
|
|
5
|
+
export declare function filter<GenericElement extends unknown, GenericOutput extends GenericElement>(iterator: Iterable<GenericElement>, predicate: (item: GenericElement, params: GeneratorFilterParams) => item is GenericOutput): Generator<GenericOutput, unknown, unknown>;
|
|
6
|
+
export declare function filter<GenericElement extends unknown>(predicate: (item: GenericElement, params: GeneratorFilterParams) => boolean): (iterator: Iterable<GenericElement>) => Generator<GenericElement, unknown, unknown>;
|
|
7
|
+
export declare function filter<GenericElement extends unknown>(iterator: Iterable<GenericElement>, predicate: (item: GenericElement, params: GeneratorFilterParams) => boolean): Generator<GenericElement, unknown, unknown>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
function filter(...args) {
|
|
2
|
+
if (args.length === 1) {
|
|
3
|
+
const [predicate] = args;
|
|
4
|
+
return (iterator) => filter(iterator, predicate);
|
|
5
|
+
}
|
|
6
|
+
const [iterator, predicate] = args;
|
|
7
|
+
let index = 0;
|
|
8
|
+
return (function* () {
|
|
9
|
+
for (const element of iterator) {
|
|
10
|
+
if (predicate(element, { index })) {
|
|
11
|
+
yield element;
|
|
12
|
+
}
|
|
13
|
+
index++;
|
|
14
|
+
}
|
|
15
|
+
})();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { filter };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var map = require('./map.cjs');
|
|
4
|
+
var execute = require('./execute.cjs');
|
|
5
|
+
var asyncMap = require('./asyncMap.cjs');
|
|
6
|
+
var filter = require('./filter.cjs');
|
|
7
|
+
var asyncFilter = require('./asyncFilter.cjs');
|
|
8
|
+
var reduce = require('./reduce.cjs');
|
|
9
|
+
var asyncReduce = require('./asyncReduce.cjs');
|
|
10
|
+
var loop = require('./loop.cjs');
|
|
11
|
+
var asyncLoop = require('./asyncLoop.cjs');
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
exports.map = map.map;
|
|
16
|
+
exports.execute = execute.execute;
|
|
17
|
+
exports.asyncMap = asyncMap.asyncMap;
|
|
18
|
+
exports.filter = filter.filter;
|
|
19
|
+
exports.asyncFilter = asyncFilter.asyncFilter;
|
|
20
|
+
exports.reduce = reduce.reduce;
|
|
21
|
+
exports.asyncReduce = asyncReduce.asyncReduce;
|
|
22
|
+
exports.loop = loop.loop;
|
|
23
|
+
exports.asyncLoop = asyncLoop.asyncLoop;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { map } from './map.mjs';
|
|
2
|
+
export { execute } from './execute.mjs';
|
|
3
|
+
export { asyncMap } from './asyncMap.mjs';
|
|
4
|
+
export { filter } from './filter.mjs';
|
|
5
|
+
export { asyncFilter } from './asyncFilter.mjs';
|
|
6
|
+
export { reduce } from './reduce.mjs';
|
|
7
|
+
export { asyncReduce } from './asyncReduce.mjs';
|
|
8
|
+
export { loop } from './loop.mjs';
|
|
9
|
+
export { asyncLoop } from './asyncLoop.mjs';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function* loop(loop) {
|
|
4
|
+
let previousOutput = undefined;
|
|
5
|
+
for (let count = 0; true; count++) {
|
|
6
|
+
const result = loop({
|
|
7
|
+
previousOutput,
|
|
8
|
+
count,
|
|
9
|
+
next: (data) => ({ "-nextData": data }),
|
|
10
|
+
exit: (data) => ({ "-exitData": data }),
|
|
11
|
+
});
|
|
12
|
+
if ("-exitData" in result) {
|
|
13
|
+
if (result["-exitData"] !== undefined) {
|
|
14
|
+
yield result["-exitData"];
|
|
15
|
+
}
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
previousOutput = result["-nextData"];
|
|
19
|
+
if (previousOutput !== undefined) {
|
|
20
|
+
yield previousOutput;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.loop = loop;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type AnyValue } from "../common";
|
|
2
|
+
interface LoopOutputExistResult<GenericOutput extends any> {
|
|
3
|
+
"-exitData": GenericOutput | undefined;
|
|
4
|
+
}
|
|
5
|
+
interface LoopOutputNextResult<GenericOutput extends any> {
|
|
6
|
+
"-nextData": GenericOutput | undefined;
|
|
7
|
+
}
|
|
8
|
+
export interface GeneratorLoopParams<GenericRawNextOutput extends any> {
|
|
9
|
+
count: number;
|
|
10
|
+
previousOutput: GenericRawNextOutput | undefined;
|
|
11
|
+
next<GenericValue extends GenericRawNextOutput | undefined = undefined>(output?: GenericValue): LoopOutputNextResult<GenericValue>;
|
|
12
|
+
exit<GenericOutput extends AnyValue = undefined>(output?: GenericOutput): LoopOutputExistResult<GenericOutput>;
|
|
13
|
+
}
|
|
14
|
+
export declare function loop<GenericRawExitOutput extends AnyValue = undefined, GenericRawNextOutput extends AnyValue = undefined>(loop: (params: GeneratorLoopParams<GenericRawNextOutput>) => LoopOutputNextResult<GenericRawNextOutput> | LoopOutputNextResult<undefined> | LoopOutputExistResult<GenericRawExitOutput> | LoopOutputExistResult<undefined>): Generator<Exclude<GenericRawExitOutput | GenericRawNextOutput, undefined>, unknown, unknown>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function* loop(loop) {
|
|
2
|
+
let previousOutput = undefined;
|
|
3
|
+
for (let count = 0; true; count++) {
|
|
4
|
+
const result = loop({
|
|
5
|
+
previousOutput,
|
|
6
|
+
count,
|
|
7
|
+
next: (data) => ({ "-nextData": data }),
|
|
8
|
+
exit: (data) => ({ "-exitData": data }),
|
|
9
|
+
});
|
|
10
|
+
if ("-exitData" in result) {
|
|
11
|
+
if (result["-exitData"] !== undefined) {
|
|
12
|
+
yield result["-exitData"];
|
|
13
|
+
}
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
previousOutput = result["-nextData"];
|
|
17
|
+
if (previousOutput !== undefined) {
|
|
18
|
+
yield previousOutput;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { loop };
|