react 0.2.5 → 0.3.5

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 (270) hide show
  1. package/README.md +189 -114
  2. package/doc/alternate-dsls.md +103 -0
  3. package/doc/default-simple.dot +19 -0
  4. package/doc/default-simple.dot.png +0 -0
  5. package/{lib → dsl}/chain.js +5 -3
  6. package/{lib → dsl}/fstr.js +17 -6
  7. package/{lib → dsl}/pcode.js +19 -8
  8. package/examples/chain-events1.js +28 -7
  9. package/examples/chain1.js +2 -2
  10. package/examples/default-events1.js +33 -6
  11. package/examples/default-log-events.js +43 -0
  12. package/examples/default-simple.js +45 -0
  13. package/examples/fstr-events1.js +4 -17
  14. package/examples/fstr1.js +3 -2
  15. package/examples/pcode1.js +2 -2
  16. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia.html +675 -0
  17. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/37px-Wiktionary-logo-en.svg.png +0 -0
  18. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
  19. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index(1).php +407 -0
  20. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index.php +130 -0
  21. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(1).php +3 -0
  22. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(10).php +89 -0
  23. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(2).php +23 -0
  24. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(3).php +153 -0
  25. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(4).php +6 -0
  26. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(5).php +3 -0
  27. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(6).php +96 -0
  28. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(7).php +16 -0
  29. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(8).php +14 -0
  30. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(9).php +123 -0
  31. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load.php +3 -0
  32. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
  33. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/saved_resource +1 -0
  34. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
  35. package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
  36. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's.html +1369 -0
  37. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/121911_DobbsDigest_Cover.jpg +0 -0
  38. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/160-x-600-IMU Impact 2012.jpg +0 -0
  39. 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= +68 -0
  40. 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) +67 -0
  41. 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) +2 -0
  42. 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) +2 -0
  43. 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) +8 -0
  44. 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) +2 -0
  45. 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
  46. 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) +2 -0
  47. 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) +2 -0
  48. 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) +2 -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=500202461(4) +2 -0
  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=500202461(5) +431 -0
  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=500202461(6) +2 -0
  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=500202461(7) +431 -0
  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=500202461(8) +2 -0
  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=500202461(9) +2 -0
  55. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad0St1Sz6Sq0V0Id20628317.gif +0 -0
  56. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad2331174St1Sz225Sq20825250V0Id4.gif +0 -0
  57. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/AdTracImage.gif +0 -0
  58. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Default_Size_16_1x1.gif +0 -0
  59. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/FB.Share +9 -0
  60. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/addthis_widget.js +2 -0
  61. 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= +11 -0
  62. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/beacon.js +7 -0
  63. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/checkauth.js +18 -0
  64. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/colorbox.css +49 -0
  65. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/convert_data.js +1 -0
  66. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count(1).js +5 -0
  67. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.js +5 -0
  68. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.json +1 -0
  69. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dataflow1.gif +0 -0
  70. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/def.html +126 -0
  71. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/defaults.css +1 -0
  72. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/detect.js +91 -0
  73. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/devtest_left-col-slim.css +30 -0
  74. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqus.js +327 -0
  75. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.css +34 -0
  76. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.js +8 -0
  77. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff(1).css +24 -0
  78. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff.css +24 -0
  79. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dobbs_disqus_logo.gif +0 -0
  80. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.css +1 -0
  81. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.js +1 -0
  82. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqCfg.js +55 -0
  83. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqImg.js +12 -0
  84. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/embed.js +76 -0
  85. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/experience_util.js +636 -0
  86. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/fastbutton.html +11 -0
  87. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ga.js +51 -0
  88. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-facebook_sm.png +0 -0
  89. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-nav.css +798 -0
  90. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-twitter_sm.png +0 -0
  91. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h_s_code_remote.js +377 -0
  92. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hintbox_info.jpg +0 -0
  93. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hub.1326407570.html +3 -0
  94. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/in.js +76 -0
  95. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/insight.min.js +55 -0
  96. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.2.6.min.js +32 -0
  97. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.4.2.min.js +154 -0
  98. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-ui-1.8rc3.custom.min.js +374 -0
  99. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.colorbox-min.js +4 -0
  100. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.min.js +154 -0
  101. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/lib.js +212 -0
  102. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/like.html +214 -0
  103. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/noavatar32.png +0 -0
  104. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nodetag.js +18 -0
  105. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nonSecureAnonymousFramework +2913 -0
  106. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/p.json +1 -0
  107. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/plusone.js +32 -0
  108. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/popwindow.js +24 -0
  109. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/q4OyybLB0-A.js +91 -0
  110. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/quant.js +28 -0
  111. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/qxvZoiHdpAF.css +192 -0
  112. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/reply.html +160 -0
  113. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/rss.gif +0 -0
  114. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/s.js +1 -0
  115. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource +421 -0
  116. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(1) +1 -0
  117. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(2) +341 -0
  118. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(3) +127 -0
  119. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/script84.js +113 -0
  120. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/scripts.js +30 -0
  121. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sh72.html +5 -0
  122. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shAutoloader.js +17 -0
  123. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAS3.js +59 -0
  124. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAppleScript.js +75 -0
  125. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushBash.js +59 -0
  126. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCSharp.js +65 -0
  127. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushColdFusion.js +100 -0
  128. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCpp.js +97 -0
  129. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCss.js +91 -0
  130. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDelphi.js +55 -0
  131. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDiff.js +41 -0
  132. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushErlang.js +52 -0
  133. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushGroovy.js +67 -0
  134. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJScript.js +52 -0
  135. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJava.js +57 -0
  136. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJavaFX.js +58 -0
  137. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPerl.js +72 -0
  138. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPhp.js +88 -0
  139. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPlain.js +33 -0
  140. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPowerShell.js +74 -0
  141. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPython.js +64 -0
  142. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushRuby.js +55 -0
  143. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSass.js +94 -0
  144. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushScala.js +51 -0
  145. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSql.js +66 -0
  146. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushVb.js +56 -0
  147. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushXml.js +69 -0
  148. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore.css +226 -0
  149. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCoreDefault.css +333 -0
  150. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore_new.js +17 -0
  151. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shLegacy.js +17 -0
  152. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shThemeDefault.css +117 -0
  153. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share-button-css +67 -0
  154. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_email_icon.gif +0 -0
  155. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_print_icon.gif +0 -0
  156. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sidebar.js +88 -0
  157. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/superfooter_936.css +186 -0
  158. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/svrGP.aspx +0 -0
  159. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/t.gif +0 -0
  160. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thickbox.js +343 -0
  161. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thread.js +128 -0
  162. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/togglediv.js +15 -0
  163. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/tweet_button.html +3 -0
  164. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ubmtechweb_logo_sm.gif +0 -0
  165. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/upload.html +91 -0
  166. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/welcome.js +7 -0
  167. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widget74.css +1 -0
  168. package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widgets.js +40 -0
  169. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia.html +904 -0
  170. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/50px-Question_book-new.svg.png +0 -0
  171. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
  172. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index(1).php +407 -0
  173. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index.php +130 -0
  174. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(1).php +3 -0
  175. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(10).php +89 -0
  176. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(2).php +23 -0
  177. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(3).php +153 -0
  178. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(4).php +6 -0
  179. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(5).php +3 -0
  180. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(6).php +96 -0
  181. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(7).php +16 -0
  182. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(8).php +14 -0
  183. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(9).php +123 -0
  184. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load.php +3 -0
  185. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
  186. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/saved_resource +1 -0
  187. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
  188. package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
  189. package/externalDocs/The Step of the Conductor - How To Node - NodeJS.html +113 -0
  190. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/6654_111305815684_541245684_2583159_5383291_n_normal.jpg +0 -0
  191. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/MARC3_normal.jpg +2 -0
  192. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/beacon.js +7 -0
  193. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46 +0 -0
  194. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46_normal.jpeg +0 -0
  195. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/clouds2_normal.jpg +0 -0
  196. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/count.json +1 -0
  197. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/def.html +126 -0
  198. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/defaults.css +1 -0
  199. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/disqus.js +327 -0
  200. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.css +1 -0
  201. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.js +66 -0
  202. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/embed.js +76 -0
  203. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/example1.dot +0 -0
  204. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/ga.js +51 -0
  205. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/get_num_replies.js +79 -0
  206. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/hub.1326407570.html +3 -0
  207. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/lib.js +212 -0
  208. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/noavatar32.png +0 -0
  209. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/quant.js +28 -0
  210. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/reply.html +160 -0
  211. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/t.gif +0 -0
  212. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/thread.js +128 -0
  213. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/tweet_button.1326407570.html +3 -0
  214. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/twitter_normal.jpg +2 -0
  215. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/upload.html +91 -0
  216. package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/widgets.js +40 -0
  217. package/lib/base-task.js +8 -6
  218. package/lib/cb-task.js +14 -1
  219. package/lib/core.js +43 -12
  220. package/lib/dsl.js +14 -6
  221. package/lib/event-manager.js +29 -16
  222. package/lib/finalcb-first-task.js +16 -10
  223. package/lib/finalcb-task.js +17 -10
  224. package/lib/input-parser.js +7 -3
  225. package/lib/log-events.js +71 -0
  226. package/lib/parse.js +6 -3
  227. package/lib/promise-task.js +89 -0
  228. package/lib/ret-task.js +1 -1
  229. package/lib/task.js +32 -23
  230. package/lib/track-tasks.js +117 -0
  231. package/lib/validate.js +3 -3
  232. package/lib/vcon.js +6 -3
  233. package/lib/when-task.js +81 -0
  234. package/package.json +5 -3
  235. package/promise-resolve.js +35 -0
  236. package/react.js +0 -4
  237. package/test/core-deferred.test.js +134 -0
  238. package/test/core-promised.test.js +132 -0
  239. package/test/core-when.test.js +84 -0
  240. package/test/core.test.js +108 -60
  241. package/test/dsl.test.js +58 -6
  242. package/test/{chain.test.js → dsl/chain.test.js} +85 -1
  243. package/test/{fstr.test.js → dsl/fstr.test.js} +13 -1
  244. package/test/{pcode.test.js → dsl/pcode.test.js} +128 -1
  245. package/test/exec-options.test.js +2 -1
  246. package/test/finalcb-task.test.js +6 -5
  247. package/test/input-parser.test.js +10 -6
  248. package/test/module-use.test.js +13 -199
  249. package/test/promise-auto-resolve.test.js +51 -0
  250. package/test/validate.test.js +5 -2
  251. package/test/vcon.test.js +13 -0
  252. package/lib/.#event-manager.js +0 -1
  253. package/oldExamples/analyze.js +0 -29
  254. package/oldExamples/analyze2.js +0 -29
  255. package/oldExamples/example10-dsl.js +0 -63
  256. package/oldExamples/example11.js +0 -62
  257. package/oldExamples/example12.js +0 -63
  258. package/oldExamples/example13.js +0 -63
  259. package/oldExamples/example14.js +0 -63
  260. package/oldExamples/example15.js +0 -75
  261. package/oldExamples/example6-ast.js +0 -47
  262. package/oldExamples/example6-dsl.js +0 -49
  263. package/oldExamples/example8-ast.js +0 -55
  264. package/oldExamples/example8-dsl.js +0 -53
  265. package/oldExamples/example9-ast.js +0 -58
  266. package/oldExamples/example9-dsl.js +0 -57
  267. package/oldExamples/function-str-ex1.js +0 -33
  268. package/oldExamples/function-str-ex2.js +0 -67
  269. package/oldExamples/trait1.js +0 -41
  270. package/oldExamples/trait2.js +0 -44
