{"_id":"medium","_rev":"30-44d12a88f2467b44d9ca2677ec1d7c0d","name":"medium","description":"CSP-style channel library using ES7 async/await keywords","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.1":{"name":"medium","author":{"name":"Tancredi Trugenberger","email":"tancredi.trugenberger@gmail.com","url":"http://www.liquidimage.it"},"version":"1.0.1","description":"A small coffeescript module that uses Request and Cheerio to parse metadata from a URL.","keywords":["request","parsing","meta-data","cheerio"],"license":"MIT","main":"./lib/index","dependencies":{"coffee-script":"1.3.1","request":"2.9.203","cheerio":"0.8.3"},"_id":"medium@1.0.1","dist":{"shasum":"0c81ba94c46b367fe4ca1de70c289509b9411992","tarball":"https://registry.npmjs.org/medium/-/medium-1.0.1.tgz","integrity":"sha512-dmdLQP9O8+XP/97FHgKWI4bxBNMSBA/Xb+BupuUTylBCFaBFCjaHJsGHJQa3JV6iintQnnuBLI4izmBI775gMw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDnG6zlBQ7uIIpcVeLQQ3F0w8Ai9Ly9fbNjoiiywLfcAiBGvNukFZH34kwsJeEjFtJhzQniNCLInDLh/iSUiQh24A=="}]},"_npmVersion":"1.1.59","_npmUser":{"name":"tancredi","email":"tancredi.trugenberger@gmail.com"},"maintainers":[{"name":"tancredi","email":"tancredi.trugenberger@gmail.com"}],"directories":{}},"0.0.1":{"name":"medium","version":"0.0.1","description":"CSP-style channel library using ES7 async/await keywords","main":"./index.js","scripts":{"test":"mocha --watch --compilers js:babel/register"},"keywords":["CSP","channels","async"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","transducers-js":"^0.4.174"},"gitHead":"454deee5f4f1c3381e53d4b50fd8ec151a689165","_id":"medium@0.0.1","_shasum":"943a35611b14251d0e5fa64f6b09770c7502326c","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"dist":{"shasum":"943a35611b14251d0e5fa64f6b09770c7502326c","tarball":"https://registry.npmjs.org/medium/-/medium-0.0.1.tgz","integrity":"sha512-mVJIsmF6stmFHQQbTQVL/OJiUHZDMDF7UmAMi7Q22jC/hUcycGN7UoYM1RBFVt2K3/c5rZMl8SpodGd34ROVAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNWC/tgRLOarJe0hwpO7LTw0oQKyF32Btvy/HBiw1r1wIgOg/gi15ks3Q2zOGdSjzp0VEDdsqwqTU0WaJEtqFjqjo="}]},"directories":{}},"0.0.2":{"name":"medium","version":"0.0.2","description":"CSP-style channel library using ES7 async/await keywords","main":"./lib/index.js","scripts":{"test":"mocha --watch --compilers js:babel/register"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["CSP","channels","async"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","transducers-js":"^0.4.174"},"gitHead":"ac1931150489f50698e09d3ba261345813e84620","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.0.2","_shasum":"85cab22afc2b05ee083a5e24730da1e2806e539b","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"dist":{"shasum":"85cab22afc2b05ee083a5e24730da1e2806e539b","tarball":"https://registry.npmjs.org/medium/-/medium-0.0.2.tgz","integrity":"sha512-UdqTd3TQ9jAQDl+1OeY2zRZxxN48hnuUmSmGfkVZXw9hZC9HAN29OrnAqV8JgQTkeUwnGzc/IY9f60IzQDR9bw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGKY5cLyL4YC/W1N3GxLpFPbsp6FLd8f+d/HFzcwSYOdAiAfvbJVfH6Fu9JgjJlLzKQkr0rJue/ckGtM35wsoNXfRA=="}]},"directories":{}},"0.1.1":{"name":"medium","version":"0.1.1","description":"CSP-style channel library using ES7 async/await keywords","main":"./lib/index.js","scripts":{"test":"mocha --watch --compilers js:babel/register"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["CSP","channels","async"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","transducers-js":"^0.4.174"},"gitHead":"a673b91dd3fcdcc10ad84069625011d84f92edd0","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.1.1","_shasum":"ac5c68135ec0df0bd852c4a0bba9ba57a3b41c96","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"dist":{"shasum":"ac5c68135ec0df0bd852c4a0bba9ba57a3b41c96","tarball":"https://registry.npmjs.org/medium/-/medium-0.1.1.tgz","integrity":"sha512-KxKrbOih7SY1Pjgv/1728gqFC4aW6vmmiBUq/8yS+fGfIN6Uwm6ou0Kvtn6KJIPPZ4dnx03WfVJAauiq+0bBxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGTy70K+viuzolfcrWaXQLWyeGQiKUhDgOGSsw/I1xedAiEA0RuIKi1uakgfwl3/zl+EjdM5Y0oprsEGh3rsBO6cvOM="}]},"directories":{}},"0.1.2":{"name":"medium","version":"0.1.2","description":"CSP-style channel library using ES7 async/await keywords","main":"./lib/index.js","scripts":{"test":"mocha --watch --compilers js:babel/register"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","transducers-js":"^0.4.174"},"gitHead":"dcbdd47697dad54ca16cf2654340e063d0afe14e","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.1.2","_shasum":"55a659f813201bcdcbc506fdb5d856bb6484de53","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"dist":{"shasum":"55a659f813201bcdcbc506fdb5d856bb6484de53","tarball":"https://registry.npmjs.org/medium/-/medium-0.1.2.tgz","integrity":"sha512-lLm3F7Pq4ttLQKicx0aX/GQjxaA5QCzwIQMd/Ud04GDsRk3+nZuiPm0tTIuuQfm6P+bZXHtyaZlyjUfz5/Q8Qg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC4AlcIKIIZJem9w29GJO84TlJG1RagfYER3BZQ86/j0AiBWNGIWEDrQadnX4EVuAxfgVdi3URsJUvq5iuP46rK2YQ=="}]},"directories":{}},"0.1.3":{"name":"medium","version":"0.1.3","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --compilers js:babel/register","build":"babel ./lib --stage 1 --out-dir ./build --optional runtime"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{"babel-runtime":"^5.8.9"},"gitHead":"d653235b915ee6e543a96513681265e2c938238b","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.1.3","_shasum":"93742e42b32ab461c6068075a5d37e327a9a354b","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"dist":{"shasum":"93742e42b32ab461c6068075a5d37e327a9a354b","tarball":"https://registry.npmjs.org/medium/-/medium-0.1.3.tgz","integrity":"sha512-/TlXHFBYcuAZJIw3cZyZE30h4l5+NOi1Olt39VSO7pjzi67VL3h6yEzmsTFm3l9oOCxctVL/arS++cFyRw7FYg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAbrs5PGZBbsXeRKHGdu8l4Sa/OEHNsxNnepEKI3AeSRAiBmk6EhFuqK2V95y9oCMRhSqpNz/LG+hAIZ1CGiVcqcVw=="}]},"directories":{}},"0.2.0":{"name":"medium","version":"0.2.0","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --compilers js:babel/register","build":"babel ./lib --stage 1 --out-dir ./build --optional runtime"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{"babel-runtime":"^5.8.9"},"gitHead":"1accfa4bf68591895a8e2347a09cfe3c9e7ac335","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.2.0","_shasum":"9488854ca8e83518df3e2e6ed8484e406018a9d0","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"dist":{"shasum":"9488854ca8e83518df3e2e6ed8484e406018a9d0","tarball":"https://registry.npmjs.org/medium/-/medium-0.2.0.tgz","integrity":"sha512-bkO3tkub0KzwysnISGuvbEsnzo05dnVNsLaBXY4/nyAg3alph6ISCwKgJ7424zhsGlkH2Fm+tU3hOVDMJGyjjw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFzvJasJhanoRM/pjbXUNT/qYKNFXkZXhOjoJPypNBFiAiBGP5Z97YoI8Z7zhA5ocTBwl3IA26LceEwwGL6e0UsVIA=="}]},"directories":{}},"0.2.1":{"name":"medium","version":"0.2.1","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --compilers js:babel/register","build":"babel ./lib --stage 1 --out-dir ./build --optional runtime"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{"babel-runtime":"^5.8.9"},"gitHead":"5be9536d5f2d72fa3a43d440856e62a58288fa66","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.2.1","_shasum":"09c4f695350600f8be1b27914aa125e9e60a3bf4","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"dist":{"shasum":"09c4f695350600f8be1b27914aa125e9e60a3bf4","tarball":"https://registry.npmjs.org/medium/-/medium-0.2.1.tgz","integrity":"sha512-Bikydcoh4VETDe3AjRgeeKA5kqxsZJgPycVT1wRVtjpkxgRh3yTMx9XXmzBtLtcke0nyZAvm7QTsk2nusMopRw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZ//5RNlpwnDw4bzqDr6Yr6VqeodBEQRJiYJdyUB7YwAiEA+B0t4rb/dDbQL1pLz/dFwynrxbKQQai0ISORd+ik38M="}]},"directories":{}},"0.3.0":{"name":"medium","version":"0.3.0","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --compilers js:babel-register","build":"babel ./lib --out-dir ./build","develop":"babel --watch=./lib --out-dir ./build"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"babel-core":"^6.3.15","babel-preset-es2015":"^6.3.13","babel-preset-stage-1":"^6.3.13","babel-register":"^6.3.13","sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{"babel-polyfill":"^6.3.14"},"gitHead":"289a3219a03e00d31e3fa652bc2459388f074314","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.3.0","_shasum":"34dfe47529e36bb3bab1a2aa9ad18ddbbcbd13f6","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"34dfe47529e36bb3bab1a2aa9ad18ddbbcbd13f6","tarball":"https://registry.npmjs.org/medium/-/medium-0.3.0.tgz","integrity":"sha512-uwED531zQorxIBeG7dceMamRdBmFCo1ORj2F7CiDpnLLoLibwMABMRbvFA2zcZBEuxSHqey/miWGHicKVnwgQQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRScVs/gHd8s5J2GNHraH/teyEZdckIiMOre/DGwJ3fQIhAPIfnMoa+FTpqPZuk0620OLxT+I3bpKXaVlxTfZUT7Cu"}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"directories":{}},"0.3.1":{"name":"medium","version":"0.3.1","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --compilers js:babel-register","build":"babel ./lib --out-dir ./build","develop":"babel --watch=./lib --out-dir ./build"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"babel-core":"^6.3.15","babel-preset-es2015":"^6.3.13","babel-preset-stage-1":"^6.3.13","babel-register":"^6.3.13","sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{"babel-polyfill":"^6.3.14"},"gitHead":"756c972e6f64c0deed6eecb6d0047f7dfc437e11","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.3.1","_shasum":"f5e5a5a1b19adfd9cb777988c16e08dd10dde012","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"f5e5a5a1b19adfd9cb777988c16e08dd10dde012","tarball":"https://registry.npmjs.org/medium/-/medium-0.3.1.tgz","integrity":"sha512-C25WCPT86b/vMXrQ7HpL12cgfJNGy5S39C0GGgd4lwt85CbOqvaSVqYsdT/Lir5o5YdJ0zWnAzfbGNENK9lKkg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXEKafYkUv0ZC0tIcfHPlLNqufHn1QJV8UxMtDAiBWHwIgB1JeCO1OhTpw4xzBYl3tdncPaXTXSsIwoimQH0zaBuM="}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"directories":{}},"0.4.0":{"name":"medium","version":"0.4.0","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --compilers js:babel-register","build":"babel ./lib --out-dir ./build","develop":"babel --watch=./lib --out-dir ./build"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"babel-core":"^6.3.15","babel-preset-es2015":"^6.3.13","babel-preset-stage-1":"^6.3.13","babel-register":"^6.3.13","sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{"babel-polyfill":"^6.3.14"},"gitHead":"86ba9eb03beab6de10b2196b43c13da7f86e6fd7","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.4.0","_shasum":"ed640b88bba4ef4d84ad1f9e30f735d82187a529","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"ed640b88bba4ef4d84ad1f9e30f735d82187a529","tarball":"https://registry.npmjs.org/medium/-/medium-0.4.0.tgz","integrity":"sha512-YTK5lsgttx6FRe1cZ6/gsyW02cFA8PN9USFnNBnS3jLzrvrtUMWGaU8+zmNQ1K68xTSN4sSbkyFWudjgsZEyNA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAap5xPbKfUbwa/TSH6f2lHhAnSud3/GrDk9sEIyib2hAiAZ8SjUTYcXLDnPXPbVsRWOg4DyLKE5tKSx0tJIeCl7dg=="}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"directories":{}},"0.4.1":{"name":"medium","version":"0.4.1","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --compilers js:babel-register","build":"babel ./lib --out-dir ./build","develop":"babel --watch=./lib --out-dir ./build"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"babel-core":"^6.3.15","babel-preset-es2015":"^6.3.13","babel-preset-stage-1":"^6.3.13","babel-register":"^6.3.13","sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{"babel-polyfill":"^6.3.14"},"gitHead":"35393f3bf561e23b59836093ebe03c1b085d69dd","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.4.1","_shasum":"a98997a6105484ba7a6eca155ec438efa90cf164","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"a98997a6105484ba7a6eca155ec438efa90cf164","tarball":"https://registry.npmjs.org/medium/-/medium-0.4.1.tgz","integrity":"sha512-TrcimDjUbDbeFiXSYvVw83a8umyfkfEFZ9uunf/p4U6tZj2qO0oco8PErA9a2G7sCv0iYWisHnQ4A6qCd136tg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/vUSmwYb/Kjb7rLSzUtD7gY4OCIt8WVu+6G+L0KFrEwIhANoqfYnBgAxciP0tUzjAdkHUoS2HIf+z578mMBKeYBlW"}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"directories":{}},"0.4.2":{"name":"medium","version":"0.4.2","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --compilers js:babel-register","build":"babel ./lib --out-dir ./build","develop":"babel --watch=./lib --out-dir ./build"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"babel-core":"^6.3.15","babel-preset-es2015":"^6.3.13","babel-preset-stage-1":"^6.3.13","babel-register":"^6.3.13","sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{"babel-polyfill":"^6.3.14"},"gitHead":"1ab4775163f47f182b6aaf4492d643f9f778af26","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.4.2","_shasum":"c6a8bd465ccf08d14d2d24b1a8a95875a317588a","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"c6a8bd465ccf08d14d2d24b1a8a95875a317588a","tarball":"https://registry.npmjs.org/medium/-/medium-0.4.2.tgz","integrity":"sha512-1SFbjSpxEBhr4tC0touo3NAkGYi6gf1JmrPE7ueOd1F5x8LEWaW1IqNchd9ennyeZ2y1vPETCJdoDNueu/I1/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD005xDGQeOW0ydmXdhZCA+EqaSbdu8QQPVL67rxOlqCAIgKlWiwKi7ZMCtJSOh8tFXzGcqH2eOD2RFMV65YS5bjps="}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"directories":{}},"0.5.0":{"name":"medium","version":"0.5.0","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --reporter spec --compilers js:babel-register","build":"babel ./lib --out-dir ./build","develop":"babel --watch=./lib --out-dir ./build"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"babel-cli":"^6.5.1","babel-polyfill":"^6.5.0","babel-preset-es2015":"^6.5.0","babel-preset-stage-1":"^6.5.0","babel-register":"^6.5.2","mocha":"^2.4.5","sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{},"gitHead":"8be0f3f4193c15bbd1602fc2652f87fac9a03f54","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.5.0","_shasum":"baee48736393cb2875784aedff8a42265732da0a","_from":".","_npmVersion":"3.6.0","_nodeVersion":"5.6.0","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"baee48736393cb2875784aedff8a42265732da0a","tarball":"https://registry.npmjs.org/medium/-/medium-0.5.0.tgz","integrity":"sha512-R4dG7h5Wia6unY6VA3y1OfvkKh8Nji9iepoirqV2zSX6UdNWWYmNyIgy5h4Qn+99uvufDngyPnnHj5jVT3Gy+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdGQd50/3tAkGhLFUKavWL+H5cq448Vi4B+MYLNK6i3wIgPIqdANG4Q+ZBdAgUvkkO5/bn6Ad/26gado/dF0bT9KE="}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/medium-0.5.0.tgz_1456013150281_0.86082868068479"},"directories":{}},"0.5.2":{"name":"medium","version":"0.5.2","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","scripts":{"test":"mocha --watch --reporter spec --compilers js:babel-register","build":"babel ./lib --out-dir ./build","develop":"babel --watch=./lib --out-dir ./build","flow":"flow; test $? -eq 0 -o $? -eq 2"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"babel-cli":"^6.5.1","babel-plugin-transform-flow-strip-types":"^6.8.0","babel-polyfill":"^6.5.0","babel-preset-es2015":"^6.5.0","babel-preset-stage-0":"^6.5.0","babel-register":"^6.5.2","flow-bin":"^0.29.0","mocha":"^2.4.5","sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{},"gitHead":"b5344032852e21793864f05e099b8cb653ba1d7f","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.5.2","_shasum":"4df7cb47dbfa51e0e24476df18ed836e6ed9dfe8","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"4df7cb47dbfa51e0e24476df18ed836e6ed9dfe8","tarball":"https://registry.npmjs.org/medium/-/medium-0.5.2.tgz","integrity":"sha512-EVurtAdwJM3Gb2L6GBHZiqiMwnN7FaK4lDX2/M3BMRljkAJBx5cFEYEkIFRL1jc/w7fYn3hmlXAu7j/p2lm8Jw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCE8CW0YcWj4jzUZiqm6M4al20NLtnC8ViM9Q6zOuznlgIhANUBQVn6YT5yGW+idxiWPiDu8DVaNVG+Nl93THxFZcAE"}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/medium-0.5.2.tgz_1469725967606_0.7666538031771779"},"directories":{}},"0.6.0":{"name":"medium","version":"0.6.0","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","engines":{"node":"7.x.x"},"scripts":{"test":"mocha --watch --reporter spec --harmony","build":"flow-remove-types --out-dir build lib/","flow":"flow; test $? -eq 0 -o $? -eq 2"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"flow-bin":"^0.29.0","mocha":"^2.4.5","sinon":"^1.15.3","transducers-js":"^0.4.174","flow-remove-types":"^1.2.1"},"dependencies":{},"gitHead":"5d086c60e6c56281a415a41a79680f5b4aeb20a0","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@0.6.0","_shasum":"4b94f27fe048c30c968f5111633c2b328fffdecb","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"4b94f27fe048c30c968f5111633c2b328fffdecb","tarball":"https://registry.npmjs.org/medium/-/medium-0.6.0.tgz","integrity":"sha512-Z7zwDu/0UlSnTN6yGzA6ck+ONuqa5t3cY1WqqPgx4GMMM+/c1lTprEoFTfWP+cBy06B8JfGHN5ZgkUR4Ppb63A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC4iGSuZ+VIakeRSYIdtRKetgfPcOigQAjG10zyHM9jGAiBiXHYuG4F/ciVjgLYsxmRy+c9hcgyfPjhNtmQ6/HN4Qw=="}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/medium-0.6.0.tgz_1495563598771_0.6416262490674853"},"directories":{}},"1.0.0":{"name":"medium","version":"1.0.0","description":"CSP-style channel library using ES7 async/await keywords","main":"./build/index.js","engines":{"node":"7.x.x"},"scripts":{"test":"mocha --watch --reporter spec --harmony","build":"flow-remove-types --out-dir build lib/","flow":"flow; test $? -eq 0 -o $? -eq 2"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"flow-bin":"^0.29.0","mocha":"^2.4.5","sinon":"^1.15.3","transducers-js":"^0.4.174","flow-remove-types":"^1.2.1"},"dependencies":{},"gitHead":"716addc8a1c8e584857df68da77b13abc9ff8b7d","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@1.0.0","_shasum":"5d712a42daac1fad02137cfec78b611856530d49","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"shasum":"5d712a42daac1fad02137cfec78b611856530d49","tarball":"https://registry.npmjs.org/medium/-/medium-1.0.0.tgz","integrity":"sha512-gRYYN2BuNazwAY+WicqWkepHX5+oXyEUoYATPFi3DVJe0FQG3opOD1Q3CFI5112Y33qRDzOxKdowyXO2BdtN1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCK4dMDYmD7YHLMhsAME1rvTdDBtbwdbQU2sGENMkJh9QIhAIwUfYmf8Xn738Rrp7B0AcnLmb7DGVtyUE3A9VXYeCnr"}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/medium-1.0.0.tgz_1495563657603_0.20471607823856175"},"directories":{}},"1.0.2":{"name":"medium","version":"1.0.2","description":"CSP-style channel library using ES7 async/await keywords","main":"./lib/index.js","engines":{"node":">=7.0.0"},"scripts":{"test":"mocha --watch --reporter spec --harmony"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"bbarr1384@gmail.com","url":"http://replwithoutacause.com"},"license":"ISC","devDependencies":{"mocha":"^2.4.5","sinon":"^1.15.3","transducers-js":"^0.4.174"},"dependencies":{},"gitHead":"8bb71e98cd2606c5df4b66f589b5cb053d27ff39","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@1.0.2","_npmVersion":"5.6.0","_nodeVersion":"10.1.0","_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"dist":{"integrity":"sha512-QgPG/wAKErFC19cAlQPE72xyJ+nFGbmBabubWCUbf9UXRF8MPVJO9BLU8x0rR+YTsxspSsnOY6lMvYyHd7f7XQ==","shasum":"47bff95ef17913cc0e4a434862171944bbf46818","tarball":"https://registry.npmjs.org/medium/-/medium-1.0.2.tgz","fileCount":10024,"unpackedSize":39458658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFxltCRA9TVsSAnZWagAAKnUP/ikUdIUKdzbKMQYiFvDd\nZZnImKQg3sd47JetTM6nNNAED54I46RxsE4sPYKjD3SMeF9ABItFxw19/6P1\nzbkJdjzCJjCfHXbuTQIjNjE7ZdO+hCoGf0xwezfHeYp5QoRQ4b4LkRiVNKyQ\nuK5/XafPTZiwBGdoafO2OF9Lg7PBW0McqeRSQasx1A6sdsOB1c0SBS0JPONZ\nkY954VBBgA9Wz7WMRwFqfaA7GepoBQVdfvydHsvsivTrR68ibyHC0XQlIYRy\np8/JIDL038z9HCe2opfRUBrOwG4Wtwy2bPp1jf2OZKsVYeb/ki69QNls0RNK\n6bCWfC75hWAhw1lrVKzUegZ/tjPj382Rf3LQUfnvTsGPc7JLYCOu5ftdKl33\nAZZmYnWPZyHNsiT7AEUgXXQLNoleB3w4FXcnOdWQE7kHRuZzSbtbewdoy4ZW\noE+RfPQxSmIaBsjW1eJkCsDYkOkYAMmlq7s4TQI73P4TJUQoc+ldxcfYwQQs\nEUEX03Thdo4NNT2mVikq5QBGhl9dlgn+aYZaCSbQJWXItbA3O3QWeX6x9Tii\nFc3edB0E1swrd08NJXDfRC3w1n3hzBDt5YXeSpEWuKIaiaK8o7UhXOdr1qlr\n1bscRP/ezdz897YL8jVKkBOud39QHOTI1bYGSvrRYR4J1z5wTgMPyWj6cp7B\nuIIA\r\n=eM3a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7lJKhVyxdDsf0k0P8OYLkjWH6HKGIxgYMs3HlSZQH+QIhAIOCBsDemfbUW7v6+LhJm/zQMEN0jmooyDz/5Wqsst2T"}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/medium_1.0.2_1528240491604_0.17009603556962394"},"_hasShrinkwrap":false},"1.1.0":{"name":"medium","version":"1.1.0","description":"CSP-style channel library using ES7 async/await keywords","main":"./lib/index.js","engines":{"node":">=13.0.0"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"brendan@brendanbarr.com","url":"http://brendanbarr.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","mocha":"^8.1.3"},"gitHead":"36933eea54e6b82324e12c8be81808d57f884e92","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@1.1.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-deG/pcBD2oS31tdtfWewOOAAJVmF7Qd4QVYWJo/BecbG1Kx2IDK0GJZHr09IDgM8c8FuJG5KtZil3bnIU1iHqg==","shasum":"3626411ce2b47b366ee1c1e7c77e7e1dc4561dcf","tarball":"https://registry.npmjs.org/medium/-/medium-1.1.0.tgz","fileCount":12,"unpackedSize":33676,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYnFrCRA9TVsSAnZWagAA4DQP/iCobNVrW9LBx8FZG8+F\nxv4nCJsPY+Q9AsqXbuDrZ1jt1HBFPxjJ+IU6godbu93fVd0MEK9F1kFn1NIc\nDKtrlaxZeqSiInF14hGLJqTCOlekGb4TYQKoTZq5boB/px8CNcu6XwL/13ux\nVsZxg8jzRpriqxY+lRENehE0Z/oMY8hn73PT6Z6EGXZjxvfe2Ba3sVzIWhNR\nznhS251Y/5mrzBx+4CazRpu6DkIvS/RG39Su0S65RxXGOQTQb8s2d6ssMGly\nnx+UY/JWigbmXjkHmzO7RD2KVcS+fNGyJMfMrnBSYGdhMy5+IdfUafttNHbM\n/0WvJj9Ry7tQFa2K4wTGvWzLBXDGxmVCPUZWBhGl6SCx9IsXC57ylzTR6ZKJ\nxao0gZCpX7T74nb6qzoq9IiM7CWFOrInfObW8lizP3zxalOmEsHZD8VLjwTX\n3bdSSg/NCGrOqR9Hia+C95Sc6JR4cg1flpZqFY8rEb7O3S6T0cPjOmFaXOx+\n0InXBoXaAgdOTkDapsF/F+3YYh6CTImBNY+Y025GkGrlmOb2lZAr7nDDOuS+\ng25ZaCDpclrbymfjCYjgHBFRIxCtmeD3q1TQa0GSRwIolq84QqWjdNc/345M\nxUDkMFcOy/hTzqzqRYWATEoWUIR5eXj2YjfwsNw2w/Khizkkg8BsKdsPUI0M\npRa6\r\n=x6MM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJIqdf+sMsfQuERnuKrYAnSiZmje4pfarfpe/4K82dhQIhALuBJhOjFus4cT9b5V44iZMhWNnWp69opcDbU1E4juQa"}]},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/medium_1.1.0_1600287082760_0.5702109153687582"},"_hasShrinkwrap":false},"1.1.1":{"name":"medium","version":"1.1.1","description":"CSP-style channel library using ES7 async/await keywords","main":"./lib/index.js","engines":{"node":">=10.0.0"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"brendan@brendanbarr.com","url":"http://brendanbarr.com"},"license":"ISC","devDependencies":{"sinon":"^1.15.3","mocha":"^8.1.3"},"gitHead":"134fea62242a60185cacade9f17fe6ec7ad3f3d6","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@1.1.1","_nodeVersion":"15.12.0","_npmVersion":"7.6.3","dist":{"integrity":"sha512-rLvGWrum5CL41HDK90Vuv6NrbvZ81JS744JbY0LVYRVD19F5kEvFxGceVYi7J8vP7+RyxB1K+FYDrWzkLVQDNw==","shasum":"4b857993c824d99ec6988337885d100026bb1d66","tarball":"https://registry.npmjs.org/medium/-/medium-1.1.1.tgz","fileCount":13,"unpackedSize":34231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZe/uCRA9TVsSAnZWagAAZDkQAIw2diAwLxwL7lqQ9c2v\nAtH3IKCoWMaiaKlTwGFwnwHZyNSDvWuCycicBND3RhlPGbtXeRJMmv709Q2z\nZ4G4d6RfVQeicZq1aH1u4xrH0abcSmzRVyoDmdGd88zdPlRtSUQTT/jZZlTo\nO0L0yyKi6YG/T16SqqORFup+bbymWtE8VFKcVMVtTL033GUI+EMEzqZodbJi\nXafliqss7URFAFzL5X5xYKyHzdqiRAjx4SIbhwUaJru3wyLKMISgA1XQ9oJT\nTfYk1RDqONgsrlQQdmFzkhCrZEJhK5jxybUk4K93MN0H1gFHojhMc6QFAhDk\nxf34xKlwIDcp8DAcPRDzH9slACq5CacJNVdfNNSiEqG5a4Ia3kQp+32LBI4X\n1N12enbx/T+Ix3CPRXQdArne92rUvpCGtGJWsr4s2E5tgWr8AeoOhYllymFP\nZzslOhl6e8WdlTQ+SZztvo6RKRWjWTnhBPdTArR0doyJchnvYO9a/SgoPgFt\nIQSlO2uwmuAshuAuwsGNDvXK6ZqbOEjZmWsXIGlz2VYfsAPmnRf5ORIOVxiN\nED4NORMHwF07Y0vucGCOZWJXu/Gr8ODSSJTah63dbNNKJ5Q0TIWaxyOUzC4O\npTRt7ouCIpe5wfvc6UUaf8Pw6mH5FrUTuXM+I2mp4arMymIQTjRTxSCuNanw\nCpgt\r\n=5arV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB0l0YTsVDFicSkgQM+pHwCYn11M+Y3A3F/1Svv3zWLKAiBMlx7+zouLARsYtlNbZCt6FDJGcr/jimicQGytoUbeeg=="}]},"_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"directories":{},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/medium_1.1.1_1617293294311_0.35134956655021"},"_hasShrinkwrap":false},"1.2.0":{"name":"medium","version":"1.2.0","description":"CSP-style channel library using ES7 async/await keywords","main":"./lib/index.js","engines":{"node":">=10.0.0"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"keywords":["csp","channels","async","es7","medium"],"author":{"name":"Brendan Barr","email":"brendan@brendanbarr.com","url":"http://brendanbarr.com"},"license":"ISC","devDependencies":{"glob-parent":">=5.1.2","mocha":"^8.1.3","sinon":"^1.15.3"},"gitHead":"17b437ee8084bd816828ca35c7623065a0a98378","bugs":{"url":"https://github.com/bbarr/medium/issues"},"homepage":"https://github.com/bbarr/medium#readme","_id":"medium@1.2.0","_nodeVersion":"14.16.0","_npmVersion":"7.10.0","dist":{"integrity":"sha512-qoL5cGyUTeRvzYTbGDoKLdCyV/QdKOKB7Cz+jLGKVMHZ1uRYd7WNIvyQxwSo4CyCShEkqsNkyeurWQHf+O1JNQ==","shasum":"68ae127b2207f15e15a6feb4bec20bb5caeee985","tarball":"https://registry.npmjs.org/medium/-/medium-1.2.0.tgz","fileCount":14,"unpackedSize":35777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2y/9CRA9TVsSAnZWagAA+/sP/AgZmK6AutYBbWQuVYLT\n9Aq1fXa4PPIPqimjwX4jT0eL2WkiijH0hM8M8N5KMRNSgxEcN4lCB73pfpxw\n7TMwpSlv/boKi5Q6lClSn+A2EQeLVCou4ppw2E+WEauREP1dYXs0eqWzMGJu\n/1YScDYOPCIr6n0u5gw2jBe9DM8bkAv81qNdE3hhTaRBnZX4aE93piNmF/t8\n+KTeleZxiNJhDwoSsilHIBBagc/31LlfxXDjWCUEjd3AqCGo9mLVnFxGWlrU\nvnTP+0ruqiL33r+gKrDN3Xzs+D7rEESL2/9VpuS7vX5VcWUJjjMJyKS5irDb\nGH0cKKai7zKBVEWftsn/rKLOIYUWh/3KaOTpSjk5iLGAha4UZy1sj0Omq2Cf\n6Pddox9dEuoQagIwdSI9gq147CUENBst1NV1e6AFaDmzGlq5pGPnTyQNlogX\nujYQmxoVrw/1KAVkWZ+DpVKbCrA73pBjYF8tzIEsSjP3QG8qjOo0AoFj/sl8\nLnimfiX3IDjfnpWGDPD15SZySLxfA/xcRwnxmwjOi5qGChaTMsM3Jccg2SKE\n15wFaXiS1y+kolF7cKAzAmgMEpYLma3nIdlBgkr/c7coAB91Oj++lNJpBwiQ\nge3bHkLOoHLTGJGCiNrpSOQXR1spjquM1kXS1j/ctPdAJBt97Nx02h2vXWru\n8kZb\r\n=GAjG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOMTrABGOhc1j0NjGZcG5d3AKyi2CDIxSpnYEqWG5G1QIgKsBVOnasfEV4+re2zHZEfqOtXhDJF06I5P5Lq9EdIAM="}]},"_npmUser":{"name":"bbarr","email":"bbarr1384@gmail.com"},"directories":{},"maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/medium_1.2.0_1636320497730_0.1574860165938763"},"_hasShrinkwrap":false}},"readme":"# Medium\nCSP-style channel library using ES7 async/await keywords.\n\n#### Installation\n\n```javascript\nnpm install medium\n```\n\n#### First, the requisite naive ping/pong example (ported from [Go](https://talks.golang.org/2013/advconc.slide#6))\n```javascript\n\nconst { chan, put, close, take, sleep, CLOSED } = require('medium')\n\nconst player = async (name, table) => {\n  while (true) {\n\n    const ball = await take(table)\n    if (ball === CLOSED) break\n\n    ball.hits++\n    console.log(`${name} ${ball.hits}`)\n    await sleep(100)\n    put(table, ball)\n  }\n}\n\nconst start = async () => {\n\n  const table = chan()\n\n  player('ping', table)\n  player('pong', table)\n\n  put(table, { hits: 0 })\n  await sleep(1000)\n\n  close(table)\n}\n\nstart()\n\n```\n\n#### Channel interactions in a nutshell\n\nChannels are queues, you can ```put``` things onto them and ```take``` things off, in a first-in-first-out way. Channels can be closed, after which, they will not receive or deliver values. ```put``` and ```take``` are both asynchronous actions, and return promises. ```put``` promises simply resolve to ```true``` if it was able to successfully add its value to the channel, or ```false``` if the channel is closed. ```take``` promises resolve either to whatever was next in the channel queue, or to the constant ```CLOSED``` if the channel is closed. For example:\n\n```javascript\nconst ch1 = chan()\nput(ch1, 1)\ntake(ch1).then(console.log)\n// LOGS: 1\n\ntake(ch1).then(console.log)\nput(ch1, 2)\n// LOGS: 2\n\n// Notice how it doesn't matter what order the take and put occur in. This is the secret sauce of coordinating asynchronous activites.\n\ntake(ch1).then(console.log)\nclose(ch1)\n// LOGS: CLOSED\n\nput(ch1, 3).then(console.log)\n// LOGS: false\n```\n\nThe strategy with which a channel handles an excess of ```put```s is implemented as a ```buffer```. The default channel does not allow for any buffered values, so if you ```put``` without a waiting ```take``` for the value, it will not resolve the ```put``` until a corresponding ```take``` is added. For example:\n\n#### No buffer\n```javascript\nconst ch1 = chan()\nput(ch1, 1).then(() => console.log('put 1'))\nput(ch1, 2).then(() => console.log('put 2'))\ntake(ch1)\n// LOGS: 'put 1'\ntake(ch1)\n// LOGS: 'put 2'\n```\n\nAn example of a different buffer would be a \"fixed\" buffer, which has N slots for ```put``` values to wait for a ```take```. For example:\n\n#### Fixed buffer\n```javascript\nconst ch = chan()\nconst fixedCh = chan(buffers.fixed(2)) // or shortcut with chan(2)\n\nput(ch, 1).then(console.log)\n// LOGS NOTHING\n\nput(fixedCh, 1).then(() => console.log('put 1'))\n// LOGS: put 1\nput(fixedCh, 2).then(() => console.log('put 2'))\n// LOGS: put 2\nput(fixedCh, 3).then(() => console.log('put 3'))\n// LOGS NOTHING\n\ntake(fixedCh).then(console.log)\n// LOGS: 1\n// LOGS: put 3\n\n```\n\nThe other included buffers are, \"dropping\", which allows N puts, then begins \"dropping\" them, causing the put to resolve successfully but the value is not added to the channel, and \"sliding\", which allows N puts, then begins shifting the buffer, dropping the oldest buffered ```put``` value and adding the newest to the other end.\n\n#### Dropping buffer\n```javascript\nconst ch = chan(buffers.dropping(2))\nput(ch, 1)\nput(ch, 2)\nput(ch, 3) // this is dropped\ntake(ch).then(console.log)\n// LOGS: 1\ntake(ch).then(console.log)\n// LOGS: 2\ntake(ch).then(console.log)\n// LOGS NOTHING\nput(ch, 3)\n// LOGS: 3\n```\n\n#### Sliding buffer\n```javascript\nconst ch = chan(buffers.sliding(2))\nput(ch, 1)\nput(ch, 2)\nput(ch, 3) // this causes the put of 1 to be dropped\ntake(ch).then(console.log)\n// LOGS: 2\ntake(ch).then(console.log)\n// LOGS: 3\n\n```\n\n#### Building something larger\n\nThings get much more interesting though when we use async/await to better coordinate our channels.\n\n```javascript\nimport { chan, put, take, sleep, go } from 'medium'\n\nconst numbers = chan()\nconst oddNumbers = chan()\n\ngo(async () => {\n  while (true) {\n    console.log('an odd number: ', await take(oddNumbers))\n  }\n})\n\ngo(async () => {\n  while (true) {\n    let n = await numbers // awaiting a channel is an implied \"take\"\n    if (n % 2 === 1)\n      await put(oddNumbers, n)\n  }\n})\n\ngo(async () => {\n  while (true) {\n    let randomNum = Math.floor(Math.random() * 100)\n    await put(numbers, randomNum)\n    await sleep(1000)\n  }\n})\n\n```\n\nSo we have a number being generated every second, and put onto the ```numbers``` channel. This is consumed and tested for \"oddness\", and if it passes, then it is put onto the ```oddNumbers``` channel where it is simply console.log'ed.\n\nWhat if we want to keep track of the percent odd vs. even? We can put a bit of local state in the process that checks for oddness. However, mutating state sucks, so, we use the function ```repeat``` to both act as a ```while``` loop and manage state immutably!\n\n```javascript\nimport { chan, put, take, sleep, go, repeat } from 'medium'\n\nconst numbers = chan()\nconst oddNumbers = chan()\nconst stats = chan()\n\ngo(async () => {\n  while (true) {\n    console.log('an odd number: ', await oddNumbers)\n  }\n})\n\ngo(async () => {\n  while (true) {\n    console.log('Stats: ', await stats)\n  }\n})\n\ngo(async () => {\n  repeat(async ({ total, odds }) => {\n    put(stats, `${odds / total * 100}% odd numbers`)\n    \n    const n = await numbers\n    if (n % 2) {\n      put(oddNumbers, n)\n      return { total: total + 1, odds: odds + 1 }\n    } else {\n      return { total: total + 1, odds }\n    }\n    \n  }, { total: 0, odds: 0 })\n})\n\ngo(async () => {\n  while (true) {\n    let randomNum = Math.floor(Math.random() * 100)\n    await put(numbers, randomNum)\n    await sleep(1000)\n  }\n})\n```\n\nAnd now we see that, indeed, our universe isn't broken and over time our cumalitive chance of an odd number closes in on 50%.\n\nWe can even take our ```repeat``` function one step further, and use ```repeatTake```, since that is exactly what we are doing.\n\n```javascript\ngo(async () => {\n  repeatTake(numbers, async (n, { total, odds }) => {\n    put(stats, `${odds / total * 100}% odd numbers`)\n    \n    if (n % 2) {\n      put(oddNumbers, n)\n      return { total: total + 1, odds: odds + 1 }\n    } else {\n      return { total: total + 1, odds }\n    }\n    \n  }, { total: 0, odds: 0 })\n})\n```\n\nSo we just change the signature a bit, and our local \"repeat\" state is passed as the second argument instead of the first. \n\nMore documentation is coming, but the core functionality is ~160LOC, so it should \njust take a single cup of coffee to read through. I wanted to be sure that the API was built \ndeliberately, and not just a port from some previous effort.\n\n## API \n\n### chan(numOrBuffer=null) -> Chan\nCreates a channel. All arguments are optional.\n**numOfBuffer** - Any number or buffer. A number is a shortcut for ```buffers.fixed(number)```.\n\n### put(ch, val) -> Promise -> true|false\nPuts a value onto a channel. Returned promise resolves to true if successful, or false if the channel is closed.\n\n### take(ch) -> Promise -> takenValue|CLOSED\nTakes a value from a channel. Returned Promise resolves to taken value or CLOSED constant if the channel is closed.\n\n### go(async function) -> promiseFromInvokedAsyncFunction\nImmediately invokes (and returns) given function.\n\n### sleep(ms) -> Promise\nCreates a promise that will resolve successfully after ```ms``` milliseconds.\n\n### CLOSED\nA constant, which all takes on a closed channel receive instead of a value.\n\n### close(ch) -> undefined\nCloses a channel. This causes:\n- all puts and pending puts to resolve to false\n- all takes and pending takes to resolve to the CLOSED constant\n\n### clone(ch) -> Chan\nMakes a new channel, same as the old channel.\n\n### any(...ports) -> Promise -> [theResolvedValue, theSourceChannelOrPromise]\nLike ```alts``` in Clojure's ```core-async```.\n\n```ports``` can be a channel to take from, a promise to resolve, or an array \nto put data onto a channel, like ```[ theChannel, valueToPut ]```.\n\nIf none of them have a pending value, it will resolve with whichever channel receives a value next.\nIf one of the channels has a pending value already, it will simply resolve to that.\nIf more than one channel has a pending value, it selects one in a non-deterministic fashion.\n\nAlways resolves with a double of ```[ theResolvedValue, theSourceChannel ]```.\n\nAll non-winning actions will be canceled so that their data does not go missing.\n\n### repeat(async function, seed=null) -> undefined\nThis functions like a while loop, except you can track state using its return value. Return false to end. Return a value other than false, and it will be available as the argument to your callback async function. Pass in a ```seed``` value as the second argument to repeat.\n\n### repeatTake(ch, async function, seed=null) -> undefined\nThis is just like ```repeat``` above, except that before it repeats, it waits for a successful ```take``` on the given channel. Then it passes this taken value in as the first argument, with any local state being passed as the second argument.\n\nSee the ping/pong example above to see this in action.\n\n### merge(...chs)\nCreates a new channel that will receive all puts to the received channels.\n\n## buffers\n### buffers.unbuffered()\nNo buffer space. The default choice for when first argument to ```chan``` is falsy.\n### buffers.fixed(num)\nBuffer has space of ```num```. Any extra ```put```s are parked.\n### buffers.sliding(num)\nBuffer simply slides across pending puts as a window of ```num``` width. So, oldest puts are dropped as new ones are added.\n### buffers.dropping(num)\nBuffer drops, and resolves, any extra puts beyond ```num```.\n","maintainers":[{"name":"bbarr","email":"bbarr1384@gmail.com"}],"time":{"modified":"2022-06-19T17:32:45.021Z","created":"2012-08-26T20:49:40.180Z","1.0.1":"2012-08-26T20:49:41.727Z","0.0.1":"2015-06-24T04:37:24.348Z","0.0.2":"2015-06-28T02:35:08.707Z","0.1.1":"2015-07-03T19:33:22.289Z","0.1.2":"2015-07-20T20:11:31.858Z","0.1.3":"2015-09-30T17:43:58.679Z","0.2.0":"2015-10-09T17:16:02.161Z","0.2.1":"2015-10-09T17:17:14.350Z","0.3.0":"2015-12-07T14:18:54.255Z","0.3.1":"2015-12-08T22:12:49.020Z","0.4.0":"2015-12-10T16:30:02.004Z","0.4.1":"2015-12-10T21:17:19.101Z","0.4.2":"2015-12-11T12:46:18.798Z","0.5.0":"2016-02-21T00:05:55.014Z","0.5.2":"2016-07-28T17:12:49.613Z","0.6.0":"2017-05-23T18:19:58.937Z","1.0.0":"2017-05-23T18:20:57.696Z","1.0.2":"2018-06-05T23:14:52.038Z","1.1.0":"2020-09-16T20:11:22.857Z","1.1.1":"2021-04-01T16:08:14.511Z","1.2.0":"2021-11-07T21:28:17.918Z"},"author":{"name":"Brendan Barr","email":"brendan@brendanbarr.com","url":"http://brendanbarr.com"},"keywords":["csp","channels","async","es7","medium"],"license":"ISC","readmeFilename":"README.md","homepage":"https://github.com/bbarr/medium#readme","repository":{"type":"git","url":"git+https://github.com/bbarr/medium.git"},"bugs":{"url":"https://github.com/bbarr/medium/issues"},"users":{"trusktr":true}}