react 0.3.5 → 0.6.0

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 (310) hide show
  1. package/.npmignore +2 -1
  2. package/.travis.yml +4 -0
  3. package/Jakefile.js +34 -3
  4. package/README.md +34 -174
  5. package/browser-test/dist.html +90 -0
  6. package/browser-test/index.html +86 -0
  7. package/browser-test/min.html +90 -0
  8. package/dist/react.js +3291 -0
  9. package/dist/react.min.js +1 -0
  10. package/doc/advanced.md +166 -0
  11. package/doc/color-def.graffle +938 -0
  12. package/doc/color-def.png +0 -0
  13. package/doc/simple.dot +25 -0
  14. package/doc/simple.png +0 -0
  15. package/examples/{default1.js → longer-example.js} +0 -0
  16. package/examples/{default-simple.js → simple.js} +0 -0
  17. package/examples/{ast1.js → using-ast-directly.js} +4 -0
  18. package/examples/{default-events1.js → using-events1.js} +1 -1
  19. package/examples/{default-log-events.js → using-log-events.js} +1 -1
  20. package/lib/base-task.js +116 -110
  21. package/lib/cb-task.js +71 -67
  22. package/lib/core.js +120 -109
  23. package/lib/dsl.js +120 -115
  24. package/lib/error.js +44 -36
  25. package/lib/event-collector.js +81 -0
  26. package/lib/event-manager.js +66 -55
  27. package/lib/eventemitter.js +20 -0
  28. package/lib/finalcb-first-task.js +56 -53
  29. package/lib/finalcb-task.js +55 -51
  30. package/lib/id.js +18 -6
  31. package/lib/input-parser.js +49 -41
  32. package/lib/log-events.js +81 -60
  33. package/lib/parse.js +34 -25
  34. package/lib/promise-resolve.js +50 -0
  35. package/lib/promise-task.js +78 -74
  36. package/lib/react.js +59 -0
  37. package/lib/ret-task.js +59 -55
  38. package/lib/sprintf.js +18 -0
  39. package/lib/status.js +11 -2
  40. package/lib/task.js +219 -213
  41. package/lib/track-tasks.js +67 -110
  42. package/lib/validate.js +136 -136
  43. package/lib/vcon.js +78 -69
  44. package/lib/when-task.js +69 -65
  45. package/package.json +11 -9
  46. package/src/dist.build.requirejs +20 -0
  47. package/test/ast.mocha.js +136 -0
  48. package/test/cb-task.mocha.js +220 -0
  49. package/test/core-deferred.mocha.js +143 -0
  50. package/test/core-when.mocha.js +96 -0
  51. package/test/core.mocha.js +589 -0
  52. package/test/dsl.mocha.js +350 -0
  53. package/test/event-manager.mocha.js +119 -0
  54. package/test/exec-options.mocha.js +48 -0
  55. package/test/finalcb-task.mocha.js +58 -0
  56. package/test/input-parser.mocha.js +86 -0
  57. package/test/mocha.opts +2 -0
  58. package/test/module-use.mocha.js +147 -0
  59. package/test/promise-auto-resolve.mocha.js +68 -0
  60. package/test/ret-task.mocha.js +220 -0
  61. package/test/task.mocha.js +42 -0
  62. package/test/validate-cb-task.mocha.js +100 -0
  63. package/test/validate-ret-task.mocha.js +110 -0
  64. package/test/validate.mocha.js +324 -0
  65. package/test/vcon.mocha.js +193 -0
  66. package/vendor/chai/chai.js +2038 -0
  67. package/vendor/jquery/jquery-1.7.1.js +9266 -0
  68. package/vendor/jquery/jquery-1.7.1.min.js +4 -0
  69. package/vendor/mocha/mocha.css +135 -0
  70. package/vendor/mocha/mocha.js +3589 -0
  71. package/vendor/node/util.js +531 -0
  72. package/vendor/requirejs/require.js +2053 -0
  73. package/vendor/requirejs/require.min.js +33 -0
  74. package/doc/alternate-dsls.md +0 -103
  75. package/doc/default-simple.dot +0 -19
  76. package/doc/default-simple.dot.png +0 -0
  77. package/dsl/chain.js +0 -150
  78. package/dsl/fstr.js +0 -121
  79. package/dsl/pcode.js +0 -175
  80. package/examples/chain-events1.js +0 -55
  81. package/examples/chain1.js +0 -19
  82. package/examples/fstr-events1.js +0 -38
  83. package/examples/fstr1.js +0 -37
  84. package/examples/pcode1.js +0 -22
  85. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia.html +0 -675
  86. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/37px-Wiktionary-logo-en.svg.png +0 -0
  87. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
  88. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index(1).php +0 -407
  89. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index.php +0 -130
  90. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(1).php +0 -3
  91. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(10).php +0 -89
  92. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(2).php +0 -23
  93. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(3).php +0 -153
  94. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(4).php +0 -6
  95. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(5).php +0 -3
  96. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(6).php +0 -96
  97. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(7).php +0 -16
  98. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(8).php +0 -14
  99. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(9).php +0 -123
  100. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load.php +0 -3
  101. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
  102. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/saved_resource +0 -1
  103. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
  104. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
  105. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's.html +0 -1369
  106. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/121911_DobbsDigest_Cover.jpg +0 -0
  107. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/160-x-600-IMU Impact 2012.jpg +0 -0
  108. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp= +0 -68
  109. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(1) +0 -67
  110. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(2) +0 -2
  111. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(3) +0 -2
  112. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(4) +0 -8
  113. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=(5) +0 -2
  114. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461 +0 -2
  115. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(1) +0 -2
  116. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(2) +0 -2
  117. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(3) +0 -2
  118. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(4) +0 -2
  119. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(5) +0 -431
  120. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(6) +0 -2
  121. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(7) +0 -431
  122. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(8) +0 -2
  123. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/231400148;kvarticleid=231400148;kauthor=Jim Falgout;loc=100;target=_blank;grp=500202461(9) +0 -2
  124. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad0St1Sz6Sq0V0Id20628317.gif +0 -0
  125. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad2331174St1Sz225Sq20825250V0Id4.gif +0 -0
  126. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/AdTracImage.gif +0 -0
  127. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Default_Size_16_1x1.gif +0 -0
  128. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/FB.Share +0 -9
  129. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/addthis_widget.js +0 -2
  130. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/adlink_5242_1183459_0_154_AdId=2355270;BnId=1;itime=820768810;key=231400148+_database_231400148;link= +0 -11
  131. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/beacon.js +0 -7
  132. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/checkauth.js +0 -18
  133. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/colorbox.css +0 -49
  134. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/convert_data.js +0 -1
  135. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count(1).js +0 -5
  136. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.js +0 -5
  137. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.json +0 -1
  138. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dataflow1.gif +0 -0
  139. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/def.html +0 -126
  140. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/defaults.css +0 -1
  141. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/detect.js +0 -91
  142. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/devtest_left-col-slim.css +0 -30
  143. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqus.js +0 -327
  144. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.css +0 -34
  145. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.js +0 -8
  146. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff(1).css +0 -24
  147. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff.css +0 -24
  148. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dobbs_disqus_logo.gif +0 -0
  149. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.css +0 -1
  150. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.js +0 -1
  151. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqCfg.js +0 -55
  152. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqImg.js +0 -12
  153. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/embed.js +0 -76
  154. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/experience_util.js +0 -636
  155. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/fastbutton.html +0 -11
  156. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ga.js +0 -51
  157. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-facebook_sm.png +0 -0
  158. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-nav.css +0 -798
  159. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-twitter_sm.png +0 -0
  160. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h_s_code_remote.js +0 -377
  161. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hintbox_info.jpg +0 -0
  162. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hub.1326407570.html +0 -3
  163. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/in.js +0 -76
  164. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/insight.min.js +0 -55
  165. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.2.6.min.js +0 -32
  166. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.4.2.min.js +0 -154
  167. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-ui-1.8rc3.custom.min.js +0 -374
  168. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.colorbox-min.js +0 -4
  169. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.min.js +0 -154
  170. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/lib.js +0 -212
  171. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/like.html +0 -214
  172. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/noavatar32.png +0 -0
  173. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nodetag.js +0 -18
  174. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nonSecureAnonymousFramework +0 -2913
  175. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/p.json +0 -1
  176. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/plusone.js +0 -32
  177. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/popwindow.js +0 -24
  178. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/q4OyybLB0-A.js +0 -91
  179. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/quant.js +0 -28
  180. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/qxvZoiHdpAF.css +0 -192
  181. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/reply.html +0 -160
  182. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/rss.gif +0 -0
  183. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/s.js +0 -1
  184. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource +0 -421
  185. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(1) +0 -1
  186. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(2) +0 -341
  187. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(3) +0 -127
  188. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/script84.js +0 -113
  189. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/scripts.js +0 -30
  190. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sh72.html +0 -5
  191. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shAutoloader.js +0 -17
  192. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAS3.js +0 -59
  193. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAppleScript.js +0 -75
  194. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushBash.js +0 -59
  195. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCSharp.js +0 -65
  196. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushColdFusion.js +0 -100
  197. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCpp.js +0 -97
  198. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCss.js +0 -91
  199. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDelphi.js +0 -55
  200. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDiff.js +0 -41
  201. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushErlang.js +0 -52
  202. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushGroovy.js +0 -67
  203. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJScript.js +0 -52
  204. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJava.js +0 -57
  205. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJavaFX.js +0 -58
  206. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPerl.js +0 -72
  207. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPhp.js +0 -88
  208. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPlain.js +0 -33
  209. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPowerShell.js +0 -74
  210. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPython.js +0 -64
  211. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushRuby.js +0 -55
  212. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSass.js +0 -94
  213. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushScala.js +0 -51
  214. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSql.js +0 -66
  215. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushVb.js +0 -56
  216. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushXml.js +0 -69
  217. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore.css +0 -226
  218. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCoreDefault.css +0 -333
  219. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore_new.js +0 -17
  220. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shLegacy.js +0 -17
  221. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shThemeDefault.css +0 -117
  222. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share-button-css +0 -67
  223. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_email_icon.gif +0 -0
  224. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_print_icon.gif +0 -0
  225. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sidebar.js +0 -88
  226. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/superfooter_936.css +0 -186
  227. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/svrGP.aspx +0 -0
  228. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/t.gif +0 -0
  229. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thickbox.js +0 -343
  230. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thread.js +0 -128
  231. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/togglediv.js +0 -15
  232. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/tweet_button.html +0 -3
  233. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ubmtechweb_logo_sm.gif +0 -0
  234. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/upload.html +0 -91
  235. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/welcome.js +0 -7
  236. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widget74.css +0 -1
  237. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widgets.js +0 -40
  238. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia.html +0 -904
  239. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/50px-Question_book-new.svg.png +0 -0
  240. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
  241. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index(1).php +0 -407
  242. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index.php +0 -130
  243. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(1).php +0 -3
  244. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(10).php +0 -89
  245. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(2).php +0 -23
  246. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(3).php +0 -153
  247. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(4).php +0 -6
  248. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(5).php +0 -3
  249. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(6).php +0 -96
  250. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(7).php +0 -16
  251. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(8).php +0 -14
  252. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(9).php +0 -123
  253. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load.php +0 -3
  254. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
  255. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/saved_resource +0 -1
  256. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
  257. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
  258. package/externalDocs/The Step of the Conductor - How To Node - NodeJS.html +0 -113
  259. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/6654_111305815684_541245684_2583159_5383291_n_normal.jpg +0 -0
  260. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/MARC3_normal.jpg +0 -2
  261. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/beacon.js +0 -7
  262. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46 +0 -0
  263. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46_normal.jpeg +0 -0
  264. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/clouds2_normal.jpg +0 -0
  265. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/count.json +0 -1
  266. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/def.html +0 -126
  267. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/defaults.css +0 -1
  268. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/disqus.js +0 -327
  269. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.css +0 -1
  270. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.js +0 -66
  271. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/embed.js +0 -76
  272. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/example1.dot +0 -0
  273. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/ga.js +0 -51
  274. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/get_num_replies.js +0 -79
  275. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/hub.1326407570.html +0 -3
  276. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/lib.js +0 -212
  277. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/noavatar32.png +0 -0
  278. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/quant.js +0 -28
  279. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/reply.html +0 -160
  280. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/t.gif +0 -0
  281. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/thread.js +0 -128
  282. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/tweet_button.1326407570.html +0 -3
  283. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/twitter_normal.jpg +0 -2
  284. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/upload.html +0 -91
  285. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/widgets.js +0 -40
  286. package/jake-tasks/jake-test.js +0 -64
  287. package/promise-resolve.js +0 -35
  288. package/react.js +0 -8
  289. package/test/ast.test.js +0 -69
  290. package/test/cb-task.test.js +0 -197
  291. package/test/core-deferred.test.js +0 -134
  292. package/test/core-promised.test.js +0 -132
  293. package/test/core-when.test.js +0 -84
  294. package/test/core.test.js +0 -568
  295. package/test/dsl.test.js +0 -330
  296. package/test/dsl/chain.test.js +0 -324
  297. package/test/dsl/fstr.test.js +0 -300
  298. package/test/dsl/pcode.test.js +0 -448
  299. package/test/event-manager.test.js +0 -102
  300. package/test/exec-options.test.js +0 -33
  301. package/test/finalcb-task.test.js +0 -38
  302. package/test/input-parser.test.js +0 -66
  303. package/test/module-use.test.js +0 -131
  304. package/test/promise-auto-resolve.test.js +0 -51
  305. package/test/ret-task.test.js +0 -199
  306. package/test/task.test.js +0 -21
  307. package/test/validate-cb-task.test.js +0 -74
  308. package/test/validate-ret-task.test.js +0 -83
  309. package/test/validate.test.js +0 -295
  310. package/test/vcon.test.js +0 -173
