All Projects â†’ VitorLuizC â†’ persistence

VitorLuizC / persistence

Licence: MIT License
đŸ’Ÿ Persistence provides a pretty easy API to handle Storage's implementations.

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to persistence

Immortaldb
đŸ”© A relentless key-value store for the browser.
Stars: ✭ 2,962 (+16355.56%)
Mutual labels:  storage, localstorage, indexeddb, sessionstorage
Vue Ls
đŸ’„ Vue plugin for work with local storage, session storage and memory storage from Vue context
Stars: ✭ 468 (+2500%)
Mutual labels:  storage, localstorage, sessionstorage
Localforage
đŸ’Ÿ Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API.
Stars: ✭ 19,840 (+110122.22%)
Mutual labels:  storage, localstorage, indexeddb
stoor
Storage wrapper with support for namespacing, timeouts and multi get/set and remove.
Stars: ✭ 26 (+44.44%)
Mutual labels:  storage, localstorage, sessionstorage
vue-web-storage
Vue.js plugin for local storage and session storage (1.8 kb min+gz) đŸ’Ÿ
Stars: ✭ 85 (+372.22%)
Mutual labels:  storage, localstorage, sessionstorage
Angular Locker
đŸ—„ïž A simple & configurable abstraction for local/session storage in angular js projects
Stars: ✭ 318 (+1666.67%)
Mutual labels:  storage, localstorage, sessionstorage
h5webstorage
Web Storage for Angular 2
Stars: ✭ 38 (+111.11%)
Mutual labels:  storage, localstorage, sessionstorage
Proxy Storage
Provides an adapter for storage mechanisms (cookies, localStorage, sessionStorage, memoryStorage) and implements the Web Storage interface
Stars: ✭ 10 (-44.44%)
Mutual labels:  storage, localstorage, sessionstorage
Vlf
A Vue plugin from localForage.vue-localForage or vlf
Stars: ✭ 99 (+450%)
Mutual labels:  storage, localstorage, indexeddb
Store
A better way to use localStorage and sessionStorage
Stars: ✭ 1,646 (+9044.44%)
Mutual labels:  storage, localstorage, sessionstorage
React Storage Hooks
React hooks for persistent state
Stars: ✭ 146 (+711.11%)
Mutual labels:  storage, localstorage, sessionstorage
svelte-persistent-store
A Svelte store that keep its value through pages and reloads
Stars: ✭ 111 (+516.67%)
Mutual labels:  localstorage, indexeddb, sessionstorage
Brownies
đŸ« Tastier cookies, local, session, and db storage in a tiny package. Includes subscribe() events for changes.
Stars: ✭ 2,386 (+13155.56%)
Mutual labels:  storage, localstorage, sessionstorage
ng2-storage
A local and session storage wrapper for angular 2.
Stars: ✭ 14 (-22.22%)
Mutual labels:  storage, localstorage, sessionstorage
Recoil Persist
Package for recoil state manager to persist and rehydrate store
Stars: ✭ 66 (+266.67%)
Mutual labels:  storage, localstorage, sessionstorage
Remotestorage.js
⏥ JavaScript client library for integrating remoteStorage in apps
Stars: ✭ 2,155 (+11872.22%)
Mutual labels:  storage, localstorage, indexeddb
client-persist
Offline storage for your web client. Supports IndexedDB, WebSQL, localStorage and sessionStorage with an easy to crawl with API.
Stars: ✭ 14 (-22.22%)
Mutual labels:  localstorage, indexeddb, sessionstorage
local-storage-fallback
Check and use appropriate storage adapter for browser (localStorage, sessionStorage, cookies, memory)
Stars: ✭ 103 (+472.22%)
Mutual labels:  localstorage, sessionstorage
vue-storage-watcher
a reactive storage plugin for vue 👀🔭
Stars: ✭ 60 (+233.33%)
Mutual labels:  localstorage, sessionstorage
browserStorage
æ”è§ˆć™šæœŹćœ°ć­˜ć‚šć°èŁ…
Stars: ✭ 30 (+66.67%)
Mutual labels:  localstorage, sessionstorage

