tn-vue-lstore

Schema ready localStorage and sessionStorage plugin for vue

Usage no npm install needed!

<script type="module">
  import tnVueLstore from 'https://cdn.skypack.dev/tn-vue-lstore';
</script>

README

Bundle Size

Babel Minified Gzipped Note
Uncompiled 5.35 Kb 2.01 Kb
Polyfill 2.55 Kb 901 byte Increased 31%
Compiled 7.91 Kb 2.91 Kb Compressed 63%

Core JS Minified Gzipped Note
Before 12.6 Kb 4.26 Kb Including dependencies
core-js 14.5 Kb 5.02 Kb Increased 54%
After 27.4 Kb 9.27 Kb Compressed 66%

Usage

import {
  lstore,     // lstore core
  lsInit,     // to initate lstore
  lsOptions,  // creating options (typescript helper)
  lsInstance, // creating an instance (typescript helper)
  lsSchema    // creating an schema (typescript helper)
} from 'tn-vue-lstore'

// Initiate lstore
let init = lsInit(options, ...instances[])

// Install the plugin
Vue.use(lstore, init)

lsOptions() - Typescript helper

lsOptions(UserOptions)

type UserOptions = {
  dev: {
    package: string
    loglimit?: number // 300
    loggerChunk?: number // 50
    disablelogging?: Method[] // ['get']
  }
  prod?: {} /* future plans */
}

Method list

lsInstance() - Typescript helper

lsInstance(UserInstance)

type UserInstance = {
  namespace: string
  schema: UserSchema
  storetype?: Storetype // 'local'
}

type Storetype = 'local' | 'session'

lsSchema() - Typescript helper

lsSchema(UserSchema)

type UserSchema = {
  [prop: string]: Schemaval
}

type Schemaval = Checker | Checker[] | SchemaSimple | SchemaNested

type SchemaSimple = {
  nested?: never
  default?: any
  checker?: Checker | Checker[]
  removable?: boolean
}

type SchemaNested = {
  nested: UserSchema
  unknown?: {
    keyname?: RegExp | RegExp[]
    checker?: Checker | Checker[]
  }
}

Checker list

Usage in Vue

/**
 * Namespace   : foo/bar
 * Schema path : baz > far
 **/
this.$lstore.foo.bar('baz.far').method()

/**
 * CheckError & Success callback
 * Only for setter methods (See Methods)
 **/
const cberror = function(){ ... }
const cbsuccess = function(){ ... }

this.$lstore.foo.bar('baz.far', cberror, cbsuccess).setter()

/**
 * Also lstore can be accessed as a global variable
 **/
$lstore

Method list

Devtools Commands

> $lstore
> $lstorelog
> $lstorelogFull

Checker list

  • String
  • Number
  • Boolean
  • Array
  • Object
  • RegExp
  • 'json'
  • 'null'
  • function(val){ return Boolean }

Method list

  • Getters
    • get()
    • getNest()
  • Setters
    • set(any)
    • setQuery(function)
    • increase(increaseby?)
    • decrease(decreaseby?)
    • push(...any[])
    • unshift(...any[])
    • pop(howmany?)
    • shift(howmany?)
  • Objs
    • assign({...})
    • remove(...keys[])