UNPKG

1.5 kBJavaScriptView Raw
1var define;
2if (typeof define === "undefined")
3 define = function (classInstance) {
4 classInstance (require, exports, module);
5 }
6
7define (function (require, exports, module) {
8
9var EventEmitter = require ('events').EventEmitter,
10 util = require ('util'),
11 flow = require ('../flow');
12
13/**
14 * @class initiator.token
15 * @extends events.EventEmitter
16 *
17 * This is a basic initiator. Actually, this initiator launch dataflow when
18 * control code is calling this initiator directly.
19 */
20
21var tokenInitiator = module.exports = function (config) {
22 var self = this;
23
24 this.flows = config.workflows || config.dataflows || config.flows;
25}
26
27util.inherits (tokenInitiator, EventEmitter);
28
29tokenInitiator.prototype.prepare = function () {
30 this.emit ('ready');
31}
32
33tokenInitiator.prototype.process = function (token, dfRequire) {
34
35 var self = this;
36
37 var dfConf;
38
39 if (self.flows.constructor === Array) {
40 self.flows.map (function (item) {
41
42 var match = (token == item.token);
43
44 if (match) { //exact match
45 dfConf = item;
46 }
47 });
48 } else { // assume object
49 dfConf = self.flows[token];
50 }
51
52 if (!dfConf) {
53 self.emit ("unknown", dfRequire);
54 return;
55 }
56
57 var df = new flow (
58 util.extend (true, {}, dfConf),
59 dfRequire
60 );
61
62 self.emit ("detected", dfRequire, df);
63 if (dfConf.autoRun || dfConf.autoRun === undefined || dfRequire.autoRun || dfRequire.autoRun === undefined)
64 df.runDelayed ();
65
66 if (!df) {
67 self.emit ("unknown", dfRequire);
68 return;
69 }
70
71 return df;
72}
73
74});