├── .editorconfig ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── TODO.md ├── demo ├── assets │ ├── animation.css │ ├── prism.css │ └── prism.js ├── dist │ ├── assets │ │ ├── animation.css │ │ └── prism.css │ └── index.html ├── index.html ├── index.js ├── loop.js ├── merge.js ├── package.json ├── webpack.config.js └── yarn.lock ├── index.ts ├── lib ├── index.d.ts ├── index.js └── umd │ └── index.js ├── package.json ├── test ├── index.spec.ts └── utils.ts ├── tsconfig.json ├── tslint.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | tmp 2 | demo/dist 3 | 4 | bower_components 5 | node_modules 6 | 7 | # Editor configs 8 | .idea 9 | .vscode 10 | 11 | # Compiled source # 12 | ################### 13 | *.com 14 | *.class 15 | *.dll 16 | *.exe 17 | *.o 18 | *.so 19 | 20 | # Packages # 21 | ############ 22 | # it's better to unpack these files and commit the raw source 23 | # git has its own built in compression methods 24 | *.7z 25 | *.dmg 26 | *.gz 27 | *.iso 28 | *.jar 29 | *.rar 30 | *.tar 31 | *.zip 32 | *.tgz 33 | 34 | # Logs and databases # 35 | ###################### 36 | *.log 37 | *.sql 38 | *.sqlite 39 | 40 | # OS generated files # 41 | ###################### 42 | .DS_Store 43 | .DS_Store? 44 | ._* 45 | .Spotlight-V100 46 | .Trashes 47 | ehthumbs.db 48 | Thumbs.db 49 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "node" 4 | - "6" 5 | notifications: 6 | email: 7 | on_success: never 8 | on_failure: always 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Giovanni Jiayi Hu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sinergia 2 | 3 | [![npm](https://img.shields.io/npm/v/sinergia.svg)](https://www.npmjs.com/package/sinergia) [![travis](https://travis-ci.org/jiayihu/sinergia.svg?branch=master)](https://travis-ci.org/jiayihu/sinergia) 4 | 5 | **sinergia** is a tiny (1KB gzipped) library to run [cooperative](https://en.wikipedia.org/wiki/Cooperative_multitasking) expensive tasks without blocking the UI during the computations and keeping 60fps frame rate. 6 | 7 | ## Demo 8 | 9 | A live example is available at [https://jiayihu.github.io/sinergia/](https://jiayihu.github.io/sinergia/), with an animated box which should remain smooth at 60fps. 10 | 11 | There are 2 examples: 12 | 13 | 1. [Long running loop](https://jiayihu.github.io/sinergia/#loop): Running an expensive function (with a 2mln iterations loop) with each item of an iterable 14 | 15 | 2. [Long merge sort](https://jiayihu.github.io/sinergia/#merge-sort): Running a common merge sort with an array of 100k items 16 | 17 | It's possible to play with the demo locally cloning the repo and running: 18 | 19 | ```bash 20 | cd demo # Go to demo folder 21 | npm install # Or `yarn install` 22 | npm start 23 | ``` 24 | 25 | ## Installation 26 | 27 | ``` 28 | npm install sinergia --save 29 | ``` 30 | 31 | ## Usage 32 | 33 | > The following examples use [co](https://github.com/tj/co) to consume the generator functions. 34 | 35 | In this example `work` runs a long loop for every item, but every 100000 iterations it interrupts and gives the control to `sinergia`, which will resume the execution of `work` when more suitable. 36 | 37 | Execution tasks are by definition [cooperative](https://en.wikipedia.org/wiki/Cooperative_multitasking) because they decide when to `yield` the control of the execution. 38 | 39 | By using `yield` inside your `work` you can decide the priority of the execution. *Yielding* often will run the task smoothly chunk by chunk but it will complete in more time. On the other hand *yielding* fewer times it will complete the task sooner but it will block more the main thread. *Yielding* zero times is equal to running the task *synchronously*. 40 | 41 | ```javascript 42 | import co from 'co'; 43 | import { sinergia } from 'sinergia'; 44 | 45 | function* work() { 46 | const iterable = 'Absent gods.'.split(''); 47 | let result = ''; 48 | 49 | for (let item of iterable) { 50 | let x = 0; 51 | 52 | while (x < 2000000) { 53 | x = x + 1; 54 | 55 | // Tell sinergia when the task can be interrupted and resumed later 56 | if (x % 100000 === 0) yield result; 57 | } 58 | 59 | result += item; // Simple result of task 60 | console.log(`Result of iteration:`, result); 61 | } 62 | 63 | yield result; // Yield latest result 64 | } 65 | 66 | const execute = co(function* () { 67 | return yield* sinergia(work); 68 | }); 69 | execute.then((result) => { 70 | // If the work wasn't interrupted 71 | if (result) console.log(`Result: ${result.value}`); 72 | }); 73 | ``` 74 | 75 | ### Abort execution 76 | 77 | Since `sinergia` is just a generator, you can use the returned object to abort the execution using [.return()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return) method of generators. 78 | 79 | The method will return `{ value: any }` with the value of the result computed on the latest item before aborting. 80 | 81 | ```javascript 82 | import co from 'co'; 83 | import { sinergia } from 'sinergia'; 84 | 85 | function* work() { 86 | const iterable = 'Absent gods.'.split(''); 87 | let result = ''; 88 | 89 | for (let item of iterable) { 90 | let x = 0; 91 | 92 | while (x < 2000000) { 93 | x = x + 1; 94 | 95 | // Tell sinergia when the task can be interrupted and resumed later 96 | if (x % 100000 === 0) yield result; 97 | } 98 | 99 | result += item; // Simple result of task 100 | console.log(`Result of iteration:`, result); 101 | } 102 | 103 | yield result; // Yield latest result 104 | } 105 | 106 | let iterator; 107 | 108 | const execute = co(function* () { 109 | iterator = sinergia(work); 110 | return yield* iterator; 111 | }); 112 | execute.then((result) => { 113 | // If the work wasn't interrupted 114 | if (result) console.log(`Result: ${result.value}`); 115 | }); 116 | 117 | window.setTimeout(() => { 118 | const result = iterator.return(); 119 | console.log('Interrupted result', result.value); 120 | }, 5000); 121 | ``` 122 | 123 | ## API 124 | 125 | #### sinergia(work: GeneratorFunction): Generator 126 | 127 | It runs asynchronously the `work` function in not blocking way. 128 | Returns the [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator) object. 129 | 130 | ## Browser support 131 | 132 | **sinergia** requires polyfills for: 133 | 134 | 1. *Promise* like [es6-promise](https://github.com/stefanpenner/es6-promise) or [core-js Promise](https://github.com/zloirock/core-js#ecmascript-6-promise). If you use [babel-polyfill](https://babeljs.io/docs/usage/polyfill/) it's already included. 135 | 136 | 2. *requestAnimationFrame/cancelAnimationFrame*. See this [gist](https://gist.github.com/paulirish/1579671) as example. 137 | 138 | ## Credits 139 | 140 | Ispiration comes largely from [@LucaColonnello](https://github.com/LucaColonnello) and [@cef62](https://github.com/cef62). 141 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | - Add tests with Jest 2 | -------------------------------------------------------------------------------- /demo/assets/animation.css: -------------------------------------------------------------------------------- 1 | pre[class*="language-"] { 2 | font-size: 13px; 3 | line-height: 1.5; 4 | } 5 | 6 | code[class*="language-"] { 7 | line-height: 1; 8 | } 9 | 10 | .box { 11 | background-color: #FFEB3B; 12 | margin: 0 auto; 13 | width: 500px; 14 | height: 300px; 15 | position: relative; 16 | border-radius: 5px; 17 | overflow: hidden; 18 | } 19 | .box .dot { 20 | display: block; 21 | width: 20px; 22 | height: 20px; 23 | border-radius: 50%; 24 | background-color: #F44336; 25 | position: absolute; 26 | -webkit-animation: moveX 3.05s linear 0s infinite alternate, moveY 3.4s linear 0s infinite alternate; 27 | -moz-animation: moveX 3.05s linear 0s infinite alternate, moveY 3.4s linear 0s infinite alternate; 28 | -o-animation: moveX 3.05s linear 0s infinite alternate, moveY 3.4s linear 0s infinite alternate; 29 | animation: moveX 3.05s linear 0s infinite alternate, moveY 3.4s linear 0s infinite alternate; 30 | } 31 | 32 | @-webkit-keyframes moveX { 33 | from { left: 0; } to { left: 480px; } 34 | } 35 | @-moz-keyframes moveX { 36 | from { left: 0; } to { left: 480px; } 37 | } 38 | @-o-keyframes moveX { 39 | from { left: 0; } to { left: 480px; } 40 | } 41 | @keyframes moveX { 42 | from { left: 0; } to { left: 480px; } 43 | } 44 | @-webkit-keyframes moveY { 45 | from { top: 0; } to { top: 280px; } 46 | } 47 | @-moz-keyframes moveY { 48 | from { top: 0; } to { top: 280px; } 49 | } 50 | @-o-keyframes moveY { 51 | from { top: 0; } to { top: 280px; } 52 | } 53 | @keyframes moveY { 54 | from { top: 0; } to { top: 280px; } 55 | } 56 | -------------------------------------------------------------------------------- /demo/assets/prism.css: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ 2 | /** 3 | * prism.js default theme for JavaScript, CSS and HTML 4 | * Based on dabblet (http://dabblet.com) 5 | * @author Lea Verou 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: black; 11 | background: none; 12 | text-shadow: 0 1px white; 13 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | word-wrap: normal; 19 | line-height: 1.5; 20 | 21 | -moz-tab-size: 4; 22 | -o-tab-size: 4; 23 | tab-size: 4; 24 | 25 | -webkit-hyphens: none; 26 | -moz-hyphens: none; 27 | -ms-hyphens: none; 28 | hyphens: none; 29 | } 30 | 31 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 32 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 33 | text-shadow: none; 34 | background: #b3d4fc; 35 | } 36 | 37 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 38 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 39 | text-shadow: none; 40 | background: #b3d4fc; 41 | } 42 | 43 | @media print { 44 | code[class*="language-"], 45 | pre[class*="language-"] { 46 | text-shadow: none; 47 | } 48 | } 49 | 50 | /* Code blocks */ 51 | pre[class*="language-"] { 52 | padding: 1em; 53 | margin: .5em 0; 54 | overflow: auto; 55 | } 56 | 57 | :not(pre) > code[class*="language-"], 58 | pre[class*="language-"] { 59 | background: #f5f2f0; 60 | } 61 | 62 | /* Inline code */ 63 | :not(pre) > code[class*="language-"] { 64 | padding: .1em; 65 | border-radius: .3em; 66 | white-space: normal; 67 | } 68 | 69 | .token.comment, 70 | .token.prolog, 71 | .token.doctype, 72 | .token.cdata { 73 | color: slategray; 74 | } 75 | 76 | .token.punctuation { 77 | color: #999; 78 | } 79 | 80 | .namespace { 81 | opacity: .7; 82 | } 83 | 84 | .token.property, 85 | .token.tag, 86 | .token.boolean, 87 | .token.number, 88 | .token.constant, 89 | .token.symbol, 90 | .token.deleted { 91 | color: #905; 92 | } 93 | 94 | .token.selector, 95 | .token.attr-name, 96 | .token.string, 97 | .token.char, 98 | .token.builtin, 99 | .token.inserted { 100 | color: #690; 101 | } 102 | 103 | .token.operator, 104 | .token.entity, 105 | .token.url, 106 | .language-css .token.string, 107 | .style .token.string { 108 | color: #a67f59; 109 | background: hsla(0, 0%, 100%, .5); 110 | } 111 | 112 | .token.atrule, 113 | .token.attr-value, 114 | .token.keyword { 115 | color: #07a; 116 | } 117 | 118 | .token.function { 119 | color: #DD4A68; 120 | } 121 | 122 | .token.regex, 123 | .token.important, 124 | .token.variable { 125 | color: #e90; 126 | } 127 | 128 | .token.important, 129 | .token.bold { 130 | font-weight: bold; 131 | } 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.entity { 137 | cursor: help; 138 | } 139 | 140 | -------------------------------------------------------------------------------- /demo/assets/prism.js: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ 2 | var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,util:{encode:function(e){return e instanceof a?new a(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(v instanceof a)){u.lastIndex=0;var b=u.exec(v),k=1;if(!b&&h&&m!=r.length-1){if(u.lastIndex=y,b=u.exec(e),!b)break;for(var w=b.index+(c?b[1].length:0),_=b.index+b[0].length,P=m,A=y,j=r.length;j>P&&_>A;++P)A+=r[P].length,w>=A&&(++m,y=A);if(r[m]instanceof a||r[P-1].greedy)continue;k=P-m,v=e.slice(y,A),b.index-=y}if(b){c&&(f=b[1].length);var w=b.index+f,b=b[0].slice(f),_=w+b.length,x=v.slice(0,w),O=v.slice(_),S=[m,k];x&&S.push(x);var N=new a(i,g?n.tokenize(b,g):b,d,b,h);S.push(N),O&&S.push(O),Array.prototype.splice.apply(r,S)}}}}}return r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,l=0;r=a[l++];)r(t)}}},a=n.Token=function(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var l={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if("comment"==l.type&&(l.attributes.spellcheck="true"),e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,l=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[a],a)),l&&_self.close()},!1),_self.Prism):_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,!document.addEventListener||n.manual||r.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); 3 | Prism.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; 4 | Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); 5 | Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; 6 | Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript; 7 | -------------------------------------------------------------------------------- /demo/dist/assets/animation.css: -------------------------------------------------------------------------------- 1 | pre[class*="language-"] { 2 | font-size: 13px; 3 | line-height: 1.5; 4 | } 5 | 6 | code[class*="language-"] { 7 | line-height: 1; 8 | } 9 | 10 | .box { 11 | background-color: #FFEB3B; 12 | margin: 0 auto; 13 | width: 500px; 14 | height: 300px; 15 | position: relative; 16 | border-radius: 5px; 17 | overflow: hidden; 18 | } 19 | .box .dot { 20 | display: block; 21 | width: 20px; 22 | height: 20px; 23 | border-radius: 50%; 24 | background-color: #F44336; 25 | position: absolute; 26 | -webkit-animation: moveX 3.05s linear 0s infinite alternate, moveY 3.4s linear 0s infinite alternate; 27 | -moz-animation: moveX 3.05s linear 0s infinite alternate, moveY 3.4s linear 0s infinite alternate; 28 | -o-animation: moveX 3.05s linear 0s infinite alternate, moveY 3.4s linear 0s infinite alternate; 29 | animation: moveX 3.05s linear 0s infinite alternate, moveY 3.4s linear 0s infinite alternate; 30 | } 31 | 32 | @-webkit-keyframes moveX { 33 | from { left: 0; } to { left: 480px; } 34 | } 35 | @-moz-keyframes moveX { 36 | from { left: 0; } to { left: 480px; } 37 | } 38 | @-o-keyframes moveX { 39 | from { left: 0; } to { left: 480px; } 40 | } 41 | @keyframes moveX { 42 | from { left: 0; } to { left: 480px; } 43 | } 44 | @-webkit-keyframes moveY { 45 | from { top: 0; } to { top: 280px; } 46 | } 47 | @-moz-keyframes moveY { 48 | from { top: 0; } to { top: 280px; } 49 | } 50 | @-o-keyframes moveY { 51 | from { top: 0; } to { top: 280px; } 52 | } 53 | @keyframes moveY { 54 | from { top: 0; } to { top: 280px; } 55 | } 56 | -------------------------------------------------------------------------------- /demo/dist/assets/prism.css: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ 2 | /** 3 | * prism.js default theme for JavaScript, CSS and HTML 4 | * Based on dabblet (http://dabblet.com) 5 | * @author Lea Verou 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: black; 11 | background: none; 12 | text-shadow: 0 1px white; 13 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | word-wrap: normal; 19 | line-height: 1.5; 20 | 21 | -moz-tab-size: 4; 22 | -o-tab-size: 4; 23 | tab-size: 4; 24 | 25 | -webkit-hyphens: none; 26 | -moz-hyphens: none; 27 | -ms-hyphens: none; 28 | hyphens: none; 29 | } 30 | 31 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 32 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 33 | text-shadow: none; 34 | background: #b3d4fc; 35 | } 36 | 37 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 38 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 39 | text-shadow: none; 40 | background: #b3d4fc; 41 | } 42 | 43 | @media print { 44 | code[class*="language-"], 45 | pre[class*="language-"] { 46 | text-shadow: none; 47 | } 48 | } 49 | 50 | /* Code blocks */ 51 | pre[class*="language-"] { 52 | padding: 1em; 53 | margin: .5em 0; 54 | overflow: auto; 55 | } 56 | 57 | :not(pre) > code[class*="language-"], 58 | pre[class*="language-"] { 59 | background: #f5f2f0; 60 | } 61 | 62 | /* Inline code */ 63 | :not(pre) > code[class*="language-"] { 64 | padding: .1em; 65 | border-radius: .3em; 66 | white-space: normal; 67 | } 68 | 69 | .token.comment, 70 | .token.prolog, 71 | .token.doctype, 72 | .token.cdata { 73 | color: slategray; 74 | } 75 | 76 | .token.punctuation { 77 | color: #999; 78 | } 79 | 80 | .namespace { 81 | opacity: .7; 82 | } 83 | 84 | .token.property, 85 | .token.tag, 86 | .token.boolean, 87 | .token.number, 88 | .token.constant, 89 | .token.symbol, 90 | .token.deleted { 91 | color: #905; 92 | } 93 | 94 | .token.selector, 95 | .token.attr-name, 96 | .token.string, 97 | .token.char, 98 | .token.builtin, 99 | .token.inserted { 100 | color: #690; 101 | } 102 | 103 | .token.operator, 104 | .token.entity, 105 | .token.url, 106 | .language-css .token.string, 107 | .style .token.string { 108 | color: #a67f59; 109 | background: hsla(0, 0%, 100%, .5); 110 | } 111 | 112 | .token.atrule, 113 | .token.attr-value, 114 | .token.keyword { 115 | color: #07a; 116 | } 117 | 118 | .token.function { 119 | color: #DD4A68; 120 | } 121 | 122 | .token.regex, 123 | .token.important, 124 | .token.variable { 125 | color: #e90; 126 | } 127 | 128 | .token.important, 129 | .token.bold { 130 | font-weight: bold; 131 | } 132 | .token.italic { 133 | font-style: italic; 134 | } 135 | 136 | .token.entity { 137 | cursor: help; 138 | } 139 | 140 | -------------------------------------------------------------------------------- /demo/dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Sinergia - demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |

