3.0.0 • Published 2 years ago

mercantile v3.0.0

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
2 years ago

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 ()
	}
}

1.0.8

2 years ago

1.0.7

2 years ago

3.0.0

2 years ago

2.0.0

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago