Skip to content

magic-libraries/db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Apr 2, 2022
59cdc53 · Apr 2, 2022
Jul 10, 2021
Mar 4, 2021
Mar 4, 2021
Mar 4, 2021
Dec 23, 2019
May 13, 2020
Dec 23, 2019
Apr 2, 2022
May 13, 2020
May 6, 2021
Apr 2, 2022
Apr 2, 2022

Repository files navigation

@magic-libraries/db

localstorage backed client key value database for @magic

html-docs

NPM version Linux Build Status Windows Build Status Coverage Status Greenkeeper badge Known Vulnerabilities

installation

npm install --save-exact @magic-libraries/db

usage

in a page/component, just use the lib.db effects.

localstorage is synchronous, so we do not even have to await.

see ExampleStore for a reference implementation,

and @magic-modules/gdpr for an actual usecase.

export const View = ({ key, state }) =>
  div([
    div(['key: ', key]),
    div([
      h4('controls'),
      button({ onclick: [actions.examplestore.set, { key }] }, 'write'),
      button({ onclick: [actions.examplestore.get, { key }] }, 'read'),
      button({ onclick: [actions.examplestore.del, { key }] }, 'delete'),
    ]),

    div('value in local storage:'),
    state[key]
      ? [`state is accessible via state['${key}']`, div(state[key])]
      : div('no value in db'),
  ])

export const actions = {
  examplestore: {
    get: (state, { key }) => [
      state,
      [
        lib.db.get,
        {
          key,
          action: actions.examplestore.refresh,
        },
      ],
    ],

    set: (state, { key }) => [
      state,
      [
        lib.db.set,
        {
          key,
          value: `testing ${Math.ceil(Math.random() * 100000)}`,
          action: actions.examplestore.refresh,
        },
      ],
    ],

    del: (state, { key }) => [
      state,
      [
        lib.db.del,
        {
          key,
          action: actions.examplestore.refresh,
        },
      ],
    ],

    refresh: (state, { key, value }) => {
      console.log('refresh', { key, value })

      if (key) {
        state[key] = value
      }

      return {
        ...state,
      }
    },
  },
}

changelog

0.0.1

first release

0.0.2

update readme.

0.0.3

remove src/lib, libraries get imported automagically.

0.0.4

require node 13.5.0

0.0.5

update @magic-libraries/json

0.0.6

bump required node version

0.0.7

bump required node version to 14.2.0

0.0.8
  • bump required node version to 14.15.4
  • update dependencies
0.0.9
  • bugfix: db.get used undefined "res" variable
  • update dependencies and add tests
  • use store.hasOwnProperty to check for values to allow false, undefined and null to be saved and read
0.0.10
  • update dependencies
0.0.11
  • update dependencies
0.0.12 - unreleased

...

Packages

No packages published