import type { UniqueKey } from "@azure/cosmos"; import type { NonEmptyReadonlyArray } from "effect-app/Array"; import * as Context from "effect-app/Context"; import * as Effect from "effect-app/Effect"; import type * as Option from "effect-app/Option"; import type * as Redacted from "effect/Redacted"; import type { OptimisticConcurrencyException } from "../errors.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"; 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: () => { 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; }; 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; }> & { readonly make: Effect.Effect<{ 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; }, never, never>; }; export declare class ContextMap extends ContextMap_base { } export type PersistenceModelType = Encoded & { _etag?: string | undefined; }; export interface StorageConfig { url: Redacted.Redacted; prefix: string; dbName: string; } export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlDLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDN0QsT0FBTyxLQUFLLE9BQU8sTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEtBQUssS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFFaEQsT0FBTyxLQUFLLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDbEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDcEUsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsOEJBQThCLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFeEcsTUFBTSxXQUFXLFdBQVcsQ0FBQyxDQUFDO0lBQzVCLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUE7SUFDakM7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxLQUFLLE9BQU8sQ0FBQTtJQUMvQzs7T0FFRztJQUNILGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUUxQjs7O09BR0c7SUFDSCxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUE7SUFFcEI7O09BRUc7SUFDSCxVQUFVLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQTtDQUN6QjtBQUVELE1BQU0sTUFBTSxlQUFlLEdBQUcsTUFBTSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFBO0FBQzlELE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsT0FBTyxHQUFHLE1BQU0sQ0FBQTtBQUd4RCxNQUFNLE1BQU0sS0FBSyxHQUNiO0lBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxRQUFRLENBQUM7SUFBQyxLQUFLLEVBQUUsZUFBZSxDQUFBO0NBQUUsR0FDNUQ7SUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQTtDQUFFLEdBQ3hFO0lBQ0EsR0FBRyxFQUFFLE1BQU0sQ0FBQTtJQUNYLENBQUMsRUFBRSxVQUFVLEdBQUcsYUFBYSxHQUFHLFdBQVcsR0FBRyxjQUFjLEdBQUcsaUJBQWlCLEdBQUcsZUFBZSxDQUFBO0lBQ2xHLEtBQUssRUFBRSxNQUFNLENBQUE7Q0FDZCxHQUNDO0lBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQzlEO0lBQ0EsR0FBRyxFQUFFLE1BQU0sQ0FBQTtJQUNYLENBQUMsRUFBRSxJQUFJLEdBQUcsUUFBUSxDQUFBO0lBQ2xCLEtBQUssRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQTtDQUNwQyxDQUFBO0FBRUgsTUFBTSxNQUFNLE1BQU0sR0FBRyxTQUFTLFlBQVksRUFBRSxDQUFBO0FBRTVDLE1BQU0sV0FBVyxDQUFDLENBQUMsWUFBWSxTQUFTLFdBQVc7SUFDakQsR0FBRyxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM1QixTQUFTLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQTtDQUMxQjtBQUVELE1BQU0sV0FBVyxVQUFVLENBQUMsT0FBTyxTQUFTLFdBQVcsRUFBRSxDQUFDLFNBQVMsTUFBTSxPQUFPLEdBQUcsS0FBSztJQUN0RixDQUFDLEVBQUUsT0FBTyxDQUFBO0lBQ1YsTUFBTSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQTtJQUMzQixNQUFNLENBQUMsRUFDSCxxQkFBcUIsQ0FDckIsQ0FBQyxHQUFHO1FBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztRQUFDLE9BQU8sRUFBRSxTQUFTLE1BQU0sRUFBRSxDQUFBO0tBQUUsR0FBRztRQUNoRCxHQUFHLEVBQUUsTUFBTSxDQUFBO1FBQ1gsUUFBUSxFQUFFLDhCQUE4QixDQUFBO0tBQ3pDLEdBQUc7UUFDRixHQUFHLEVBQUUsTUFBTSxDQUFBO1FBQ1gsSUFBSSxFQUFFLE1BQU0sQ0FBQTtLQUNiLEdBQUc7UUFDRixHQUFHLEVBQUUsTUFBTSxDQUFBO1FBQ1gsU0FBUyxFQUFFLHFCQUFxQixDQUFBO0tBQ2pDLENBQ0YsR0FDQyxTQUFTLENBQUE7SUFDYixLQUFLLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsRCxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFBO0lBQzFCLElBQUksQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUE7Q0FDMUI7QUFFRCxNQUFNLE1BQU0sVUFBVSxDQUFDLE9BQU8sU0FBUyxXQUFXLElBQUksQ0FBQyxDQUFDLFNBQVMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUNwRixJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxTQUFTLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7QUFFeEUsTUFBTSxXQUFXLEtBQUssQ0FDcEIsS0FBSyxTQUFTLE1BQU0sT0FBTyxFQUMzQixPQUFPLFNBQVMsV0FBVyxFQUMzQixFQUFFLFNBQVMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDO0lBRXhFLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDeEIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMzQixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzlELEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsOEJBQThCLENBQUMsQ0FBQTtJQUNqRSxRQUFRLEVBQUUsQ0FDUixLQUFLLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLEtBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLEVBQUUsOEJBQThCLENBQUMsQ0FBQTtJQUM3RSxPQUFPLEVBQUUsQ0FDUCxLQUFLLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLEtBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLEVBQUUsOEJBQThCLENBQUMsQ0FBQTtJQUM3RSxXQUFXLEVBQUUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdkcsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQy9FOzs7T0FHRztJQUNILGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtDQUMxRDs7VUFHTyxDQUFDLEtBQUssU0FBUyxNQUFNLE9BQU8sRUFBRSxPQUFPLFNBQVMsV0FBVyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFDbkYsSUFBSSxFQUFFLE1BQU0sRUFDWixLQUFLLEVBQUUsS0FBSyxFQUNaLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDN0MsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7QUFOakQscUJBQWEsVUFBVyxTQUFRLGVBT0g7Q0FDNUI7QUFFRCxlQUFPLE1BQU0sY0FBYztJQWtFdkIsR0FBRyxPQWhFZ0IsTUFBTTtJQWlFekIsR0FBRyxPQWhFZ0IsTUFBTSxRQUFRLE1BQU0sR0FBRyxTQUFTO0lBaUVuRCxnQkFBZ0IsR0FBRyxDQUFDLE9BQU8sTUFBTSxRQUFRLE1BQU0sQ0FBQyxLQUFHLENBQUM7SUFRcEQsc0JBQXNCLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sTUFBTSxRQUFRLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0NBU3ZHLENBQUE7O2NBbkZzQixNQUFNO2NBQ04sTUFBTSxRQUFRLE1BQU0sR0FBRyxTQUFTO3VCQWlFaEMsQ0FBQyxPQUFPLE1BQU0sUUFBUSxNQUFNLENBQUMsS0FBRyxDQUFDOzZCQVEzQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxNQUFNLFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Ozs7OzJCQVJqRixDQUFDLE9BQU8sTUFBTSxRQUFRLE1BQU0sQ0FBQyxLQUFHLENBQUM7aUNBUTNCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLE1BQU0sUUFBUSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7O0FBYXhHLHFCQUFhLFVBQVcsU0FBUSxlQUF3RTtDQUN2RztBQUVELE1BQU0sTUFBTSxvQkFBb0IsQ0FBQyxPQUFPLFNBQVMsTUFBTSxJQUFJLE9BQU8sR0FBRztJQUNuRSxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFBO0NBQzNCLENBQUE7QUFFRCxNQUFNLFdBQVcsYUFBYTtJQUM1QixHQUFHLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQTtJQUN0QixNQUFNLEVBQUUsTUFBTSxDQUFBO0lBQ2QsTUFBTSxFQUFFLE1BQU0sQ0FBQTtDQUNmIn0=