import type { UniqueKey } from "@azure/cosmos"; import { Context, Effect, type NonEmptyReadonlyArray, type Option, type Redacted } from "effect-app"; 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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUsscUJBQXFCLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFcEcsT0FBTyxLQUFLLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDbEUsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDcEUsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFakQsTUFBTSxXQUFXLFdBQVcsQ0FBQyxDQUFDO0lBQzVCLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUE7SUFDakM7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxLQUFLLE9BQU8sQ0FBQTtJQUMvQzs7T0FFRztJQUNILGFBQWEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUUxQjs7O09BR0c7SUFDSCxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUE7SUFFcEI7O09BRUc7SUFDSCxVQUFVLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQTtDQUN6QjtBQUVELE1BQU0sTUFBTSxlQUFlLEdBQUcsTUFBTSxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFBO0FBQzlELE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsT0FBTyxHQUFHLE1BQU0sQ0FBQTtBQUd4RCxNQUFNLE1BQU0sS0FBSyxHQUNiO0lBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxRQUFRLENBQUM7SUFBQyxLQUFLLEVBQUUsZUFBZSxDQUFBO0NBQUUsR0FDNUQ7SUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQTtDQUFFLEdBQ3hFO0lBQ0EsR0FBRyxFQUFFLE1BQU0sQ0FBQTtJQUNYLENBQUMsRUFBRSxVQUFVLEdBQUcsYUFBYSxHQUFHLFdBQVcsR0FBRyxjQUFjLEdBQUcsaUJBQWlCLEdBQUcsZUFBZSxDQUFBO0lBQ2xHLEtBQUssRUFBRSxNQUFNLENBQUE7Q0FDZCxHQUNDO0lBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQzlEO0lBQ0EsR0FBRyxFQUFFLE1BQU0sQ0FBQTtJQUNYLENBQUMsRUFBRSxJQUFJLEdBQUcsUUFBUSxDQUFBO0lBQ2xCLEtBQUssRUFBRSxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQTtDQUNwQyxDQUFBO0FBRUgsTUFBTSxNQUFNLE1BQU0sR0FBRyxTQUFTLFlBQVksRUFBRSxDQUFBO0FBRTVDLE1BQU0sV0FBVyxDQUFDLENBQUMsWUFBWSxTQUFTLFdBQVc7SUFDakQsR0FBRyxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM1QixTQUFTLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQTtDQUMxQjtBQUVELE1BQU0sV0FBVyxVQUFVLENBQUMsT0FBTyxTQUFTLFdBQVcsRUFBRSxDQUFDLFNBQVMsTUFBTSxPQUFPLEdBQUcsS0FBSztJQUN0RixDQUFDLEVBQUUsT0FBTyxDQUFBO0lBQ1YsTUFBTSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQTtJQUMzQixNQUFNLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLEdBQUc7UUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO1FBQUMsT0FBTyxFQUFFLFNBQVMsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLEdBQUcsU0FBUyxDQUFBO0lBQzNGLEtBQUssQ0FBQyxFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xELEtBQUssQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUE7SUFDMUIsSUFBSSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQTtDQUMxQjtBQUVELE1BQU0sTUFBTSxVQUFVLENBQUMsT0FBTyxTQUFTLFdBQVcsSUFBSSxDQUFDLENBQUMsU0FBUyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQ3BGLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLFNBQVMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUV4RSxNQUFNLFdBQVcsS0FBSyxDQUNwQixLQUFLLFNBQVMsTUFBTSxPQUFPLEVBQzNCLE9BQU8sU0FBUyxXQUFXLEVBQzNCLEVBQUUsU0FBUyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7SUFFeEUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN4QixNQUFNLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUQsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO0lBQ2pFLFFBQVEsRUFBRSxDQUNSLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsS0FDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO0lBQzdFLE9BQU8sRUFBRSxDQUNQLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsS0FDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFBO0lBQzdFLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2RyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDL0U7OztPQUdHO0lBQ0gsYUFBYSxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0NBQzFEOztVQUdPLENBQUMsS0FBSyxTQUFTLE1BQU0sT0FBTyxFQUFFLE9BQU8sU0FBUyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUNuRixJQUFJLEVBQUUsTUFBTSxFQUNaLEtBQUssRUFBRSxLQUFLLEVBQ1osSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUM3QyxNQUFNLENBQUMsRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOztBQU5qRCxxQkFBYSxVQUFXLFNBQVEsZUFPSDtDQUM1QjtBQUVELGVBQU8sTUFBTSxjQUFjO0lBa0V2QixHQUFHLE9BaEVnQixNQUFNO0lBaUV6QixHQUFHLE9BaEVnQixNQUFNLFFBQVEsTUFBTSxHQUFHLFNBQVM7SUFpRW5ELGdCQUFnQixHQUFHLENBQUMsT0FBTyxNQUFNLFFBQVEsTUFBTSxDQUFDLEtBQUcsQ0FBQztJQVFwRCxzQkFBc0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxNQUFNLFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FTdkcsQ0FBQTs7Y0FuRnNCLE1BQU07Y0FDTixNQUFNLFFBQVEsTUFBTSxHQUFHLFNBQVM7dUJBaUVoQyxDQUFDLE9BQU8sTUFBTSxRQUFRLE1BQU0sQ0FBQyxLQUFHLENBQUM7NkJBUTNCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLE1BQU0sUUFBUSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7Ozs7MkJBUmpGLENBQUMsT0FBTyxNQUFNLFFBQVEsTUFBTSxDQUFDLEtBQUcsQ0FBQztpQ0FRM0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sTUFBTSxRQUFRLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzs7QUFheEcscUJBQWEsVUFBVyxTQUFRLGVBQXdFO0NBQ3ZHO0FBRUQsTUFBTSxNQUFNLG9CQUFvQixDQUFDLE9BQU8sU0FBUyxNQUFNLElBQUksT0FBTyxHQUFHO0lBQ25FLEtBQUssQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUE7Q0FDM0IsQ0FBQTtBQUVELE1BQU0sV0FBVyxhQUFhO0lBQzVCLEdBQUcsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUE7SUFDZCxNQUFNLEVBQUUsTUFBTSxDQUFBO0NBQ2YifQ==