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.
Files changed (58) hide show
  1. package/.travis.yml +5 -2
  2. package/README.md +15 -3
  3. package/browser-test/dist.html +1 -0
  4. package/browser-test/index.html +1 -0
  5. package/browser-test/min.html +1 -0
  6. package/dist/react.js +370 -322
  7. package/dist/react.min.js +22 -1
  8. package/doc/advanced.md +11 -2
  9. package/lib/base-task.js +16 -19
  10. package/lib/cb-task.js +5 -5
  11. package/lib/core.js +5 -5
  12. package/lib/dsl.js +29 -29
  13. package/lib/error.js +4 -4
  14. package/lib/event-collector.js +6 -6
  15. package/lib/event-manager.js +7 -3
  16. package/lib/eventemitter.js +3 -3
  17. package/lib/finalcb-first-task.js +4 -4
  18. package/lib/finalcb-task.js +4 -4
  19. package/lib/id.js +3 -3
  20. package/lib/input-parser.js +10 -10
  21. package/lib/log-events.js +23 -14
  22. package/lib/parse.js +3 -3
  23. package/lib/promise-resolve.js +4 -4
  24. package/lib/promise-task.js +4 -4
  25. package/lib/react.js +7 -7
  26. package/lib/ret-task.js +4 -4
  27. package/lib/sprintf.js +4 -4
  28. package/lib/status.js +3 -3
  29. package/lib/task.js +12 -12
  30. package/lib/track-tasks.js +4 -4
  31. package/lib/validate.js +8 -8
  32. package/lib/vcon.js +28 -5
  33. package/lib/when-task.js +7 -8
  34. package/package.json +17 -7
  35. package/test/ast.mocha.js +4 -4
  36. package/test/cb-task.mocha.js +17 -17
  37. package/test/core-deferred.mocha.js +8 -8
  38. package/test/core-when.mocha.js +7 -7
  39. package/test/core.mocha.js +52 -52
  40. package/test/dsl.mocha.js +45 -43
  41. package/test/event-manager.mocha.js +2 -2
  42. package/test/exec-options.mocha.js +4 -4
  43. package/test/finalcb-task.mocha.js +6 -6
  44. package/test/input-parser.mocha.js +1 -1
  45. package/test/log-events.mocha.js +88 -0
  46. package/test/module-use.mocha.js +24 -7
  47. package/test/promise-auto-resolve.mocha.js +4 -4
  48. package/test/ret-task.mocha.js +18 -18
  49. package/test/task.mocha.js +3 -3
  50. package/test/validate-cb-task.mocha.js +11 -11
  51. package/test/validate-ret-task.mocha.js +14 -14
  52. package/test/validate.mocha.js +57 -57
  53. package/test/vcon.mocha.js +13 -13
  54. package/vendor/chai/chai.js +3371 -1158
  55. package/vendor/requirejs/require.js +1447 -1455
  56. package/vendor/requirejs/require.min.js +31 -28
  57. package/vendor/mocha/mocha.css +0 -135
  58. package/vendor/mocha/mocha.js +0 -3589
@@ -1,4 +1,3 @@
1
- 'use strict';
2
1
  /*global react:true EventManager:true */
3
2
 
4
3
  if (typeof(chai) === 'undefined') {
@@ -14,6 +13,7 @@ if (typeof(EventManager) === 'undefined') {
14
13
  }
15
14
 
16
15
  (function () {
16
+ 'use strict';
17
17
 
18
18
  var t = chai.assert;
19
19
 
@@ -116,4 +116,4 @@ if (typeof(EventManager) === 'undefined') {
116
116
  em.emit('bar', 'hello');
117
117
  });
118
118
 
119
- }());
119
+ }());
@@ -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
 
