localstorage backed client key value database for @magic
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 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,
}
},
},
}
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
...