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