react 0.6.1 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.travis.yml +5 -2
- package/README.md +15 -3
- package/browser-test/dist.html +1 -0
- package/browser-test/index.html +1 -0
- package/browser-test/min.html +1 -0
- package/dist/react.js +370 -322
- package/dist/react.min.js +22 -1
- package/doc/advanced.md +11 -2
- package/lib/base-task.js +16 -19
- package/lib/cb-task.js +5 -5
- package/lib/core.js +5 -5
- package/lib/dsl.js +29 -29
- package/lib/error.js +4 -4
- package/lib/event-collector.js +6 -6
- package/lib/event-manager.js +7 -3
- package/lib/eventemitter.js +3 -3
- package/lib/finalcb-first-task.js +4 -4
- package/lib/finalcb-task.js +4 -4
- package/lib/id.js +3 -3
- package/lib/input-parser.js +10 -10
- package/lib/log-events.js +23 -14
- package/lib/parse.js +3 -3
- package/lib/promise-resolve.js +4 -4
- package/lib/promise-task.js +4 -4
- package/lib/react.js +7 -7
- package/lib/ret-task.js +4 -4
- package/lib/sprintf.js +4 -4
- package/lib/status.js +3 -3
- package/lib/task.js +12 -12
- package/lib/track-tasks.js +4 -4
- package/lib/validate.js +8 -8
- package/lib/vcon.js +28 -5
- package/lib/when-task.js +7 -8
- package/package.json +17 -7
- package/test/ast.mocha.js +4 -4
- package/test/cb-task.mocha.js +17 -17
- package/test/core-deferred.mocha.js +8 -8
- package/test/core-when.mocha.js +7 -7
- package/test/core.mocha.js +52 -52
- package/test/dsl.mocha.js +45 -43
- package/test/event-manager.mocha.js +2 -2
- package/test/exec-options.mocha.js +4 -4
- package/test/finalcb-task.mocha.js +6 -6
- package/test/input-parser.mocha.js +1 -1
- package/test/log-events.mocha.js +88 -0
- package/test/module-use.mocha.js +24 -7
- package/test/promise-auto-resolve.mocha.js +4 -4
- package/test/ret-task.mocha.js +18 -18
- package/test/task.mocha.js +3 -3
- package/test/validate-cb-task.mocha.js +11 -11
- package/test/validate-ret-task.mocha.js +14 -14
- package/test/validate.mocha.js +57 -57
- package/test/vcon.mocha.js +13 -13
- package/vendor/chai/chai.js +3371 -1158
- package/vendor/requirejs/require.js +1447 -1455
- package/vendor/requirejs/require.min.js +31 -28
- package/vendor/mocha/mocha.css +0 -135
- package/vendor/mocha/mocha.js +0 -3589
package/lib/track-tasks.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global define:true */
|
|
3
2
|
|
|
4
3
|
if (typeof define !== 'function') {
|
|
@@ -6,7 +5,8 @@ if (typeof define !== 'function') {
|
|
|
6
5
|
}
|
|
7
6
|
|
|
8
7
|
define([], function () {
|
|
9
|
-
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
10
|
/**
|
|
11
11
|
Track the tasks, start, complete, args, results, elapsed time
|
|
12
12
|
Emits events that can be monitored
|
|
@@ -69,6 +69,6 @@ define([], function () {
|
|
|
69
69
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
return trackTasks;
|
|
72
|
+
return trackTasks;
|
|
73
73
|
|
|
74
|
-
});
|
|
74
|
+
});
|
package/lib/validate.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global define:true */
|
|
3
2
|
|
|
4
3
|
if (typeof define !== 'function') {
|
|
@@ -6,8 +5,9 @@ if (typeof define !== 'function') {
|
|
|
6
5
|
}
|
|
7
6
|
|
|
8
7
|
define(['util', './sprintf', 'ensure-array', './task'], function (util, sprintf, array, taskUtil) {
|
|
8
|
+
'use strict';
|
|
9
9
|
/*jshint latedef:false */
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
var AST_IS_OBJECT = 'ast must be an object with inParams, tasks, and outTask';
|
|
12
12
|
var INPARAMS_ARR_STR = 'ast.inParams must be an array of strings';
|
|
13
13
|
var TASKS_ARR = 'ast.tasks must be an array of tasks';
|
|
@@ -17,7 +17,7 @@ define(['util', './sprintf', 'ensure-array', './task'], function (util, sprintf,
|
|
|
17
17
|
var MISSING_INPUTS = 'missing or mispelled variable referenced in flow definition: %s';
|
|
18
18
|
|
|
19
19
|
// match any of our literals true, false, int, float, quoted strings, or is property (has dot), match vcon.js
|
|
20
|
-
var LITERAL_OR_PROP_RE = /^(true|false|this|null|\-?[0-9\.]+)$|'|"|\./i;
|
|
20
|
+
var LITERAL_OR_PROP_RE = /^(true|false|this|null|\-?[0-9\.]+)$|'|"|\./i;
|
|
21
21
|
|
|
22
22
|
function format_error(errmsg, obj) {
|
|
23
23
|
return sprintf('%s - %s', errmsg, util.inspect(obj));
|
|
@@ -73,11 +73,11 @@ define(['util', './sprintf', 'ensure-array', './task'], function (util, sprintf,
|
|
|
73
73
|
tasks.forEach(function (t) {
|
|
74
74
|
errors = errors.concat(taskUtil.validate(t));
|
|
75
75
|
});
|
|
76
|
-
|
|
76
|
+
return errors;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
function validateTaskNamesUnique(tasks) {
|
|
80
|
-
|
|
80
|
+
if (!Array.isArray(tasks)) return [];
|
|
81
81
|
var errors = [];
|
|
82
82
|
var namedTasks = tasks.filter(function (t) { return (t.name); });
|
|
83
83
|
var names = namedTasks.map(function (t) { return t.name; });
|
|
@@ -85,7 +85,7 @@ define(['util', './sprintf', 'ensure-array', './task'], function (util, sprintf,
|
|
|
85
85
|
if (accum[name]) errors.push(sprintf('%s %s', NAMES_UNIQUE, name));
|
|
86
86
|
else accum[name] = true;
|
|
87
87
|
return accum;
|
|
88
|
-
}, {});
|
|
88
|
+
}, {});
|
|
89
89
|
return errors;
|
|
90
90
|
}
|
|
91
91
|
|
|
@@ -151,9 +151,9 @@ define(['util', './sprintf', 'ensure-array', './task'], function (util, sprintf,
|
|
|
151
151
|
if (!isLiteralOrProp(p) && !names[p]) accum.push(sprintf(MISSING_INPUTS, p)); // add error if missing
|
|
152
152
|
return accum;
|
|
153
153
|
}, errors);
|
|
154
|
-
return errors;
|
|
154
|
+
return errors;
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
return validate;
|
|
158
158
|
|
|
159
|
-
});
|
|
159
|
+
});
|
package/lib/vcon.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global define:true */
|
|
3
2
|
|
|
4
3
|
if (typeof define !== 'function') {
|
|
@@ -6,7 +5,8 @@ if (typeof define !== 'function') {
|
|
|
6
5
|
}
|
|
7
6
|
|
|
8
7
|
define([], function () {
|
|
9
|
-
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
10
|
var LAST_RESULTS_KEY = ':LAST_RESULTS';
|
|
11
11
|
|
|
12
12
|
function VContext() {
|
|
@@ -29,10 +29,23 @@ define([], function () {
|
|
|
29
29
|
var m = /^("|')([^\1]*)\1$/.exec(name); //check for quoted string " or '
|
|
30
30
|
if (m) return m[2]; // if is quoted str, return inside of the quotes
|
|
31
31
|
var nameAndProps = name.split('.');
|
|
32
|
-
|
|
32
|
+
var result = this.resolveNameArr(nameAndProps);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
VContext.prototype.resolveNameArr = function (nameAndProps) {
|
|
37
|
+
var vConValues = this.values;
|
|
38
|
+
var result = nameAndProps.reduce(function (accObj, prop) {
|
|
33
39
|
if (accObj === undefined || accObj === null) return undefined; // prevent exception
|
|
34
40
|
return accObj[prop];
|
|
35
41
|
}, vConValues); // vCon['foo']['bar']
|
|
42
|
+
if (result === undefined && this.global !== undefined) { // see if matches any global
|
|
43
|
+
result = nameAndProps.reduce(function (accObj, prop) {
|
|
44
|
+
if (accObj === undefined || accObj === null) return undefined; // prevent exception
|
|
45
|
+
return accObj[prop];
|
|
46
|
+
}, this.global); // global['foo']['bar']
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
36
49
|
};
|
|
37
50
|
|
|
38
51
|
/**
|
|
@@ -62,7 +75,7 @@ define([], function () {
|
|
|
62
75
|
}, vConValues); // vCon['foo']['bar']
|
|
63
76
|
obj[lastProp] = value;
|
|
64
77
|
};
|
|
65
|
-
|
|
78
|
+
|
|
66
79
|
|
|
67
80
|
/**
|
|
68
81
|
Create Variable Context using arguments passed in.
|
|
@@ -72,6 +85,7 @@ define([], function () {
|
|
|
72
85
|
@param self used to pass 'this' context in
|
|
73
86
|
*/
|
|
74
87
|
VContext.create = function (args, inParams, locals, self) {
|
|
88
|
+
/*jshint validthis:true, evil:true */
|
|
75
89
|
var initValues = {};
|
|
76
90
|
if (self) initValues['this'] = self;
|
|
77
91
|
if (locals) Object.keys(locals).forEach(function (k) { initValues[k] = locals[k]; }); // copy over keys
|
|
@@ -81,10 +95,19 @@ define([], function () {
|
|
|
81
95
|
if (param) vcon[param] = (x !== undefined) ? x : null; // upgrade undefined to null
|
|
82
96
|
return vcon;
|
|
83
97
|
}, initValues);
|
|
98
|
+
|
|
99
|
+
// add in global
|
|
100
|
+
if (typeof global === 'object') { // node.js and modern browsers expose global
|
|
101
|
+
vContext.global = global;
|
|
102
|
+
} else { // try to access this using Function eval of this
|
|
103
|
+
// http://stackoverflow.com/questions/3277182/how-to-get-the-global-object-in-javascript
|
|
104
|
+
vContext.global = new Function('return this')();
|
|
105
|
+
}
|
|
106
|
+
|
|
84
107
|
return vContext;
|
|
85
108
|
};
|
|
86
109
|
|
|
87
110
|
|
|
88
111
|
return VContext;
|
|
89
112
|
|
|
90
|
-
});
|
|
113
|
+
});
|
package/lib/when-task.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global define:true */
|
|
3
2
|
|
|
4
3
|
if (typeof define !== 'function') {
|
|
@@ -6,7 +5,8 @@ if (typeof define !== 'function') {
|
|
|
6
5
|
}
|
|
7
6
|
|
|
8
7
|
define(['util', './sprintf', './base-task'], function (util, sprintf, BaseTask) {
|
|
9
|
-
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
10
|
/**
|
|
11
11
|
When task which checks if is a promise (has a then method)
|
|
12
12
|
and waits for it to resolve.
|
|
@@ -30,19 +30,18 @@ define(['util', './sprintf', './base-task'], function (util, sprintf, BaseTask)
|
|
|
30
30
|
WhenTask.prototype = new BaseTask();
|
|
31
31
|
WhenTask.prototype.constructor = WhenTask;
|
|
32
32
|
|
|
33
|
-
WhenTask.prototype.f = function when() { // just here to keep validations happy
|
|
34
|
-
}
|
|
33
|
+
WhenTask.prototype.f = function when() { }; // just here to keep validations happy
|
|
35
34
|
|
|
36
35
|
WhenTask.validate = function (taskDef) {
|
|
37
36
|
var errors = [];
|
|
38
37
|
if (!taskDef.a || !taskDef.out) {
|
|
39
38
|
errors.push(format_error(REQ, taskDef));
|
|
40
39
|
} else {
|
|
41
|
-
if (! (Array.isArray(taskDef.a) && taskDef.a.length === 1 &&
|
|
40
|
+
if (! (Array.isArray(taskDef.a) && taskDef.a.length === 1 &&
|
|
42
41
|
taskDef.a.every(function (x) { return (typeof(x) === 'string'); }))) {
|
|
43
42
|
errors.push(format_error(A_REQ, taskDef));
|
|
44
43
|
}
|
|
45
|
-
if (! (Array.isArray(taskDef.out) && taskDef.out.length <= 1 &&
|
|
44
|
+
if (! (Array.isArray(taskDef.out) && taskDef.out.length <= 1 &&
|
|
46
45
|
taskDef.out.every(function (x) { return (typeof(x) === 'string'); }))) {
|
|
47
46
|
errors.push(format_error(OUT_REQ, taskDef));
|
|
48
47
|
}
|
|
@@ -77,9 +76,9 @@ define(['util', './sprintf', './base-task'], function (util, sprintf, BaseTask)
|
|
|
77
76
|
}
|
|
78
77
|
} catch (err) { //catch and handle the task error, calling final cb
|
|
79
78
|
handleError(this, err);
|
|
80
|
-
}
|
|
79
|
+
}
|
|
81
80
|
};
|
|
82
81
|
|
|
83
82
|
return WhenTask;
|
|
84
83
|
|
|
85
|
-
});
|
|
84
|
+
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react",
|
|
3
3
|
"description": "React is a javascript module implementing a lightweight rules engine to make it easier to work with asynchronous code, by reducing boilerplate code and improving error and exception handling while allowing variable and task dependencies when defining flow.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.7.1",
|
|
5
5
|
"author": "Jeff Barczewski <jeff.barczewski@gmail.com>",
|
|
6
6
|
"repository": { "type": "git", "url": "http://github.com/jeffbski/react.git" },
|
|
7
7
|
"bugs" : { "url": "http://github.com/jeffbski/react/issues" },
|
|
@@ -9,17 +9,27 @@
|
|
|
9
9
|
"main": "lib/react",
|
|
10
10
|
"engines": { "node": ">=0.6" },
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"amdefine": "~0.0.
|
|
13
|
-
"eventemitter2": "~0.4.
|
|
12
|
+
"amdefine": "~0.0.5",
|
|
13
|
+
"eventemitter2": "~0.4.11",
|
|
14
14
|
"ensure-array": "~0.0.5"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"requirejs": "~1.
|
|
18
|
-
"mocha": "~
|
|
19
|
-
"chai": "~
|
|
20
|
-
"jake": "~0.
|
|
17
|
+
"requirejs": "~2.1.6",
|
|
18
|
+
"mocha": "~1.10.0",
|
|
19
|
+
"chai": "~1.6.0",
|
|
20
|
+
"jake": "~0.5.15",
|
|
21
21
|
"Deferred" : "~0.1.1"
|
|
22
22
|
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"flow",
|
|
25
|
+
"flow control",
|
|
26
|
+
"control flow",
|
|
27
|
+
"dataflow",
|
|
28
|
+
"reactive",
|
|
29
|
+
"deferred",
|
|
30
|
+
"promise",
|
|
31
|
+
"async"
|
|
32
|
+
],
|
|
23
33
|
"scripts": {
|
|
24
34
|
"test": "./node_modules/mocha/bin/mocha ./test/*.mocha.js"
|
|
25
35
|
}
|
package/test/ast.mocha.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global react:true */
|
|
3
2
|
|
|
4
3
|
if (typeof(chai) === 'undefined') {
|
|
@@ -10,6 +9,7 @@ if (typeof(react) === 'undefined') {
|
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
(function () {
|
|
12
|
+
'use strict';
|
|
13
13
|
|
|
14
14
|
var t = chai.assert;
|
|
15
15
|
|
|
@@ -57,7 +57,7 @@ if (typeof(react) === 'undefined') {
|
|
|
57
57
|
var fn = react();
|
|
58
58
|
var collector = react.createEventCollector();
|
|
59
59
|
collector.capture(fn, 'ast.*');
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
var errors = fn.setAndValidateAST({
|
|
62
62
|
inParams: ['res', 'prefstr', 'poststr'],
|
|
63
63
|
tasks: [
|
|
@@ -80,7 +80,7 @@ if (typeof(react) === 'undefined') {
|
|
|
80
80
|
|
|
81
81
|
test('ast.defined event is passed to process', function (done) {
|
|
82
82
|
// browser might not have this, so only if process is an eventemitter
|
|
83
|
-
if (process && process.once) {
|
|
83
|
+
if (typeof process !== 'undefined' && process && process.once) {
|
|
84
84
|
var fn = react();
|
|
85
85
|
process.once('ast.defined', function (ast) {
|
|
86
86
|
t.isObject(ast);
|
|
@@ -99,7 +99,7 @@ if (typeof(react) === 'undefined') {
|
|
|
99
99
|
{ f: postfix, a: ['plres', 'poststr'], out: ['plresp'] }
|
|
100
100
|
],
|
|
101
101
|
outTask: { a: ['plresp'] }
|
|
102
|
-
});
|
|
102
|
+
});
|
|
103
103
|
} else {
|
|
104
104
|
done(); //skipping in browser
|
|
105
105
|
}
|
package/test/cb-task.mocha.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global react:true CbTask:true VContext:true */
|
|
3
2
|
|
|
4
3
|
if (typeof(chai) === 'undefined') {
|
|
@@ -18,6 +17,7 @@ if (typeof(VContext) === 'undefined') {
|
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
(function () {
|
|
20
|
+
'use strict';
|
|
21
21
|
|
|
22
22
|
var t = chai.assert;
|
|
23
23
|
|
|
@@ -66,7 +66,7 @@ if (typeof(VContext) === 'undefined') {
|
|
|
66
66
|
t.equal(task.isReady(vCon, tasksByName), false);
|
|
67
67
|
task.status = null;
|
|
68
68
|
t.equal(task.isReady(vCon, tasksByName), true);
|
|
69
|
-
done();
|
|
69
|
+
done();
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
test('no args defined, no after -> not ready', function (done) {
|
|
@@ -82,39 +82,39 @@ if (typeof(VContext) === 'undefined') {
|
|
|
82
82
|
var vCon = VContext.create([1, {}], ['b', 'c']);
|
|
83
83
|
var tasksByName = { foo: task };
|
|
84
84
|
t.equal(task.isReady(vCon, tasksByName), false);
|
|
85
|
-
done();
|
|
85
|
+
done();
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
test('all args defined, no after, out no obj parent -> NOT ready', function (done) {
|
|
89
89
|
var task = new CbTask({ type: 'cb', f: foo, a: ['b', 'c'], out: ['d.e'] });
|
|
90
90
|
var vCon = VContext.create([1, null], ['b', 'c']);
|
|
91
91
|
var tasksByName = { foo: task };
|
|
92
|
-
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
|
|
93
|
-
done();
|
|
92
|
+
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
|
|
93
|
+
done();
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
test('all args defined, no after, out no obj.par.par -> NOT ready', function (done) {
|
|
97
97
|
var task = new CbTask({ type: 'cb', f: foo, a: ['b', 'c'], out: ['c.e.f'] });
|
|
98
98
|
var vCon = VContext.create([1, { }], ['b', 'c']);
|
|
99
99
|
var tasksByName = { foo: task };
|
|
100
|
-
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
|
|
101
|
-
done();
|
|
100
|
+
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
|
|
101
|
+
done();
|
|
102
102
|
});
|
|
103
103
|
|
|
104
104
|
test('all args defined, no after, out null obj parent -> NOT ready', function (done) {
|
|
105
105
|
var task = new CbTask({ type: 'cb', f: foo, a: ['b', 'c'], out: ['c.e'] });
|
|
106
106
|
var vCon = VContext.create([1, null], ['b', 'c']);
|
|
107
107
|
var tasksByName = { foo: task };
|
|
108
|
-
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
|
|
109
|
-
done();
|
|
108
|
+
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
|
|
109
|
+
done();
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
test('all args defined, no after, out null obj.par.par -> NOT ready', function (done) {
|
|
113
113
|
var task = new CbTask({ type: 'cb', f: foo, a: ['b', 'c'], out: ['c.e.f'] });
|
|
114
114
|
var vCon = VContext.create([1, { e: null }], ['b', 'c']);
|
|
115
115
|
var tasksByName = { foo: task };
|
|
116
|
-
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
|
|
117
|
-
done();
|
|
116
|
+
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
|
|
117
|
+
done();
|
|
118
118
|
});
|
|
119
119
|
|
|
120
120
|
test('all args defined, no after -> ready', function (done) {
|
|
@@ -122,7 +122,7 @@ if (typeof(VContext) === 'undefined') {
|
|
|
122
122
|
var vCon = VContext.create([1, null], ['b', 'c']);
|
|
123
123
|
var tasksByName = { foo: task };
|
|
124
124
|
t.equal(task.isReady(vCon, tasksByName), true);
|
|
125
|
-
done();
|
|
125
|
+
done();
|
|
126
126
|
});
|
|
127
127
|
|
|
128
128
|
test('all args defined, objprop null, no after -> ready', function (done) {
|
|
@@ -130,7 +130,7 @@ if (typeof(VContext) === 'undefined') {
|
|
|
130
130
|
var vCon = VContext.create([1, { prop: null }], ['b', 'c']);
|
|
131
131
|
var tasksByName = { foo: task };
|
|
132
132
|
t.equal(task.isReady(vCon, tasksByName), true);
|
|
133
|
-
done();
|
|
133
|
+
done();
|
|
134
134
|
});
|
|
135
135
|
|
|
136
136
|
test('all args defined, after not complete -> NOT ready', function (done) {
|
|
@@ -140,8 +140,8 @@ if (typeof(VContext) === 'undefined') {
|
|
|
140
140
|
{ type: 'cb', f: foo, a: ['b', 'c'], out: [], after: ['cat', 'bar']});
|
|
141
141
|
var vCon = VContext.create([1, 2], ['b', 'c']);
|
|
142
142
|
var tasksByName = { foo: task, bar: tbar, cat: tcat };
|
|
143
|
-
t.equal(task.isReady(vCon, tasksByName), false);
|
|
144
|
-
done();
|
|
143
|
+
t.equal(task.isReady(vCon, tasksByName), false);
|
|
144
|
+
done();
|
|
145
145
|
});
|
|
146
146
|
|
|
147
147
|
test('all args defined, after all complete -> ready', function (done) {
|
|
@@ -151,8 +151,8 @@ if (typeof(VContext) === 'undefined') {
|
|
|
151
151
|
{ type: 'cb', f: foo, a: ['b', 'c'], out: [], after: ['cat', 'bar']});
|
|
152
152
|
var vCon = VContext.create([1, 2], ['b', 'c']);
|
|
153
153
|
var tasksByName = { foo: task, bar: tbar, cat: tcat };
|
|
154
|
-
t.equal(task.isReady(vCon, tasksByName), true);
|
|
155
|
-
done();
|
|
154
|
+
t.equal(task.isReady(vCon, tasksByName), true);
|
|
155
|
+
done();
|
|
156
156
|
});
|
|
157
157
|
|
|
158
158
|
test('string without . is not method call', function (done) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global react:true Deferred:true */
|
|
3
2
|
|
|
4
3
|
if (typeof(chai) === 'undefined') {
|
|
@@ -14,6 +13,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
(function () {
|
|
16
|
+
'use strict';
|
|
17
17
|
|
|
18
18
|
var t = chai.assert;
|
|
19
19
|
|
|
@@ -55,7 +55,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
55
55
|
var fn = react();
|
|
56
56
|
var errors = fn.setAndValidateAST({
|
|
57
57
|
inParams: ['a', 'b'],
|
|
58
|
-
tasks: [
|
|
58
|
+
tasks: [
|
|
59
59
|
{ f: multiply, a: ['a', 'b'], out: ['c'], type: 'promise' },
|
|
60
60
|
{ f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
|
|
61
61
|
],
|
|
@@ -69,7 +69,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
69
69
|
t.equal(d, 9);
|
|
70
70
|
done();
|
|
71
71
|
});
|
|
72
|
-
});
|
|
72
|
+
});
|
|
73
73
|
|
|
74
74
|
test('using "this" in a cb function', function (done) {
|
|
75
75
|
function getA(cb) {
|
|
@@ -81,11 +81,11 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
81
81
|
}, 10);
|
|
82
82
|
return deferred.promise();
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
var fn = react();
|
|
86
86
|
var errors = fn.setAndValidateAST({
|
|
87
87
|
inParams: [],
|
|
88
|
-
tasks: [
|
|
88
|
+
tasks: [
|
|
89
89
|
{ f: getA, a: [], out: ['a'], type: 'promise' }
|
|
90
90
|
],
|
|
91
91
|
outTask: { a: ['a'] }
|
|
@@ -108,7 +108,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
108
108
|
var fn = react();
|
|
109
109
|
var errors = fn.setAndValidateAST({
|
|
110
110
|
inParams: ['a', 'b'],
|
|
111
|
-
tasks: [
|
|
111
|
+
tasks: [
|
|
112
112
|
{ f: badFunc, a: ['a', 'b'], out: ['c'], type: 'promise' },
|
|
113
113
|
{ f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
|
|
114
114
|
],
|
|
@@ -126,7 +126,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
126
126
|
var fn = react();
|
|
127
127
|
var errors = fn.setAndValidateAST({
|
|
128
128
|
inParams: ['a', 'b'],
|
|
129
|
-
tasks: [
|
|
129
|
+
tasks: [
|
|
130
130
|
{ f: badF2, a: ['a', 'b'], out: ['c'], type: 'promise' },
|
|
131
131
|
{ f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
|
|
132
132
|
],
|
|
@@ -140,4 +140,4 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
140
140
|
});
|
|
141
141
|
});
|
|
142
142
|
|
|
143
|
-
}());
|
|
143
|
+
}());
|