0.1.6 • Published 5 months ago

@medical-district/system v0.1.6

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

This module is provided on behalf of the\ Rhetorically Elloquent Advanced Development Moves Ensemble\ for the improvement of medical districts.


medical district, system

System

literature

This is a database that exists while a browser page is open.
It doesn't interface with cookies, localStorage, etc. 

[tcsh] yarn add @medical-district/system

javascript

import { make_system } from '@medical-district/system'

function is_equal (v1, v2) {
	if (v1 === v2) {
		return true;
	}
	throw new Error (`v1 '${ v1 }' does not equal v2 '${ v2 }'`)
}


/*
	These functions are called only once,
	in this sequence, after "make_system" is called:
	
		warehouse
		once_at.start
*/
const system = await make_system ({
	warehouse: async function () {
		console.log ("warehouse function called")
		
		return {
			status: 7
		}
	},

	activities: {
		async activity_1 (
			{ change, warehouse }, 
			{ numeral }
		) {
			let status = (await warehouse ()).status			
			await change ("status", status * numeral)
			
			return "good";
		}
	},
	
	once_at: {
		async start ({ activities, warehouse }) {
			console.log ("start function called")					
		}
	}			
})	

/*
	system 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 = system.monitor (({ inaugural, field }) => {
	const warehouse = system.warehouse ()

	console.log ('monitor function', { inaugural, field, warehouse })
})


//
// After subscribing, the subscriber count is 1
is_equal (system.monitor_count (), 1)


//
// activities
const activity_1_proceeds = await system.activities.activity_1 ({ numeral: 10 })
is_equal (activity_1_proceeds, "good") 
is_equal (system.warehouse ().status, 70) 


monitor.stop ()
is_equal (system.monitor_count (), 0)

vue 3 (with vite) usage

'@/warehouses/palette/index.js'

import { make_system } from '@medical-district/system'

export let palette_system;
export const create_palette_system = async function () {
	palette_system = await make_system ({
		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
			}
		},
		
		activities: {
			/*
				await palette_system.activities.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_system } from '@/warehouses/palette'

await Promise.all ([
	create_palette_system ()
])

// const app = createApp ()
// app.mount ('#app')

'@/decor/item 1.vue'

import { palette_system } from '@/warehouses/palette'
	
	
/*
	SEQUENCE:
		beforeCreate
		data
		created
		beforeMount
		mounted
		
		beforeUnmount
		unmounted
*/
export default {
	data () {
		return {
			palette: palette_system.warehouse ("palette")
		}
	},
	created () {		
		this.palette_system_monitor = palette_system.monitor (({ inaugeral, field }) => {
			this.palette = palette_system.warehouse ("palette")
			
			
		})		
	},
	beforeUnmount () {
		this.palette_system_monitor.stop ()
	}
}

0.1.4

5 months ago

0.1.6

5 months ago

0.1.3

5 months ago

0.1.2

6 months ago

0.1.1

6 months ago

0.1.0

6 months ago

0.0.4

7 months ago

0.0.3

7 months ago

0.0.2

7 months ago

0.0.1

7 months ago