@@ -0,0 +1,19 @@
1
+ digraph simple {
2
+ inputs [shape=box];
3
+ loadFoo [shape=box];
4
+ loadBar [shape=box];
5
+ render [shape=box];
6
+ outputs[shape=box];
7
+ inputs -> fooPath;
8
+ inputs -> barPath;
9
+ inputs -> barP2;
10
+ fooPath -> loadFoo;
11
+ loadFoo -> foo;
12
+ barPath -> loadBar;
13
+ loadBar -> bar;
14
+ barP2 -> loadBar;
15
+ foo -> render;
16
+ bar -> render;
17
+ render -> renderedOut;
18
+ renderedOut -> outputs;
19
+ }
Binary file
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var sprintf = require('sprintf').sprintf;
4
- var core = require('./core.js');
5
- var tutil = require('./task.js');
4
+ var core = require('../lib/core.js');
5
+ var tutil = require('../lib/task.js');
6
6
 
7
7
  // err for task type cb is implied and thus optional, but allow for clarity.
8
8
  var ERROR_NAMES_RE = /^err$/i; // first out param matching this is skipped as being the err object
@@ -145,4 +145,6 @@ FlowBuilder.prototype.end = function end() {
145
145
  return reactFn;
146
146
  };
147
147
 
148
- module.exports = chainDefine;
148
+ module.exports = chainDefine;
149
+ module.exports.options = core.options;
150
+ module.exports.events = core.events;
@@ -1,23 +1,32 @@
1
1
  'use strict';
