@totallyinformation/node-red-contrib-drayton-wiser
Version:
Easily create data-driven web UI's for Node-RED using any (or no) front-end library.
381 lines (363 loc) • 20.7 kB
JavaScript
// @ts-nocheck
/* eslint-disable no-irregular-whitespace */
/** Define typedefs for linting and JSDoc/ts checks - does not actually contain live code
*
* Copyright (c) 2022 Julian Knight (Totally Information)
* https://it.knightnet.org.uk, https://github.com/TotallyInformation/node-red-contrib-uibuilder
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict'
/** editorRED
* typedef {object} editorRED The Node-RED core object available to a custom node's .html file
*
*/
/** runtimeSettings - See settings.js for static settings.
* @typedef {object} runtimeSettings Static and Dynamic settings for Node-RED runtime
*
* @property {string} uiPort The port used by Node-RED (default=1880)
* @property {string} uiHost The host IP used by Node-RED (default=0.0.0.0)
* @property {string} userDir The userDir folder
* @property {string} httpNodeRoot Optional base URL. All user url's will be under this. Default empty string.
* @property {object} FunctionGlobalContext Add values, Functions, packages to the Global context variable store.
* @property {Function} mqttReconnectTime : [Getter/Setter],
* @property {Function} serialReconnectTime : [Getter/Setter],
* @property {Function} debugMaxLength : [Getter/Setter],
* @property {Function} debugUseColors : [Getter/Setter],
* @property {string} flowFile : [Getter/Setter],
* @property {Function} flowFilePretty : [Getter/Setter],
* @property {string} credentialSecret : [Getter/Setter],
* @property {string} httpAdminRoot : [Getter/Setter],
* @property {string} httpStatic : [Getter/Setter],
* @property {Function} adminAuth : [Getter/Setter],
* @property {Function} httpNodeMiddleware : [Getter/Setter],
* @property {Function} httpAdminMiddleware : [Getter/Setter],
* @property {Function} httpServerOptions : [Getter/Setter],
* @property {Function} webSocketNodeVerifyClient : [Getter/Setter],
* @property {Function} exportGlobalContextKeys : [Getter/Setter],
* @property {Function} contextStorage : [Getter/Setter],
* @property {Function} editorTheme : [Getter/Setter],
* @property {string} settingsFile : [Getter/Setter],
* @property {string} httpRoot : [Getter/Setter],
* @property {Function} disableEditor : [Getter/Setter],
* @property {Function} httpAdminAuth : [Getter/Setter],
* @property {Function} httpNodeAuth : [Getter/Setter],
* @property {object|Function} [https] If present, https will be used for ExpressJS servers.
*
* @property {object} [uibuilder] Optional uibuilder specific Node-RED settings
* @property {number} [uibuilder.port] Port number if uib is using its own ExpressJS instance
* @property {string} [uibuilder.uibRoot] Folder name that will hold all uib runtime and instance folders
* @property {('http'|'https')} [uibuilder.customType] Connection type - only if using custom ExpressJS instance
* @property {object|Function} [uibuilder.https] Override https server settings (key/cert) - if not specified, uses main NR https prop
* @property {object} [uibuilder.sioOptions] Override Socket.IO options if desired. See https://socket.io/docs/v4/server-options/
*
* @property {string} coreNodesDir Folder containing Node-RED core nodes
* @property {string} version Node-RED version
*
* @property {object} logging Controls the type and amount of logging output
* @property {object} logging.console Controls output levels and types to the console log
* @property {string} logging.console.level What level of output? (fatal, error, warn, info, debug, trace)
* @property {boolean} logging.console.metrics Should metrics also be shown?
* @property {boolean} logging.console.audit Should audit also be shown?
*
* @property {Function} get Get dynamic settings. NB: entries in settings.js are read-only and shouldn't be read using RED.settings.get, that is only for settings that can change in-flight.
* @property {Function} set Set dynamic settings
* @property {Function} delete .
* @property {Function} available .
*
* @property {Function} registerNodeSettings : [Function: registerNodeSettings],
* @property {Function} exportNodeSettings : [Function: exportNodeSettings],
* @property {Function} enableNodeSettings : [Function: enableNodeSettings],
* @property {Function} disableNodeSettings : [Function: disableNodeSettings],
*
* @property {Function} getUserSettings : [Function: getUserSettings],
* @property {Function} setUserSettings : [Function: setUserSettings],
*/
/** runtimeLogging
* @typedef {object} runtimeLogging Logging. Levels that are output to the Node-RED log are controlled by the logging.console.level setting in settings.js
* @property {Function} fatal Lvel 0. Lowest level, things that have broken Node-RED only.
* @property {Function} error Level 1. Copy is sent to Editor debug panel as well as error log.
* @property {Function} warn Level 2.
* @property {Function} info Level 3.
* @property {Function} debug Level 4.
* @property {Function} trace Level 5. Very verbose output. Should tell the operator everything that is going on.
* @property {Function} metric Log metrics (timings)
* @property {Function} audit Audit log
* @property {Function} addHandler Adds a log handler
* @property {Function} removeHandler Removes a log handler
*/
/** runtimeNodes
* @typedef {object} runtimeNodes Gives access to other active nodes in the flows.
* @property {Function} registerType Register a new type of node to Node-RED.
* @property {Function} createNode Create a node instance (called from within registerType Function).
* @property {Function} getNode Get a reference to another node instance in the current flows. Can then access its properties.
* @property {Function} eachNode .
* @property {Function} addCredentials .
* @property {Function} getCredentials .
* @property {Function} deleteCredentials .
*/
/** runtimeRED
* @typedef {object} runtimeRED The core Node-RED runtime object
* @property {expressApp} httpAdmin Reference to the ExpressJS app for Node-RED Admin including the Editor
* @property {expressApp} httpNode Reference to the ExpressJS app for Node-RED user-facing nodes including http-in/-out and Dashboard
* @property {object} server Node.js http(s) Server object
* @property {runtimeLogging} log Logging.
* @property {runtimeNodes} nodes Gives access to other active nodes in the flows.
* @property {runtimeSettings} settings Static and Dynamic settings for Node-RED runtime
*
* @property {Function} version Get the Node-RED version
* @property {Function} require : [Function: requireModule],
* @property {Function} comms : { publish: [Function: publish] },
* @property {Function} library : { register: [Function: register] },
* @property {Function} auth : { needsPermission: [Function: needsPermission] },
*
* @property {object} events Event handler object
* @property {Function} events.on Event Listener Function. Types: 'nodes-started', 'nodes-stopped'
* @property {Function} events.once .
* @property {Function} events.addListener .
*
* @property {object} hooks .
* @property {Function} hooks.has .
* @property {Function} hooks.clear .
* @property {Function} hooks.add .
* @property {Function} hooks.remove .
* @property {Function} hooks.trigger .
*
* @property {object} util .
* @property {Function} util.encodeobject : [Function: encodeobject],
* @property {Function} util.ensurestring : [Function: ensurestring],
* @property {Function} util.ensureBuffer : [Function: ensureBuffer],
* @property {Function} util.cloneMessage : [Function: cloneMessage],
* @property {Function} util.compareobjects : [Function: compareobjects],
* @property {Function} util.generateId : [Function: generateId],
* @property {Function} util.getMessageProperty : [Function: getMessageProperty],
* @property {Function} util.setMessageProperty : [Function: setMessageProperty],
* @property {Function} util.getobjectProperty : [Function: getobjectProperty],
* @property {Function} util.setobjectProperty : [Function: setobjectProperty],
* @property {Function} util.evaluateNodeProperty : [Function: evaluateNodeProperty],
* @property {Function} util.normalisePropertyExpression : [Function: normalisePropertyExpression],
* @property {Function} util.normaliseNodeTypeName : [Function: normaliseNodeTypeName],
* @property {Function} util.prepareJSONataExpression : [Function: prepareJSONataExpression],
* @property {Function} util.evaluateJSONataExpression : [Function: evaluateJSONataExpression],
* @property {Function} util.parseContextStore : [Function: parseContextStore]
*/
/** runtimeNode
* @typedef {object} runtimeNode Local copy of the node instance config + other info
* @property {Function} send Send a Node-RED msg to an output port
* @property {Function} done Dummy done Function for pre-Node-RED 1.0 servers
* @property {Function} context get/set context data. Also .flow and .global contexts
* @property {Function} on Event listeners for the node instance ('input', 'close')
* @property {Function} removeListener Event handling
* @property {Function} error Error log output, also logs to the Editor's debug panel
* @property {object=} credentials Optional secured credentials
* @property {object=} name Internal.
* @property {object=} id Internal. uid of node instance.
* @property {object=} type Internal. Type of node instance.
* @property {object=} z Internal. uid of ???
* @property {[Array<string>]=} wires Internal. Array of Array of strings. The wires attached to this node instance (uid's)
*/
/** runtimeNodeConfig
* @typedef {object} runtimeNodeConfig Configuration of node instance. Will also have Editor panel's defined variables as properties.
* @property {object=} id Internal. uid of node instance.
* @property {object=} type Internal. Type of node instance.
* @property {object=} x Internal
* @property {object=} y Internal
* @property {object=} z Internal
* @property {object=} wires Internal. The wires attached to this node instance (uid's)
*/
/** wiserNode1
* @typedef {object} wiserNode1 Local copy of the node instance config + other info
* @property {string} name only used for labelling the node in the flow
* @property {string} host host ip address of Wiser Controller
* @property {string} secret Wiser Controller access secret
* @property {NodeJS.Timer} monitor Reference to active monitor interval timer
*/
/** wiserModVar1 - Definition of the wiser node's module config object
* @typedef {object} wiserModVar1 Definition of the wiser node's module config object
* @property {runtimeRED} RED Reference to the Node-RED runtime object
* @property {string} nodeName Name of the node
*/
/** wiserListenNode1
* @typedef {object} wiserListenNode1 Local copy of the node instance config + other info
* @property {string} name only used for labelling the node in the flow
* @property {string} eventname Name of the wiser/ event to listen for
*/
/** wiserListenNodeConfig1
* @typedef {object} wiserListenNodeConfig1 Local copy of the node instance config + other info
* @property {string} name only used for labelling the node in the flow
* @property {string} eventname Name of the wiser/ event to listen for
*/
/** wiserListenModVar1 - Definition of the wiser node's module config object
* @typedef {object} wiserListenModVar1 Definition of the wiser node's module config object
* @property {runtimeRED} RED Reference to the Node-RED runtime object
* @property {string} nodeName Name of the node
*/
// ==== vvv These need some work vvv ==== //
/** ExpressJS App
* @typedef {object} expressApp ExpessJS `app` object
* @property {object} _events : [object: null prototype] { mount: [Function: onmount] },
* @property {number} _eventsCount : 1,
* @property {number} _maxListeners : undefined,
* @property {Function} setMaxListeners : [Function: setMaxListeners],
* @property {Function} getMaxListeners : [Function: getMaxListeners],
* @property {Function} emit : [Function: emit],
* @property {Function} addListener : [Function: addListener],
* @property {Function} on : [Function: addListener],
* @property {Function} prependListener : [Function: prependListener],
* @property {Function} once : [Function: once],
* @property {Function} prependOnceListener : [Function: prependOnceListener],
* @property {Function} removeListener : [Function: removeListener],
* @property {Function} off : [Function: removeListener],
* @property {Function} removeAllListeners : [Function: removeAllListeners],
* @property {Function} listeners : [Function: listeners],
* @property {Function} rawListeners : [Function: rawListeners],
* @property {Function} listenerCount : [Function: listenerCount],
* @property {Function} eventNames : [Function: eventNames],
* @property {Function} init : [Function: init],
* @property {Function} defaultConfiguration : [Function: defaultConfiguration],
* @property {Function} lazyrouter : [Function: lazyrouter],
* @property {Function} handle : [Function: handle],
* @property {Function} use : [Function: use],
* @property {Function} route : [Function: route],
* @property {Function} engine : [Function: engine],
* @property {Function} param : [Function: param],
* @property {Function} set : [Function: set],
* @property {Function} path : [Function: path],
* @property {Function} enabled : [Function: enabled],
* @property {Function} disabled : [Function: disabled],
* @property {Function} enable : [Function: enable],
* @property {Function} disable : [Function: disable],
* @property {Function} acl : [Function (anonymous)],
* @property {Function} bind : [Function (anonymous)],
* @property {Function} checkout : [Function (anonymous)],
* @property {Function} connect : [Function (anonymous)],
* @property {Function} copy : [Function (anonymous)],
* @property {Function} delete : [Function (anonymous)],
* @property {Function} get : [Function (anonymous)],
* @property {Function} head : [Function (anonymous)],
* @property {Function} link : [Function (anonymous)],
* @property {Function} lock : [Function (anonymous)],
* @property {Function} 'm-search' : [Function (anonymous)],
* @property {Function} merge : [Function (anonymous)],
* @property {Function} mkactivity : [Function (anonymous)],
* @property {Function} mkcalendar : [Function (anonymous)],
* @property {Function} mkcol : [Function (anonymous)],
* @property {Function} move : [Function (anonymous)],
* @property {Function} notify : [Function (anonymous)],
* @property {Function} options : [Function (anonymous)],
* @property {Function} patch : [Function (anonymous)],
* @property {Function} post : [Function (anonymous)],
* @property {Function} pri : [Function (anonymous)],
* @property {Function} propfind : [Function (anonymous)],
* @property {Function} proppatch : [Function (anonymous)],
* @property {Function} purge : [Function (anonymous)],
* @property {Function} put : [Function (anonymous)],
* @property {Function} rebind : [Function (anonymous)],
* @property {Function} report : [Function (anonymous)],
* @property {Function} search : [Function (anonymous)],
* @property {Function} source : [Function (anonymous)],
* @property {Function} subscribe : [Function (anonymous)],
* @property {Function} trace : [Function (anonymous)],
* @property {Function} unbind : [Function (anonymous)],
* @property {Function} unlink : [Function (anonymous)],
* @property {Function} unlock : [Function (anonymous)],
* @property {Function} unsubscribe : [Function (anonymous)],
* @property {Function} all : [Function: all],
* @property {Function} del : [Function (anonymous)],
* @property {Function} render : [Function: render],
* @property {Function} listen : [Function: listen],
* @property {Function} request : IncomingMessage { app: [Circular *1] },
* @property {Function} response : ServerResponse { app: [Circular *1] },
*
* @property {object} cache : {},
* @property {object} engines : {},
*
* @property {{
* 'x-powered-by': boolean,
* etag: string,
* "etag fn": Function,
* env: string,
* 'query parser' : string,
* 'query parser fn' : Function,
* 'subdomain offset': number,
* view: Function,
* views: string,
* 'jsonp callback name' : string
* }} settings ExpressJS App Settings
*
* property {boolean} settings.'x-powered-by' : true,
* property {string} settings.etag : 'weak',
* property {Function} settings."etag fn" : [Function: generateETag],
* property {string} settings.env : 'development',
* property {string} settings.'query parser' : 'extended',
* property {Function} settings.'query parser fn' : [Function: parseExtendedQuerystring],
* property {number} settings.'subdomain offset' : 2,
* property {Function} settings.view : [Function: View],
* property {string} settings.views : 'C:\\src\\nr2\\views',
* property {string} settings.'jsonp callback name' : 'callback'
*
* @property {object} locals : [object: null prototype] { settings: [object] },
* @property {string} mountpath : '/nr/',
*
* @property {Function} parent : [Function: app] {
* @property {Function} parent._events : [object: null prototype],
* @property {Function} parent._eventsCount : 1,
* @property {Function} parent._maxListeners : undefined,
* @property {Function} parent.setMaxListeners : [Function: setMaxListeners],
* @property {Function} parent.getMaxListeners : [Function: getMaxListeners],
* @property {Function} parent.emit : [Function: emit],
* @property {Function} parent.addListener : [Function: addListener],
* @property {Function} parent.on : [Function: addListener],
* @property {Function} parent.prependListener : [Function: prependListener],
* @property {Function} parent.once : [Function: once],
* @property {Function} parent.prependOnceListener : [Function: prependOnceListener],
* @property {Function} parent.removeListener : [Function: removeListener],
* @property {Function} parent.off : [Function: removeListener],
* @property {Function} parent.removeAllListeners : [Function: removeAllListeners],
* @property {Function} parent.listeners : [Function: listeners],
* @property {Function} parent.rawListeners : [Function: rawListeners],
* @property {Function} parent.listenerCount : [Function: listenerCount],
* @property {Function} parent.eventNames : [Function: eventNames],
* @property {Function} parent.init : [Function: init],
* @property {Function} parent.defaultConfiguration : [Function: defaultConfiguration],
* @property {Function} parent.lazyrouter : [Function: lazyrouter],
* @property {Function} parent.handle : [Function: handle],
* @property {Function} parent.use : [Function: use],
* @property {Function} parent.route : [Function: route],
* @property {Function} parent.engine : [Function: engine],
* @property {Function} parent.param : [Function: param],
* @property {Function} parent.set : [Function: set],
* @property {Function} parent.path : [Function: path],
* @property {Function} parent.enabled : [Function: enabled],
* @property {Function} parent.disabled : [Function: disabled],
* @property {Function} parent.enable : [Function: enable],
* @property {Function} parent.disable : [Function: disable],
* @property {Function} parent.acl : [Function (anonymous)],
* @property {Function} parent.bind : [Function (anonymous)],
* @property {Function} parent.checkout : [Function (anonymous)],
* @property {Function} parent.connect : [Function (anonymous)],
* @property {Function} parent.copy : [Function (anonymous)],
* @property {Function} parent.delete : [Function (anonymous)],
* @property {Function} parent.get : [Function (anonymous)],
* @property {Function} parent.head : [Function (anonymous)],
* @property {Function} parent.link : [Function (anonymous)],
* @property {Function} parent.lock : [Function (anonymous)],
* @property {Function} parent.'m-search' : [Function (anonymous)],
* @property {Function} parent.merge : [Function (anonymous)],
* @property {Function} parent.mkactivity : [Function (anonymous)],
*
* @property {Function} locals : [object: null prototype],
* @property {Function} mountpath : '/',
* @property {Function} _router : [Function]
*/
module.exports = {}