lsdis icon indicating copy to clipboard operation
lsdis copied to clipboard

KV storage based on LocalStorage.

lsdis

npm CircleCI

KV storage based on LocalStorage.

Purpose

Cache requests with localStorage in the browser.

Install

# nodejs
npm i -S lsdis

Or

<!-- browser -->
<script src='https://cdn.jsdelivr.net/npm/lsdis@latest/dist/lsdis.min.js'></script>

Feature

  • Local storage API
  • Cache wrapper
  • Cache invalidate

Usage

LocalStorage - Low Level API

import LocalStorage from 'lsdis'

const storage = new LocalStorage()
const mykey = 'mykey'
const myval = 'myval'
const timeoutMs = 1000

// set value with timeout(/ms)
storage.set(mykey, myval, timeoutMs)

// if not existed, return null else return string
storage.get(mykey)

// delete by key
storage.del(mykey)

// flush all localstorage
storage.flush()

LocalCache - High Level API

import { LocalCache } from 'lsdis'

function getUser(username: string) {
  // fetch request data
  return { username }
}

const timeoutMs = 1000
const cache = new LocalCache({ timeout: timeoutMs })
const username = 'myname'

async function main() {
  // wrapper by key with function and args
  const result = await cache.wrapper(`getUser:${username}`, getUser, username)
  console.log(result)

  // wrapper by key with function
  const resultAsync = await cache.wrapper(`getUser:${username}`, async () => getUser(username))
  console.log(resultAsync)
}