@@ -25,7 +25,7 @@ if (typeof(react) === 'undefined') {
25
25
  var fn = react();
26
26
  var errors = fn.setAndValidateAST({
27
27
  inParams: ['a', 'b'],
28
- tasks: [
28
+ tasks: [
29
29
  { f: multiply, a: ['a', 'b'], out: ['c'] }
30
30
  ],
31
31
  outTask: { a: ['c'] }
@@ -36,13 +36,13 @@ if (typeof(react) === 'undefined') {
36
36
  reactExecOptions: true,
37
37
  outputStyle: 'cb'
38
38
  };
39
-
39
+
40
40
  fn(execOptions, 2, 3, function (err, c) {
41
41
  t.equal(err, null);
42
42
  t.equal(c, 6);
43
43
  done();
44
44
  });
45
- });
45
+ });
46
46
 
47
47
 
48
48
  }());
@@ -1,4 +1,3 @@
1
- 'use strict';
2
1
  /*global react:true taskUtil:true */
3
2
 
4
3
  if (typeof(chai) === 'undefined') {
@@ -10,10 +9,11 @@ if (typeof(react) === 'undefined') {
10
9
  }
11
10
 
12
11
  if (typeof(taskUtil) === 'undefined') {
13
- var taskUtil = require('../lib/task.js');
12
+ var taskUtil = require('../lib/task.js');
14
13
  }
15
14
 
16
15
  (function () {
16
+ 'use strict';
17
17
 
18
18
  var t = chai.assert;
19
19
 
@@ -27,7 +27,7 @@ if (typeof(taskUtil) === 'undefined') {
27
27
  var fn = function () {
28
28
  var finalTask = taskUtil.createOutTask({}, undefined);
29
29
  };
30
- t.throws(fn, new Error('callback is not a function'));
30
+ t.throws(fn, 'callback is not a function');
31
31
  done();
32
32
  });
33
33
 
@@ -35,7 +35,7 @@ if (typeof(taskUtil) === 'undefined') {
35
35
  var fn = function () {
36
36
  var finalTask = taskUtil.createOutTask({}, null);
37
37
  };
38
- t.throws(fn, new Error('callback is not a function'));
38
+ t.throws(fn, 'callback is not a function');
39
39
  done();
40
40
  });
41
41
 
@@ -43,7 +43,7 @@ if (typeof(taskUtil) === 'undefined') {
43
43
  var fn = function () {
44
44
  var finalTask = taskUtil.createOutTask({}, 'foo');
45
45
  };
46
- t.throws(fn, new Error('callback is not a function'));
46
+ t.throws(fn, 'callback is not a function');
47
47
  done();
48
48
  });
49
49
 
@@ -55,4 +55,4 @@ if (typeof(taskUtil) === 'undefined') {
55
55
  done();
56
56
  });
57
57
 
58
- }());
58
+ }());
@@ -1,4 +1,3 @@
1
- 'use strict';
2
1
  /*global react:true inputParser:true */
3
2
 
