0.9.3 • Published 1 year ago

persisted-svelte-store v0.9.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

npm version license

persisted-svelte-store

A Svelte store that persists to local storage. Can sync changes across browser tabs. Is forked from joshnuss' amazing work

Installation

npm install persisted-svelte-store

Usage

Define the store:

import { persisted } from 'persisted-svelte-store'

// First param `preferences` is the local storage key.
// Second param is the initial value.
export const preferences = persisted('preferences', {
  theme: 'dark',
  pane: '50%',
  ...
})

Then, to use it:

import { get } from 'svelte/store'
import { preferences } from './stores'

preferences.subscribe(...) // subscribe to changes
preferences.update(...) // update value
preferences.set(...) // set value
get(preferences) // read value
$preferences // read value with automatic subscription

Additional options can be specified:

import * as devalue from 'devalue'

// third parameter is options
export const preferences = persisted('local-storage-key', 'default-value', {
  serializer: devalue, // defaults to `JSON`
  storage: 'session', // 'session' for sessionStorage, defaults to 'local'
  syncTabs: true, // choose whether to sync localStorage across tabs, default is true
  onWriteError: (error) => {/* handle or rethrow */}, // Defaults to console.error with the error object
  onParseError: (raw, error) => {/* handle or rethrow */}, // Defaults to console.error with the error object
})

License

MIT

0.9.3

1 year ago