2
+ /*jshint regexp: false */
2
3
 
3
4
  var sprintf = require('sprintf').sprintf;
4
- var core = require('./core.js');
5
- var parse = require('./parse.js');
6
- var tutil = require('./task.js');
5
+ var core = require('../lib/core.js');
6
+ var parse = require('../lib/parse.js');
7
+ var tutil = require('../lib/task.js');
7
8
 
8
9
  var INPARAMS_NO_MATCH = 'input params in wrong format, wanted "foo, bar" - found: %s';
9
10
  var OUTPARAMS_NO_MATCH = 'output params in wrong format, wanted "foo, bar" - found: %s';
10
11
  var INOUT_PARAMS_NO_MATCH = 'task params in wrong format, wanted "foo, bar -> err, baz" - found: %s';
11
12
  var EXTRA_TASKARG = 'extra unmatched task arg: %s';
12
13
 
14
+ var ERR_NAMES_RE = /^err$/i; // err, ERR, Err, ...
15
+
16
+ function filterOutLeadingErrParam(args) { // if leading err param, filter it out
17
+ if (args.length && args[0].match(ERR_NAMES_RE)) args.shift();
18
+ return args;
19
+ }
20
+
21
+
13
22
  var inOutDefParse = {
14
- regex: /^([^-]*)(->)?\s*(er{0,2}\s*,|returns?\s+)?(.*)$/i,
23
+ regex: /^([^\-]*)(->)?\s*(returns?\s+)?(.*)$/i, //TODO this will not work if literal has dash
15
24
  fn: function (m) {
16
25
  var reMatchReturns = /returns?/i;
17
26
  return {
18
27
  type: (m[3] && m[3].match(reMatchReturns)) ? 'ret' : 'cb',
19
28
  inDef: parse.splitTrimFilterArgs(m[1]),
20
- outDef: parse.splitTrimFilterArgs(m[4])
29
+ outDef: filterOutLeadingErrParam(parse.splitTrimFilterArgs(m[4]))
21
30
  };
22
31
  }
23
32
  };
