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

41 lines (40 loc) • 1.81 kB
import { f as StateStorage, u as PersistStorage } from "../persist-core-B649IGlX.mjs"; //#region src/adapters/backends/secure-store.d.ts /** * `StateStorage` over `expo-secure-store` — fully async, string-wire, backed * by the platform keychain/keystore. Values are encrypted at rest by the OS. * * **~2KB value limit per key** (platform-imposed) — use this for small secrets * (auth tokens, short prefs), not large state. Oversized writes reject; pair * `partialize` to persist only a small slice. * * SecureStore keys must match `/^[\w.-]+$/`. Persist names using colons (e.g. * `auth:token:v1`) are sanitized — characters outside that set become `_` — so * colon-style names round-trip consistently across get/set/remove. * * @example * ```ts * import { secureStoreStateStorage } from "@stainless-code/persist/backends/secure-store"; * * const storage = secureStoreStateStorage(); * ``` */ declare function secureStoreStateStorage(): StateStorage; /** * Build a JSON-encoded `PersistStorage` over `expo-secure-store`. Async backend * → `useHydrated` gating is mandatory. **~2KB value limit per key** — keep * persisted state small; use `partialize` to project a tiny slice (e.g. an auth * token) and a different backend (IndexedDB, MMKV) for larger state. * * @example * ```ts * import { createSecureStoreStorage } from "@stainless-code/persist/backends/secure-store"; * import { persistStore } from "@stainless-code/persist/sources/tanstack-store"; * * const storage = createSecureStoreStorage<AuthToken>()!; * persistStore(store, { name: "auth:token:v1", storage, partialize: (s) => s.token }); * ``` */ declare function createSecureStoreStorage<S>(): PersistStorage<S> | undefined; //#endregion export { createSecureStoreStorage, secureStoreStateStorage };