noflo
Version:
Flow-Based Programming environment for JavaScript
119 lines (92 loc) • 2.75 kB
JavaScript
(function() {
var fbpGraph, ports;
fbpGraph = require('fbp-graph');
exports.graph = fbpGraph.graph;
exports.Graph = fbpGraph.Graph;
exports.journal = fbpGraph.journal;
exports.Journal = fbpGraph.Journal;
exports.Network = require('./Network').Network;
exports.isBrowser = require('./Platform').isBrowser;
exports.ComponentLoader = require('./ComponentLoader').ComponentLoader;
exports.Component = require('./Component').Component;
exports.AsyncComponent = require('./AsyncComponent').AsyncComponent;
exports.helpers = require('./Helpers');
exports.streams = require('./Streams');
ports = require('./Ports');
exports.InPorts = ports.InPorts;
exports.OutPorts = ports.OutPorts;
exports.InPort = require('./InPort');
exports.OutPort = require('./OutPort');
exports.Port = require('./Port').Port;
exports.ArrayPort = require('./ArrayPort').ArrayPort;
exports.internalSocket = require('./InternalSocket');
exports.IP = require('./IP');
exports.createNetwork = function(graph, callback, options) {
var network, networkReady;
if (typeof options !== 'object') {
options = {
delay: options
};
}
if (typeof callback !== 'function') {
callback = function(err) {
if (err) {
throw err;
}
};
}
network = new exports.Network(graph, options);
networkReady = function(network) {
return network.start(function(err) {
if (err) {
return callback(err);
}
return callback(null, network);
});
};
network.loader.listComponents(function(err) {
if (err) {
return callback(err);
}
if (graph.nodes.length === 0) {
return networkReady(network);
}
if (options.delay) {
callback(null, network);
return;
}
return network.connect(function(err) {
if (err) {
return callback(err);
}
return networkReady(network);
});
});
return network;
};
exports.loadFile = function(file, options, callback) {
var baseDir;
if (!callback) {
callback = options;
baseDir = null;
}
if (callback && typeof options !== 'object') {
options = {
baseDir: options
};
}
return exports.graph.loadFile(file, function(err, net) {
if (err) {
return callback(err);
}
if (options.baseDir) {
net.baseDir = options.baseDir;
}
return exports.createNetwork(net, callback, options);
});
};
exports.saveFile = function(graph, file, callback) {
return exports.graph.save(file, callback);
};
exports.asCallback = require('./AsCallback').asCallback;
}).call(this);