🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
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 - npm Package Compare versions

Comparing version

to
1.0.2

6

.scannerwork/report-task.txt
organization=servisbot
projectKey=servisbot:npm-sb-flow-validation
serverUrl=https://sonarcloud.io
serverVersion=7.7.0.22010
serverVersion=7.7.0.22107
dashboardUrl=https://sonarcloud.io/dashboard?id=servisbot%3Anpm-sb-flow-validation
ceTaskId=AWkG4ZhsII5E_8RgclJ8
ceTaskUrl=https://sonarcloud.io/api/ce/task?id=AWkG4ZhsII5E_8RgclJ8
ceTaskId=AWkKbMgZzuesSb3rwBbI
ceTaskUrl=https://sonarcloud.io/api/ce/task?id=AWkKbMgZzuesSb3rwBbI
{
"name": "@servisbot/npm-sb-flow-validation",
"version": "1.0.1",
"version": "1.0.2",
"description": "Validates node red flows",

@@ -5,0 +5,0 @@ "main": "src/index.js",

# npm-sb-flow-validation
Validates a flow
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
const flow = { body: [...flow nodes] }
// Returns true / false
const hasCycles = detectCyclesInFlow(flow);
console.log('Has Cycles : ', hasCycles);
```
### 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