šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Sign inDemoInstall
Socket

@servisbot/npm-sb-flow-validation

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@servisbot/npm-sb-flow-validation

Validates node red flows

1.2.1
latest
npm
Version published
Maintainers
1
Created
Source

npm-sb-flow-validation

Determines wether a flow contains a cycle.

Get started

Install the npm module

npm install --save @servisbot/npm-sb-flow-validation

Implement the code

const detectCyclesInFlow = require('@servisbot/npm-sb-flow-validation');

//  Expects the following flow structure, which is the Data object from the worker
const flow = { worker.Data }

//  Returns true / false
const result = detectCyclesInFlow(flow);
console.log('Has Cycles : ', !!result); // will give a true/false value
console.log('Found cycle at node id', result) // if the above is true, result will be the vertex

Tests

Run all test suites

npm run test

Run unit tests

npm run test-unit

Run integration tests

npm run test-integration

Black list

If you do not want to detect cycles that contain specific nodes eg. input node, you can add the node type to the /src/nodeBlacklist.js file and the node will be ignored.

Eg. use case: dialog node -> input node -> dialog node, this is regarded as a valid cycle and will be ignored as it's currently declared within the blacklist.

What this will detect

Designed to detect cycles within multiple flows and subflows.

Sample flows that contain cycles

  • Flow: start -> dialogA -> dialogB -> dialogA
  • Flow: start -> dialogA -> SubFlow -> dialogB Subflow: input -> dialogC -> dialogD -> dialogC -> output
  • Flow: start -> dialogA -> Flow2 Flow2: input -> dialogB -> output -> Flow1
  • Flow: start -> dialogA -> SubFlow -> dialogA Subflow: input -> dialogB -> output

Sample flows that do not contain cycles

  • FLow: start -> dialogA -> Input -> dialogA
  • Flow: start -> dialogA -> input -> Flow2 Flow2: input -> dialogB -> output -> Flow1
  • Flow: start -> dialogA -> SubFlow -> dialogB Subflow: input -> dialogC -> Input -> dialogC -> output

FAQs

Package last updated on 26 Apr 2021

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