@gluonjs/store / packages/store/src / AsyncPersistencePluginOptions
Interface: AsyncPersistencePluginOptions
Properties
namespace?
readonlyoptionalnamespace?:string
onError?
readonlyoptionalonError?: (error,storeId) =>void
Parameters
error
unknown
storeId
string
Returns
void
signal?
readonlyoptionalsignal?:StoreAbortSignal
storage
readonlystorage:AsyncStorageLike
Example
Configure an async Store adapter, namespace, abort signal, and real storage-error callback:
import {
createAsyncPersistencePlugin,
createStoreManager,
defineStore,
type AsyncPersistenceLifecycle,
type AsyncPersistencePlugin,
type AsyncPersistencePluginOptions,
type AsyncPersistenceStatus,
type AsyncStorageLike,
type StoreAbortSignal,
} from '@gluonjs/store';
declare function indexedDbGet(key: string, signal?: StoreAbortSignal): Promise<string | null>;
declare function indexedDbSet(key: string, value: string, signal?: StoreAbortSignal): Promise<void>;
const storage: AsyncStorageLike = {
async getItem(key, signal) { return await indexedDbGet(key, signal); },
async setItem(key, value, signal) { await indexedDbSet(key, value, signal); },
};
const signal: StoreAbortSignal | undefined = undefined;
const pluginOptions: AsyncPersistencePluginOptions = { storage, signal };
const persistence: AsyncPersistencePlugin = createAsyncPersistencePlugin(pluginOptions);
const manager = createStoreManager({ plugins: [persistence] });
const cart = manager.use(defineStore({ id: 'cart', state: () => ({ items: [] as string[] }), persist: true }));
const lifecycle: AsyncPersistenceLifecycle = persistence.lifecycle;
const status: AsyncPersistenceStatus = lifecycle.status;
await lifecycle.ready;
if (lifecycle.status === 'ready') console.log('bootstrap restored store', cart.items);