Skip to content
Effect 4.0 is here. One ecosystem. Zero dependencies.

Scope

15 exports Since v2.0.0 Source

Constructors

Since v2.0.0

Creates a new closeable scope where finalizers will run according to the specified ExecutionStrategy. If no execution strategy is provided, sequential will be used by default.

Signature

declare const make: (executionStrategy?: ExecutionStrategy.ExecutionStrategy) => Effect.Effect<CloseableScope>

Context

Since v2.0.0

A tag representing the current Scope in the environment.

Signature

declare const Scope: Tag<Scope, Scope>

Destructors

Since v2.0.0

Closes this scope with the specified exit value, running all finalizers that have been added to the scope.

Signature

declare const close: (self: CloseableScope, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>
Since v2.0.0

Provides this closeable scope to an Effect that requires a scope, guaranteeing that the scope is closed with the result of that effect as soon as the effect completes execution, whether by success, failure, or interruption.

Signature

declare const use: {
(scope: CloseableScope): <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, Exclude<R, Scope>>;
<A, E, R>(effect: Effect<A, E, R>, scope: CloseableScope): Effect<A, E, Exclude<R, Scope>>;
}

Models

Since v2.0.0

A scope that can be explicitly closed with a specified exit value.

Signature

interface CloseableScope extends Scope, Pipeable {
readonly [CloseableScopeTypeId]: typeof CloseableScopeTypeId;
}

Scope

interface
Since v2.0.0

Represents a scope that manages finalizers and can fork child scopes.

Signature

interface Scope extends Pipeable {
readonly [ScopeTypeId]: typeof ScopeTypeId;
readonly strategy: ExecutionStrategy;
}

Other

Since v2.0.0

Symbols

A unique identifier for the CloseableScope type.

Signature

declare const CloseableScopeTypeId: unique symbol

The type of the unique identifier for CloseableScope.

Signature

type CloseableScopeTypeId = typeof CloseableScopeTypeId

A unique identifier for the Scope type.

Signature

declare const ScopeTypeId: unique symbol
Since v2.0.0

The type of the unique identifier for Scope.

Signature

type ScopeTypeId = typeof ScopeTypeId

Utils

Adds a finalizer to this scope. The finalizer is guaranteed to be run when the scope is closed. Use this when the finalizer does not need to know the Exit value that the scope is closed with.

Signature

declare const addFinalizer: (self: Scope, finalizer: Effect.Effect<unknown>) => Effect.Effect<void>

Adds a finalizer to this scope. The finalizer receives the Exit value when the scope is closed, allowing it to perform different actions based on the exit status.

Signature

declare const addFinalizerExit: (self: Scope, finalizer: Scope.Finalizer) => Effect.Effect<void>
Since v2.0.0

Extends the scope of an Effect that requires a scope into this scope. It provides this scope to the effect but does not close the scope when the effect completes execution. This allows extending a scoped value into a larger scope.

Signature

declare const extend: {
(scope: Scope): <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, Exclude<R, Scope>>;
<A, E, R>(effect: Effect<A, E, R>, scope: Scope): Effect<A, E, Exclude<R, Scope>>;
}
Since v2.0.0

Forks a new child scope with the specified execution strategy. The child scope will automatically be closed when this scope is closed.

Signature

declare const fork: (self: Scope, strategy: ExecutionStrategy.ExecutionStrategy) => Effect.Effect<CloseableScope>