New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

node-red-contrib-mock-cli

Package Overview
Dependencies
Maintainers
0
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-red-contrib-mock-cli

Allows running Node-RED modules from command-line.

latest
Source
npmnpm
Version
1.4.3
Version published
Weekly downloads
18
28.57%
Maintainers
0
Weekly downloads
 
Created
Source

node-red-contrib-mock-cli

This is a Node.js module to allow running a single Node-RED node from command-line, and pipe one to another, using a similar flow than what would be done in the Node-RED graphical interface.

GitHub Workflow Status npm

NPM statistics

Originally made in December 2019 by Alexandre Alapetite at the Alexandra Institute for the SynchroniCity European project.

License: MIT

See examples of use in node-red-contrib-json-multi-schema, node-red-contrib-chunks-to-lines, node-red-http-basic-auth.

Usage

Add an entry file index.js (or another name) to your Node-RED node, next to a package.json that contains a structure like { "node-red": {"node-type": "node-type.js"} }:

const RED = require('node-red-contrib-mock-cli');
const noderedNode = RED.load(require.main);
if (noderedNode) {
	//noderedNode.*	//Access to the Node-RED node instance
	RED.run();
} else {
	console.error('Error loading Node-RED node!');
}

One can then invoke the node from command-line, passing the node type first, and then some optional node properties in JSON format:

node ./index.js node-type --firstProperty='{"Some":"JSON"}' --secondProperty='"Some text"' --thirdProperty='123'

Properties of configuration nodes can be specified using a dot such as:

node ./index.js node-type --server.url='"https://example.net/"' --server.username='"Alice"'

Example

Replace test.js by the name of your entry file (e.g. index.js), and test-node by the name of the type of your node.

printf '{"payload":3} \n {"payload":7}' | node ./test.js test-node --multiplyBy='5'

Outputs:

{"payload":15}
{"payload":35}

JSON in Node-RED format

The command expects JSON messages with a Node-RED structure {"payload":"Example"} from standard input, one line per message.

jq may be used to break down and format a standard payload into a Node-RED payload:

For instance if the input is a list of observations wrapped into a JSON array:

jq -c '.[] | {"payload":.}'

The command outputs JSON messages with a Node-RED structure to standard output, one line per message.

See some examples of inputs and outputs in node-red-contrib-json-multi-schema.

Standard outputs

Only the Node-RED JSON payload is emitted on standard-output (STDOUT), while all other messages and errors are on the standard-error (STDERR).

Advanced usage

It is possible to catch the node events { debug, error, log } to override the default behaviour (which is to write to standard-error):

noderedNode.on('debug', msg => console.warn('Caught event: ' + msg));

Limitations

This module does not have the ambition of exposing the full Node-RED functionality, but instead focuses on simple cases, providing a tiny and efficient layer without any dependency. So for more advanced unit testing, and if requiring the full Node-RED is fine, then check the official node-red-node-test-helper instead of this module.

Keywords

CLI

FAQs

Package last updated on 02 Aug 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts