Releases: noflo/noflo
1.3.0
- NoFlo
createNetwork
andasCallback
now accept aflowtrace
option to pass a Flowtrace instance for retroactive debugging. Example:
const { Flowtrace } = require('flowtrace');
const tracer = new Flowtrace();
noflo.createNetwork(myGraph, {
flowtrace: tracer,
}, (err, network) => {
// ... console.log(tracer.toJSON());
});
- NoFlo
createNetwork
now acceptscomponentLoader
andbaseDir
via options. Passing them via Graph properties is deprecated - NoFlo
createNetwork
now defaults to the non-legacy "network drives graph" mode - NoFlo
createNetwork
now only supports thegraph, options, callback
signature, no options given in some other order noflo.Network
interface has been removed. UsecreateNetwork
to instantiate networks- CoffeeScript is no longer bundled with NoFlo. Install the CoffeeScript compiler in your project if you need to be able to load CoffeeScript components
1.2.0
- Ported NoFlo from CoffeeScript to ES6
- Deprecated constructing networks with
new noflo.Network
. Usenoflo.createNetwork
instead, with the following options available:
subscribeGraph: true
: UsesLegacyNetwork
which modifies network topology based on changes in graph. This can cause some types of errors to be silent.subscribeGraph: false
: UsesNetwork
: network topology can be changed with network's methods (addNode
,removeEdge
, etc) and will be also written to the graph. For backwards compatibility reasons,subscribeGraph
defaults totrue
. Adapt your applications to usefalse
instead and start utilizing Network methods for any changes to a running graph.
- Added support for a more standard
noflo.createNetwork(graph, options, callback)
signature, with backwards compatibility for the legacynoflo.createNetwork(graph, callback, options)
signature - 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 - 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 ingetComponent
instead. Changing icon and description for a specific instance (process) is not affected and is fully supported - Added optional
networkCallback
option fornoflo.asCallback
to provide access to the network instance for debugging purposes
1.0.3
1.0.0
- The shipping NoFlo build is now using ES6 syntax, as provided by the CoffeeScript 2.x compiler. If you need to support older browsers or Node.js versions, you can transpile the code to ES5 using Babel
- The APIs deprecated in NoFlo 0.8 were removed:
noflo.AsyncComponent
class -- use WirePattern or Process API insteadnoflo.ArrayPort
class -- use InPort/OutPort withaddressable: true
insteadnoflo.Port
class -- use InPort/OutPort insteadnoflo.helpers.MapComponent
function -- use WirePattern or Process API insteadnoflo.helpers.WirePattern
legacy mode -- now WirePattern always uses Process API internallynoflo.helpers.WirePattern
synchronous mode -- useasync: true
and callbacknoflo.helpers.MultiError
function -- send errors via callback or error portnoflo.InPort
process callback -- use Process APInoflo.InPort
handle callback -- use Process APInoflo.InPort
receive method -- use Process API getX methodsnoflo.InPort
contains method -- use Process API hasX methods- Subgraph
EXPORTS
mechanism -- disambiguate with INPORT/OUTPORT
- Improved errors thrown when trying to read from non-existing ports
- Added unscoped support for outports. Setting
scoped: false
on an outport will force all packets sent to that port to be unscoped - Added a deprecation warning when loading legacy API components
- More information on preparing for NoFlo 1.0 can be found from this blog post
0.8.5
- 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 - 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 - The previous
type
key of ports is now converted to theschema
key. The schema of a port is available via thegetSchema()
method
0.8.1
0.8.0
Read the release announcement.
-
General availability of Process API for NoFlo components
-
Updated headers to reflect the copyright assignment from The Grid to Flowhub UG
-
Reimplemented
noflo.helpers.MapComponent
to use Process API internally. This helper is deprecated and components using it should be ported to Process API -
Reimplemented
noflo.helpers.WirePattern
to use Process API internally. To use the original WirePattern implementation, either pass alegacy: true
to WirePattern function or setNOFLO_WIREPATTERN_LEGACY
environment variable -
Removed WirePattern
receiveStreams
andsendStream
options -
Added deprecation warnings to several WirePattern options:
postpone
andresume
. These are still available in legacy mode but will be removed soongroup
collationfield
collationasync: false
optioncomponent.error
method with WirePattern. Use async and error callback insteadcomponent.fail
method with WirePattern. Use async and error callback insteadcomponent.sendDefaults
method with WirePattern. Start your components with a NoFlo network to get defaults sentnoflo.helpers.MultiError
. Use error callback instead
-
Added
setUp
andtearDown
methods for easier handling of custom states in components. These methods take an asynchronous callback and are recommended to be used instead ofstart
andshutdown
-
Added callbacks for component
start
andshutdown
methods -
Added a
clear
method for inports to clear their packet buffer. Used by componentshutdown
method -
Added addressable port support to Process API
- When sending packets to an addressable outport, the connection to send to will be selected based on the
index
attribute of the IP object - When reading from addressable ports, provide port name with index in format
[portname, index]
. For example:input.getData ['in', 2]
- When sending packets to an addressable outport, the connection to send to will be selected based on the
-
Added callback for
Network.stop
-
Outmost brackets are no longer automatically converted to
connect
anddisconnect
events. Instead,connect
anddisconnect
are injected as needed, but only for subscribers of the legacy events -
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:noflo.AsyncComponent
: should be ported to Process APInoflo.helpers.MapComponent
: should be ported to Process APInoflo.ArrayPort
: should be ported to noflo.In/OutPort withaddressable: true
noflo.Port
: should be ported to noflo.In/OutPort- Calling
Network.start
orNetwork.stop
without a callback noflo.InPort
process
option: should be ported to Process API or use thehandle
optionnoflo.InPort
receive
method: replaced by theget
methodnoflo.InPort
contains
method: replaced by thehas
methodnoflo.Graph
exports: use specific inport or outport instead- Additionally component.io builds warn about deprecation in favor of webpack with helpful automation available in grunt-noflo-browser
-
Added IP object
scope
support toWirePattern
to makeWirePattern
components more concurrency-friendly -
Removed
receiveStreams
option fromWirePattern
-
Graph JSON schema has been moved to https://github.com/flowbased/fbp, and updated with tests.
-
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 requireforwardBrackets
to be disabled for the port. -
babel-core was removed as a dependency. Install separately for projects needing ES6 component support
-
underscore.js was removed as a dependency
-
input.getData()
in Process API has been changed to fetch only packets ofdata
type skipping and dropping brackets inbetween -
IP objects are strictly required to be of
noflo.IP
type -
Removed support for deprecated Node.js 0.x versions
-
NoFlo Graph and Journal were moved to a dedicated fbp-graph library for easier usage in other FBP projects. No changes to NoFlo interface
-
NoFlo networks now emit packet events only while the network is running
-
NoFlo networks can show their currently active processes with the
getActiveProcesses()
method
Network starting and stopping improvements
- Port names are now validated to only contain lowercase alphanumeric characters or underscores
ComponentLoader.load
method now calls its callback with the Node.js styleerror, instance
signature to allow catching component loading issues- Graph merging support via the graph journal
getSource
now returns correct type for graphs- 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
- Networks can now be stopped and restarted at will using the
stop
andstart
methods - The running state of a NoFlo network can be now queried with the
isRunning
method - NoFlo networks support FBP protocol debugging via the
setDebug
andgetDebug
methods Ports.add
is now chainable- The
start
port was removed from subgraphs
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.
Subgraph hotfix
- Hotfix reverting backwards-incompatible changes in subgraph loading, see #229.
Component loading improvements on Node.js
- Fixed several issues in connections and data synchronization
- Updated
read-installed
to the latest version - Updated JSON Schema for NoFlo graph definition format
- Low-level functions to add and remove graph inports at run-time, see #242
- Fixes for default port values and IIPs in subgraphs.
- Added
dropInput
option for WirePattern to drop premature data while parameters not yet received. See #239 - Addressable ports support in WirePattern. See details.