import * as _nuxt_schema from '@nuxt/schema'; import { CookiesStorageOptions } from '../dist/nuxt/runtime/storages.js'; import { StateTree, PiniaPluginContext } from 'pinia'; type IsAny = unknown extends T ? ([keyof T] extends [never] ? false : true) : false; type ExcludeArrayKeys = T extends ArrayLike ? Exclude : keyof T; type PathImpl = Key extends string ? IsAny extends true ? never : T[Key] extends Record ? `${Key}.${PathImpl> & string}` | `${Key}.${ExcludeArrayKeys & string}` : never : never; type Path = keyof T extends string ? (PathImpl | keyof T) extends infer P ? P extends string | keyof T ? P : keyof T : keyof T : never; /** * Synchronous storage based on Web Storage API. * @see https://developer.mozilla.org/en-US/docs/Web/API/Storage */ interface StorageLike { /** * Get a key's value if it exists. */ getItem: (key: string) => string | null; /** * Set a key with a value, or update it if it exists. */ setItem: (key: string, value: string) => void; } /** * Serializer implementation to stringify/parse state. */ interface Serializer { /** * Serialize state into string before storing. * @default JSON.stringify * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify */ serialize: (data: StateTree) => string; /** * Deserializes string into state before hydrating. * @default JSON.parse * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse */ deserialize: (data: string) => StateTree; } interface Persistence { key: string; /** * Log errors in console. * @default false */ debug: boolean; /** * Synchronous storage to persist the state. */ storage: StorageLike; /** * Serializer to serialize/deserialize state into storage. */ serializer: Serializer; /** * Hook called before hydrating store. */ beforeHydrate?: (context: PiniaPluginContext) => void; /** * Hook called after hydrating store. */ afterHydrate?: (context: PiniaPluginContext) => void; /** * Dot-notation paths to pick from state before persisting. */ pick?: Path[] | string[]; /** * Dot-notation paths to omit from state before persisting. */ omit?: Path[] | string[]; } type PersistenceOptions = Partial, 'key'>> & { /** * Storage key to use. * @default $store.id */ key?: ((s: string) => string) | string; }; type Persist = boolean | PersistenceOptions | PersistenceOptions[]; declare module 'pinia' { interface DefineStoreOptionsBase { /** * Persist store in storage * @see https://codeberg.org/praz/pinia-plugin-persistedstate */ persist?: Persist; } interface PiniaCustomProperties { /** * Hydrate store from configured storage * Warning: this is for advances usecases, make sure you know what you're doing */ $hydrate: (opts?: { runHooks?: boolean; }) => void; /** * Persist store into configured storage * Warning: this is for advances usecases, make sure you know what you're doing */ $persist: () => void; } } type ModuleOptions = Pick & { /** * Default storage for persistence. Only accepts presets. */ storage?: 'cookies' | 'localStorage' | 'sessionStorage'; /** * Global key template, allow pre/postfixing store keys. * @example 'my-%id-persistence' will yield 'my--persistence' */ key?: `${string}%id${string}`; /** * Options used globally by default cookie storage. * Ignored for other storages. */ cookieOptions?: Omit; /** * Automatically persist all stores with global defaults, opt-out individually. */ auto?: boolean; }; declare const _default: _nuxt_schema.NuxtModule; declare module '@nuxt/schema' { interface PublicRuntimeConfig { piniaPluginPersistedstate: ModuleOptions; } } export { _default as default };