README
@magic-libraries/db
localstorage backed client key value database for @magic
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 - unreleased
...