react 0.3.5 → 0.5.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 (230) hide show
  1. package/.npmignore +2 -1
  2. package/README.md +21 -151
  3. package/doc/advanced.md +161 -0
  4. package/doc/color-def.graffle +938 -0
  5. package/doc/color-def.png +0 -0
  6. package/examples/default-log-events.js +1 -1
  7. package/lib/event-collector.js +65 -0
  8. package/lib/log-events.js +30 -15
  9. package/{promise-resolve.js → lib/promise-resolve.js} +1 -1
  10. package/lib/track-tasks.js +4 -61
  11. package/package.json +1 -1
  12. package/react.js +33 -1
  13. package/test/core.test.js +1 -1
  14. package/test/module-use.test.js +5 -2
  15. package/test/promise-auto-resolve.test.js +2 -1
  16. package/Jakefile.js +0 -8
  17. package/doc/alternate-dsls.md +0 -103
  18. package/dsl/chain.js +0 -150
  19. package/dsl/fstr.js +0 -121
  20. package/dsl/pcode.js +0 -175
  21. package/examples/chain-events1.js +0 -55
  22. package/examples/chain1.js +0 -19
  23. package/examples/fstr-events1.js +0 -38
  24. package/examples/fstr1.js +0 -37
  25. package/examples/pcode1.js +0 -22
  26. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia.html +0 -675
  27. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/37px-Wiktionary-logo-en.svg.png +0 -0
  28. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
  29. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index(1).php +0 -407
  30. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index.php +0 -130
  31. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(1).php +0 -3
  32. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(10).php +0 -89
  33. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(2).php +0 -23
  34. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(3).php +0 -153
  35. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(4).php +0 -6
  36. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(5).php +0 -3
  37. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(6).php +0 -96
  38. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(7).php +0 -16
  39. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(8).php +0 -14
  40. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(9).php +0 -123
  41. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load.php +0 -3
  42. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
  43. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/saved_resource +0 -1
  44. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
  45. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
  46. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's.html +0 -1369
  47. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/121911_DobbsDigest_Cover.jpg +0 -0
  48. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/160-x-600-IMU Impact 2012.jpg +0 -0
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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
  64. 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
  65. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad0St1Sz6Sq0V0Id20628317.gif +0 -0
  66. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad2331174St1Sz225Sq20825250V0Id4.gif +0 -0
  67. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/AdTracImage.gif +0 -0
  68. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Default_Size_16_1x1.gif +0 -0
  69. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/FB.Share +0 -9
  70. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/addthis_widget.js +0 -2
  71. 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
  72. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/beacon.js +0 -7
  73. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/checkauth.js +0 -18
  74. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/colorbox.css +0 -49
  75. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/convert_data.js +0 -1
  76. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count(1).js +0 -5
  77. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.js +0 -5
  78. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.json +0 -1
  79. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dataflow1.gif +0 -0
  80. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/def.html +0 -126
  81. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/defaults.css +0 -1
  82. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/detect.js +0 -91
  83. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/devtest_left-col-slim.css +0 -30
  84. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqus.js +0 -327
  85. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.css +0 -34
  86. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.js +0 -8
  87. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff(1).css +0 -24
  88. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff.css +0 -24
  89. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dobbs_disqus_logo.gif +0 -0
  90. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.css +0 -1
  91. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.js +0 -1
  92. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqCfg.js +0 -55
  93. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqImg.js +0 -12
  94. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/embed.js +0 -76
  95. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/experience_util.js +0 -636
  96. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/fastbutton.html +0 -11
  97. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ga.js +0 -51
  98. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-facebook_sm.png +0 -0
  99. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-nav.css +0 -798
  100. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-twitter_sm.png +0 -0
  101. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h_s_code_remote.js +0 -377
  102. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hintbox_info.jpg +0 -0
  103. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hub.1326407570.html +0 -3
  104. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/in.js +0 -76
  105. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/insight.min.js +0 -55
  106. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.2.6.min.js +0 -32
  107. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.4.2.min.js +0 -154
  108. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-ui-1.8rc3.custom.min.js +0 -374
  109. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.colorbox-min.js +0 -4
  110. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.min.js +0 -154
  111. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/lib.js +0 -212
  112. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/like.html +0 -214
  113. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/noavatar32.png +0 -0
  114. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nodetag.js +0 -18
  115. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nonSecureAnonymousFramework +0 -2913
  116. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/p.json +0 -1
  117. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/plusone.js +0 -32
  118. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/popwindow.js +0 -24
  119. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/q4OyybLB0-A.js +0 -91
  120. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/quant.js +0 -28
  121. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/qxvZoiHdpAF.css +0 -192
  122. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/reply.html +0 -160
  123. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/rss.gif +0 -0
  124. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/s.js +0 -1
  125. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource +0 -421
  126. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(1) +0 -1
  127. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(2) +0 -341
  128. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(3) +0 -127
  129. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/script84.js +0 -113
  130. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/scripts.js +0 -30
  131. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sh72.html +0 -5
  132. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shAutoloader.js +0 -17
  133. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAS3.js +0 -59
  134. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAppleScript.js +0 -75
  135. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushBash.js +0 -59
  136. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCSharp.js +0 -65
  137. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushColdFusion.js +0 -100
  138. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCpp.js +0 -97
  139. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCss.js +0 -91
  140. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDelphi.js +0 -55
  141. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDiff.js +0 -41
  142. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushErlang.js +0 -52
  143. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushGroovy.js +0 -67
  144. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJScript.js +0 -52
  145. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJava.js +0 -57
  146. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJavaFX.js +0 -58
  147. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPerl.js +0 -72
  148. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPhp.js +0 -88
  149. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPlain.js +0 -33
  150. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPowerShell.js +0 -74
  151. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPython.js +0 -64
  152. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushRuby.js +0 -55
  153. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSass.js +0 -94
  154. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushScala.js +0 -51
  155. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSql.js +0 -66
  156. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushVb.js +0 -56
  157. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushXml.js +0 -69
  158. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore.css +0 -226
  159. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCoreDefault.css +0 -333
  160. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore_new.js +0 -17
  161. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shLegacy.js +0 -17
  162. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shThemeDefault.css +0 -117
  163. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share-button-css +0 -67
  164. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_email_icon.gif +0 -0
  165. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_print_icon.gif +0 -0
  166. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sidebar.js +0 -88
  167. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/superfooter_936.css +0 -186
  168. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/svrGP.aspx +0 -0
  169. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/t.gif +0 -0
  170. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thickbox.js +0 -343
  171. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thread.js +0 -128
  172. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/togglediv.js +0 -15
  173. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/tweet_button.html +0 -3
  174. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ubmtechweb_logo_sm.gif +0 -0
  175. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/upload.html +0 -91
  176. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/welcome.js +0 -7
  177. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widget74.css +0 -1
  178. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widgets.js +0 -40
  179. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia.html +0 -904
  180. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/50px-Question_book-new.svg.png +0 -0
  181. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
  182. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index(1).php +0 -407
  183. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index.php +0 -130
  184. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(1).php +0 -3
  185. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(10).php +0 -89
  186. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(2).php +0 -23
  187. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(3).php +0 -153
  188. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(4).php +0 -6
  189. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(5).php +0 -3
  190. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(6).php +0 -96
  191. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(7).php +0 -16
  192. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(8).php +0 -14
  193. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(9).php +0 -123
  194. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load.php +0 -3
  195. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
  196. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/saved_resource +0 -1
  197. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
  198. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
  199. package/externalDocs/The Step of the Conductor - How To Node - NodeJS.html +0 -113
  200. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/6654_111305815684_541245684_2583159_5383291_n_normal.jpg +0 -0
  201. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/MARC3_normal.jpg +0 -2
  202. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/beacon.js +0 -7
  203. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46 +0 -0
  204. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46_normal.jpeg +0 -0
  205. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/clouds2_normal.jpg +0 -0
  206. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/count.json +0 -1
  207. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/def.html +0 -126
  208. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/defaults.css +0 -1
  209. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/disqus.js +0 -327
  210. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.css +0 -1
  211. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.js +0 -66
  212. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/embed.js +0 -76
  213. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/example1.dot +0 -0
  214. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/ga.js +0 -51
  215. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/get_num_replies.js +0 -79
  216. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/hub.1326407570.html +0 -3
  217. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/lib.js +0 -212
  218. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/noavatar32.png +0 -0
  219. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/quant.js +0 -28
  220. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/reply.html +0 -160
  221. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/t.gif +0 -0
  222. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/thread.js +0 -128
  223. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/tweet_button.1326407570.html +0 -3
  224. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/twitter_normal.jpg +0 -2
  225. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/upload.html +0 -91
  226. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/widgets.js +0 -40
  227. package/jake-tasks/jake-test.js +0 -64
  228. package/test/dsl/chain.test.js +0 -324
  229. package/test/dsl/fstr.test.js +0 -300
  230. package/test/dsl/pcode.test.js +0 -448