@@ -107,4 +116,6 @@ function selectFirst(inParamStr, taskDefArr, outParamStr, options) {
107
116
  }
108
117
 
109
118
  module.exports = fstrDefine;
110
- module.exports.selectFirst = selectFirst;
119
+ module.exports.selectFirst = selectFirst;
120
+ module.exports.options = core.options;
121
+ module.exports.events = core.events;
@@ -1,15 +1,24 @@
1
1
  'use strict';
2
+ /*jshint regexp: false */
2
3
 
3
4
  var sprintf = require('sprintf').sprintf;
4
- var core = require('./core.js');
5
- var parse = require('./parse.js');
6
- var tutil = require('./task.js');
5
+ var core = require('../lib/core.js');
6
+ var parse = require('../lib/parse.js');
7
+ var tutil = require('../lib/task.js');
7
8
 
8
9
  var INPARAMS_NO_MATCH = 'input params in wrong format, wanted "foo, bar, cb" - found: %s';
9
10
  var OUTPARAMS_NO_MATCH = 'output params in wrong format, wanted "cb(err, foo)" - found: %s';
10
11
  var INOUT_PARAMS_NO_MATCH = 'task params in wrong format, wanted "foo, bar := func(baz, cat, cb) " - found: %s';
11
12
  var EXTRA_TASKARG = 'extra unmatched task arg: %s';
12
13
 