@vitorluizc/persistence

Build Status License Library minified size Library minified + gzipped size

Persistence provides a pretty easy API to handle Storage's implementations.

  • ⚡ Pretty fast and smaller than 0.3KB (minified + gzipped ESM);
  • đŸ·ïž Type definitions to TS developers and IDE/Editors autocomplete/intellisense;
  • 📩 ESM, CommonJS and UMD distributions (CDN uses UMD as default);

Installation

This library is published in the NPM registry and can be installed using any compatible package manager.

npm install @vitorluizc/persistence --save

# For Yarn, use the command below.
yarn add @vitorluizc/persistence

Installation from CDN

This module has an UMD bundle available through JSDelivr and Unpkg CDNs.

<script src="https://cdn.jsdelivr.net/npm/@vitorluizc/persistence"></script>

<script>
  // module will be available through `persistence` function.

  var name = persistence('name', { placeholder: 'Unknown' });

  name.get();
  //=> 'Unknown'
</script>

Usage

It exports a factory function to create persistence. A persistence can easily set, get and delete JSON parseable values to any Storage implementation (ex. SessionStorage and LocalStorage).

import createPersistence from '@vitorluizc/persistence';

const persistence = createPersistence<string>('Name', {
  timeout: 1000 * 60 * 60 * 24, // A day in milliseconds
  storage: window.sessionStorage,
  placeholder: ''
});

// Setups field's value as a persistent state on session.
const field = document.querySelector('input[name="name"]');
field.value = persistence.get();
field.addEventListener('input', () => persistence.set(field.value));

API

  • createPersistence

    The default exported factory function. It receives storage's key and, optionally, PersistenceOptions as arguments and returns a Persistence.

    import createPersistence from '@vitorluizc/persistence';
    
    const persistence = createPersistence('Storage\'s key', { placeholder: 'None' });
    TypeScript type definitions.
    declare const createPersistence: {
      <T = any, U = T> (
        name: string,
        options: PersistenceOptions & {
          placeholder: U;
        }
      ): Persistence<T, U>;
    
      <T = any, U = T | undefined> (
        name: string,
        options?: PersistenceOptions<U>
      ): Persistence<T, U>;
    };
    
    export default createPersistence;
  • PersistenceOptions

    Options used as second argument on createPersistence to set timeout, storage and placeholder value to Persistence.

    import createPersistence, { PersistenceOptions } from '@vitorluizc/persistence';
    
    const options: PersistenceOptions<boolean> = {
      timeout: 1000 * 60 * 60, // 1 hour in milliseconds.
      placeholder: false
    };
    
    const persistence = createPersistence<boolean>('isSignedIn', options);
    TypeScript type definitions.
    export interface PersistenceOptions <T = any> {
      storage?: IStorage;
      timeout?: number;
      placeholder?: T;
    }
  • Persistence

    An object with a pretty easy API to handle a Storage implementation.

    • get: Get value from persistent storage.

    • set: Set a value to a persistent storage.

    • delete: Delete value from persistent storage.

    import createPersistence, { Persistence } from '@vitorluizc/persistence';
    
    // ...
    
    type SignUpFormState = { nickname: string, };
    
    const state: Persistence<SignUpFormState> = createPersistence('state@name', {
      timeout: 1000 * 60 * 60 * 24, // A day in milliseconds
      placeholder: {
        nickname: ''
      },
    });
    
    
    $nickname.value = state.get().nickname;
    $nickname.on('keydown', (e) => state.set({ nickname: e.target.value }));
    
    $signUpForm.on('submit', (e) => {
      services.signUp(state.get());
    
      state.delete();
    });
    TypeScript type definitions.
    export interface Persistence <T = any, U = (T | undefined)> {
      get (): T | U;
      set (value: T): void;
      delete (): void;
    }

License

Released under MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].