Binary file
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  var react = require('../'); // require('react');
9
- require('../lib/log-events').logEvents(react); // require('react/lib/log-events').logEvents(react); // turn on logging
9
+ react.logEvents(); // turn on logging of all flow and task events for all react functions
10
10
 
11
11
 
12
12
  function loadUser(uid, cb){ setTimeout(cb, 100, null, "User"+uid); }
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ var react = require('../'); // require('react');
4
+ react.trackTasks(); // enable task tracking
5
+
6
+ var TASK_EVENTS_RE = /^task\./;
7
+ var FLOW_EVENTS_RE = /^flow\./;
8
+
9
+ /**
10
+ Accumulator to make it easy to capture events
11
+
12
+ @example
13
+ var EventCollector = require('react/lib/event-collector');
14
+ var collector = new EventCollector();
15
+
16
+ collector.capture(); // capture all flow and task events for all react flows
17
+ collector.capture('flow.*'); // capture all flow events for all react flows
18
+ collector.capture(flowFn, 'task.*'); // capture task events on a flow
19
+ collector.capture(flowFn, 'flow.*'); // add capture flow events on a flow
20
+
21
+ var events = collector.list(); // retrieve the list of events
22
+ collector.clear(); // clear the list of events;
23
+ */
24
+ function EventCollector() {
25
+ this.events = [];
26
+ }
27
+
28
+ /**
29
+ register listener to capture events for a specific flow
30
+ @param flowFn the react flow function or can pass global react
31
+ @param eventId event id or wildcarded id
32
+ */
33
+ EventCollector.prototype.capture = function (flowFn, eventId) {
34
+ /*jshint validthis: true */
35
+ if (!eventId && typeof(flowFn) === 'string') { // only eventId provided
36
+ eventId = flowFn;
37
+ flowFn = react; // global react
38
+ } else if (!flowFn) flowFn = react; // global react
39
+ if (!eventId) eventId = '*'; // default to all
40
+ var emitter = flowFn.events;
41
+ var self = this;
42
+ function accumEvents(obj) {
43
+ var eventObject = {
44
+ event: this.event,
45
+ time: Date.now()
46
+ };
47
+ if (FLOW_EVENTS_RE.test(this.event)) {
48
+ eventObject.env = obj;
49
+ } else if (TASK_EVENTS_RE.test(this.event)) {
50
+ eventObject.task = obj;
51
+ }
52
+ self.events.push(eventObject);
53
+ }
54
+ emitter.on(eventId, accumEvents);
55
+ };
56
+
57
+ EventCollector.prototype.list = function () {
58
+ return this.events;
59
+ };
60
+
61
+ EventCollector.prototype.clear = function () {
62
+ this.events = []; // clear
63
+ };
64
+
65
+ module.exports = EventCollector;
package/lib/log-events.js CHANGED
@@ -5,13 +5,20 @@
5
5
 