14
+ var ERR_NAMES_RE = /^err$/i; // err, ERR, Err, ...
15
+
16
+ function filterOutLeadingErrParam(args) { // if leading err param, filter it out
17
+ if (args.length && args[0].match(ERR_NAMES_RE)) args.shift();
18
+ return args;
19
+ }
20
+
21
+
13
22
  /**
14
23
  Examples:
15
24
  var react = require('react');
@@ -54,7 +63,7 @@ var inParse = {
54
63
  };
55
64
 
56
65
  var cbParse = {
57
- regex: /^\s*(var\s+)?([^:]*)\s*:=\s*([a-zA-Z0-9_\.-]+)\s*\(\s*([^)]*)\)\s*(when\s+([^;]+))?;?\s*$/,
66
+ regex: /^\s*(var\s+)?([^:]*)\s*:=\s*([a-zA-Z0-9_\.\-]+)\s*\(\s*([^)]*)\)\s*(when\s+([^;]+))?;?\s*$/,
58
67
  fn: function (m) {
59
68
  var taskDef = {
60
69
  type: 'cb',
@@ -68,7 +77,7 @@ var cbParse = {
68
77
  };
69
78
 
70
79
  var retParse = {
71
- regex: /^\s*(var\s+)?([^:]*)\s*=\s*([a-zA-Z0-9_\.-]+)\s*\(\s*([^)]*)\)\s*(when\s+([^;]+))?;?\s*$/,
80
+ regex: /^\s*(var\s+)?([^:]*)\s*=\s*([a-zA-Z0-9_\.\-]+)\s*\(\s*([^)]*)\)\s*(when\s+([^;]+))?;?\s*$/,
72
81
  fn: function (m) {
73
82
  var taskDef = {
74
83
  type: 'ret',
@@ -82,10 +91,10 @@ var retParse = {
82
91
  };
83
92
 
84
93
  var finalCbParse = {
85
- regex: /^\s*(cb|callback)\s*\((er{0,2}\s*,\s*)?([^)]*)\)\s*;?$/i,
94
+ regex: /^\s*(cb|callback)\s*\(([^)]*)\)\s*;?$/i,
86
95
  fn: function (m) {
87
96
  return {
88
- outDef: (m[3]) ? parse.splitTrimFilterArgs(m[3]) : []
97
+ outDef: (m[2]) ? filterOutLeadingErrParam(parse.splitTrimFilterArgs(m[2])) : []
89
98
  };
90
99
  }
91
100
  };
@@ -161,4 +170,6 @@ function selectFirst(inParamStr, taskStrArr, locals, options) {
161
170
  }
162
171
 
163
172
  module.exports = pcodeDefine;
164
- module.exports.selectFirst = selectFirst;
173
+ module.exports.selectFirst = selectFirst;
174
+ module.exports.options = core.options;
175
+ module.exports.events = core.events;
@@ -1,26 +1,47 @@
1
1
  'use strict';
2
2
 
3
- var react = require('../'); // require('react');
3
+ var chainDefine = require('../dsl/chain'); // require('react/dsl/chain');
4
+ require('../lib/track-tasks'); // require('react/lib/track-tasks'); // turn on tracking
4
5
 
5
6
  //output events as tasks start and complete
6
- react.events.on('*', function (obj) {
7
+ chainDefine.events.on('flow.*', function (obj) {
8
+ /*jshint validthis: true */
7
9
  var time = new Date();
8
10
  time.setTime(obj.time);
9
- var eventTimeStr = time.toISOString();
10
11
  var argsNoCb = obj.args.filter(function (a) { return (typeof(a) !== 'function'); });
11
- if (obj.event === 'task.complete') {
12
+ var eventTimeStr = time.toISOString();
13
+ if (this.event === 'flow.complete') {
14
+ var env = obj;
12
15
  console.error('%s: %s \tmsecs:(%s) \n\targs:(%s) \n\tresults:(%s)\n',
13
- obj.event, obj.name, obj.elapsedTime, argsNoCb, obj.results);
16
+ this.event, env.name, env.elapsedTime, argsNoCb, env.results);
14
17
  } else {
15
- console.error('%s: %s \n\targs:(%s)\n', obj.event, obj.name, argsNoCb);
18
+ var name = obj.name;
19
+ var args = obj.args;
20
+ console.error('%s: %s \n\targs:(%s)\n', this.event, name, argsNoCb);
16
21
  }
17
22
  });
18
23
 