This box animation should be always smooth. Check FPS meter in Chrome devtools > Rendering > FPS Meter

15 |
16 | 17 |
18 | 19 |
20 | 21 |

# Long running loop

22 | 23 |
24 | 25 | 26 |
27 | 28 |
 29 |         
 30 | function* work() {
 31 |   const iterable = 'Absent gods.'.split('');
 32 |   let result = '';
 33 | 
 34 |   for (let item of iterable) {
 35 |     let x = 0;
 36 | 
 37 |     while (x < 2000000) {
 38 |       x = x + 1;
 39 | 
 40 |       // Tell sinergia when the task can be interrupted and resumed later
 41 |       if (x % 100000 === 0) yield result;
 42 |     }
 43 | 
 44 |     result += item; // Simple result of task
 45 |     console.log(`Result of iteration:`, result);
 46 |   }
 47 | 
 48 |   yield result; // Yield latest result
 49 | }
 50 |       
51 | 52 |
53 | 54 |
55 | 56 |
57 | 58 |
59 | 60 |

# Long Merge sort

61 | 62 |
63 | 64 | 65 |
66 | 67 |
 68 |         
 69 | const largeList = new Array(100000);
 70 | for (let i = 0; i < largeList.length; i += 1) largeList[i] = Math.floor(Math.random() * 10000);
 71 | 
 72 | function* work(values) {
 73 |   const sort = function*(array) {
 74 |     const len = array.length;
 75 |     if (len < 2) {
 76 |       return array;
 77 |     }
 78 |     const pivot = Math.ceil(len / 2);
 79 |     return yield* merge(
 80 |       yield* sort(array.slice(0, pivot)),
 81 |       yield* sort(array.slice(pivot))
 82 |     );
 83 |   };
 84 | 
 85 |   const merge = function*(left, right) {
 86 |     let result = [];
 87 |     while ((left.length > 0) && (right.length > 0)) {
 88 |       if (left[0] > right[0]) {
 89 |         result.push(left.shift());
 90 |       }
 91 |       else {
 92 |         result.push(right.shift());
 93 |       }
 94 |     }
 95 | 
 96 |     result = result.concat(left, right);
 97 |     if (result.length > 100) {
 98 |       // Pause when the merges start to become expensive
 99 |       yield result;
100 | 
101 |       // Don't always log
102 |       if (Math.floor(Math.random() * 10) === 1) console.log('I\'m working...');
103 |     }
104 |     return result;
105 |   };
106 | 
107 |   return yield* sort(values);
108 | }
109 |       
110 | 111 |
112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Sinergia - demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |

This box animation should be always smooth. Check FPS meter in Chrome devtools > Rendering > FPS Meter

15 |
16 | 17 |
18 | 19 |
20 | 21 |

# Long running loop

22 | 23 |
24 | 25 | 26 |
27 | 28 |
 29 |         
 30 | function* work() {
 31 |   const iterable = 'Absent gods.'.split('');
 32 |   let result = '';
 33 | 
 34 |   for (let item of iterable) {
 35 |     let x = 0;
 36 | 
 37 |     while (x < 2000000) {
 38 |       x = x + 1;
 39 | 
 40 |       // Tell sinergia when the task can be interrupted and resumed later
 41 |       if (x % 100000 === 0) yield result;
 42 |     }
 43 | 
 44 |     result += item; // Simple result of task
 45 |     console.log(`Result of iteration:`, result);
 46 |   }
 47 | 
 48 |   yield result; // Yield latest result
 49 | }
 50 |       
51 | 52 |
53 | 54 |
55 | 56 |
57 | 58 |
59 | 60 |

# Long Merge sort

