Nimble Porridge Muncher

    @livelybone/storage
    TypeScript icon, indicating that this package has built-in type declarations

    1.7.2 • Public • Published

    @livelybone/storage

    NPM Version Download Month gzip with dependencies: kb typescript pkg.module

    pkg.module supported, which means that you can apply tree-shaking in you project

    A module for localStorage, support custom solution of quota exceeded. When localStorage is not supported by browser, it will be degrading to use Cookie or Map

    You can store Objects directly like

    1. Object { a: 1, b: '1' }
    2. Number 1
    3. String 'true'
    4. Boolean true
    5. undefined undefined
    6. null null
    7. Array [1, 2]

    Before store, this module will stringify the value you set (use stringifyJSON). Before return, it will parse(use parseJSON) the value which you want get

    You may need a polyfill for Map like babel-polyfill if you use it in ie browser

    repository

    https://github.com/livelybone/storage.git

    Demo

    http://livelybone.github.io/tool/storage/

    Run Example

    you can see the usage by run the example of the module, here is the step:

    1. Clone the library git clone https://github.com/livelybone/storage.git
    2. Go to the directory cd your-module-directory
    3. Install npm dependencies npm i(use taobao registry: npm i --registry=http://registry.npm.taobao.org)
    4. Open service npm run dev
    5. See the example(usually is http://127.0.0.1:3000/examples/test.html) in your browser

    Installation

    npm i -S @livelybone/storage

    Global name - The variable the module exported in umd bundle

    Storage

    Interface

    See what method or params you can use in index.d.ts

    Usage

    /**
     * @property Cookie, a purely wrapper of Cookie
     * @property Storage, a wrapper of HTML5 localStorage dealt with Cookie or Map (Map default)
     * @property LocalStorage, a purely wrapper of  HTML5 localStorage
     * @property StorageUtils, some tool function about storage
     * */
    import {Cookie, Storage, LocalStorage, StorageUtils} from '@livelybone/storage';
    
    Cookie.set('key', 'value')
    Cookie.get('key')
    Cookie.keys()
    Cookie.forEach(callback)
    // ...
    
    LocalStorage.set('key', 'value')
    LocalStorage.get('key')
    LocalStorage.keys()
    LocalStorage.forEach(callback)
    // ...
    
    const useCookie = true
    const exceededCallback = null
    
    /**
     * @typedef   { Function }          ExceededCallback
     * @param     { Error }             error
     * @param     { Array }             params              params[0] => key; params[1] => value
     * @param     { Storage }           storage
     * */
    /**
     * @class                           Storage
     * @param     { Boolean }           useCookie           Use cookie or not
     * @param     { ExceededCallback }  [exceededCallback]  Callback of QUOTA_EXCEEDED_ERROR,
     * */
    const storage = new Storage(useCookie, exceededCallback)
    storage.set('key', 'value')
    storage.get('key')
    storage.keys()
    storage.forEach(callback)
    // ...

    when you want to set this module as external while you are developing another module, you should import it like this:

    import * as Storage from '@livelybone/storage'
    
    // then use it by need

    CDN

    Use in html, see what you can use in CDN: unpkg

    <-- use what you want -->
    <script src="https://unpkg.com/@livelybone/storage/lib/umd/<--module-->.js"></script>

    Or,see what you can use in CDN: jsdelivr

    <script src="https://cdn.jsdelivr.net/npm/@livelybone/storage/lib/umd/<--module-->.js"></script>

    Shared methods

    StorageValue: undefined|null|String|Number|Boolean|Object|Array

    get: (key: String) => StorageValue

    set: (key: String, value: StorageValue) => void

    delete: (key: String) => void

    clear: () => void

    has: (key: String) => Boolean

    keys: () => Array<String>|MapIterator

    values: () => Array<StorageValue>|MapIterator

    entries: () => Array<Object{key, value}>|MapIterator

    forEach: (callback: (value: StorageValue, key: String, source: LocalStorage|Cookie|new Map())) => void) => void

    Particular methods of Storage, LocalStorage

    addHandler: (handler: ({ event: StorageEvent, key: String, oldValue: StorageValue, newValue: StorageValue, }) => any) => wrappedHandler

    removeHandler: (handlers: Array<wrappedHandler>) => void

    Attributes

    size: Number

    StorageUtils

    const {
      stringifyJSON,
      parseJSON,
      isStorageExceeded,
      storageAvailable,
      cookieAvailable,
    } = StorageUtils

    stringifyJSON: (val: StorageValue) => String

    parseJSON: (val: String) => StorageValue

    isStorageExceeded: (err: Error) => Boolean

    storageAvailable: () => Boolean

    cookieAvailable: () => Boolean

    Install

    npm i @livelybone/storage

    DownloadsWeekly Downloads

    25

    Version

    1.7.2

    License

    MIT

    Unpacked Size

    38 kB

    Total Files

    12

    Last publish

    Collaborators

    • livelybone