react 0.6.3 → 0.9.0-rc1

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 (218) hide show
  1. package/README.md +10 -222
  2. package/addons.js +1 -0
  3. package/lib/AutoFocusMixin.js +30 -0
  4. package/lib/CSSCore.js +115 -0
  5. package/lib/CSSProperty.js +121 -0
  6. package/lib/CSSPropertyOperations.js +97 -0
  7. package/lib/ChangeEventPlugin.js +387 -0
  8. package/lib/ClientReactRootIndex.js +30 -0
  9. package/lib/CompositionEventPlugin.js +260 -0
  10. package/lib/DOMChildrenOperations.js +165 -0
  11. package/lib/DOMProperty.js +268 -0
  12. package/lib/DOMPropertyOperations.js +181 -0
  13. package/lib/Danger.js +187 -0
  14. package/lib/DefaultDOMPropertyConfig.js +197 -0
  15. package/lib/DefaultEventPluginOrder.js +44 -0
  16. package/lib/EnterLeaveEventPlugin.js +145 -0
  17. package/lib/EventConstants.js +76 -0
  18. package/lib/EventListener.js +69 -0
  19. package/lib/EventPluginHub.js +291 -0
  20. package/lib/EventPluginRegistry.js +260 -0
  21. package/lib/EventPluginUtils.js +214 -0
  22. package/lib/EventPropagators.js +143 -0
  23. package/lib/ExecutionEnvironment.js +44 -0
  24. package/lib/LinkedStateMixin.js +46 -0
  25. package/lib/LinkedValueUtils.js +161 -0
  26. package/lib/MobileSafariClickEventPlugin.js +63 -0
  27. package/lib/PooledClass.js +119 -0
  28. package/lib/React.js +95 -0
  29. package/lib/ReactCSSTransitionGroup.js +65 -0
  30. package/lib/ReactCSSTransitionGroupChild.js +138 -0
  31. package/lib/ReactChildren.js +132 -0
  32. package/lib/ReactComponent.js +550 -0
  33. package/lib/ReactComponentBrowserEnvironment.js +158 -0
  34. package/lib/ReactComponentEnvironment.js +26 -0
  35. package/lib/ReactCompositeComponent.js +1455 -0
  36. package/lib/ReactContext.js +67 -0
  37. package/lib/ReactCurrentOwner.js +39 -0
  38. package/lib/ReactDOM.js +207 -0
  39. package/lib/ReactDOMButton.js +68 -0
  40. package/lib/ReactDOMComponent.js +399 -0
  41. package/lib/ReactDOMForm.js +59 -0
  42. package/lib/ReactDOMIDOperations.js +218 -0
  43. package/lib/ReactDOMImg.js +58 -0
  44. package/lib/ReactDOMInput.js +181 -0
  45. package/lib/ReactDOMOption.js +51 -0
  46. package/lib/ReactDOMSelect.js +179 -0
  47. package/lib/ReactDOMSelection.js +189 -0
  48. package/lib/ReactDOMTextarea.js +140 -0
  49. package/lib/ReactDefaultBatchingStrategy.js +75 -0
  50. package/lib/ReactDefaultInjection.js +115 -0
  51. package/lib/ReactDefaultPerf.js +244 -0
  52. package/lib/ReactDefaultPerfAnalysis.js +199 -0
  53. package/lib/ReactErrorUtils.js +37 -0
  54. package/lib/ReactEventEmitter.js +337 -0
  55. package/lib/ReactEventEmitterMixin.js +57 -0
  56. package/lib/ReactEventTopLevelCallback.js +109 -0
  57. package/lib/ReactInjection.js +39 -0
  58. package/lib/ReactInputSelection.js +140 -0
  59. package/lib/ReactInstanceHandles.js +338 -0
  60. package/lib/ReactLink.js +54 -0
  61. package/lib/ReactMarkupChecksum.js +53 -0
  62. package/lib/ReactMount.js +641 -0
  63. package/lib/ReactMountReady.js +95 -0
  64. package/lib/ReactMultiChild.js +425 -0
  65. package/lib/ReactMultiChildUpdateTypes.js +38 -0
  66. package/lib/ReactOwner.js +154 -0
  67. package/lib/ReactPerf.js +85 -0
  68. package/lib/ReactPropTransferer.js +147 -0
  69. package/lib/ReactPropTypeLocationNames.js +31 -0
  70. package/lib/ReactPropTypeLocations.js +29 -0
  71. package/lib/ReactPropTypes.js +359 -0
  72. package/lib/ReactPutListenerQueue.js +61 -0
  73. package/lib/ReactReconcileTransaction.js +181 -0
  74. package/lib/ReactRootIndex.js +36 -0
  75. package/lib/ReactServerRendering.js +59 -0
  76. package/lib/ReactStateSetters.js +111 -0
  77. package/lib/ReactTextComponent.js +99 -0
  78. package/lib/ReactTransitionChildMapping.js +106 -0
  79. package/lib/ReactTransitionEvents.js +97 -0
  80. package/lib/ReactTransitionGroup.js +187 -0
  81. package/lib/ReactUpdates.js +148 -0
  82. package/lib/ReactWithAddons.js +46 -0
  83. package/lib/SelectEventPlugin.js +200 -0
  84. package/lib/ServerReactRootIndex.js +36 -0
  85. package/lib/SimpleEventPlugin.js +413 -0
  86. package/lib/SyntheticClipboardEvent.js +51 -0
  87. package/lib/SyntheticCompositionEvent.js +51 -0
  88. package/lib/SyntheticDragEvent.js +44 -0
  89. package/lib/SyntheticEvent.js +164 -0
  90. package/lib/SyntheticFocusEvent.js +44 -0
  91. package/lib/SyntheticKeyboardEvent.js +58 -0
  92. package/lib/SyntheticMouseEvent.js +85 -0
  93. package/lib/SyntheticTouchEvent.js +50 -0
  94. package/lib/SyntheticUIEvent.js +45 -0
  95. package/lib/SyntheticWheelEvent.js +66 -0
  96. package/lib/Transaction.js +276 -0
  97. package/lib/ViewportMetrics.js +37 -0
  98. package/lib/accumulate.js +54 -0
  99. package/lib/adler32.js +39 -0
  100. package/lib/cloneWithProps.js +59 -0
  101. package/lib/containsNode.js +49 -0
  102. package/lib/copyProperties.js +54 -0
  103. package/lib/createArrayFrom.js +91 -0
  104. package/lib/createFullPageComponent.js +63 -0
  105. package/lib/createNodesFromMarkup.js +93 -0
  106. package/lib/createObjectFrom.js +61 -0
  107. package/lib/cx.js +44 -0
  108. package/lib/dangerousStyleValue.js +57 -0
  109. package/lib/emptyFunction.js +43 -0
  110. package/lib/escapeTextForBrowser.js +47 -0
  111. package/lib/flattenChildren.js +57 -0
  112. package/lib/forEachAccumulated.js +36 -0
  113. package/lib/getActiveElement.js +34 -0
  114. package/lib/getEventKey.js +85 -0
  115. package/lib/getEventTarget.js +36 -0
  116. package/lib/getMarkupWrap.js +118 -0
  117. package/lib/getNodeForCharacterOffset.js +80 -0
  118. package/lib/getReactRootElementInContainer.js +40 -0
  119. package/lib/getTextContentAccessor.js +42 -0
  120. package/lib/getUnboundedScrollPosition.js +45 -0
  121. package/lib/hyphenate.js +35 -0
  122. package/lib/invariant.js +62 -0
  123. package/lib/isEventSupported.js +70 -0
  124. package/lib/isNode.js +33 -0
  125. package/lib/isTextInputElement.js +49 -0
  126. package/lib/isTextNode.js +30 -0
  127. package/lib/joinClasses.js +44 -0
  128. package/lib/keyMirror.js +58 -0
  129. package/lib/keyOf.js +41 -0
  130. package/lib/memoizeStringOnly.js +39 -0
  131. package/lib/merge.js +37 -0
  132. package/lib/mergeHelpers.js +136 -0
  133. package/lib/mergeInto.js +45 -0
  134. package/lib/mixInto.js +34 -0
  135. package/lib/objMap.js +47 -0
  136. package/lib/objMapKeyVal.js +47 -0
  137. package/lib/onlyChild.js +43 -0
  138. package/lib/performanceNow.js +42 -0
  139. package/lib/shallowEqual.js +49 -0
  140. package/lib/shouldUpdateReactComponent.js +58 -0
  141. package/lib/toArray.js +75 -0
  142. package/lib/traverseAllChildren.js +189 -0
  143. package/lib/warning.js +40 -0
  144. package/package.json +32 -21
  145. package/react.js +1 -0
  146. package/.npmignore +0 -7
  147. package/.travis.yml +0 -5
  148. package/Jakefile.js +0 -39
  149. package/LICENSE +0 -19
  150. package/browser-test/dist.html +0 -90
  151. package/browser-test/index.html +0 -86
  152. package/browser-test/min.html +0 -90
  153. package/dist/react.js +0 -3107
  154. package/dist/react.min.js +0 -22
  155. package/doc/advanced.md +0 -174
  156. package/doc/color-def.graffle +0 -938
  157. package/doc/color-def.png +0 -0
  158. package/doc/simple.dot +0 -25
  159. package/doc/simple.png +0 -0
  160. package/examples/longer-example.js +0 -41
  161. package/examples/simple.js +0 -45
  162. package/examples/using-ast-directly.js +0 -30
  163. package/examples/using-events1.js +0 -79
  164. package/examples/using-log-events.js +0 -43
  165. package/lib/base-task.js +0 -123
  166. package/lib/cb-task.js +0 -84
  167. package/lib/core.js +0 -138
  168. package/lib/dsl.js +0 -138
  169. package/lib/error.js +0 -55
  170. package/lib/event-collector.js +0 -81
  171. package/lib/event-manager.js +0 -89
  172. package/lib/eventemitter.js +0 -20
  173. package/lib/finalcb-first-task.js +0 -68
  174. package/lib/finalcb-task.js +0 -65
  175. package/lib/id.js +0 -22
  176. package/lib/input-parser.js +0 -56
  177. package/lib/log-events.js +0 -101
  178. package/lib/parse.js +0 -41
  179. package/lib/promise-resolve.js +0 -50
  180. package/lib/promise-task.js +0 -93
  181. package/lib/react.js +0 -59
  182. package/lib/ret-task.js +0 -71
  183. package/lib/sprintf.js +0 -18
  184. package/lib/status.js +0 -14
  185. package/lib/task.js +0 -251
  186. package/lib/track-tasks.js +0 -74
  187. package/lib/validate.js +0 -159
  188. package/lib/vcon.js +0 -90
  189. package/lib/when-task.js +0 -85
  190. package/src/dist.build.requirejs +0 -20
  191. package/test/ast.mocha.js +0 -136
  192. package/test/cb-task.mocha.js +0 -220
  193. package/test/core-deferred.mocha.js +0 -143
  194. package/test/core-when.mocha.js +0 -96
  195. package/test/core.mocha.js +0 -589
  196. package/test/dsl.mocha.js +0 -350
  197. package/test/event-manager.mocha.js +0 -119
  198. package/test/exec-options.mocha.js +0 -48
  199. package/test/finalcb-task.mocha.js +0 -58
  200. package/test/input-parser.mocha.js +0 -86
  201. package/test/log-events.mocha.js +0 -88
  202. package/test/mocha.opts +0 -2
  203. package/test/module-use.mocha.js +0 -147
  204. package/test/promise-auto-resolve.mocha.js +0 -68
  205. package/test/ret-task.mocha.js +0 -220
  206. package/test/task.mocha.js +0 -42
  207. package/test/validate-cb-task.mocha.js +0 -100
  208. package/test/validate-ret-task.mocha.js +0 -110
  209. package/test/validate.mocha.js +0 -324
  210. package/test/vcon.mocha.js +0 -193
  211. package/vendor/chai/chai.js +0 -2038
  212. package/vendor/jquery/jquery-1.7.1.js +0 -9266
  213. package/vendor/jquery/jquery-1.7.1.min.js +0 -4
  214. package/vendor/mocha/mocha.css +0 -135
  215. package/vendor/mocha/mocha.js +0 -3589
  216. package/vendor/node/util.js +0 -531
  217. package/vendor/requirejs/require.js +0 -2053
  218. package/vendor/requirejs/require.min.js +0 -33