24
+ chainDefine.events.on('task.*', function (obj) {
25
+ /*jshint validthis: true */
26
+ var time = new Date();
27
+ time.setTime(obj.time);
28
+ var argsNoCb = obj.args.filter(function (a) { return (typeof(a) !== 'function'); });
29
+ var eventTimeStr = time.toISOString();
30
+ if (this.event === 'task.complete') {
31
+ var task = obj;
32
+ console.error('%s: %s \tmsecs:(%s) \n\targs:(%s) \n\tresults:(%s)\n',
33
+ this.event, task.name, task.elapsedTime, argsNoCb, task.results);
34
+ } else {
35
+ var name = obj.name;
36
+ var args = obj.args;
37
+ console.error('%s: %s \n\targs:(%s)\n', this.event, name, argsNoCb);
38
+ }
39
+ });
19
40
 
20
41
  function multiply(a, b, cb) { cb(null, a * b); }
21
42
  function add(a, b) { return a + b; }
22
43
 
23
- var fn = react.chainDefine()
44
+ var fn = chainDefine()
24
45
  .in('a', 'b', 'cb') // input params
25
46
  .out('err', 'm', 's') // final callback output params
26
47
  .async(multiply).in('a', 'b', 'cb').out('err', 'm') // task def - async fn, in params, callback out params
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var react = require('../'); // require('react');
3
+ var chainDefine = require('../dsl/chain'); // require('react/dsl/chain');
4
4
 
5
5
  function multiply(a, b, cb) { cb(null, a * b); }
6
6
  function add(a, b) { return a + b; }
7
7
 
8
- var fn = react.chainDefine()
8
+ var fn = chainDefine()
9
9
  .in('a', 'b', 'cb') // input params
10
10
  .out('err', 'm', 's') // final callback output params
11
11
  .async(multiply).in('a', 'b', 'cb').out('err', 'm') // task def - async fn, in params, callback out params
@@ -1,22 +1,49 @@
1
1
  'use strict';
2
2
  /*jshint white: false */
3
3
 
4
+ /**
5
+ Default DSL, showing use of events
6
+ */
7
+
4
8
  var react = require('../'); // require('react');
9
+ require('../lib/track-tasks'); // require('react/lib/track-tasks'); // turn on tracking
5
10
 
6
11
  //output events as tasks start and complete
