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.
- package/README.md +189 -114
- package/doc/alternate-dsls.md +103 -0
- package/doc/default-simple.dot +19 -0
- package/doc/default-simple.dot.png +0 -0
- package/{lib → dsl}/chain.js +5 -3
- package/{lib → dsl}/fstr.js +17 -6
- package/{lib → dsl}/pcode.js +19 -8
- package/examples/chain-events1.js +28 -7
- package/examples/chain1.js +2 -2
- package/examples/default-events1.js +33 -6
- package/examples/default-log-events.js +43 -0
- package/examples/default-simple.js +45 -0
- package/examples/fstr-events1.js +4 -17
- package/examples/fstr1.js +3 -2
- package/examples/pcode1.js +2 -2
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia.html +675 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/37px-Wiktionary-logo-en.svg.png +0 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index(1).php +407 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/index.php +130 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(1).php +3 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(10).php +89 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(2).php +23 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(3).php +153 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(4).php +6 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(5).php +3 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(6).php +96 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(7).php +16 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(8).php +14 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load(9).php +123 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/load.php +3 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/saved_resource +1 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
- package/externalDocs/Dataflow - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's.html +1369 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/121911_DobbsDigest_Cover.jpg +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/160-x-600-IMU Impact 2012.jpg +0 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad0St1Sz6Sq0V0Id20628317.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Ad2331174St1Sz225Sq20825250V0Id4.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/AdTracImage.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/Default_Size_16_1x1.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/FB.Share +9 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/addthis_widget.js +2 -0
- 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
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/beacon.js +7 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/checkauth.js +18 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/colorbox.css +49 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/convert_data.js +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count(1).js +5 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.js +5 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/count.json +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dataflow1.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/def.html +126 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/defaults.css +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/detect.js +91 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/devtest_left-col-slim.css +30 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqus.js +327 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.css +34 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusHints.js +8 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff(1).css +24 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/disqusLoggedOff.css +24 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dobbs_disqus_logo.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.css +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/dsqcd10c7f376188a4a2ca3e8fea2c03aeb.js +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqCfg.js +55 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/elqImg.js +12 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/embed.js +76 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/experience_util.js +636 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/fastbutton.html +11 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ga.js +51 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-facebook_sm.png +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-nav.css +798 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h-twitter_sm.png +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/h_s_code_remote.js +377 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hintbox_info.jpg +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/hub.1326407570.html +3 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/in.js +76 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/insight.min.js +55 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.2.6.min.js +32 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-1.4.2.min.js +154 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery-ui-1.8rc3.custom.min.js +374 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.colorbox-min.js +4 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/jquery.min.js +154 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/lib.js +212 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/like.html +214 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/noavatar32.png +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nodetag.js +18 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/nonSecureAnonymousFramework +2913 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/p.json +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/plusone.js +32 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/popwindow.js +24 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/q4OyybLB0-A.js +91 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/quant.js +28 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/qxvZoiHdpAF.css +192 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/reply.html +160 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/rss.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/s.js +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource +421 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(1) +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(2) +341 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/saved_resource(3) +127 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/script84.js +113 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/scripts.js +30 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sh72.html +5 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shAutoloader.js +17 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAS3.js +59 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushAppleScript.js +75 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushBash.js +59 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCSharp.js +65 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushColdFusion.js +100 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCpp.js +97 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushCss.js +91 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDelphi.js +55 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushDiff.js +41 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushErlang.js +52 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushGroovy.js +67 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJScript.js +52 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJava.js +57 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushJavaFX.js +58 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPerl.js +72 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPhp.js +88 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPlain.js +33 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPowerShell.js +74 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushPython.js +64 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushRuby.js +55 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSass.js +94 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushScala.js +51 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushSql.js +66 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushVb.js +56 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shBrushXml.js +69 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore.css +226 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCoreDefault.css +333 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shCore_new.js +17 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shLegacy.js +17 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/shThemeDefault.css +117 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share-button-css +67 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_email_icon.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/share_print_icon.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/sidebar.js +88 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/superfooter_936.css +186 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/svrGP.aspx +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/t.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thickbox.js +343 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/thread.js +128 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/togglediv.js +15 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/tweet_button.html +3 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/ubmtechweb_logo_sm.gif +0 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/upload.html +91 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/welcome.js +7 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widget74.css +1 -0
- package/externalDocs/Dataflow Programming Handling Huge Data Loads Without Adding Complexity Dr Dobb's_files/widgets.js +40 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia.html +904 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/50px-Question_book-new.svg.png +0 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/closewindow.png +0 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index(1).php +407 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/index.php +130 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(1).php +3 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(10).php +89 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(2).php +23 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(3).php +153 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(4).php +6 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(5).php +3 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(6).php +96 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(7).php +16 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(8).php +14 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load(9).php +123 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/load.php +3 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/poweredby_mediawiki_88x31.png +0 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/saved_resource +1 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/search-ltr.png +0 -0
- package/externalDocs/Reactive programming - Wikipedia, the free encyclopedia_files/wikimedia-button.png +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS.html +113 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/6654_111305815684_541245684_2583159_5383291_n_normal.jpg +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/MARC3_normal.jpg +2 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/beacon.js +7 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46 +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/c953ddd239707998340e1a6fbb3eeb46_normal.jpeg +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/clouds2_normal.jpg +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/count.json +1 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/def.html +126 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/defaults.css +1 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/disqus.js +327 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.css +1 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/dsq7884a9652e94555c70f96b6be63be216.js +66 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/embed.js +76 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/example1.dot +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/ga.js +51 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/get_num_replies.js +79 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/hub.1326407570.html +3 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/lib.js +212 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/noavatar32.png +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/quant.js +28 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/reply.html +160 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/t.gif +0 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/thread.js +128 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/tweet_button.1326407570.html +3 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/twitter_normal.jpg +2 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/upload.html +91 -0
- package/externalDocs/The Step of the Conductor - How To Node - NodeJS_files/widgets.js +40 -0
- package/lib/base-task.js +8 -6
- package/lib/cb-task.js +14 -1
- package/lib/core.js +43 -12
- package/lib/dsl.js +14 -6
- package/lib/event-manager.js +29 -16
- package/lib/finalcb-first-task.js +16 -10
- package/lib/finalcb-task.js +17 -10
- package/lib/input-parser.js +7 -3
- package/lib/log-events.js +71 -0
- package/lib/parse.js +6 -3
- package/lib/promise-task.js +89 -0
- package/lib/ret-task.js +1 -1
- package/lib/task.js +32 -23
- package/lib/track-tasks.js +117 -0
- package/lib/validate.js +3 -3
- package/lib/vcon.js +6 -3
- package/lib/when-task.js +81 -0
- package/package.json +5 -3
- package/promise-resolve.js +35 -0
- package/react.js +0 -4
- package/test/core-deferred.test.js +134 -0
- package/test/core-promised.test.js +132 -0
- package/test/core-when.test.js +84 -0
- package/test/core.test.js +108 -60
- package/test/dsl.test.js +58 -6
- package/test/{chain.test.js → dsl/chain.test.js} +85 -1
- package/test/{fstr.test.js → dsl/fstr.test.js} +13 -1
- package/test/{pcode.test.js → dsl/pcode.test.js} +128 -1
- package/test/exec-options.test.js +2 -1
- package/test/finalcb-task.test.js +6 -5
- package/test/input-parser.test.js +10 -6
- package/test/module-use.test.js +13 -199
- package/test/promise-auto-resolve.test.js +51 -0
- package/test/validate.test.js +5 -2
- package/test/vcon.test.js +13 -0
- package/lib/.#event-manager.js +0 -1
- package/oldExamples/analyze.js +0 -29
- package/oldExamples/analyze2.js +0 -29
- package/oldExamples/example10-dsl.js +0 -63
- package/oldExamples/example11.js +0 -62
- package/oldExamples/example12.js +0 -63
- package/oldExamples/example13.js +0 -63
- package/oldExamples/example14.js +0 -63
- package/oldExamples/example15.js +0 -75
- package/oldExamples/example6-ast.js +0 -47
- package/oldExamples/example6-dsl.js +0 -49
- package/oldExamples/example8-ast.js +0 -55
- package/oldExamples/example8-dsl.js +0 -53
- package/oldExamples/example9-ast.js +0 -58
- package/oldExamples/example9-dsl.js +0 -57
- package/oldExamples/function-str-ex1.js +0 -33
- package/oldExamples/function-str-ex2.js +0 -67
- package/oldExamples/trait1.js +0 -41
- 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
|
package/{lib → dsl}/chain.js
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var sprintf = require('sprintf').sprintf;
|
|
4
|
-
var core = require('
|
|
5
|
-
var tutil = require('
|
|
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;
|
package/{lib → dsl}/fstr.js
RENAMED
|
@@ -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('
|
|
5
|
-
var parse = require('
|
|
6
|
-
var tutil = require('
|
|
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: /^([
|
|
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;
|
package/{lib → dsl}/pcode.js
RENAMED
|
@@ -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('
|
|
5
|
-
var parse = require('
|
|
6
|
-
var tutil = require('
|
|
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_
|
|
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_
|
|
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*\((
|
|
94
|
+
regex: /^\s*(cb|callback)\s*\(([^)]*)\)\s*;?$/i,
|
|
86
95
|
fn: function (m) {
|
|
87
96
|
return {
|
|
88
|
-
outDef: (m[
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
16
|
+
this.event, env.name, env.elapsedTime, argsNoCb, env.results);
|
|
14
17
|
} else {
|
|
15
|
-
|
|
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 =
|
|
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
|
package/examples/chain1.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
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 =
|
|
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('
|
|
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
|
-
|
|
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
|
-
|
|
38
|
+
this.event, task.name, task.elapsedTime, argsNoCb, task.results);
|
|
15
39
|
} else {
|
|
16
|
-
|
|
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 ->
|
|
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
|
+
});
|
package/examples/fstr-events1.js
CHANGED
|
@@ -1,21 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
/*jshint white: false */
|
|
2
3
|
|
|
3
|
-
var
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
package/examples/pcode1.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
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 =
|
|
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
|