@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
text/typescript
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 };