noflo 1.4.3 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ecrc +3 -0
- package/.eslintignore +2 -0
- package/{CHANGES.md → CHANGELOG.md} +527 -527
- package/README.md +1 -1
- package/bin/noflo-cache-preheat +4 -4
- package/components/Graph.d.ts +50 -15
- package/components/Graph.js +94 -68
- package/examples/http/HelloController.js +9 -6
- package/examples/spreadsheet/parse.fbp +3 -3
- package/lib/AsCallback.d.ts +22 -9
- package/lib/AsCallback.js +69 -18
- package/lib/AsComponent.d.ts +1 -1
- package/lib/AsComponent.js +5 -3
- package/lib/BaseNetwork.d.ts +16 -6
- package/lib/BaseNetwork.js +65 -31
- package/lib/BasePort.d.ts +39 -12
- package/lib/BasePort.js +34 -6
- package/lib/Component.d.ts +8 -8
- package/lib/Component.js +23 -20
- package/lib/ComponentLoader.d.ts +3 -4
- package/lib/ComponentLoader.js +9 -10
- package/lib/IP.d.ts +12 -8
- package/lib/IP.js +6 -4
- package/lib/InPort.d.ts +64 -9
- package/lib/InPort.js +72 -13
- package/lib/InternalSocket.d.ts +53 -7
- package/lib/InternalSocket.js +51 -14
- package/lib/LegacyNetwork.d.ts +12 -2
- package/lib/LegacyNetwork.js +5 -5
- package/lib/Network.d.ts +13 -2
- package/lib/Network.js +10 -10
- package/lib/NoFlo.d.ts +48 -13
- package/lib/NoFlo.js +55 -27
- package/lib/OutPort.d.ts +64 -13
- package/lib/OutPort.js +73 -15
- package/lib/Platform.d.ts +1 -1
- package/lib/Platform.js +9 -4
- package/lib/Ports.d.ts +11 -12
- package/lib/Ports.js +8 -4
- package/lib/ProcessInput.d.ts +5 -9
- package/lib/ProcessInput.js +8 -9
- package/lib/ProcessOutput.d.ts +2 -2
- package/lib/ProcessOutput.js +5 -5
- package/lib/loader/NodeJs.d.ts +0 -1
- package/lib/loader/NodeJs.js +152 -161
- package/lib/loader/register.d.ts +1 -1
- package/lib/loader/register.js +8 -4
- package/package.json +25 -16
- package/spec/.eslintrc +5 -2
- package/spec/AsCallback.js +9 -13
- package/spec/AsComponent.js +10 -4
- package/spec/AsPromise.js +38 -0
- package/spec/CommonJS.cjs +10 -0
- package/spec/ComponentLoader.js +19 -7
- package/spec/ESModule.mjs +11 -0
- package/spec/Network.js +32 -11
- package/spec/NetworkSync.js +892 -0
- package/spec/Scoping.js +27 -42
- package/spec/Subgraph.js +6 -11
- package/spec/fixtures/componentloader/components/Output.js +1 -1
- package/spec/fixtures/componentloader/components/Repeat.ts +1 -1
- package/spec/fixtures/componentloader/components/RepeatAsync.coffee +1 -1
- package/spec/fixtures/componentloader/node_modules/example/components/Forward.js +1 -1
- package/spec/fixtures/componentloader/node_modules/example/package.json +1 -1
- package/spec/fixtures/componentloader/package.json +2 -1
- package/spec/fixtures/componentloader/spec/Repeat.yaml +1 -1
- package/spec/utils/inject.js +1 -1
- package/src/.eslintrc +9 -2
- package/src/components/Graph.js +105 -71
- package/src/lib/AsCallback.js +71 -16
- package/src/lib/AsComponent.js +5 -4
- package/src/lib/BaseNetwork.js +48 -15
- package/src/lib/BasePort.js +43 -9
- package/src/lib/Component.js +8 -8
- package/src/lib/ComponentLoader.js +3 -4
- package/src/lib/IP.js +7 -4
- package/src/lib/InPort.js +74 -13
- package/src/lib/InternalSocket.js +49 -9
- package/src/lib/LegacyNetwork.js +2 -2
- package/src/lib/Network.js +2 -2
- package/src/lib/NoFlo.js +43 -13
- package/src/lib/OutPort.js +77 -14
- package/src/lib/Platform.js +9 -4
- package/src/lib/Ports.js +6 -2
- package/src/lib/ProcessInput.js +7 -9
- package/src/lib/ProcessOutput.js +1 -1
- package/src/lib/loader/NodeJs.js +185 -178
- package/src/lib/loader/register.js +2 -2
- /package/{karma.config.js → karma.config.cjs} +0 -0
- /package/{webpack.config.js → webpack.config.cjs} +0 -0
|
@@ -1,30 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [1.5.1] - 2026-06-20
|
|
8
|
+
### Changed
|
|
9
|
+
- NoFlo can now be imported either ES Module or CommonJS
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- Basic smoketests for running from both ESM and CommonJS
|
|
13
|
+
|
|
14
|
+
## [1.5.0] - 2026-06-20
|
|
15
|
+
### Changed
|
|
16
|
+
- Improved using NoFlo directly as ES Module dependency
|
|
17
|
+
|
|
18
|
+
## [1.4.3] - 2020-12-10
|
|
19
|
+
### Changed
|
|
20
|
+
- Improved inport and outport options TypeScript definitions
|
|
21
|
+
|
|
22
|
+
## [1.4.2] - 2020-12-10
|
|
23
|
+
### Changed
|
|
24
|
+
- Made Component and Network option TypeScript definitions easier to extend when subclassing
|
|
25
|
+
|
|
26
|
+
## [1.4.1] - 2020-12-10
|
|
27
|
+
### Changed
|
|
28
|
+
- The `asPromise` function (promisified version of `noflo.asCallback`) now ships with the correct type definition
|
|
29
|
+
|
|
30
|
+
## [1.4.0] - 2020-12-10
|
|
31
|
+
### Changed
|
|
32
|
+
- Asynchronous NoFlo methods (like `createNetwork` and `network.start`) now return Promises. Callbacks are still supported as a compatibility layer.
|
|
33
|
+
- Component `setUp` and `tearDown` can now return a Promise instead of calling the supplied callback
|
|
34
|
+
- Component processing function can now return a Promise instead of calling `sendDone` or `done` (if the Promise resolves to a value, it will be sent out)
|
|
35
|
+
- NoFlo now ships with TypeScript type definitions
|
|
36
|
+
- The `src/lib` folder contains NoFlo as JavaScript Modules. `lib` is the CommonJS version
|
|
37
|
+
- The CommonJS version of NoFlo is now shipped as modern ES2020 instead of babelized ES5. Use Babel in your project if you need compatibility with old JS runtimes
|
|
38
|
+
|
|
39
|
+
## [1.3.0] - 2020-11-23
|
|
40
|
+
### Changed
|
|
41
|
+
- NoFlo `createNetwork` and `asCallback` now accept a `flowtrace` option to pass a [Flowtrace instance](https://github.com/flowbased/flowtrace) for retroactive debugging. Example:
|
|
42
|
+
- NoFlo `createNetwork` now accepts `componentLoader` and `baseDir` via options. Passing them via Graph properties is deprecated
|
|
43
|
+
- NoFlo `createNetwork` now defaults to the non-legacy "network drives graph" mode
|
|
44
|
+
- NoFlo `createNetwork` now only supports the `graph, options, callback` signature, no options given in some other order
|
|
45
|
+
- `noflo.Network` interface has been removed. Use `createNetwork` to instantiate networks
|
|
46
|
+
- CoffeeScript is no longer bundled with NoFlo. Install the CoffeeScript compiler in your project if you need to be able to load CoffeeScript components
|
|
28
47
|
|
|
29
48
|
```javascript
|
|
30
49
|
const { Flowtrace } = require('flowtrace');
|
|
@@ -37,93 +56,104 @@ noflo.createNetwork(myGraph, {
|
|
|
37
56
|
});
|
|
38
57
|
```
|
|
39
58
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
* CoffeeScript is no longer bundled with NoFlo. Install the CoffeeScript compiler in your project if you need to be able to load CoffeeScript components
|
|
59
|
+
## [1.2.7] - 2020-11-13
|
|
60
|
+
### Added
|
|
61
|
+
- Added safeties against trying to load a falsy graph in `asCallback`
|
|
62
|
+
- Added safeties against trying to load unnamed components
|
|
45
63
|
|
|
46
|
-
## 1.2.
|
|
64
|
+
## [1.2.6] - 2020-09-24
|
|
65
|
+
### Fixed
|
|
66
|
+
- Fixed an issue with `getSource` on Node.js
|
|
47
67
|
|
|
48
|
-
|
|
49
|
-
|
|
68
|
+
## [1.2.5] - 2020-09-24
|
|
69
|
+
### Fixed
|
|
70
|
+
- Fixed an issue with deployment automation
|
|
50
71
|
|
|
51
|
-
## 1.2.
|
|
72
|
+
## [1.2.4] - 2020-09-24
|
|
73
|
+
### Changed
|
|
74
|
+
- ComponentLoader `getSource` now returns also component specs when available
|
|
52
75
|
|
|
53
|
-
|
|
76
|
+
## [1.2.3] - 2020-09-17
|
|
77
|
+
### Changed
|
|
78
|
+
- TypeScript components loaded on Node.js now target modern ES6
|
|
54
79
|
|
|
55
|
-
## 1.2.
|
|
80
|
+
## [1.2.2] - 2020-09-17
|
|
81
|
+
### Added
|
|
82
|
+
- Added initial support for components written in TypeScript. Requires the `typescript` module to be installed
|
|
56
83
|
|
|
57
|
-
|
|
84
|
+
### Changed
|
|
85
|
+
- NoFlo ComponentLoader can now tell the supported programming languages with the `getLanguages` method
|
|
86
|
+
- Components written with `setSource` now return the original untranspiled source code with `getSource` also on Node.js
|
|
58
87
|
|
|
59
|
-
## 1.2.
|
|
88
|
+
## [1.2.1] - 2020-09-16
|
|
89
|
+
### Added
|
|
90
|
+
- Added better error messages when trying to write to a non-existing outport in a component
|
|
91
|
+
- Added support for loading subgraph components even if they come from a different version of fbp-graph
|
|
60
92
|
|
|
61
|
-
|
|
93
|
+
## [1.2.0] - 2020-08-28
|
|
94
|
+
### Added
|
|
95
|
+
- Added support for a more standard `noflo.createNetwork(graph, options, callback)` signature, with backwards compatibility for the legacy `noflo.createNetwork(graph, callback, options)` signature
|
|
96
|
+
- Added optional `networkCallback` option for `noflo.asCallback` to provide access to the network instance for debugging purposes
|
|
62
97
|
|
|
63
|
-
|
|
98
|
+
### Changed
|
|
99
|
+
- Ported NoFlo from CoffeeScript to ES6
|
|
64
100
|
|
|
65
|
-
|
|
101
|
+
### Deprecated
|
|
102
|
+
- Deprecated constructing networks with `new noflo.Network`. Use `noflo.createNetwork` instead, with the following options available:
|
|
66
103
|
|
|
67
|
-
|
|
104
|
+
### Removed
|
|
105
|
+
- Removed support for `noflo.WirePattern`. WirePattern has been deprecated since 1.0, and all code using it should be migrated to the latest Process API
|
|
106
|
+
- Removed support for changing component icon and description statically (on class level) at run-time (i.e. `ComponentName::icon = 'new-icon'`). Component icon and description should be set in class constructor or in `getComponent` instead. Changing icon and description for a specific instance (process) is not affected and is fully supported
|
|
68
107
|
|
|
69
|
-
* Added initial support for components written in TypeScript. Requires the `typescript` module to be installed
|
|
70
|
-
* NoFlo ComponentLoader can now tell the supported programming languages with the `getLanguages` method
|
|
71
|
-
* Components written with `setSource` now return the original untranspiled source code with `getSource` also on Node.js
|
|
72
|
-
|
|
73
|
-
## 1.2.1 (September 16th 2020)
|
|
74
|
-
|
|
75
|
-
* Added better error messages when trying to write to a non-existing outport in a component
|
|
76
|
-
* Added support for loading subgraph components even if they come from a different version of fbp-graph
|
|
77
|
-
|
|
78
|
-
## 1.2.0 (August 28th 2020)
|
|
79
|
-
|
|
80
|
-
* Ported NoFlo from CoffeeScript to ES6
|
|
81
|
-
* Deprecated constructing networks with `new noflo.Network`. Use `noflo.createNetwork` instead, with the following options available:
|
|
82
108
|
- `subscribeGraph: true`: Uses `LegacyNetwork` which modifies network topology based on changes in graph. This can cause some types of errors to be silent.
|
|
83
109
|
- `subscribeGraph: false`: Uses `Network`: network topology can be changed with network's methods (`addNode`, `removeEdge`, etc) and will be also written to the graph.
|
|
84
110
|
For backwards compatibility reasons, `subscribeGraph` defaults to `true`. Adapt your applications to use `false` instead and start utilizing Network methods for any changes to a running graph.
|
|
85
|
-
* Added support for a more standard `noflo.createNetwork(graph, options, callback)` signature, with backwards compatibility for the legacy `noflo.createNetwork(graph, callback, options)` signature
|
|
86
|
-
* Removed support for `noflo.WirePattern`. WirePattern has been deprecated since 1.0, and all code using it should be migrated to the latest Process API
|
|
87
|
-
* Removed support for changing component icon and description statically (on class level) at run-time (i.e. `ComponentName::icon = 'new-icon'`). Component icon and description should be set in class constructor or in `getComponent` instead. Changing icon and description for a specific instance (process) is not affected and is fully supported
|
|
88
|
-
* Added optional `networkCallback` option for `noflo.asCallback` to provide access to the network instance for debugging purposes
|
|
89
|
-
|
|
90
|
-
## 1.1.3 (April 12th 2018)
|
|
91
111
|
|
|
92
|
-
|
|
112
|
+
## [1.1.3] - 2018-04-12
|
|
113
|
+
### Fixed
|
|
114
|
+
- Fixed issue with custom component loaders on Node.js
|
|
93
115
|
|
|
94
|
-
## 1.1.2
|
|
116
|
+
## [1.1.2] - 2018-03-24
|
|
117
|
+
### Changed
|
|
118
|
+
- Improved detection of when network finishes to not stop synchronous networks too early
|
|
95
119
|
|
|
96
|
-
|
|
120
|
+
## [1.1.1] - 2018-02-19
|
|
121
|
+
### Fixed
|
|
122
|
+
- Fixed `noflo.asComponent` handling of functions that return a `NULL`
|
|
97
123
|
|
|
98
|
-
## 1.1.
|
|
124
|
+
## [1.1.0] - 2018-02-19
|
|
125
|
+
### Added
|
|
126
|
+
- Added [noflo.asComponent](https://github.com/noflo/noflo/pull/591) for easy mapping of JavaScript functions into NoFlo components. Each argument will get its own inport with the name of the argument, and output is handled based on the type of function being wrapped:
|
|
99
127
|
|
|
100
|
-
* Fixed `noflo.asComponent` handling of functions that return a `NULL`
|
|
101
|
-
|
|
102
|
-
## 1.1.0 (February 19th 2018)
|
|
103
|
-
|
|
104
|
-
* Added [noflo.asComponent](https://github.com/noflo/noflo/pull/591) for easy mapping of JavaScript functions into NoFlo components. Each argument will get its own inport with the name of the argument, and output is handled based on the type of function being wrapped:
|
|
105
128
|
- Regular synchronous functions: return value gets sent to `out`. Thrown errors get sent to `error`
|
|
106
129
|
- Functions returning a Promise: resolved promises get sent to `out`, rejected promises to `error`
|
|
107
130
|
- Functions taking a Node.js style asynchronous callback: `err` argument to callback gets sent to `error`, result gets sent to `out`
|
|
108
131
|
|
|
109
|
-
## 1.0.3
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
## 1.0.2 (November 17th 2017)
|
|
132
|
+
## [1.0.3] - 2017-11-24
|
|
133
|
+
### Added
|
|
134
|
+
- Added support for running arbitrary NoFlo graphs via `noflo.asCallback`. You can call this function now with either a component name, or a `noflo.Graph` instance
|
|
114
135
|
|
|
115
|
-
|
|
136
|
+
## [1.0.2] - 2017-11-17
|
|
137
|
+
### Fixed
|
|
138
|
+
- Fix sub-subgraph identification in network events
|
|
116
139
|
|
|
117
|
-
## 1.0.1
|
|
140
|
+
## [1.0.1] - 2017-11-13
|
|
141
|
+
### Changed
|
|
142
|
+
- Subgraphs re-activate themselves when receiving new packets after they've completed running
|
|
143
|
+
- Subgraphs now use the JavaScript implementation of Graph component also on Node.js
|
|
144
|
+
- NoFlo `setSource` on Node.js no longer transpiles ES6 sources using Babel. All supported Node.js versions should run ES6 without issues
|
|
118
145
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
146
|
+
## [1.0.0] - 2017-11-03
|
|
147
|
+
### Added
|
|
148
|
+
- Added _unscoped_ support for outports. Setting `scoped: false` on an outport will force all packets sent to that port to be unscoped
|
|
149
|
+
- Added a deprecation warning when loading legacy API components
|
|
122
150
|
|
|
123
|
-
|
|
151
|
+
### Changed
|
|
152
|
+
- The shipping NoFlo build is now using ES6 syntax, as provided by the [CoffeeScript 2.x compiler](http://coffeescript.org/). If you need to support older browsers or Node.js versions, you can transpile the code to ES5 using [Babel](https://babeljs.io/)
|
|
153
|
+
- The APIs deprecated in NoFlo 0.8 were removed:
|
|
154
|
+
- Improved errors thrown when trying to read from non-existing ports
|
|
155
|
+
- More information on preparing for NoFlo 1.0 can be found from [this blog post](http://bergie.iki.fi/blog/noflo-10-prep/)
|
|
124
156
|
|
|
125
|
-
* The shipping NoFlo build is now using ES6 syntax, as provided by the [CoffeeScript 2.x compiler](http://coffeescript.org/). If you need to support older browsers or Node.js versions, you can transpile the code to ES5 using [Babel](https://babeljs.io/)
|
|
126
|
-
* The APIs deprecated in NoFlo 0.8 were removed:
|
|
127
157
|
- `noflo.AsyncComponent` class -- use WirePattern or Process API instead
|
|
128
158
|
- `noflo.ArrayPort` class -- use InPort/OutPort with `addressable: true` instead
|
|
129
159
|
- `noflo.Port` class -- use InPort/OutPort instead
|
|
@@ -136,75 +166,85 @@ noflo.createNetwork(myGraph, {
|
|
|
136
166
|
- `noflo.InPort` receive method -- use Process API getX methods
|
|
137
167
|
- `noflo.InPort` contains method -- use Process API hasX methods
|
|
138
168
|
- Subgraph `EXPORTS` mechanism -- disambiguate with INPORT/OUTPORT
|
|
139
|
-
* Improved errors thrown when trying to read from non-existing ports
|
|
140
|
-
* Added _unscoped_ support for outports. Setting `scoped: false` on an outport will force all packets sent to that port to be unscoped
|
|
141
|
-
* Added a deprecation warning when loading legacy API components
|
|
142
|
-
* More information on preparing for NoFlo 1.0 can be found from [this blog post](http://bergie.iki.fi/blog/noflo-10-prep/)
|
|
143
169
|
|
|
144
|
-
## 0.8.6
|
|
170
|
+
## [0.8.6] - 2017-10-21
|
|
171
|
+
### Changed
|
|
172
|
+
- Improved error handling when trying to load a graph with misconfigured edges
|
|
173
|
+
|
|
174
|
+
### Fixed
|
|
175
|
+
- Fixed an issue with synchronous components causing Process API output streams to be replayed in some situations
|
|
176
|
+
|
|
177
|
+
## [0.8.5] - 2017-09-17
|
|
178
|
+
### Changed
|
|
179
|
+
- It is now possible to set individual ports to _unscoped_ mode by setting the `scoped: false` parameter. This is useful for components that mix unscoped and scoped inputs
|
|
180
|
+
- Ports and IP objects can now be annotated with a JSON schema for their payloads using the `schema` key. Ports with a schema annotate their IP objects automatically with the schema unless the IP object already has a specific schema
|
|
181
|
+
- The previous `type` key of ports is now converted to the `schema` key. The schema of a port is available via the `getSchema()` method
|
|
182
|
+
|
|
183
|
+
## [0.8.4] - 2017-07-21
|
|
184
|
+
### Changed
|
|
185
|
+
- Send newly-added IIPs even if network has finished, but not after stopping the network
|
|
186
|
+
|
|
187
|
+
## [0.8.3] - 2017-03-08
|
|
188
|
+
### Changed
|
|
189
|
+
- Don't mark the network as finished if we still have running components
|
|
190
|
+
|
|
191
|
+
## [0.8.2] - 2017-03-05
|
|
192
|
+
### Added
|
|
193
|
+
- Added [asCallback()](https://github.com/noflo/noflo/pull/538) function to embed NoFlo graphs and components into non-NoFlo applications and tests
|
|
194
|
+
|
|
195
|
+
### Changed
|
|
196
|
+
- Improved subgraph instantiation error handling
|
|
197
|
+
|
|
198
|
+
### Fixed
|
|
199
|
+
- Fixed a problem of IIPs not visible to processes when inside an IP scope
|
|
200
|
+
|
|
201
|
+
## [0.8.1] - 2017-03-02
|
|
202
|
+
### Fixed
|
|
203
|
+
- Fixed issue with Process API WirePattern emulation on deeper bracket hierarchies
|
|
204
|
+
- Fixed inport buffer clearing on component shutdown
|
|
205
|
+
|
|
206
|
+
## [0.8.0] - 2017-03-01
|
|
207
|
+
### Added
|
|
208
|
+
- Added deprecation warnings to several WirePattern options:
|
|
209
|
+
- Added `setUp` and `tearDown` methods for easier handling of custom states in components. These methods take an asynchronous callback and are recommended to be used instead of `start` and `shutdown`
|
|
210
|
+
- Added callbacks for component `start` and `shutdown` methods
|
|
211
|
+
- Added a `clear` method for inports to clear their packet buffer. Used by component `shutdown` method
|
|
212
|
+
- Added addressable port support to Process API
|
|
213
|
+
- Added callback for `Network.stop`
|
|
214
|
+
- Added deprecation warnings for APIs that will be removed by NoFlo 1.0. These can be made fatal by setting the `NOFLO_FATAL_DEPRECATED` environment variable. These include:
|
|
215
|
+
- Added IP object `scope` support to `WirePattern` to make `WirePattern` components more concurrency-friendly
|
|
216
|
+
- Added stream helpers for Process API input. `hasStream` checks if an input buffer contains a complete stream (matching brackets and data, or only data), `getStream` returns a complete stream of packets. These require `forwardBrackets` to be disabled for the port.
|
|
217
|
+
|
|
218
|
+
### Changed
|
|
219
|
+
- General availability of [Process API for NoFlo components](http://bergie.iki.fi/blog/noflo-process-api/)
|
|
220
|
+
- Updated headers to reflect the copyright assignment from [The Grid](https://thegrid.io) to [Flowhub UG](https://flowhub.io)
|
|
221
|
+
- Reimplemented `noflo.helpers.MapComponent` to use Process API internally. This helper is deprecated and components using it should be ported to Process API
|
|
222
|
+
- Reimplemented `noflo.helpers.WirePattern` to use Process API internally. To use the original WirePattern implementation, either pass a `legacy: true` to WirePattern function or set `NOFLO_WIREPATTERN_LEGACY` environment variable
|
|
223
|
+
- `postpone` and `resume`. These are still available in legacy mode but will be removed soon
|
|
224
|
+
- `group` collation
|
|
225
|
+
- `field` collation
|
|
226
|
+
- `async: false` option
|
|
227
|
+
- `component.error` method with WirePattern. Use async and error callback instead
|
|
228
|
+
- `component.fail` method with WirePattern. Use async and error callback instead
|
|
229
|
+
- `component.sendDefaults` method with WirePattern. Start your components with a NoFlo network to get defaults sent
|
|
230
|
+
- `noflo.helpers.MultiError`. Use error callback instead
|
|
231
|
+
- Outmost brackets are no longer automatically converted to `connect` and `disconnect` events. Instead, `connect` and `disconnect` are injected as needed, but only for subscribers of the legacy events
|
|
232
|
+
- Graph JSON schema has been moved to https://github.com/flowbased/fbp, and updated with tests.
|
|
233
|
+
- [babel-core](https://www.npmjs.com/package/babel-core) was removed as a dependency. Install separately for projects needing ES6 component support
|
|
234
|
+
- underscore.js was removed as a dependency
|
|
235
|
+
- `input.getData()` in Process API has been changed to fetch only packets of `data` type skipping and dropping brackets inbetween
|
|
236
|
+
- IP objects are strictly required to be of `noflo.IP` type
|
|
237
|
+
- NoFlo Graph and Journal were moved to a dedicated [fbp-graph](https://github.com/flowbased/fbp-graph) library for easier usage in other FBP projects. No changes to NoFlo interface
|
|
238
|
+
- NoFlo networks now emit packet events only while the network is running
|
|
239
|
+
- NoFlo networks can show their currently active processes with the `getActiveProcesses()` method
|
|
240
|
+
|
|
241
|
+
### Removed
|
|
242
|
+
- Removed WirePattern `receiveStreams` and `sendStream` options
|
|
243
|
+
- Removed `receiveStreams` option from `WirePattern`
|
|
244
|
+
- Removed support for deprecated Node.js 0.x versions
|
|
145
245
|
|
|
146
|
-
* Fixed an issue with synchronous components causing Process API output streams to be replayed in some situations
|
|
147
|
-
* Improved error handling when trying to load a graph with misconfigured edges
|
|
148
|
-
|
|
149
|
-
## 0.8.5 (September 17th 2017)
|
|
150
|
-
|
|
151
|
-
* It is now possible to set individual ports to _unscoped_ mode by setting the `scoped: false` parameter. This is useful for components that mix unscoped and scoped inputs
|
|
152
|
-
* Ports and IP objects can now be annotated with a JSON schema for their payloads using the `schema` key. Ports with a schema annotate their IP objects automatically with the schema unless the IP object already has a specific schema
|
|
153
|
-
* The previous `type` key of ports is now converted to the `schema` key. The schema of a port is available via the `getSchema()` method
|
|
154
|
-
|
|
155
|
-
## 0.8.4 (July 21st 2017)
|
|
156
|
-
|
|
157
|
-
* Send newly-added IIPs even if network has finished, but not after stopping the network
|
|
158
|
-
|
|
159
|
-
## 0.8.3 (March 8th 2017)
|
|
160
|
-
|
|
161
|
-
* Don't mark the network as finished if we still have running components
|
|
162
|
-
|
|
163
|
-
## 0.8.2 (March 5th 2017)
|
|
164
|
-
|
|
165
|
-
* Improved subgraph instantiation error handling
|
|
166
|
-
* Fixed a problem of IIPs not visible to processes when inside an IP scope
|
|
167
|
-
* Added [asCallback()](https://github.com/noflo/noflo/pull/538) function to embed NoFlo graphs and components into non-NoFlo applications and tests
|
|
168
|
-
|
|
169
|
-
## 0.8.1 (March 2nd 2017)
|
|
170
|
-
|
|
171
|
-
* Fixed issue with Process API WirePattern emulation on deeper bracket hierarchies
|
|
172
|
-
* Fixed inport buffer clearing on component shutdown
|
|
173
|
-
|
|
174
|
-
## 0.8.0 (March 1st 2017)
|
|
175
|
-
|
|
176
|
-
* General availability of [Process API for NoFlo components](http://bergie.iki.fi/blog/noflo-process-api/)
|
|
177
|
-
* Updated headers to reflect the copyright assignment from [The Grid](https://thegrid.io) to [Flowhub UG](https://flowhub.io)
|
|
178
|
-
|
|
179
|
-
## 0.8.0-beta3 (February 21st 2017)
|
|
180
|
-
|
|
181
|
-
* Reimplemented `noflo.helpers.MapComponent` to use Process API internally. This helper is deprecated and components using it should be ported to Process API
|
|
182
|
-
* Reimplemented `noflo.helpers.WirePattern` to use Process API internally. To use the original WirePattern implementation, either pass a `legacy: true` to WirePattern function or set `NOFLO_WIREPATTERN_LEGACY` environment variable
|
|
183
|
-
* Removed WirePattern `receiveStreams` and `sendStream` options
|
|
184
|
-
* Added deprecation warnings to several WirePattern options:
|
|
185
|
-
* `postpone` and `resume`. These are still available in legacy mode but will be removed soon
|
|
186
|
-
* `group` collation
|
|
187
|
-
* `field` collation
|
|
188
|
-
* `async: false` option
|
|
189
|
-
* `component.error` method with WirePattern. Use async and error callback instead
|
|
190
|
-
* `component.fail` method with WirePattern. Use async and error callback instead
|
|
191
|
-
* `component.sendDefaults` method with WirePattern. Start your components with a NoFlo network to get defaults sent
|
|
192
|
-
* `noflo.helpers.MultiError`. Use error callback instead
|
|
193
|
-
|
|
194
|
-
## 0.8.0-beta2 (February 8th 2017)
|
|
195
|
-
|
|
196
|
-
* Added `setUp` and `tearDown` methods for easier handling of custom states in components. These methods take an asynchronous callback and are recommended to be used instead of `start` and `shutdown`
|
|
197
|
-
* Added callbacks for component `start` and `shutdown` methods
|
|
198
|
-
* Added a `clear` method for inports to clear their packet buffer. Used by component `shutdown` method
|
|
199
|
-
* Added addressable port support to Process API
|
|
200
246
|
- When sending packets to an addressable outport, the connection to send to will be selected based on the `index` attribute of the IP object
|
|
201
247
|
- When reading from addressable ports, provide port name with index in format `[portname, index]`. For example: `input.getData ['in', 2]`
|
|
202
|
-
|
|
203
|
-
## 0.8.0-beta1 (January 18th 2017)
|
|
204
|
-
|
|
205
|
-
* Added callback for `Network.stop`
|
|
206
|
-
* Outmost brackets are no longer automatically converted to `connect` and `disconnect` events. Instead, `connect` and `disconnect` are injected as needed, but only for subscribers of the legacy events
|
|
207
|
-
* Added deprecation warnings for APIs that will be removed by NoFlo 1.0. These can be made fatal by setting the `NOFLO_FATAL_DEPRECATED` environment variable. These include:
|
|
208
248
|
- `noflo.AsyncComponent`: should be ported to Process API
|
|
209
249
|
- `noflo.helpers.MapComponent`: should be ported to Process API
|
|
210
250
|
- `noflo.ArrayPort`: should be ported to noflo.In/OutPort with `addressable: true`
|
|
@@ -215,177 +255,190 @@ noflo.createNetwork(myGraph, {
|
|
|
215
255
|
- `noflo.InPort` `contains` method: replaced by the `has` method
|
|
216
256
|
- `noflo.Graph` exports: use specific inport or outport instead
|
|
217
257
|
- Additionally [component.io](https://github.com/componentjs/component) builds warn about deprecation in favor of [webpack](http://webpack.github.io/) with helpful automation available in [grunt-noflo-browser](https://www.npmjs.com/package/grunt-noflo-browser)
|
|
218
|
-
* Added IP object `scope` support to `WirePattern` to make `WirePattern` components more concurrency-friendly
|
|
219
|
-
* Removed `receiveStreams` option from `WirePattern`
|
|
220
|
-
* Graph JSON schema has been moved to https://github.com/flowbased/fbp, and updated with tests.
|
|
221
|
-
* Added stream helpers for Process API input. `hasStream` checks if an input buffer contains a complete stream (matching brackets and data, or only data), `getStream` returns a complete stream of packets. These require `forwardBrackets` to be disabled for the port.
|
|
222
|
-
* [babel-core](https://www.npmjs.com/package/babel-core) was removed as a dependency. Install separately for projects needing ES6 component support
|
|
223
|
-
* underscore.js was removed as a dependency
|
|
224
|
-
* `input.getData()` in Process API has been changed to fetch only packets of `data` type skipping and dropping brackets inbetween
|
|
225
|
-
* IP objects are strictly required to be of `noflo.IP` type
|
|
226
|
-
* Removed support for deprecated Node.js 0.x versions
|
|
227
|
-
* NoFlo Graph and Journal were moved to a dedicated [fbp-graph](https://github.com/flowbased/fbp-graph) library for easier usage in other FBP projects. No changes to NoFlo interface
|
|
228
|
-
* NoFlo networks now emit packet events only while the network is running
|
|
229
|
-
* NoFlo networks can show their currently active processes with the `getActiveProcesses()` method
|
|
230
258
|
|
|
231
|
-
## 0.7.8
|
|
259
|
+
## [0.7.8] - 2016-06-10
|
|
260
|
+
### Added
|
|
261
|
+
- Added input buffer manipulation methods
|
|
262
|
+
- Added support for falsy IP object scopes
|
|
263
|
+
- Added support for sending values out directly with `output.send` if there is only one non-error outport
|
|
232
264
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
* InternalSocket no longer re-wraps already-wrapped errors coming from downstream
|
|
237
|
-
* Switched NoFlo's default browser builder to webpack
|
|
265
|
+
### Changed
|
|
266
|
+
- InternalSocket no longer re-wraps already-wrapped errors coming from downstream
|
|
267
|
+
- Switched NoFlo's default browser builder to webpack
|
|
238
268
|
|
|
239
|
-
## 0.7.7
|
|
269
|
+
## [0.7.7] - 2016-06-08
|
|
270
|
+
### Changed
|
|
271
|
+
- `input.has` now accepts a validation callback function as the last argument. All packets in buffer will be passed to this function, and `has` will return false only if something returns true for each port specified
|
|
272
|
+
- ComponentLoader was refactored to allow easier injection of custom loaders when dealing with bundling tools like Browserify and Webpack
|
|
240
273
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
* ComponentLoader was refactored to allow easier injection of custom loaders when dealing with bundling tools like Browserify and Webpack
|
|
274
|
+
### Removed
|
|
275
|
+
- Removed `dropEmptyBrackets` option which was conflicting with asynchronous components. This results into empty brackets being forwarded to `error` outport, so make sure error handling components don't make false alerts on those.
|
|
244
276
|
|
|
245
|
-
## 0.7.6
|
|
277
|
+
## [0.7.6] - 2016-06-02
|
|
278
|
+
### Added
|
|
279
|
+
- Added support for `stream` datatype in ports, allowing streams to be passed as data packets
|
|
246
280
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
* NoFlo Graphs now support case sensitive mode, which is possible to trigger via options
|
|
281
|
+
### Changed
|
|
282
|
+
- NoFlo Graphs now support case sensitive mode, which is possible to trigger via options
|
|
250
283
|
|
|
251
|
-
|
|
284
|
+
### Fixed
|
|
285
|
+
- Fixed ComponentLoader caching on Node.js
|
|
252
286
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
287
|
+
## [0.7.5] - 2016-05-02
|
|
288
|
+
### Added
|
|
289
|
+
- Added automatic bracket forwarding via `forwardBrackets` option. Enabled from `in` port to `out` and `error` ports by default.
|
|
256
290
|
|
|
257
|
-
|
|
291
|
+
### Changed
|
|
292
|
+
- Empty brackets are not forwarded to ports in `dropEmptyBrackets` list (defaults to `['error']`).
|
|
293
|
+
- IP metadata can easily be forwarded in simple components by using `output.pass()` instead of `output.sendDone()`.
|
|
258
294
|
|
|
259
|
-
|
|
295
|
+
## [0.7.4] - 2016-04-07
|
|
296
|
+
### Changed
|
|
297
|
+
- Minor network starting improvement
|
|
260
298
|
|
|
261
|
-
## 0.7.3
|
|
299
|
+
## [0.7.3] - 2016-04-07
|
|
300
|
+
### Changed
|
|
301
|
+
- Network uptime is now calculated from the first `start` event, not from initialization
|
|
262
302
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
303
|
+
### Fixed
|
|
304
|
+
- Fixed error handling on broken FBP manifest data
|
|
305
|
+
- Fixed network start callback when there are no defaults in a graph
|
|
266
306
|
|
|
267
|
-
## 0.7.2
|
|
307
|
+
## [0.7.2] - 2016-04-01
|
|
308
|
+
### Fixed
|
|
309
|
+
- Fixed FBP manifest caching
|
|
310
|
+
- Fixed non-triggering property being applied on triggering ports
|
|
311
|
+
- Fixed `input.getData()` crash on ports which have no packets yet
|
|
268
312
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
313
|
+
## [0.7.1] - 2016-03-31
|
|
314
|
+
### Fixed
|
|
315
|
+
- Fixed NoFlo subgraph component in build
|
|
272
316
|
|
|
273
|
-
## 0.7.
|
|
317
|
+
## [0.7.0] - 2016-03-31
|
|
318
|
+
### Changed
|
|
319
|
+
- Switched component discovery and caching from `read-installed` to [FBP manifest](https://github.com/flowbased/fbp-manifest). `fbp.json` files can be generated using `noflo-cache-preheat`.
|
|
320
|
+
- Component Loader `listComponents` can now return errors as first callback argument
|
|
321
|
+
- Control ports don't receive bracket IPs, only data
|
|
322
|
+
- NoFlo's InternalSocket now always handles information packets as IP Objects, with conversion to/from legacy packet events done automatically. Use `socket.on('ip', function (ip) {})` to receive IP object
|
|
274
323
|
|
|
275
|
-
* Fixed NoFlo subgraph component in build
|
|
276
|
-
|
|
277
|
-
## 0.7.0 (March 31st 2016)
|
|
278
|
-
|
|
279
|
-
* Switched component discovery and caching from `read-installed` to [FBP manifest](https://github.com/flowbased/fbp-manifest). `fbp.json` files can be generated using `noflo-cache-preheat`.
|
|
280
324
|
This also changes behavior related to components or graphs in custom locations. The fbp-manifest tool only finds them from the default `components/` and `graphs/` subdirectories of the project
|
|
281
325
|
base directory.
|
|
282
|
-
* Component Loader `listComponents` can now return errors as first callback argument
|
|
283
|
-
* Control ports don't receive bracket IPs, only data
|
|
284
|
-
* NoFlo's InternalSocket now always handles information packets as IP Objects, with conversion to/from legacy packet events done automatically. Use `socket.on('ip', function (ip) {})` to receive IP object
|
|
285
|
-
|
|
286
|
-
## 0.6.1 (March 30th 2016)
|
|
287
|
-
|
|
288
|
-
* NoFlo's IP Objects are now available via `noflo.IP`
|
|
289
|
-
|
|
290
|
-
## 0.6.0 (March 29th 2016)
|
|
291
|
-
|
|
292
|
-
* Removed the `noflo` executable in favor of [noflo-nodejs](https://www.npmjs.com/package/noflo-nodejs)
|
|
293
|
-
* NoFlo `createNetwork` and `loadFile` methods can return errors as the first callback argument
|
|
294
|
-
* New [IP Objects](https://github.com/noflo/noflo/issues/290) feature allowing bundling and handling of groups and packet data together
|
|
295
|
-
* New option to enable [cloning of packets](https://github.com/noflo/noflo/pull/375) when sending to multiple outbound connections
|
|
296
|
-
* New [Process API](https://github.com/noflo/noflo/pull/392) which replaces `WirePattern` and makes NoFlo component programming closer to Classical FBP
|
|
297
|
-
* Graph-level [request isolation](https://github.com/noflo/noflo/issues/373) via `IP.scope` property
|
|
298
|
-
* Removed the deprecated `LoggingComponent` baseclass
|
|
299
|
-
|
|
300
|
-
## 0.5.21 (December 3rd 2015)
|
|
301
|
-
|
|
302
|
-
* Made NoFlo component cache keep Component Loader paths also relative
|
|
303
|
-
|
|
304
|
-
## 0.5.20 (December 2nd 2015)
|
|
305
|
-
|
|
306
|
-
* NoFlo network instances now default to `debug` mode, meaning that errors thrown by components are available via the `process-error` event
|
|
307
|
-
* If there are no listeners for the network `process-error` events or socket `error` event, then they are thrown
|
|
308
|
-
* This change of behavior fixes issues with stale state in WirePattern networks caused by downstream exceptions
|
|
309
|
-
* Debug mode can be disabled with `network.setDebug(false)`
|
|
310
|
-
|
|
311
|
-
## 0.5.18 (November 30th 2015)
|
|
312
|
-
|
|
313
|
-
* Make NoFlo component cache paths relative to project root
|
|
314
|
-
|
|
315
|
-
## 0.5.17 (November 27th 2015)
|
|
316
|
-
|
|
317
|
-
* Added a new `noflo-cache-preheat` tool that can be used for improving start-up times in Node.js projects with large lists of dependencies. Can be used as a `postinstall` script
|
|
318
|
-
|
|
319
|
-
## 0.5.16 (November 27th 2015)
|
|
320
|
-
|
|
321
|
-
* Update the `read-installed` package to support scoped dependencies
|
|
322
|
-
|
|
323
|
-
## 0.5.15 (November 26th 2015)
|
|
324
|
-
|
|
325
|
-
* Support for [scoped NPM packages](https://docs.npmjs.com/getting-started/scoped-packages)
|
|
326
|
-
|
|
327
|
-
## 0.5.14 (September 25th 2015)
|
|
328
326
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
327
|
+
## [0.6.1] - 2016-03-30
|
|
328
|
+
### Changed
|
|
329
|
+
- NoFlo's IP Objects are now available via `noflo.IP`
|
|
330
|
+
|
|
331
|
+
## [0.6.0] - 2016-03-29
|
|
332
|
+
### Added
|
|
333
|
+
- New [IP Objects](https://github.com/noflo/noflo/issues/290) feature allowing bundling and handling of groups and packet data together
|
|
334
|
+
- New option to enable [cloning of packets](https://github.com/noflo/noflo/pull/375) when sending to multiple outbound connections
|
|
335
|
+
- New [Process API](https://github.com/noflo/noflo/pull/392) which replaces `WirePattern` and makes NoFlo component programming closer to Classical FBP
|
|
336
|
+
|
|
337
|
+
### Changed
|
|
338
|
+
- NoFlo `createNetwork` and `loadFile` methods can return errors as the first callback argument
|
|
339
|
+
- Graph-level [request isolation](https://github.com/noflo/noflo/issues/373) via `IP.scope` property
|
|
340
|
+
|
|
341
|
+
### Removed
|
|
342
|
+
- Removed the `noflo` executable in favor of [noflo-nodejs](https://www.npmjs.com/package/noflo-nodejs)
|
|
343
|
+
- Removed the deprecated `LoggingComponent` baseclass
|
|
344
|
+
|
|
345
|
+
## [0.5.21] - 2015-12-03
|
|
346
|
+
### Changed
|
|
347
|
+
- Made NoFlo component cache keep Component Loader paths also relative
|
|
348
|
+
|
|
349
|
+
## [0.5.20] - 2015-12-02
|
|
350
|
+
### Changed
|
|
351
|
+
- NoFlo network instances now default to `debug` mode, meaning that errors thrown by components are available via the `process-error` event
|
|
352
|
+
- If there are no listeners for the network `process-error` events or socket `error` event, then they are thrown
|
|
353
|
+
- This change of behavior fixes issues with stale state in WirePattern networks caused by downstream exceptions
|
|
354
|
+
- Debug mode can be disabled with `network.setDebug(false)`
|
|
355
|
+
|
|
356
|
+
## [0.5.18] - 2015-11-30
|
|
357
|
+
### Changed
|
|
358
|
+
- Make NoFlo component cache paths relative to project root
|
|
359
|
+
|
|
360
|
+
## [0.5.17] - 2015-11-27
|
|
361
|
+
### Added
|
|
362
|
+
- Added a new `noflo-cache-preheat` tool that can be used for improving start-up times in Node.js projects with large lists of dependencies. Can be used as a `postinstall` script
|
|
363
|
+
|
|
364
|
+
## [0.5.16] - 2015-11-27
|
|
365
|
+
### Changed
|
|
366
|
+
- Update the `read-installed` package to support scoped dependencies
|
|
367
|
+
|
|
368
|
+
## [0.5.15] - 2015-11-26
|
|
369
|
+
### Changed
|
|
370
|
+
- Support for [scoped NPM packages](https://docs.npmjs.com/getting-started/scoped-packages)
|
|
371
|
+
|
|
372
|
+
## [0.5.14] - 2015-09-25
|
|
373
|
+
### Changed
|
|
374
|
+
- EcmaScript 6 support in Component Loader
|
|
375
|
+
- Node.js 4.x compatibility (`setSource` requires `components/` directory to exist in base directory to work)
|
|
376
|
+
|
|
377
|
+
## [0.5.13] - 2015-04-22
|
|
378
|
+
### Changed
|
|
379
|
+
- Custom componentloader support when cache mode is enabled
|
|
380
|
+
- Optional support for [coffee-cache](https://www.npmjs.com/package/coffee-cache) when using `--cache`
|
|
381
|
+
|
|
382
|
+
## [0.5.12] - 2015-04-19
|
|
383
|
+
### Added
|
|
384
|
+
- Add support for [io.js](https://iojs.org/)
|
|
385
|
+
- Add `componentName` property for components telling the component name
|
|
386
|
+
|
|
387
|
+
### Changed
|
|
388
|
+
- Socket events now include edge metadata
|
|
389
|
+
- Node.js: component list can be cached for faster start-up time. Cache file is stored in `$BASEDIR/.noflo.json`
|
|
390
|
+
|
|
391
|
+
## [0.5.11] - 2014-10-23
|
|
392
|
+
### Added
|
|
393
|
+
- Added safeties for restarted networks to WirePattern
|
|
394
|
+
|
|
395
|
+
### Changed
|
|
396
|
+
- On Node.js ComponentLoader `setSource` now loads components virtually from `<baseDir>/components` to support relative module loading
|
|
397
|
+
- Subgraphs don't get unattached ports implicitly exported any longer. Register in/outports in the graph to make them available from the outside
|
|
398
|
+
|
|
399
|
+
## [0.5.10] - 2014-10-23
|
|
400
|
+
### Changed
|
|
401
|
+
- Port names are now validated to only contain lowercase alphanumeric characters or underscores
|
|
402
|
+
- `ComponentLoader.load` method now calls its callback with the Node.js style `error, instance` signature to allow catching component loading issues
|
|
403
|
+
- Graph merging support via the graph journal
|
|
404
|
+
- `getSource` now returns correct type for graphs
|
|
405
|
+
- Subgraph networks are started when the main network starts, instead of automatically on their own timing. As a fallback they will also start when any of their ports receives a `connect`
|
|
406
|
+
- Networks can now be stopped and restarted at will using the `stop` and `start` methods
|
|
407
|
+
- The running state of a NoFlo network can be now queried with the `isRunning` method
|
|
408
|
+
- NoFlo networks support FBP protocol debugging via the `setDebug` and `getDebug` methods
|
|
409
|
+
- `Ports.add` is now chainable
|
|
410
|
+
- The `start` port was removed from subgraphs
|
|
362
411
|
|
|
363
412
|
These changes mean that in situations where a subgraph is used standalone without a network around it, you need to call `component.start()` manually. This is typical especially in unit tests.
|
|
364
413
|
|
|
365
|
-
## 0.5.9
|
|
366
|
-
|
|
367
|
-
|
|
414
|
+
## [0.5.9] - 2014-08-05
|
|
415
|
+
### Changed
|
|
416
|
+
- Hotfix reverting backwards-incompatible changes in subgraph loading, see [#229](https://github.com/noflo/noflo/issues/229).
|
|
368
417
|
|
|
369
|
-
## 0.5.8
|
|
418
|
+
## [0.5.8] - 2014-08-04
|
|
419
|
+
### Added
|
|
420
|
+
- Added `dropInput` option for WirePattern to drop premature data while parameters not yet received. See [#239](https://github.com/noflo/noflo/issues/239)
|
|
421
|
+
- Addressable ports support in WirePattern. See [details](https://github.com/noflo/noflo/issues/240#issuecomment-51094257).
|
|
370
422
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
* Fixes for default port values and IIPs in subgraphs.
|
|
376
|
-
* Added `dropInput` option for WirePattern to drop premature data while parameters not yet received. See [#239](https://github.com/noflo/noflo/issues/239)
|
|
377
|
-
* Addressable ports support in WirePattern. See [details](https://github.com/noflo/noflo/issues/240#issuecomment-51094257).
|
|
423
|
+
### Changed
|
|
424
|
+
- Updated `read-installed` to the latest version
|
|
425
|
+
- Updated JSON Schema for NoFlo graph definition format
|
|
426
|
+
- Low-level functions to add and remove graph inports at run-time, see [#242](https://github.com/noflo/noflo/pull/242)
|
|
378
427
|
|
|
379
|
-
|
|
428
|
+
### Fixed
|
|
429
|
+
- Fixed several issues in connections and data synchronization
|
|
430
|
+
- Fixes for default port values and IIPs in subgraphs.
|
|
380
431
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
* `
|
|
432
|
+
## [0.5.7] - 2014-07-23
|
|
433
|
+
### Changed
|
|
434
|
+
- Ports now default to *not required*. Set the port option `required: true` the port needs to be connected in order for the component to work
|
|
435
|
+
- `MultiError` pattern is enabled by default when using `WirePattern` and supports `forwardGroups` option for error packets.
|
|
436
|
+
- `WirePattern` components now deal more consistently with groups and disconnect events
|
|
384
437
|
|
|
385
|
-
## 0.5.6
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
438
|
+
## [0.5.6] - 2014-06-23
|
|
439
|
+
### Changed
|
|
440
|
+
- Custom icon support for subgraphs via the `icon` key in graph properties
|
|
441
|
+
- Parameter support for `WirePattern` components, allowing them to have configuration parameters that need to be set only once. Example:
|
|
389
442
|
|
|
390
443
|
```coffeescript
|
|
391
444
|
component = new noflo.Component
|
|
@@ -403,7 +456,6 @@ component.outPorts.add 'out',
|
|
|
403
456
|
datatype: 'object'
|
|
404
457
|
component.outPorts.add 'error',
|
|
405
458
|
datatype: 'object'
|
|
406
|
-
|
|
407
459
|
noflo.helpers.WirePattern component,
|
|
408
460
|
in: ['line', 'repeat']
|
|
409
461
|
out: 'out'
|
|
@@ -418,45 +470,47 @@ noflo.helpers.WirePattern component,
|
|
|
418
470
|
callback()
|
|
419
471
|
```
|
|
420
472
|
|
|
421
|
-
## 0.5.5
|
|
473
|
+
## [0.5.5] - 2014-06-20
|
|
474
|
+
### Added
|
|
475
|
+
- New `CustomizeError` helper for passing information with Error objects in NoFlo. For example:
|
|
422
476
|
|
|
423
|
-
|
|
424
|
-
|
|
477
|
+
### Fixed
|
|
478
|
+
- Fixed an issue with `StreamSender` affecting WirePattern components dealing with multiple levels of grouping
|
|
425
479
|
|
|
426
480
|
```coffeescript
|
|
427
|
-
# Instantiate an error object
|
|
428
481
|
err = new Error 'Something went wrong'
|
|
429
|
-
|
|
430
|
-
# Add metadata to it. Usually this should include groups and other machine-readable information
|
|
431
482
|
noflo.helpers.CustomizeError err,
|
|
432
483
|
groups: groups
|
|
433
484
|
foo: 'bar'
|
|
434
|
-
|
|
435
|
-
# Send it to error port
|
|
436
485
|
c.error err
|
|
437
486
|
```
|
|
438
487
|
|
|
439
|
-
## 0.5.4
|
|
488
|
+
## [0.5.4] - 2014-06-11
|
|
489
|
+
### Added
|
|
490
|
+
- Added support for multiple outputs and reading/writing substreams as solid objects in `WirePattern`.
|
|
491
|
+
- Added `load` outport handing in `WirePattern` to make it a complete replacement for `AsyncComponent`.
|
|
492
|
+
- Added helpers for advanced error handling, see [#185](https://github.com/noflo/noflo/issues/185).
|
|
493
|
+
- Added `caching` option for OutPorts that makes them re-send their latest value to any newly-added connections, see [#151](https://github.com/noflo/noflo/issues/151) for example use cases.
|
|
440
494
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
* Added `load` outport handing in `WirePattern` to make it a complete replacement for `AsyncComponent`.
|
|
447
|
-
* Added helpers for advanced error handling, see [#185](https://github.com/noflo/noflo/issues/185).
|
|
448
|
-
* Added `caching` option for OutPorts that makes them re-send their latest value to any newly-added connections, see [#151](https://github.com/noflo/noflo/issues/151) for example use cases.
|
|
495
|
+
### Changed
|
|
496
|
+
- The new [noflo-api-updater](https://www.npmjs.org/package/noflo-api-updater) tool assists in updating components to the latest NoFlo API
|
|
497
|
+
- `GroupedInput` helper has been renamed to `WirePattern` due to a bigger collection of synchronization options.
|
|
498
|
+
- The `WirePattern` helper has a new `ordered` option for choosing whether the output should be in same order as the incoming packets
|
|
499
|
+
- Options `group` and `forwardGroups` of `WirePattern` are made independent, so make sure to use `forwardGroups: true` if you need this feature together with `group: true`.
|
|
449
500
|
|
|
450
|
-
## 0.5.3
|
|
501
|
+
## [0.5.3] - 2014-05-31
|
|
502
|
+
### Added
|
|
503
|
+
- New component helpers for easier authoring
|
|
451
504
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
* New component helpers for easier authoring
|
|
505
|
+
### Changed
|
|
506
|
+
- `integer` is accepted as an alias for the `int` datatype for ports
|
|
507
|
+
- `buffer` is now an accepted port datatype
|
|
508
|
+
- The Continuous Integration setup for NoFlo now runs on both [Linux](https://travis-ci.org/noflo/noflo) and [Windows](https://ci.appveyor.com/project/bergie/noflo)
|
|
457
509
|
|
|
458
|
-
|
|
510
|
+
### Fixed
|
|
511
|
+
- Fixed a bug with ComponentLoader `getSource` method when invoked early on in execution
|
|
459
512
|
|
|
513
|
+
The `MapComponent` helper is usable for synchronous components that operate on a single inport-outport combination:
|
|
460
514
|
```coffeescript
|
|
461
515
|
c = new noflo.Component
|
|
462
516
|
inPorts:
|
|
@@ -468,9 +522,7 @@ c = new noflo.Component
|
|
|
468
522
|
noflo.helpers.MapComponent c, (data, groups, out) ->
|
|
469
523
|
out.send data * 2
|
|
470
524
|
```
|
|
471
|
-
|
|
472
525
|
The `GroupedInput` helper assists in building components that need to synchronize multiple inputs by groups:
|
|
473
|
-
|
|
474
526
|
```coffeescript
|
|
475
527
|
c = new noflo.Component
|
|
476
528
|
inPorts:
|
|
@@ -481,16 +533,13 @@ c = new noflo.Component
|
|
|
481
533
|
outPorts:
|
|
482
534
|
radius:
|
|
483
535
|
datatype: 'number'
|
|
484
|
-
|
|
485
536
|
noflo.helpers.GroupedInput c,
|
|
486
537
|
in: ['x', 'y']
|
|
487
538
|
out: 'radius'
|
|
488
539
|
, (data, groups, out) ->
|
|
489
540
|
out.send Math.sqrt(data.x**2 + data.y**2)
|
|
490
541
|
```
|
|
491
|
-
|
|
492
542
|
`GroupedInput` can also synchronize via specific fields of object-type packets:
|
|
493
|
-
|
|
494
543
|
```coffeescript
|
|
495
544
|
helpers.GroupedInput c,
|
|
496
545
|
in: ['user', 'message']
|
|
@@ -501,70 +550,65 @@ helpers.GroupedInput c,
|
|
|
501
550
|
request: data.request
|
|
502
551
|
user: data.user.name
|
|
503
552
|
text: data.message.text
|
|
504
|
-
|
|
505
553
|
user.send {request: 123, id: 42, name: 'John'}
|
|
506
554
|
message.send {request: 123, id: 17, text: 'Hello world'}
|
|
507
|
-
|
|
508
|
-
# Result:
|
|
509
555
|
{ request: 123, user: 'John', text: 'Hello world'}
|
|
510
556
|
```
|
|
511
557
|
|
|
512
|
-
## 0.5.2
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
## 0.5.1
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
558
|
+
## [0.5.2] - 2014-05-08
|
|
559
|
+
### Fixed
|
|
560
|
+
- Fixed a minor packaging issue
|
|
561
|
+
|
|
562
|
+
## [0.5.1] - 2014-05-08
|
|
563
|
+
### Changed
|
|
564
|
+
- Custom component loaders can be registered programmatically using the `registerLoader` method of NoFlo's ComponentLoader
|
|
565
|
+
- `contains` method for buffered inports returns the number of data packets the buffer has
|
|
566
|
+
- [Call stack exhaustion](https://github.com/noflo/noflo/issues/156) on very large graphs has been fixed
|
|
567
|
+
- The `error` outport of AsyncComponents now sends the group information of the original input together with the error
|
|
568
|
+
- The `error` method of regular ports can now also handle groups as a second parameter
|
|
569
|
+
- Ports can now list their attached sockets (by array index) via the `listAttached` method
|
|
570
|
+
- `function` is now an accepted datatype for ports
|
|
571
|
+
- There is now initial support for making connections to and from *addressable* ports with a specified index
|
|
526
572
|
|
|
527
573
|
In the FBP format, these can be specified with the bracket syntax:
|
|
528
|
-
|
|
529
574
|
```fbp
|
|
530
575
|
SomeNode OUT[2] -> IN OtherNode
|
|
531
576
|
'foo' -> OPTS[1] OtherNode
|
|
532
577
|
```
|
|
533
|
-
|
|
534
578
|
In the JSON file these are defined in connections by adding a integer to the `index` key of the `src` or `tgt` definition.
|
|
535
|
-
|
|
536
579
|
The NoFlo Graph class provides these with the following methods:
|
|
537
|
-
|
|
538
580
|
```
|
|
539
581
|
addEdgeIndex(str outNode, str outPort, int outIndex, str inNode, str inPort, int inIndex, obj metadata)
|
|
540
582
|
addInitiaIndex(mixed data, str inNode, str inPort, int inIndex, obj metadata)
|
|
541
583
|
```
|
|
542
|
-
|
|
543
584
|
If indexes are not specified, the fall-back behavior is to automatically index the connections based on next available slot in the port.
|
|
544
585
|
|
|
545
|
-
## 0.5.0
|
|
586
|
+
## [0.5.0] - 2014-03-28
|
|
587
|
+
### Added
|
|
588
|
+
- New methods for manipulating Graph metadata:
|
|
589
|
+
- New Graph transaction API for grouping graph changes. Transactions can be observed
|
|
590
|
+
- New Journal class, for following Graph changes and restoring earlier revisions. Currently supports `undo` and `redo`
|
|
591
|
+
|
|
592
|
+
### Changed
|
|
593
|
+
- Support for setting the default `baseDir` of Node.js NoFlo environment with `NOFLO_PROJECT_ROOT` env var (defaults to current working directory)
|
|
594
|
+
- Support for loading graph definitions via AJAX on browser-based NoFlo
|
|
595
|
+
- Support for delayed initialization of Subgraph components via ComponentLoader
|
|
596
|
+
- Component instances now get the node's metadata passed to the `getComponent` function
|
|
597
|
+
- Graph exports can now be renamed, and emit `addExport`, `removeExport`, and `renameExport` events
|
|
598
|
+
- [New port API](https://github.com/noflo/noflo/issues/136) allowing better addressability and metadata
|
|
599
|
+
- Graph's published ports are now declared in two separate `inports` and `outports` arrays to [reduce ambiguity](https://github.com/noflo/noflo/issues/118)
|
|
600
|
+
- [New component API](https://github.com/noflo/noflo/issues/97) allowing simpler component definition in both CoffeeScript and JavaScript:
|
|
601
|
+
- Support for dealing with component source code via ComponentLoader `setSource` and `getSource` methods
|
|
546
602
|
|
|
547
|
-
* Support for setting the default `baseDir` of Node.js NoFlo environment with `NOFLO_PROJECT_ROOT` env var (defaults to current working directory)
|
|
548
|
-
* Support for loading graph definitions via AJAX on browser-based NoFlo
|
|
549
|
-
* Support for delayed initialization of Subgraph components via ComponentLoader
|
|
550
|
-
* Component instances now get the node's metadata passed to the `getComponent` function
|
|
551
|
-
* New methods for manipulating Graph metadata:
|
|
552
603
|
- `setProperties`
|
|
553
604
|
- `setInportMetadata`
|
|
554
605
|
- `setOutportMetadata`
|
|
555
606
|
- `setGroupMetadata`
|
|
556
607
|
- `setNodeMetadata`
|
|
557
608
|
- `setEdgeMetadata`
|
|
558
|
-
* Graph exports can now be renamed, and emit `addExport`, `removeExport`, and `renameExport` events
|
|
559
|
-
* New Graph transaction API for grouping graph changes. Transactions can be observed
|
|
560
609
|
- `startTransaction`
|
|
561
610
|
- `endTransaction`
|
|
562
|
-
* New Journal class, for following Graph changes and restoring earlier revisions. Currently supports `undo` and `redo`
|
|
563
|
-
* [New port API](https://github.com/noflo/noflo/issues/136) allowing better addressability and metadata
|
|
564
|
-
* Graph's published ports are now declared in two separate `inports` and `outports` arrays to [reduce ambiguity](https://github.com/noflo/noflo/issues/118)
|
|
565
|
-
|
|
566
611
|
With the new API component ports can be declared with:
|
|
567
|
-
|
|
568
612
|
```coffeescript
|
|
569
613
|
@inPorts = new noflo.InPorts
|
|
570
614
|
@inPorts.add 'in', new noflo.InPort
|
|
@@ -574,9 +618,7 @@ With the new API component ports can be declared with:
|
|
|
574
618
|
required: true
|
|
575
619
|
buffered: true
|
|
576
620
|
```
|
|
577
|
-
|
|
578
621
|
The `noflo.Ports` objects emit `add` and `remove` events when ports change. They also support passing port information as options:
|
|
579
|
-
|
|
580
622
|
```coffeescript
|
|
581
623
|
@outPorts = new noflo.OutPorts
|
|
582
624
|
out: new noflo.OutPort
|
|
@@ -586,109 +628,95 @@ The `noflo.Ports` objects emit `add` and `remove` events when ports change. They
|
|
|
586
628
|
required: true
|
|
587
629
|
addressable: true
|
|
588
630
|
```
|
|
589
|
-
|
|
590
631
|
The input ports also allow passing in an optional *processing function* that gets called on information packets events.
|
|
591
|
-
|
|
592
|
-
* [New component API](https://github.com/noflo/noflo/issues/97) allowing simpler component definition in both CoffeeScript and JavaScript:
|
|
593
|
-
|
|
594
632
|
```js
|
|
595
633
|
var noflo = require('noflo');
|
|
596
|
-
|
|
597
634
|
exports.getComponent = function() {
|
|
598
635
|
var c = new noflo.Component();
|
|
599
|
-
|
|
600
636
|
c.inPorts.add('in', function(event, payload) {
|
|
601
637
|
if (packet.event !== 'data')
|
|
602
638
|
return;
|
|
603
639
|
// Do something with the packet, then
|
|
604
640
|
c.outPorts.out.send(packet.data);
|
|
605
641
|
});
|
|
606
|
-
|
|
607
642
|
c.outPorts.add('out');
|
|
608
|
-
|
|
609
643
|
return c;
|
|
610
644
|
};
|
|
611
645
|
```
|
|
612
646
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
647
|
+
## [0.4.4] - 2014-02-04
|
|
648
|
+
### Changed
|
|
649
|
+
- Support for CoffeeScript 1.7.x on Node.js
|
|
650
|
+
|
|
651
|
+
## [0.4.3] - 2013-12-06
|
|
652
|
+
### Changed
|
|
653
|
+
- ArrayPorts with attached sockets now return `true` for `isAttached` checks. There is a separate `canAttach` method for checking whether more can be added
|
|
654
|
+
- Icon support was added for both libraries and components using the set from [Font Awesome](http://fortawesome.github.io/Font-Awesome/icons/)
|
|
655
|
+
- Subgraphs now support closing their internal NoFlo network via the `shutdown` method
|
|
656
|
+
- Component Loader is able to load arbitrary graphs outside of the normal package manifest registration via the `loadGraph` method
|
|
657
|
+
- Component Loader of the main NoFlo network is now carried across subgraphs instead of instantiating locally
|
|
658
|
+
- Libraries can provide a custom loader for their components by registering a `noflo.loader` key in the manifest pointing to a CommonJS module
|
|
659
|
+
- Exported ports can now contain metadata
|
|
660
|
+
- It is possible to create named groups of nodes in a NoFlo graph, which can be useful for visual editors
|
|
661
|
+
- Components have an `error` helper method for sending errors to the `error` outport, or throwing them if that isn't attached
|
|
616
662
|
|
|
617
|
-
* Support for CoffeeScript 1.7.x on Node.js
|
|
618
|
-
|
|
619
|
-
## 0.4.3 (December 6th 2013)
|
|
620
|
-
|
|
621
|
-
* ArrayPorts with attached sockets now return `true` for `isAttached` checks. There is a separate `canAttach` method for checking whether more can be added
|
|
622
|
-
* Icon support was added for both libraries and components using the set from [Font Awesome](http://fortawesome.github.io/Font-Awesome/icons/)
|
|
623
663
|
- For libraries, register via the `noflo.icon` key in your `package.json` (Node.js libraries) or `component.json` (browser libraries)
|
|
624
664
|
- For components, provide via the `icon` attribute
|
|
625
|
-
* Subgraphs now support closing their internal NoFlo network via the `shutdown` method
|
|
626
|
-
* Component Loader is able to load arbitrary graphs outside of the normal package manifest registration via the `loadGraph` method
|
|
627
|
-
* Component Loader of the main NoFlo network is now carried across subgraphs instead of instantiating locally
|
|
628
|
-
* Libraries can provide a custom loader for their components by registering a `noflo.loader` key in the manifest pointing to a CommonJS module
|
|
629
|
-
* Exported ports can now contain metadata
|
|
630
|
-
* It is possible to create named groups of nodes in a NoFlo graph, which can be useful for visual editors
|
|
631
|
-
* Components have an `error` helper method for sending errors to the `error` outport, or throwing them if that isn't attached
|
|
632
|
-
|
|
633
|
-
## 0.4.2 (September 28th 2013)
|
|
634
|
-
|
|
635
|
-
* Easier debugging: port errors now contain the name of the NoFlo graph node and the port
|
|
636
665
|
|
|
637
|
-
## 0.4.
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
666
|
+
## [0.4.2] - 2013-09-28
|
|
667
|
+
### Changed
|
|
668
|
+
- Easier debugging: port errors now contain the name of the NoFlo graph node and the port
|
|
669
|
+
|
|
670
|
+
## [0.4.1] - 2013-09-25
|
|
671
|
+
### Changed
|
|
672
|
+
- NoFlo components can now implement a `shutdown` method which is called when they're removed from a network
|
|
673
|
+
- Graphs can contain additional metadata in the `properties` key
|
|
674
|
+
- NoFlo networks have now a `start` and a `stop` method for starting and stopping execution
|
|
675
|
+
|
|
676
|
+
## [0.4.0] - 2013-07-31
|
|
677
|
+
### Added
|
|
678
|
+
- New BDD tests written with [Mocha](http://visionmedia.github.io/mocha/) that can be run on both browser and server
|
|
679
|
+
- Adding IIPs to a graph will now emit a `addInitial` event instead of an `addEdge` event
|
|
680
|
+
|
|
681
|
+
### Changed
|
|
682
|
+
- The NoFlo engine has been made available client-side via the [Component](https://github.com/component/component) system
|
|
683
|
+
- All components have been moved to [various component libraries](http://noflojs.org/library/)
|
|
684
|
+
- [Grunt scaffold](https://github.com/bergie/grunt-init-noflo) for easily creating NoFlo component packages including cross-platform test automation
|
|
685
|
+
- NoFlo's internal FBP parser was removed in favor of the [fbp](https://github.com/noflo/fbp) package
|
|
686
|
+
- The `display` property of nodes in the [JSON format](https://github.com/bergie/noflo#noflo-graph-file-format) was removed in favor of the more flexible `metadata` object
|
|
687
|
+
- Support for renaming nodes in a NoFlo graph via the `renameNode` method
|
|
688
|
+
- Graph's `removeEdge` method allows specifying both ends of the connection to prevent ambiguity
|
|
689
|
+
- IIPs can now be removed using the `removeInitial` method, which fires a `removeInitial` event instead of `removeEdge`
|
|
690
|
+
- NoFlo Networks now support delayed starting
|
|
691
|
+
- The `isBrowser` method on the main NoFlo interface tells whether NoFlo is running under browser or Node.js
|
|
692
|
+
- Support for running under Node.js on Windows
|
|
644
693
|
|
|
645
694
|
Browser support:
|
|
646
|
-
|
|
647
|
-
* The NoFlo engine has been made available client-side via the [Component](https://github.com/component/component) system
|
|
648
|
-
* New BDD tests written with [Mocha](http://visionmedia.github.io/mocha/) that can be run on both browser and server
|
|
649
|
-
|
|
650
695
|
Changes to components:
|
|
651
|
-
|
|
652
|
-
* All components have been moved to [various component libraries](http://noflojs.org/library/)
|
|
653
|
-
|
|
654
696
|
Development tools:
|
|
655
|
-
|
|
656
|
-
* [Grunt scaffold](https://github.com/bergie/grunt-init-noflo) for easily creating NoFlo component packages including cross-platform test automation
|
|
657
|
-
|
|
658
697
|
File format support:
|
|
659
|
-
|
|
660
|
-
* NoFlo's internal FBP parser was removed in favor of the [fbp](https://github.com/noflo/fbp) package
|
|
661
|
-
* The `display` property of nodes in the [JSON format](https://github.com/bergie/noflo#noflo-graph-file-format) was removed in favor of the more flexible `metadata` object
|
|
662
|
-
|
|
663
698
|
Internals:
|
|
664
699
|
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
* IIPs can now be removed using the `removeInitial` method, which fires a `removeInitial` event instead of `removeEdge`
|
|
669
|
-
* NoFlo Networks now support delayed starting
|
|
670
|
-
* The `isBrowser` method on the main NoFlo interface tells whether NoFlo is running under browser or Node.js
|
|
671
|
-
* Support for running under Node.js on Windows
|
|
672
|
-
|
|
673
|
-
## 0.3.4 (July 5th 2013)
|
|
700
|
+
## [0.3.4] - 2013-07-05
|
|
701
|
+
### Added
|
|
702
|
+
- New `LoggingComponent` base class for component libraries
|
|
674
703
|
|
|
675
704
|
Internals:
|
|
676
705
|
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
706
|
+
## [0.3.3] - 2013-04-09
|
|
707
|
+
### Changed
|
|
708
|
+
- Build process was switched from Cake to [Grunt](http://gruntjs.com/)
|
|
709
|
+
- NoFlo is no longer tested against Node.js 0.6
|
|
680
710
|
|
|
681
711
|
Development:
|
|
682
712
|
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
713
|
+
## [0.3.2] - 2013-04-09
|
|
714
|
+
### Changed
|
|
715
|
+
- Ports now support optional type information, allowing editors to visualize compatible port types
|
|
716
|
+
- NoFlo ComponentLoader is now able to register new components and graphs and update package.json files accordingly
|
|
717
|
+
- [noflo-test](https://npmjs.org/package/noflo-test) provides a framework for testing NoFlo components
|
|
687
718
|
|
|
688
719
|
NoFlo internals:
|
|
689
|
-
|
|
690
|
-
* Ports now support optional type information, allowing editors to visualize compatible port types
|
|
691
|
-
|
|
692
720
|
``` coffeescript
|
|
693
721
|
@inPorts =
|
|
694
722
|
in: new noflo.ArrayPort 'object'
|
|
@@ -696,62 +724,79 @@ NoFlo internals:
|
|
|
696
724
|
@outPorts =
|
|
697
725
|
out: new noflo.Port 'string'
|
|
698
726
|
```
|
|
699
|
-
|
|
700
|
-
* NoFlo ComponentLoader is now able to register new components and graphs and update package.json files accordingly
|
|
701
|
-
|
|
702
727
|
``` coffeescript
|
|
703
728
|
loader = new noflo.ComponentLoader __dirname
|
|
704
729
|
loader.registerComponent 'myproject', 'SayHello', './components/SayHello.json', (err) ->
|
|
705
730
|
console.error err if err
|
|
706
731
|
```
|
|
707
|
-
|
|
708
732
|
New libraries:
|
|
709
733
|
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
734
|
+
## [0.3.1] - 2013-02-13
|
|
735
|
+
### Changed
|
|
736
|
+
- The NoFlo `.fbp` parser now [guards against recursion](https://github.com/bergie/noflo/pull/57) on inline subgraphs
|
|
737
|
+
- NoFlo subgraphs now inherit the directory context for component loading from the NoFlo process that loaded them
|
|
738
|
+
- Exported ports in NoFlo graphs are now supported also in NoFlo-generated JSON files
|
|
739
|
+
- Nodes in NoFlo graphs can now contain additional metadata to be used for visualization purposes. For example, in FBP format graphs:
|
|
740
|
+
- [noflo-filesystem](https://npmjs.org/package/noflo-filesystem) provides advanced file system components
|
|
741
|
+
- [noflo-github](https://npmjs.org/package/noflo-github) provides components for interacting with the GitHub service
|
|
742
|
+
- [noflo-git](https://npmjs.org/package/noflo-git) provides components for Git revision control system
|
|
743
|
+
- [noflo-oembed](https://npmjs.org/package/noflo-oembed) provides oEmbed protocol support
|
|
744
|
+
- [noflo-redis](https://npmjs.org/package/noflo-redis) provides Redis database components
|
|
713
745
|
|
|
714
746
|
NoFlo internals:
|
|
715
|
-
|
|
716
|
-
* The NoFlo `.fbp` parser now [guards against recursion](https://github.com/bergie/noflo/pull/57) on inline subgraphs
|
|
717
|
-
* NoFlo subgraphs now inherit the directory context for component loading from the NoFlo process that loaded them
|
|
718
|
-
* Exported ports in NoFlo graphs are now supported also in NoFlo-generated JSON files
|
|
719
|
-
* Nodes in NoFlo graphs can now contain additional metadata to be used for visualization purposes. For example, in FBP format graphs:
|
|
720
|
-
|
|
721
747
|
``` fbp
|
|
722
748
|
Read(ReadFile:foo) OUT -> IN Display(Output:foo)
|
|
723
749
|
```
|
|
724
|
-
|
|
725
750
|
will cause both the _Read_ and the _Display_ node to contain a `metadata.routes` field with an array containing `foo`. Multiple routes can be specified by separating them with commas
|
|
726
|
-
|
|
727
751
|
New component libraries:
|
|
728
752
|
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
753
|
+
## [0.3.0] - 2012-12-19
|
|
754
|
+
### Changed
|
|
755
|
+
- NoFlo's web-based user interface has been moved to a separate [noflo-ui](https://github.com/bergie/noflo-ui) repository
|
|
756
|
+
- The `noflo` shell command now uses `STDOUT` for debug output (when invoked with `--debug`) instead of `STDERR`
|
|
757
|
+
- [DOT language](http://en.wikipedia.org/wiki/DOT_language) output from NoFlo was made more comprehensive
|
|
758
|
+
- NoFlo graphs can now alias their internal ports to more user-friendly names when used as subgraphs. When aliases are used, the other free ports are not exposed via the _Graph_ component. This works in both FBP and JSON formats:
|
|
759
|
+
- All code was migrated from 4 spaces to 2 space indentation as recommended by [CoffeeScript style guide](https://github.com/polarmobile/coffeescript-style-guide). Our CI environment safeguards this via [CoffeeLint](http://www.coffeelint.org/)
|
|
760
|
+
- Events emitted by ArrayPorts now contain the socket number as a second parameter
|
|
761
|
+
- Initial Information Packet sending was delayed by `process.nextTick` to ensure possible subgraphs are ready
|
|
762
|
+
- The `debug` flag was removed from NoFlo _Network_ class, and the networks were made EventEmitters for more flexible monitoring
|
|
763
|
+
- The `isSubgraph` method tells whether a _Component_ is a subgraph or a regular code component
|
|
764
|
+
- Subgraphs loaded directly by _ComponentLoader_ no longer expose their `graph` port
|
|
765
|
+
- The `addX` methods of _Graph_ now return the object that was added to the graph
|
|
766
|
+
- NoFlo networks now emit `start` and `end` events
|
|
767
|
+
- Component instances have the ID of the node available at the `nodeId` property
|
|
768
|
+
- Empty strings and other falsy values are now allowed as contents of Initial Information Packets
|
|
769
|
+
- _ReadGroup_ now sends the group to a `group` outport, and original packet to `out` port
|
|
770
|
+
- _GetObjectKey_ can now send packets that don't contain the specified key to a `missed` port instead of dropping them
|
|
771
|
+
- _SetPropertyValue_ provides the group hierarchy received via its `in` port when sending packets out
|
|
772
|
+
- _Kick_ can now optionally send out the packet it received via its `data` port when receiving a disconnect on the `in` port. Its `out` port is now an ArrayPort
|
|
773
|
+
- _Concat_ only clears its buffers on disconnect when all inports have connected at least once
|
|
774
|
+
- _SplitStr_ accepts both regular expressions (starting and ending with a `/`) and strings for splitting
|
|
775
|
+
- _ReadDir_ and _Stat_ are now AsyncComponents that can be throttled
|
|
776
|
+
- _MakeDir_ creates a directory at a given path
|
|
777
|
+
- _DirName_ sends the directory name for a given file path
|
|
778
|
+
- _CopyFile_ copies the file behind the path received via the `source` port to the path received via the `destination` port
|
|
779
|
+
- _FilterPacket_ allows filtering packets by regular expressions sent to the `regexp` port. Non-matching packets are sent to the `missed` port
|
|
780
|
+
- _FirstGroup_ allows you to limit group hierarchies of packets to a single level
|
|
781
|
+
- _LastPacket_ sends the last packet it received when getting a disconnect to the inport
|
|
782
|
+
- _MergeGroups_ collects grouped packets from its inports, and sends them out together once each inport has sent data with the same grouping
|
|
783
|
+
- _SimplifyObject_ simplifies the object structures outputted by the _CollectGroups_ component
|
|
784
|
+
- _CountSum_ sums together numbers received from different inports and sends the total out
|
|
785
|
+
- _SplitInSequence_ sends each packet to only one of its outports, going through them in sequence
|
|
786
|
+
- _CollectUntilIdle_ collects packets it receives, waits a given time if there are new packets, and if not, sends them out
|
|
787
|
+
- [noflo-liquid](https://npmjs.org/package/noflo-liquid) provides Liquid Templating functionality
|
|
788
|
+
- [noflo-markdown](https://npmjs.org/package/noflo-markdown) provides Markdown conversion
|
|
789
|
+
- [noflo-diffbot](https://npmjs.org/package/noflo-diffbot) provides access to the Diffbot screen-scraping service
|
|
736
790
|
|
|
737
791
|
User interface:
|
|
738
|
-
|
|
739
|
-
* NoFlo's web-based user interface has been moved to a separate [noflo-ui](https://github.com/bergie/noflo-ui) repository
|
|
740
|
-
* The `noflo` shell command now uses `STDOUT` for debug output (when invoked with `--debug`) instead of `STDERR`
|
|
741
792
|
- Events from subgraphs are also visible when the `noflo` command is used with the additional `-s` switch
|
|
742
793
|
- Contents of packets are shown when the `noflo` command is used with the additional `-v` switch
|
|
743
794
|
- Shell debug output is no colorized for easier reading
|
|
744
|
-
* [DOT language](http://en.wikipedia.org/wiki/DOT_language) output from NoFlo was made more comprehensive
|
|
745
|
-
* NoFlo graphs can now alias their internal ports to more user-friendly names when used as subgraphs. When aliases are used, the other free ports are not exposed via the _Graph_ component. This works in both FBP and JSON formats:
|
|
746
|
-
|
|
747
795
|
For FBP format graphs:
|
|
748
|
-
|
|
749
796
|
``` fbp
|
|
750
797
|
EXPORT=INTERNALPROCESS.PORT:EXTERNALPORT
|
|
751
798
|
```
|
|
752
|
-
|
|
753
799
|
For JSON format graphs:
|
|
754
|
-
|
|
755
800
|
``` json
|
|
756
801
|
{
|
|
757
802
|
"exports": [
|
|
@@ -762,83 +807,38 @@ User interface:
|
|
|
762
807
|
]
|
|
763
808
|
}
|
|
764
809
|
```
|
|
765
|
-
|
|
766
810
|
NoFlo internals:
|
|
767
|
-
|
|
768
|
-
* All code was migrated from 4 spaces to 2 space indentation as recommended by [CoffeeScript style guide](https://github.com/polarmobile/coffeescript-style-guide). Our CI environment safeguards this via [CoffeeLint](http://www.coffeelint.org/)
|
|
769
|
-
* Events emitted by ArrayPorts now contain the socket number as a second parameter
|
|
770
|
-
* Initial Information Packet sending was delayed by `process.nextTick` to ensure possible subgraphs are ready
|
|
771
|
-
* The `debug` flag was removed from NoFlo _Network_ class, and the networks were made EventEmitters for more flexible monitoring
|
|
772
|
-
* The `isSubgraph` method tells whether a _Component_ is a subgraph or a regular code component
|
|
773
|
-
* Subgraphs loaded directly by _ComponentLoader_ no longer expose their `graph` port
|
|
774
|
-
* The `addX` methods of _Graph_ now return the object that was added to the graph
|
|
775
|
-
* NoFlo networks now emit `start` and `end` events
|
|
776
|
-
* Component instances have the ID of the node available at the `nodeId` property
|
|
777
|
-
* Empty strings and other falsy values are now allowed as contents of Initial Information Packets
|
|
778
|
-
|
|
779
811
|
Changes to core components:
|
|
780
|
-
|
|
781
|
-
* _ReadGroup_ now sends the group to a `group` outport, and original packet to `out` port
|
|
782
|
-
* _GetObjectKey_ can now send packets that don't contain the specified key to a `missed` port instead of dropping them
|
|
783
|
-
* _SetPropertyValue_ provides the group hierarchy received via its `in` port when sending packets out
|
|
784
|
-
* _Kick_ can now optionally send out the packet it received via its `data` port when receiving a disconnect on the `in` port. Its `out` port is now an ArrayPort
|
|
785
|
-
* _Concat_ only clears its buffers on disconnect when all inports have connected at least once
|
|
786
|
-
* _SplitStr_ accepts both regular expressions (starting and ending with a `/`) and strings for splitting
|
|
787
|
-
* _ReadDir_ and _Stat_ are now AsyncComponents that can be throttled
|
|
788
|
-
|
|
789
812
|
New core components:
|
|
790
|
-
|
|
791
|
-
* _MakeDir_ creates a directory at a given path
|
|
792
|
-
* _DirName_ sends the directory name for a given file path
|
|
793
|
-
* _CopyFile_ copies the file behind the path received via the `source` port to the path received via the `destination` port
|
|
794
|
-
* _FilterPacket_ allows filtering packets by regular expressions sent to the `regexp` port. Non-matching packets are sent to the `missed` port
|
|
795
|
-
* _FirstGroup_ allows you to limit group hierarchies of packets to a single level
|
|
796
|
-
* _LastPacket_ sends the last packet it received when getting a disconnect to the inport
|
|
797
|
-
* _MergeGroups_ collects grouped packets from its inports, and sends them out together once each inport has sent data with the same grouping
|
|
798
|
-
* _SimplifyObject_ simplifies the object structures outputted by the _CollectGroups_ component
|
|
799
|
-
* _CountSum_ sums together numbers received from different inports and sends the total out
|
|
800
|
-
* _SplitInSequence_ sends each packet to only one of its outports, going through them in sequence
|
|
801
|
-
* _CollectUntilIdle_ collects packets it receives, waits a given time if there are new packets, and if not, sends them out
|
|
802
|
-
|
|
803
813
|
New component libraries:
|
|
804
814
|
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
815
|
+
## [0.2.0] - 2012-11-13
|
|
816
|
+
### Added
|
|
817
|
+
- New _ComponentLoader_ to support loading components and subgraphs to installed NPM modules
|
|
818
|
+
|
|
819
|
+
### Changed
|
|
820
|
+
- Message Queue components were moved to [noflo-mq](https://npmjs.org/package/noflo-mq)
|
|
821
|
+
- HTML parsing components were moved to [noflo-html](https://npmjs.org/package/noflo-html)
|
|
822
|
+
- XML parsing components were moved to [noflo-html](https://npmjs.org/package/noflo-xml)
|
|
823
|
+
- YAML parsing components were moved to [noflo-html](https://npmjs.org/package/noflo-yaml)
|
|
824
|
+
- Web Server components were moved to [noflo-webserver](https://npmjs.org/package/noflo-webserver)
|
|
825
|
+
- CouchDB components were moved to [noflo-couchdb](https://npmjs.org/package/noflo-couchdb)
|
|
826
|
+
- BaseCamp API components were moved to [noflo-basecamp](https://npmjs.org/package/noflo-basecamp)
|
|
827
|
+
- Restful Metrics components were moved to [noflo-restfulmetrics](https://npmjs.org/package/noflo-restfulmetrics)
|
|
828
|
+
- The `noflo` command-line tool now has a new `list` command for listing components available for a given directory, for example: `$ noflo list .`
|
|
829
|
+
- NoFlo's own codebase was moved to direct requires making the NPM installation simpler
|
|
830
|
+
- [daemon](https://npmjs.org/package/daemon) dependency was removed from NoFlo's command-line tools
|
|
831
|
+
- _Merge_ only disconnects once all of its inports have disconnected
|
|
832
|
+
- _Concat_ only disconnects once all of its inports have disconnected
|
|
833
|
+
- _CompileString_'s `in` port is now an ArrayPort
|
|
834
|
+
- _GroupByObjectKey_ also supports boolean values for the matched keys
|
|
835
|
+
- _ReadDir_ disconnects after reading a directory
|
|
836
|
+
- _Drop_ allows explicitly dropping packets in a graph. The component performs no operations on the data it receives
|
|
810
837
|
|
|
811
838
|
The main change in 0.2 series was component packaging support and the fact that most component with external dependencies were moved to their own NPM packages:
|
|
812
|
-
|
|
813
|
-
* Message Queue components were moved to [noflo-mq](https://npmjs.org/package/noflo-mq)
|
|
814
|
-
* HTML parsing components were moved to [noflo-html](https://npmjs.org/package/noflo-html)
|
|
815
|
-
* XML parsing components were moved to [noflo-html](https://npmjs.org/package/noflo-xml)
|
|
816
|
-
* YAML parsing components were moved to [noflo-html](https://npmjs.org/package/noflo-yaml)
|
|
817
|
-
* Web Server components were moved to [noflo-webserver](https://npmjs.org/package/noflo-webserver)
|
|
818
|
-
* CouchDB components were moved to [noflo-couchdb](https://npmjs.org/package/noflo-couchdb)
|
|
819
|
-
* BaseCamp API components were moved to [noflo-basecamp](https://npmjs.org/package/noflo-basecamp)
|
|
820
|
-
* Restful Metrics components were moved to [noflo-restfulmetrics](https://npmjs.org/package/noflo-restfulmetrics)
|
|
821
|
-
|
|
822
839
|
To use the components, install the corresponding NPM package and change the component's name in your graph to include the package namespace. For example, `yaml/ParseYaml` for the _ParseYaml_ component in the _noflo-yaml_ package
|
|
823
|
-
|
|
824
840
|
User interface:
|
|
825
|
-
|
|
826
|
-
* The `noflo` command-line tool now has a new `list` command for listing components available for a given directory, for example: `$ noflo list .`
|
|
827
|
-
|
|
828
841
|
NoFlo internals:
|
|
829
|
-
|
|
830
|
-
* New _ComponentLoader_ to support loading components and subgraphs to installed NPM modules
|
|
831
|
-
* NoFlo's own codebase was moved to direct requires making the NPM installation simpler
|
|
832
|
-
* [daemon](https://npmjs.org/package/daemon) dependency was removed from NoFlo's command-line tools
|
|
833
|
-
|
|
834
842
|
Changes to core components:
|
|
835
|
-
|
|
836
|
-
* _Merge_ only disconnects once all of its inports have disconnected
|
|
837
|
-
* _Concat_ only disconnects once all of its inports have disconnected
|
|
838
|
-
* _CompileString_'s `in` port is now an ArrayPort
|
|
839
|
-
* _GroupByObjectKey_ also supports boolean values for the matched keys
|
|
840
|
-
* _ReadDir_ disconnects after reading a directory
|
|
841
|
-
|
|
842
843
|
New core components:
|
|
843
844
|
|
|
844
|
-
* _Drop_ allows explicitly dropping packets in a graph. The component performs no operations on the data it receives
|