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 util:true sprintf:true validate:true */
3
2
 
4
3
  if (typeof(chai) === 'undefined') {
@@ -22,6 +21,7 @@ if (typeof(validate) === 'undefined') {
22
21
  }
23
22
 
24
23
  (function () {
24
+ 'use strict';
25
25
 
26
26
  var t = chai.assert;
27
27
 
@@ -36,19 +36,19 @@ if (typeof(validate) === 'undefined') {
36
36
 
37
37
  test('cbTask requires f, a, out', function (done) {
38
38
  var ast = {
39
- inParams: ['a'],
39
+ inParams: ['a'],
40
40
  tasks: [{ type: 'cb' }],
41
41
  outTask: { a: ['bar'] }
42
42
  };
43
43
  var msg = sprintf('cbTask requires f, a, out - %s',
44
44
  util.inspect(ast.tasks[0]));
45
- t.deepEqual(validate(ast), [msg]);
45
+ t.deepEqual(validate(ast), [msg]);
46
46
  done();
47
47
  });
48
-
48
+
49
49
  test('cbTask verifies f type', function (done) {
50
50
  var ast = {
51
- inParams: ['a'],
51
+ inParams: ['a'],
52
52
  tasks: [{ type: 'cb', f: foo, a: [], out: [] }],
53
53
  outTask: { a: ['bar'] }
54
54
  };
@@ -61,39 +61,39 @@ if (typeof(validate) === 'undefined') {
61
61
 
62
62
  test('cbTask verifies a type', function (done) {
63
63
  var ast = {
64
- inParams: ['a'],
64
+ inParams: ['a'],
65
65
  tasks: [{ type: 'cb', f: foo, a: [], out: [] }],
66
66
  outTask: { a: ['bar'] }
67
67
  };
68
68
  ast.tasks[0].a = 'foo'; //err should be arr of strings
69
69
  var msg = sprintf('cbTask requires a to be an array of string param names - %s',
70
70
  util.inspect(ast.tasks[0]));
71
- t.deepEqual(validate(ast), [msg]);
71
+ t.deepEqual(validate(ast), [msg]);
72
72
 
73
73
  ast = Object.create(ast);
74
74
  ast.tasks[0].a = ['foo', 1]; //err should be arr of strings
75
75
  msg = sprintf('cbTask requires a to be an array of string param names - %s',
76
76
  util.inspect(ast.tasks[0]));
77
- t.deepEqual(validate(ast), [msg]);
77
+ t.deepEqual(validate(ast), [msg]);
78
78
  done();
79
79
  });
80
80
 
81
81
  test('cbTask verifies out type', function (done) {
82
82
  var ast = {
83
- inParams: ['a'],
83
+ inParams: ['a'],
84
84
  tasks: [{ type: 'cb', f: foo, a: [], out: [] }],
85
85
  outTask: { a: ['bar'] }
86
86
  };
87
87
  ast.tasks[0].out = 'foo'; //err should be arr of strings
88
88
  var msg = sprintf('cbTask requires out to be an array of string param names - %s',
89
89
  util.inspect(ast.tasks[0]));
90
- t.deepEqual(validate(ast), [msg]);
90
+ t.deepEqual(validate(ast), [msg]);
91
91
 
92
92
  ast = Object.create(ast);
93
93
  ast.tasks[0].out = ['foo', 1]; //err should be arr of strings
94
94
  msg = sprintf('cbTask requires out to be an array of string param names - %s',
95
95
  util.inspect(ast.tasks[0]));
96
- t.deepEqual(validate(ast), [msg]);
96
+ t.deepEqual(validate(ast), [msg]);
97
97
  done();
98
98
  });
99
99
 
@@ -1,4 +1,3 @@
1
- 'use strict';
2
1
  /*global react:true util:true sprintf:true validate:true */
3
2
 
4
3
  if (typeof(chai) === 'undefined') {
@@ -22,6 +21,7 @@ if (typeof(validate) === 'undefined') {
22
21
  }
23
22
 
24
23
  (function () {
24
+ 'use strict';
25
25
 
26
26
  var t = chai.assert;
27
27
 
@@ -36,19 +36,19 @@ if (typeof(validate) === 'undefined') {
36
36
 
37
37
  test('retTask requires f, a, out', function (done) {
38
38
  var ast = {
39
- inParams: ['a'],
39
+ inParams: ['a'],
40
40
  tasks: [{ type: 'ret' }],
41
41
  outTask: { a: ['bar'] }
42
42
  };
43
43
  var msg = sprintf('retTask requires f, a, out - %s',
44
44
  util.inspect(ast.tasks[0]));
45
- t.deepEqual(validate(ast), [msg]);
45
+ t.deepEqual(validate(ast), [msg]);
46
46
  done();
47
47
  });
48
-
48
+
49
49
  test('retTask verifies f type', function (done) {
50
50
  var ast = {
51
- inParams: ['a'],
51
+ inParams: ['a'],
52
52
  tasks: [{ type: 'ret', f: foo, a: [], out: ['bar'] }],
53
53
  outTask: { a: ['bar'] }
54
54
  };
@@ -61,50 +61,50 @@ if (typeof(validate) === 'undefined') {
61
61
 
62
62
  test('retTask verifies a type', function (done) {
63
63
  var ast = {
64
- inParams: ['a'],
64
+ inParams: ['a'],
65
65
  tasks: [{ type: 'ret', f: foo, a: [], out: ['bar'] }],
66
66
  outTask: { a: ['bar'] }
67
67
  };
68
68
  ast.tasks[0].a = 'foo'; //err should be arr of strings
69
69
  var msg = sprintf('retTask requires a to be an array of string param names - %s',
70
70
  util.inspect(ast.tasks[0]));
71
- t.deepEqual(validate(ast), [msg]);
71
+ t.deepEqual(validate(ast), [msg]);
72
72
 
73
73
  ast = Object.create(ast);
74
74
  ast.tasks[0].a = ['foo', 1]; //err should be arr of strings
75
75
  msg = sprintf('retTask requires a to be an array of string param names - %s',
76
76
  util.inspect(ast.tasks[0]));
77
- t.deepEqual(validate(ast), [msg]);
77
+ t.deepEqual(validate(ast), [msg]);
78
78
  done();
79
79
  });
80
80
 
81
81
  test('retTask verifies out type', function (done) {
82
82
  var ast = {
83
- inParams: ['a'],
83
+ inParams: ['a'],
84
84
  tasks: [{ type: 'ret', f: foo, a: [], out: ['bar'] }],
85
85
  outTask: { a: ['bar'] }
86
86
  };
87
87
  ast.tasks[0].out = 'foo'; //err should be array with single string or []
88
88
  var msg = sprintf('retTask requires out to be an array with single string param name or [] - %s',
89
89
  util.inspect(ast.tasks[0]));
90
- t.deepEqual(validate(ast), [msg]);
90
+ t.deepEqual(validate(ast), [msg]);
91
91
 
92
92
  ast = Object.create(ast);
93
93
  ast.tasks[0].out = 123; //err should be array with single string or []
94
94
  msg = sprintf('retTask requires out to be an array with single string param name or [] - %s',
95
95
  util.inspect(ast.tasks[0]));
96
- t.deepEqual(validate(ast), [msg]);
96
+ t.deepEqual(validate(ast), [msg]);
97
97
  done();
98
98
  });
99
99
 
100
100
  test('valid retTask', function (done) {
101
101
  var ast = {
102
- inParams: ['a'],
102
+ inParams: ['a'],
103
103
  tasks: [{ type: 'ret', f: foo, a: [], out: ['bar'] }],
104
104
  outTask: { a: ['bar'] }
105
105
  };
106
- t.deepEqual(validate(ast), []);
106
+ t.deepEqual(validate(ast), []);
107
107
  done();
108
108
  });
109
109
 
110
- }());
110
+ }());
@@ -1,4 +1,3 @@
1
- 'use strict';
2
1
  /*global react:true util:true sprintf:true validate:true taskUtil:true */
3
2
 
4
3
  if (typeof(chai) === 'undefined') {
@@ -26,6 +25,7 @@ if (typeof(taskUtil) === 'undefined') {
26
25
  }
27
26
 
28
27
  (function () {
28
+ 'use strict';
29
29
 
30
30
  var t = chai.assert;
31
31
 
@@ -57,7 +57,7 @@ if (typeof(taskUtil) === 'undefined') {
57
57
  t.deepEqual(validate(ast), ['ast.inParams must be an array of strings']);
58
58
 
59
59
  ast.inParams = [1]; //err not an array of strings
60
- t.deepEqual(validate(ast), ['ast.inParams must be an array of strings']);
60
+ t.deepEqual(validate(ast), ['ast.inParams must be an array of strings']);
61
61
  done();
62
62
  });
63
63
 
@@ -73,19 +73,19 @@ if (typeof(taskUtil) === 'undefined') {
73
73
 
74
74
  test('each task must be an object', function (done) {
75
75
  var ast = {
76
- inParams: ['a'],
76
+ inParams: ['a'],
77
77
  tasks: [1], //err not array of objects
78
78
  outTask: { a: ['bar'] }
79
79
  };
80
- t.deepEqual(validate(ast), ['task must be an object - 1']);
80
+ t.deepEqual(validate(ast), ['task must be an object - 1']);
81
81
  done();
82
-
82
+
83
83
  });
84
84
 
85
-
85
+
86
86
  test('each task in ast.tasks must match a valid task type', function (done) {
87
87
  var ast = {
88
- inParams: ['a'],
88
+ inParams: ['a'],
89
89
  tasks: [{ type: 'zoo', f: foo, a: [], out: ['bar'] }], //err wrong type
90
90
  outTask: { a: ['bar'] }
91
91
  };
@@ -97,48 +97,48 @@ if (typeof(taskUtil) === 'undefined') {
97
97
 
98
98
  test('ast.outTask.a should be an array of string param names', function (done) {
99
99
  var ast = {
100
- inParams: ['a'],
101
- tasks: [{ f: foo, a: [], out: ['bar'], type: 'ret' }],
100
+ inParams: ['a'],
101
+ tasks: [{ f: foo, a: [], out: ['bar'], type: 'ret' }],
102
102
  outTask: { a: ['bar'] }
103
103
  };
104
104
  ast.outTask = {}; //err a should be an arr
105
105
  var msg = sprintf('ast.outTask.a should be an array of string param names - %s',
106
106
  util.inspect({ type: 'finalcb' }));
107
- t.deepEqual(validate(ast), [msg]);
107
+ t.deepEqual(validate(ast), [msg]);
108
108
 
109
109
  ast.outTask = { type: 'finalcb', a: 'bar' }; //err a should be an arr
110
110
  msg = sprintf('ast.outTask.a should be an array of string param names - %s',
111
111
  util.inspect(ast.outTask));
112
- t.deepEqual(validate(ast), [msg]);
112
+ t.deepEqual(validate(ast), [msg]);
113
113
 
114
114
  ast.outTask = { type: 'finalcb', a: ['bar', 1] }; //err a should be an arr of strings
115
115
  msg = sprintf('ast.outTask.a should be an array of string param names - %s',
116
116
  util.inspect(ast.outTask));
117
- t.deepEqual(validate(ast), [msg]);
117
+ t.deepEqual(validate(ast), [msg]);
118
118
 
119
119
  ast.outTask = { a: [] }; //valid
120
- t.deepEqual(validate(ast), []);
120
+ t.deepEqual(validate(ast), []);
121
121
  done();
122
122
  });
123
123
 
124
124
  test('ast.tasks that specify name need to be unique', function (done) {
125
125
  var ast = {
126
- inParams: ['a'],
126
+ inParams: ['a'],
127
127
  tasks: [
128
128
  { f: foo, a: [], out: ['bar'], name: 'dog' },
129
129
  { f: foo, a: [], out: ['bar'], name: 'dog' }
130
- ],
130
+ ],
131
131
  outTask: { a: ['bar'] }
132
132
  };
133
133
  var msg = sprintf('ast.tasks that specify name need to be unique, duplicate: %s',
134
134
  'dog');
135
- t.deepEqual(validate(ast), [msg]);
135
+ t.deepEqual(validate(ast), [msg]);
136
136
  done();
137
137
  });
138
-
138
+
139
139
  test('ast.locals should be non-null if passed in', function (done) {
140
140
  var ast = {
141
- inParams: ['a'],
141
+ inParams: ['a'],
142
142
  tasks: [{ f: foo, a: [], out: ['bar'], type: 'ret' }],
143
143
  outTask: { a: ['bar'] },
144
144
  locals: null //err should be non-null if passed in
@@ -152,173 +152,173 @@ if (typeof(taskUtil) === 'undefined') {
152
152
 
153
153
  test('non-method string functions need to map to fn in locals or in params', function (done) {
154
154
  var ast = {
155
- inParams: ['a'],
155
+ inParams: ['a'],
156
156
  tasks: [{ f: 'foo', a: [], out: ['bar'], type: 'ret' }],
157
157
  outTask: { a: ['bar'] },
158
158
  locals: { }
159
159
  };
160
- var msg = sprintf('function: %s not found in locals or input params - task[%s]',
160
+ var msg = sprintf('function: %s not found in locals or input params - task[%s]',
161
161
  'foo', 0);
162
- t.deepEqual(validate(ast), [msg]);
162
+ t.deepEqual(validate(ast), [msg]);
163
163
  done();
164
164
  });
165
165
 
166
166
  test('string functions maps to fn in locals', function (done) {
167
167
  var ast = {
168
- inParams: ['a'],
168
+ inParams: ['a'],
169
169
  tasks: [{ f: 'cat.bar', a: [], out: ['bar'], type: 'ret' }],
170
170
  outTask: { a: ['bar'] },
171
171
  locals: { cat: { bar: foo }}
172
172
  };
173
- t.deepEqual(validate(ast), []);
173
+ t.deepEqual(validate(ast), []);
174
174
  done();
175
175
  });
176
176
 
177
177
  test('string functions maps to fn in inputs', function (done) {
178
178
  var ast = {
179
- inParams: ['a1', 'dog'],
179
+ inParams: ['a1', 'dog'],
180
180
  tasks: [{ f: 'dog.food', a: [], out: ['bar'], type: 'ret' }],
181
181
  outTask: { a: ['bar'] },
182
182
  locals: { }
183
183
  };
184
- t.deepEqual(validate(ast), []);
184
+ t.deepEqual(validate(ast), []);
185
185
  done();
186
186
  });
187
187
 
188
188
  test('string functions need to map to fn in locals or in params', function (done) {
189
189
  var ast = {
190
- inParams: ['a'],
190
+ inParams: ['a'],
191
191
  tasks: [{ f: 'foo.bar', a: [], out: ['bar'], type: 'ret' }],
192
192
  outTask: { a: ['bar'] },
193
193
  locals: { foo: {}}
194
194
  };
195
- var msg = sprintf('function: %s not found in locals or input params - task[%s]',
195
+ var msg = sprintf('function: %s not found in locals or input params - task[%s]',
196
196
  'foo.bar', 0);
197
- t.deepEqual(validate(ast), [msg]);
197
+ t.deepEqual(validate(ast), [msg]);
198
198
  done();
199
199
  });
200
200
 
201
201
  test('param func str fn need to map to fn in locals or in params', function (done) {
202
202
  var ast = {
203
- inParams: ['a'],
203
+ inParams: ['a'],
204
204
  tasks: [{ f: 'a', a: [], out: ['bar'], type: 'ret' }],
205
205
  outTask: { a: ['bar'] },
206
206
  locals: { }
207
207
  };
208
- t.deepEqual(validate(ast), []);
208
+ t.deepEqual(validate(ast), []);
209
209
  done();
210
210
  });
211
211
 
212
212
  test('param obj exist func str needs map to fn in locals or in params', function (done) {
213
213
  var ast = {
214
- inParams: ['a'],
214
+ inParams: ['a'],
215
215
  tasks: [{ f: 'a.b', a: [], out: ['bar'], type: 'ret' }],
216
216
  outTask: { a: ['bar'] },
217
217
  locals: { }
218
218
  };
219
- t.deepEqual(validate(ast), []);
219
+ t.deepEqual(validate(ast), []);
220
220
  done();
221
221
  });
222
222
 
223
223
  test('param obj !exist func str needs map to fn in locals or in params', function (done) {
224
224
  var ast = {
225
- inParams: ['a'],
225
+ inParams: ['a'],
226
226
  tasks: [{ f: 'd.e', a: [], out: ['bar'], type: 'ret' }],
227
227
  outTask: { a: ['bar'] },
228
228
  locals: { }
229
229
  };
230
- t.deepEqual(validate(ast), []);
230
+ t.deepEqual(validate(ast), []);
231
231
  done();
232
232
  });
233
233
 
234
234
  test('multiple tasks output the same param, must be unique', function (done) {
235
235
  var ast = {
236
- inParams: ['a'],
236
+ inParams: ['a'],
237
237
  tasks: [
238
238
  { f: foo, a: [], out: ['baz', 'c'] },
239
239
  { f: bar, a: [], out: ['c'] }
240
- ],
240
+ ],
241
241
  outTask: { a: ['baz'] }
242
242
  };
243
243
  var msg = 'multiple tasks output the same param, must be unique. param: c';
244
- t.deepEqual(validate(ast), [msg]);
244
+ t.deepEqual(validate(ast), [msg]);
245
245
  done();
246
246
  });
247
247
 
248
248
  test('missing or mispelled input variable', function (done) {
249
249
  var ast = {
250
- inParams: [],
250
+ inParams: [],
251
251
  tasks: [
252
252
  { f: foo, a: [], out: [] },
253
253
  { f: bar, a: ['abc'], out: [] }
254
- ],
254
+ ],
255
255
  outTask: { a: [] }
256
256
  };
257
257
  var msg = 'missing or mispelled variable referenced in flow definition: abc';
258
- t.deepEqual(validate(ast), [msg]);
259
- done();
258
+ t.deepEqual(validate(ast), [msg]);
259
+ done();
260
260
  });
261
261
 
262
262
  test('missing or mispelled input variables', function (done) {
263
263
  var ast = {
264
- inParams: ['aaa', 'bbb'],
264
+ inParams: ['aaa', 'bbb'],
265
265
  tasks: [
266
266
  { f: foo, a: ['aaa', 'cat'], out: ['ccc'] },
267
267
  { f: bar, a: ['abc', 'bbb', 'ccc'], out: [] }
268
- ],
268
+ ],
269
269
  outTask: { a: [] }
270
270
  };
271
271
  var messages = [
272
272
  'missing or mispelled variable referenced in flow definition: cat',
273
273
  'missing or mispelled variable referenced in flow definition: abc'
274
274
  ];
275
- t.deepEqual(validate(ast), messages);
276
- done();
275
+ t.deepEqual(validate(ast), messages);
276
+ done();
277
277
  });
278
278
 
279
279
  test('missing or mispelled final output variables', function (done) {
280
280
  var ast = {
281
- inParams: ['aaa'],
281
+ inParams: ['aaa'],
282
282
  tasks: [
283
283
  { f: foo, a: ['aaa'], out: ['bbb'] },
284
284
  { f: bar, a: ['bbb'], out: ['ccc'] }
285
- ],
285
+ ],
286
286
  outTask: { a: ['ccc', 'ddd', 'eee'] }
287
287
  };
288
288
  var messages = [
289
289
  'missing or mispelled variable referenced in flow definition: ddd',
290
290
  'missing or mispelled variable referenced in flow definition: eee'
291
291
  ];
292
- t.deepEqual(validate(ast), messages);
293
- done();
292
+ t.deepEqual(validate(ast), messages);
293
+ done();
294
294
  });
295
295
 
296
296
  test('missing or mispelled validation ignores properties', function (done) {
297
297
  var ast = {
298
- inParams: ['obj'],
298
+ inParams: ['obj'],
299
299
  tasks: [
300
300
  { f: foo, a: ['obj.foo'], out: [] },
301
301
  { f: bar, a: ['obj.bar'], out: [] }
302
- ],
302
+ ],
303
303
  outTask: { a: ['obj.cat'] }
304
304
  };
305
- t.deepEqual(validate(ast), []);
306
- done();
305
+ t.deepEqual(validate(ast), []);
306
+ done();
307
307
  });
308
308
 
309
309
  test('missing or mispelled validation ignores literals', function (done) {
310
310
  var ast = {
311
- inParams: [],
311
+ inParams: [],
312
312
  tasks: [
313
313
  { f: foo, a: ['true', 'false', '123', '123.1', 'null'], out: [] },
314
314
  { f: bar, a: ['-123', '-123.4', '"wow"', "'hey'"], out: [] },
315
315
  { f: foo, a: ['"two-words"', "'also-two'", '"two.words"', "'also.two'"], out: [] },
316
316
  { f: foo, a: ['this'], out: [] }
317
- ],
317
+ ],
318
318
  outTask: { a: [] }
319
319
  };
320
- t.deepEqual(validate(ast), []);
321
- done();
320
+ t.deepEqual(validate(ast), []);
321
+ done();
322
322
  });
323
323
 
324
324
  }());