import { type Adapter, type SyncOptions, UnknownError } from '@livestore/common'; import type { LiveStoreSchema } from '@livestore/common/schema'; import type * as WebmeshWorker from '@livestore/devtools-web-common/worker'; import type { MakeWebSqliteDb } from '@livestore/sqlite-wasm/browser'; import { Fiber, type Schema, Worker } from '@livestore/utils/effect'; export interface InMemoryAdapterOptions { importSnapshot?: Uint8Array; sync?: SyncOptions; /** * The client ID to use for the adapter. * * @default a random nanoid */ clientId?: string; /** * The session ID to use for the adapter. * * @default a random nanoid */ sessionId?: string; /** In order to use the devtools with the in-memory adapter, you need to provide the shared worker. */ devtools?: { sharedWorker: ((options: { name: string; }) => globalThis.SharedWorker) | (new (options: { name: string; }) => globalThis.SharedWorker); }; } /** * Creates a web-only in-memory LiveStore adapter. * * This adapter runs entirely in memory with no persistence. Ideal for: * - Unit tests and integration tests * - Sandboxes and demos * - Ephemeral sessions where persistence isn't needed * * **Characteristics:** * - Fast, zero I/O overhead * - Works in all browser contexts: Window, WebWorker, SharedWorker, ServiceWorker * - Supports optional sync backends for real-time collaboration * - No data persists after page reload * * For persistent storage, use `makePersistedAdapter` instead. * * @example * ```ts * import { makeInMemoryAdapter } from '@livestore/adapter-web' * * const adapter = makeInMemoryAdapter() * ``` * * @example * ```ts * // With sync backend for real-time collaboration * import { makeInMemoryAdapter } from '@livestore/adapter-web' * import { makeWsSync } from '@livestore/sync-cf/client' * * const adapter = makeInMemoryAdapter({ * sync: { * backend: makeWsSync({ url: 'wss://api.example.com/sync' }), * }, * }) * ``` * * @example * ```ts * // Pre-populate with existing data * const adapter = makeInMemoryAdapter({ * importSnapshot: existingDbSnapshot, * }) * ``` */ export declare const makeInMemoryAdapter: (options?: InMemoryAdapterOptions) => Adapter; export interface MakeLeaderThreadArgs { schema: LiveStoreSchema; storeId: string; clientId: string; makeSqliteDb: MakeWebSqliteDb; syncOptions: SyncOptions | undefined; syncPayloadEncoded: Schema.JsonValue | undefined; syncPayloadSchema: Schema.Schema | undefined; importSnapshot: Uint8Array | undefined; devtoolsEnabled: boolean; sharedWorkerFiber: SharedWorkerFiber | undefined; } type SharedWorkerFiber = Fiber.Fiber, UnknownError>; export {}; //# sourceMappingURL=in-memory-adapter.d.ts.map