@magic-libraries/db
Version:
localstorage backed client key value database for @magic.
149 lines (119 loc) • 3.79 kB
Markdown
localstorage backed client key value database for
[@magic](https://magic.github.io/core)
[](https://magic-libraries.github.io/db)
[![NPM version][npm-image]][npm-url]
[![Linux Build Status][travis-image]][travis-url]
[![Windows Build Status][appveyor-image]][appveyor-url]
[![Coverage Status][coveralls-image]][coveralls-url]
[![Greenkeeper badge][greenkeeper-image]][greenkeeper-url]
[![Known Vulnerabilities][snyk-image]][snyk-url]
```bash
npm install --save-exact @magic-libraries/db
```
in a page/component, just use the lib.db effects.
localstorage is synchronous, so we do not even have to await.
see [ExampleStore](https://github.com/magic-libraries/db/tree/master/example/assets/ExampleStore.mjs) for a reference implementation,
and [@magic-modules/gdpr](https://github.com/magic-modules/gdpr) for an actual usecase.
```javascript
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,
}
},
},
}
```
first release
update readme.
remove src/lib, libraries get imported automagically.
require node 13.5.0
update @magic-libraries/json
bump required node version
bump required node version to 14.2.0
* bump required node version to 14.15.4
* update dependencies
* 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
* update dependencies
* update dependencies
...
[]: https://img.shields.io/npm/v/@magic-libraries/db.svg
[]: https://www.npmjs.com/package/@magic-libraries/db
[]: https://img.shields.io/travis/com/magic-libraries/db/master
[]: https://travis-ci.com/magic-libraries/db
[]: https://img.shields.io/appveyor/ci/magiclibraries/db/master.svg
[]: https://ci.appveyor.com/project/magiclibraries/db/branch/master
[]: https://coveralls.io/repos/github/magic-libraries/db/badge.svg
[]: https://coveralls.io/github/magic-libraries/db
[]: https://badges.greenkeeper.io/magic-libraries/db.svg
[]: https://badges.greenkeeper.io/magic-libraries/db.svg
[]: https://snyk.io/test/github/magic-libraries/db/badge.svg
[]: https://snyk.io/test/github/magic-libraries/db