GithubHelp home page GithubHelp logo

netopwibby / svelte-persistent-store Goto Github PK

View Code? Open in Web Editor NEW

This project forked from macfja/svelte-persistent-store

0.0 1.0 0.0 440 KB

A Svelte store that keep its value through pages and reloads

License: MIT License

JavaScript 6.53% TypeScript 76.28% HTML 0.93% Svelte 16.26%

svelte-persistent-store's Introduction

Svelte Persistent store

A Svelte store that keep its value through pages and reloads

Github CI GitHub Repo stars NPM bundle size Download per week License NPM version Snyk Vulnerabilities for npm package

Installation

npm install @macfja/svelte-persistent-store

Usage

import { persist, createLocalStorage } from "@macfja/svelte-persistent-store"
import { writable } from "svelte/store"

let name = persist(writable("John"), createLocalStorage(), "name")

$name = "Jeanne Doe"

// if you reload the page the value of $name is 'Jeanne Doe'
import { persistBrowserSession } from "@macfja/svelte-persistent-store"
import { writable } from "svelte/store"

let title = persistBrowserSession(writable("Unsaved"), "document-name")

$title = "My Document"

// if you reload the page the value of $title is 'My Document'
import { writable } from "@macfja/svelte-persistent-store"

// Create a wriatble store, persisted in browser LocalStorage, with the key `name`
let name = writable("name", "John")

$name = "Jeanne Doe"

// if you reload the page the value of $name is 'Jeanne Doe'

Features

  • Multiple storages (Allow to have the best suited usage depending on your use case)
  • Work with any Svelte store
  • Work with classes, objects, primitive

Storages

There are 6 storages built-in:

  • createLocalStorage(), that use window.localStorage to save values
  • createSessionStorage(), that use window.sessionStorage to save values
  • createCookieStorage(), that use document.cookie to save values
  • createIndexedDBStorage(), that use window.indexedDB to save value
  • createChromeStorage(), that use chrome.storage to save values
  • createEncryptedStorage(), that wrap a storage to encrypt data (and key)

You can add more storages, you just need to implement the interface StorageInterface

Documentation

Documentation and examples can be generated with npm run doc, next open docs/index.html with your favorite web browser.

(Hint: If you don't want to generate the docs, a part of the example and documentation are available here)

Types

The persist function will return a new Store with type PersistentStore<T>.

The full signature of persist is:

declare function persist<T>(store: Writable<T>, storage: StorageInterface<T>, key: string): PersistentStore<T>

The persist function add a delete function on the store.

More information about types can be found in the generated types/index.d.ts (npm run prebuild) or in the generated documentation (npm run doc).

Backwards Compatibility Break

1.3.0 to 2.0.0

Data persisted in version 1.3.0 may not be deserializable with version 2.*.

If you have persisted store that contains Javascript class with version 1.3.0 of @macfja/svelte-persistent-store you will not be able to get the data by default. This is due to a change of data serialization. More information here

Contributing

Contributions are welcome. Please open up an issue or create PR if you would like to help out.

Read more in the Contributing file

License

The MIT License (MIT). Please see License File for more information.

svelte-persistent-store's People

Contributors

macfja avatar akiomik avatar ophuscado avatar sidharthv96 avatar gr0kchain avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.