Releases: noflo/noflo
1.3.0
- NoFlo
createNetworkandasCallbacknow accept aflowtraceoption 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
createNetworknow acceptscomponentLoaderandbaseDirvia options. Passing them via Graph properties is deprecated - NoFlo
createNetworknow defaults to the non-legacy "network drives graph" mode - NoFlo
createNetworknow only supports thegraph, options, callbacksignature, no options given in some other order noflo.Networkinterface has been removed. UsecreateNetworkto 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.createNetworkinstead, with the following options available:
subscribeGraph: true: UsesLegacyNetworkwhich 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,subscribeGraphdefaults totrue. Adapt your applications to usefalseinstead 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 ingetComponentinstead. Changing icon and description for a specific instance (process) is not affected and is fully supported - Added optional
networkCallbackoption fornoflo.asCallbackto 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.AsyncComponentclass -- use WirePattern or Process API insteadnoflo.ArrayPortclass -- use InPort/OutPort withaddressable: trueinsteadnoflo.Portclass -- use InPort/OutPort insteadnoflo.helpers.MapComponentfunction -- use WirePattern or Process API insteadnoflo.helpers.WirePatternlegacy mode -- now WirePattern always uses Process API internallynoflo.helpers.WirePatternsynchronous mode -- useasync: trueand callbacknoflo.helpers.MultiErrorfunction -- send errors via callback or error portnoflo.InPortprocess callback -- use Process APInoflo.InPorthandle callback -- use Process APInoflo.InPortreceive method -- use Process API getX methodsnoflo.InPortcontains method -- use Process API hasX methods- Subgraph
EXPORTSmechanism -- disambiguate with INPORT/OUTPORT
- Improved errors thrown when trying to read from non-existing ports
- Added unscoped support for outports. Setting
scoped: falseon 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: falseparameter. 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
schemakey. Ports with a schema annotate their IP objects automatically with the schema unless the IP object already has a specific schema - The previous
typekey of ports is now converted to theschemakey. 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.MapComponentto use Process API internally. This helper is deprecated and components using it should be ported to Process API -
Reimplemented
noflo.helpers.WirePatternto use Process API internally. To use the original WirePattern implementation, either pass alegacy: trueto WirePattern function or setNOFLO_WIREPATTERN_LEGACYenvironment variable -
Removed WirePattern
receiveStreamsandsendStreamoptions -
Added deprecation warnings to several WirePattern options:
postponeandresume. These are still available in legacy mode but will be removed soongroupcollationfieldcollationasync: falseoptioncomponent.errormethod with WirePattern. Use async and error callback insteadcomponent.failmethod with WirePattern. Use async and error callback insteadcomponent.sendDefaultsmethod with WirePattern. Start your components with a NoFlo network to get defaults sentnoflo.helpers.MultiError. Use error callback instead
-
Added
setUpandtearDownmethods for easier handling of custom states in components. These methods take an asynchronous callback and are recommended to be used instead ofstartandshutdown -
Added callbacks for component
startandshutdownmethods -
Added a
clearmethod for inports to clear their packet buffer. Used by componentshutdownmethod -
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
indexattribute 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
connectanddisconnectevents. Instead,connectanddisconnectare 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_DEPRECATEDenvironment 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: truenoflo.Port: should be ported to noflo.In/OutPort- Calling
Network.startorNetwork.stopwithout a callback noflo.InPortprocessoption: should be ported to Process API or use thehandleoptionnoflo.InPortreceivemethod: replaced by thegetmethodnoflo.InPortcontainsmethod: replaced by thehasmethodnoflo.Graphexports: 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
scopesupport toWirePatternto makeWirePatterncomponents more concurrency-friendly -
Removed
receiveStreamsoption fromWirePattern -
Graph JSON schema has been moved to https://github.com/flowbased/fbp, and updated with tests.
-
Added stream helpers for Process API input.
hasStreamchecks if an input buffer contains a complete stream (matching brackets and data, or only data),getStreamreturns a complete stream of packets. These requireforwardBracketsto 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 ofdatatype skipping and dropping brackets inbetween -
IP objects are strictly required to be of
noflo.IPtype -
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.loadmethod now calls its callback with the Node.js styleerror, instancesignature to allow catching component loading issues- Graph merging support via the graph journal
getSourcenow 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
stopandstartmethods - The running state of a NoFlo network can be now queried with the
isRunningmethod - NoFlo networks support FBP protocol debugging via the
setDebugandgetDebugmethods Ports.addis now chainable- The
startport 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-installedto 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
dropInputoption for WirePattern to drop premature data while parameters not yet received. See #239 - Addressable ports support in WirePattern. See details.