| import type { Effect } from "../Effect.ts" | |
| import { CurrentConcurrency } from "../References.ts" | |
| import type { Concurrency } from "../Types.ts" | |
| import * as effect from "./effect.ts" | |
| /** @internal */ | |
| export const match = <A, E, R>( | |
| concurrency: Concurrency | undefined, | |
| sequential: () => Effect<A, E, R>, | |
| unbounded: () => Effect<A, E, R>, | |
| bounded: (limit: number) => Effect<A, E, R> | |
| ): Effect<A, E, R> => { | |
| switch (concurrency) { | |
| case undefined: | |
| return sequential() | |
| case "unbounded": | |
| return unbounded() | |
| case "inherit": | |
| return effect.flatMap(CurrentConcurrency, (concurrency) => | |
| concurrency === "unbounded" | |
| ? unbounded() | |
| : concurrency > 1 | |
| ? bounded(concurrency) | |
| : sequential()) | |
| default: | |
| return concurrency > 1 ? bounded(concurrency) : sequential() | |
| } | |
| } | |
| /** @internal */ | |
| export const matchSimple = <A, E, R>( | |
| concurrency: Concurrency | undefined, | |
| sequential: () => Effect<A, E, R>, | |
| concurrent: () => Effect<A, E, R> | |
| ): Effect<A, E, R> => { | |
| switch (concurrency) { | |
| case undefined: | |
| return sequential() | |
| case "unbounded": | |
| return concurrent() | |
| case "inherit": | |
| return effect.flatMap( | |
| CurrentConcurrency, | |
| (concurrency) => | |
| concurrency === "unbounded" || concurrency > 1 | |
| ? concurrent() | |
| : sequential() | |
| ) | |
| default: | |
| return concurrency > 1 ? concurrent() : sequential() | |
| } | |
| } | |
Xet Storage Details
- Size:
- 1.46 kB
- Xet hash:
- 83536b777bba814264c244aedbb6330d55676dbf8862a08391a76929dabaf4e2
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.