EdgeAIG's picture
download
raw
1.46 kB
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.