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.
Files changed (90) hide show
  1. package/.ecrc +3 -0
  2. package/.eslintignore +2 -0
  3. package/{CHANGES.md → CHANGELOG.md} +527 -527
  4. package/README.md +1 -1
  5. package/bin/noflo-cache-preheat +4 -4
  6. package/components/Graph.d.ts +50 -15
  7. package/components/Graph.js +94 -68
  8. package/examples/http/HelloController.js +9 -6
  9. package/examples/spreadsheet/parse.fbp +3 -3
  10. package/lib/AsCallback.d.ts +22 -9
  11. package/lib/AsCallback.js +69 -18
  12. package/lib/AsComponent.d.ts +1 -1
  13. package/lib/AsComponent.js +5 -3
  14. package/lib/BaseNetwork.d.ts +16 -6
  15. package/lib/BaseNetwork.js +65 -31
  16. package/lib/BasePort.d.ts +39 -12
  17. package/lib/BasePort.js +34 -6
  18. package/lib/Component.d.ts +8 -8
  19. package/lib/Component.js +23 -20
  20. package/lib/ComponentLoader.d.ts +3 -4
  21. package/lib/ComponentLoader.js +9 -10
  22. package/lib/IP.d.ts +12 -8
  23. package/lib/IP.js +6 -4
  24. package/lib/InPort.d.ts +64 -9
  25. package/lib/InPort.js +72 -13
  26. package/lib/InternalSocket.d.ts +53 -7
  27. package/lib/InternalSocket.js +51 -14
  28. package/lib/LegacyNetwork.d.ts +12 -2
  29. package/lib/LegacyNetwork.js +5 -5
  30. package/lib/Network.d.ts +13 -2
  31. package/lib/Network.js +10 -10
  32. package/lib/NoFlo.d.ts +48 -13
  33. package/lib/NoFlo.js +55 -27
  34. package/lib/OutPort.d.ts +64 -13
  35. package/lib/OutPort.js +73 -15
  36. package/lib/Platform.d.ts +1 -1
  37. package/lib/Platform.js +9 -4
  38. package/lib/Ports.d.ts +11 -12
  39. package/lib/Ports.js +8 -4
  40. package/lib/ProcessInput.d.ts +5 -9
  41. package/lib/ProcessInput.js +8 -9
  42. package/lib/ProcessOutput.d.ts +2 -2
  43. package/lib/ProcessOutput.js +5 -5
  44. package/lib/loader/NodeJs.d.ts +0 -1
  45. package/lib/loader/NodeJs.js +152 -161
  46. package/lib/loader/register.d.ts +1 -1
  47. package/lib/loader/register.js +8 -4
  48. package/package.json +25 -16
  49. package/spec/.eslintrc +5 -2
  50. package/spec/AsCallback.js +9 -13
  51. package/spec/AsComponent.js +10 -4
  52. package/spec/AsPromise.js +38 -0
  53. package/spec/CommonJS.cjs +10 -0
  54. package/spec/ComponentLoader.js +19 -7
  55. package/spec/ESModule.mjs +11 -0
  56. package/spec/Network.js +32 -11
  57. package/spec/NetworkSync.js +892 -0
  58. package/spec/Scoping.js +27 -42
  59. package/spec/Subgraph.js +6 -11
  60. package/spec/fixtures/componentloader/components/Output.js +1 -1
  61. package/spec/fixtures/componentloader/components/Repeat.ts +1 -1
  62. package/spec/fixtures/componentloader/components/RepeatAsync.coffee +1 -1
  63. package/spec/fixtures/componentloader/node_modules/example/components/Forward.js +1 -1
  64. package/spec/fixtures/componentloader/node_modules/example/package.json +1 -1
  65. package/spec/fixtures/componentloader/package.json +2 -1
  66. package/spec/fixtures/componentloader/spec/Repeat.yaml +1 -1
  67. package/spec/utils/inject.js +1 -1
  68. package/src/.eslintrc +9 -2
  69. package/src/components/Graph.js +105 -71
  70. package/src/lib/AsCallback.js +71 -16
  71. package/src/lib/AsComponent.js +5 -4
  72. package/src/lib/BaseNetwork.js +48 -15
  73. package/src/lib/BasePort.js +43 -9
  74. package/src/lib/Component.js +8 -8
  75. package/src/lib/ComponentLoader.js +3 -4
  76. package/src/lib/IP.js +7 -4
  77. package/src/lib/InPort.js +74 -13
  78. package/src/lib/InternalSocket.js +49 -9
  79. package/src/lib/LegacyNetwork.js +2 -2
  80. package/src/lib/Network.js +2 -2
  81. package/src/lib/NoFlo.js +43 -13
  82. package/src/lib/OutPort.js +77 -14
  83. package/src/lib/Platform.js +9 -4
  84. package/src/lib/Ports.js +6 -2
  85. package/src/lib/ProcessInput.js +7 -9
  86. package/src/lib/ProcessOutput.js +1 -1
  87. package/src/lib/loader/NodeJs.js +185 -178
  88. package/src/lib/loader/register.js +2 -2
  89. /package/{karma.config.js → karma.config.cjs} +0 -0
  90. /package/{webpack.config.js → webpack.config.cjs} +0 -0