61 | 62 |
63 | 64 | 65 |
66 | 67 |
 68 |         
 69 | const largeList = new Array(100000);
 70 | for (let i = 0; i < largeList.length; i += 1) largeList[i] = Math.floor(Math.random() * 10000);
 71 | 
 72 | function* work(values) {
 73 |   const sort = function*(array) {
 74 |     const len = array.length;
 75 |     if (len < 2) {
 76 |       return array;
 77 |     }
 78 |     const pivot = Math.ceil(len / 2);
 79 |     return yield* merge(
 80 |       yield* sort(array.slice(0, pivot)),
 81 |       yield* sort(array.slice(pivot))
 82 |     );
 83 |   };
 84 | 
 85 |   const merge = function*(left, right) {
 86 |     let result = [];
 87 |     while ((left.length > 0) && (right.length > 0)) {
 88 |       if (left[0] > right[0]) {
 89 |         result.push(left.shift());
 90 |       }
 91 |       else {
 92 |         result.push(right.shift());
 93 |       }
 94 |     }
 95 | 
 96 |     result = result.concat(left, right);
 97 |     if (result.length > 100) {
 98 |       // Pause when the merges start to become expensive
 99 |       yield result;
100 | 
101 |       // Don't always log
102 |       if (Math.floor(Math.random() * 10) === 1) console.log('I\'m working...');
103 |     }
104 |     return result;
105 |   };
106 | 
107 |   return yield* sort(values);
108 | }
109 |       
110 | 111 |
112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /demo/index.js: -------------------------------------------------------------------------------- 1 | import './loop'; 2 | import './merge'; 3 | -------------------------------------------------------------------------------- /demo/loop.js: -------------------------------------------------------------------------------- 1 | import { sinergia } from '../lib/'; 2 | 3 | // import { sinergia } from 'sinergia'; 4 | import co from 'co'; 5 | 6 | function* work() { 7 | const iterable = 'Absent gods.'.split(''); 8 | let result = ''; 9 | 10 | for (let item of iterable) { 11 | let x = 0; 12 | 13 | while (x < 2000000) { 14 | x = x + 1; 15 | 16 | // Tell sinergia when the task can be interrupted and resumed later 17 | if (x % 100000 === 0) yield result; 18 | } 19 | 20 | result += item; // Simple result of task 21 | console.log(`Result of iteration:`, result); 22 | } 23 | 24 | yield result; // Yield latest result 25 | } 26 | 27 | let iterator; 28 | 29 | document.querySelector('.loop').addEventListener('click', function () { 30 | const execute = co(function* () { 31 | iterator = sinergia(work); 32 | return yield* iterator; 33 | }); 34 | execute.then((result) => { 35 | // If the work wasn't interrupted 36 | if (result) console.log(`Result: ${result.value}`); 37 | }); 38 | }); 39 | 40 | document.querySelector('.loop-interrupt').addEventListener('click', function () { 41 | const result = iterator.return(); 42 | console.log('Interrupted result', result.value); 43 | }); 44 | -------------------------------------------------------------------------------- /demo/merge.js: -------------------------------------------------------------------------------- 1 | import { sinergia } from '../lib/'; 2 | 3 | // import { sinergia } from 'sinergia'; 4 | import co from 'co'; 5 | 6 | const largeList = new Array(100000); 7 | for (let i = 0; i < largeList.length; i += 1) largeList[i] = Math.floor(Math.random() * 10000); 8 | 9 | function* work(values) { 10 | const sort = function*(array) { 11 | const len = array.length; 12 | if (len < 2) { 13 | return array; 14 | } 15 | const pivot = Math.ceil(len / 2); 16 | return yield* merge( 17 | yield* sort(array.slice(0, pivot)), 18 | yield* sort(array.slice(pivot)) 19 | ); 20 | }; 21 | 22 | const merge = function*(left, right) { 23 | let result = []; 24 | while ((left.length > 0) && (right.length > 0)) { 25 | if (left[0] > right[0]) { 26 | result.push(left.shift()); 27 | } 28 | else { 29 | result.push(right.shift()); 30 | } 31 | } 32 | 33 | result = result.concat(left, right); 34 | if (result.length > 100) { 35 | // Pause when the merges start to become expensive 36 | yield result; 37 | 38 | // Don't always log 39 | if (Math.floor(Math.random() * 10) === 1) console.log('I\'m working...'); 40 | } 41 | return result; 42 | }; 43 | 44 | return yield* sort(values); 45 | } 46 | 47 | let iterator; 48 | 49 | document.querySelector('.merge').addEventListener('click', function () { 50 | const execute = co(function* () { 51 | iterator = sinergia(work.bind(null, largeList)); 52 | return yield* iterator; 53 | }); 54 | execute.then((result) => { 55 | // If the work wasn't interrupted 56 | if (result) console.log(`Result: ${result.value}`); 57 | }); 58 | }); 59 | 60 | document.querySelector('.merge-interrupt').addEventListener('click', function () { 61 | const result = iterator.return(); 62 | console.log('Interrupted result', result.value); 63 | }); 64 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "npm run clean && cross-env NODE_ENV=production webpack", 8 | "clean": "rimraf dist", 9 | "deploy": "npm run build && gh-pages -d dist", 10 | "start": "webpack-dev-server --inline" 11 | }, 12 | "author": "Jiayi Hu ", 13 | "license": "MIT", 14 | "devDependencies": { 15 | "copy-webpack-plugin": "^4.0.1", 16 | "cross-env": "^4.0.0", 17 | "gh-pages": "^0.12.0", 18 | "rimraf": "^2.6.1", 19 | "ts-loader": "^2.0.3", 20 | "webpack": "^2.3.3", 21 | "webpack-dev-server": "^2.4.2" 22 | }, 23 | "dependencies": { 24 | "sinergia": "^0.0.2" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /demo/webpack.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Webpack configuration for the demo 3 | */ 4 | 5 | const path = require('path'); 6 | const webpack = require('webpack'); 7 | const CopyWebpackPlugin = require('copy-webpack-plugin'); 8 | 9 | const root = { 10 | src: path.join(__dirname), 11 | dest: path.join(__dirname, 'dist/'), 12 | }; 13 | const IS_DEV = process.env.NODE_ENV !== 'production'; 14 | 15 | const devPlugins = []; 16 | const prodPlugins = [ 17 | new CopyWebpackPlugin([ 18 | { from: './index.html', to: 'index.html' }, 19 | { from: './assets', to: 'assets' } 20 | ]), 21 | new webpack.optimize.UglifyJsPlugin({ 22 | compressor: { 23 | warnings: false, 24 | }, 25 | }), 26 | new webpack.DefinePlugin({ 27 | 'process.env': { 28 | NODE_ENV: JSON.stringify('production'), 29 | }, 30 | }), 31 | ]; 32 | 33 | module.exports = { 34 | devServer: IS_DEV ? { 35 | historyApiFallback: true, 36 | noInfo: false, 37 | port: 3000, 38 | } : {}, 39 | devtool: 'eval', 40 | entry: root.src, 41 | output: { 42 | path: root.dest, 43 | filename: 'dist/main.js', 44 | }, 45 | resolve: { 46 | extensions: ['.js', '.ts'], 47 | }, 48 | module: { 49 | rules: [ 50 | ], 51 | }, 52 | plugins: IS_DEV ? devPlugins : prodPlugins, 53 | }; 54 | -------------------------------------------------------------------------------- /demo/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abbrev@1: 6 | version "1.1.0" 7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" 8 | 9 | accepts@~1.3.3: 10 | version "1.3.3" 11 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" 12 | dependencies: 13 | mime-types "~2.1.11" 14 | negotiator "0.6.1" 15 | 16 | acorn-dynamic-import@^2.0.0: 17 | version "2.0.2" 18 | resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" 19 | dependencies: 20 | acorn "^4.0.3" 21 | 22 | acorn@^4.0.3, acorn@^4.0.4: 23 | version "4.0.11" 24 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" 25 | 26 | ajv-keywords@^1.1.1: 27 | version "1.5.1" 28 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 29 | 30 | ajv@^4.7.0, ajv@^4.9.1: 31 | version "4.11.6" 32 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.6.tgz#947e93049790942b2a2d60a8289b28924d39f987" 33 | dependencies: 34 | co "^4.6.0" 35 | json-stable-stringify "^1.0.1" 36 | 37 | align-text@^0.1.1, align-text@^0.1.3: 38 | version "0.1.4" 39 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 40 | dependencies: 41 | kind-of "^3.0.2" 42 | longest "^1.0.1" 43 | repeat-string "^1.5.2" 44 | 45 | ansi-html@0.0.7: 46 | version "0.0.7" 47 | resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" 48 | 49 | ansi-regex@^2.0.0: 50 | version "2.1.1" 51 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 52 | 53 | anymatch@^1.3.0: 54 | version "1.3.0" 55 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 56 | dependencies: 57 | arrify "^1.0.0" 58 | micromatch "^2.1.5" 59 | 60 | aproba@^1.0.3: 61 | version "1.1.1" 62 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" 63 | 64 | are-we-there-yet@~1.1.2: 65 | version "1.1.2" 66 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" 67 | dependencies: 68 | delegates "^1.0.0" 69 | readable-stream "^2.0.0 || ^1.1.13" 70 | 71 | arr-diff@^2.0.0: 72 | version "2.0.0" 73 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 74 | dependencies: 75 | arr-flatten "^1.0.1" 76 | 77 | arr-flatten@^1.0.1: 78 | version "1.0.1" 79 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" 80 | 81 | array-flatten@1.1.1: 82 | version "1.1.1" 83 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 84 | 85 | array-union@^1.0.1: 86 | version "1.0.2" 87 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 88 | dependencies: 89 | array-uniq "^1.0.1" 90 | 91 | array-uniq@^1.0.1: 92 | version "1.0.3" 93 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 94 | 95 | array-unique@^0.2.1: 96 | version "0.2.1" 97 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 98 | 99 | arrify@^1.0.0: 100 | version "1.0.1" 101 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 102 | 103 | asn1.js@^4.0.0: 104 | version "4.9.1" 105 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40" 106 | dependencies: 107 | bn.js "^4.0.0" 108 | inherits "^2.0.1" 109 | minimalistic-assert "^1.0.0" 110 | 111 | asn1@~0.2.3: 112 | version "0.2.3" 113 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 114 | 115 | assert-plus@1.0.0, assert-plus@^1.0.0: 116 | version "1.0.0" 117 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 118 | 119 | assert-plus@^0.2.0: 120 | version "0.2.0" 121 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 122 | 123 | assert@^1.1.1: 124 | version "1.4.1" 125 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" 126 | dependencies: 127 | util "0.10.3" 128 | 129 | async-each@^1.0.0: 130 | version "1.0.1" 131 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 132 | 133 | async@2.1.2, async@^2.1.2: 134 | version "2.1.2" 135 | resolved "https://registry.yarnpkg.com/async/-/async-2.1.2.tgz#612a4ab45ef42a70cde806bad86ee6db047e8385" 136 | dependencies: 137 | lodash "^4.14.0" 138 | 139 | async@^1.5.2: 140 | version "1.5.2" 141 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 142 | 143 | asynckit@^0.4.0: 144 | version "0.4.0" 145 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 146 | 147 | aws-sign2@~0.6.0: 148 | version "0.6.0" 149 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 150 | 151 | aws4@^1.2.1: 152 | version "1.6.0" 153 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 154 | 155 | balanced-match@^0.4.1: 156 | version "0.4.2" 157 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 158 | 159 | base64-js@^1.0.2: 160 | version "1.2.0" 161 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" 162 | 163 | batch@0.5.3: 164 | version "0.5.3" 165 | resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" 166 | 167 | bcrypt-pbkdf@^1.0.0: 168 | version "1.0.1" 169 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 170 | dependencies: 171 | tweetnacl "^0.14.3" 172 | 173 | big.js@^3.1.3: 174 | version "3.1.3" 175 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" 176 | 177 | binary-extensions@^1.0.0: 178 | version "1.8.0" 179 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 180 | 181 | block-stream@*: 182 | version "0.0.9" 183 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 184 | dependencies: 185 | inherits "~2.0.0" 186 | 187 | bluebird@^2.10.2: 188 | version "2.11.0" 189 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" 190 | 191 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: 192 | version "4.11.6" 193 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" 194 | 195 | boom@2.x.x: 196 | version "2.10.1" 197 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 198 | dependencies: 199 | hoek "2.x.x" 200 | 201 | brace-expansion@^1.0.0: 202 | version "1.1.7" 203 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" 204 | dependencies: 205 | balanced-match "^0.4.1" 206 | concat-map "0.0.1" 207 | 208 | braces@^1.8.2: 209 | version "1.8.5" 210 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 211 | dependencies: 212 | expand-range "^1.8.1" 213 | preserve "^0.2.0" 214 | repeat-element "^1.1.2" 215 | 216 | brorand@^1.0.1: 217 | version "1.1.0" 218 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 219 | 220 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 221 | version "1.0.6" 222 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a" 223 | dependencies: 224 | buffer-xor "^1.0.2" 225 | cipher-base "^1.0.0" 226 | create-hash "^1.1.0" 227 | evp_bytestokey "^1.0.0" 228 | inherits "^2.0.1" 229 | 230 | browserify-cipher@^1.0.0: 231 | version "1.0.0" 232 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" 233 | dependencies: 234 | browserify-aes "^1.0.4" 235 | browserify-des "^1.0.0" 236 | evp_bytestokey "^1.0.0" 237 | 238 | browserify-des@^1.0.0: 239 | version "1.0.0" 240 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" 241 | dependencies: 242 | cipher-base "^1.0.1" 243 | des.js "^1.0.0" 244 | inherits "^2.0.1" 245 | 246 | browserify-rsa@^4.0.0: 247 | version "4.0.1" 248 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 249 | dependencies: 250 | bn.js "^4.1.0" 251 | randombytes "^2.0.1" 252 | 253 | browserify-sign@^4.0.0: 254 | version "4.0.4" 255 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" 256 | dependencies: 257 | bn.js "^4.1.1" 258 | browserify-rsa "^4.0.0" 259 | create-hash "^1.1.0" 260 | create-hmac "^1.1.2" 261 | elliptic "^6.0.0" 262 | inherits "^2.0.1" 263 | parse-asn1 "^5.0.0" 264 | 265 | browserify-zlib@^0.1.4: 266 | version "0.1.4" 267 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" 268 | dependencies: 269 | pako "~0.2.0" 270 | 271 | buffer-shims@~1.0.0: 272 | version "1.0.0" 273 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 274 | 275 | buffer-xor@^1.0.2: 276 | version "1.0.3" 277 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 278 | 279 | buffer@^4.3.0: 280 | version "4.9.1" 281 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" 282 | dependencies: 283 | base64-js "^1.0.2" 284 | ieee754 "^1.1.4" 285 | isarray "^1.0.0" 286 | 287 | builtin-modules@^1.0.0: 288 | version "1.1.1" 289 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 290 | 291 | builtin-status-codes@^3.0.0: 292 | version "3.0.0" 293 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 294 | 295 | bytes@2.3.0: 296 | version "2.3.0" 297 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" 298 | 299 | camelcase@^1.0.2: 300 | version "1.2.1" 301 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 302 | 303 | camelcase@^3.0.0: 304 | version "3.0.0" 305 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" 306 | 307 | caseless@~0.12.0: 308 | version "0.12.0" 309 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 310 | 311 | center-align@^0.1.1: 312 | version "0.1.3" 313 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 314 | dependencies: 315 | align-text "^0.1.3" 316 | lazy-cache "^1.0.3" 317 | 318 | chokidar@^1.4.3, chokidar@^1.6.0: 319 | version "1.6.1" 320 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" 321 | dependencies: 322 | anymatch "^1.3.0" 323 | async-each "^1.0.0" 324 | glob-parent "^2.0.0" 325 | inherits "^2.0.1" 326 | is-binary-path "^1.0.0" 327 | is-glob "^2.0.0" 328 | path-is-absolute "^1.0.0" 329 | readdirp "^2.0.0" 330 | optionalDependencies: 331 | fsevents "^1.0.0" 332 | 333 | cipher-base@^1.0.0, cipher-base@^1.0.1: 334 | version "1.0.3" 335 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07" 336 | dependencies: 337 | inherits "^2.0.1" 338 | 339 | cliui@^2.1.0: 340 | version "2.1.0" 341 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 342 | dependencies: 343 | center-align "^0.1.1" 344 | right-align "^0.1.1" 345 | wordwrap "0.0.2" 346 | 347 | cliui@^3.2.0: 348 | version "3.2.0" 349 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 350 | dependencies: 351 | string-width "^1.0.1" 352 | strip-ansi "^3.0.1" 353 | wrap-ansi "^2.0.0" 354 | 355 | co@^4.6.0: 356 | version "4.6.0" 357 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 358 | 359 | code-point-at@^1.0.0: 360 | version "1.1.0" 361 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 362 | 363 | collections@^0.2.0: 364 | version "0.2.2" 365 | resolved "https://registry.yarnpkg.com/collections/-/collections-0.2.2.tgz#1f23026b2ef36f927eecc901e99c5f0d48fa334e" 366 | dependencies: 367 | weak-map "1.0.0" 368 | 369 | colors@^1.0.3: 370 | version "1.1.2" 371 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 372 | 373 | combined-stream@^1.0.5, combined-stream@~1.0.5: 374 | version "1.0.5" 375 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 376 | dependencies: 377 | delayed-stream "~1.0.0" 378 | 379 | commander@2.9.0: 380 | version "2.9.0" 381 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 382 | dependencies: 383 | graceful-readlink ">= 1.0.0" 384 | 385 | compressible@~2.0.8: 386 | version "2.0.10" 387 | resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" 388 | dependencies: 389 | mime-db ">= 1.27.0 < 2" 390 | 391 | compression@^1.5.2: 392 | version "1.6.2" 393 | resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" 394 | dependencies: 395 | accepts "~1.3.3" 396 | bytes "2.3.0" 397 | compressible "~2.0.8" 398 | debug "~2.2.0" 399 | on-headers "~1.0.1" 400 | vary "~1.1.0" 401 | 402 | concat-map@0.0.1: 403 | version "0.0.1" 404 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 405 | 406 | connect-history-api-fallback@^1.3.0: 407 | version "1.3.0" 408 | resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" 409 | 410 | console-browserify@^1.1.0: 411 | version "1.1.0" 412 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 413 | dependencies: 414 | date-now "^0.1.4" 415 | 416 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 417 | version "1.1.0" 418 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 419 | 420 | constants-browserify@^1.0.0: 421 | version "1.0.0" 422 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 423 | 424 | content-disposition@0.5.2: 425 | version "0.5.2" 426 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 427 | 428 | content-type@~1.0.2: 429 | version "1.0.2" 430 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" 431 | 432 | cookie-signature@1.0.6: 433 | version "1.0.6" 434 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 435 | 436 | cookie@0.3.1: 437 | version "0.3.1" 438 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 439 | 440 | copy-webpack-plugin@^4.0.1: 441 | version "4.0.1" 442 | resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz#9728e383b94316050d0c7463958f2b85c0aa8200" 443 | dependencies: 444 | bluebird "^2.10.2" 445 | fs-extra "^0.26.4" 446 | glob "^6.0.4" 447 | is-glob "^3.1.0" 448 | loader-utils "^0.2.15" 449 | lodash "^4.3.0" 450 | minimatch "^3.0.0" 451 | node-dir "^0.1.10" 452 | 453 | core-util-is@~1.0.0: 454 | version "1.0.2" 455 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 456 | 457 | create-ecdh@^4.0.0: 458 | version "4.0.0" 459 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" 460 | dependencies: 461 | bn.js "^4.1.0" 462 | elliptic "^6.0.0" 463 | 464 | create-hash@^1.1.0, create-hash@^1.1.1: 465 | version "1.1.2" 466 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" 467 | dependencies: 468 | cipher-base "^1.0.1" 469 | inherits "^2.0.1" 470 | ripemd160 "^1.0.0" 471 | sha.js "^2.3.6" 472 | 473 | create-hmac@^1.1.0, create-hmac@^1.1.2: 474 | version "1.1.4" 475 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" 476 | dependencies: 477 | create-hash "^1.1.0" 478 | inherits "^2.0.1" 479 | 480 | cross-env@^4.0.0: 481 | version "4.0.0" 482 | resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-4.0.0.tgz#16083862d08275a4628b0b243b121bedaa55dd80" 483 | dependencies: 484 | cross-spawn "^5.1.0" 485 | is-windows "^1.0.0" 486 | 487 | cross-spawn@^5.1.0: 488 | version "5.1.0" 489 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 490 | dependencies: 491 | lru-cache "^4.0.1" 492 | shebang-command "^1.2.0" 493 | which "^1.2.9" 494 | 495 | cryptiles@2.x.x: 496 | version "2.0.5" 497 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 498 | dependencies: 499 | boom "2.x.x" 500 | 501 | crypto-browserify@^3.11.0: 502 | version "3.11.0" 503 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" 504 | dependencies: 505 | browserify-cipher "^1.0.0" 506 | browserify-sign "^4.0.0" 507 | create-ecdh "^4.0.0" 508 | create-hash "^1.1.0" 509 | create-hmac "^1.1.0" 510 | diffie-hellman "^5.0.0" 511 | inherits "^2.0.1" 512 | pbkdf2 "^3.0.3" 513 | public-encrypt "^4.0.0" 514 | randombytes "^2.0.0" 515 | 516 | dashdash@^1.12.0: 517 | version "1.14.1" 518 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 519 | dependencies: 520 | assert-plus "^1.0.0" 521 | 522 | date-now@^0.1.4: 523 | version "0.1.4" 524 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 525 | 526 | debug@2.6.1, debug@^2.2.0: 527 | version "2.6.1" 528 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" 529 | dependencies: 530 | ms "0.7.2" 531 | 532 | debug@2.6.3: 533 | version "2.6.3" 534 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" 535 | dependencies: 536 | ms "0.7.2" 537 | 538 | debug@~2.2.0: 539 | version "2.2.0" 540 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 541 | dependencies: 542 | ms "0.7.1" 543 | 544 | decamelize@^1.0.0, decamelize@^1.1.1: 545 | version "1.2.0" 546 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 547 | 548 | deep-extend@~0.4.0: 549 | version "0.4.1" 550 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" 551 | 552 | delayed-stream@~1.0.0: 553 | version "1.0.0" 554 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 555 | 556 | delegates@^1.0.0: 557 | version "1.0.0" 558 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 559 | 560 | depd@1.1.0, depd@~1.1.0: 561 | version "1.1.0" 562 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" 563 | 564 | des.js@^1.0.0: 565 | version "1.0.0" 566 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 567 | dependencies: 568 | inherits "^2.0.1" 569 | minimalistic-assert "^1.0.0" 570 | 571 | destroy@~1.0.4: 572 | version "1.0.4" 573 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 574 | 575 | diffie-hellman@^5.0.0: 576 | version "5.0.2" 577 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" 578 | dependencies: 579 | bn.js "^4.1.0" 580 | miller-rabin "^4.0.0" 581 | randombytes "^2.0.0" 582 | 583 | domain-browser@^1.1.1: 584 | version "1.1.7" 585 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" 586 | 587 | ecc-jsbn@~0.1.1: 588 | version "0.1.1" 589 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 590 | dependencies: 591 | jsbn "~0.1.0" 592 | 593 | ee-first@1.1.1: 594 | version "1.1.1" 595 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 596 | 597 | elliptic@^6.0.0: 598 | version "6.4.0" 599 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" 600 | dependencies: 601 | bn.js "^4.4.0" 602 | brorand "^1.0.1" 603 | hash.js "^1.0.0" 604 | hmac-drbg "^1.0.0" 605 | inherits "^2.0.1" 606 | minimalistic-assert "^1.0.0" 607 | minimalistic-crypto-utils "^1.0.0" 608 | 609 | emojis-list@^2.0.0: 610 | version "2.1.0" 611 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 612 | 613 | encodeurl@~1.0.1: 614 | version "1.0.1" 615 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" 616 | 617 | enhanced-resolve@^3.0.0: 618 | version "3.1.0" 619 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" 620 | dependencies: 621 | graceful-fs "^4.1.2" 622 | memory-fs "^0.4.0" 623 | object-assign "^4.0.1" 624 | tapable "^0.2.5" 625 | 626 | errno@^0.1.3: 627 | version "0.1.4" 628 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" 629 | dependencies: 630 | prr "~0.0.0" 631 | 632 | error-ex@^1.2.0: 633 | version "1.3.1" 634 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 635 | dependencies: 636 | is-arrayish "^0.2.1" 637 | 638 | escape-html@~1.0.3: 639 | version "1.0.3" 640 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 641 | 642 | etag@~1.8.0: 643 | version "1.8.0" 644 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" 645 | 646 | eventemitter3@1.x.x: 647 | version "1.2.0" 648 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" 649 | 650 | events@^1.0.0: 651 | version "1.1.1" 652 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 653 | 654 | eventsource@0.1.6: 655 | version "0.1.6" 656 | resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" 657 | dependencies: 658 | original ">=0.0.5" 659 | 660 | evp_bytestokey@^1.0.0: 661 | version "1.0.0" 662 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" 663 | dependencies: 664 | create-hash "^1.1.1" 665 | 666 | expand-brackets@^0.1.4: 667 | version "0.1.5" 668 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 669 | dependencies: 670 | is-posix-bracket "^0.1.0" 671 | 672 | expand-range@^1.8.1: 673 | version "1.8.2" 674 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 675 | dependencies: 676 | fill-range "^2.1.0" 677 | 678 | express@^4.13.3: 679 | version "4.15.2" 680 | resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35" 681 | dependencies: 682 | accepts "~1.3.3" 683 | array-flatten "1.1.1" 684 | content-disposition "0.5.2" 685 | content-type "~1.0.2" 686 | cookie "0.3.1" 687 | cookie-signature "1.0.6" 688 | debug "2.6.1" 689 | depd "~1.1.0" 690 | encodeurl "~1.0.1" 691 | escape-html "~1.0.3" 692 | etag "~1.8.0" 693 | finalhandler "~1.0.0" 694 | fresh "0.5.0" 695 | merge-descriptors "1.0.1" 696 | methods "~1.1.2" 697 | on-finished "~2.3.0" 698 | parseurl "~1.3.1" 699 | path-to-regexp "0.1.7" 700 | proxy-addr "~1.1.3" 701 | qs "6.4.0" 702 | range-parser "~1.2.0" 703 | send "0.15.1" 704 | serve-static "1.12.1" 705 | setprototypeof "1.0.3" 706 | statuses "~1.3.1" 707 | type-is "~1.6.14" 708 | utils-merge "1.0.0" 709 | vary "~1.1.0" 710 | 711 | extend@~3.0.0: 712 | version "3.0.0" 713 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 714 | 715 | extglob@^0.3.1: 716 | version "0.3.2" 717 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 718 | dependencies: 719 | is-extglob "^1.0.0" 720 | 721 | extsprintf@1.0.2: 722 | version "1.0.2" 723 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 724 | 725 | faye-websocket@^0.10.0: 726 | version "0.10.0" 727 | resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" 728 | dependencies: 729 | websocket-driver ">=0.5.1" 730 | 731 | faye-websocket@~0.11.0: 732 | version "0.11.1" 733 | resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" 734 | dependencies: 735 | websocket-driver ">=0.5.1" 736 | 737 | filename-regex@^2.0.0: 738 | version "2.0.0" 739 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 740 | 741 | fill-range@^2.1.0: 742 | version "2.2.3" 743 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 744 | dependencies: 745 | is-number "^2.1.0" 746 | isobject "^2.0.0" 747 | randomatic "^1.1.3" 748 | repeat-element "^1.1.2" 749 | repeat-string "^1.5.2" 750 | 751 | finalhandler@~1.0.0: 752 | version "1.0.1" 753 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8" 754 | dependencies: 755 | debug "2.6.3" 756 | encodeurl "~1.0.1" 757 | escape-html "~1.0.3" 758 | on-finished "~2.3.0" 759 | parseurl "~1.3.1" 760 | statuses "~1.3.1" 761 | unpipe "~1.0.0" 762 | 763 | find-up@^1.0.0: 764 | version "1.1.2" 765 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 766 | dependencies: 767 | path-exists "^2.0.0" 768 | pinkie-promise "^2.0.0" 769 | 770 | for-in@^1.0.1: 771 | version "1.0.2" 772 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 773 | 774 | for-own@^0.1.4: 775 | version "0.1.5" 776 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 777 | dependencies: 778 | for-in "^1.0.1" 779 | 780 | forever-agent@~0.6.1: 781 | version "0.6.1" 782 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 783 | 784 | form-data@~2.1.1: 785 | version "2.1.2" 786 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 787 | dependencies: 788 | asynckit "^0.4.0" 789 | combined-stream "^1.0.5" 790 | mime-types "^2.1.12" 791 | 792 | forwarded@~0.1.0: 793 | version "0.1.0" 794 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" 795 | 796 | fresh@0.5.0: 797 | version "0.5.0" 798 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" 799 | 800 | fs-extra@^0.26.4: 801 | version "0.26.7" 802 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" 803 | dependencies: 804 | graceful-fs "^4.1.2" 805 | jsonfile "^2.1.0" 806 | klaw "^1.0.0" 807 | path-is-absolute "^1.0.0" 808 | rimraf "^2.2.8" 809 | 810 | fs.realpath@^1.0.0: 811 | version "1.0.0" 812 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 813 | 814 | fsevents@^1.0.0: 815 | version "1.1.1" 816 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" 817 | dependencies: 818 | nan "^2.3.0" 819 | node-pre-gyp "^0.6.29" 820 | 821 | fstream-ignore@^1.0.5: 822 | version "1.0.5" 823 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 824 | dependencies: 825 | fstream "^1.0.0" 826 | inherits "2" 827 | minimatch "^3.0.0" 828 | 829 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: 830 | version "1.0.11" 831 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 832 | dependencies: 833 | graceful-fs "^4.1.2" 834 | inherits "~2.0.0" 835 | mkdirp ">=0.5 0" 836 | rimraf "2" 837 | 838 | gauge@~2.7.1: 839 | version "2.7.3" 840 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" 841 | dependencies: 842 | aproba "^1.0.3" 843 | console-control-strings "^1.0.0" 844 | has-unicode "^2.0.0" 845 | object-assign "^4.1.0" 846 | signal-exit "^3.0.0" 847 | string-width "^1.0.1" 848 | strip-ansi "^3.0.1" 849 | wide-align "^1.1.0" 850 | 851 | get-caller-file@^1.0.1: 852 | version "1.0.2" 853 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 854 | 855 | getpass@^0.1.1: 856 | version "0.1.6" 857 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" 858 | dependencies: 859 | assert-plus "^1.0.0" 860 | 861 | gh-pages@^0.12.0: 862 | version "0.12.0" 863 | resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-0.12.0.tgz#d951e3ed98b85699d4b0418eb1a15b1a04988dc1" 864 | dependencies: 865 | async "2.1.2" 866 | commander "2.9.0" 867 | globby "^6.1.0" 868 | graceful-fs "4.1.10" 869 | q "1.4.1" 870 | q-io "1.13.2" 871 | rimraf "^2.5.4" 872 | 873 | glob-base@^0.3.0: 874 | version "0.3.0" 875 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 876 | dependencies: 877 | glob-parent "^2.0.0" 878 | is-glob "^2.0.0" 879 | 880 | glob-parent@^2.0.0: 881 | version "2.0.0" 882 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 883 | dependencies: 884 | is-glob "^2.0.0" 885 | 886 | glob@^6.0.4: 887 | version "6.0.4" 888 | resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" 889 | dependencies: 890 | inflight "^1.0.4" 891 | inherits "2" 892 | minimatch "2 || 3" 893 | once "^1.3.0" 894 | path-is-absolute "^1.0.0" 895 | 896 | glob@^7.0.3, glob@^7.0.5: 897 | version "7.1.1" 898 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 899 | dependencies: 900 | fs.realpath "^1.0.0" 901 | inflight "^1.0.4" 902 | inherits "2" 903 | minimatch "^3.0.2" 904 | once "^1.3.0" 905 | path-is-absolute "^1.0.0" 906 | 907 | globby@^6.1.0: 908 | version "6.1.0" 909 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 910 | dependencies: 911 | array-union "^1.0.1" 912 | glob "^7.0.3" 913 | object-assign "^4.0.1" 914 | pify "^2.0.0" 915 | pinkie-promise "^2.0.0" 916 | 917 | graceful-fs@4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: 918 | version "4.1.10" 919 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.10.tgz#f2d720c22092f743228775c75e3612632501f131" 920 | 921 | "graceful-readlink@>= 1.0.0": 922 | version "1.0.1" 923 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 924 | 925 | handle-thing@^1.2.4: 926 | version "1.2.5" 927 | resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" 928 | 929 | har-schema@^1.0.5: 930 | version "1.0.5" 931 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 932 | 933 | har-validator@~4.2.1: 934 | version "4.2.1" 935 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 936 | dependencies: 937 | ajv "^4.9.1" 938 | har-schema "^1.0.5" 939 | 940 | has-flag@^1.0.0: 941 | version "1.0.0" 942 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 943 | 944 | has-unicode@^2.0.0: 945 | version "2.0.1" 946 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 947 | 948 | hash.js@^1.0.0, hash.js@^1.0.3: 949 | version "1.0.3" 950 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" 951 | dependencies: 952 | inherits "^2.0.1" 953 | 954 | hawk@~3.1.3: 955 | version "3.1.3" 956 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 957 | dependencies: 958 | boom "2.x.x" 959 | cryptiles "2.x.x" 960 | hoek "2.x.x" 961 | sntp "1.x.x" 962 | 963 | hmac-drbg@^1.0.0: 964 | version "1.0.0" 965 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5" 966 | dependencies: 967 | hash.js "^1.0.3" 968 | minimalistic-assert "^1.0.0" 969 | minimalistic-crypto-utils "^1.0.1" 970 | 971 | hoek@2.x.x: 972 | version "2.16.3" 973 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 974 | 975 | hosted-git-info@^2.1.4: 976 | version "2.4.1" 977 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.1.tgz#4b0445e41c004a8bd1337773a4ff790ca40318c8" 978 | 979 | hpack.js@^2.1.6: 980 | version "2.1.6" 981 | resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" 982 | dependencies: 983 | inherits "^2.0.1" 984 | obuf "^1.0.0" 985 | readable-stream "^2.0.1" 986 | wbuf "^1.1.0" 987 | 988 | html-entities@^1.2.0: 989 | version "1.2.0" 990 | resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2" 991 | 992 | http-deceiver@^1.2.4: 993 | version "1.2.7" 994 | resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" 995 | 996 | http-errors@~1.5.0: 997 | version "1.5.1" 998 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" 999 | dependencies: 1000 | inherits "2.0.3" 1001 | setprototypeof "1.0.2" 1002 | statuses ">= 1.3.1 < 2" 1003 | 1004 | http-errors@~1.6.1: 1005 | version "1.6.1" 1006 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" 1007 | dependencies: 1008 | depd "1.1.0" 1009 | inherits "2.0.3" 1010 | setprototypeof "1.0.3" 1011 | statuses ">= 1.3.1 < 2" 1012 | 1013 | http-proxy-middleware@~0.17.4: 1014 | version "0.17.4" 1015 | resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" 1016 | dependencies: 1017 | http-proxy "^1.16.2" 1018 | is-glob "^3.1.0" 1019 | lodash "^4.17.2" 1020 | micromatch "^2.3.11" 1021 | 1022 | http-proxy@^1.16.2: 1023 | version "1.16.2" 1024 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" 1025 | dependencies: 1026 | eventemitter3 "1.x.x" 1027 | requires-port "1.x.x" 1028 | 1029 | http-signature@~1.1.0: 1030 | version "1.1.1" 1031 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1032 | dependencies: 1033 | assert-plus "^0.2.0" 1034 | jsprim "^1.2.2" 1035 | sshpk "^1.7.0" 1036 | 1037 | https-browserify@0.0.1: 1038 | version "0.0.1" 1039 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" 1040 | 1041 | ieee754@^1.1.4: 1042 | version "1.1.8" 1043 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 1044 | 1045 | indexof@0.0.1: 1046 | version "0.0.1" 1047 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 1048 | 1049 | inflight@^1.0.4: 1050 | version "1.0.6" 1051 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1052 | dependencies: 1053 | once "^1.3.0" 1054 | wrappy "1" 1055 | 1056 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: 1057 | version "2.0.3" 1058 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1059 | 1060 | inherits@2.0.1: 1061 | version "2.0.1" 1062 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1063 | 1064 | ini@~1.3.0: 1065 | version "1.3.4" 1066 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 1067 | 1068 | interpret@^1.0.0: 1069 | version "1.0.2" 1070 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.2.tgz#f4f623f0bb7122f15f5717c8e254b8161b5c5b2d" 1071 | 1072 | invert-kv@^1.0.0: 1073 | version "1.0.0" 1074 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1075 | 1076 | ipaddr.js@1.3.0: 1077 | version "1.3.0" 1078 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" 1079 | 1080 | is-arrayish@^0.2.1: 1081 | version "0.2.1" 1082 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1083 | 1084 | is-binary-path@^1.0.0: 1085 | version "1.0.1" 1086 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1087 | dependencies: 1088 | binary-extensions "^1.0.0" 1089 | 1090 | is-buffer@^1.0.2: 1091 | version "1.1.5" 1092 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 1093 | 1094 | is-builtin-module@^1.0.0: 1095 | version "1.0.0" 1096 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1097 | dependencies: 1098 | builtin-modules "^1.0.0" 1099 | 1100 | is-dotfile@^1.0.0: 1101 | version "1.0.2" 1102 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 1103 | 1104 | is-equal-shallow@^0.1.3: 1105 | version "0.1.3" 1106 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1107 | dependencies: 1108 | is-primitive "^2.0.0" 1109 | 1110 | is-extendable@^0.1.1: 1111 | version "0.1.1" 1112 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1113 | 1114 | is-extglob@^1.0.0: 1115 | version "1.0.0" 1116 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1117 | 1118 | is-extglob@^2.1.0: 1119 | version "2.1.1" 1120 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1121 | 1122 | is-fullwidth-code-point@^1.0.0: 1123 | version "1.0.0" 1124 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1125 | dependencies: 1126 | number-is-nan "^1.0.0" 1127 | 1128 | is-glob@^2.0.0, is-glob@^2.0.1: 1129 | version "2.0.1" 1130 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1131 | dependencies: 1132 | is-extglob "^1.0.0" 1133 | 1134 | is-glob@^3.1.0: 1135 | version "3.1.0" 1136 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 1137 | dependencies: 1138 | is-extglob "^2.1.0" 1139 | 1140 | is-number@^2.0.2, is-number@^2.1.0: 1141 | version "2.1.0" 1142 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1143 | dependencies: 1144 | kind-of "^3.0.2" 1145 | 1146 | is-posix-bracket@^0.1.0: 1147 | version "0.1.1" 1148 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1149 | 1150 | is-primitive@^2.0.0: 1151 | version "2.0.0" 1152 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1153 | 1154 | is-typedarray@~1.0.0: 1155 | version "1.0.0" 1156 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1157 | 1158 | is-utf8@^0.2.0: 1159 | version "0.2.1" 1160 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1161 | 1162 | is-windows@^1.0.0: 1163 | version "1.0.0" 1164 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.0.tgz#c61d61020c3ebe99261b781bd3d1622395f547f8" 1165 | 1166 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1167 | version "1.0.0" 1168 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1169 | 1170 | isexe@^2.0.0: 1171 | version "2.0.0" 1172 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1173 | 1174 | isobject@^2.0.0: 1175 | version "2.1.0" 1176 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1177 | dependencies: 1178 | isarray "1.0.0" 1179 | 1180 | isstream@~0.1.2: 1181 | version "0.1.2" 1182 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1183 | 1184 | jodid25519@^1.0.0: 1185 | version "1.0.2" 1186 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 1187 | dependencies: 1188 | jsbn "~0.1.0" 1189 | 1190 | jsbn@~0.1.0: 1191 | version "0.1.1" 1192 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1193 | 1194 | json-loader@^0.5.4: 1195 | version "0.5.4" 1196 | resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" 1197 | 1198 | json-schema@0.2.3: 1199 | version "0.2.3" 1200 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1201 | 1202 | json-stable-stringify@^1.0.1: 1203 | version "1.0.1" 1204 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1205 | dependencies: 1206 | jsonify "~0.0.0" 1207 | 1208 | json-stringify-safe@~5.0.1: 1209 | version "5.0.1" 1210 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1211 | 1212 | json3@^3.3.2: 1213 | version "3.3.2" 1214 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 1215 | 1216 | json5@^0.5.0: 1217 | version "0.5.1" 1218 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1219 | 1220 | jsonfile@^2.1.0: 1221 | version "2.4.0" 1222 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" 1223 | optionalDependencies: 1224 | graceful-fs "^4.1.6" 1225 | 1226 | jsonify@~0.0.0: 1227 | version "0.0.0" 1228 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1229 | 1230 | jsprim@^1.2.2: 1231 | version "1.4.0" 1232 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" 1233 | dependencies: 1234 | assert-plus "1.0.0" 1235 | extsprintf "1.0.2" 1236 | json-schema "0.2.3" 1237 | verror "1.3.6" 1238 | 1239 | kind-of@^3.0.2: 1240 | version "3.1.0" 1241 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 1242 | dependencies: 1243 | is-buffer "^1.0.2" 1244 | 1245 | klaw@^1.0.0: 1246 | version "1.3.1" 1247 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" 1248 | optionalDependencies: 1249 | graceful-fs "^4.1.9" 1250 | 1251 | lazy-cache@^1.0.3: 1252 | version "1.0.4" 1253 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 1254 | 1255 | lcid@^1.0.0: 1256 | version "1.0.0" 1257 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 1258 | dependencies: 1259 | invert-kv "^1.0.0" 1260 | 1261 | load-json-file@^1.0.0: 1262 | version "1.1.0" 1263 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 1264 | dependencies: 1265 | graceful-fs "^4.1.2" 1266 | parse-json "^2.2.0" 1267 | pify "^2.0.0" 1268 | pinkie-promise "^2.0.0" 1269 | strip-bom "^2.0.0" 1270 | 1271 | loader-runner@^2.3.0: 1272 | version "2.3.0" 1273 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" 1274 | 1275 | loader-utils@^0.2.15, loader-utils@^0.2.16: 1276 | version "0.2.17" 1277 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" 1278 | dependencies: 1279 | big.js "^3.1.3" 1280 | emojis-list "^2.0.0" 1281 | json5 "^0.5.0" 1282 | object-assign "^4.0.1" 1283 | 1284 | loader-utils@^1.0.2: 1285 | version "1.1.0" 1286 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" 1287 | dependencies: 1288 | big.js "^3.1.3" 1289 | emojis-list "^2.0.0" 1290 | json5 "^0.5.0" 1291 | 1292 | lodash@^4.14.0, lodash@^4.17.2, lodash@^4.3.0: 1293 | version "4.17.4" 1294 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1295 | 1296 | longest@^1.0.1: 1297 | version "1.0.1" 1298 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 1299 | 1300 | lru-cache@^4.0.1: 1301 | version "4.0.2" 1302 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" 1303 | dependencies: 1304 | pseudomap "^1.0.1" 1305 | yallist "^2.0.0" 1306 | 1307 | media-typer@0.3.0: 1308 | version "0.3.0" 1309 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1310 | 1311 | memory-fs@^0.4.0, memory-fs@~0.4.1: 1312 | version "0.4.1" 1313 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" 1314 | dependencies: 1315 | errno "^0.1.3" 1316 | readable-stream "^2.0.1" 1317 | 1318 | merge-descriptors@1.0.1: 1319 | version "1.0.1" 1320 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1321 | 1322 | methods@~1.1.2: 1323 | version "1.1.2" 1324 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1325 | 1326 | micromatch@^2.1.5, micromatch@^2.3.11: 1327 | version "2.3.11" 1328 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1329 | dependencies: 1330 | arr-diff "^2.0.0" 1331 | array-unique "^0.2.1" 1332 | braces "^1.8.2" 1333 | expand-brackets "^0.1.4" 1334 | extglob "^0.3.1" 1335 | filename-regex "^2.0.0" 1336 | is-extglob "^1.0.0" 1337 | is-glob "^2.0.1" 1338 | kind-of "^3.0.2" 1339 | normalize-path "^2.0.1" 1340 | object.omit "^2.0.0" 1341 | parse-glob "^3.0.4" 1342 | regex-cache "^0.4.2" 1343 | 1344 | miller-rabin@^4.0.0: 1345 | version "4.0.0" 1346 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" 1347 | dependencies: 1348 | bn.js "^4.0.0" 1349 | brorand "^1.0.1" 1350 | 1351 | "mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: 1352 | version "1.27.0" 1353 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" 1354 | 1355 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: 1356 | version "2.1.15" 1357 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" 1358 | dependencies: 1359 | mime-db "~1.27.0" 1360 | 1361 | mime@1.3.4, mime@^1.2.11, mime@^1.3.4: 1362 | version "1.3.4" 1363 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 1364 | 1365 | mimeparse@^0.1.4: 1366 | version "0.1.4" 1367 | resolved "https://registry.yarnpkg.com/mimeparse/-/mimeparse-0.1.4.tgz#dafb02752370fd226093ae3152c271af01ac254a" 1368 | 1369 | minimalistic-assert@^1.0.0: 1370 | version "1.0.0" 1371 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" 1372 | 1373 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 1374 | version "1.0.1" 1375 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 1376 | 1377 | "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2: 1378 | version "3.0.3" 1379 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 1380 | dependencies: 1381 | brace-expansion "^1.0.0" 1382 | 1383 | minimist@0.0.8: 1384 | version "0.0.8" 1385 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1386 | 1387 | minimist@^1.2.0: 1388 | version "1.2.0" 1389 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1390 | 1391 | mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0: 1392 | version "0.5.1" 1393 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1394 | dependencies: 1395 | minimist "0.0.8" 1396 | 1397 | ms@0.7.1: 1398 | version "0.7.1" 1399 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 1400 | 1401 | ms@0.7.2: 1402 | version "0.7.2" 1403 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 1404 | 1405 | nan@^2.3.0: 1406 | version "2.6.1" 1407 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.1.tgz#8c84f7b14c96b89f57fbc838012180ec8ca39a01" 1408 | 1409 | negotiator@0.6.1: 1410 | version "0.6.1" 1411 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 1412 | 1413 | node-dir@^0.1.10: 1414 | version "0.1.16" 1415 | resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4" 1416 | dependencies: 1417 | minimatch "^3.0.2" 1418 | 1419 | node-libs-browser@^2.0.0: 1420 | version "2.0.0" 1421 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" 1422 | dependencies: 1423 | assert "^1.1.1" 1424 | browserify-zlib "^0.1.4" 1425 | buffer "^4.3.0" 1426 | console-browserify "^1.1.0" 1427 | constants-browserify "^1.0.0" 1428 | crypto-browserify "^3.11.0" 1429 | domain-browser "^1.1.1" 1430 | events "^1.0.0" 1431 | https-browserify "0.0.1" 1432 | os-browserify "^0.2.0" 1433 | path-browserify "0.0.0" 1434 | process "^0.11.0" 1435 | punycode "^1.2.4" 1436 | querystring-es3 "^0.2.0" 1437 | readable-stream "^2.0.5" 1438 | stream-browserify "^2.0.1" 1439 | stream-http "^2.3.1" 1440 | string_decoder "^0.10.25" 1441 | timers-browserify "^2.0.2" 1442 | tty-browserify "0.0.0" 1443 | url "^0.11.0" 1444 | util "^0.10.3" 1445 | vm-browserify "0.0.4" 1446 | 1447 | node-pre-gyp@^0.6.29: 1448 | version "0.6.34" 1449 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" 1450 | dependencies: 1451 | mkdirp "^0.5.1" 1452 | nopt "^4.0.1" 1453 | npmlog "^4.0.2" 1454 | rc "^1.1.7" 1455 | request "^2.81.0" 1456 | rimraf "^2.6.1" 1457 | semver "^5.3.0" 1458 | tar "^2.2.1" 1459 | tar-pack "^3.4.0" 1460 | 1461 | nopt@^4.0.1: 1462 | version "4.0.1" 1463 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1464 | dependencies: 1465 | abbrev "1" 1466 | osenv "^0.1.4" 1467 | 1468 | normalize-package-data@^2.3.2: 1469 | version "2.3.6" 1470 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" 1471 | dependencies: 1472 | hosted-git-info "^2.1.4" 1473 | is-builtin-module "^1.0.0" 1474 | semver "2 || 3 || 4 || 5" 1475 | validate-npm-package-license "^3.0.1" 1476 | 1477 | normalize-path@^2.0.1: 1478 | version "2.1.1" 1479 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1480 | dependencies: 1481 | remove-trailing-separator "^1.0.1" 1482 | 1483 | npmlog@^4.0.2: 1484 | version "4.0.2" 1485 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" 1486 | dependencies: 1487 | are-we-there-yet "~1.1.2" 1488 | console-control-strings "~1.1.0" 1489 | gauge "~2.7.1" 1490 | set-blocking "~2.0.0" 1491 | 1492 | number-is-nan@^1.0.0: 1493 | version "1.0.1" 1494 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1495 | 1496 | oauth-sign@~0.8.1: 1497 | version "0.8.2" 1498 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1499 | 1500 | object-assign@^4.0.1, object-assign@^4.1.0: 1501 | version "4.1.1" 1502 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1503 | 1504 | object.omit@^2.0.0: 1505 | version "2.0.1" 1506 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1507 | dependencies: 1508 | for-own "^0.1.4" 1509 | is-extendable "^0.1.1" 1510 | 1511 | obuf@^1.0.0, obuf@^1.1.0: 1512 | version "1.1.1" 1513 | resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" 1514 | 1515 | on-finished@~2.3.0: 1516 | version "2.3.0" 1517 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1518 | dependencies: 1519 | ee-first "1.1.1" 1520 | 1521 | on-headers@~1.0.1: 1522 | version "1.0.1" 1523 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" 1524 | 1525 | once@^1.3.0, once@^1.3.3: 1526 | version "1.4.0" 1527 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1528 | dependencies: 1529 | wrappy "1" 1530 | 1531 | opn@4.0.2: 1532 | version "4.0.2" 1533 | resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" 1534 | dependencies: 1535 | object-assign "^4.0.1" 1536 | pinkie-promise "^2.0.0" 1537 | 1538 | original@>=0.0.5: 1539 | version "1.0.0" 1540 | resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" 1541 | dependencies: 1542 | url-parse "1.0.x" 1543 | 1544 | os-browserify@^0.2.0: 1545 | version "0.2.1" 1546 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" 1547 | 1548 | os-homedir@^1.0.0: 1549 | version "1.0.2" 1550 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1551 | 1552 | os-locale@^1.4.0: 1553 | version "1.4.0" 1554 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 1555 | dependencies: 1556 | lcid "^1.0.0" 1557 | 1558 | os-tmpdir@^1.0.0: 1559 | version "1.0.2" 1560 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1561 | 1562 | osenv@^0.1.4: 1563 | version "0.1.4" 1564 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 1565 | dependencies: 1566 | os-homedir "^1.0.0" 1567 | os-tmpdir "^1.0.0" 1568 | 1569 | pako@~0.2.0: 1570 | version "0.2.9" 1571 | resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" 1572 | 1573 | parse-asn1@^5.0.0: 1574 | version "5.1.0" 1575 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" 1576 | dependencies: 1577 | asn1.js "^4.0.0" 1578 | browserify-aes "^1.0.0" 1579 | create-hash "^1.1.0" 1580 | evp_bytestokey "^1.0.0" 1581 | pbkdf2 "^3.0.3" 1582 | 1583 | parse-glob@^3.0.4: 1584 | version "3.0.4" 1585 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1586 | dependencies: 1587 | glob-base "^0.3.0" 1588 | is-dotfile "^1.0.0" 1589 | is-extglob "^1.0.0" 1590 | is-glob "^2.0.0" 1591 | 1592 | parse-json@^2.2.0: 1593 | version "2.2.0" 1594 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1595 | dependencies: 1596 | error-ex "^1.2.0" 1597 | 1598 | parseurl@~1.3.1: 1599 | version "1.3.1" 1600 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" 1601 | 1602 | path-browserify@0.0.0: 1603 | version "0.0.0" 1604 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" 1605 | 1606 | path-exists@^2.0.0: 1607 | version "2.1.0" 1608 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1609 | dependencies: 1610 | pinkie-promise "^2.0.0" 1611 | 1612 | path-is-absolute@^1.0.0: 1613 | version "1.0.1" 1614 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1615 | 1616 | path-to-regexp@0.1.7: 1617 | version "0.1.7" 1618 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1619 | 1620 | path-type@^1.0.0: 1621 | version "1.1.0" 1622 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 1623 | dependencies: 1624 | graceful-fs "^4.1.2" 1625 | pify "^2.0.0" 1626 | pinkie-promise "^2.0.0" 1627 | 1628 | pbkdf2@^3.0.3: 1629 | version "3.0.9" 1630 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" 1631 | dependencies: 1632 | create-hmac "^1.1.2" 1633 | 1634 | performance-now@^0.2.0: 1635 | version "0.2.0" 1636 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 1637 | 1638 | pify@^2.0.0: 1639 | version "2.3.0" 1640 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1641 | 1642 | pinkie-promise@^2.0.0: 1643 | version "2.0.1" 1644 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1645 | dependencies: 1646 | pinkie "^2.0.0" 1647 | 1648 | pinkie@^2.0.0: 1649 | version "2.0.4" 1650 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1651 | 1652 | portfinder@^1.0.9: 1653 | version "1.0.13" 1654 | resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" 1655 | dependencies: 1656 | async "^1.5.2" 1657 | debug "^2.2.0" 1658 | mkdirp "0.5.x" 1659 | 1660 | preserve@^0.2.0: 1661 | version "0.2.0" 1662 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 1663 | 1664 | process-nextick-args@~1.0.6: 1665 | version "1.0.7" 1666 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1667 | 1668 | process@^0.11.0: 1669 | version "0.11.9" 1670 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" 1671 | 1672 | proxy-addr@~1.1.3: 1673 | version "1.1.4" 1674 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" 1675 | dependencies: 1676 | forwarded "~0.1.0" 1677 | ipaddr.js "1.3.0" 1678 | 1679 | prr@~0.0.0: 1680 | version "0.0.0" 1681 | resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" 1682 | 1683 | pseudomap@^1.0.1: 1684 | version "1.0.2" 1685 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1686 | 1687 | public-encrypt@^4.0.0: 1688 | version "4.0.0" 1689 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" 1690 | dependencies: 1691 | bn.js "^4.1.0" 1692 | browserify-rsa "^4.0.0" 1693 | create-hash "^1.1.0" 1694 | parse-asn1 "^5.0.0" 1695 | randombytes "^2.0.1" 1696 | 1697 | punycode@1.3.2: 1698 | version "1.3.2" 1699 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1700 | 1701 | punycode@^1.2.4, punycode@^1.4.1: 1702 | version "1.4.1" 1703 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1704 | 1705 | q-io@1.13.2: 1706 | version "1.13.2" 1707 | resolved "https://registry.yarnpkg.com/q-io/-/q-io-1.13.2.tgz#eea130d481ddb5e1aa1bc5a66855f7391d06f003" 1708 | dependencies: 1709 | collections "^0.2.0" 1710 | mime "^1.2.11" 1711 | mimeparse "^0.1.4" 1712 | q "^1.0.1" 1713 | qs "^1.2.1" 1714 | url2 "^0.0.0" 1715 | 1716 | q@1.4.1, q@^1.0.1: 1717 | version "1.4.1" 1718 | resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" 1719 | 1720 | qs@6.4.0, qs@~6.4.0: 1721 | version "6.4.0" 1722 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 1723 | 1724 | qs@^1.2.1: 1725 | version "1.2.2" 1726 | resolved "https://registry.yarnpkg.com/qs/-/qs-1.2.2.tgz#19b57ff24dc2a99ce1f8bdf6afcda59f8ef61f88" 1727 | 1728 | querystring-es3@^0.2.0: 1729 | version "0.2.1" 1730 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 1731 | 1732 | querystring@0.2.0: 1733 | version "0.2.0" 1734 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1735 | 1736 | querystringify@0.0.x: 1737 | version "0.0.4" 1738 | resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" 1739 | 1740 | randomatic@^1.1.3: 1741 | version "1.1.6" 1742 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 1743 | dependencies: 1744 | is-number "^2.0.2" 1745 | kind-of "^3.0.2" 1746 | 1747 | randombytes@^2.0.0, randombytes@^2.0.1: 1748 | version "2.0.3" 1749 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" 1750 | 1751 | range-parser@^1.0.3, range-parser@~1.2.0: 1752 | version "1.2.0" 1753 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 1754 | 1755 | rc@^1.1.7: 1756 | version "1.2.1" 1757 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" 1758 | dependencies: 1759 | deep-extend "~0.4.0" 1760 | ini "~1.3.0" 1761 | minimist "^1.2.0" 1762 | strip-json-comments "~2.0.1" 1763 | 1764 | read-pkg-up@^1.0.1: 1765 | version "1.0.1" 1766 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 1767 | dependencies: 1768 | find-up "^1.0.0" 1769 | read-pkg "^1.0.0" 1770 | 1771 | read-pkg@^1.0.0: 1772 | version "1.1.0" 1773 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 1774 | dependencies: 1775 | load-json-file "^1.0.0" 1776 | normalize-package-data "^2.3.2" 1777 | path-type "^1.0.0" 1778 | 1779 | "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.2.6: 1780 | version "2.2.9" 1781 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" 1782 | dependencies: 1783 | buffer-shims "~1.0.0" 1784 | core-util-is "~1.0.0" 1785 | inherits "~2.0.1" 1786 | isarray "~1.0.0" 1787 | process-nextick-args "~1.0.6" 1788 | string_decoder "~1.0.0" 1789 | util-deprecate "~1.0.1" 1790 | 1791 | readdirp@^2.0.0: 1792 | version "2.1.0" 1793 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 1794 | dependencies: 1795 | graceful-fs "^4.1.2" 1796 | minimatch "^3.0.2" 1797 | readable-stream "^2.0.2" 1798 | set-immediate-shim "^1.0.1" 1799 | 1800 | regex-cache@^0.4.2: 1801 | version "0.4.3" 1802 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 1803 | dependencies: 1804 | is-equal-shallow "^0.1.3" 1805 | is-primitive "^2.0.0" 1806 | 1807 | remove-trailing-separator@^1.0.1: 1808 | version "1.0.1" 1809 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" 1810 | 1811 | repeat-element@^1.1.2: 1812 | version "1.1.2" 1813 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 1814 | 1815 | repeat-string@^1.5.2: 1816 | version "1.6.1" 1817 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1818 | 1819 | request@^2.81.0: 1820 | version "2.81.0" 1821 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 1822 | dependencies: 1823 | aws-sign2 "~0.6.0" 1824 | aws4 "^1.2.1" 1825 | caseless "~0.12.0" 1826 | combined-stream "~1.0.5" 1827 | extend "~3.0.0" 1828 | forever-agent "~0.6.1" 1829 | form-data "~2.1.1" 1830 | har-validator "~4.2.1" 1831 | hawk "~3.1.3" 1832 | http-signature "~1.1.0" 1833 | is-typedarray "~1.0.0" 1834 | isstream "~0.1.2" 1835 | json-stringify-safe "~5.0.1" 1836 | mime-types "~2.1.7" 1837 | oauth-sign "~0.8.1" 1838 | performance-now "^0.2.0" 1839 | qs "~6.4.0" 1840 | safe-buffer "^5.0.1" 1841 | stringstream "~0.0.4" 1842 | tough-cookie "~2.3.0" 1843 | tunnel-agent "^0.6.0" 1844 | uuid "^3.0.0" 1845 | 1846 | require-directory@^2.1.1: 1847 | version "2.1.1" 1848 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1849 | 1850 | require-main-filename@^1.0.1: 1851 | version "1.0.1" 1852 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 1853 | 1854 | requires-port@1.0.x, requires-port@1.x.x: 1855 | version "1.0.0" 1856 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1857 | 1858 | right-align@^0.1.1: 1859 | version "0.1.3" 1860 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 1861 | dependencies: 1862 | align-text "^0.1.1" 1863 | 1864 | rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: 1865 | version "2.6.1" 1866 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 1867 | dependencies: 1868 | glob "^7.0.5" 1869 | 1870 | ripemd160@^1.0.0: 1871 | version "1.0.1" 1872 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" 1873 | 1874 | safe-buffer@^5.0.1: 1875 | version "5.0.1" 1876 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" 1877 | 1878 | select-hose@^2.0.0: 1879 | version "2.0.0" 1880 | resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" 1881 | 1882 | "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0: 1883 | version "5.3.0" 1884 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 1885 | 1886 | send@0.15.1: 1887 | version "0.15.1" 1888 | resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" 1889 | dependencies: 1890 | debug "2.6.1" 1891 | depd "~1.1.0" 1892 | destroy "~1.0.4" 1893 | encodeurl "~1.0.1" 1894 | escape-html "~1.0.3" 1895 | etag "~1.8.0" 1896 | fresh "0.5.0" 1897 | http-errors "~1.6.1" 1898 | mime "1.3.4" 1899 | ms "0.7.2" 1900 | on-finished "~2.3.0" 1901 | range-parser "~1.2.0" 1902 | statuses "~1.3.1" 1903 | 1904 | serve-index@^1.7.2: 1905 | version "1.8.0" 1906 | resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" 1907 | dependencies: 1908 | accepts "~1.3.3" 1909 | batch "0.5.3" 1910 | debug "~2.2.0" 1911 | escape-html "~1.0.3" 1912 | http-errors "~1.5.0" 1913 | mime-types "~2.1.11" 1914 | parseurl "~1.3.1" 1915 | 1916 | serve-static@1.12.1: 1917 | version "1.12.1" 1918 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" 1919 | dependencies: 1920 | encodeurl "~1.0.1" 1921 | escape-html "~1.0.3" 1922 | parseurl "~1.3.1" 1923 | send "0.15.1" 1924 | 1925 | set-blocking@^2.0.0, set-blocking@~2.0.0: 1926 | version "2.0.0" 1927 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1928 | 1929 | set-immediate-shim@^1.0.1: 1930 | version "1.0.1" 1931 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 1932 | 1933 | setimmediate@^1.0.4: 1934 | version "1.0.5" 1935 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1936 | 1937 | setprototypeof@1.0.2: 1938 | version "1.0.2" 1939 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" 1940 | 1941 | setprototypeof@1.0.3: 1942 | version "1.0.3" 1943 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" 1944 | 1945 | sha.js@^2.3.6: 1946 | version "2.4.8" 1947 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" 1948 | dependencies: 1949 | inherits "^2.0.1" 1950 | 1951 | shebang-command@^1.2.0: 1952 | version "1.2.0" 1953 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1954 | dependencies: 1955 | shebang-regex "^1.0.0" 1956 | 1957 | shebang-regex@^1.0.0: 1958 | version "1.0.0" 1959 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1960 | 1961 | signal-exit@^3.0.0: 1962 | version "3.0.2" 1963 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1964 | 1965 | sinergia@^0.0.2: 1966 | version "0.0.2" 1967 | resolved "https://registry.yarnpkg.com/sinergia/-/sinergia-0.0.2.tgz#f4c9bfdea731ffe90ee522804d33226f91c54852" 1968 | 1969 | sntp@1.x.x: 1970 | version "1.0.9" 1971 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 1972 | dependencies: 1973 | hoek "2.x.x" 1974 | 1975 | sockjs-client@1.1.2: 1976 | version "1.1.2" 1977 | resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.2.tgz#f0212a8550e4c9468c8cceaeefd2e3493c033ad5" 1978 | dependencies: 1979 | debug "^2.2.0" 1980 | eventsource "0.1.6" 1981 | faye-websocket "~0.11.0" 1982 | inherits "^2.0.1" 1983 | json3 "^3.3.2" 1984 | url-parse "^1.1.1" 1985 | 1986 | sockjs@0.3.18: 1987 | version "0.3.18" 1988 | resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" 1989 | dependencies: 1990 | faye-websocket "^0.10.0" 1991 | uuid "^2.0.2" 1992 | 1993 | source-list-map@^1.1.1: 1994 | version "1.1.1" 1995 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.1.tgz#1a33ac210ca144d1e561f906ebccab5669ff4cb4" 1996 | 1997 | source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: 1998 | version "0.5.6" 1999 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 2000 | 2001 | spdx-correct@~1.0.0: 2002 | version "1.0.2" 2003 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 2004 | dependencies: 2005 | spdx-license-ids "^1.0.2" 2006 | 2007 | spdx-expression-parse@~1.0.0: 2008 | version "1.0.4" 2009 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 2010 | 2011 | spdx-license-ids@^1.0.2: 2012 | version "1.2.2" 2013 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 2014 | 2015 | spdy-transport@^2.0.15: 2016 | version "2.0.18" 2017 | resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6" 2018 | dependencies: 2019 | debug "^2.2.0" 2020 | hpack.js "^2.1.6" 2021 | obuf "^1.1.0" 2022 | readable-stream "^2.0.1" 2023 | wbuf "^1.4.0" 2024 | 2025 | spdy@^3.4.1: 2026 | version "3.4.4" 2027 | resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819" 2028 | dependencies: 2029 | debug "^2.2.0" 2030 | handle-thing "^1.2.4" 2031 | http-deceiver "^1.2.4" 2032 | select-hose "^2.0.0" 2033 | spdy-transport "^2.0.15" 2034 | 2035 | sshpk@^1.7.0: 2036 | version "1.11.0" 2037 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77" 2038 | dependencies: 2039 | asn1 "~0.2.3" 2040 | assert-plus "^1.0.0" 2041 | dashdash "^1.12.0" 2042 | getpass "^0.1.1" 2043 | optionalDependencies: 2044 | bcrypt-pbkdf "^1.0.0" 2045 | ecc-jsbn "~0.1.1" 2046 | jodid25519 "^1.0.0" 2047 | jsbn "~0.1.0" 2048 | tweetnacl "~0.14.0" 2049 | 2050 | "statuses@>= 1.3.1 < 2", statuses@~1.3.1: 2051 | version "1.3.1" 2052 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" 2053 | 2054 | stream-browserify@^2.0.1: 2055 | version "2.0.1" 2056 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 2057 | dependencies: 2058 | inherits "~2.0.1" 2059 | readable-stream "^2.0.2" 2060 | 2061 | stream-http@^2.3.1: 2062 | version "2.7.0" 2063 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.0.tgz#cec1f4e3b494bc4a81b451808970f8b20b4ed5f6" 2064 | dependencies: 2065 | builtin-status-codes "^3.0.0" 2066 | inherits "^2.0.1" 2067 | readable-stream "^2.2.6" 2068 | to-arraybuffer "^1.0.0" 2069 | xtend "^4.0.0" 2070 | 2071 | string-width@^1.0.1, string-width@^1.0.2: 2072 | version "1.0.2" 2073 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2074 | dependencies: 2075 | code-point-at "^1.0.0" 2076 | is-fullwidth-code-point "^1.0.0" 2077 | strip-ansi "^3.0.0" 2078 | 2079 | string_decoder@^0.10.25: 2080 | version "0.10.31" 2081 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2082 | 2083 | string_decoder@~1.0.0: 2084 | version "1.0.0" 2085 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" 2086 | dependencies: 2087 | buffer-shims "~1.0.0" 2088 | 2089 | stringstream@~0.0.4: 2090 | version "0.0.5" 2091 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2092 | 2093 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2094 | version "3.0.1" 2095 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2096 | dependencies: 2097 | ansi-regex "^2.0.0" 2098 | 2099 | strip-bom@^2.0.0: 2100 | version "2.0.0" 2101 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 2102 | dependencies: 2103 | is-utf8 "^0.2.0" 2104 | 2105 | strip-json-comments@~2.0.1: 2106 | version "2.0.1" 2107 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2108 | 2109 | supports-color@^3.1.0, supports-color@^3.1.1: 2110 | version "3.2.3" 2111 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 2112 | dependencies: 2113 | has-flag "^1.0.0" 2114 | 2115 | tapable@^0.2.5, tapable@~0.2.5: 2116 | version "0.2.6" 2117 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" 2118 | 2119 | tar-pack@^3.4.0: 2120 | version "3.4.0" 2121 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" 2122 | dependencies: 2123 | debug "^2.2.0" 2124 | fstream "^1.0.10" 2125 | fstream-ignore "^1.0.5" 2126 | once "^1.3.3" 2127 | readable-stream "^2.1.4" 2128 | rimraf "^2.5.1" 2129 | tar "^2.2.1" 2130 | uid-number "^0.0.6" 2131 | 2132 | tar@^2.2.1: 2133 | version "2.2.1" 2134 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 2135 | dependencies: 2136 | block-stream "*" 2137 | fstream "^1.0.2" 2138 | inherits "2" 2139 | 2140 | timers-browserify@^2.0.2: 2141 | version "2.0.2" 2142 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" 2143 | dependencies: 2144 | setimmediate "^1.0.4" 2145 | 2146 | to-arraybuffer@^1.0.0: 2147 | version "1.0.1" 2148 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 2149 | 2150 | tough-cookie@~2.3.0: 2151 | version "2.3.2" 2152 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 2153 | dependencies: 2154 | punycode "^1.4.1" 2155 | 2156 | ts-loader@^2.0.3: 2157 | version "2.0.3" 2158 | resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-2.0.3.tgz#89b8c87598f048df065766e07e1538f0eaeb1165" 2159 | dependencies: 2160 | colors "^1.0.3" 2161 | enhanced-resolve "^3.0.0" 2162 | loader-utils "^1.0.2" 2163 | semver "^5.0.1" 2164 | 2165 | tty-browserify@0.0.0: 2166 | version "0.0.0" 2167 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 2168 | 2169 | tunnel-agent@^0.6.0: 2170 | version "0.6.0" 2171 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2172 | dependencies: 2173 | safe-buffer "^5.0.1" 2174 | 2175 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2176 | version "0.14.5" 2177 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2178 | 2179 | type-is@~1.6.14: 2180 | version "1.6.15" 2181 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" 2182 | dependencies: 2183 | media-typer "0.3.0" 2184 | mime-types "~2.1.15" 2185 | 2186 | uglify-js@^2.8.5: 2187 | version "2.8.22" 2188 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0" 2189 | dependencies: 2190 | source-map "~0.5.1" 2191 | yargs "~3.10.0" 2192 | optionalDependencies: 2193 | uglify-to-browserify "~1.0.0" 2194 | 2195 | uglify-to-browserify@~1.0.0: 2196 | version "1.0.2" 2197 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 2198 | 2199 | uid-number@^0.0.6: 2200 | version "0.0.6" 2201 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 2202 | 2203 | unpipe@~1.0.0: 2204 | version "1.0.0" 2205 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2206 | 2207 | url-parse@1.0.x: 2208 | version "1.0.5" 2209 | resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" 2210 | dependencies: 2211 | querystringify "0.0.x" 2212 | requires-port "1.0.x" 2213 | 2214 | url-parse@^1.1.1: 2215 | version "1.1.8" 2216 | resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156" 2217 | dependencies: 2218 | querystringify "0.0.x" 2219 | requires-port "1.0.x" 2220 | 2221 | url2@^0.0.0: 2222 | version "0.0.0" 2223 | resolved "https://registry.yarnpkg.com/url2/-/url2-0.0.0.tgz#4eaabd1d5c3ac90d62ab4485c998422865a04b1a" 2224 | 2225 | url@^0.11.0: 2226 | version "0.11.0" 2227 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 2228 | dependencies: 2229 | punycode "1.3.2" 2230 | querystring "0.2.0" 2231 | 2232 | util-deprecate@~1.0.1: 2233 | version "1.0.2" 2234 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2235 | 2236 | util@0.10.3, util@^0.10.3: 2237 | version "0.10.3" 2238 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 2239 | dependencies: 2240 | inherits "2.0.1" 2241 | 2242 | utils-merge@1.0.0: 2243 | version "1.0.0" 2244 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 2245 | 2246 | uuid@^2.0.2: 2247 | version "2.0.3" 2248 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" 2249 | 2250 | uuid@^3.0.0: 2251 | version "3.0.1" 2252 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 2253 | 2254 | validate-npm-package-license@^3.0.1: 2255 | version "3.0.1" 2256 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 2257 | dependencies: 2258 | spdx-correct "~1.0.0" 2259 | spdx-expression-parse "~1.0.0" 2260 | 2261 | vary@~1.1.0: 2262 | version "1.1.1" 2263 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" 2264 | 2265 | verror@1.3.6: 2266 | version "1.3.6" 2267 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 2268 | dependencies: 2269 | extsprintf "1.0.2" 2270 | 2271 | vm-browserify@0.0.4: 2272 | version "0.0.4" 2273 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" 2274 | dependencies: 2275 | indexof "0.0.1" 2276 | 2277 | watchpack@^1.3.1: 2278 | version "1.3.1" 2279 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87" 2280 | dependencies: 2281 | async "^2.1.2" 2282 | chokidar "^1.4.3" 2283 | graceful-fs "^4.1.2" 2284 | 2285 | wbuf@^1.1.0, wbuf@^1.4.0: 2286 | version "1.7.2" 2287 | resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" 2288 | dependencies: 2289 | minimalistic-assert "^1.0.0" 2290 | 2291 | weak-map@1.0.0: 2292 | version "1.0.0" 2293 | resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.0.tgz#b66e56a9df0bd25a76bbf1b514db129080614a37" 2294 | 2295 | webpack-dev-middleware@^1.9.0: 2296 | version "1.10.1" 2297 | resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893" 2298 | dependencies: 2299 | memory-fs "~0.4.1" 2300 | mime "^1.3.4" 2301 | path-is-absolute "^1.0.0" 2302 | range-parser "^1.0.3" 2303 | 2304 | webpack-dev-server@^2.4.2: 2305 | version "2.4.2" 2306 | resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.4.2.tgz#cf595d6b40878452b6d2ad7229056b686f8a16be" 2307 | dependencies: 2308 | ansi-html "0.0.7" 2309 | chokidar "^1.6.0" 2310 | compression "^1.5.2" 2311 | connect-history-api-fallback "^1.3.0" 2312 | express "^4.13.3" 2313 | html-entities "^1.2.0" 2314 | http-proxy-middleware "~0.17.4" 2315 | opn "4.0.2" 2316 | portfinder "^1.0.9" 2317 | serve-index "^1.7.2" 2318 | sockjs "0.3.18" 2319 | sockjs-client "1.1.2" 2320 | spdy "^3.4.1" 2321 | strip-ansi "^3.0.0" 2322 | supports-color "^3.1.1" 2323 | webpack-dev-middleware "^1.9.0" 2324 | yargs "^6.0.0" 2325 | 2326 | webpack-sources@^0.2.3: 2327 | version "0.2.3" 2328 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb" 2329 | dependencies: 2330 | source-list-map "^1.1.1" 2331 | source-map "~0.5.3" 2332 | 2333 | webpack@^2.3.3: 2334 | version "2.3.3" 2335 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.3.3.tgz#eecc083c18fb7bf958ea4f40b57a6640c5a0cc78" 2336 | dependencies: 2337 | acorn "^4.0.4" 2338 | acorn-dynamic-import "^2.0.0" 2339 | ajv "^4.7.0" 2340 | ajv-keywords "^1.1.1" 2341 | async "^2.1.2" 2342 | enhanced-resolve "^3.0.0" 2343 | interpret "^1.0.0" 2344 | json-loader "^0.5.4" 2345 | loader-runner "^2.3.0" 2346 | loader-utils "^0.2.16" 2347 | memory-fs "~0.4.1" 2348 | mkdirp "~0.5.0" 2349 | node-libs-browser "^2.0.0" 2350 | source-map "^0.5.3" 2351 | supports-color "^3.1.0" 2352 | tapable "~0.2.5" 2353 | uglify-js "^2.8.5" 2354 | watchpack "^1.3.1" 2355 | webpack-sources "^0.2.3" 2356 | yargs "^6.0.0" 2357 | 2358 | websocket-driver@>=0.5.1: 2359 | version "0.6.5" 2360 | resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" 2361 | dependencies: 2362 | websocket-extensions ">=0.1.1" 2363 | 2364 | websocket-extensions@>=0.1.1: 2365 | version "0.1.1" 2366 | resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" 2367 | 2368 | which-module@^1.0.0: 2369 | version "1.0.0" 2370 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" 2371 | 2372 | which@^1.2.9: 2373 | version "1.2.14" 2374 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" 2375 | dependencies: 2376 | isexe "^2.0.0" 2377 | 2378 | wide-align@^1.1.0: 2379 | version "1.1.0" 2380 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" 2381 | dependencies: 2382 | string-width "^1.0.1" 2383 | 2384 | window-size@0.1.0: 2385 | version "0.1.0" 2386 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 2387 | 2388 | wordwrap@0.0.2: 2389 | version "0.0.2" 2390 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 2391 | 2392 | wrap-ansi@^2.0.0: 2393 | version "2.1.0" 2394 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 2395 | dependencies: 2396 | string-width "^1.0.1" 2397 | strip-ansi "^3.0.1" 2398 | 2399 | wrappy@1: 2400 | version "1.0.2" 2401 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2402 | 2403 | xtend@^4.0.0: 2404 | version "4.0.1" 2405 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2406 | 2407 | y18n@^3.2.1: 2408 | version "3.2.1" 2409 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 2410 | 2411 | yallist@^2.0.0: 2412 | version "2.1.2" 2413 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2414 | 2415 | yargs-parser@^4.2.0: 2416 | version "4.2.1" 2417 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" 2418 | dependencies: 2419 | camelcase "^3.0.0" 2420 | 2421 | yargs@^6.0.0: 2422 | version "6.6.0" 2423 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" 2424 | dependencies: 2425 | camelcase "^3.0.0" 2426 | cliui "^3.2.0" 2427 | decamelize "^1.1.1" 2428 | get-caller-file "^1.0.1" 2429 | os-locale "^1.4.0" 2430 | read-pkg-up "^1.0.1" 2431 | require-directory "^2.1.1" 2432 | require-main-filename "^1.0.1" 2433 | set-blocking "^2.0.0" 2434 | string-width "^1.0.2" 2435 | which-module "^1.0.0" 2436 | y18n "^3.2.1" 2437 | yargs-parser "^4.2.0" 2438 | 2439 | yargs@~3.10.0: 2440 | version "3.10.0" 2441 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 2442 | dependencies: 2443 | camelcase "^1.0.2" 2444 | cliui "^2.1.0" 2445 | decamelize "^1.0.0" 2446 | window-size "0.1.0" 2447 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | export function* sinergia(work: GeneratorFunction) { 2 | let result: any; 3 | let animToken: number; 4 | let _resolve; 5 | 6 | try { 7 | const workIterator: Generator = work(); 8 | yield new Promise(resolve => { 9 | _resolve = resolve; 10 | 11 | const step = () => { 12 | const iteration = workIterator.next(); 13 | 14 | if (iteration.done) { 15 | resolve(); 16 | return; 17 | } 18 | 19 | result = iteration.value; 20 | animToken = window.requestAnimationFrame(step); 21 | }; 22 | 23 | animToken = window.requestAnimationFrame(step); 24 | }); 25 | 26 | return { value: result }; 27 | } finally { 28 | // This block is called when sinergia is interrupted with `.return()` 29 | 30 | if (animToken) window.cancelAnimationFrame(animToken); 31 | _resolve(); 32 | 33 | // Return the latest yielded result 34 | yield { value: result }; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /lib/index.d.ts: -------------------------------------------------------------------------------- 1 | export declare function sinergia(work: GeneratorFunction): IterableIterator | { 2 | value: any; 3 | }>; 4 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __generator = (this && this.__generator) || function (thisArg, body) { 3 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 4 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 5 | function verb(n) { return function (v) { return step([n, v]); }; } 6 | function step(op) { 7 | if (f) throw new TypeError("Generator is already executing."); 8 | while (_) try { 9 | if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; 10 | if (y = 0, t) op = [0, t.value]; 11 | switch (op[0]) { 12 | case 0: case 1: t = op; break; 13 | case 4: _.label++; return { value: op[1], done: false }; 14 | case 5: _.label++; y = op[1]; op = [0]; continue; 15 | case 7: op = _.ops.pop(); _.trys.pop(); continue; 16 | default: 17 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 18 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 19 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 20 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 21 | if (t[2]) _.ops.pop(); 22 | _.trys.pop(); continue; 23 | } 24 | op = body.call(thisArg, _); 25 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 26 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 27 | } 28 | }; 29 | Object.defineProperty(exports, "__esModule", { value: true }); 30 | function sinergia(work) { 31 | var result, animToken, _resolve, workIterator_1; 32 | return __generator(this, function (_a) { 33 | switch (_a.label) { 34 | case 0: 35 | _a.trys.push([0, , 2, 4]); 36 | workIterator_1 = work(); 37 | return [4 /*yield*/, new Promise(function (resolve) { 38 | _resolve = resolve; 39 | var step = function () { 40 | var iteration = workIterator_1.next(); 41 | if (iteration.done) { 42 | resolve(); 43 | return; 44 | } 45 | result = iteration.value; 46 | animToken = window.requestAnimationFrame(step); 47 | }; 48 | animToken = window.requestAnimationFrame(step); 49 | })]; 50 | case 1: 51 | _a.sent(); 52 | return [2 /*return*/, { value: result }]; 53 | case 2: 54 | // This block is called when sinergia is interrupted with `.return()` 55 | if (animToken) 56 | window.cancelAnimationFrame(animToken); 57 | _resolve(); 58 | // Return the latest yielded result 59 | return [4 /*yield*/, { value: result }]; 60 | case 3: 61 | // Return the latest yielded result 62 | _a.sent(); 63 | return [7 /*endfinally*/]; 64 | case 4: return [2 /*return*/]; 65 | } 66 | }); 67 | } 68 | exports.sinergia = sinergia; 69 | -------------------------------------------------------------------------------- /lib/umd/index.js: -------------------------------------------------------------------------------- 1 | var __generator = (this && this.__generator) || function (thisArg, body) { 2 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; 3 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; 4 | function verb(n) { return function (v) { return step([n, v]); }; } 5 | function step(op) { 6 | if (f) throw new TypeError("Generator is already executing."); 7 | while (_) try { 8 | if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; 9 | if (y = 0, t) op = [0, t.value]; 10 | switch (op[0]) { 11 | case 0: case 1: t = op; break; 12 | case 4: _.label++; return { value: op[1], done: false }; 13 | case 5: _.label++; y = op[1]; op = [0]; continue; 14 | case 7: op = _.ops.pop(); _.trys.pop(); continue; 15 | default: 16 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } 17 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } 18 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } 19 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } 20 | if (t[2]) _.ops.pop(); 21 | _.trys.pop(); continue; 22 | } 23 | op = body.call(thisArg, _); 24 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } 25 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; 26 | } 27 | }; 28 | (function (factory) { 29 | if (typeof module === "object" && typeof module.exports === "object") { 30 | var v = factory(require, exports); 31 | if (v !== undefined) module.exports = v; 32 | } 33 | else if (typeof define === "function" && define.amd) { 34 | define(["require", "exports"], factory); 35 | } 36 | })(function (require, exports) { 37 | "use strict"; 38 | Object.defineProperty(exports, "__esModule", { value: true }); 39 | function sinergia(work) { 40 | var result, animToken, _resolve, workIterator_1; 41 | return __generator(this, function (_a) { 42 | switch (_a.label) { 43 | case 0: 44 | _a.trys.push([0, , 2, 4]); 45 | workIterator_1 = work(); 46 | return [4 /*yield*/, new Promise(function (resolve) { 47 | _resolve = resolve; 48 | var step = function () { 49 | var iteration = workIterator_1.next(); 50 | if (iteration.done) { 51 | resolve(); 52 | return; 53 | } 54 | result = iteration.value; 55 | animToken = window.requestAnimationFrame(step); 56 | }; 57 | animToken = window.requestAnimationFrame(step); 58 | })]; 59 | case 1: 60 | _a.sent(); 61 | return [2 /*return*/, { value: result }]; 62 | case 2: 63 | // This block is called when sinergia is interrupted with `.return()` 64 | if (animToken) 65 | window.cancelAnimationFrame(animToken); 66 | _resolve(); 67 | // Return the latest yielded result 68 | return [4 /*yield*/, { value: result }]; 69 | case 3: 70 | // Return the latest yielded result 71 | _a.sent(); 72 | return [7 /*endfinally*/]; 73 | case 4: return [2 /*return*/]; 74 | } 75 | }); 76 | } 77 | exports.sinergia = sinergia; 78 | }); 79 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sinergia", 3 | "version": "0.1.0", 4 | "description": "Cooperative expensive tasks via ES6 generators", 5 | "main": "lib/index.js", 6 | "typings": "lib/index.d.ts", 7 | "files": [ 8 | "lib" 9 | ], 10 | "scripts": { 11 | "build": "tsc && tsc --declaration false --module UMD --outDir ./lib/umd", 12 | "clean": "rimraf lib", 13 | "lint": "tslint \"./index.ts\"", 14 | "test": "jest", 15 | "prepublish": "npm run clean && npm run build", 16 | "prepush": "npm run lint && npm test" 17 | }, 18 | "repository": { 19 | "type": "git", 20 | "url": "git+https://github.com/jiayihu/sinergia.git" 21 | }, 22 | "keywords": [ 23 | "cooperative", 24 | "generators", 25 | "async", 26 | "requestAnimationFrame" 27 | ], 28 | "author": "Giovanni Jiayi Hu ", 29 | "license": "MIT", 30 | "bugs": { 31 | "url": "https://github.com/jiayihu/sinergia/issues" 32 | }, 33 | "homepage": "https://github.com/jiayihu/sinergia#readme", 34 | "dependencies": {}, 35 | "devDependencies": { 36 | "@types/jest": "^19.2.2", 37 | "co": "^4.6.0", 38 | "husky": "^0.13.3", 39 | "jest": "^19.0.2", 40 | "rimraf": "^2.6.1", 41 | "ts-jest": "^19.0.8", 42 | "tslint": "^5.0.0", 43 | "typescript": "^2.3.2" 44 | }, 45 | "jest": { 46 | "transform": { 47 | ".(ts|tsx)": "/node_modules/ts-jest/preprocessor.js" 48 | }, 49 | "testRegex": "(test/.*\\.spec\\.(ts|js))$", 50 | "moduleFileExtensions": [ 51 | "ts", 52 | "tsx", 53 | "js" 54 | ] 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /test/index.spec.ts: -------------------------------------------------------------------------------- 1 | import { sinergia } from '../index'; 2 | import * as co from 'co'; 3 | 4 | describe('Basic behaviour', function() { 5 | let rafMock; 6 | 7 | const ITERABLE_LENGTH = 5; 8 | const ITERATIONS_PER_ITEM = 20; 9 | const ITERATIONS_PER_YIELD = 2; 10 | 11 | beforeEach(function() { 12 | rafMock = jest.fn((cb) => cb()); 13 | window.requestAnimationFrame = rafMock; 14 | }); 15 | 16 | const work: any = function*() { 17 | const iterable = ['H', 'e', 'l', 'l', 'o']; 18 | let result = ''; 19 | 20 | for (const item of iterable) { 21 | let x = 0; 22 | while (x < 20) { 23 | x = x + 1; 24 | if (x % 2 === 0) yield result; 25 | } 26 | 27 | result += item; 28 | } 29 | 30 | yield result; 31 | }; 32 | 33 | test('it should complete', function() { 34 | return co(function*(){ 35 | return yield* sinergia(work); 36 | }).then((result: any) => { 37 | expect(result.value).toBe('Hello'); 38 | }); 39 | }); 40 | 41 | test('it should divide task in chunks', function() { 42 | return co(function*(){ 43 | return yield* sinergia(work); 44 | }).then((result: any) => { 45 | // requestAnimationFrame is called ITERATIONS_PER_ITEM / ITERATIONS_PER_YIELD 46 | // times to complete an item, plus 1 first call and 1 call for the final result 47 | const times = ITERABLE_LENGTH * (ITERATIONS_PER_ITEM / ITERATIONS_PER_YIELD) + 2; 48 | expect(rafMock).toHaveBeenCalledTimes(times); 49 | }); 50 | }); 51 | }); 52 | -------------------------------------------------------------------------------- /test/utils.ts: -------------------------------------------------------------------------------- 1 | function isPromise(obj) { 2 | return typeof obj.then === 'function'; 3 | } 4 | 5 | /** 6 | * Simple implementation of co lib 7 | */ 8 | export function co(genFunc) { 9 | return new Promise(resolve => { 10 | const genObj = genFunc(); 11 | step(genObj.next()); 12 | 13 | function step({ value, done }) { 14 | if (done) { 15 | resolve(value); 16 | return; 17 | } 18 | 19 | if (isPromise(value)) { 20 | value 21 | .then(result => { 22 | step(genObj.next(result)); // (A) 23 | }) 24 | .catch(error => { 25 | step(genObj.throw(error)); // (B) 26 | }); 27 | } 28 | } 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "declaration": true, 5 | "downlevelIteration": true, 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "lib": ["dom", "es2015", "es2016"], 9 | "module": "commonjs", 10 | "moduleResolution": "node", 11 | "outDir": "./lib", 12 | "target": "es5", 13 | "baseUrl": ".", 14 | "paths": {} 15 | }, 16 | "files": [ 17 | "index.ts" 18 | ], 19 | "exclude": [ 20 | "dist", 21 | "node_modules" 22 | ], 23 | "compileOnSave": false, 24 | "buildOnSave": false, 25 | "atom": { 26 | "rewriteTsconfig": false 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tslint:recommended", 3 | 4 | "rules": { 5 | "arrow-parens": false, 6 | "curly": false, 7 | "object-literal-key-quotes": [false], 8 | "object-literal-sort-keys": false, 9 | "one-line": [false], 10 | "only-arrow-functions": [false], 11 | "member-access": false, 12 | "member-ordering": [false], 13 | "no-console": [false], 14 | "no-string-literal": false, 15 | "no-var-requires": false, 16 | "ordered-imports": [false], 17 | "quotemark": [true, "single"], 18 | "trailing-comma": [true, { "multiline": "always", "singleline": "never" }], 19 | "variable-name": [true, "check-format", "allow-leading-underscore"] 20 | } 21 | } 22 | --------------------------------------------------------------------------------