![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.quebec/private_html/node_modules/effect/dist/dts/ |
/**
* A `Layer<ROut, E, RIn>` describes how to build one or more services in your
* application. Services can be injected into effects via
* `Effect.provideService`. Effects can require services via `Effect.service`.
*
* Layer can be thought of as recipes for producing bundles of services, given
* their dependencies (other services).
*
* Construction of services can be effectful and utilize resources that must be
* acquired and safely released when the services are done being utilized.
*
* By default layers are shared, meaning that if the same layer is used twice
* the layer will only be allocated a single time.
*
* Because of their excellent composition properties, layers are the idiomatic
* way in Effect-TS to create services that depend on other services.
*
* @since 2.0.0
*/
import type * as Cause from "./Cause.js";
import type * as Clock from "./Clock.js";
import type { ConfigProvider } from "./ConfigProvider.js";
import * as Context from "./Context.js";
import type * as Effect from "./Effect.js";
import type * as Exit from "./Exit.js";
import type { FiberRef } from "./FiberRef.js";
import { type LazyArg } from "./Function.js";
import type { LogLevel } from "./LogLevel.js";
import type * as Option from "./Option.js";
import type { Pipeable } from "./Pipeable.js";
import type * as Random from "./Random.js";
import type * as Request from "./Request.js";
import type * as Runtime from "./Runtime.js";
import type * as Schedule from "./Schedule.js";
import * as Scheduler from "./Scheduler.js";
import type * as Scope from "./Scope.js";
import type * as Tracer from "./Tracer.js";
import type * as Types from "./Types.js";
/**
* @since 2.0.0
* @category symbols
*/
export declare const LayerTypeId: unique symbol;
/**
* @since 2.0.0
* @category symbols
*/
export type LayerTypeId = typeof LayerTypeId;
/**
* @since 2.0.0
* @category models
*/
export interface Layer<in ROut, out E = never, out RIn = never> extends Layer.Variance<ROut, E, RIn>, Pipeable {
}
/**
* @since 2.0.0
*/
export declare namespace Layer {
/**
* @since 2.0.0
* @category models
*/
interface Variance<in ROut, out E, out RIn> {
readonly [LayerTypeId]: {
readonly _ROut: Types.Contravariant<ROut>;
readonly _E: Types.Covariant<E>;
readonly _RIn: Types.Covariant<RIn>;
};
}
/**
* @since 3.9.0
* @category type-level
*/
interface Any {
readonly [LayerTypeId]: {
readonly _ROut: Types.Contravariant<never>;
readonly _E: Types.Covariant<any>;
readonly _RIn: Types.Covariant<any>;
};
}
/**
* @since 2.0.0
* @category type-level
*/
type Context<T extends Any> = [T] extends [Layer<infer _ROut, infer _E, infer _RIn>] ? _RIn : never;
/**
* @since 2.0.0
* @category type-level
*/
type Error<T extends Any> = [T] extends [Layer<infer _ROut, infer _E, infer _RIn>] ? _E : never;
/**
* @since 2.0.0
* @category type-level
*/
type Success<T extends Any> = [T] extends [Layer<infer _ROut, infer _E, infer _RIn>] ? _ROut : never;
}
/**
* @since 2.0.0
* @category symbols
*/
export declare const MemoMapTypeId: unique symbol;
/**
* @since 2.0.0
* @category symbols
*/
export type MemoMapTypeId = typeof MemoMapTypeId;
/**
* @since 2.0.0
* @category models
*/
export interface MemoMap {
readonly [MemoMapTypeId]: MemoMapTypeId;
}
/**
* @since 3.13.0
* @category models
*/
export interface CurrentMemoMap {
readonly _: unique symbol;
}
/**
* @since 3.13.0
* @category models
*/
export declare const CurrentMemoMap: Context.Reference<CurrentMemoMap, MemoMap>;
/**
* Returns `true` if the specified value is a `Layer`, `false` otherwise.
*
* @since 2.0.0
* @category getters
*/
export declare const isLayer: (u: unknown) => u is Layer<unknown, unknown, unknown>;
/**
* Returns `true` if the specified `Layer` is a fresh version that will not be
* shared, `false` otherwise.
*
* @since 2.0.0
* @category getters
*/
export declare const isFresh: <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => boolean;
/**
* @since 3.3.0
* @category tracing
*/
export declare const annotateLogs: {
/**
* @since 3.3.0
* @category tracing
*/
(key: string, value: unknown): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, R>;
/**
* @since 3.3.0
* @category tracing
*/
(values: Record<string, unknown>): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, R>;
/**
* @since 3.3.0
* @category tracing
*/
<A, E, R>(self: Layer<A, E, R>, key: string, value: unknown): Layer<A, E, R>;
/**
* @since 3.3.0
* @category tracing
*/
<A, E, R>(self: Layer<A, E, R>, values: Record<string, unknown>): Layer<A, E, R>;
};
/**
* @since 3.3.0
* @category tracing
*/
export declare const annotateSpans: {
/**
* @since 3.3.0
* @category tracing
*/
(key: string, value: unknown): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, R>;
/**
* @since 3.3.0
* @category tracing
*/
(values: Record<string, unknown>): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, R>;
/**
* @since 3.3.0
* @category tracing
*/
<A, E, R>(self: Layer<A, E, R>, key: string, value: unknown): Layer<A, E, R>;
/**
* @since 3.3.0
* @category tracing
*/
<A, E, R>(self: Layer<A, E, R>, values: Record<string, unknown>): Layer<A, E, R>;
};
/**
* Builds a layer into a scoped value.
*
* @since 2.0.0
* @category destructors
*/
export declare const build: <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect.Effect<Context.Context<ROut>, E, Scope.Scope | RIn>;
/**
* Builds a layer into an `Effect` value. Any resources associated with this
* layer will be released when the specified scope is closed unless their scope
* has been extended. This allows building layers where the lifetime of some of
* the services output by the layer exceed the lifetime of the effect the
* layer is provided to.
*
* @since 2.0.0
* @category destructors
*/
export declare const buildWithScope: {
/**
* Builds a layer into an `Effect` value. Any resources associated with this
* layer will be released when the specified scope is closed unless their scope
* has been extended. This allows building layers where the lifetime of some of
* the services output by the layer exceed the lifetime of the effect the
* layer is provided to.
*
* @since 2.0.0
* @category destructors
*/
(scope: Scope.Scope): <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect.Effect<Context.Context<ROut>, E, RIn>;
/**
* Builds a layer into an `Effect` value. Any resources associated with this
* layer will be released when the specified scope is closed unless their scope
* has been extended. This allows building layers where the lifetime of some of
* the services output by the layer exceed the lifetime of the effect the
* layer is provided to.
*
* @since 2.0.0
* @category destructors
*/
<RIn, E, ROut>(self: Layer<ROut, E, RIn>, scope: Scope.Scope): Effect.Effect<Context.Context<ROut>, E, RIn>;
};
/**
* Recovers from all errors.
*
* @since 2.0.0
* @category error handling
*/
export declare const catchAll: {
/**
* Recovers from all errors.
*
* @since 2.0.0
* @category error handling
*/
<E, RIn2, E2, ROut2>(onError: (error: E) => Layer<ROut2, E2, RIn2>): <RIn, ROut>(self: Layer<ROut, E, RIn>) => Layer<ROut & ROut2, E2, RIn2 | RIn>;
/**
* Recovers from all errors.
*
* @since 2.0.0
* @category error handling
*/
<RIn, E, ROut, RIn2, E2, ROut2>(self: Layer<ROut, E, RIn>, onError: (error: E) => Layer<ROut2, E2, RIn2>): Layer<ROut & ROut2, E2, RIn | RIn2>;
};
/**
* Recovers from all errors.
*
* @since 2.0.0
* @category error handling
*/
export declare const catchAllCause: {
/**
* Recovers from all errors.
*
* @since 2.0.0
* @category error handling
*/
<E, RIn2, E2, ROut2>(onError: (cause: Cause.Cause<E>) => Layer<ROut2, E2, RIn2>): <RIn, ROut>(self: Layer<ROut, E, RIn>) => Layer<ROut & ROut2, E2, RIn2 | RIn>;
/**
* Recovers from all errors.
*
* @since 2.0.0
* @category error handling
*/
<RIn, E, ROut, RIn2, E2, ROut22>(self: Layer<ROut, E, RIn>, onError: (cause: Cause.Cause<E>) => Layer<ROut22, E2, RIn2>): Layer<ROut & ROut22, E2, RIn | RIn2>;
};
/**
* Constructs a `Layer` that passes along the specified context as an
* output.
*
* @since 2.0.0
* @category constructors
*/
export declare const context: <R>() => Layer<R, never, R>;
/**
* Constructs a layer that dies with the specified defect.
*
* @since 2.0.0
* @category constructors
*/
export declare const die: (defect: unknown) => Layer<unknown>;
/**
* Constructs a layer that dies with the specified defect.
*
* @since 2.0.0
* @category constructors
*/
export declare const dieSync: (evaluate: LazyArg<unknown>) => Layer<unknown>;
/**
* Replaces the layer's output with `never` and includes the layer only for its
* side-effects.
*
* @since 2.0.0
* @category mapping
*/
export declare const discard: <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Layer<never, E, RIn>;
/**
* Constructs a layer from the specified effect.
*
* @since 2.0.0
* @category constructors
*/
export declare const effect: {
/**
* Constructs a layer from the specified effect.
*
* @since 2.0.0
* @category constructors
*/
<I, S>(tag: Context.Tag<I, S>): <E, R>(effect: Effect.Effect<Types.NoInfer<S>, E, R>) => Layer<I, E, R>;
/**
* Constructs a layer from the specified effect.
*
* @since 2.0.0
* @category constructors
*/
<I, S, E, R>(tag: Context.Tag<I, S>, effect: Effect.Effect<Types.NoInfer<S>, E, R>): Layer<I, E, R>;
};
/**
* Constructs a layer from the specified effect, discarding its output.
*
* @since 2.0.0
* @category constructors
*/
export declare const effectDiscard: <X, E, R>(effect: Effect.Effect<X, E, R>) => Layer<never, E, R>;
/**
* Constructs a layer from the specified effect, which must return one or more
* services.
*
* @since 2.0.0
* @category constructors
*/
export declare const effectContext: <A, E, R>(effect: Effect.Effect<Context.Context<A>, E, R>) => Layer<A, E, R>;
/**
* A Layer that constructs an empty Context.
*
* @since 2.0.0
* @category constructors
*/
export declare const empty: Layer<never>;
/**
* Extends the scope of this layer, returning a new layer that when provided
* to an effect will not immediately release its associated resources when
* that effect completes execution but instead when the scope the resulting
* effect depends on is closed.
*
* @since 2.0.0
* @category utils
*/
export declare const extendScope: <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Layer<ROut, E, Scope.Scope | RIn>;
/**
* Constructs a layer that fails with the specified error.
*
* @since 2.0.0
* @category constructors
*/
export declare const fail: <E>(error: E) => Layer<unknown, E>;
/**
* Constructs a layer that fails with the specified error.
*
* @since 2.0.0
* @category constructors
*/
export declare const failSync: <E>(evaluate: LazyArg<E>) => Layer<unknown, E>;
/**
* Constructs a layer that fails with the specified cause.
*
* @since 2.0.0
* @category constructors
*/
export declare const failCause: <E>(cause: Cause.Cause<E>) => Layer<unknown, E>;
/**
* Constructs a layer that fails with the specified cause.
*
* @since 2.0.0
* @category constructors
*/
export declare const failCauseSync: <E>(evaluate: LazyArg<Cause.Cause<E>>) => Layer<unknown, E>;
/**
* Constructs a layer dynamically based on the output of this layer.
*
* @since 2.0.0
* @category sequencing
*/
export declare const flatMap: {
/**
* Constructs a layer dynamically based on the output of this layer.
*
* @since 2.0.0
* @category sequencing
*/
<A, A2, E2, R2>(f: (context: Context.Context<A>) => Layer<A2, E2, R2>): <E, R>(self: Layer<A, E, R>) => Layer<A2, E2 | E, R2 | R>;
/**
* Constructs a layer dynamically based on the output of this layer.
*
* @since 2.0.0
* @category sequencing
*/
<A, E, R, A2, E2, R2>(self: Layer<A, E, R>, f: (context: Context.Context<A>) => Layer<A2, E2, R2>): Layer<A2, E | E2, R | R2>;
};
/**
* Flattens layers nested in the context of an effect.
*
* @since 2.0.0
* @category sequencing
*/
export declare const flatten: {
/**
* Flattens layers nested in the context of an effect.
*
* @since 2.0.0
* @category sequencing
*/
<I, A, E2, R2>(tag: Context.Tag<I, Layer<A, E2, R2>>): <E, R>(self: Layer<I, E, R>) => Layer<A, E2 | E, R2 | R>;
/**
* Flattens layers nested in the context of an effect.
*
* @since 2.0.0
* @category sequencing
*/
<I, E, R, A, E2, R2>(self: Layer<I, E, R>, tag: Context.Tag<I, Layer<A, E2, R2>>): Layer<A, E | E2, R | R2>;
};
/**
* Creates a fresh version of this layer that will not be shared.
*
* @since 2.0.0
* @category utils
*/
export declare const fresh: <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, R>;
declare const fromFunction: <I1, S1, I2, S2>(tagA: Context.Tag<I1, S1>, tagB: Context.Tag<I2, S2>, f: (a: Types.NoInfer<S1>) => Types.NoInfer<S2>) => Layer<I2, never, I1>;
export {
/**
* Constructs a layer from the context using the specified function.
*
* @since 2.0.0
* @category constructors
*/
fromFunction as function };
/**
* Builds this layer and uses it until it is interrupted. This is useful when
* your entire application is a layer, such as an HTTP server.
*
* @since 2.0.0
* @category conversions
*/
export declare const launch: <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect.Effect<never, E, RIn>;
/**
* Returns a new layer whose output is mapped by the specified function.
*
* @since 2.0.0
* @category mapping
*/
export declare const map: {
/**
* Returns a new layer whose output is mapped by the specified function.
*
* @since 2.0.0
* @category mapping
*/
<A, B>(f: (context: Context.Context<A>) => Context.Context<B>): <E, R>(self: Layer<A, E, R>) => Layer<B, E, R>;
/**
* Returns a new layer whose output is mapped by the specified function.
*
* @since 2.0.0
* @category mapping
*/
<A, E, R, B>(self: Layer<A, E, R>, f: (context: Context.Context<A>) => Context.Context<B>): Layer<B, E, R>;
};
/**
* Returns a layer with its error channel mapped using the specified function.
*
* @since 2.0.0
* @category mapping
*/
export declare const mapError: {
/**
* Returns a layer with its error channel mapped using the specified function.
*
* @since 2.0.0
* @category mapping
*/
<E, E2>(f: (error: E) => E2): <A, R>(self: Layer<A, E, R>) => Layer<A, E2, R>;
/**
* Returns a layer with its error channel mapped using the specified function.
*
* @since 2.0.0
* @category mapping
*/
<A, E, R, E2>(self: Layer<A, E, R>, f: (error: E) => E2): Layer<A, E2, R>;
};
/**
* Feeds the error or output services of this layer into the input of either
* the specified `failure` or `success` layers, resulting in a new layer with
* the inputs of this layer, and the error or outputs of the specified layer.
*
* @since 2.0.0
* @category folding
*/
export declare const match: {
/**
* Feeds the error or output services of this layer into the input of either
* the specified `failure` or `success` layers, resulting in a new layer with
* the inputs of this layer, and the error or outputs of the specified layer.
*
* @since 2.0.0
* @category folding
*/
<E, A2, E2, R2, A, A3, E3, R3>(options: {
readonly onFailure: (error: E) => Layer<A2, E2, R2>;
readonly onSuccess: (context: Context.Context<A>) => Layer<A3, E3, R3>;
}): <R>(self: Layer<A, E, R>) => Layer<A2 & A3, E2 | E3, R2 | R3 | R>;
/**
* Feeds the error or output services of this layer into the input of either
* the specified `failure` or `success` layers, resulting in a new layer with
* the inputs of this layer, and the error or outputs of the specified layer.
*
* @since 2.0.0
* @category folding
*/
<A, E, R, A2, E2, R2, A3, E3, R3>(self: Layer<A, E, R>, options: {
readonly onFailure: (error: E) => Layer<A2, E2, R2>;
readonly onSuccess: (context: Context.Context<A>) => Layer<A3, E3, R3>;
}): Layer<A2 & A3, E2 | E3, R | R2 | R3>;
};
/**
* Feeds the error or output services of this layer into the input of either
* the specified `failure` or `success` layers, resulting in a new layer with
* the inputs of this layer, and the error or outputs of the specified layer.
*
* @since 2.0.0
* @category folding
*/
export declare const matchCause: {
/**
* Feeds the error or output services of this layer into the input of either
* the specified `failure` or `success` layers, resulting in a new layer with
* the inputs of this layer, and the error or outputs of the specified layer.
*
* @since 2.0.0
* @category folding
*/
<E, A2, E2, R2, A, A3, E3, R3>(options: {
readonly onFailure: (cause: Cause.Cause<E>) => Layer<A2, E2, R2>;
readonly onSuccess: (context: Context.Context<A>) => Layer<A3, E3, R3>;
}): <R>(self: Layer<A, E, R>) => Layer<A2 & A3, E2 | E3, R2 | R3 | R>;
/**
* Feeds the error or output services of this layer into the input of either
* the specified `failure` or `success` layers, resulting in a new layer with
* the inputs of this layer, and the error or outputs of the specified layer.
*
* @since 2.0.0
* @category folding
*/
<A, E, R, A2, E2, R2, A3, E3, R3>(self: Layer<A, E, R>, options: {
readonly onFailure: (cause: Cause.Cause<E>) => Layer<A2, E2, R2>;
readonly onSuccess: (context: Context.Context<A>) => Layer<A3, E3, R3>;
}): Layer<A2 & A3, E2 | E3, R | R2 | R3>;
};
/**
* Returns a scoped effect that, if evaluated, will return the lazily computed
* result of this layer.
*
* @since 2.0.0
* @category utils
*/
export declare const memoize: <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect.Effect<Layer<ROut, E, RIn>, never, Scope.Scope>;
/**
* Merges this layer with the specified layer concurrently, producing a new layer with combined input and output types.
*
* @since 2.0.0
* @category zipping
*/
export declare const merge: {
/**
* Merges this layer with the specified layer concurrently, producing a new layer with combined input and output types.
*
* @since 2.0.0
* @category zipping
*/
<RIn2, E2, ROut2>(that: Layer<ROut2, E2, RIn2>): <RIn, E1, ROut>(self: Layer<ROut, E1, RIn>) => Layer<ROut2 | ROut, E2 | E1, RIn2 | RIn>;
/**
* Merges this layer with the specified layer concurrently, producing a new layer with combined input and output types.
*
* @since 2.0.0
* @category zipping
*/
<RIn, E1, ROut, RIn2, E2, ROut2>(self: Layer<ROut, E1, RIn>, that: Layer<ROut2, E2, RIn2>): Layer<ROut | ROut2, E1 | E2, RIn | RIn2>;
};
/**
* Combines all the provided layers concurrently, creating a new layer with merged input, error, and output types.
*
* @since 2.0.0
* @category zipping
*/
export declare const mergeAll: <Layers extends [Layer<never, any, any>, ...Array<Layer<never, any, any>>]>(...layers: Layers) => Layer<{
[k in keyof Layers]: Layer.Success<Layers[k]>;
}[number], {
[k in keyof Layers]: Layer.Error<Layers[k]>;
}[number], {
[k in keyof Layers]: Layer.Context<Layers[k]>;
}[number]>;
/**
* Translates effect failure into death of the fiber, making all failures
* unchecked and not a part of the type of the layer.
*
* @since 2.0.0
* @category error handling
*/
export declare const orDie: <A, E, R>(self: Layer<A, E, R>) => Layer<A, never, R>;
/**
* Executes this layer and returns its output, if it succeeds, but otherwise
* executes the specified layer.
*
* @since 2.0.0
* @category error handling
*/
export declare const orElse: {
/**
* Executes this layer and returns its output, if it succeeds, but otherwise
* executes the specified layer.
*
* @since 2.0.0
* @category error handling
*/
<A2, E2, R2>(that: LazyArg<Layer<A2, E2, R2>>): <A, E, R>(self: Layer<A, E, R>) => Layer<A & A2, E2 | E, R2 | R>;
/**
* Executes this layer and returns its output, if it succeeds, but otherwise
* executes the specified layer.
*
* @since 2.0.0
* @category error handling
*/
<A, E, R, A2, E2, R2>(self: Layer<A, E, R>, that: LazyArg<Layer<A2, E2, R2>>): Layer<A & A2, E | E2, R | R2>;
};
/**
* Returns a new layer that produces the outputs of this layer but also
* passes through the inputs.
*
* @since 2.0.0
* @category utils
*/
export declare const passthrough: <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Layer<RIn | ROut, E, RIn>;
/**
* Projects out part of one of the services output by this layer using the
* specified function.
*
* @since 2.0.0
* @category utils
*/
export declare const project: {
/**
* Projects out part of one of the services output by this layer using the
* specified function.
*
* @since 2.0.0
* @category utils
*/
<I1, S1, I2, S2>(tagA: Context.Tag<I1, S1>, tagB: Context.Tag<I2, S2>, f: (a: Types.NoInfer<S1>) => Types.NoInfer<S2>): <RIn, E>(self: Layer<I1, E, RIn>) => Layer<I2, E, RIn>;
/**
* Projects out part of one of the services output by this layer using the
* specified function.
*
* @since 2.0.0
* @category utils
*/
<RIn, E, I1, S1, I2, S2>(self: Layer<I1, E, RIn>, tagA: Context.Tag<I1, S1>, tagB: Context.Tag<I2, S2>, f: (a: Types.NoInfer<S1>) => Types.NoInfer<S2>): Layer<I2, E, RIn>;
};
/**
* @since 2.0.0
* @category utils
*/
export declare const locallyEffect: {
/**
* @since 2.0.0
* @category utils
*/
<RIn, E, ROut, RIn2, E2, ROut2>(f: (_: Effect.Effect<RIn, E, Context.Context<ROut>>) => Effect.Effect<RIn2, E2, Context.Context<ROut2>>): (self: Layer<ROut, E, RIn>) => Layer<ROut2, E2, RIn2>;
/**
* @since 2.0.0
* @category utils
*/
<RIn, E, ROut, RIn2, E2, ROut2>(self: Layer<ROut, E, RIn>, f: (_: Effect.Effect<RIn, E, Context.Context<ROut>>) => Effect.Effect<RIn2, E2, Context.Context<ROut2>>): Layer<ROut2, E2, RIn2>;
};
/**
* @since 2.0.0
* @category utils
*/
export declare const locally: {
/**
* @since 2.0.0
* @category utils
*/
<X>(ref: FiberRef<X>, value: X): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, R>;
/**
* @since 2.0.0
* @category utils
*/
<A, E, R, X>(self: Layer<A, E, R>, ref: FiberRef<X>, value: X): Layer<A, E, R>;
};
/**
* @since 2.0.0
* @category utils
*/
export declare const locallyWith: {
/**
* @since 2.0.0
* @category utils
*/
<X>(ref: FiberRef<X>, value: (_: X) => X): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, R>;
/**
* @since 2.0.0
* @category utils
*/
<A, E, R, X>(self: Layer<A, E, R>, ref: FiberRef<X>, value: (_: X) => X): Layer<A, E, R>;
};
/**
* @since 2.0.0
* @category utils
*/
export declare const locallyScoped: <A>(self: FiberRef<A>, value: A) => Layer<never>;
/**
* @since 2.0.0
* @category utils
*/
export declare const fiberRefLocallyScopedWith: <A>(self: FiberRef<A>, value: (_: A) => A) => Layer<never>;
/**
* Retries constructing this layer according to the specified schedule.
*
* @since 2.0.0
* @category retrying
*/
export declare const retry: {
/**
* Retries constructing this layer according to the specified schedule.
*
* @since 2.0.0
* @category retrying
*/
<X, E, RIn2>(schedule: Schedule.Schedule<X, NoInfer<E>, RIn2>): <ROut, RIn>(self: Layer<ROut, E, RIn>) => Layer<ROut, E, RIn2 | RIn>;
/**
* Retries constructing this layer according to the specified schedule.
*
* @since 2.0.0
* @category retrying
*/
<ROut, E, RIn, X, RIn2>(self: Layer<ROut, E, RIn>, schedule: Schedule.Schedule<X, E, RIn2>): Layer<ROut, E, RIn | RIn2>;
};
/**
* A layer that constructs a scope and closes it when the workflow the layer
* is provided to completes execution, whether by success, failure, or
* interruption. This can be used to close a scope when providing a layer to a
* workflow.
*
* @since 2.0.0
* @category constructors
*/
export declare const scope: Layer<Scope.Scope>;
/**
* Constructs a layer from the specified scoped effect.
*
* @since 2.0.0
* @category constructors
*/
export declare const scoped: {
/**
* Constructs a layer from the specified scoped effect.
*
* @since 2.0.0
* @category constructors
*/
<I, S>(tag: Context.Tag<I, S>): <E, R>(effect: Effect.Effect<Types.NoInfer<S>, E, R>) => Layer<I, E, Exclude<R, Scope.Scope>>;
/**
* Constructs a layer from the specified scoped effect.
*
* @since 2.0.0
* @category constructors
*/
<I, S, E, R>(tag: Context.Tag<I, S>, effect: Effect.Effect<Types.NoInfer<S>, E, R>): Layer<I, E, Exclude<R, Scope.Scope>>;
};
/**
* Constructs a layer from the specified scoped effect.
*
* @since 2.0.0
* @category constructors
*/
export declare const scopedDiscard: <X, E, R>(effect: Effect.Effect<X, E, R>) => Layer<never, E, Exclude<R, Scope.Scope>>;
/**
* Constructs a layer from the specified scoped effect, which must return one
* or more services.
*
* @since 2.0.0
* @category constructors
*/
export declare const scopedContext: <A, E, R>(effect: Effect.Effect<Context.Context<A>, E, R>) => Layer<A, E, Exclude<R, Scope.Scope>>;
/**
* Constructs a layer that accesses and returns the specified service from the
* context.
*
* @since 2.0.0
* @category constructors
*/
export declare const service: <I, S>(tag: Context.Tag<I, S>) => Layer<I, never, I>;
/**
* Constructs a layer from the specified value.
*
* @since 2.0.0
* @category constructors
*/
export declare const succeed: {
/**
* Constructs a layer from the specified value.
*
* @since 2.0.0
* @category constructors
*/
<I, S>(tag: Context.Tag<I, S>): (resource: Types.NoInfer<S>) => Layer<I>;
/**
* Constructs a layer from the specified value.
*
* @since 2.0.0
* @category constructors
*/
<I, S>(tag: Context.Tag<I, S>, resource: Types.NoInfer<S>): Layer<I>;
};
/**
* Constructs a layer from the specified value, which must return one or more
* services.
*
* @since 2.0.0
* @category constructors
*/
export declare const succeedContext: <A>(context: Context.Context<A>) => Layer<A>;
/**
* Lazily constructs a layer. This is useful to avoid infinite recursion when
* creating layers that refer to themselves.
*
* @since 2.0.0
* @category constructors
*/
export declare const suspend: <RIn, E, ROut>(evaluate: LazyArg<Layer<ROut, E, RIn>>) => Layer<ROut, E, RIn>;
/**
* Lazily constructs a layer from the specified value.
*
* @since 2.0.0
* @category constructors
*/
export declare const sync: {
/**
* Lazily constructs a layer from the specified value.
*
* @since 2.0.0
* @category constructors
*/
<I, S>(tag: Context.Tag<I, S>): (evaluate: LazyArg<Types.NoInfer<S>>) => Layer<I>;
/**
* Lazily constructs a layer from the specified value.
*
* @since 2.0.0
* @category constructors
*/
<I, S>(tag: Context.Tag<I, S>, evaluate: LazyArg<Types.NoInfer<S>>): Layer<I>;
};
/**
* Lazily constructs a layer from the specified value, which must return one or more
* services.
*
* @since 2.0.0
* @category constructors
*/
export declare const syncContext: <A>(evaluate: LazyArg<Context.Context<A>>) => Layer<A>;
/**
* Performs the specified effect if this layer succeeds.
*
* @since 2.0.0
* @category sequencing
*/
export declare const tap: {
/**
* Performs the specified effect if this layer succeeds.
*
* @since 2.0.0
* @category sequencing
*/
<ROut, XR extends ROut, RIn2, E2, X>(f: (context: Context.Context<XR>) => Effect.Effect<X, E2, RIn2>): <RIn, E>(self: Layer<ROut, E, RIn>) => Layer<ROut, E2 | E, RIn2 | RIn>;
/**
* Performs the specified effect if this layer succeeds.
*
* @since 2.0.0
* @category sequencing
*/
<RIn, E, ROut, XR extends ROut, RIn2, E2, X>(self: Layer<ROut, E, RIn>, f: (context: Context.Context<XR>) => Effect.Effect<X, E2, RIn2>): Layer<ROut, E | E2, RIn | RIn2>;
};
/**
* Performs the specified effect if this layer fails.
*
* @since 2.0.0
* @category sequencing
*/
export declare const tapError: {
/**
* Performs the specified effect if this layer fails.
*
* @since 2.0.0
* @category sequencing
*/
<E, XE extends E, RIn2, E2, X>(f: (e: XE) => Effect.Effect<X, E2, RIn2>): <RIn, ROut>(self: Layer<ROut, E, RIn>) => Layer<ROut, E | E2, RIn2 | RIn>;
/**
* Performs the specified effect if this layer fails.
*
* @since 2.0.0
* @category sequencing
*/
<RIn, E, XE extends E, ROut, RIn2, E2, X>(self: Layer<ROut, E, RIn>, f: (e: XE) => Effect.Effect<X, E2, RIn2>): Layer<ROut, E | E2, RIn | RIn2>;
};
/**
* Performs the specified effect if this layer fails.
*
* @since 2.0.0
* @category sequencing
*/
export declare const tapErrorCause: {
/**
* Performs the specified effect if this layer fails.
*
* @since 2.0.0
* @category sequencing
*/
<E, XE extends E, RIn2, E2, X>(f: (cause: Cause.Cause<XE>) => Effect.Effect<X, E2, RIn2>): <RIn, ROut>(self: Layer<ROut, E, RIn>) => Layer<ROut, E | E2, RIn2 | RIn>;
/**
* Performs the specified effect if this layer fails.
*
* @since 2.0.0
* @category sequencing
*/
<RIn, E, XE extends E, ROut, RIn2, E2, X>(self: Layer<ROut, E, RIn>, f: (cause: Cause.Cause<XE>) => Effect.Effect<X, E2, RIn2>): Layer<ROut, E | E2, RIn | RIn2>;
};
/**
* Converts a layer that requires no services into a scoped runtime, which can
* be used to execute effects.
*
* @since 2.0.0
* @category conversions
*/
export declare const toRuntime: <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect.Effect<Runtime.Runtime<ROut>, E, Scope.Scope | RIn>;
/**
* Converts a layer that requires no services into a scoped runtime, which can
* be used to execute effects.
*
* @since 2.0.0
* @category conversions
*/
export declare const toRuntimeWithMemoMap: {
/**
* Converts a layer that requires no services into a scoped runtime, which can
* be used to execute effects.
*
* @since 2.0.0
* @category conversions
*/
(memoMap: MemoMap): <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect.Effect<Runtime.Runtime<ROut>, E, Scope.Scope | RIn>;
/**
* Converts a layer that requires no services into a scoped runtime, which can
* be used to execute effects.
*
* @since 2.0.0
* @category conversions
*/
<RIn, E, ROut>(self: Layer<ROut, E, RIn>, memoMap: MemoMap): Effect.Effect<Runtime.Runtime<ROut>, E, Scope.Scope | RIn>;
};
/**
* Feeds the output services of this builder into the input of the specified
* builder, resulting in a new builder with the inputs of this builder as
* well as any leftover inputs, and the outputs of the specified builder.
*
* @since 2.0.0
* @category utils
*/
export declare const provide: {
/**
* Feeds the output services of this builder into the input of the specified
* builder, resulting in a new builder with the inputs of this builder as
* well as any leftover inputs, and the outputs of the specified builder.
*
* @since 2.0.0
* @category utils
*/
<RIn, E, ROut>(that: Layer<ROut, E, RIn>): <RIn2, E2, ROut2>(self: Layer<ROut2, E2, RIn2>) => Layer<ROut2, E | E2, RIn | Exclude<RIn2, ROut>>;
/**
* Feeds the output services of this builder into the input of the specified
* builder, resulting in a new builder with the inputs of this builder as
* well as any leftover inputs, and the outputs of the specified builder.
*
* @since 2.0.0
* @category utils
*/
<const Layers extends [Layer.Any, ...Array<Layer.Any>]>(that: Layers): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E | {
[k in keyof Layers]: Layer.Error<Layers[k]>;
}[number], {
[k in keyof Layers]: Layer.Context<Layers[k]>;
}[number] | Exclude<R, {
[k in keyof Layers]: Layer.Success<Layers[k]>;
}[number]>>;
/**
* Feeds the output services of this builder into the input of the specified
* builder, resulting in a new builder with the inputs of this builder as
* well as any leftover inputs, and the outputs of the specified builder.
*
* @since 2.0.0
* @category utils
*/
<RIn2, E2, ROut2, RIn, E, ROut>(self: Layer<ROut2, E2, RIn2>, that: Layer<ROut, E, RIn>): Layer<ROut2, E | E2, RIn | Exclude<RIn2, ROut>>;
/**
* Feeds the output services of this builder into the input of the specified
* builder, resulting in a new builder with the inputs of this builder as
* well as any leftover inputs, and the outputs of the specified builder.
*
* @since 2.0.0
* @category utils
*/
<A, E, R, const Layers extends [Layer.Any, ...Array<Layer.Any>]>(self: Layer<A, E, R>, that: Layers): Layer<A, E | {
[k in keyof Layers]: Layer.Error<Layers[k]>;
}[number], {
[k in keyof Layers]: Layer.Context<Layers[k]>;
}[number] | Exclude<R, {
[k in keyof Layers]: Layer.Success<Layers[k]>;
}[number]>>;
};
/**
* Feeds the output services of this layer into the input of the specified
* layer, resulting in a new layer with the inputs of this layer, and the
* outputs of both layers.
*
* @since 2.0.0
* @category utils
*/
export declare const provideMerge: {
/**
* Feeds the output services of this layer into the input of the specified
* layer, resulting in a new layer with the inputs of this layer, and the
* outputs of both layers.
*
* @since 2.0.0
* @category utils
*/
<RIn, E, ROut>(self: Layer<ROut, E, RIn>): <RIn2, E2, ROut2>(that: Layer<ROut2, E2, RIn2>) => Layer<ROut | ROut2, E | E2, RIn | Exclude<RIn2, ROut>>;
/**
* Feeds the output services of this layer into the input of the specified
* layer, resulting in a new layer with the inputs of this layer, and the
* outputs of both layers.
*
* @since 2.0.0
* @category utils
*/
<RIn2, E2, ROut2, RIn, E, ROut>(that: Layer<ROut2, E2, RIn2>, self: Layer<ROut, E, RIn>): Layer<ROut2 | ROut, E2 | E, RIn | Exclude<RIn2, ROut>>;
};
/**
* Combines this layer with the specified layer concurrently, creating a new layer with merged input types and
* combined output types using the provided function.
*
* @since 2.0.0
* @category zipping
*/
export declare const zipWith: {
/**
* Combines this layer with the specified layer concurrently, creating a new layer with merged input types and
* combined output types using the provided function.
*
* @since 2.0.0
* @category zipping
*/
<B, E2, R2, A, C>(that: Layer<B, E2, R2>, f: (a: Context.Context<A>, b: Context.Context<B>) => Context.Context<C>): <E, R>(self: Layer<A, E, R>) => Layer<C, E2 | E, R2 | R>;
/**
* Combines this layer with the specified layer concurrently, creating a new layer with merged input types and
* combined output types using the provided function.
*
* @since 2.0.0
* @category zipping
*/
<A, E, R, B, E2, R2, C>(self: Layer<A, E, R>, that: Layer<B, E2, R2>, f: (a: Context.Context<A>, b: Context.Context<B>) => Context.Context<C>): Layer<C, E | E2, R | R2>;
};
/**
* @since 2.0.0
* @category utils
*/
export declare const unwrapEffect: <A, E1, R1, E, R>(self: Effect.Effect<Layer<A, E1, R1>, E, R>) => Layer<A, E | E1, R | R1>;
/**
* @since 2.0.0
* @category utils
*/
export declare const unwrapScoped: <A, E1, R1, E, R>(self: Effect.Effect<Layer<A, E1, R1>, E, R>) => Layer<A, E | E1, R1 | Exclude<R, Scope.Scope>>;
/**
* @since 2.0.0
* @category clock
*/
export declare const setClock: <A extends Clock.Clock>(clock: A) => Layer<never>;
/**
* Sets the current `ConfigProvider`.
*
* @since 2.0.0
* @category config
*/
export declare const setConfigProvider: (configProvider: ConfigProvider) => Layer<never>;
/**
* Adds the provided span to the span stack.
*
* @since 2.0.0
* @category tracing
*/
export declare const parentSpan: (span: Tracer.AnySpan) => Layer<Tracer.ParentSpan>;
/**
* @since 3.15.0
* @category Random
*/
export declare const setRandom: <A extends Random.Random>(random: A) => Layer<never>;
/**
* @since 2.0.0
* @category requests & batching
*/
export declare const setRequestBatching: (requestBatching: boolean) => Layer<never>;
/**
* @since 2.0.0
* @category requests & batching
*/
export declare const setRequestCaching: (requestCaching: boolean) => Layer<never>;
/**
* @since 2.0.0
* @category requests & batching
*/
export declare const setRequestCache: {
/**
* @since 2.0.0
* @category requests & batching
*/
<E, R>(cache: Effect.Effect<Request.Cache, E, R>): Layer<never, E, Exclude<R, Scope.Scope>>;
/**
* @since 2.0.0
* @category requests & batching
*/
(cache: Request.Cache): Layer<never>;
};
/**
* @since 2.0.0
* @category scheduler
*/
export declare const setScheduler: (scheduler: Scheduler.Scheduler) => Layer<never>;
/**
* Create and add a span to the current span stack.
*
* The span is ended when the Layer is released.
*
* @since 2.0.0
* @category tracing
*/
export declare const span: (name: string, options?: Tracer.SpanOptions & {
readonly onEnd?: ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>) | undefined;
}) => Layer<Tracer.ParentSpan>;
/**
* Create a Layer that sets the current Tracer
*
* @since 2.0.0
* @category tracing
*/
export declare const setTracer: (tracer: Tracer.Tracer) => Layer<never>;
/**
* @since 2.0.0
* @category tracing
*/
export declare const setTracerEnabled: (enabled: boolean) => Layer<never>;
/**
* @since 2.0.0
* @category tracing
*/
export declare const setTracerTiming: (enabled: boolean) => Layer<never>;
/**
* @since 2.0.0
* @category logging
*/
export declare const setUnhandledErrorLogLevel: (level: Option.Option<LogLevel>) => Layer<never>;
/**
* @since 2.0.0
* @category tracing
*/
export declare const withSpan: {
/**
* @since 2.0.0
* @category tracing
*/
(name: string, options?: Tracer.SpanOptions & {
readonly onEnd?: ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>) | undefined;
}): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, Exclude<R, Tracer.ParentSpan>>;
/**
* @since 2.0.0
* @category tracing
*/
<A, E, R>(self: Layer<A, E, R>, name: string, options?: Tracer.SpanOptions & {
readonly onEnd?: ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>) | undefined;
}): Layer<A, E, Exclude<R, Tracer.ParentSpan>>;
};
/**
* @since 2.0.0
* @category tracing
*/
export declare const withParentSpan: {
/**
* @since 2.0.0
* @category tracing
*/
(span: Tracer.AnySpan): <A, E, R>(self: Layer<A, E, R>) => Layer<A, E, Exclude<R, Tracer.ParentSpan>>;
/**
* @since 2.0.0
* @category tracing
*/
<A, E, R>(self: Layer<A, E, R>, span: Tracer.AnySpan): Layer<A, E, Exclude<R, Tracer.ParentSpan>>;
};
/**
* Constructs a `MemoMap` that can be used to build additional layers.
*
* @since 2.0.0
* @category memo map
*/
export declare const makeMemoMap: Effect.Effect<MemoMap>;
/**
* Builds a layer into an `Effect` value, using the specified `MemoMap` to memoize
* the layer construction.
*
* @since 2.0.0
* @category memo map
*/
export declare const buildWithMemoMap: {
/**
* Builds a layer into an `Effect` value, using the specified `MemoMap` to memoize
* the layer construction.
*
* @since 2.0.0
* @category memo map
*/
(memoMap: MemoMap, scope: Scope.Scope): <RIn, E, ROut>(self: Layer<ROut, E, RIn>) => Effect.Effect<Context.Context<ROut>, E, RIn>;
/**
* Builds a layer into an `Effect` value, using the specified `MemoMap` to memoize
* the layer construction.
*
* @since 2.0.0
* @category memo map
*/
<RIn, E, ROut>(self: Layer<ROut, E, RIn>, memoMap: MemoMap, scope: Scope.Scope): Effect.Effect<Context.Context<ROut>, E, RIn>;
};
/**
* Updates a service in the context with a new implementation.
*
* **Details**
*
* This function modifies the existing implementation of a service in the
* context. It retrieves the current service, applies the provided
* transformation function `f`, and replaces the old service with the
* transformed one.
*
* **When to Use**
*
* This is useful for adapting or extending a service's behavior during the
* creation of a layer.
*
* @since 3.13.0
* @category utils
*/
export declare const updateService: (<I, A>(tag: Context.Tag<I, A>, f: (a: A) => A) => <A1, E1, R1>(layer: Layer<A1, E1, R1>) => Layer<A1, E1, I | R1>) & (<A1, E1, R1, I, A>(layer: Layer<A1, E1, R1>, tag: Context.Tag<I, A>, f: (a: A) => A) => Layer<A1, E1, I | R1>);
//# sourceMappingURL=Layer.d.ts.map