@@ -1,117 +1,74 @@
1
1
  'use strict';
2
+ /*global define:true */
2
3
 
3
- /**
4
- Track the tasks, start, complete, args, results, elapsed time
5
- Emits events that can be monitored
6
-
7
- - track start and complete
8
- - record args each task was called with
9
- - record results at completion
10
- - record start, end, and calc elapsed time
11
- - emits flow.begin with flowEnv
12
- - emits task.begin with task
13
- - emits task.complete with task
14
- - emits flow complete with flowEnv
15
- - emits flow errored with flowEnv
16
- */
17
-
18
-
19
- var react = require('../'); // require('react');
20
-
21
- var TASK_EVENTS_RE = /^task\./;
22
- var FLOW_EVENTS_RE = /^flow\./;
23
-
24
- /**
25
- Accumulator to make it easy to capture events
26
-
27
- @example
28
- var EventCollector = require('react/lib/track-tasks').EventCollector;
29
- var collector = new EventCollector();
30
-
31
- collector.captureGlobal('*'); // capture all react events for all flows
32
-
33
- // OR
34
-
35
- collector.capture(flowFn, 'task.'); // capture task events on a flow
36
- collector.capture(flowFn, 'flow.'); // add capture flow events on a flow
37
-
38
- var events = collector.list(); // retrieve the list of events
39
- */
40
- function EventCollector() {
41
- this.events = [];
4
+ if (typeof define !== 'function') {
5
+ var define = require('amdefine')(module);
42
6
  }
43
7
 
44
- /**
45
- register listener to capture all events
46
- @param eventId event id or wildcarded id
47
- */
48
- EventCollector.prototype.captureGlobal = function (eventId) {
49
- this.capture(react, eventId);
50
- };
51
-
52
- /**
53
- register listener to capture events for a specific flow
54
- @param flowFn the react flow function or can pass global react
55
- @param eventId event id or wildcarded id
56
- */
57
- EventCollector.prototype.capture = function (flowFn, eventId) {
58
- var emitter = flowFn.events;
59
- var self = this;
60
- function accumEvents(obj) {
61
- var eventObject = {
62
- event: this.event,
63
- time: Date.now()
64
- };
65
- if (FLOW_EVENTS_RE.test(this.event)) {
66
- eventObject.env = obj;
67
- } else if (TASK_EVENTS_RE.test(this.event)) {
68
- eventObject.task = obj;
69
- }
70
- self.events.push(eventObject);
71
- }
72
- emitter.on(eventId, accumEvents);
73
- };
74
-
75
- EventCollector.prototype.list = function () {
76
- return this.events;
77
- };
78
-
79
- react.events.on(react.events.TYPES.EXEC_FLOW_START, function (env){
80
- env.startTime = Date.now();
81
- env.flowEmitter.emit(react.events.TYPES.FLOW_BEGIN, env); //fire public ev
82
- });
83
-
84
- react.events.on(react.events.TYPES.EXEC_TASK_START, function (task) {
85
- task.startTime = Date.now();
86
- task.env.flowEmitter.emit(react.events.TYPES.TASK_BEGIN, task); //fire public ev
87
- });
88
-
89
- react.events.on(react.events.TYPES.EXEC_TASK_COMPLETE, function (task) {
90
- task.endTime = Date.now();
91
- task.elapsedTime = task.endTime - task.startTime;
92
- task.env.flowEmitter.emit(react.events.TYPES.TASK_COMPLETE, task); // fire public ev
93
- });
94
-
95
- react.events.on(react.events.TYPES.EXEC_TASK_ERRORED, function (task) {
96
- task.endTime = Date.now();
97
- task.elapsedTime = task.endTime - task.startTime;
98
- task.env.flowEmitter.emit(react.events.TYPES.TASK_ERRORED, task); // fire public ev
99
- });
100
-
101
- react.events.on(react.events.TYPES.EXEC_FLOW_COMPLETE, function (env) {
102
- env.endTime = Date.now();
103
- env.elapsedTime = env.endTime - env.startTime;
104
- env.flowEmitter.emit(react.events.TYPES.FLOW_COMPLETE, env); //fire public ev
105
- });
106
-
107
- react.events.on(react.events.TYPES.EXEC_FLOW_ERRORED, function (env) {
108
- env.endTime = Date.now();
109
- env.elapsedTime = env.endTime - env.startTime;
110
- env.flowEmitter.emit(react.events.TYPES.FLOW_ERRORED, env); //fire public ev
111
- });
112
-
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
+ });
113
69
 
