mercantile
v3.0.0
Published
******
Downloads
10
Readme
This module is provided on behalf of the
Rhetorically Elloquent Advanced Development Moves Ensemble
for the pursuit of intergalactic mercantile diplomas.
mercantile
literature
This is a database that exists while a browser page is open.
It doesn't interface with cookies, localStorage, etc.
[tcsh] yarn add mercantile
javascript
import { make_store } from 'mercantile'
const store = await make_store ({
warehouse: async function () {
// This function is called once at startup.
return {
status: 7
}
},
moves: {
async activity_1 (
{ change, warehouse },
{ numeral }
) {
let status = (await warehouse ()).status
await change ("status", numeral)
return "good";
}
},
once_at: {
async start ({ moves, warehouse }) {
// This function is called once at startup.
console.log ("start function called")
},
async demo ({ moves, warehouse }) {
// This function is called once at demolition.
console.log ("start function called")
}
}
})
/*
store monitoring:
notes:
The monitor function is called once when
setup, with "inaugural" == true.
The monitor function is called every time
an activity calls "change", such as:
await change ("status", 998)
*/
const monitor = store.monitor (({ inaugural, field }) => {
const warehouse = store.warehouse ()
console.log ('monitor function', { inaugural, field, warehouse })
})
monitor.stop ()
//
// moves
const activity_1_proceeds = await store.moves.activity_1 ({ numeral: 10 })
vue 3 (with vite) usage
'@/warehouses/palette/index.js'
import { make_store } from 'mercantile'
export let palette_store;
export const create_palette_store = async function () {
palette_store = await make_store ({
warehouse: async function () {
const name = "1"
const palettes = Object.freeze ({
"dark": Object.freeze ({
1: "#111",
2: "#eee"
}),
"light": Object.freeze ({
1: "#eee",
2: "#111"
})
})
return {
name,
palette: palettes [ name ],
palettes
}
},
moves: {
/*
await palette_store.moves.change_palette ("light")
*/
async change_palette ({ change, warehouse }, name) {
let palettes = (await warehouse ()).palettes
await change ("palette", palettes [ name ])
await change ("name", name)
}
},
once_at: {
async start () {}
}
})
})
'@/src/main.js'
import { createApp } from 'vue'
import { create_palette_store } from '@/warehouses/palette'
await Promise.all ([
create_palette_store ()
])
// const app = createApp ()
// app.mount ('#app')
'@/decor/item 1.vue'
import { palette_store } from '@/warehouses/palette'
/*
sequence:
beforeCreate
data
created
beforeMount
mounted
beforeUnmount
unmounted
*/
export default {
data () {
return {
palette: palette_store.warehouse ("palette")
}
},
created () {
this.palette_store_monitor = palette_store.monitor (({ inaugeral, field }) => {
this.palette = palette_store.warehouse ("palette")
})
},
beforeUnmount () {
this.palette_store_monitor.stop ()
}
}