7
- react.events.on('*', function (obj) {
12
+ react.events.on('flow.*', function (obj) {
13
+ /*jshint validthis: true */
8
14
  var time = new Date();
9
15
  time.setTime(obj.time);
16
+ var argsNoCb = obj.args.filter(function (a) { return (typeof(a) !== 'function'); });
10
17
  var eventTimeStr = time.toISOString();
18
+ if (this.event === 'flow.complete') {
19
+ var env = obj;
20
+ console.error('%s: %s \tmsecs:(%s) \n\targs:(%s) \n\tresults:(%s)\n',
21
+ this.event, env.name, env.elapsedTime, argsNoCb, env.results);
22
+ } else {
23
+ var name = obj.name;
24
+ var args = obj.args;
25
+ console.error('%s: %s \n\targs:(%s)\n', this.event, name, argsNoCb);
26
+ }
27
+ });
28
+
29
+ react.events.on('task.*', function (obj) {
30
+ /*jshint validthis: true */
31
+ var time = new Date();
32
+ time.setTime(obj.time);
11
33
  var argsNoCb = obj.args.filter(function (a) { return (typeof(a) !== 'function'); });
12
- if (obj.event === 'task.complete') {
34
+ var eventTimeStr = time.toISOString();
35
+ if (this.event === 'task.complete') {
36
+ var task = obj;
13
37
  console.error('%s: %s \tmsecs:(%s) \n\targs:(%s) \n\tresults:(%s)\n',
14
- obj.event, obj.name, obj.elapsedTime, argsNoCb, obj.results);
38
+ this.event, task.name, task.elapsedTime, argsNoCb, task.results);
15
39
  } else {
16
- console.error('%s: %s \n\targs:(%s)\n', obj.event, obj.name, argsNoCb);
40
+ var name = obj.name;
41
+ var args = obj.args;
42
+ console.error('%s: %s \n\targs:(%s)\n', this.event, name, argsNoCb);
17
43
  }
18
44
  });
19
-
45
+
46
+
20
47
 
21
48
  function loadUser(uid, cb){ setTimeout(cb, 100, null, "User"+uid); }
22
49
  function loadFile(filename, cb){ setTimeout(cb, 100, null, 'Filedata'+filename); }
@@ -43,7 +70,7 @@ var loadAndSave = react('loadAndSave', 'filename, uid, outDirname, cb -> err, ht
43
70
  writeOutput, 'html, user, cb -> err, bytesWritten', { after: prepareDirectory }, // only after prepareDirectory done
44
71
  loadEmailTemplate, 'cb -> err, emailmd',
45
72
  markdown, 'emailmd -> emailHtml', // using a sync function
46
- customizeEmail, 'user, emailHtml -> err, custEmailHtml', // sync fn
73
+ customizeEmail, 'user, emailHtml -> custEmailHtml', // sync fn
47
74
  deliverEmail, 'custEmailHtml, cb -> err, deliveredEmail', { after: writeOutput } // only after writeOutput is done
48
75
  );
49
76
 
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+ /*jshint white: false */
3
+
4
+ /**
5
+ Default DSL, showing use of events
6
+ */
7
+
8
+ var react = require('../'); // require('react');
9
+ require('../lib/log-events').logEvents(react); // require('react/lib/log-events').logEvents(react); // turn on logging
10
+
11
+
12
+ function loadUser(uid, cb){ setTimeout(cb, 100, null, "User"+uid); }
13
+ function loadFile(filename, cb){ setTimeout(cb, 100, null, 'Filedata'+filename); }
14
+ function markdown(filedata) { return 'html'+filedata; }
15
+ function prepareDirectory(outDirname, cb){ setTimeout(cb, 200, null, 'dircreated-'+outDirname); }
16
+ function writeOutput(html, user, cb){ setTimeout(cb, 300, null, html+'_bytesWritten'); }
17
+ function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
18
+ function customizeEmail(user, emailHtml) { return 'cust-'+user+emailHtml; }
19
+ function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-'+custEmailHtml); }
20
+
21
+ function useHtml(err, html, user, bytesWritten) {
22
+ if (err) {
23
+ console.log('***Error: %s', err);
24
+ return;
25
+ }
26
+ console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
27
+ }
28
+
29
+ var loadAndSave = react('loadAndSave', 'filename, uid, outDirname, cb -> err, html, user, bytesWritten', // name, in/out params
30
+ loadUser, 'uid, cb -> err, user', // calling async fn loadUser with uid, callback is called with err and user
31
+ loadFile, 'filename, cb -> err, filedata',
32
+ markdown, 'filedata -> html', // using a sync function
33
+ prepareDirectory, 'outDirname, cb -> err, dircreated',
34
+ writeOutput, 'html, user, cb -> err, bytesWritten', { after: prepareDirectory }, // only after prepareDirectory done
35
+ loadEmailTemplate, 'cb -> err, emailmd',
36
+ markdown, 'emailmd -> emailHtml', // using a sync function
37
+ customizeEmail, 'user, emailHtml -> custEmailHtml', // sync fn
38
+ deliverEmail, 'custEmailHtml, cb -> err, deliveredEmail', { after: writeOutput } // only after writeOutput is done
39
+ );
40
+
41
+ loadAndSave('file.md', 100, '/tmp/foo', useHtml); // executing the flow
42
+
43
+
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ Simple example showing flow definition of two async functions feeding a
5
+ synchronous function.
6
+
7
+ First two async functions inputs are satisfied by the flow inputs, so
8
+ they will both run immediately in parallel.
9
+
10
+ The last function waits for the outputs of the previous ones, then
11
+ executes synchronously.
12
+
13
+ Finally the flow calls the callback with the output values once all
14
+ the tasks have completed.
15
+ */
16
+
17
+ var react = require('../'); // require('react');
18
+
19
+ function loadFoo(fooPath, cb) {
20
+ setTimeout(function () {
21
+ cb(null, [fooPath, 'data'].join(':'));
22
+ }, 10);
23
+ }
24
+
25
+ function loadBar(barPath, barP2, cb) {
26
+ setTimeout(function () {
27
+ cb(null, [barPath, barP2, 'data'].join(':'));
28
+ }, 10);
29
+ }
30
+
31
+ function render(foo, bar) {
32
+ return ['<html>', foo, '/', bar, '</html>'].join('');
33
+ }
34
+
35
+
36
+ var fn = react('loadRender', 'fooPath, barPath, barP2, cb -> err, renderedOut',
37
+ loadFoo, 'fooPath, cb -> err, foo',
38
+ loadBar, 'barPath, barP2, cb -> err, bar',
39
+ render, 'foo, bar -> renderedOut'
40
+ );
41
+
42
+
43
+ fn('foo.txt', 'bar.txt', 'BBB', function (err, renderedOut) {
44
+ console.error('results:', renderedOut);
45
+ });
@@ -1,21 +1,8 @@
1
1
  'use strict';
2
+ /*jshint white: false */
2
3
 
3
- var react = require('../'); // require('react');
4
-
5
- //output events as tasks start and complete
6
- react.events.on('*', function (obj) {
7
- var time = new Date();
8
- time.setTime(obj.time);
9
- var eventTimeStr = time.toISOString();
10
- var argsNoCb = obj.args.filter(function (a) { return (typeof(a) !== 'function'); });
11
- if (obj.event === 'task.complete') {
12
- console.error('%s: %s \tmsecs:(%s) \n\targs:(%s) \n\tresults:(%s)\n',
13
- obj.event, obj.name, obj.elapsedTime, argsNoCb, obj.results);
14
- } else {
15
- console.error('%s: %s \n\targs:(%s)\n', obj.event, obj.name, argsNoCb);
16
- }
17
- });
18
-
4
+ var fstr = require('../dsl/fstr'); // require('react/dsl/fstr');
5
+ require('../lib/log-events').logEvents(fstr); // require('react/lib/log-events').logEvents(react);
19
6
 
20
7
  function loadUser(uid, cb){ setTimeout(cb, 100, null, "User"+uid); }
21
8
  function loadFile(filename, cb){ setTimeout(cb, 100, null, 'Filedata'+filename); }
@@ -34,7 +21,7 @@ function useHtml(err, html, user, bytesWritten) {
34
21
  console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
35
22
  }
36
23
 
37
- var loadAndSave = react.fstrDefine('filename, uid, outDirname, cb', [ // input params
24
+ var loadAndSave = fstr('filename, uid, outDirname, cb', [ // input params
38
25
  loadUser, 'uid -> err, user', // calling async fn loadUser with uid, callback is called with err and user
39
26
  loadFile, 'filename -> err, filedata',
40
27
  markdown, 'filedata -> returns html', // using a sync function
package/examples/fstr1.js CHANGED
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
+ /*jshint white: false */
2
3
 
3
- var react = require('../'); // require('react');
4
+ var fstr = require('../dsl/fstr'); // require('react/dsl/fstr');
4
5
 
5
6
  function loadUser(uid, cb){ setTimeout(cb, 100, null, "User"+uid); }
6
7
  function loadFile(filename, cb){ setTimeout(cb, 100, null, 'Filedata'+filename); }
@@ -19,7 +20,7 @@ function useHtml(err, html, user, bytesWritten) {
19
20
  console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
20
21
  }
21
22
 
22
- var loadAndSave = react.fstrDefine('filename, uid, outDirname, cb', [ // input params
23
+ var loadAndSave = fstr('filename, uid, outDirname, cb', [ // input params
23
24
  loadUser, 'uid -> err, user', // calling async fn loadUser with uid, callback is called with err and user
24
25
  loadFile, 'filename -> err, filedata',
25
26
  markdown, 'filedata -> returns html', // using a sync function
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var react = require('../'); // require('react');
3
+ var pcodeDefine = require('../dsl/pcode'); // require('react/dsl/pcode');
4
4
 
5
5
  function multiply(a, b, cb) { cb(null, a * b); }
6
6
  function add(a, b) { return a + b; }
@@ -9,7 +9,7 @@ var locals = { // since pcodeDefine uses strings, need references to functions
9
9
  add: add
10
10
  };
11
11
 
12
- var fn = react.pcodeDefine('a, b, cb', [ // input params
12
+ var fn = pcodeDefine('a, b, cb', [ // input params
13
13
  'm := multiply(a, b)', // using a callback function, use :=
14
14
  's = add(m, a)', // using a sync function, use =
15
15
  'cb(err, m, s)' // output params for final callback