UNPKG

@stainless-code/persist

Version:

Hydration-aware persistence for any reactive store — zero-dep persistSource core; codecs, backends, cross-tab transport, source + framework hydration adapters ship as opt-in recipes

33 lines (32 loc) • 1.46 kB
import { f as StateStorage } from "../persist-core-B649IGlX.mjs"; //#region src/adapters/backends/compressed.d.ts type CompressionFormat = "gzip" | "deflate" | "deflate-raw"; interface CreateCompressedStorageOptions { /** Compression format. @default "gzip" */ format?: CompressionFormat; } /** * Native `CompressionStream`/`DecompressionStream` compression over a * string-wire `StateStorage`. Formats: `gzip` (default), `deflate`, * `deflate-raw`; output is base64 so it stays string-wire. * * A backend **wrapper**, not a sync `StorageCodec`, because the stream APIs * are async. Compose: `createStorage(() => createCompressedStorage(backend), codec)`. * Returns `undefined` when the stream APIs are unavailable. Stacks with * `createEncryptedStorage` (compress-then-encrypt is the standard order). * * @example * ```ts * import { createStorage } from "@stainless-code/persist"; * import { createCompressedStorage } from "@stainless-code/persist/backends/compressed"; * import { serovalCodec } from "@stainless-code/persist/codecs/seroval"; * * const storage = createStorage<Prefs>( * () => createCompressedStorage(() => localStorage)!, * serovalCodec(), * ); * ``` */ declare function createCompressedStorage(getStorage: () => StateStorage<string>, options?: CreateCompressedStorageOptions): StateStorage<string> | undefined; //#endregion export { CompressionFormat, CreateCompressedStorageOptions, createCompressedStorage };