Interface StoreOptions

interface StoreOptions {
    filterKeys?: StoreKeyFilter;
    filterKeysStrategy?: StoreKeyFilterStrategy;
    onError?: (error: unknown) => MaybePromise<void>;
    saveInterval?: number;
    saveOnChange?: boolean;
    saveStrategy?: LooseTimeStrategyKind;
    syncInterval?: number;
    syncStrategy?: LooseTimeStrategyKind;
}

Hierarchy

  • StoreBackendOptions
  • PluginOptions
    • StoreOptions

Properties

filterKeys?: StoreKeyFilter

Keys the plugin should save or ignore.

The behavior depends on the value of StoreOptions.filterKeysStrategy.

filterKeysStrategy?: StoreKeyFilterStrategy

Strategy to use when filtering keys.

  • pick: Only the specified keys will be synced and saved.
  • omit: All keys will be synced and saved except the ones specified.

You can also provide a custom function that will be called for each key. If the function returns true, the key will be saved and synced.

The filtering is shallow, meaning that nested keys will not be filtered.

'omit'
onError?: (error: unknown) => MaybePromise<void>

Custom error handler.

console.error
saveInterval?: number

Interval in milliseconds to use when saving the store. This option is only valid when StoreBackendOptions.saveStrategy is set to debounce or throttle.

0
saveOnChange?: boolean

Save the store whenever there is a state change.

false
saveStrategy?: LooseTimeStrategyKind

Strategy to use when saving the store.

For a detailed explanation about the differences between debounce and throttle, see: https://kettanaito.com/blog/debounce-vs-throttle

'immediate'
syncInterval?: number

Interval in milliseconds to use when syncing the store with the backend. This option is only valid when PluginOptions.syncStrategy is set to debounce or throttle.

0
syncStrategy?: LooseTimeStrategyKind

Strategy to use when syncing the store with the backend.

Whenever there's a state change, the store sends a notification to Rust so they can stay in sync. Since data gets serialized every time this happens, it can be expensive to do it too often. To mitigate this, we can use debounce or throttle to control how often this synchronization occurs.

If the value is a number, the plugin will use debounce with the specified value as the interval. If null or undefined, the strategy will be immediate.

For a detailed explanation about the differences between debounce and throttle, see: https://kettanaito.com/blog/debounce-vs-throttle

'immediate'