Nail Polish Makeover

    @magic-libraries/db

    0.0.11 • Public • Published

    @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

    ...

    Install

    npm i @magic-libraries/db

    DownloadsWeekly Downloads

    0

    Version

    0.0.11

    License

    AGPL-3.0

    Unpacked Size

    40.8 kB

    Total Files

    4

    Last publish

    Collaborators

    • jascha