| /** | |
| * Stores and runs atoms for one reactive runtime. | |
| * | |
| * An `AtomRegistry` evaluates atoms, caches their current values, tracks | |
| * dependencies, applies writes and refreshes, manages subscriptions, and | |
| * disposes unused nodes. Each registry is independent, so the same atom can hold | |
| * different values in different registries. Serializable atom values can also be | |
| * preloaded before the first read. | |
| * | |
| * @since 4.0.0 | |
| */ | |
| import * as Context from "../../Context.ts"; | |
| import * as Effect from "../../Effect.ts"; | |
| import * as Layer from "../../Layer.ts"; | |
| import type { Scheduler } from "../../Scheduler.ts"; | |
| import * as Scope from "../../Scope.ts"; | |
| import * as Stream from "../../Stream.ts"; | |
| import * as Result from "./AsyncResult.ts"; | |
| import type * as Atom from "./Atom.ts"; | |
| /** | |
| * The literal type used to identify `AtomRegistry` services and values. | |
| * | |
| * @category type IDs | |
| * @since 4.0.0 | |
| */ | |
| export type TypeId = "~effect/reactivity/AtomRegistry"; | |
| /** | |
| * The runtime type id used to identify `AtomRegistry` services and values. | |
| * | |
| * @category type IDs | |
| * @since 4.0.0 | |
| */ | |
| export declare const TypeId: TypeId; | |
| /** | |
| * Returns `true` when the value has the `AtomRegistry` type id. | |
| * | |
| * @category guards | |
| * @since 4.0.0 | |
| */ | |
| export declare const isAtomRegistry: (u: unknown) => u is AtomRegistry; | |
| /** | |
| * The runtime registry that stores atom nodes and coordinates reads, writes, | |
| * refreshes, subscriptions, and disposal. | |
| * | |
| * **Details** | |
| * | |
| * It also manages scheduler configuration, serializable preloaded values, and node | |
| * addition/removal callbacks. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface AtomRegistry { | |
| readonly [TypeId]: TypeId; | |
| readonly scheduler: Scheduler; | |
| readonly schedulerAsync: Scheduler; | |
| readonly getNodes: () => ReadonlyMap<Atom.Atom<any> | string, Node<any>>; | |
| readonly get: <A>(atom: Atom.Atom<A>) => A; | |
| readonly mount: <A>(atom: Atom.Atom<A>) => () => void; | |
| readonly refresh: <A>(atom: Atom.Atom<A>) => void; | |
| readonly set: <R, W>(atom: Atom.Writable<R, W>, value: W) => void; | |
| readonly setSerializable: (key: string, encoded: unknown) => void; | |
| readonly modify: <R, W, A>(atom: Atom.Writable<R, W>, f: (_: R) => [returnValue: A, nextValue: W]) => A; | |
| readonly update: <R, W>(atom: Atom.Writable<R, W>, f: (_: R) => W) => void; | |
| readonly subscribe: <A>(atom: Atom.Atom<A>, f: (_: A) => void, options?: { | |
| readonly immediate?: boolean; | |
| }) => () => void; | |
| readonly reset: () => void; | |
| readonly dispose: () => void; | |
| onNodeAdded?: ((node: Node<any>) => void) | undefined; | |
| onNodeRemoved?: ((node: Node<any>) => void) | undefined; | |
| } | |
| /** | |
| * A registry node for a single atom. | |
| * | |
| * **Details** | |
| * | |
| * Nodes expose the current value, parent and child dependency links, listener set, | |
| * and current lifecycle state. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface Node<A> { | |
| readonly atom: Atom.Atom<A>; | |
| readonly value: () => A; | |
| parents: Array<Node<any>>; | |
| children: Array<Node<any>>; | |
| listeners: Set<() => void>; | |
| currentState(): "uninitialized" | "stale" | "valid" | "removed"; | |
| } | |
| /** | |
| * Creates an `AtomRegistry`. | |
| * | |
| * **Details** | |
| * | |
| * Options can preload initial atom values, provide a custom task scheduler, | |
| * configure timeout bucket resolution, and set a default idle time-to-live for | |
| * unused atoms. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const make: (options?: { | |
| readonly initialValues?: Iterable<readonly [Atom.Atom<any>, any]> | undefined; | |
| readonly scheduleTask?: ((f: () => void) => () => void) | undefined; | |
| readonly timeoutResolution?: number | undefined; | |
| readonly defaultIdleTTL?: number | undefined; | |
| } | undefined) => AtomRegistry; | |
| /** | |
| * Service tag for the active atom runtime cache. | |
| * | |
| * **When to use** | |
| * | |
| * Use to access or provide the registry that stores atom values, | |
| * dependencies, subscriptions, and disposal state for a reactive lifetime. | |
| * | |
| * @category services | |
| * @since 4.0.0 | |
| */ | |
| export declare const AtomRegistry: Context.Service<AtomRegistry, AtomRegistry>; | |
| /** | |
| * Creates a layer that provides an `AtomRegistry` configured with the supplied | |
| * options. | |
| * | |
| * **Details** | |
| * | |
| * The registry is disposed when the layer scope is finalized. | |
| * | |
| * @category layers | |
| * @since 4.0.0 | |
| */ | |
| export declare const layerOptions: (options?: { | |
| readonly initialValues?: Iterable<readonly [Atom.Atom<any>, any]> | undefined; | |
| readonly scheduleTask?: ((f: () => void) => () => void) | undefined; | |
| readonly timeoutResolution?: number | undefined; | |
| readonly defaultIdleTTL?: number | undefined; | |
| }) => Layer.Layer<AtomRegistry>; | |
| /** | |
| * The default layer that provides a fresh `AtomRegistry`. | |
| * | |
| * @category layers | |
| * @since 4.0.0 | |
| */ | |
| export declare const layer: Layer.Layer<AtomRegistry>; | |
| /** | |
| * Converts an atom in this registry into a stream. | |
| * | |
| * **Details** | |
| * | |
| * The stream emits the current value immediately, emits subsequent changes, and | |
| * unsubscribes from the registry when the stream scope closes. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| export declare const toStream: { | |
| /** | |
| * Converts an atom in this registry into a stream. | |
| * | |
| * **Details** | |
| * | |
| * The stream emits the current value immediately, emits subsequent changes, and | |
| * unsubscribes from the registry when the stream scope closes. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| <A>(atom: Atom.Atom<A>): (self: AtomRegistry) => Stream.Stream<A>; | |
| /** | |
| * Converts an atom in this registry into a stream. | |
| * | |
| * **Details** | |
| * | |
| * The stream emits the current value immediately, emits subsequent changes, and | |
| * unsubscribes from the registry when the stream scope closes. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| <A>(self: AtomRegistry, atom: Atom.Atom<A>): Stream.Stream<A>; | |
| }; | |
| /** | |
| * Converts an `AsyncResult` atom in this registry into a stream of successful | |
| * values. | |
| * | |
| * **Details** | |
| * | |
| * Initial results are skipped, failures fail the stream with their cause, and | |
| * duplicate stream values are dropped with `Stream.changes`. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| export declare const toStreamResult: { | |
| /** | |
| * Converts an `AsyncResult` atom in this registry into a stream of successful | |
| * values. | |
| * | |
| * **Details** | |
| * | |
| * Initial results are skipped, failures fail the stream with their cause, and | |
| * duplicate stream values are dropped with `Stream.changes`. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| <A, E>(atom: Atom.Atom<Result.AsyncResult<A, E>>): (self: AtomRegistry) => Stream.Stream<A, E>; | |
| /** | |
| * Converts an `AsyncResult` atom in this registry into a stream of successful | |
| * values. | |
| * | |
| * **Details** | |
| * | |
| * Initial results are skipped, failures fail the stream with their cause, and | |
| * duplicate stream values are dropped with `Stream.changes`. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| <A, E>(self: AtomRegistry, atom: Atom.Atom<Result.AsyncResult<A, E>>): Stream.Stream<A, E>; | |
| }; | |
| /** | |
| * Reads an `AsyncResult` atom from this registry as an effect. | |
| * | |
| * **Details** | |
| * | |
| * The effect waits for the result to leave `Initial`, and also waits through | |
| * waiting results when `suspendOnWaiting` is enabled. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| export declare const getResult: { | |
| /** | |
| * Reads an `AsyncResult` atom from this registry as an effect. | |
| * | |
| * **Details** | |
| * | |
| * The effect waits for the result to leave `Initial`, and also waits through | |
| * waiting results when `suspendOnWaiting` is enabled. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| <A, E>(atom: Atom.Atom<Result.AsyncResult<A, E>>, options?: { | |
| readonly suspendOnWaiting?: boolean | undefined; | |
| }): (self: AtomRegistry) => Effect.Effect<A, E>; | |
| /** | |
| * Reads an `AsyncResult` atom from this registry as an effect. | |
| * | |
| * **Details** | |
| * | |
| * The effect waits for the result to leave `Initial`, and also waits through | |
| * waiting results when `suspendOnWaiting` is enabled. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| <A, E>(self: AtomRegistry, atom: Atom.Atom<Result.AsyncResult<A, E>>, options?: { | |
| readonly suspendOnWaiting?: boolean | undefined; | |
| }): Effect.Effect<A, E>; | |
| }; | |
| /** | |
| * Mounts an atom in this registry for the lifetime of the current scope. | |
| * | |
| * **Details** | |
| * | |
| * The atom is subscribed with a no-op listener and the subscription is released | |
| * when the scope finalizer runs. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| export declare const mount: { | |
| /** | |
| * Mounts an atom in this registry for the lifetime of the current scope. | |
| * | |
| * **Details** | |
| * | |
| * The atom is subscribed with a no-op listener and the subscription is released | |
| * when the scope finalizer runs. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| <A>(atom: Atom.Atom<A>): (self: AtomRegistry) => Effect.Effect<void, never, Scope.Scope>; | |
| /** | |
| * Mounts an atom in this registry for the lifetime of the current scope. | |
| * | |
| * **Details** | |
| * | |
| * The atom is subscribed with a no-op listener and the subscription is released | |
| * when the scope finalizer runs. | |
| * | |
| * @category converting | |
| * @since 4.0.0 | |
| */ | |
| <A>(self: AtomRegistry, atom: Atom.Atom<A>): Effect.Effect<void, never, Scope.Scope>; | |
| }; | |
| //# sourceMappingURL=AtomRegistry.d.ts.map |
Xet Storage Details
- Size:
- 9.52 kB
- Xet hash:
- 80af6d13795e2706dcad3f310c6b47a5c908d76f4f930062bcbd49baa33217d1
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.