A live updated data structure is represented as a
RecordScope, which extends
Record from @swim/structure. An ordinary
Record can be recursively
compiled into a
RecordScope by invoking the
RecordScope.from factory method.
RecordScope has all of its nested expressions replaced by their
evaluated state. But unlike evaluating a
Record with an
Interpreter, if a
member of a
RecordScope changes, all expressions that transitively depend on
that member get flagged for recomputation, which occurs the next time
recohereInput gets invoked on the
Dataflow.compile method can also be used to compile an arbitrary
@swim/structure expression into an
Outlet that updates whenever
the state of any of its transitively dependend expressions changes.
For an npm-managed project,
npm install @swim/dataflow to
make it a dependency. TypeScript sources will be installed into
definition files install into
And a pre-built UMD script can be found in
Browser applications can load
swim-core.js, which comes bundled with the
@swim/dataflow library, directly from the SwimOS CDN.
<!-- Development --> <script src="https://cdn.swimos.org/js/latest/swim-core.js"></script> <!-- Production --> <script src="https://cdn.swimos.org/js/latest/swim-core.min.js"></script>
Alternatively, the standalone
swim-system.js script may be loaded
from the SwimOS CDN, which bundles @swim/dataflow together with all other
<!-- Development --> <script src="https://cdn.swimos.org/js/latest/swim-system.js"></script> <!-- Production --> <script src="https://cdn.swimos.org/js/latest/swim-system.min.js"></script>
@swim/dataflow can be imported as an ES6 module from TypeScript and other ES6-compatible environments.
import * as dataflow from "@swim/dataflow";
@swim/dataflow can also be used as a CommonJS module in Node.js applications.
var dataflow = require("@swim/dataflow");
When loaded by a web browser, the
swim-core.js script adds all
@swim/dataflow library exports to the global
swim-system.js script also adds all @swim/dataflow library exports
to the global
swim namespace, making it a drop-in replacement for
swim-core.js when additional @swim/system libraries are needed.