@@ -1,30 +1,49 @@
1
- NoFlo ChangeLog
2
- ===============
3
-
4
- ## 1.4.3 (December 10th 2020)
5
-
6
- * Improved inport and outport options TypeScript definitions
7
-
8
- ## 1.4.2 (December 10th 2020)
9
-
10
- * Made Component and Network option TypeScript definitions easier to extend when subclassing
11
-
12
- ## 1.4.1 (December 10th 2020)
13
-
14
- * The `asPromise` function (promisified version of `noflo.asCallback`) now ships with the correct type definition
15
-
16
- ## 1.4.0 (December 10th 2020)
17
-
18
- * Asynchronous NoFlo methods (like `createNetwork` and `network.start`) now return Promises. Callbacks are still supported as a compatibility layer.
19
- * Component `setUp` and `tearDown` can now return a Promise instead of calling the supplied callback
20
- * 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)
21
- * NoFlo now ships with TypeScript type definitions
22
- * The `src/lib` folder contains NoFlo as JavaScript Modules. `lib` is the CommonJS version
23
- * 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
24
-
25
- ## 1.3.0 (November 23rd 2020)
26
-
27
- * NoFlo `createNetwork` and `asCallback` now accept a `flowtrace` option to pass a [Flowtrace instance](https://github.com/flowbased/flowtrace) for retroactive debugging. Example:
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
- * NoFlo `createNetwork` now accepts `componentLoader` and `baseDir` via options. Passing them via Graph properties is deprecated
41
- * NoFlo `createNetwork` now defaults to the non-legacy "network drives graph" mode
42
- * NoFlo `createNetwork` now only supports the `graph, options, callback` signature, no options given in some other order
43
- * `noflo.Network` interface has been removed. Use `createNetwork` to instantiate networks
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.7 (November 13th 2020)
64
+ ## [1.2.6] - 2020-09-24
65
+ ### Fixed
66
+ - Fixed an issue with `getSource` on Node.js
47
67
 
48
- * Added safeties against trying to load a falsy graph in `asCallback`
49
- * Added safeties against trying to load unnamed components
68
+ ## [1.2.5] - 2020-09-24
69
+ ### Fixed
70
+ - Fixed an issue with deployment automation
50
71
 
51
- ## 1.2.6 (September 24th 2020)
72
+ ## [1.2.4] - 2020-09-24
73
+ ### Changed
74
+ - ComponentLoader `getSource` now returns also component specs when available
52
75
 
53
- * Fixed an issue with `getSource` on Node.js
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.5 (September 24th 2020)
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
- * Fixed an issue with deployment automation
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.4 (September 24th 2020)
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
- * ComponentLoader `getSource` now returns also component specs when available
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
- ## 1.2.3 (September 17th 2020)
98
+ ### Changed
99
+ - Ported NoFlo from CoffeeScript to ES6
64
100
 
65
- * TypeScript components loaded on Node.js now target modern ES6
101
+ ### Deprecated
102
+ - Deprecated constructing networks with `new noflo.Network`. Use `noflo.createNetwork` instead, with the following options available:
66
103
 
67
- ## 1.2.2 (September 17th 2020)
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
- * Fixed issue with custom component loaders on Node.js
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 (March 24th 2018)
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
- * Improved detection of when network finishes to not stop synchronous networks too early
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.1 (February 19th 2018)
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 (November 24th 2017)
110
-
111
- * 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
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
- * Fix sub-subgraph identification in network events
136
+ ## [1.0.2] - 2017-11-17
137
+ ### Fixed
138
+ - Fix sub-subgraph identification in network events
116
139
 
117
- ## 1.0.1 (November 13th 2017)
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
- * Subgraphs re-activate themselves when receiving new packets after they've completed running
120
- * Subgraphs now use the JavaScript implementation of Graph component also on Node.js
121
- * NoFlo `setSource` on Node.js no longer transpiles ES6 sources using Babel. All supported Node.js versions should run ES6 without issues
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
- ## 1.0.0 (November 3rd 2017)
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 (October 21st 2017)
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 (June 10th 2016)
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
- * Added input buffer manipulation methods
234
- * Added support for falsy IP object scopes
235
- * Added support for sending values out directly with `output.send` if there is only one non-error outport
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 (June 8th 2016)
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
- * `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
242
- * 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.
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 (June 2nd 2016)
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
- * Fixed ComponentLoader caching on Node.js
248
- * Added support for `stream` datatype in ports, allowing streams to be passed as data packets
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
- ## 0.7.5 (May 2nd 2016)
284
+ ### Fixed
285
+ - Fixed ComponentLoader caching on Node.js
252
286
 
253
- * Added automatic bracket forwarding via `forwardBrackets` option. Enabled from `in` port to `out` and `error` ports by default.
254
- * Empty brackets are not forwarded to ports in `dropEmptyBrackets` list (defaults to `['error']`).
255
- * IP metadata can easily be forwarded in simple components by using `output.pass()` instead of `output.sendDone()`.
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
- ## 0.7.4 (April 7th 2016)
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
- * Minor network starting improvement
295
+ ## [0.7.4] - 2016-04-07
296
+ ### Changed
297
+ - Minor network starting improvement
260
298
 
261
- ## 0.7.3 (April 7th 2016)
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
- * Fixed error handling on broken FBP manifest data
264
- * Fixed network start callback when there are no defaults in a graph
265
- * Network uptime is now calculated from the first `start` event, not from initialization
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 (April 1st 2016)
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
- * Fixed FBP manifest caching
270
- * Fixed non-triggering property being applied on triggering ports
271
- * Fixed `input.getData()` crash on ports which have no packets yet
313
+ ## [0.7.1] - 2016-03-31
314
+ ### Fixed
315
+ - Fixed NoFlo subgraph component in build
272
316
 
273
- ## 0.7.1 (March 31st 2016)
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
- * EcmaScript 6 support in Component Loader
330
- * Node.js 4.x compatibility (`setSource` requires `components/` directory to exist in base directory to work)
331
-
332
- ## 0.5.13 (April 22nd 2015)
333
-
334
- * Custom componentloader support when cache mode is enabled
335
- * Optional support for [coffee-cache](https://www.npmjs.com/package/coffee-cache) when using `--cache`
336
-
337
- ## 0.5.12 (April 19th 2015)
338
-
339
- * Add support for [io.js](https://iojs.org/)
340
- * Add `componentName` property for components telling the component name
341
- * Socket events now include edge metadata
342
- * Node.js: component list can be cached for faster start-up time. Cache file is stored in `$BASEDIR/.noflo.json`
343
-
344
- ## 0.5.11 (October 23rd 2014)
345
-
346
- * On Node.js ComponentLoader `setSource` now loads components virtually from `<baseDir>/components` to support relative module loading
347
- * Subgraphs don't get unattached ports implicitly exported any longer. Register in/outports in the graph to make them available from the outside
348
- * Added safeties for restarted networks to WirePattern
349
-
350
- ## 0.5.10 (October 23rd 2014)
351
-
352
- * Port names are now validated to only contain lowercase alphanumeric characters or underscores
353
- * `ComponentLoader.load` method now calls its callback with the Node.js style `error, instance` signature to allow catching component loading issues
354
- * Graph merging support via the graph journal
355
- * `getSource` now returns correct type for graphs
356
- * 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`
357
- * Networks can now be stopped and restarted at will using the `stop` and `start` methods
358
- * The running state of a NoFlo network can be now queried with the `isRunning` method
359
- * NoFlo networks support FBP protocol debugging via the `setDebug` and `getDebug` methods
360
- * `Ports.add` is now chainable
361
- * The `start` port was removed from subgraphs
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 (August 5th 2014)
366
-
367
- * Hotfix reverting backwards-incompatible changes in subgraph loading, see [#229](https://github.com/noflo/noflo/issues/229).
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 (August 4th 2014)
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
- * Fixed several issues in connections and data synchronization
372
- * Updated `read-installed` to the latest version
373
- * Updated JSON Schema for NoFlo graph definition format
374
- * Low-level functions to add and remove graph inports at run-time, see [#242](https://github.com/noflo/noflo/pull/242)
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
- ## 0.5.7 (July 23rd 2014)
428
+ ### Fixed
429
+ - Fixed several issues in connections and data synchronization
430
+ - Fixes for default port values and IIPs in subgraphs.
380
431
 
381
- * 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
382
- * `MultiError` pattern is enabled by default when using `WirePattern` and supports `forwardGroups` option for error packets.
383
- * `WirePattern` components now deal more consistently with groups and disconnect events
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 (June 23rd 2014)
386
-
387
- * Custom icon support for subgraphs via the `icon` key in graph properties
388
- * Parameter support for `WirePattern` components, allowing them to have configuration parameters that need to be set only once. Example:
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 (June 20th 2014)
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
- * Fixed an issue with `StreamSender` affecting WirePattern components dealing with multiple levels of grouping
424
- * New `CustomizeError` helper for passing information with Error objects in NoFlo. For example:
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 (June 11th 2014)
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
- * The new [noflo-api-updater](https://www.npmjs.org/package/noflo-api-updater) tool assists in updating components to the latest NoFlo API
442
- * `GroupedInput` helper has been renamed to `WirePattern` due to a bigger collection of synchronization options.
443
- * The `WirePattern` helper has a new `ordered` option for choosing whether the output should be in same order as the incoming packets
444
- * 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`.
445
- * Added support for multiple outputs and reading/writing substreams as solid objects in `WirePattern`.
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 (May 31st 2014)
501
+ ## [0.5.3] - 2014-05-31
502
+ ### Added
503
+ - New component helpers for easier authoring
451
504
 
452
- * `integer` is accepted as an alias for the `int` datatype for ports
453
- * `buffer` is now an accepted port datatype
454
- * 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)
455
- * Fixed a bug with ComponentLoader `getSource` method when invoked early on in execution
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
- The `MapComponent` helper is usable for synchronous components that operate on a single inport-outport combination:
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 (May 8th 2014)
513
-
514
- * Fixed a minor packaging issue
515
-
516
- ## 0.5.1 (May 8th 2014)
517
-
518
- * Custom component loaders can be registered programmatically using the `registerLoader` method of NoFlo's ComponentLoader
519
- * `contains` method for buffered inports returns the number of data packets the buffer has
520
- * [Call stack exhaustion](https://github.com/noflo/noflo/issues/156) on very large graphs has been fixed
521
- * The `error` outport of AsyncComponents now sends the group information of the original input together with the error
522
- * The `error` method of regular ports can now also handle groups as a second parameter
523
- * Ports can now list their attached sockets (by array index) via the `listAttached` method
524
- * `function` is now an accepted datatype for ports
525
- * There is now initial support for making connections to and from *addressable* ports with a specified index
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 (March 28th 2014)
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
- * Support for dealing with component source code via ComponentLoader `setSource` and `getSource` methods
614
-
615
- ## 0.4.4 (February 4th 2014)
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.1 (September 25th 2013)
638
-
639
- * NoFlo components can now implement a `shutdown` method which is called when they're removed from a network
640
- * Graphs can contain additional metadata in the `properties` key
641
- * NoFlo networks have now a `start` and a `stop` method for starting and stopping execution
642
-
643
- ## 0.4.0 (July 31st 2013)
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
- * Support for renaming nodes in a NoFlo graph via the `renameNode` method
666
- * Adding IIPs to a graph will now emit a `addInitial` event instead of an `addEdge` event
667
- * Graph's `removeEdge` method allows specifying both ends of the connection to prevent ambiguity
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
- * New `LoggingComponent` base class for component libraries
678
-
679
- ## 0.3.3 (April 9th 2013)
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
- * Build process was switched from Cake to [Grunt](http://gruntjs.com/)
684
- * NoFlo is no longer tested against Node.js 0.6
685
-
686
- ## 0.3.2 (April 9th 2013)
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
- * [noflo-test](https://npmjs.org/package/noflo-test) provides a framework for testing NoFlo components
711
-
712
- ## 0.3.1 (February 13th 2013)
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
- * [noflo-filesystem](https://npmjs.org/package/noflo-filesystem) provides advanced file system components
730
- * [noflo-github](https://npmjs.org/package/noflo-github) provides components for interacting with the GitHub service
731
- * [noflo-git](https://npmjs.org/package/noflo-git) provides components for Git revision control system
732
- * [noflo-oembed](https://npmjs.org/package/noflo-oembed) provides oEmbed protocol support
733
- * [noflo-redis](https://npmjs.org/package/noflo-redis) provides Redis database components
734
-
735
- ## 0.3.0 (December 19th 2012)
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
- * [noflo-liquid](https://npmjs.org/package/noflo-liquid) provides Liquid Templating functionality
806
- * [noflo-markdown](https://npmjs.org/package/noflo-markdown) provides Markdown conversion
807
- * [noflo-diffbot](https://npmjs.org/package/noflo-diffbot) provides access to the Diffbot screen-scraping service
808
-
809
- ## 0.2.0 (November 13th 2012)
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