Noflo Versions Save

Flow-based programming for JavaScript

1.3.0

3 years ago
  • NoFlo createNetwork and asCallback now accept a flowtrace 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 accepts componentLoader and baseDir 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 the graph, options, callback signature, no options given in some other order
  • noflo.Network interface has been removed. Use createNetwork 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

3 years ago
  • Ported NoFlo from CoffeeScript to ES6
  • Deprecated constructing networks with new noflo.Network. Use noflo.createNetwork instead, with the following options available:
  • subscribeGraph: true: Uses LegacyNetwork which modifies network topology based on changes in graph. This can cause some types of errors to be silent.
  • subscribeGraph: false: Uses Network: 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 to true. Adapt your applications to use false 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 legacy noflo.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 in getComponent instead. Changing icon and description for a specific instance (process) is not affected and is fully supported
  • Added optional networkCallback option for noflo.asCallback to provide access to the network instance for debugging purposes

1.0.3

6 years ago

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

1.0.0

6 years ago
  • 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 instead
    • noflo.ArrayPort class -- use InPort/OutPort with addressable: true instead
    • noflo.Port class -- use InPort/OutPort instead
    • noflo.helpers.MapComponent function -- use WirePattern or Process API instead
    • noflo.helpers.WirePattern legacy mode -- now WirePattern always uses Process API internally
    • noflo.helpers.WirePattern synchronous mode -- use async: true and callback
    • noflo.helpers.MultiError function -- send errors via callback or error port
    • noflo.InPort process callback -- use Process API
    • noflo.InPort handle callback -- use Process API
    • noflo.InPort receive method -- use Process API getX methods
    • noflo.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

6 years ago
  • 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 the schema key. The schema of a port is available via the getSchema() method

0.8.0

7 years ago

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 a legacy: true to WirePattern function or set NOFLO_WIREPATTERN_LEGACY environment variable

  • Removed WirePattern receiveStreams and sendStream options

  • Added deprecation warnings to several WirePattern options:

    • postpone and resume. These are still available in legacy mode but will be removed soon
    • group collation
    • field collation
    • async: false option
    • component.error method with WirePattern. Use async and error callback instead
    • component.fail method with WirePattern. Use async and error callback instead
    • component.sendDefaults method with WirePattern. Start your components with a NoFlo network to get defaults sent
    • noflo.helpers.MultiError. Use error callback instead
  • 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

  • Added callbacks for component start and shutdown methods

  • Added a clear method for inports to clear their packet buffer. Used by component shutdown 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]
  • Added callback for Network.stop

  • 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

  • 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 API
    • noflo.helpers.MapComponent: should be ported to Process API
    • noflo.ArrayPort: should be ported to noflo.In/OutPort with addressable: true
    • noflo.Port: should be ported to noflo.In/OutPort
    • Calling Network.start or Network.stop without a callback
    • noflo.InPort process option: should be ported to Process API or use the handle option
    • noflo.InPort receive method: replaced by the get method
    • noflo.InPort contains method: replaced by the has method
    • noflo.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 to WirePattern to make WirePattern components more concurrency-friendly

  • Removed receiveStreams option from WirePattern

  • 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 require forwardBrackets 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 of data 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

0.8.1

7 years ago
  • Fixed issue with Process API WirePattern emulation on deeper bracket hierarchies
  • Fixed inport buffer clearing on component shutdown

0.5.10

9 years ago
  • Port names are now validated to only contain lowercase alphanumeric characters or underscores
  • ComponentLoader.load method now calls its callback with the Node.js style error, 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 and start 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 and getDebug 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.

0.5.9

9 years ago
  • Hotfix reverting backwards-incompatible changes in subgraph loading, see #229.

0.5.8

9 years ago
  • 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.