EdgeAIG's picture
download
raw
8.15 kB
/**
* Process-local invalidation for connecting writes to dependent reads.
*
* This module does not cache values itself. It lets callers register handlers
* for keys, invalidate those keys, wrap successful mutations so they invalidate
* keys, and expose effects as queues or streams that rerun when matching keys
* change. The service can also batch invalidations so handlers run after the
* batch completes.
*
* @since 4.0.0
*/
import * as Context from "../../Context.ts";
import * as Effect from "../../Effect.ts";
import * as Layer from "../../Layer.ts";
import * as Queue from "../../Queue.ts";
import type { ReadonlyRecord } from "../../Record.ts";
import * as Scope from "../../Scope.ts";
import * as Stream from "../../Stream.ts";
declare const Reactivity_base: Context.ServiceClass<Reactivity, "effect/reactivity/Reactivity", {
readonly invalidateUnsafe: (keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>) => void;
readonly registerUnsafe: (keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>, handler: () => void) => () => void;
readonly invalidate: (keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>) => Effect.Effect<void>;
readonly mutation: <A, E, R>(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
readonly query: <A, E, R>(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>, effect: Effect.Effect<A, E, R>) => Effect.Effect<Queue.Dequeue<A, E>, never, R | Scope.Scope>;
readonly stream: <A, E, R>(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>, effect: Effect.Effect<A, E, R>) => Stream.Stream<A, E, Exclude<R, Scope.Scope>>;
readonly withBatch: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
}>;
/**
* Service for key-based reactive invalidation.
*
* **When to use**
*
* Use to provide the invalidation service that refreshes queries, streams, and
* atoms when application keys change.
*
* **Details**
*
* The service can register handlers for keys, invalidate those keys, wrap
* mutations so successful effects invalidate keys, and turn query effects into
* queues or streams that rerun when keys are invalidated.
*
* @category services
* @since 4.0.0
*/
export declare class Reactivity extends Reactivity_base {
}
/**
* Creates an in-memory `Reactivity` service.
*
* **Details**
*
* The service tracks handlers by hashed keys and runs the registered handlers when
* matching keys are invalidated.
*
* @category constructors
* @since 4.0.0
*/
export declare const make: Effect.Effect<{
readonly invalidateUnsafe: (keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>) => void;
readonly registerUnsafe: (keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>, handler: () => void) => () => void;
readonly invalidate: (keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>) => Effect.Effect<void>;
readonly mutation: <A, E, R>(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>, effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
readonly query: <A, E, R>(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>, effect: Effect.Effect<A, E, R>) => Effect.Effect<Queue.Dequeue<A, E>, never, R | Scope.Scope>;
readonly stream: <A, E, R>(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>, effect: Effect.Effect<A, E, R>) => Stream.Stream<A, E, Exclude<R, Scope.Scope>>;
readonly withBatch: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
}, never, never>;
/**
* Wraps an effect so the supplied keys are invalidated after the effect succeeds.
*
* **Gotchas**
*
* If the effect fails, the keys are not invalidated.
*
* @category accessors
* @since 4.0.0
*/
export declare const mutation: {
/**
* Wraps an effect so the supplied keys are invalidated after the effect succeeds.
*
* **Gotchas**
*
* If the effect fails, the keys are not invalidated.
*
* @category accessors
* @since 4.0.0
*/
(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | Reactivity>;
/**
* Wraps an effect so the supplied keys are invalidated after the effect succeeds.
*
* **Gotchas**
*
* If the effect fails, the keys are not invalidated.
*
* @category accessors
* @since 4.0.0
*/
<A, E, R>(effect: Effect.Effect<A, E, R>, keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>): Effect.Effect<A, E, R | Reactivity>;
};
/**
* Runs an effect as a query tied to the supplied invalidation keys.
*
* **Details**
*
* The returned queue receives the initial result and each later result after the
* keys are invalidated. The registration is removed when the current scope closes.
*
* @category accessors
* @since 4.0.0
*/
export declare const query: {
/**
* Runs an effect as a query tied to the supplied invalidation keys.
*
* **Details**
*
* The returned queue receives the initial result and each later result after the
* keys are invalidated. The registration is removed when the current scope closes.
*
* @category accessors
* @since 4.0.0
*/
(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<Queue.Dequeue<A, E>, never, R | Scope.Scope | Reactivity>;
/**
* Runs an effect as a query tied to the supplied invalidation keys.
*
* **Details**
*
* The returned queue receives the initial result and each later result after the
* keys are invalidated. The registration is removed when the current scope closes.
*
* @category accessors
* @since 4.0.0
*/
<A, E, R>(effect: Effect.Effect<A, E, R>, keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>): Effect.Effect<Queue.Dequeue<A, E>, never, R | Scope.Scope | Reactivity>;
};
/**
* Runs an effect as a stream of query results tied to the supplied invalidation
* keys.
*
* **Details**
*
* The effect runs initially and reruns whenever the keys are invalidated.
*
* @category accessors
* @since 4.0.0
*/
export declare const stream: {
/**
* Runs an effect as a stream of query results tied to the supplied invalidation
* keys.
*
* **Details**
*
* The effect runs initially and reruns whenever the keys are invalidated.
*
* @category accessors
* @since 4.0.0
*/
(keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>): <A, E, R>(effect: Effect.Effect<A, E, R>) => Stream.Stream<A, E, Exclude<R, Scope.Scope> | Reactivity>;
/**
* Runs an effect as a stream of query results tied to the supplied invalidation
* keys.
*
* **Details**
*
* The effect runs initially and reruns whenever the keys are invalidated.
*
* @category accessors
* @since 4.0.0
*/
<A, E, R>(effect: Effect.Effect<A, E, R>, keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>): Stream.Stream<A, E, Exclude<R, Scope.Scope> | Reactivity>;
};
/**
* Invalidates the supplied keys through the `Reactivity` service.
*
* **Details**
*
* Registered queries for matching keys are rerun immediately, or collected until
* the enclosing reactivity batch completes.
*
* @category accessors
* @since 4.0.0
*/
export declare const invalidate: (keys: ReadonlyArray<unknown> | ReadonlyRecord<string, ReadonlyArray<unknown>>) => Effect.Effect<void, never, Reactivity>;
/**
* The default layer that provides an in-memory `Reactivity` service.
*
* @category layers
* @since 4.0.0
*/
export declare const layer: Layer.Layer<Reactivity>;
export {};
//# sourceMappingURL=Reactivity.d.ts.map

Xet Storage Details

Size:
8.15 kB
·
Xet hash:
dbd8d63ab982e371e6b58a0b8c98ad1ca46e93450800f84ade6ce7d2092daabc

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.