/** * @since 2.0.0 */ import type * as Cause from "./Cause.js" import type * as Chunk from "./Chunk.js" import type * as Context from "./Context.js" import type * as Differ from "./Differ.js" import type * as Effect from "./Effect.js" import type { LazyArg } from "./Function.js" import type * as HashMap from "./HashMap.js" import type * as HashSet from "./HashSet.js" import * as core from "./internal/core.js" import * as fiberRuntime from "./internal/fiberRuntime.js" import * as query from "./internal/query.js" import type * as List from "./List.js" import type * as Logger from "./Logger.js" import type * as LogLevel from "./LogLevel.js" import type * as LogSpan from "./LogSpan.js" import type * as MetricLabel from "./MetricLabel.js" import type * as Option from "./Option.js" import type * as Request from "./Request.js" import type * as RuntimeFlags from "./RuntimeFlags.js" import * as Scheduler from "./Scheduler.js" import type * as Scope from "./Scope.js" import type * as Supervisor from "./Supervisor.js" import type * as Tracer from "./Tracer.js" import type * as Types from "./Types.js" import type * as Unify from "./Unify.js" /** * @since 2.0.0 * @category symbols */ export const FiberRefTypeId: unique symbol = core.FiberRefTypeId /** * @since 2.0.0 * @category symbols */ export type FiberRefTypeId = typeof FiberRefTypeId /** * @since 2.0.0 * @category model */ export interface FiberRef extends Effect.Effect, Variance { /** @internal */ readonly initial: A /** @internal */ diff(oldValue: A, newValue: A): unknown /** @internal */ combine(first: unknown, second: unknown): unknown /** @internal */ patch(patch: unknown): (oldValue: A) => A /** @internal */ readonly fork: unknown /** @internal */ join(oldValue: A, newValue: A): A readonly [Unify.typeSymbol]?: unknown readonly [Unify.unifySymbol]?: FiberRefUnify readonly [Unify.ignoreSymbol]?: FiberRefUnifyIgnore } /** * @category models * @since 3.8.0 */ export interface FiberRefUnify extends Effect.EffectUnify { FiberRef?: () => Extract> } /** * @category models * @since 3.8.0 */ export interface FiberRefUnifyIgnore extends Effect.EffectUnifyIgnore { Effect?: true } /** * @since 2.0.0 * @category models */ export interface Variance { readonly [FiberRefTypeId]: { readonly _A: Types.Invariant } } /** * @since 2.0.0 * @category constructors */ export const make: ( initial: A, options?: { readonly fork?: ((a: A) => A) | undefined readonly join?: ((left: A, right: A) => A) | undefined } ) => Effect.Effect, never, Scope.Scope> = fiberRuntime.fiberRefMake /** * @since 2.0.0 * @category constructors */ export const makeWith: (ref: LazyArg>) => Effect.Effect, never, Scope.Scope> = fiberRuntime.fiberRefMakeWith /** * @since 2.0.0 * @category constructors */ export const makeContext: ( initial: Context.Context ) => Effect.Effect>, never, Scope.Scope> = fiberRuntime.fiberRefMakeContext /** * @since 2.0.0 * @category constructors */ export const makeRuntimeFlags: ( initial: RuntimeFlags.RuntimeFlags ) => Effect.Effect, never, Scope.Scope> = fiberRuntime.fiberRefMakeRuntimeFlags /** * @since 2.0.0 * @category constructors */ export const unsafeMake: ( initial: Value, options?: { readonly fork?: ((a: Value) => Value) | undefined readonly join?: ((left: Value, right: Value) => Value) | undefined } ) => FiberRef = core.fiberRefUnsafeMake /** * @since 2.0.0 * @category constructors */ export const unsafeMakeHashSet: (initial: HashSet.HashSet) => FiberRef> = core.fiberRefUnsafeMakeHashSet /** * @since 2.0.0 * @category constructors */ export const unsafeMakeContext: (initial: Context.Context) => FiberRef> = core.fiberRefUnsafeMakeContext /** * @since 2.0.0 * @category constructors */ export const unsafeMakeSupervisor: (initial: Supervisor.Supervisor) => FiberRef> = fiberRuntime.fiberRefUnsafeMakeSupervisor /** * @since 2.0.0 * @category constructors */ export const unsafeMakePatch: ( initial: Value, options: { readonly differ: Differ.Differ readonly fork: Patch readonly join?: ((oldV: Value, newV: Value) => Value) | undefined } ) => FiberRef = core.fiberRefUnsafeMakePatch /** * @since 2.0.0 * @category getters */ export const get: (self: FiberRef) => Effect.Effect = core.fiberRefGet /** * @since 2.0.0 * @category utils */ export const getAndSet: { /** * @since 2.0.0 * @category utils */ (value: A): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, value: A): Effect.Effect } = core.fiberRefGetAndSet /** * @since 2.0.0 * @category utils */ export const getAndUpdate: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => A): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, f: (a: A) => A): Effect.Effect } = core.fiberRefGetAndUpdate /** * @since 2.0.0 * @category utils */ export const getAndUpdateSome: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Option.Option): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, pf: (a: A) => Option.Option): Effect.Effect } = core.fiberRefGetAndUpdateSome /** * @since 2.0.0 * @category utils */ export const getWith: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => Effect.Effect): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, f: (a: A) => Effect.Effect): Effect.Effect } = core.fiberRefGetWith /** * @since 2.0.0 * @category utils */ export const set: { /** * @since 2.0.0 * @category utils */ (value: A): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, value: A): Effect.Effect } = core.fiberRefSet const _delete: (self: FiberRef) => Effect.Effect = core.fiberRefDelete export { /** * @since 2.0.0 * @category utils */ _delete as delete } /** * @since 2.0.0 * @category utils */ export const reset: (self: FiberRef) => Effect.Effect = core.fiberRefReset /** * @since 2.0.0 * @category utils */ export const modify: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => readonly [B, A]): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, f: (a: A) => readonly [B, A]): Effect.Effect } = core.fiberRefModify /** * @since 2.0.0 * @category utils */ export const modifySome: ( self: FiberRef, def: B, f: (a: A) => Option.Option ) => Effect.Effect = core.fiberRefModifySome /** * @since 2.0.0 * @category utils */ export const update: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => A): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, f: (a: A) => A): Effect.Effect } = core.fiberRefUpdate /** * @since 2.0.0 * @category utils */ export const updateSome: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Option.Option): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, pf: (a: A) => Option.Option): Effect.Effect } = core.fiberRefUpdateSome /** * @since 2.0.0 * @category utils */ export const updateAndGet: { /** * @since 2.0.0 * @category utils */ (f: (a: A) => A): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, f: (a: A) => A): Effect.Effect } = core.fiberRefUpdateAndGet /** * @since 2.0.0 * @category utils */ export const updateSomeAndGet: { /** * @since 2.0.0 * @category utils */ (pf: (a: A) => Option.Option): (self: FiberRef) => Effect.Effect /** * @since 2.0.0 * @category utils */ (self: FiberRef, pf: (a: A) => Option.Option): Effect.Effect } = core.fiberRefUpdateSomeAndGet /** * @since 2.0.0 * @category fiberRefs */ export const currentConcurrency: FiberRef = core.currentConcurrency /** * @since 2.0.0 * @category fiberRefs */ export const currentRequestBatchingEnabled: FiberRef = core.currentRequestBatching /** * @since 2.0.0 * @category fiberRefs */ export const currentRequestCache: FiberRef = query.currentCache as any /** * @since 2.0.0 * @category fiberRefs */ export const currentRequestCacheEnabled: FiberRef = query.currentCacheEnabled /** * @since 2.0.0 * @category fiberRefs */ export const currentContext: FiberRef> = core.currentContext /** * @since 2.0.0 * @category fiberRefs */ export const currentSchedulingPriority: FiberRef = core.currentSchedulingPriority /** * @since 2.0.0 * @category fiberRefs */ export const currentMaxOpsBeforeYield: FiberRef = core.currentMaxOpsBeforeYield /** * @since 2.0.0 * @category fiberRefs */ export const unhandledErrorLogLevel: FiberRef> = core.currentUnhandledErrorLogLevel /** * @since 3.17.0 * @category fiberRefs */ export const versionMismatchErrorLogLevel: FiberRef> = core.currentVersionMismatchErrorLogLevel /** * @since 2.0.0 * @category fiberRefs */ export const currentLogAnnotations: FiberRef> = core.currentLogAnnotations /** * @since 2.0.0 * @category fiberRefs */ export const currentLoggers: FiberRef>> = fiberRuntime.currentLoggers /** * @since 2.0.0 * @category fiberRefs */ export const currentLogLevel: FiberRef = core.currentLogLevel /** * @since 2.0.0 * @category fiberRefs */ export const currentMinimumLogLevel: FiberRef = fiberRuntime.currentMinimumLogLevel /** * @since 2.0.0 * @category fiberRefs */ export const currentLogSpan: FiberRef> = core.currentLogSpan /** * @since 2.0.0 * @category fiberRefs */ export const currentRuntimeFlags: FiberRef = fiberRuntime.currentRuntimeFlags /** * @since 2.0.0 * @category fiberRefs */ export const currentScheduler: FiberRef = Scheduler.currentScheduler /** * @since 2.0.0 * @category fiberRefs */ export const currentSupervisor: FiberRef> = fiberRuntime.currentSupervisor /** * @since 2.0.0 * @category fiberRefs */ export const currentMetricLabels: FiberRef> = core.currentMetricLabels /** * @since 2.0.0 * @category fiberRefs */ export const currentTracerEnabled: FiberRef = core.currentTracerEnabled /** * @since 2.0.0 * @category fiberRefs */ export const currentTracerTimingEnabled: FiberRef = core.currentTracerTimingEnabled /** * @since 2.0.0 * @category fiberRefs */ export const currentTracerSpanAnnotations: FiberRef> = core.currentTracerSpanAnnotations /** * @since 2.0.0 * @category fiberRefs */ export const currentTracerSpanLinks: FiberRef> = core.currentTracerSpanLinks /** * @since 2.0.0 * @category fiberRefs */ export const interruptedCause: FiberRef> = core.currentInterruptedCause