UNPKG

node-red-contrib-xstate-machine

Version:

Xstate-based state machine implementation using state-machine-cat visualization for node red.

50 lines (40 loc) 1.36 kB
const path = require('path'); const { getRenderers } = require('../src/smcat-render'); const assert = require('assert'); var RED = {}; function get(property) { let vals = RED.settings.get('smxstate'); if( vals && vals.settings && vals.settings.hasOwnProperty(property) ) return vals.settings[property]; else return null; } async function set(property,value) { let vals = RED.settings.get('smxstate') || {}; let settings = vals.settings || {}; Object.assign( settings, { [property]: value }); vals.settings = settings; return await RED.settings.set('smxstate', vals); } async function init(pRED) { RED = pRED; let settings = { renderTimeoutMs: 20000, renderer: 'smcat' } let vals = RED.settings.get('smxstate') || {}; let savedSettings = vals.settings; // Check if values exist, if not, set defaults if( savedSettings ) Object.assign(settings, savedSettings); // Set available renderers settings.availableRenderers = await getRenderers(); try { assert.deepEqual(savedSettings, settings) } catch(err) { let newVals = Object.assign(vals, { settings }); await RED.settings.set('smxstate', newVals); } } module.exports = { get, set, init };