Config<T, A, E>Configuration for Gate.make — local scoped handle, no RPC.
export interface interface Config<T, A, E>Configuration for
Gate.make
— local scoped handle, no RPC.
Config<function (type parameter) T in Config<T, A, E>T, function (type parameter) A in Config<T, A, E>A, function (type parameter) E in Config<T, A, E>E> {
readonly Config<T, A, E>.name?: string | undefinedname?: string;
readonly Config<T, A, E>.effect: (input: T) => Effect.Effect<A, E>effect: (input: Tinput: function (type parameter) T in Config<T, A, E>T) => import EffectEffect.interface Effect<out A, out E = never, out R = never>The Effect interface defines a value that lazily describes a workflow or
job. The workflow requires some context R, and may fail with an error of
type E, or succeed with a value of type A.
When to use
Use when you need to represent a lazy, composable workflow that can require
services, fail with a typed error, or succeed with a typed value.
Details
Effect values model resourceful interaction with the outside world,
including synchronous, asynchronous, concurrent, and parallel interaction.
They use a fiber-based concurrency model, with built-in support for
scheduling, fine-grained interruption, structured concurrency, and high
scalability.
To run an Effect value, you need a Runtime, which is a type that is
capable of executing Effect values.
Effect<function (type parameter) A in Config<T, A, E>A, function (type parameter) E in Config<T, A, E>E>;
readonly Config<T, A, E>.concurrency?: number | undefinedconcurrency?: number;
/**
* Optional Effect `RateLimiter` on each `run` (before the concurrency semaphore).
* Omitted = no rate limit (only {@link concurrency}).
*/
readonly Config<T, A, E>.rateLimit?: RateLimitOptionsOptional Effect RateLimiter on each run (before the concurrency semaphore).
Omitted = no rate limit (only
concurrency
).
rateLimit?: type RateLimitOptions = Omit<
{
readonly algorithm?:
| "fixed-window"
| "token-bucket"
| undefined
readonly onExceeded?:
| "delay"
| "fail"
| undefined
readonly window: Input
readonly limit: number
readonly key: string
readonly tokens?: number | undefined
},
"key"
> & {
readonly key?: internal.RateLimiterConsumeOptions["key"]
}
Effect RateLimiter.consume / makeWithRateLimiter options for a gate
(key optional — defaults to the gate hyperlink / tag id). Policy only; the
RateLimiter / RateLimiterStore services are presence-driven in Context.
RateLimitOptions;
}