# node-red-contrib-flowgen

> flow generator for Node-RED

Latest version **0.1.5** (published 2018-07-29) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install node-red-contrib-flowgen
pnpm add node-red-contrib-flowgen
yarn add node-red-contrib-flowgen
bun add node-red-contrib-flowgen
```

Provides the command `flowgen`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.5 |
| Published | 2018-07-29 |
| First published | 2018-07-15 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 44.9 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | tkhr.sait@gmail.com |
| Maintainers | tkhr.sait |

## Links

- npm: https://www.npmjs.com/package/node-red-contrib-flowgen
- Repository: https://github.com/tkhr-sait/node-red-contrib-flowgen
- Homepage: https://github.com/tkhr-sait/node-red-contrib-flowgen#readme
- Issues: https://github.com/tkhr-sait/node-red-contrib-flowgen/issues
- npm.io page: https://npm.io/package/node-red-contrib-flowgen

## Dependencies (4)

- [argparse](https://npm.io/package/argparse.md) ^1.0.10
- [node-red](https://npm.io/package/node-red.md) ^0.18.7
- [dateformat](https://npm.io/package/dateformat.md) ^3.0.3
- [swagger-parser](https://npm.io/package/swagger-parser.md) ^5.0.0

## Recent versions

- 0.1.5 (latest) — 2018-07-29
- 0.1.4 — 2018-07-25
- 0.1.3 — 2018-07-23
- 0.1.2 — 2018-07-23
- 0.1.1 — 2018-07-23
- 0.1.0 — 2018-07-22
- 0.0.9 — 2018-07-22
- 0.0.8 — 2018-07-21
- 0.0.7 — 2018-07-20
- 0.0.6 — 2018-07-19
- 0.0.5 — 2018-07-19
- 0.0.4 — 2018-07-18
- 0.0.3 — 2018-07-18
- 0.0.2 — 2018-07-18
- 0.0.1 — 2018-07-15

## README

# node-red-contrib-flowgen

[![Build Status](https://travis-ci.org/tkhr-sait/node-red-contrib-flowgen.svg?branch=master)](https://travis-ci.org/tkhr-sait/node-red-contrib-flowgen)

Overview

## Description

flow generator for Node-RED.  
for BFF(Backends For Frontends) skelton or web api mock(limited...)

## Requirement

node-red  
argparse  
swagger-parser  
dateformat  

## Install

```
npm i -g node-red-contrib-flowgen
```

## Usage

```
usage: flowgen [-h] [-v] -i INPUT -o OUTPUT [-f FLOWNAME] [-m] [-V] [-s]

flow generator for Node-RED

Optional arguments:
  -h, --help            Show this help message and exit.
  -v, --version         Show program's version number and exit.
  -i INPUT, --input INPUT
                        swagger.json input
  -o OUTPUT, --output OUTPUT
                        flows.json output
  -f FLOWNAME, --flowName FLOWNAME
                        flowName default: Swagger API
  -m, --merge           merge mode
  -V, --validate        with validation
  -s, --swaggerDocOutput
                        create node-red-node-swagger node

ex)
flowgen -i input -o output

ex)
flowgen -i https://petstore.swagger.io/v2/swagger.json -o /tmp/flows.json

ex) merge
flowgen -i /path/to/swagger.json -o /tmp/flows.json -m

ex) with SwaggerDoc
flowgen -i /path/to/swagger.json -o /tmp/flows.json -m -s

```

## Licence

Apache License 2.0

## Author

[tkhr.sait](https://github.com/tkhr-sait)

## Feature

### flow merge

* 引数 -m/--merge が指定された場合
* 指定されたflowがnode-redのものかcheck.なければtabを作る
* endpoint(url)+method をキーにマージする  

|ケース|既存フロー|生成フロー|動作|
|-----|--------|--------|----|
|変更|有り|有り|変更ありの場合、既存フローにコメント(変更)|
|削除|有り|無し|既存フローにコメント(削除)|
|追加|無し|有り|生成フローにコメント(追加)|

### check modify

* 引数 -m/--merge が指定された場合
* 比較のためのswagger情報はhttp inのoutputLabelsに持つ
* 'http in'ノードのoutputLabelsにswagger定義を入れておき、再生成の際に比較して変更検知

### example

* swagger.jsonの内容をもとにレスポンスを生成。exampleが存在する場合、利用する
* 定義の一番上のステータスコードのレスポンスを出力する
* statusCodeがdefaultの場合、200に置き換える

### node-red-node-swagger

* 引数 -s/--swaggerDocOutput が指定された場合
* swagger.jsonの内容をもとに'http in'ノードの SwaggerDoc を生成する
* ただし、object型は対応していないので生成しない、array型も中途半端となる可能性があるので生成しない
* responseは対応しない(statusCodeのみ対応する)

### http-in Node

* パラメータの受取について

|type    |data          |node-red             |
|--------|--------------|---------------------|
|path    |/url/:hoge    |msg.req.params.hoge  |
|header  |hoge=fuga     |msg.req.headers.hoge |
|query   |/url?hoge=huga|msg.req.query.hoge   |
|formData|{hoge: fuga}  |msg.payload.hoge     |

## Todo

* [x] flow merge  
[x] 仕様整理  
[x] 引数:モード用意。マージ or 上書き  
[x] 既存フロー読み込み  
[x] 既存フローcheck  
[x] 既存フローとswagger付き合わせ  
[x] 振り分け(コメントで「add/del」)  
* [x] output swagger  
[x] 振り分け(コメントで「mod」)  
[x] node-red-node-swaggerのように、既存ノードの拡張をする仕掛けを調査...node-red本体に項目用意してるので真似できない...outputLabelsでやる  
* [x] output example
* [x] node-red-node-swagger
* [x] brush up  
[x] コメント２重表示の防止  
[x] refactoring  
[x] test  
[x] url parameter bugfix  
[x] refactoring2  
[x] test2  
[ ] refactoring3  
[ ] test3

---
_Source: https://npm.io/package/node-red-contrib-flowgen · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