6
6
  @example
7
7
  var react = require('react');
8
- require('react/lib/log-events').logEvent(react);
8
+ react.logEvents(); // log all task and flow events on all react functions
9
+ react.logEvents('task.*'); // log all task events on all react functions
10
+ react.logEvents(flowFn); // log all task and flow events on flowFn only
11
+ react.logEvents(flowFn, 'flow.*'); // log all flow events on flowFn only
9
12
  */
10
13
 
11
- var react = require('../lib/track-tasks'); // require('react/lib/track-tasks'); // turn on tracking
14
+ var util = require('util'); // TODO replace inspect with something portable to browser
15
+
16
+ var react = require('../'); // require('react');
17
+ react.trackTasks(); // enable task and flow tracking
12
18
 
13
19
  var ALL_FLOW_EVENTS = 'flow.*';
14
20
  var ALL_TASK_EVENTS = 'task.*';
21
+ var FLOW_RE = /^flow\./;
15
22
 
16
23
  function flowLog(obj) {
17
24
  /*jshint validthis: true */
@@ -21,12 +28,12 @@ function flowLog(obj) {
21
28
  var eventTimeStr = time.toISOString();
22
29
  if (this.event === 'flow.complete') {
23
30
  var env = obj;
24
- console.error('%s: %s \tmsecs:(%s) \n\targs:(%s) \n\tresults:(%s)\n',
25
- this.event, env.name, env.elapsedTime, argsNoCb, env.results);
31
+ console.error('%s: %s \tmsecs: %s \n\targs: %s \n\tresults: %s\n',
32
+ this.event, env.name, env.elapsedTime, util.inspect(argsNoCb), util.inspect(env.results));
26
33
  } else {
27
34
  var name = obj.name;
28
35
  var args = obj.args;
29
- console.error('%s: %s \n\targs:(%s)\n', this.event, name, argsNoCb);
36
+ console.error('%s: %s \n\targs: %s\n', this.event, name, util.inspect(argsNoCb));
30
37
  }
31
38
  }
32
39
 
@@ -38,12 +45,12 @@ function taskLog(obj) {
38
45
  var eventTimeStr = time.toISOString();
39
46
  if (this.event === 'task.complete') {
40
47
  var task = obj;
41
- console.error('%s: %s \tmsecs:(%s) \n\targs:(%s) \n\tresults:(%s)\n',
42
- this.event, task.name, task.elapsedTime, argsNoCb, task.results);
48
+ console.error('%s: %s \tmsecs: %s \n\targs: %s \n\tresults: %s\n',
49
+ this.event, task.name, task.elapsedTime, util.inspect(argsNoCb), util.inspect(task.results));
43
50
  } else {
44
51
  var name = obj.name;
45
52
  var args = obj.args;
46
- console.error('%s: %s \n\targs:(%s)\n', this.event, name, argsNoCb);
53
+ console.error('%s: %s \n\targs: %s\n', this.event, name, util.inspect(argsNoCb));
47
54
  }
48
55
 
49
56
  }
@@ -55,16 +62,24 @@ function taskLog(obj) {
55
62
 
56
63
  @example
57
64
  var react = require('react');
58
- require('react/lib/log-events').logEvents(flowFn); // pass flowFn or react
65
+ react.logEvents(flowFn, eventWildcard); //log events on flowfn matching wildcard
59
66
 
60
67
  @param flowFn Flow function or global react object
68
+ @param eventWildcard wildcarded event type, if not provided use flow.* and task.*
61
69
  */
62
- function logEvents(flowFn) {
63
- //output events as tasks start and complete
64
- flowFn.events.removeListener(ALL_FLOW_EVENTS, flowLog);
65
- flowFn.events.on(ALL_FLOW_EVENTS, flowLog);
66
- flowFn.events.removeListener(ALL_TASK_EVENTS, taskLog);
67
- flowFn.events.on(ALL_TASK_EVENTS, taskLog);
70
+ function logEvents(flowFn, eventWildcard) {
71
+ if (!flowFn) flowFn = react; // use global
72
+ if (eventWildcard && eventWildcard !== '*') {
73
+ var logFn = (FLOW_RE.test(eventWildcard)) ? flowLog : taskLog;
74
+ flowFn.events.removeListener(eventWildcard, logFn);
75
+ flowFn.events.on(eventWildcard, logFn);
76
+ } else { // none provided, use flow.* and task.*
77
+ //output events as tasks start and complete
78
+ flowFn.events.removeListener(ALL_FLOW_EVENTS, flowLog);
79
+ flowFn.events.on(ALL_FLOW_EVENTS, flowLog);
80
+ flowFn.events.removeListener(ALL_TASK_EVENTS, taskLog);
81
+ flowFn.events.on(ALL_TASK_EVENTS, taskLog);
82
+ }
68
83
  }
69
84
 
70
85
  module.exports = react;
@@ -10,7 +10,7 @@
10
10
  */
11
11
 
12
12
 
13
- var react = require('./'); // require('react');
13
+ var react = require('../'); // require('react');
14
14
 
15
15
  var PROMISE_SUFFIX = '__promise'; // added to param names that are promises
16
16
 
@@ -13,68 +13,14 @@
13
13
  - emits task.complete with task
14
14
  - emits flow complete with flowEnv
15
15
  - emits flow errored with flowEnv
16
- */
17
-
18
-
19
- var react = require('../'); // require('react');
20
-
21
- var TASK_EVENTS_RE = /^task\./;
22
- var FLOW_EVENTS_RE = /^flow\./;
23
-
24
- /**
25
- Accumulator to make it easy to capture events
26
-
27
- @example
28
- var EventCollector = require('react/lib/track-tasks').EventCollector;
29
- var collector = new EventCollector();
30
-
31
- collector.captureGlobal('*'); // capture all react events for all flows
32
-
33
- // OR
34
-
35
- collector.capture(flowFn, 'task.'); // capture task events on a flow
36
- collector.capture(flowFn, 'flow.'); // add capture flow events on a flow
37
16
 
38
- var events = collector.list(); // retrieve the list of events
17
+ @example
18
+ var react = require('react');
19
+ react.trackTasks(); // enable task and flow tracking
39
20
  */
40
- function EventCollector() {
41
- this.events = [];
42
- }
43
21
 
44
- /**
45
- register listener to capture all events
46
- @param eventId event id or wildcarded id
47
- */
48
- EventCollector.prototype.captureGlobal = function (eventId) {
49
- this.capture(react, eventId);
50
- };
51
-
52
- /**
53
- register listener to capture events for a specific flow
54
- @param flowFn the react flow function or can pass global react
55
- @param eventId event id or wildcarded id
56
- */
57
- EventCollector.prototype.capture = function (flowFn, eventId) {
58
- var emitter = flowFn.events;
59
- var self = this;
60
- function accumEvents(obj) {
61
- var eventObject = {
62
- event: this.event,
63
- time: Date.now()
64
- };
65
- if (FLOW_EVENTS_RE.test(this.event)) {
66
- eventObject.env = obj;
67
- } else if (TASK_EVENTS_RE.test(this.event)) {
68
- eventObject.task = obj;
69
- }
70
- self.events.push(eventObject);
71
- }
72
- emitter.on(eventId, accumEvents);
73
- };
74
22
 
75
- EventCollector.prototype.list = function () {
76
- return this.events;
77
- };
23
+ var react = require('../'); // require('react');
78
24
 
79
25
  react.events.on(react.events.TYPES.EXEC_FLOW_START, function (env){
80
26
  env.startTime = Date.now();
@@ -111,7 +57,4 @@ react.events.on(react.events.TYPES.EXEC_FLOW_ERRORED, function (env) {
111
57
  });
112
58
 
113
59
 
114
-
115
-
116
60
  module.exports = react; // return react
117
- module.exports.EventCollector = EventCollector;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react",
3
3
  "description": "React is a javascript module implementing a lightweight rules engine to make it easier to work with asynchronous code, by reducing boilerplate code and improving error and exception handling while allowing variable and task dependencies when defining flow.",
4
- "version": "0.3.5",
4
+ "version": "0.5.0",
5
5
  "author": "Jeff Barczewski <jeff.barczewski@gmail.com>",
6
6
  "repository": { "type": "git", "url": "http://github.com/jeffbski/react.git" },
7
7
  "bugs" : { "url": "http://github.com/jeffbski/react/issues" },
package/react.js CHANGED
@@ -2,7 +2,39 @@
2
2
 
3
3
  var core = require('./lib/core.js');
4
4
 
5
+ /**
6
+ If called, load the built-in plugin for log events and invoke
7
+
8
+ @param flowFn [function] if not provided uses global react
9
+ @param eventWildcard [string] pattern to log events for
10
+ */
11
+ function logEvents(flowFn, eventWildcard) {
12
+ var logEventsMod = require('./lib/log-events');
13
+ if (!eventWildcard && typeof(flowFn) === 'string') { // only wildcard provided
14
+ eventWildcard = flowFn;
15
+ flowFn = undefined;
16
+ }
17
+ return logEventsMod.logEvents(flowFn, eventWildcard);
18
+ }
19
+
20
+ /**
21
+ Enable detection of promises and resolution
22
+ */
23
+ function resolvePromises() {
24
+ require('./lib/promise-resolve');
25
+ }
26
+
27
+ /**
28
+ Enable tracking of tasks and flow execution, emitting events and
29
+ tracking start, end, elapsed time
30
+ */
31
+ function trackTasks() {
32
+ require('./lib/track-tasks');
33
+ }
34
+
5
35
  module.exports = require('./lib/dsl.js'); // core + default dsl
6
36
  module.exports.options = core.options; // global react options
7
37
  module.exports.events = core.events; // global react event emitter
8
-
38
+ module.exports.logEvents = logEvents; // enable event logging
39
+ module.exports.resolvePromises = resolvePromises; // enable promise resolution
40
+ module.exports.trackTasks = trackTasks; // enable tracking of tasks
package/test/core.test.js CHANGED
@@ -3,7 +3,7 @@
3
3
  var test = require('tap').test;
4
4
 
5
5
  var react = require('../react');
6
- var EventCollector = require('../lib/track-tasks').EventCollector; // require('react/lib/track-tasks'); // turn on tracking
6
+ var EventCollector = require('../lib/event-collector'); // require('react/lib/event-collector'); // turn on tracking and get EventCollector
7
7
 
8
8
  function multiply(x, y, cb) { cb(null, x * y); }
9
9
  function add(x, y, cb) { cb(null, x + y); }
@@ -4,8 +4,8 @@ var test = require('tap').test;
4
4
  var BaseTask = require('../lib/base-task.js');
5
5
 
6
6
  var react = require('../'); // require('react');
7
- // turn on tracking, optionally obtain EventCollector
8
- var EventCollector = require('../lib/track-tasks').EventCollector; // require('react/lib/track-tasks');
7
+ // turn on tracking, obtain EventCollector
8
+ var EventCollector = require('../lib/event-collector'); // require('react/lib/event-collector');
9
9
 
10
10
 
11
11
  /**
@@ -39,6 +39,9 @@ test('module exports an function object with properties', function (t) {
39
39
  t.type(react, 'function', 'is a core constructor and default dsl function');
40
40
  t.type(react.options, 'object', 'has property for global react options');
41
41
  t.type(react.events, 'object', 'has global react event manager');
42
+ t.type(react.logEvents, 'function', 'has function to enable event logging');
43
+ t.type(react.trackTasks, 'function', 'has function to enable task and flow tracking');
44
+ t.type(react.resolvePromises, 'function', 'has fn to enable promise detection & resolution');
42
45
  t.end();
43
46
  });
44
47
 
@@ -8,7 +8,8 @@
8
8
  var test = require('tap').test;
9
9
  var Deferred = require('promised-io/promise').Deferred;
10
10
 
11
- var react = require('../promise-resolve'); // require('react/promise-resolve');
11
+ var react = require('../'); // require('react');
12
+ react.resolvePromises(); // enable promise resolving
12
13
 
13
14
  function multiply(x, y, cb) { cb(null, x * y); }
14
15
  function add(x, y, cb) { cb(null, x + y); }
package/Jakefile.js DELETED
@@ -1,8 +0,0 @@
1
-
2
-
3
- require('./jake-tasks/jake-test.js');
4
-
5
- desc('Default - run watch');
6
- task('default', ['test:watch']);
7
-
8
-
@@ -1,103 +0,0 @@
1
- # Alternate DSL's
2
-
3
- These DSL's are not loaded by default and thus require a separate require if you want to use one.
4
-
5
- Since React is an AST based rules system, it allows custom DSL's to be created easily, they only need to generate the AST and they are fully functional, allowing many different interfaces for the same system.
6
-
7
-
8
- ### Examples using the AST directly or alternate DSL's
9
-
10
-
11
- 1. [Using pseudocode DSL](#pcode)
12
- 2. [Using jquery-like chaining DSL](#chain)
13
- 3. [Function String DSL](#fstr) (Deprecated)
14
-
15
-
16
- <a name="pcode"/>
17
- ### Example using pseudocode DSL interface
18
-
19
- ```javascript
20
- var pcodeDefine = require('react/dsl/pcode');
21
-
22
- function multiply(a, b, cb) { cb(null, a * b); }
23
- function add(a, b) { return a + b; }
24
- var locals = { // since pcodeDefine uses strings, need references to functions passed into react
25
- multiply: multiply,
26
- add: add
27
- };
28
-
29
- var fn = pcodeDefine('a, b, cb', [ // input params
30
- 'm := multiply(a, b)', // using a callback function, use :=
31
- 's = add(m, a)', // using a sync function, use =
32
- 'cb(err, m, s)' // output params for final callback
33
- ], locals); // hash of functions that will be used
34
-
35
- fn(2, 3, function (err, m, s) {
36
- console.error('err:', err); // null
37
- console.error('m:', m); // 2 * 3 = 6
38
- console.error('s:', s); // 6 + 2 = 8
39
- });
40
- ```
41
-
42
- <a name="chain"/>
43
- ### Example using jquery-like chaining DSL interface
44
-
45
- ```javascript
46
- var chainDefine = require('react/dsl/chain');
47
-
48
- function multiply(a, b, cb) { cb(null, a * b); }
49
- function add(a, b) { return a + b; }
50
-
51
- var fn = chainDefine()
52
- .in('a', 'b', 'cb') // input params
53
- .out('err', 'm', 's') // final callback output params
54
- .async(multiply).in('a', 'b', 'cb').out('err', 'm') // task def - async fn, in params, callback out params
55
- .sync(add).in('m', 'a').out('s') // task def - sync fn, in params, return value
56
- .end();
57
-
58
- fn(2, 3, function (err, m, s) {
59
- console.error('err:', err); // null
60
- console.error('m:', m); // 2 * 3 = 6
61
- console.error('s:', s); // 6 + 2 = 8
62
- });
63
- ```
64
-
65
- <a name="fstr"/>
66
- ### Example using Function String DSL interface
67
-
68
- The Function String DSL interface is deprecated since it morphed into the default DSL which is very similar. It is recommended that you use the default DSL instead.
69
-
70
- ```javascript
71
- var fstrDefine = require('react/dsl/fstr');
72
-
73
- function loadUser(uid, cb){ setTimeout(cb, 100, null, "User"+uid); }
74
- function loadFile(filename, cb){ setTimeout(cb, 100, null, 'Filedata'+filename); }
75
- function markdown(filedata) { return 'html'+filedata; }
76
- function prepareDirectory(outDirname, cb){ setTimeout(cb, 200, null, 'dircreated-'+outDirname); }
77
- function writeOutput(html, user, cb){ setTimeout(cb, 300, null, html+'_bytesWritten'); }
78
- function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
79
- function customizeEmail(user, emailHtml, cb) { return 'cust-'+user+emailHtml; }
80
- function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-'+custEmailHtml); }
81
-
82
- function useHtml(err, html, user, bytesWritten) {
83
- if(err) {
84
- console.log('***Error: %s', err);
85
- return;
86
- }
87
- console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
88
- }
89
-
90
- var loadAndSave = fstrDefine('filename, uid, outDirname, cb', [ // input params
91
- loadUser, 'uid -> err, user', // calling async fn loadUser with uid, callback is called with err and user
92
- loadFile, 'filename -> err, filedata',
93
- markdown, 'filedata -> returns html', // using a sync function
94
- prepareDirectory, 'outDirname -> err, dircreated',
95
- writeOutput, 'html, user -> err, bytesWritten', { after: prepareDirectory }, // only after prepareDirectory done
96
- loadEmailTemplate, ' -> err, emailmd',
97
- markdown, 'emailmd -> returns emailHtml', // using a sync function
98
- customizeEmail, 'user, emailHtml -> returns custEmailHtml',
99
- deliverEmail, 'custEmailHtml -> err, deliveredEmail', { after: writeOutput } // only after writeOutput is done
100
- ], 'err, html, user, bytesWritten'); // callback output params
101
-
102
- loadAndSave('file.md', 100, '/tmp/foo', useHtml); // executing the flow
103
- ```