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,132 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- Test core PromiseTasks using promised-io
5
- */
6
-
7
- var test = require('tap').test;
8
- //var when = require('promised-io/promise');
9
- var Deferred = require('promised-io/promise').Deferred;
10
-
11
- var react = require('../'); //require('react');
12
-
13
-
14
- function multiply(x, y) {
15
- var deferred = new Deferred();
16
- setTimeout(function () {
17
- deferred.resolve(x * y);
18
- }, 10);
19
- return deferred.promise;
20
- }
21
- function add(x, y) {
22
- var deferred = new Deferred();
23
- setTimeout(function () {
24
- deferred.resolve(x + y);
25
- }, 10);
26
- return deferred.promise;
27
- }
28
-
29
- function badFunc(a, b) {
30
- throw new Error('badFuncThrow');
31
- }
32
-
33
- function badF2(a, b) {
34
- var deferred = new Deferred();
35
- setTimeout(function () {
36
- deferred.reject(new Error('my-error'));
37
- }, 10);
38
- return deferred.promise;
39
- }
40
-
41
-
42
- test('multi-step', function (t) {
43
- t.plan(4);
44
- var fn = react();
45
- var errors = fn.setAndValidateAST({
46
- inParams: ['a', 'b'],
47
- tasks: [
48
- { f: multiply, a: ['a', 'b'], out: ['c'], type: 'promise' },
49
- { f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
50
- ],
51
- outTask: { a: ['c', 'd'] }
52
- });
53
- t.deepEqual(errors, [], 'no validation errors');
54
-
55
- fn(2, 3, function (err, c, d) {
56
- t.equal(err, null);
57
- t.equal(c, 6);
58
- t.equal(d, 9);
59
- t.end();
60
- });
61
- });
62
-
63
- test('using "this" in a cb function', function (t) {
64
- t.plan(3);
65
- function getA(cb) {
66
- /*jshint validthis: true */
67
- var deferred = new Deferred();
68
- var self = this;
69
- setTimeout(function () {
70
- deferred.resolve(self.a);
71
- }, 10);
72
- return deferred.promise;
73
- }
74
-
75
- var fn = react();
76
- var errors = fn.setAndValidateAST({
77
- inParams: [],
78
- tasks: [
79
- { f: getA, a: [], out: ['a'], type: 'promise' }
80
- ],
81
- outTask: { a: ['a'] }
82
- });
83
- t.deepEqual(errors, [], 'no validation errors');
84
-
85
- var obj = {
86
- a: 100
87
- };
88
-
89
- fn.apply(obj, [function (err, a) {
90
- t.equal(err, null);
91
- t.equal(a, 100);
92
- t.end();
93
- }]);
94
- });
95
-
96
- test('throws error', function (t) {
97
- t.plan(2);
98
- var fn = react();
99
- var errors = fn.setAndValidateAST({
100
- inParams: ['a', 'b'],
101
- tasks: [
102
- { f: badFunc, a: ['a', 'b'], out: ['c'], type: 'promise' },
103
- { f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
104
- ],
105
- outTask: { a: ['c', 'd'] }
106
- });
107
- t.deepEqual(errors, [], 'no validation errors');
108
-
109
- fn(2, 3, function (err, c, d) {
110
- t.equal(err.message, 'badFuncThrow');
111
- t.end();
112
- });
113
- });
114
-
115
- test('rejects with error', function (t) {
116
- t.plan(2);
117
- var fn = react();
118
- var errors = fn.setAndValidateAST({
119
- inParams: ['a', 'b'],
120
- tasks: [
121
- { f: badF2, a: ['a', 'b'], out: ['c'], type: 'promise' },
122
- { f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
123
- ],
124
- outTask: { a: ['c', 'd'] }
125
- });
126
- t.deepEqual(errors, [], 'no validation errors');
127
-
128
- fn(2, 3, function (err, c, d) {
129
- t.equal(err.message, 'my-error');
130
- t.end();
131
- });
132
- });
@@ -1,84 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- Test core WhenTasks using promised-io
5
- */
6
-
7
- var test = require('tap').test;
8
- //var when = require('promised-io/promise');
9
- var Deferred = require('promised-io/promise').Deferred;
10
-
11
- var react = require('../'); //require('react');
12
-
13
-
14
- function multiply(x, y) {
15
- var deferred = new Deferred();
16
- setTimeout(function () {
17
- deferred.resolve(x * y);
18
- }, 10);
19
- return deferred.promise;
20
- }
21
- function add(x, y) {
22
- var deferred = new Deferred();
23
- setTimeout(function () {
24
- deferred.resolve(x + y);
25
- }, 10);
26
- return deferred.promise;
27
- }
28
-
29
- function badF2(a, b) {
30
- var deferred = new Deferred();
31
- setTimeout(function () {
32
- deferred.reject(new Error('my-error'));
33
- }, 10);
34
- return deferred.promise;
35
- }
36
-
37
-
38
- test('multi-step', function (t) {
39
- t.plan(4);
40
- var fn = react();
41
- var errors = fn.setAndValidateAST({
42
- inParams: ['pm', 'pa'],
43
- tasks: [
44
- { a: ['pm'], out: ['m'], type: 'when' },
45
- { a: ['pa'], out: ['a'], type: 'when' }
46
- ],
47
- outTask: { a: ['m', 'a'] }
48
- });
49
- t.deepEqual(errors, [], 'no validation errors');
50
-
51
- var pm = multiply(2, 3);
52
- var pa = add(4, 5);
53
-
54
- fn(pm, pa, function (err, m, a) {
55
- t.equal(err, null);
56
- t.equal(m, 6);
57
- t.equal(a, 9);
58
- t.end();
59
- });
60
- });
61
-
62
-
63
- test('rejects with error', function (t) {
64
- t.plan(2);
65
- var fn = react();
66
- var errors = fn.setAndValidateAST({
67
- inParams: ['pm', 'pa'],
68
- tasks: [
69
- { a: ['pm'], out: ['m'], type: 'when' },
70
- { a: ['pa'], out: ['a'], type: 'when' }
71
- ],
72
- outTask: { a: ['m', 'a'] }
73
- });
74
- t.deepEqual(errors, [], 'no validation errors');
75
-
76
- var pm = badF2(2, 3);
77
- var pa = add(4, 5);
78
-
79
-
80
- fn(pm, pa, function (err, m, a) {
81
- t.equal(err.message, 'my-error');
82
- t.end();
83
- });
84
- });
package/test/core.test.js DELETED
@@ -1,568 +0,0 @@
1
- 'use strict';
2
-
3
- var test = require('tap').test;
4
-
5
- var react = require('../react');
6
- var EventCollector = require('../lib/track-tasks').EventCollector; // require('react/lib/track-tasks'); // turn on tracking
7
-
8
- function multiply(x, y, cb) { cb(null, x * y); }
9
- function add(x, y, cb) { cb(null, x + y); }
10
- function badFunc(a, b, cb) { throw new Error('badFuncThrow'); }
11
- function badF2(a, b, cb) { cb('my-error'); }
12
- function fnRetsSum(a, b) { return a + b; }
13
-
14
- test('set and validate AST', function (t) {
15
- var fn = react();
16
- var errors = fn.setAndValidateAST({
17
- name: 'myflow',
18
- inParams: ['a', 'b'],
19
- tasks: [
20
- { f: multiply, a: ['a', 'b'], out: ['c'] }
21
- ],
22
- outTask: { a: ['c'] },
23
- otherOpt: 'foo',
24
- otherOpt2: 'bar'
25
- });
26
- t.deepEqual(errors, [], 'should set and validate as true');
27
- t.deepEqual(fn.ast.inParams, ['a', 'b']);
28
- t.deepEqual(fn.ast.tasks, [
29
- { f: multiply, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'multiply' }
30
- ]);
31
- t.deepEqual(fn.ast.outTask, { a: ['c'], type: 'finalcb' });
32
- t.equal(fn.ast.name, 'myflow', 'name should match if set');
33
- t.equal(fn.ast.otherOpt, 'foo', 'any additional options should pass through');
34
- t.end();
35
- });
36
-
37
- test('unnamed tasks will be assigned unique names', function (t) {
38
- var fn = react();
39
- var errors = fn.setAndValidateAST({
40
- inParams: ['a', 'b'],
41
- tasks: [
42
- { f: multiply, a: ['a', 'b'], out: ['c'] },
43
- { f: multiply, a: ['a', 'b'], out: ['d'], name: 'multiply' },
44
- { f: multiply, a: ['a', 'b'], out: ['e'], name: 'times' },
45
- { f: multiply, a: ['a', 'b'], out: ['f'] }
46
- ],
47
- outTask: { a: ['c'] }
48
- });
49
- t.deepEqual(errors, [], 'should set and validate as true');
50
- t.deepEqual(fn.ast.tasks, [
51
- { f: multiply, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'multiply_0' },
52
- { f: multiply, a: ['a', 'b'], out: ['d'], name: 'multiply', type: 'cb' },
53
- { f: multiply, a: ['a', 'b'], out: ['e'], name: 'times', type: 'cb' },
54
- { f: multiply, a: ['a', 'b'], out: ['f'], type: 'cb', name: 'multiply_3' }
55
- ]);
56
- t.end();
57
- });
58
-
59
-
60
- test('execution with no errors should call callback with result', function (t) {
61
- var fn = react();
62
- var errors = fn.setAndValidateAST({
63
- inParams: ['a', 'b'],
64
- tasks: [
65
- { f: multiply, a: ['a', 'b'], out: ['c'] }
66
- ],
67
- outTask: { a: ['c'] }
68
- });
69
- t.deepEqual(errors, [], 'no validation errors');
70
- fn(2, 3, function (err, c) {
71
- t.equal(err, null);
72
- t.equal(c, 6);
73
- t.end();
74
- });
75
- });
76
-
77
- test('multi-step', function (t) {
78
- t.plan(4);
79
- var fn = react();
80
- var errors = fn.setAndValidateAST({
81
- inParams: ['a', 'b'],
82
- tasks: [
83
- { f: multiply, a: ['a', 'b'], out: ['c'] },
84
- { f: add, a: ['c', 'b'], out: ['d'] }
85
- ],
86
- outTask: { a: ['c', 'd'] }
87
- });
88
- t.deepEqual(errors, [], 'no validation errors');
89
-
90
- fn(2, 3, function (err, c, d) {
91
- t.equal(err, null);
92
- t.equal(c, 6);
93
- t.equal(d, 9);
94
- t.end();
95
- });
96
- });
97
-
98
- test('multi-step with after as nonarr fn', function (t) {
99
- t.plan(7);
100
- var fn = react();
101
- var errors = fn.setAndValidateAST({
102
- inParams: ['a', 'b'],
103
- tasks: [
104
- { f: multiply, a: ['a', 'b'], out: ['c'], after: add },
105
- { f: add, a: ['a', 'b'], out: ['d'] }
106
- ],
107
- outTask: { a: ['c', 'd'] }
108
- });
109
- t.deepEqual(errors, [], 'no validation errors');
110
-
111
- var collector = new EventCollector();
112
- collector.capture(fn, 'task.complete');
113
-
114
- fn(2, 3, function (err, c, d) {
115
- t.equal(err, null);
116
- t.equal(c, 6);
117
- t.equal(d, 5);
118
- var events = collector.list();
119
- t.equal(events.length, 2, 'should have seen one task compl events');
120
- t.equal(events[0].task.name, 'add', 'name matches');
121
- t.equal(events[1].task.name, 'multiply', 'name matches');
122
- t.end();
123
- });
124
- });
125
-
126
- test('mixed multi-step with after as nonarr fn w/events', function (t) {
127
- t.plan(19);
128
- var fn = react();
129
- var errors = fn.setAndValidateAST({
130
- inParams: ['a', 'b'],
131
- tasks: [
132
- { f: multiply, a: ['a', 'b'], out: ['c'], after: fnRetsSum },
133
- { f: fnRetsSum, a: ['a', 'b'], out: ['d'], type: 'ret' }
134
- ],
135
- outTask: { a: ['c', 'd'] }
136
- });
137
- t.deepEqual(errors, [], 'no validation errors');
138
-
139
- var collector = new EventCollector();
140
- collector.capture(fn, 'task.complete');
141
-
142
- fn(2, 3, function (err, c, d) {
143
- t.equal(err, null);
144
- t.equal(c, 6);
145
- t.equal(d, 5);
146
- var events = collector.list();
147
- t.equal(events.length, 2, 'should have seen one task compl events');
148
- t.equal(events[0].task.name, 'fnRetsSum', 'name matches');
149
- t.ok(events[0].task.id, 'has unique id');
150
- t.ok(events[0].task.startTime, 'has startTime');
151
- t.ok(events[0].task.endTime, 'has endTime');
152
- t.ok(events[0].task.elapsedTime !== undefined, 'has elapsedTime');
153
- t.ok(events[0].task.args, 'has args');
154
- t.ok(events[0].task.results, 'has results');
155
- t.equal(events[1].task.name, 'multiply', 'name matches');
156
- t.ok(events[1].task.id, 'has unique id');
157
- t.ok(events[1].task.startTime, 'has startTime');
158
- t.ok(events[1].task.endTime, 'has endTime');
159
- t.ok(events[1].task.elapsedTime !== undefined, 'has elapsedTime');
160
- t.ok(events[1].task.args, 'has args');
161
- t.ok(events[1].task.results, 'has results');
162
- t.end();
163
- });
164
- });
165
-
166
-
167
-
168
-
169
- test('sets obj values', function (t) {
170
- t.plan(5);
171
- var fn = react();
172
- var errors = fn.setAndValidateAST({
173
- inParams: ['a', 'b', 'c'],
174
- tasks: [
175
- { f: multiply, a: ['a', 'b'], out: ['c.mult'] },
176
- { f: fnRetsSum, a: ['c.mult', 'b'], out: ['c.sum'], type: 'ret' }
177
- ],
178
- outTask: { a: ['c.mult', 'c.sum', 'c'] }
179
- });
180
- t.deepEqual(errors, [], 'no validation errors');
181
-
182
- fn(2, 3, { foo: 1 }, function (err, cmult, csum, c) {
183
- t.deepEqual(err, null, 'should be no err');
184
- t.equal(cmult, 6);
185
- t.equal(csum, 9);
186
- t.deepEqual(c, { foo: 1, mult: 6, sum: 9});
187
- t.end();
188
- });
189
- });
190
-
191
- test('error when cant complete', function (t) {
192
- t.plan(2);
193
- var fn = react();
194
- var errors = fn.setAndValidateAST({
195
- inParams: ['a', 'b', 'c'],
196
- tasks: [
197
- { f: multiply, a: ['a', 'b'], out: ['c.mult'] },
198
- { f: fnRetsSum, a: ['c.bad', 'b'], out: ['c.sum'], type: 'ret' },
199
- { f: add, a: ['c.sum', 'a'], out: ['d']}
200
- ],
201
- outTask: { a: ['c.mult', 'c.sum', 'd'] }
202
- });
203
- t.deepEqual(errors, [], 'no validation errors');
204
-
205
- fn(2, 3, { foo: 1 }, function (err, cmult, csum, d) {
206
- t.equal(err.message, 'no tasks running, flow will not complete, remaining tasks: fnRetsSum, add');
207
- t.end();
208
- });
209
- });
210
-
211
-
212
- test('objects', function (t) {
213
- function retObj(a, b, cb) { cb(null, { bar: a + b }); }
214
- function concat(a, b, cb) { cb(null, { result: a + b }); }
215
- t.plan(4);
216
- var fn = react();
217
- var errors = fn.setAndValidateAST({
218
- inParams: ['a', 'b'],
219
- tasks: [
220
- { f: retObj, a: ['a.foo', 'b'], out: ['c'] },
221
- { f: concat, a: ['c.bar', 'b'], out: ['d'] }
222
- ],
223
- outTask: { a: ['c', 'd.result'] }
224
- });
225
- t.deepEqual(errors, [], 'no validation errors');
226
-
227
- fn({ foo: 'FOO' }, 'B', function (err, c, dresult) {
228
- t.equal(err, null);
229
- t.deepEqual(c, { bar: 'FOOB' });
230
- t.equal(dresult, 'FOOBB');
231
- t.end();
232
- });
233
- });
234
-
235
- test('objects from container', function (t) {
236
- var C = {
237
- retObj: function retObj(a, b, cb) { cb(null, { bar: a + b }); },
238
- concat: function concat(a, b, cb) { cb(null, { result: a + b }); }
239
- };
240
- t.plan(4);
241
- var fn = react();
242
- var errors = fn.setAndValidateAST({
243
- inParams: ['a', 'b'],
244
- tasks: [
245
- { f: C.retObj, a: ['a.foo', 'b'], out: ['c'] },
246
- { f: C.concat, a: ['c.bar', 'b'], out: ['d'] }
247
- ],
248
- outTask: { a: ['c', 'd.result'] }
249
- });
250
- t.deepEqual(errors, [], 'no validation errors');
251
-
252
- fn({ foo: 'FOO' }, 'B', function (err, c, dresult) {
253
- t.equal(err, null);
254
- t.deepEqual(c, { bar: 'FOOB' });
255
- t.equal(dresult, 'FOOBB');
256
- t.end();
257
- });
258
- });
259
-
260
- test('objects from container input arg', function (t) {
261
- var CONT = {
262
- retObj: function retObj(a, b, cb) { cb(null, { bar: a + b }); },
263
- concat: function concat(a, b, cb) { cb(null, { result: a + b }); }
264
- };
265
- t.plan(4);
266
- var fn = react();
267
- var errors = fn.setAndValidateAST({
268
- inParams: ['a', 'b', 'CONT'],
269
- tasks: [
270
- { f: 'CONT.retObj', a: ['a.foo', 'b'], out: ['c'] },
271
- { f: 'CONT.concat', a: ['c.bar', 'b'], out: ['d'] }
272
- ],
273
- outTask: { a: ['c', 'd.result'] }
274
- });
275
- t.deepEqual(errors, [], 'no validation errors');
276
-
277
-
278
- fn({ foo: 'FOO' }, 'B', CONT, function (err, c, dresult) {
279
- t.equal(err, null);
280
- t.deepEqual(c, { bar: 'FOOB' });
281
- t.equal(dresult, 'FOOBB');
282
- t.end();
283
- });
284
- });
285
-
286
- test('use locals for functions', function (t) {
287
- var locals = {
288
- retObj: function retObj(a, b, cb) { cb(null, { bar: a + b }); },
289
- concat: function concat(a, b, cb) { cb(null, { result: a + b }); }
290
- };
291
- t.plan(4);
292
- var fn = react();
293
- var errors = fn.setAndValidateAST({
294
- inParams: ['a', 'b'],
295
- tasks: [
296
- { f: 'retObj', a: ['a.foo', 'b'], out: ['c'] },
297
- { f: 'concat', a: ['c.bar', 'b'], out: ['d'] }
298
- ],
299
- outTask: { a: ['c', 'd.result'] },
300
- locals: locals
301
- });
302
- t.deepEqual(errors, [], 'no validation errors');
303
-
304
- fn({ foo: 'FOO' }, 'B', function (err, c, dresult) {
305
- t.equal(err, null);
306
- t.deepEqual(c, { bar: 'FOOB' });
307
- t.equal(dresult, 'FOOBB');
308
- t.end();
309
- });
310
- });
311
-
312
- test('objects from locals', function (t) {
313
- var CONT = {
314
- retObj: function retObj(a, b, cb) { cb(null, { bar: a + b }); },
315
- concat: function concat(a, b, cb) { cb(null, { result: a + b }); }
316
- };
317
- t.plan(4);
318
- var fn = react();
319
- var errors = fn.setAndValidateAST({
320
- inParams: ['a', 'b'],
321
- tasks: [
322
- { f: 'CONT.retObj', a: ['a.foo', 'b'], out: ['c'] },
323
- { f: 'CONT.concat', a: ['c.bar', 'b'], out: ['d'] }
324
- ],
325
- outTask: { a: ['c', 'd.result'] },
326
- locals: { CONT: CONT }
327
- });
328
- t.deepEqual(errors, [], 'no validation errors');
329
-
330
-
331
- fn({ foo: 'FOO' }, 'B', function (err, c, dresult) {
332
- t.equal(err, null);
333
- t.deepEqual(c, { bar: 'FOOB' });
334
- t.equal(dresult, 'FOOBB');
335
- t.end();
336
- });
337
- });
338
-
339
- test('multi-step func throws, cb with error', function (t) {
340
- t.plan(2);
341
- var fn = react();
342
- var errors = fn.setAndValidateAST({
343
- inParams: ['a', 'b'],
344
- tasks: [
345
- { f: multiply, a: ['a', 'b'], out: ['c'] },
346
- { f: badFunc, a: ['c', 'b'], out: ['d'] }
347
- ],
348
- outTask: { a: ['c', 'd'] }
349
- });
350
- t.deepEqual(errors, [], 'no validation errors');
351
-
352
- fn(2, 3, function (err, c, d) {
353
- t.equal(err.message, 'badFuncThrow');
354
- t.end();
355
- });
356
- });
357
-
358
- test('multi-step func cb err, cb with error', function (t) {
359
- t.plan(2);
360
- var fn = react();
361
- var errors = fn.setAndValidateAST({
362
- inParams: ['a', 'b'],
363
- tasks: [
364
- { f: multiply, a: ['a', 'b'], out: ['c'] },
365
- { f: badF2, a: ['c', 'b'], out: ['d'] },
366
- { f: add, a: ['d', 'b'], out: ['e'] }
367
- ],
368
- outTask: { a: ['c', 'e'] }
369
- });
370
- t.deepEqual(errors, [], 'no validation errors');
371
-
372
- fn(2, 3, function (err, c, d) {
373
- t.equal(err.message, 'my-error');
374
- t.end();
375
- });
376
- });
377
-
378
- test('using "this" in a cb function', function (t) {
379
- t.plan(3);
380
- function getA(cb) {
381
- /*jshint validthis: true */
382
- cb(null, this.a);
383
- }
384
-
385
- var fn = react();
386
- var errors = fn.setAndValidateAST({
387
- inParams: [],
388
- tasks: [
389
- { f: getA, a: [], out: ['a'] }
390
- ],
391
- outTask: { a: ['a'] }
392
- });
393
- t.deepEqual(errors, [], 'no validation errors');
394
-
395
- var obj = {
396
- a: 100
397
- };
398
-
399
- fn.apply(obj, [function (err, a) {
400
- t.equal(err, null);
401
- t.equal(a, 100);
402
- t.end();
403
- }]);
404
- });
405
-
406
- test('using "this" in a sync function', function (t) {
407
- t.plan(3);
408
- function getA(cb) {
409
- /*jshint validthis: true */
410
- return this.a;
411
- }
412
-
413
- var fn = react();
414
- var errors = fn.setAndValidateAST({
415
- inParams: [],
416
- tasks: [
417
- { f: getA, a: [], out: ['a'], type: 'ret' }
418
- ],
419
- outTask: { a: ['a'] }
420
- });
421
- t.deepEqual(errors, [], 'no validation errors');
422
-
423
- var obj = {
424
- a: 100
425
- };
426
-
427
- fn.apply(obj, [function (err, a) {
428
- t.equal(err, null);
429
- t.equal(a, 100);
430
- t.end();
431
- }]);
432
- });
433
-
434
-
435
- // Select first tests
436
-
437
-
438
- test('selectFirst with first succeeding', function (t) {
439
- t.plan(6);
440
- var fn = react();
441
- var errors = fn.setAndValidateAST({
442
- inParams: ['a', 'b'],
443
- tasks: [
444
- { f: multiply, a: ['a', 'b'], out: ['c'] },
445
- { f: add, a: ['a', 'b'], out: ['c'], after: ['multiply'] }
446
- ],
447
- outTask: { type: 'finalcbFirst', a: ['c'] }
448
- });
449
- t.deepEqual(errors, [], 'no validation errors');
450
-
451
- var collector = new EventCollector();
452
- collector.capture(fn, 'task.complete');
453
-
454
- fn(2, 3, function (err, c) {
455
- t.equal(err, null);
456
- t.equal(c, 6);
457
- var events = collector.list();
458
- t.equal(events.length, 1, 'should have seen one task compl events');
459
- t.equal(events[0].task.name, 'multiply', 'name matches');
460
- t.deepEqual(events[0].task.results, [6], 'results match');
461
- t.end();
462
- });
463
- });
464
-
465
- test('selectFirst with third succeeding', function (t) {
466
- function noSuccess(a, b, cb) { cb(null); } // returns undefined result
467
- function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
468
-
469
- t.plan(6);
470
- var fn = react();
471
- var errors = fn.setAndValidateAST({
472
- inParams: ['a', 'b'],
473
- tasks: [
474
- { f: noSuccess, a: ['a', 'b'], out: ['c'] },
475
- { f: noSuccessNull, a: ['a', 'b'], out: ['c'], after: ['noSuccess'] },
476
- { f: add, a: ['a', 'b'], out: ['c'], after: ['noSuccessNull'] }
477
- ],
478
- outTask: { type: 'finalcbFirst', a: ['c'] }
479
- });
480
- t.deepEqual(errors, [], 'no validation errors');
481
-
482
- var collector = new EventCollector();
483
- collector.capture(fn, 'task.complete');
484
-
485
- fn(2, 3, function (err, c) {
486
- t.equal(err, null);
487
- t.equal(c, 5);
488
- var events = collector.list();
489
- t.equal(events.length, 3, 'should have seen three task compl events');
490
- t.equal(events[2].task.name, 'add', 'name matches');
491
- t.deepEqual(events[2].task.results, [5], 'results match');
492
- t.end();
493
- });
494
- });
495
-
496
-
497
- test('selectFirst forces order with third succeeding', function (t) {
498
- function noSuccess(a, b, cb) {
499
- setTimeout(function () { cb(null); }, 100); // returns undefined result
500
- }
501
- function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
502
-
503
- t.plan(8);
504
- var fn = react();
505
- var errors = fn.setAndValidateAST({
506
- inParams: ['a', 'b'],
507
- tasks: [
508
- { f: noSuccess, a: ['a', 'b'], out: ['c'] },
509
- { f: noSuccessNull, a: ['a', 'b'], out: ['c'], after: ['noSuccess']},
510
- { f: add, a: ['a', 'b'], out: ['c'], after: ['noSuccessNull'] },
511
- { f: noSuccess, a: ['a', 'b'], out: ['c'], after: ['add'] }
512
- ],
513
- outTask: { type: 'finalcbFirst', a: ['c'] }
514
- });
515
- t.deepEqual(errors, [], 'no validation errors');
516
-
517
- var collector = new EventCollector();
518
- collector.capture(fn, 'task.complete');
519
-
520
- fn(2, 3, function (err, c) {
521
- t.equal(err, null);
522
- t.equal(c, 5);
523
- var events = collector.list();
524
- t.equal(events.length, 3, 'should have seen three task compl events');
525
- t.equal(events[0].task.name, 'noSuccess', 'name matches');
526
- t.equal(events[1].task.name, 'noSuccessNull', 'name matches');
527
- t.equal(events[2].task.name, 'add', 'name matches');
528
- t.deepEqual(events[2].task.results, [5], 'results match');
529
- t.end();
530
- });
531
- });
532
-
533
-
534
-
535
-
536
- test('selectFirst using direct returns', function (t) {
537
- function noSuccess(a, b) { } // returns undefined result
538
- function noSuccessNull(a, b) { return null; } // returns null result
539
- function addRet(a, b) { return a + b; }
540
-
541
- t.plan(6);
542
- var fn = react();
543
- var errors = fn.setAndValidateAST({
544
- inParams: ['a', 'b'],
545
- tasks: [
546
- { f: noSuccess, a: ['a', 'b'], out: ['c'], type: 'ret' },
547
- { f: noSuccessNull, a: ['a', 'b'], out: ['c'], type: 'ret', after: ['noSuccess'] },
548
- { f: addRet, a: ['a', 'b'], out: ['c'], type: 'ret', after: ['noSuccessNull'] }
549
- ],
550
- outTask: { type: 'finalcbFirst', a: ['c'] }
551
- });
552
- t.deepEqual(errors, [], 'no validation errors');
553
-
554
- var collector = new EventCollector();
555
- collector.capture(fn, 'task.complete');
556
-
557
- fn(2, 3, function (err, c) {
558
- t.equal(err, null);
559
- t.equal(c, 5);
560
- var events = collector.list();
561
- t.equal(events.length, 3, 'should have seen three task compl events');
562
- t.equal(events[2].task.name, 'addRet', 'name matches');
563
- t.deepEqual(events[2].task.results, [5], 'results match');
564
- t.end();
565
- });
566
- });
567
-
568
-