4
3
  if (typeof(chai) === 'undefined') {
@@ -14,6 +13,7 @@ if (typeof(inputParser) === 'undefined') {
14
13
  }
15
14
 
16
15
  (function () {
16
+ 'use strict';
17
17
 
18
18
  var t = chai.assert;
19
19
 
@@ -0,0 +1,88 @@
1
+ /*global react:true BaseTask:true */
2
+
3
+ if (typeof(chai) === 'undefined') {
4
+ var chai = require('chai');
5
+ }
6
+
7
+ if (typeof(react) === 'undefined') {
8
+ var react = require('../'); //require('react');
9
+ }
10
+
11
+ (function () {
12
+ 'use strict';
13
+
14
+ var t = chai.assert;
15
+
16
+ /**
17
+ Testing turning on logging of events
18
+ */
19
+
20
+ suite('log-events');
21
+
22
+ /**
23
+ @example
24
+ var react = require('react');
25
+ react.logEvents(); // log to console
26
+ */
27
+
28
+ before(function () {
29
+ react.logEvents();
30
+ });
31
+
32
+ after(function () {
33
+ react.logEvents(false);
34
+ });
35
+
36
+ test('use react() default DSL from module', function (done) {
37
+ function multiply(a, b, cb) { cb(null, a * b); }
38
+ function add(a, b, cb) { cb(null, a + b); }
39
+ var fn = react('multiplyAdd', 'a, b, cb -> err, m, s',
40
+ multiply, 'a, b, cb -> err, m',
41
+ add, 'm, a, cb -> err, s'
42
+ );
43
+
44
+
45
+ fn(2, 3, function (err, m, s) {
46
+ t.deepEqual(err, null, 'should not be any error');
47
+ t.equal(m, 6);
48
+ t.equal(s, 8);
49
+ done();
50
+ });
51
+ });
52
+
53
+ test('use react.selectFirst() default DSL with events', function (done) {
54
+ function noSuccess(a, b, cb) {
55
+ setTimeout(function () { cb(null); }, 100); // returns undefined result
56
+ }
57
+ function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
58
+ function add(a, b, cb) { cb(null, a + b); }
59
+
60
+
61
+ var fn = react.selectFirst('mySelectFirst', 'a, b, cb -> err, c',
62
+ noSuccess, 'a, b, cb -> err, c',
63
+ noSuccessNull, 'a, b, cb -> err, c',
64
+ add, 'a, b, cb -> err, c',
65
+ noSuccess, 'a, b, cb -> err, c'
66
+ );
67
+
68
+ var collector = react.createEventCollector();
69
+ collector.capture(fn, 'task.complete');
70
+
71
+ fn(2, 3, function (err, c) {
72
+ t.deepEqual(err, null, 'should not be any error');
73
+ t.equal(c, 5);
74
+ var events = collector.list();
75
+ t.equal(events.length, 3, 'should have seen two task compl events');
76
+ t.equal(events[0].task.name, 'noSuccess', 'name matches');
77
+ t.equal(events[1].task.name, 'noSuccessNull', 'name matches');
78
+ t.equal(events[2].task.name, 'add', 'name matches');
79
+ t.deepEqual(events[2].task.results, [5], 'results match');
80
+ done();
81
+ });
82
+ });
83
+
84
+ }());
85
+
86
+
87
+
88
+
@@ -1,4 +1,3 @@
1
- 'use strict';
2
1
  /*global react:true BaseTask:true */
3
2
 
4
3
  if (typeof(chai) === 'undefined') {
@@ -14,6 +13,7 @@ if (typeof(BaseTask) === 'undefined') {
14
13
  }
15
14
 
16
15
  (function () {
16
+ 'use strict';
17
17
 
18
18
  var t = chai.assert;
19
19
 
@@ -36,7 +36,7 @@ if (typeof(BaseTask) === 'undefined') {
36
36
  bum, 'dog, cb -> err, result2');
37
37
 
38
38
  // OR using AST
39
-
39
+
40
40
  var loadAndSave = react();
41
41
  loadAndSave.setAndValidateAST({
42
42
  inParams: ['one', 'two'],
@@ -88,7 +88,7 @@ if (typeof(BaseTask) === 'undefined') {
88
88
  { f: foo, a: ['a'], out: ['c'], type: 'cb', name: 'foo' },
89
89
  { f: bar, a: ['b'], out: ['d'], type: 'cb', name: 'bar' }
90
90
  ]);
91
- t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' }, 'should return obj just set');
91
+ t.deepEqual(r.ast.outTask, { a: ['c', 'd'], type: 'finalcb' }, 'should return obj just set');
92
92
  done();
93
93
  });
94
94
 
@@ -100,7 +100,7 @@ if (typeof(BaseTask) === 'undefined') {
100
100
  add, 'm, a, cb -> err, s'
101
101
  );
102
102
 
103
-
103
+
104
104
  fn(2, 3, function (err, m, s) {
105
105
  t.deepEqual(err, null, 'should not be any error');
106
106
  t.equal(m, 6);
@@ -116,17 +116,17 @@ if (typeof(BaseTask) === 'undefined') {
116
116
  function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
117
117
  function add(a, b, cb) { cb(null, a + b); }
118
118
 
119
-
119
+
120
120
  var fn = react.selectFirst('mySelectFirst', 'a, b, cb -> err, c',
121
121
  noSuccess, 'a, b, cb -> err, c',
122
122
  noSuccessNull, 'a, b, cb -> err, c',
123
123
  add, 'a, b, cb -> err, c',
124
- noSuccess, 'a, b, cb -> err, c'
124
+ noSuccess, 'a, b, cb -> err, c'
125
125
  );
126
126
 
127
127
  var collector = react.createEventCollector();
128
128
  collector.capture(fn, 'task.complete');
129
-
129
+
130
130
  fn(2, 3, function (err, c) {
131
131
  t.deepEqual(err, null, 'should not be any error');
132
132
  t.equal(c, 5);
@@ -140,6 +140,23 @@ if (typeof(BaseTask) === 'undefined') {
140
140
  });
141
141
  });
142
142
 
143
+ test('reference local/global vars', function (done) {
144
+ function foo(cb) {
145
+ cb(null, 100);
146
+ }
147
+
148
+ var fn = react('refGlobal', 'cb -> err, result',
149
+ 'console.log', '"using global/local ref to console" ->',
150
+ foo, 'cb -> err, result', { after: 'console.log' }
151
+ );
152
+
153
+ fn(function (err, result) {
154
+ if (err) return done(err);
155
+ t.equal(result, 100);
156
+ done();
157
+ });
158
+ });
159
+
143
160
  }());
144
161
 
145
162
 
@@ -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
 
@@ -34,7 +34,7 @@ if (typeof(Deferred) === 'undefined') {
34
34
  var fn = react();
35
35
  var errors = fn.setAndValidateAST({
36
36
  inParams: ['a', 'b'],
37
- tasks: [
37
+ tasks: [
38
38
  { f: multiply, a: ['a', 'b'], out: ['c'] },
39
39
  { f: add, a: ['c', 'b'], out: ['d'] }
40
40
  ],
@@ -51,7 +51,7 @@ if (typeof(Deferred) === 'undefined') {
51
51
  function retBP() {
52
52
  var deferred = new Deferred();
53
53
  setTimeout(function () { deferred.resolve(3); }, 10);
54
- return deferred.promise();
54
+ return deferred.promise();
55
55
  }
56
56
 
57
57
  var ap = retAP();
@@ -65,4 +65,4 @@ if (typeof(Deferred) === 'undefined') {
65
65
  });
66
66
  });
67
67
 
68
- }());
68
+ }());
@@ -1,4 +1,3 @@
1
- 'use strict';
2
1
  /*global react:true RetTask: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 RetTask({ type: 'ret', 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 RetTask({ type: 'ret', 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 RetTask({ type: 'ret', 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 RetTask({ type: 'ret', 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, obj prop 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: 'ret', 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: 'ret', 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) {
@@ -217,4 +217,4 @@ if (typeof(VContext) === 'undefined') {
217
217
  done();
218
218
  });
219
219
 
220
- }());
220
+ }());
@@ -1,4 +1,3 @@
1
- 'use strict';
2
1
  /*global react:true taskUtil:true */
3
2
 
4
3
  if (typeof(chai) === 'undefined') {
@@ -14,6 +13,7 @@ if (typeof(taskUtil) === 'undefined') {
14
13
  }
15
14
 
16
15
  (function () {
16
+ 'use strict';
17
17
 
18
18
  var t = chai.assert;
19
19
 
@@ -28,7 +28,7 @@ if (typeof(taskUtil) === 'undefined') {
28
28
 
29
29
  test('missing types are guessed from params', function (done) {
30
30
  var ast = {
31
- inParams: ['a'],
31
+ inParams: ['a'],
32
32
  tasks: [
33
33
  { f: foo, a: ['a'], out: ['baz'] },
34
34
  ],
@@ -39,4 +39,4 @@ if (typeof(taskUtil) === 'undefined') {
39
39
  done();
40
40
  });
41
41
 
42
- }());
42
+ }());