70
+ }
114
71
 
72
+ return trackTasks;
115
73
 
116
- module.exports = react; // return react
117
- module.exports.EventCollector = EventCollector;
74
+ });
package/lib/validate.js CHANGED
@@ -1,159 +1,159 @@
1
1
  'use strict';
2
+ /*global define:true */
2
3
 
3
- var util = require('util');
4
- var sprintf = require('sprintf').sprintf;
5
- var array = require('ensure-array');
6
- var tutil = require('./task.js');
7
-
8
- var AST_IS_OBJECT = 'ast must be an object with inParams, tasks, and outTask';
9
- var INPARAMS_ARR_STR = 'ast.inParams must be an array of strings';
10
- var TASKS_ARR = 'ast.tasks must be an array of tasks';
11
- var NAMES_UNIQUE = 'ast.tasks that specify name need to be unique, duplicate:';
12
- var LOCALS_NOTNULL = 'ast.locals should not be null';
13
- var DUP_OUTPUTS = 'multiple tasks output the same param, must be unique. param';
14
- var MISSING_INPUTS = 'missing or mispelled variable referenced in flow definition: %s';
15
-
16
- // match any of our literals true, false, int, float, quoted strings, or is property (has dot), match vcon.js
17
- var LITERAL_OR_PROP_RE = /^(true|false|this|null|\-?[0-9\.]+)$|'|"|\./i;
18
-
19
- var validateInParams, validateTasks, validateOutTask, validateTaskNamesUnique;
20
- var validateLocals, validateOuputsUnique, validateNoMissingNames;
21
-
22
- function format_error(errmsg, obj) {
23
- return sprintf('%s - %s', errmsg, util.inspect(obj));
24
- }
25
-
26
- /**
27
- true if is a literal name
28
- */
29
- function isLiteralOrProp(name) { // need to match what is in vcon.js, TODO consolidate?
30
- return LITERAL_OR_PROP_RE.test(name);
4
+ if (typeof define !== 'function') {
5
+ var define = require('amdefine')(module);
31
6
  }
32
7
 
8
+ define(['util', './sprintf', 'ensure-array', './task'], function (util, sprintf, array, taskUtil) {
9
+ /*jshint latedef:false */
10
+
11
+ var AST_IS_OBJECT = 'ast must be an object with inParams, tasks, and outTask';
12
+ var INPARAMS_ARR_STR = 'ast.inParams must be an array of strings';
13
+ var TASKS_ARR = 'ast.tasks must be an array of tasks';
14
+ var NAMES_UNIQUE = 'ast.tasks that specify name need to be unique, duplicate:';
15
+ var LOCALS_NOTNULL = 'ast.locals should not be null';
16
+ var DUP_OUTPUTS = 'multiple tasks output the same param, must be unique. param';
17
+ var MISSING_INPUTS = 'missing or mispelled variable referenced in flow definition: %s';
18
+
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;
21
+
22
+ function format_error(errmsg, obj) {
23
+ return sprintf('%s - %s', errmsg, util.inspect(obj));
24
+ }
33
25
 
26
+ /**
27
+ true if is a literal name
28
+ */
29
+ function isLiteralOrProp(name) { // need to match what is in vcon.js, TODO consolidate?
30
+ return LITERAL_OR_PROP_RE.test(name);
31
+ }
34
32
 
35
- /**
36
- validate the AST return Errors
37
- @example
38
- var validate = require('./validate');
39
- var errors = validate(ast);
40
- @returns array of errors, could be empty
33
+ /**
34
+ validate the AST return Errors
35
+ @example
36
+ var validate = require('./validate');
37
+ var errors = validate(ast);
38
+ @returns array of errors, could be empty
41
39
  */
42
- function validate(ast) {
43
- if (!ast || !ast.inParams || !ast.tasks || !ast.outTask) return [AST_IS_OBJECT];
44
- var errors = [];
45
- errors = errors.concat(validateInParams(ast.inParams));
46
- errors = errors.concat(validateTasks(ast.tasks));
47
- errors = errors.concat(validateTaskNamesUnique(ast.tasks));
48
- errors = errors.concat(tutil.validateOutTask(ast.outTask));
49
- errors = errors.concat(validateLocals(ast.locals));
50
- if (errors.length === 0) { // if no errors do additional validation
51
- if (ast.outTask.type !== 'finalcbFirst') errors = errors.concat(validateOuputsUnique(ast.tasks));
52
- errors = errors.concat(tutil.validateLocalFunctions(ast.inParams, ast.tasks, ast.locals));
53
- errors = errors.concat(validateNoMissingNames(ast));
40
+ function validate(ast) {
41
+ if (!ast || !ast.inParams || !ast.tasks || !ast.outTask) return [AST_IS_OBJECT];
42
+ var errors = [];
43
+ errors = errors.concat(validateInParams(ast.inParams));
44
+ errors = errors.concat(validateTasks(ast.tasks));
45
+ errors = errors.concat(validateTaskNamesUnique(ast.tasks));
46
+ errors = errors.concat(taskUtil.validateOutTask(ast.outTask));
47
+ errors = errors.concat(validateLocals(ast.locals));
48
+ if (errors.length === 0) { // if no errors do additional validation
49
+ if (ast.outTask.type !== 'finalcbFirst') errors = errors.concat(validateOuputsUnique(ast.tasks));
50
+ errors = errors.concat(taskUtil.validateLocalFunctions(ast.inParams, ast.tasks, ast.locals));
51
+ errors = errors.concat(validateNoMissingNames(ast));
52
+ }
53
+ return errors;
54
54
  }
55
- return errors;
56
- }
57
55
 
58
- /**
59
- @returns array of errors, could be empty
60
- */
61
- function validateInParams(inParams) {
62
- if (!Array.isArray(inParams) ||
63
- !inParams.every(function (x) { return (typeof(x) === 'string'); })) {
64
- return [INPARAMS_ARR_STR];
56
+ /**
57
+ @returns array of errors, could be empty
58
+ */
59
+ function validateInParams(inParams) {
60
+ if (!Array.isArray(inParams) ||
61
+ !inParams.every(function (x) { return (typeof(x) === 'string'); })) {
62
+ return [INPARAMS_ARR_STR];
63
+ }
64
+ return [];
65
65
  }
66
- return [];
67
- }
68
66
 
69
- /**
70
- @returns array of errors, could be empty
71
- */
72
- function validateTasks(tasks) {
73
- if (!Array.isArray(tasks)) return [TASKS_ARR];
74
- var errors = [];
75
- tasks.forEach(function (t) {
76
- errors = errors.concat(tutil.validate(t));
77
- });
78
- return errors;
79
- }
67
+ /**
68
+ @returns array of errors, could be empty
69
+ */
70
+ function validateTasks(tasks) {
71
+ if (!Array.isArray(tasks)) return [TASKS_ARR];
72
+ var errors = [];
73
+ tasks.forEach(function (t) {
74
+ errors = errors.concat(taskUtil.validate(t));
75
+ });
76
+ return errors;
77
+ }
80
78
 
81
- function validateTaskNamesUnique(tasks) {
82
- if (!Array.isArray(tasks)) return [];
83
- var errors = [];
84
- var namedTasks = tasks.filter(function (t) { return (t.name); });
85
- var names = namedTasks.map(function (t) { return t.name; });
86
- names.reduce(function (accum, name) {
87
- if (accum[name]) errors.push(sprintf('%s %s', NAMES_UNIQUE, name));
88
- else accum[name] = true;
89
- return accum;
90
- }, {});
91
- return errors;
92
- }
79
+ function validateTaskNamesUnique(tasks) {
80
+ if (!Array.isArray(tasks)) return [];
81
+ var errors = [];
82
+ var namedTasks = tasks.filter(function (t) { return (t.name); });
83
+ var names = namedTasks.map(function (t) { return t.name; });
84
+ names.reduce(function (accum, name) {
85
+ if (accum[name]) errors.push(sprintf('%s %s', NAMES_UNIQUE, name));
86
+ else accum[name] = true;
87
+ return accum;
88
+ }, {});
89
+ return errors;
90
+ }
93
91
 
94
- function validateLocals(locals) {
95
- var errors = [];
96
- if (locals === null) errors.push(LOCALS_NOTNULL);
97
- return errors;
98
- }
92
+ function validateLocals(locals) {
93
+ var errors = [];
94
+ if (locals === null) errors.push(LOCALS_NOTNULL);
95
+ return errors;
96
+ }
99
97
 
100
- function getOutputParams(taskDef) {
101
- return array(taskDef.out); //ensure array
102
- }
98
+ function getOutputParams(taskDef) {
99
+ return array(taskDef.out); //ensure array
100
+ }
103
101
 
104
- function validateOuputsUnique(taskDefs) {
105
- var errors = [];
106
- taskDefs.reduce(function (accum, t) {
107
- getOutputParams(t).forEach(function (param) {
108
- if (accum[param] !== undefined) errors.push(sprintf('%s: %s', DUP_OUTPUTS, param));
109
- else accum[param] = true;
110
- });
111
- return accum;
112
- }, {});
113
- return errors;
114
- }
102
+ function validateOuputsUnique(taskDefs) {
103
+ var errors = [];
104
+ taskDefs.reduce(function (accum, t) {
105
+ getOutputParams(t).forEach(function (param) {
106
+ if (accum[param] !== undefined) errors.push(sprintf('%s: %s', DUP_OUTPUTS, param));
107
+ else accum[param] = true;
108
+ });
109
+ return accum;
110
+ }, {});
111
+ return errors;
112
+ }
115
113
 
116
114
 
117
- /**
118
- validate there are no missing or mispelled param names in any task inputs
119
- or the final task output
115
+ /**
116
+ validate there are no missing or mispelled param names in any task inputs
117
+ or the final task output
120
118
 
121
- @return array of errors, or empty array if none
119
+ @return array of errors, or empty array if none
122
120
  */
123
- function validateNoMissingNames(ast) {
124
- var errors = [];
125
- var names = {};
126
- if (ast.locals) {
127
- names = Object.keys(ast.locals).reduce(function (accum, k) { // start with locals
128
- accum[k] = true;
121
+ function validateNoMissingNames(ast) {
122
+ var errors = [];
123
+ var names = {};
124
+ if (ast.locals) {
125
+ names = Object.keys(ast.locals).reduce(function (accum, k) { // start with locals
126
+ accum[k] = true;
127
+ return accum;
128
+ }, names);
129
+ }
130
+ ast.inParams.reduce(function (accum, p) { // add input params
131
+ accum[p] = true;
129
132
  return accum;
130
133
  }, names);
134
+ ast.tasks.reduce(function (accum, t) { // add task outputs
135
+ return t.out.reduce(function (innerAccum, p) {
136
+ innerAccum[p] = true;
137
+ return innerAccum;
138
+ }, accum);
139
+ }, names);
140
+
141
+ // now we have all possible provided vars, check task inputs are accounted for
142
+ ast.tasks.reduce(function (accum, t) { // for all tasks
143
+ return t.a.reduce(function (innerAccum, p) { // for all in params, except property
144
+ if (!isLiteralOrProp(p) && !names[p]) innerAccum.push(sprintf(MISSING_INPUTS, p)); // add error if missing
145
+ return innerAccum;
146
+ }, accum);
147
+ }, errors);
148
+
149
+ // now check the final task outputs
150
+ ast.outTask.a.reduce(function (accum, p) { // for final task out params
151
+ if (!isLiteralOrProp(p) && !names[p]) accum.push(sprintf(MISSING_INPUTS, p)); // add error if missing
152
+ return accum;
153
+ }, errors);
154
+ return errors;
131
155
  }
132
- ast.inParams.reduce(function (accum, p) { // add input params
133
- accum[p] = true;
134
- return accum;
135
- }, names);
136
- ast.tasks.reduce(function (accum, t) { // add task outputs
137
- return t.out.reduce(function (innerAccum, p) {
138
- innerAccum[p] = true;
139
- return innerAccum;
140
- }, accum);
141
- }, names);
142
-
143
- // now we have all possible provided vars, check task inputs are accounted for
144
- ast.tasks.reduce(function (accum, t) { // for all tasks
145
- return t.a.reduce(function (innerAccum, p) { // for all in params, except property
146
- if (!isLiteralOrProp(p) && !names[p]) innerAccum.push(sprintf(MISSING_INPUTS, p)); // add error if missing
147
- return innerAccum;
148
- }, accum);
149
- }, errors);
150
-
151
- // now check the final task outputs
152
- ast.outTask.a.reduce(function (accum, p) { // for final task out params
153
- if (!isLiteralOrProp(p) && !names[p]) accum.push(sprintf(MISSING_INPUTS, p)); // add error if missing
154
- return accum;
155
- }, errors);
156
- return errors;
157
- }
158
156
 
159
- module.exports = validate;
157
+ return validate;
158
+
159
+ });