import type * as Redacted from "effect/Redacted"; import type { NonEmptyReadonlyArray } from "./Array.js"; import type { OptimisticConcurrencyException } from "./client/errors.js"; import * as Context from "./Context.js"; import * as Effect from "./Effect.js"; import * as Layer from "./Layer.js"; import type { FilterResult } from "./Model/filter/filterApi.js"; import type { FieldValues } from "./Model/filter/types.js"; import type { FieldPath } from "./Model/filter/types/path/index.js"; import type { AggregateIrExpression, ComputedProjectionIrExpression, RawQuery } from "./Model/query.js"; import type * as Option from "./Option.js"; import { NonEmptyString255 } from "./Schema.js"; /** * Adapter-neutral unique-key definition for stores that support unique indexes, * such as the Cosmos adapter. This shape is intentionally kept structurally * compatible with adapter-specific `UniqueKey` types. Each path identifies a * field participating in the unique key, and adapters forward these paths * directly to the underlying storage engine. */ export interface UniqueKey { readonly paths: string[]; } export interface StoreConfig { partitionValue: (e?: E) => string; /** * Primarily used for testing, creating namespaces in the database to separate data e.g to run multiple tests in isolation within the same database. * Memory/Disk use separate store instances per namespace. CosmosDB uses namespace-prefixed partition keys. SQL uses a `_namespace` column. */ allowNamespace?: (namespace: string) => boolean; /** * just in time migrations, supported by the database driver, supporting queries, for simple default values */ defaultValues?: Partial; /** * How many items can be processed in one batch at a time. * Defaults to 100 for CosmosDB. */ maxBulkSize?: number; /** * Unique indexes, mainly for CosmosDB */ uniqueKeys?: UniqueKey[]; } export type SupportedValues = string | boolean | number | null; export type SupportedValues2 = string | boolean | number; export type Where = { key: string; t?: "eq" | "not-eq"; value: SupportedValues; } | { key: string; t: "gt" | "lt" | "gte" | "lte"; value: SupportedValues2; } | { key: string; t: "contains" | "starts-with" | "ends-with" | "not-contains" | "not-starts-with" | "not-ends-with"; value: string; } | { key: string; t: "includes" | "not-includes"; value: string; } | { key: string; t: "in" | "not-in"; value: readonly (SupportedValues)[]; }; export type Filter = readonly FilterResult[]; export interface O { key: FieldPath; direction: "ASC" | "DESC"; } export interface FilterArgs { t: Encoded; filter?: Filter | undefined; select?: NonEmptyReadonlyArray | undefined; order?: NonEmptyReadonlyArray>>; limit?: number | undefined; skip?: number | undefined; } export type FilterFunc = (args: FilterArgs) => Effect.Effect<(U extends undefined ? Encoded : Pick)[]>; export interface Store = PersistenceModelType> { all: Effect.Effect; filter: FilterFunc; find: (id: Encoded[IdKey]) => Effect.Effect>; set: (e: PM) => Effect.Effect; batchSet: (items: NonEmptyReadonlyArray) => Effect.Effect, OptimisticConcurrencyException>; bulkSet: (items: NonEmptyReadonlyArray) => Effect.Effect, OptimisticConcurrencyException>; batchRemove: (ids: NonEmptyReadonlyArray, partitionKey?: string) => Effect.Effect; queryRaw: (query: RawQuery) => Effect.Effect; /** * Explicitly seed a namespace. Primary is seeded eagerly on initialization. * Non-primary namespaces must be seeded explicitly before use. */ seedNamespace: (namespace: string) => Effect.Effect; } declare const StoreMaker_base: Context.OpaqueClass(name: string, idKey: IdKey, seed?: Effect.Effect, E, R>, config?: StoreConfig) => Effect.Effect, E, R>; }>; export declare class StoreMaker extends StoreMaker_base { } export declare const makeContextMap: () => { createdAt: Date; get: (id: string) => string | undefined; set: (id: string, eTag: string | undefined) => void; getOrCreateStore: (key: symbol, make: () => T) => T; getOrCreateStoreEffect: (key: symbol, make: Effect.Effect) => Effect.Effect; clear: () => void; }; declare const ContextMap_base: Context.OpaqueClass string | undefined; set: (id: string, eTag: string | undefined) => void; getOrCreateStore: (key: symbol, make: () => T) => T; getOrCreateStoreEffect: (key: symbol, make: Effect.Effect) => Effect.Effect; clear: () => void; }> & { readonly make: Effect.Effect<{ createdAt: Date; get: (id: string) => string | undefined; set: (id: string, eTag: string | undefined) => void; getOrCreateStore: (key: symbol, make: () => T) => T; getOrCreateStoreEffect: (key: symbol, make: Effect.Effect) => Effect.Effect; clear: () => void; }, never, import("effect/Scope").Scope>; }; export declare class ContextMap extends ContextMap_base { } declare const ContextMapContainer_base: Context.Reference<"root" | ContextMap>; export declare class ContextMapContainer extends ContextMapContainer_base { static readonly layer: Layer.Layer; } declare const ContextMapNotStartedError_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & { readonly _tag: "ContextMapNotStartedError"; } & Readonly; export declare class ContextMapNotStartedError extends ContextMapNotStartedError_base { } export declare const getContextMap: Effect.Effect; /** * Runs `make` at most once per ContextMap (i.e. per request) and caches the * resulting value in the ContextMap under a fresh symbol. Subsequent calls of * the returned Effect within the same ContextMap return the cached value. * * Uses the ContextMap's shared semaphore for safe single initialization. */ export declare const cachedPerRequest: (make: Effect.Effect) => Effect.Effect; declare const storeId_base: Context.Reference; export declare class storeId extends storeId_base { } export type PersistenceModelType = Encoded & { _etag?: string | undefined; }; export interface StorageConfig { url: Redacted.Redacted; prefix: string; dbName: string; } export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFFaEQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDdkQsT0FBTyxLQUFLLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUN4RSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNyQyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUMvRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUMxRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNuRSxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2RyxPQUFPLEtBQUssS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUUvQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLFdBQVcsU0FBUztJQUN4QixRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFBO0NBQ3pCO0FBRUQsTUFBTSxXQUFXLFdBQVcsQ0FBQyxDQUFDO0lBQzVCLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUE7SUFDakM7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxLQUFLLE9BQU8sQ0FBQTtJQUMvQzs7T0FFRztJ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