package/lib/react.js DELETED
@@ -1,59 +0,0 @@
1
- 'use strict';
2
- /*global define:true */
3
-
4
- if (typeof define !== 'function') {
5
- var define = require('amdefine')(module);
6
- }
7
-
8
- define(['./core', './dsl', './track-tasks', './log-events', './promise-resolve', './event-collector'],
9
- function (core, dsl, trackTasksFn, logEventsMod, resolvePromisesFn, eventCollectorFactory) {
10
-
11
- var react = dsl; // core + default dsl
12
-
13
- /**
14
- Enable detection of promises and resolution
15
- */
16
- function resolvePromises() {
17
- resolvePromisesFn(react);
18
- }
19
-
20
- /**
21
- Enable tracking of tasks and flow execution, emitting events and
22
- tracking start, end, elapsed time
23
- */
24
- function trackTasks() {
25
- trackTasksFn(react);
26
- }
27
-
28
- /**
29
- If called, load the built-in plugin for log events and invoke
30
-
31
- @param flowFn [function] if not provided uses global react
32
- @param eventWildcard [string] pattern to log events for
33
- */
34
- function logEvents(flowFn, eventWildcard) {
35
- if (typeof(flowFn) !== 'function') { // only wildcard provided
36
- eventWildcard = flowFn;
37
- flowFn = undefined;
38
- }
39
- if (!flowFn) flowFn = react; // use global
40
- trackTasks();
41
- return logEventsMod.logEvents(flowFn, eventWildcard);
42
- }
43
-
44
- /**
45
- Instantiate an event collector
46
- */
47
- function createEventCollector() {
48
- return eventCollectorFactory(react);
49
- }
50
-
51
- react.options = core.options; // global react options
52
- react.events = core.events; // global react event emitter
53
- react.logEvents = logEvents; // enable event logging
54
- react.resolvePromises = resolvePromises; // enable promise resolution
55
- react.trackTasks = trackTasks; // enable tracking of tasks
56
- react.createEventCollector = createEventCollector; // create instance of EventCollector
57
- return react;
58
-
59
- });
package/lib/ret-task.js DELETED
@@ -1,71 +0,0 @@
1
- 'use strict';
2
- /*global define:true */
3
-
4
- if (typeof define !== 'function') {
5
- var define = require('amdefine')(module);
6
- }
7
-
8
- define(['util', './sprintf', './base-task'], function (util, sprintf, BaseTask) {
9
-
10
- function format_error(errmsg, obj) {
11
- return sprintf('%s - %s', errmsg, util.inspect(obj));
12
- }
13
-
14
- var REQ = 'retTask requires f, a, out';
15
- var FN_REQ = 'retTask requires f to be a function or string';
16
- var A_REQ = 'retTask requires a to be an array of string param names';
17
- var RET_REQ = 'retTask requires out to be an array with single string param name or []';
18
-
19
- function RetTask(taskDef) {
20
- var self = this;
21
- Object.keys(taskDef).forEach(function (k) { self[k] = taskDef[k]; });
22
- }
23
-
24
- RetTask.prototype = new BaseTask();
25
- RetTask.prototype.constructor = RetTask;
26
-
27
- RetTask.validate = function (taskDef) {
28
- var errors = [];
29
- if (!taskDef.f || !taskDef.a || !taskDef.out) {
30
- errors.push(format_error(REQ, taskDef));
31
- } else {
32
- var ftype = typeof(taskDef.f);
33
- if (! ((taskDef.f instanceof Function) || (ftype === 'string'))) {
34
- errors.push(format_error(FN_REQ, taskDef));
35
- }
36
- if (! (Array.isArray(taskDef.a) &&
37
- taskDef.a.every(function (x) { return (typeof(x) === 'string'); }))) {
38
- errors.push(format_error(A_REQ, taskDef));
39
- }
40
-
41
- if (! (Array.isArray(taskDef.out) &&
42
- (taskDef.out.length === 0 ||
43
- (taskDef.out.length === 1 && typeof(taskDef.out[0] === 'string'))))) {
44
- errors.push(format_error(RET_REQ, taskDef));
45
- }
46
- }
47
- return errors;
48
- };
49
-
50
- RetTask.prototype.exec = function exec(vCon, handleError, contExec) {
51
- try {
52
- var args = this.a.map(function (k) { return vCon.getVar(k); }); //get args from vCon
53
- this.start(args); //note the start time, args
54
- var func = this.f;
55
- var bindObj = vCon.getVar('this'); //global space or the original this
56
- if (this.isMethodCall()) { //if method call then reset func and bindObj
57
- func = vCon.getVar(this.f);
58
- bindObj = this.getMethodObj(vCon);
59
- } else if (typeof(func) === 'string') {
60
- func = vCon.getVar(func); // we want the actual fn from this string
61
- }
62
- var results = [func.apply(bindObj, args)];
63
- vCon.saveResults(this.out, results); // save retval, takes arrays
64
- this.complete(results);
65
- contExec(); // continue since no callback to run this
66
- } catch (err) { handleError(this, err); } // catch and handle the task error, calling final cb
67
- };
68
-
69
- return RetTask;
70
-
71
- });
package/lib/sprintf.js DELETED
@@ -1,18 +0,0 @@
1
- 'use strict';
2
- /*global define:true sprint:true */
3
-
4
- if (typeof define !== 'function') {
5
- var define = require('amdefine')(module);
6
- }
7
-
8
- define(['util'], function (util) {
9
-
10
- /**
11
- Abstract the details of getting a sprintf function.
12
- Currently using the simple format capabilities of node's util.format
13
- */
14
-
15
- var sprintf = util.format;
16
- return sprintf;
17
-
18
- });
package/lib/status.js DELETED
@@ -1,14 +0,0 @@
1
- 'use strict';
2
- /*global define:true */
3
-
4
- if (typeof define !== 'function') {
5
- var define = require('amdefine')(module);
6
- }
7
-
8
- define([], function () {
9
-
10
- var STATUS = { READY: 'ready', RUNNING: 'running', ERRORED: 'errored', COMPLETE: 'complete' };
11
-
12
- return STATUS;
13
-
14
- });
package/lib/task.js DELETED
@@ -1,251 +0,0 @@
1
- 'use strict';
2
- /*global define:true */
3
-
4
- if (typeof define !== 'function') {
5
- var define = require('amdefine')(module);
6
- }
7
-
8
- define(['util', './sprintf', 'ensure-array', './cb-task', './promise-task',
9
- './ret-task', './when-task', './finalcb-task', './finalcb-first-task',
10
- './status', './error', './vcon', './event-manager'],
11
- function (util, sprintf, array, CbTask, PromiseTask,
12
- RetTask, WhenTask, FinalCbTask, FinalCbFirstSuccTask,
13
- STATUS, error, VContext, EventManager) {
14
-
15
- var TASK_TYPES = {
16
- cb: CbTask,
17
- ret: RetTask,
18
- promise: PromiseTask,
19
- when: WhenTask
20
- };
21
-
22
- var DEFAULT_TASK_NAME = 'task_%s'; // for unnamed tasks use task_idx, like task_0
23
-
24
- function taskTypeKeys() { return Object.keys(TASK_TYPES); }
25
-
26
- var OUT_TASK_TYPES = {
27
- finalcb: FinalCbTask, //first task is the default if no type specified in taskDef
28
- finalcbFirst: FinalCbFirstSuccTask
29
- };
30
- function outTaskTypeKeys() { return Object.keys(OUT_TASK_TYPES); }
31
-
32
- var LOCAL_FN_MISSING = 'function: %s not found in locals or input params - task[%s]';
33
- var TASKDEF_IS_OBJECT = 'task must be an object';
34
- var NO_TASKS_RUNNING_WONT_COMPLETE = 'no tasks running, flow will not complete, remaining tasks: %s';
35
- var TASK_TYPE_SHOULD_MATCH = 'task.type should match one of ' +
36
- Object.keys(TASK_TYPES).join(', ');
37
-
38
- function format_error(errmsg, obj) {
39
- return sprintf('%s - %s', errmsg, util.inspect(obj));
40
- }
41
-
42
- /**
43
- guess the missing types from params.
44
- Augments in place but also returns taskDef.
45
- If not specified then is 'cb'
46
- */
47
- function setMissingType(taskDef) {
48
- if (taskDef.type) return taskDef; //already set, return
49
- taskDef.type = 'cb';
50
- return taskDef;
51
- }
52
-
53
- function setMissingOutTaskType(taskDef) {
54
- if (!taskDef.type) taskDef.type = Object.keys(OUT_TASK_TYPES)[0]; //use first outTask type as default
55
- }
56
-
57
- function ensureAfterArrStrings(taskDef) { // convert any fn to str, and make sure is array
58
- if (!taskDef.after) return;
59
- var afterArr = array(taskDef.after); // ensure is array, null becomes []
60
- afterArr = afterArr.map(function (a) { return (typeof(a) === 'function') ? a.name : a; });
61
- taskDef.after = afterArr;
62
- }
63
-
64
- /**
65
- @returns array of errors for taskDef, could be empty
66
- */
67
- function validate(taskDef) {
68
- if (!taskDef || typeof(taskDef) !== 'object') {
69
- return [format_error(TASKDEF_IS_OBJECT, taskDef)];
70
- }
71
- setMissingType(taskDef);
72
- ensureAfterArrStrings(taskDef);
73
- var errors = [];
74
- errors = errors.concat(validateTaskType(taskDef));
75
- errors = errors.concat(validateTask(taskDef));
76
- return errors;
77
- }
78
-
79
- function validateTaskType(taskDef) {
80
- var errors = [];
81
- if (!Object.keys(TASK_TYPES).some(
82
- function (type) { return (taskDef.type === type); })) {
83
- errors.push(format_error(TASK_TYPE_SHOULD_MATCH, taskDef));
84
- }
85
- return errors;
86
- }
87
-
88
- function validateTask(taskDef) {
89
- var errors = [];
90
- var taskCons = TASK_TYPES[taskDef.type];
91
- if (taskCons) {
92
- errors = errors.concat(taskCons.validate(taskDef));
93
- }
94
- return errors;
95
- }
96
-
97
- function validateOutTask(taskDef) {
98
- var errors = [];
99
- setMissingOutTaskType(taskDef);
100
- var taskCons = OUT_TASK_TYPES[taskDef.type];
101
- errors = errors.concat(taskCons.validate(taskDef));
102
- return errors;
103
- }
104
-
105
-
106
- function validateLocalFunctions(inParams, taskDefs, locals) {
107
- var errors = [];
108
- function foo() { } //used to mock args as fns for validation check
109
- var mock_args = inParams.map(function (p) { return foo; }); //mock args with fns
110
- var vCon = VContext.create(mock_args, inParams, locals);
111
- var tasks = taskDefs.map(create);
112
- var tasksWFunctions = tasks.filter(function (t) { return (t.type !== 'when'); }); // non-when tasks need f
113
- tasksWFunctions.forEach(function (t, idx) {
114
- if (!t.functionExists(vCon)) { // error if function doesnt exist AND
115
- if (!t.isMethodCall()) errors.push(sprintf(LOCAL_FN_MISSING, t.f, idx)); // not method OR
116
- else {
117
- var obj = t.getMethodObj(vCon);
118
- if (obj && obj !== foo) { // (has parent but not our mock)
119
- errors.push(sprintf(LOCAL_FN_MISSING, t.f, idx));
120
- }
121
- }
122
- }
123
- });
124
- return errors;
125
- }
126
-
127
- function fName(fn) {
128
- if (typeof(fn) === 'function') {
129
- return fn.name;
130
- }
131
- return (fn) ? fn : '';
132
- }
133
-
134
- /**
135
- Name tasks that are not already named. Prenamed task uniquness validation
136
- will be done in validate.
137
-
138
- This modifies the tasks with the new names.
139
-
140
- @returns map of names to tasks
141
- */
142
- function nameTasks(tasks) { //name tasks that are not already named, validation done elsewhere, ret map
143
- var namesMap = tasks.reduce(function (map, t) {
144
- if (t.name) { map[t.name] = t; }
145
- return map;
146
- }, {});
147
- tasks.forEach(function (t, idx) {
148
- if (!t.name) { //not already named
149
- var name = fName(t.f);
150
- if (!name) name = sprintf(DEFAULT_TASK_NAME, idx);
151
- if (!name || namesMap[name]) {
152
- name = sprintf('%s_%s', name, idx); //if empty or already used, postfix with _idx
153
- }
154
- t.name = name;
155
- namesMap[name] = t;
156
- }
157
- });
158
- return namesMap;
159
- }
160
-
161
- function create(taskDef) {
162
- var TaskConstructor = TASK_TYPES[taskDef.type];
163
- return new TaskConstructor(taskDef);
164
- }
165
-
166
- function createOutTask(taskDef, cbFunc, tasks, vCon, execOptions, env) {
167
- setMissingOutTaskType(taskDef);
168
- var outTaskOptions = {
169
- taskDef: taskDef,
170
- cbFunc: cbFunc,
171
- tasks: tasks,
172
- vCon: vCon,
173
- execOptions: execOptions,
174
- env: env,
175
- TaskConstructor: OUT_TASK_TYPES[taskDef.type]
176
- };
177
- EventManager.global.emit(EventManager.TYPES.EXEC_OUTTASK_CREATE, outTaskOptions); // hook
178
- var TaskConstructor = outTaskOptions.TaskConstructor; // hook could have changed
179
- return new TaskConstructor(outTaskOptions);
180
- }
181
-
182
- function createErrorHandler(vCon, outTask) {
183
- return function handleError(task, err) {
184
- task.status = STATUS.ERRORED;
185
- task.error = err;
186
- outTask.env.currentTask = task;
187
- outTask.env.flowEmitter.emit(EventManager.TYPES.EXEC_TASK_ERRORED, task);
188
- var errWithMeta = error.augmentError(err, {task: task, vcon: vCon});
189
- outTask.exec(errWithMeta); //call the final callback with the first error hit
190
- };
191
- }
192
-
193
- function findTasksReady(vCon, tasks, tasksByName) {
194
- return tasks.filter(function (t) { return t.isReady(vCon, tasksByName); });
195
- }
196
-
197
- function execTasks(tasksReady, vCon, handleError, contExec) {
198
- tasksReady.forEach(function (t) { t.status = STATUS.READY; }); //set ready first, no double exec
199
- tasksReady.forEach(function (t) { t.exec(vCon, handleError, contExec); });
200
- }
201
-
202
- /**
203
- this will be called if there are no tasks found to run,
204
- and it will check if there are still tasks running or ready
205
- (which means they will be running shortly), in which
206
- case everything is fine. If no tasks are running then
207
- call handleError since this will never complete.
208
- */
209
- function checkIfTasksRunning(vCon, tasks, handleError, env) {
210
- var tasksRunning = tasks.filter(function (t) {
211
- return (t.status === STATUS.RUNNING || t.status === STATUS.READY);
212
- });
213
- if (!tasksRunning.length) {
214
- var remainingTasks = tasks.filter(function (t) { return (!t.status); });
215
- var remainingTNames = remainingTasks.map(function (t) { return t.name; });
216
- var errMsg = sprintf(NO_TASKS_RUNNING_WONT_COMPLETE, remainingTNames.join(', '));
217
- var emptyTask = { env: env };
218
- handleError(emptyTask, new Error(errMsg));
219
- }
220
- }
221
-
222
- function findReadyAndExec(vCon, tasks, tasksByName, handleError, contExec, env) {
223
- var tasksReady = findTasksReady(vCon, tasks, tasksByName);
224
- if (!tasksReady.length) checkIfTasksRunning(vCon, tasks, handleError, env); // no tasks to run, check if ok
225
- execTasks(tasksReady, vCon, handleError, contExec);
226
- }
227
-
228
- function serializeTasks(tasks) { // conveniently set after for each task idx > 0
229
- nameTasks(tasks);
230
- tasks.forEach(function (t, idx, arr) { if (idx !== 0) t.after = [arr[idx - 1].name]; });
231
- return tasks;
232
- }
233
-
234
- return {
235
- serializeTasks: serializeTasks,
236
- TASK_TYPES: TASK_TYPES,
237
- taskTypeKeys: taskTypeKeys,
238
- OUT_TASK_TYPES: OUT_TASK_TYPES,
239
- outTaskTypeKeys: outTaskTypeKeys,
240
- setMissingType: setMissingType,
241
- validate: validate,
242
- validateOutTask: validateOutTask,
243
- validateLocalFunctions: validateLocalFunctions,
244
- nameTasks: nameTasks,
245
- create: create,
246
- createOutTask: createOutTask,
247
- createErrorHandler: createErrorHandler,
248
- findReadyAndExec: findReadyAndExec
249
- };
250
-
251
- });
@@ -1,74 +0,0 @@
1
- 'use strict';
2
- /*global define:true */
3
-
4
- if (typeof define !== 'function') {
5
- var define = require('amdefine')(module);
6
- }
7
-
8
- define([], function () {
9
-
10
- /**
11
- Track the tasks, start, complete, args, results, elapsed time
12
- Emits events that can be monitored
13
-
14
- - track start and complete
15
- - record args each task was called with
16
- - record results at completion
17
- - record start, end, and calc elapsed time
18
- - emits flow.begin with flowEnv
19
- - emits task.begin with task
20
- - emits task.complete with task
21
- - emits flow complete with flowEnv
22
- - emits flow errored with flowEnv
23
-
24
- @example
25
- var react = require('react');
26
- react.trackTasks(); // enable task and flow tracking
27
- */
28
-
29
-
30
- var trackingTasks = false;
31
-
32
- function trackTasks(react) {
33
- if (trackingTasks) return; // already tracking
34
- trackingTasks = true;
35
-
36
- react.events.on(react.events.TYPES.EXEC_FLOW_START, function (env) {
37
- env.startTime = Date.now();
38
- env.flowEmitter.emit(react.events.TYPES.FLOW_BEGIN, env); //fire public ev
39
- });
40
-
41
- react.events.on(react.events.TYPES.EXEC_TASK_START, function (task) {
42
- task.startTime = Date.now();
43
- task.env.flowEmitter.emit(react.events.TYPES.TASK_BEGIN, task); //fire public ev
44
- });
45
-
46
- react.events.on(react.events.TYPES.EXEC_TASK_COMPLETE, function (task) {
47
- task.endTime = Date.now();
48
- task.elapsedTime = task.endTime - task.startTime;
49
- task.env.flowEmitter.emit(react.events.TYPES.TASK_COMPLETE, task); // fire public ev
50
- });
51
-
52
- react.events.on(react.events.TYPES.EXEC_TASK_ERRORED, function (task) {
53
- task.endTime = Date.now();
54
- task.elapsedTime = task.endTime - task.startTime;
55
- task.env.flowEmitter.emit(react.events.TYPES.TASK_ERRORED, task); // fire public ev
56
- });
57
-
58
- react.events.on(react.events.TYPES.EXEC_FLOW_COMPLETE, function (env) {
59
- env.endTime = Date.now();
60
- env.elapsedTime = env.endTime - env.startTime;
61
- env.flowEmitter.emit(react.events.TYPES.FLOW_COMPLETE, env); //fire public ev
62
- });
63
-
64
- react.events.on(react.events.TYPES.EXEC_FLOW_ERRORED, function (env) {
65
- env.endTime = Date.now();
66
- env.elapsedTime = env.endTime - env.startTime;
67
- env.flowEmitter.emit(react.events.TYPES.FLOW_ERRORED, env); //fire public ev
68
- });
69
-
70
- }
71
-
72
- return trackTasks;
73
-
74
- });