Scope overview
Added in v2.0.0
Table of contents
constructors
make
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
export declare const make: (executionStrategy?: ExecutionStrategy.ExecutionStrategy) => Effect.Effect<CloseableScope>
Added in v2.0.0
context
Scope
A tag representing the current Scope
in the environment.
Signature
export declare const Scope: Context.Tag<Scope, Scope>
Added in v2.0.0
destructors
close
Closes this scope with the specified exit value, running all finalizers that have been added to the scope.
Signature
export declare const close: (self: CloseableScope, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>
Added in v2.0.0
use
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
export declare const use: {
(scope: CloseableScope): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Scope>>
<A, E, R>(effect: Effect.Effect<A, E, R>, scope: CloseableScope): Effect.Effect<A, E, Exclude<R, Scope>>
}
Added in v2.0.0
models
CloseableScope (interface)
A scope that can be explicitly closed with a specified exit value.
Signature
export interface CloseableScope extends Scope, Pipeable {
readonly [CloseableScopeTypeId]: CloseableScopeTypeId
/**
* Closes this scope with the given exit value, running all finalizers.
*
* @internal
*/
close(exit: Exit.Exit<unknown, unknown>): Effect.Effect<void>
}
Added in v2.0.0
Scope (interface)
Represents a scope that manages finalizers and can fork child scopes.
Signature
export interface Scope extends Pipeable {
readonly [ScopeTypeId]: ScopeTypeId
/**
* The execution strategy for running finalizers in this scope.
*/
readonly strategy: ExecutionStrategy.ExecutionStrategy
/**
* Forks a new child scope with the specified execution strategy. The child scope
* will automatically be closed when this scope is closed.
*
* @internal
*/
fork(strategy: ExecutionStrategy.ExecutionStrategy): Effect.Effect<Scope.Closeable>
/**
* Adds a finalizer to this scope. The finalizer will be run when the scope is closed.
*
* @internal
*/
addFinalizer(finalizer: Scope.Finalizer): Effect.Effect<void>
}
Added in v2.0.0
symbols
CloseableScopeTypeId
A unique identifier for the CloseableScope
type.
Signature
export declare const CloseableScopeTypeId: typeof CloseableScopeTypeId
Added in v2.0.0
CloseableScopeTypeId (type alias)
The type of the unique identifier for CloseableScope
.
Signature
export type CloseableScopeTypeId = typeof CloseableScopeTypeId
Added in v2.0.0
ScopeTypeId
A unique identifier for the Scope
type.
Signature
export declare const ScopeTypeId: typeof ScopeTypeId
Added in v2.0.0
ScopeTypeId (type alias)
The type of the unique identifier for Scope
.
Signature
export type ScopeTypeId = typeof ScopeTypeId
Added in v2.0.0
utils
Scope (namespace)
Added in v2.0.0
Closeable (type alias)
A closeable scope that can be explicitly closed.
Signature
export type Closeable = CloseableScope
Added in v2.0.0
Finalizer (type alias)
A finalizer function that takes an Exit
value and returns an Effect
.
Signature
export type Finalizer = (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>
Added in v2.0.0
addFinalizer
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
export declare const addFinalizer: (self: Scope, finalizer: Effect.Effect<unknown>) => Effect.Effect<void>
Added in v2.0.0
addFinalizerExit
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
export declare const addFinalizerExit: (self: Scope, finalizer: Scope.Finalizer) => Effect.Effect<void>
Added in v2.0.0
extend
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
export declare const extend: {
(scope: Scope): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Scope>>
<A, E, R>(effect: Effect.Effect<A, E, R>, scope: Scope): Effect.Effect<A, E, Exclude<R, Scope>>
}
Added in v2.0.0
fork
Forks a new child scope with the specified execution strategy. The child scope will automatically be closed when this scope is closed.
Signature
export declare const fork: (self: Scope, strategy: ExecutionStrategy.ExecutionStrategy) => Effect.Effect<CloseableScope>
Added in v2.0.0