├── .eslintrc.json ├── .gitignore ├── BadDOM.js ├── BadDOM.min.js ├── LICENSE ├── README.md ├── package.json └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "airbnb-base", 3 | "env": { 4 | "es6": true, 5 | "browser": true 6 | }, 7 | "rules": { 8 | "indent": ["error", 4], 9 | "no-unused-expressions": 0, 10 | "max-len": ["error", 120], 11 | "arrow-parens": 0, 12 | "no-confusing-arrow": 0, 13 | "no-param-reassign": 0 14 | } 15 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # VScode 45 | .vscode 46 | 47 | # Build results 48 | 49 | [Dd]ebug/ 50 | [Rr]elease/ 51 | x64/ 52 | build/ 53 | [Bb]in/ 54 | [Oo]bj/ 55 | 56 | # MSTest test Results 57 | [Tt]est[Rr]esult*/ 58 | [Bb]uild[Ll]og.* 59 | 60 | *_i.c 61 | *_p.c 62 | *.ilk 63 | *.meta 64 | *.obj 65 | *.pch 66 | *.pdb 67 | *.pgc 68 | *.pgd 69 | *.rsp 70 | *.sbr 71 | *.tlb 72 | *.tli 73 | *.tlh 74 | *.tmp 75 | *.tmp_proj 76 | *.log 77 | *.vspscc 78 | *.vssscc 79 | .builds 80 | *.pidb 81 | *.log 82 | *.scc 83 | 84 | # Visual C++ cache files 85 | ipch/ 86 | *.aps 87 | *.ncb 88 | *.opensdf 89 | *.sdf 90 | *.cachefile 91 | 92 | # Visual Studio profiler 93 | *.psess 94 | *.vsp 95 | *.vspx 96 | 97 | # Guidance Automation Toolkit 98 | *.gpState 99 | 100 | # ReSharper is a .NET coding add-in 101 | _ReSharper*/ 102 | *.[Rr]e[Ss]harper 103 | 104 | # TeamCity is a build add-in 105 | _TeamCity* 106 | 107 | # DotCover is a Code Coverage Tool 108 | *.dotCover 109 | 110 | # NCrunch 111 | *.ncrunch* 112 | .*crunch*.local.xml 113 | 114 | # Installshield output folder 115 | [Ee]xpress/ 116 | 117 | # DocProject is a documentation generator add-in 118 | DocProject/buildhelp/ 119 | DocProject/Help/*.HxT 120 | DocProject/Help/*.HxC 121 | DocProject/Help/*.hhc 122 | DocProject/Help/*.hhk 123 | DocProject/Help/*.hhp 124 | DocProject/Help/Html2 125 | DocProject/Help/html 126 | 127 | # Click-Once directory 128 | publish/ 129 | 130 | # Publish Web Output 131 | *.Publish.xml 132 | *.pubxml 133 | 134 | # NuGet Packages Directory 135 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 136 | #packages/ 137 | 138 | # Windows Azure Build Output 139 | csx 140 | *.build.csdef 141 | 142 | # Windows Store app package directory 143 | AppPackages/ 144 | 145 | # Others 146 | sql/ 147 | *.Cache 148 | ClientBin/ 149 | [Ss]tyle[Cc]op.* 150 | ~$* 151 | *~ 152 | *.dbmdl 153 | *.[Pp]ublish.xml 154 | *.pfx 155 | *.publishsettings 156 | 157 | # RIA/Silverlight projects 158 | Generated_Code/ 159 | 160 | # Backup & report files from converting an old project file to a newer 161 | # Visual Studio version. Backup files are not needed, because we have git ;-) 162 | _UpgradeReport_Files/ 163 | Backup*/ 164 | UpgradeLog*.XML 165 | UpgradeLog*.htm 166 | 167 | # SQL Server files 168 | App_Data/*.mdf 169 | App_Data/*.ldf 170 | 171 | ############# 172 | ## Windows detritus 173 | ############# 174 | 175 | # Windows image file caches 176 | Thumbs.db 177 | ehthumbs.db 178 | 179 | # Folder config file 180 | Desktop.ini 181 | 182 | # Recycle Bin used on file shares 183 | $RECYCLE.BIN/ 184 | 185 | # Mac crap 186 | .DS_Store 187 | 188 | 189 | ############# 190 | ## Python 191 | ############# 192 | 193 | *.py[co] 194 | 195 | # Packages 196 | *.egg 197 | *.egg-info 198 | build/ 199 | eggs/ 200 | parts/ 201 | var/ 202 | sdist/ 203 | develop-eggs/ 204 | .installed.cfg 205 | 206 | # Installer logs 207 | pip-log.txt 208 | 209 | # Unit test / coverage reports 210 | .coverage 211 | .tox 212 | spec/screenshots 213 | 214 | #Translations 215 | *.mo 216 | 217 | #Mr Developer 218 | .mr.developer.cfg 219 | 220 | sftp-config.json 221 | 222 | #Node 223 | /node_modules 224 | npm-debug.log 225 | package-lock.json 226 | 227 | # workspace files are user-specific 228 | *.sublime-workspace 229 | *.sublime-project 230 | 231 | # Super secret stuff 232 | github_npm 233 | .npmrc 234 | Icon? -------------------------------------------------------------------------------- /BadDOM.js: -------------------------------------------------------------------------------- 1 | 2 | window.vDiff = (target, source) => { 3 | const worker = { 4 | settings: { 5 | original: target, 6 | }, 7 | replace(nTarget, nSource = target) { 8 | const v = new DOMParser().parseFromString(source, 'text/html').body.childNodes 9 | const vHTML = v[0]; 10 | if (vHTML.nodeName !== target.nodeName) { 11 | target.parentElement.replaceChild(vHTML, target); 12 | return; 13 | } 14 | this.iterate(target, vHTML); 15 | }, 16 | iterate(targetNode, sourceNode, tOriginal) { 17 | if (targetNode || sourceNode) { 18 | this.checkAdditions(targetNode, sourceNode, tOriginal); 19 | if (targetNode && sourceNode && targetNode.nodeName !== sourceNode.nodeName) { 20 | this.checkNodeName(targetNode, sourceNode); 21 | } else if (targetNode && sourceNode && targetNode.nodeName === sourceNode.nodeName) { 22 | this.checkTextContent(targetNode, sourceNode); 23 | targetNode.nodeType !== 3 && target.nodeType !== 8 && this.checkAttributes(targetNode, sourceNode); 24 | } 25 | } 26 | if (targetNode && sourceNode) { 27 | if (targetNode.childNodes && sourceNode.childNodes) { 28 | this.settings.lengthDifferentiator = [...target.childNodes, ...sourceNode.childNodes]; 29 | } else { 30 | this.settings.lengthDifferentiator = null; 31 | } 32 | (this.settings.lengthDifferentiator || []).forEach((node, idx) => { 33 | this.settings.lengthDifferentiator && 34 | this.iterate(targetNode.childNodes[idx], sourceNode.childNodes[idx], targetNode, sourceNode); 35 | }); 36 | } 37 | }, 38 | checkNodeName(targetNode, sourceNode) { 39 | const n = sourceNode.cloneNode(true); 40 | targetNode.parentElement.replaceChild(n, targetNode); 41 | }, 42 | checkAttributes(targetNode, sourceNode) { 43 | const attributes = targetNode.attributes || []; 44 | const filteredAttrs = Object.keys(attributes).map((n) => attributes[n]); 45 | const attributesNew = sourceNode.attributes || []; 46 | const filteredAttrsNew = Object.keys(attributesNew).map((n) => attributesNew[n]); 47 | filteredAttrs.forEach(o => sourceNode.getAttribute(o.name) !== null ? 48 | targetNode.setAttribute(o.name, sourceNode.getAttribute(o.name)) : 49 | targetNode.removeAttribute(o.name)); 50 | filteredAttrsNew.forEach(a => targetNode.getAttribute(a.name) !== sourceNode.getAttribute(a.name) && 51 | targetNode.setAttribute(a.name, sourceNode.getAttribute(a.name))); 52 | }, 53 | checkTextContent(targetNode, sourceNode) { 54 | if (targetNode.nodeValue !== sourceNode.nodeValue) { 55 | targetNode.textContent = sourceNode.textContent; 56 | } 57 | }, 58 | checkAdditions(targetNode, sourceNode, tParent = this.settings.original) { 59 | if (sourceNode && targetNode === undefined) { 60 | const newNode = sourceNode.cloneNode(true); 61 | tParent.nodeType !== 3 && tParent.nodeType !== 8 && tParent.appendChild(newNode); 62 | } else if (targetNode && sourceNode === undefined) { 63 | targetNode.parentElement.removeChild(targetNode); 64 | } 65 | }, 66 | }; 67 | Object.create(worker).replace(target, source); 68 | }; 69 | -------------------------------------------------------------------------------- /BadDOM.min.js: -------------------------------------------------------------------------------- 1 | window.vDiff=((e,t)=>{const i={settings:{original:e},replace(i,n=e){const o=(new DOMParser).parseFromString(t,"text/html").body.childNodes[0];o.nodeName===e.nodeName?this.iterate(e,o):e.parentElement.replaceChild(o,e)},iterate(t,i,n){(t||i)&&(this.checkAdditions(t,i,n),t&&i&&t.nodeName!==i.nodeName?this.checkNodeName(t,i):t&&i&&t.nodeName===i.nodeName&&(this.checkTextContent(t,i),3!==t.nodeType&&8!==e.nodeType&&this.checkAttributes(t,i))),t&&i&&(t.childNodes&&i.childNodes?this.settings.lengthDifferentiator=[...e.childNodes,...i.childNodes]:this.settings.lengthDifferentiator=null,(this.settings.lengthDifferentiator||[]).forEach((e,n)=>{this.settings.lengthDifferentiator&&this.iterate(t.childNodes[n],i.childNodes[n],t,i)}))},checkNodeName(e,t){const i=t.cloneNode(!0);e.parentElement.replaceChild(i,e)},checkAttributes(e,t){const i=e.attributes||[],n=Object.keys(i).map(e=>i[e]),o=t.attributes||[],s=Object.keys(o).map(e=>o[e]);n.forEach(i=>null!==t.getAttribute(i.name)?e.setAttribute(i.name,t.getAttribute(i.name)):e.removeAttribute(i.name)),s.forEach(i=>e.getAttribute(i.name)!==t.getAttribute(i.name)&&e.setAttribute(i.name,t.getAttribute(i.name)))},checkTextContent(e,t){e.nodeValue!==t.nodeValue&&(e.textContent=t.textContent)},checkAdditions(e,t,i=this.settings.original){if(t&&void 0===e){const e=t.cloneNode(!0);3!==i.nodeType&&8!==i.nodeType&&i.appendChild(e)}else e&&void 0===t&&e.parentElement.removeChild(e)}};Object.create(i).replace(e,t)}); 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Tim Evko 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 | # BadDOM 2 | the smallest component renderer 3 |

Introducing: Bad-DOM - the smallest* component renderer

4 | 5 | *seriously, it's 592 bytes minified + gzipped 6 | 7 |

What does it do?

8 |

Bad-DOM is a lazy diffing algorithm and HTML component renderer. It's lazy because it doesn't try too hard to keep the browser from doing unnecessary work, but still does a pretty good job.

9 |

Bad-DOM exposes a single function, vDiff, which takes 2 parameters. The first being an existing element on the page, and the second being a template string representing the markup you would like to replace the first item with. 10 |

11 |

Calling this function will result in parameter 1 being replaced by parameter 2, with the goal of the least amount of changes taking place in the DOM in order to achieve that replacement. Here's what that would look like using some "hello world" text in a p tag:

12 |

13 | vDiff(document.querySelector('.hello-world-demo'), `<p class="hello-world-demo">GoodBye!</p>`) 14 |

15 |

In this example, we're taking an element from the page (a paragraph tag with text in it that says "hello world!") and changing the text inside it. Bad-DOM knows not to change anything other than the text, because it can tell that nothing else has changed.

16 |

What else does it do?

17 |

Since Bad-DOM takes a template string as its second parameter, it becomes a fully capable component renderer as well.

18 |

For example, given an html page with an empty element: <div id="My-App"></div>

19 |

We can render markup into our My-App container: 20 |

21 | 
22 | const name = 'Tim';
23 | vDiff(document.querySelector('#My-App'), `<div id="My-App">Hello, ${name}</div>`);
24 | 	
25 | 
26 |

27 |

An example of this behavior can be found here, wherein a working image slider is being rendered into the dom and transitioned based on a counter state. 28 |

Here's the code necessary to render the slider: 29 |

30 | 
31 | document.querySelector('button').addEventListener('click', () => {
32 |   x = (x === 3 ? 0 : x + 1);
33 |   vDiff(document.querySelector('section'),
34 | 	  `<section>
35 | 	    <img style="display:${x === 1 ? 'block' : 'none'}" src="https://placeimg.com/700/200/tech" alt="phones p much">
36 | 	    <img style="display:${x === 2 ? 'block' : 'none'}" src="https://placeimg.com/700/200/people" alt="peeps">
37 | 	    <img style="display:${x === 0 ? 'block' : 'none'}" src="https://placeimg.com/700/200/animals" alt="woofers">
38 | 	    <img style="display:${x === 3 ? 'block' : 'none'}" src="https://placeimg.com/700/200/nature" alt="outside">
39 | 	  </section>`
40 | 	);
41 | });
42 | 	
43 | 
44 |

45 |

Why should I use this thing?

46 |

Since Bad-DOM is a fully capable component renderer, you can use it to build fully capable UI's. An example is provided here: https://codepen.io/tevko/pen/MrwXdy.

47 |

For the above demo application to work, all we need to do is include the Bad-DOM library, provide a render target, and feed the vDiff function a template string. After the initial rendering takes place, the inline event handlers reference functions that update the global app state and rebuild the template string. No more DOM manipulation, render-hacks, or confusing framework methods to memorize.

48 |

Overall, you can use Bad-DOM to build powerful components as long as you provide your own state management and event systems. In the counter demo referenced above, basic inline html events are being used, while each callback function is only responsible for updating the application state and calling the render function. Essentially, Bad-DOM's advantage is that it doesn't keep any internal memory, but is still able to intelligently update the DOM based on whatever source it is given. Since Bad-DOM doesn't provide any reoccuring update functionality (you need to tell it to re-render explicitly) your application will be less likely to fall into common performance pitfalls seen with other component renderers.

49 |

Conclusion

50 | 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "baddom", 3 | "version": "1.0.0", 4 | "description": "The Worlds smalles component renderer", 5 | "main": "BadDOM.js", 6 | "scripts": { 7 | "precommit": "./node_modules/.bin/eslint BadDom.js" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/tevko/BadDOM.git" 12 | }, 13 | "keywords": [ 14 | "javascript", 15 | "es6", 16 | "framework" 17 | ], 18 | "author": "@tevko", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/tevko/BadDOM/issues" 22 | }, 23 | "homepage": "https://github.com/tevko/BadDOM#readme", 24 | "devDependencies": { 25 | "eslint": "^4.19.1", 26 | "eslint-config-airbnb-base": "^12.1.0", 27 | "eslint-plugin-import": "^2.12.0", 28 | "husky": "^0.14.3" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | acorn-jsx@^3.0.0: 6 | version "3.0.1" 7 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 8 | dependencies: 9 | acorn "^3.0.4" 10 | 11 | acorn@^3.0.4: 12 | version "3.3.0" 13 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 14 | 15 | acorn@^5.5.0: 16 | version "5.7.1" 17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" 18 | 19 | ajv-keywords@^2.1.0: 20 | version "2.1.1" 21 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" 22 | 23 | ajv@^5.2.3, ajv@^5.3.0: 24 | version "5.5.2" 25 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 26 | dependencies: 27 | co "^4.6.0" 28 | fast-deep-equal "^1.0.0" 29 | fast-json-stable-stringify "^2.0.0" 30 | json-schema-traverse "^0.3.0" 31 | 32 | ansi-escapes@^3.0.0: 33 | version "3.1.0" 34 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" 35 | 36 | ansi-regex@^2.0.0: 37 | version "2.1.1" 38 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 39 | 40 | ansi-regex@^3.0.0: 41 | version "3.0.0" 42 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 43 | 44 | ansi-styles@^2.2.1: 45 | version "2.2.1" 46 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 47 | 48 | ansi-styles@^3.2.1: 49 | version "3.2.1" 50 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 51 | dependencies: 52 | color-convert "^1.9.0" 53 | 54 | argparse@^1.0.7: 55 | version "1.0.10" 56 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 57 | dependencies: 58 | sprintf-js "~1.0.2" 59 | 60 | array-union@^1.0.1: 61 | version "1.0.2" 62 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 63 | dependencies: 64 | array-uniq "^1.0.1" 65 | 66 | array-uniq@^1.0.1: 67 | version "1.0.3" 68 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 69 | 70 | arrify@^1.0.0: 71 | version "1.0.1" 72 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 73 | 74 | babel-code-frame@^6.22.0: 75 | version "6.26.0" 76 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 77 | dependencies: 78 | chalk "^1.1.3" 79 | esutils "^2.0.2" 80 | js-tokens "^3.0.2" 81 | 82 | balanced-match@^1.0.0: 83 | version "1.0.0" 84 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 85 | 86 | brace-expansion@^1.1.7: 87 | version "1.1.11" 88 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 89 | dependencies: 90 | balanced-match "^1.0.0" 91 | concat-map "0.0.1" 92 | 93 | buffer-from@^1.0.0: 94 | version "1.1.0" 95 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" 96 | 97 | builtin-modules@^1.0.0: 98 | version "1.1.1" 99 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 100 | 101 | caller-path@^0.1.0: 102 | version "0.1.0" 103 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 104 | dependencies: 105 | callsites "^0.2.0" 106 | 107 | callsites@^0.2.0: 108 | version "0.2.0" 109 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 110 | 111 | chalk@^1.1.3: 112 | version "1.1.3" 113 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 114 | dependencies: 115 | ansi-styles "^2.2.1" 116 | escape-string-regexp "^1.0.2" 117 | has-ansi "^2.0.0" 118 | strip-ansi "^3.0.0" 119 | supports-color "^2.0.0" 120 | 121 | chalk@^2.0.0, chalk@^2.1.0: 122 | version "2.4.1" 123 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 124 | dependencies: 125 | ansi-styles "^3.2.1" 126 | escape-string-regexp "^1.0.5" 127 | supports-color "^5.3.0" 128 | 129 | chardet@^0.4.0: 130 | version "0.4.2" 131 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" 132 | 133 | ci-info@^1.0.0: 134 | version "1.1.3" 135 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" 136 | 137 | circular-json@^0.3.1: 138 | version "0.3.3" 139 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" 140 | 141 | cli-cursor@^2.1.0: 142 | version "2.1.0" 143 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 144 | dependencies: 145 | restore-cursor "^2.0.0" 146 | 147 | cli-width@^2.0.0: 148 | version "2.2.0" 149 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 150 | 151 | co@^4.6.0: 152 | version "4.6.0" 153 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 154 | 155 | color-convert@^1.9.0: 156 | version "1.9.2" 157 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" 158 | dependencies: 159 | color-name "1.1.1" 160 | 161 | color-name@1.1.1: 162 | version "1.1.1" 163 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" 164 | 165 | concat-map@0.0.1: 166 | version "0.0.1" 167 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 168 | 169 | concat-stream@^1.6.0: 170 | version "1.6.2" 171 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 172 | dependencies: 173 | buffer-from "^1.0.0" 174 | inherits "^2.0.3" 175 | readable-stream "^2.2.2" 176 | typedarray "^0.0.6" 177 | 178 | contains-path@^0.1.0: 179 | version "0.1.0" 180 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 181 | 182 | core-util-is@~1.0.0: 183 | version "1.0.2" 184 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 185 | 186 | cross-spawn@^5.1.0: 187 | version "5.1.0" 188 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 189 | dependencies: 190 | lru-cache "^4.0.1" 191 | shebang-command "^1.2.0" 192 | which "^1.2.9" 193 | 194 | debug@^2.6.8, debug@^2.6.9: 195 | version "2.6.9" 196 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 197 | dependencies: 198 | ms "2.0.0" 199 | 200 | debug@^3.1.0: 201 | version "3.1.0" 202 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 203 | dependencies: 204 | ms "2.0.0" 205 | 206 | deep-is@~0.1.3: 207 | version "0.1.3" 208 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 209 | 210 | del@^2.0.2: 211 | version "2.2.2" 212 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 213 | dependencies: 214 | globby "^5.0.0" 215 | is-path-cwd "^1.0.0" 216 | is-path-in-cwd "^1.0.0" 217 | object-assign "^4.0.1" 218 | pify "^2.0.0" 219 | pinkie-promise "^2.0.0" 220 | rimraf "^2.2.8" 221 | 222 | doctrine@1.5.0: 223 | version "1.5.0" 224 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 225 | dependencies: 226 | esutils "^2.0.2" 227 | isarray "^1.0.0" 228 | 229 | doctrine@^2.1.0: 230 | version "2.1.0" 231 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 232 | dependencies: 233 | esutils "^2.0.2" 234 | 235 | error-ex@^1.2.0: 236 | version "1.3.2" 237 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 238 | dependencies: 239 | is-arrayish "^0.2.1" 240 | 241 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 242 | version "1.0.5" 243 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 244 | 245 | eslint-config-airbnb-base@^12.1.0: 246 | version "12.1.0" 247 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz#386441e54a12ccd957b0a92564a4bafebd747944" 248 | dependencies: 249 | eslint-restricted-globals "^0.1.1" 250 | 251 | eslint-import-resolver-node@^0.3.1: 252 | version "0.3.2" 253 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" 254 | dependencies: 255 | debug "^2.6.9" 256 | resolve "^1.5.0" 257 | 258 | eslint-module-utils@^2.2.0: 259 | version "2.2.0" 260 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" 261 | dependencies: 262 | debug "^2.6.8" 263 | pkg-dir "^1.0.0" 264 | 265 | eslint-plugin-import@^2.12.0: 266 | version "2.13.0" 267 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.13.0.tgz#df24f241175e312d91662dc91ca84064caec14ed" 268 | dependencies: 269 | contains-path "^0.1.0" 270 | debug "^2.6.8" 271 | doctrine "1.5.0" 272 | eslint-import-resolver-node "^0.3.1" 273 | eslint-module-utils "^2.2.0" 274 | has "^1.0.1" 275 | lodash "^4.17.4" 276 | minimatch "^3.0.3" 277 | read-pkg-up "^2.0.0" 278 | resolve "^1.6.0" 279 | 280 | eslint-restricted-globals@^0.1.1: 281 | version "0.1.1" 282 | resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" 283 | 284 | eslint-scope@^3.7.1: 285 | version "3.7.1" 286 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" 287 | dependencies: 288 | esrecurse "^4.1.0" 289 | estraverse "^4.1.1" 290 | 291 | eslint-visitor-keys@^1.0.0: 292 | version "1.0.0" 293 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" 294 | 295 | eslint@^4.19.1: 296 | version "4.19.1" 297 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" 298 | dependencies: 299 | ajv "^5.3.0" 300 | babel-code-frame "^6.22.0" 301 | chalk "^2.1.0" 302 | concat-stream "^1.6.0" 303 | cross-spawn "^5.1.0" 304 | debug "^3.1.0" 305 | doctrine "^2.1.0" 306 | eslint-scope "^3.7.1" 307 | eslint-visitor-keys "^1.0.0" 308 | espree "^3.5.4" 309 | esquery "^1.0.0" 310 | esutils "^2.0.2" 311 | file-entry-cache "^2.0.0" 312 | functional-red-black-tree "^1.0.1" 313 | glob "^7.1.2" 314 | globals "^11.0.1" 315 | ignore "^3.3.3" 316 | imurmurhash "^0.1.4" 317 | inquirer "^3.0.6" 318 | is-resolvable "^1.0.0" 319 | js-yaml "^3.9.1" 320 | json-stable-stringify-without-jsonify "^1.0.1" 321 | levn "^0.3.0" 322 | lodash "^4.17.4" 323 | minimatch "^3.0.2" 324 | mkdirp "^0.5.1" 325 | natural-compare "^1.4.0" 326 | optionator "^0.8.2" 327 | path-is-inside "^1.0.2" 328 | pluralize "^7.0.0" 329 | progress "^2.0.0" 330 | regexpp "^1.0.1" 331 | require-uncached "^1.0.3" 332 | semver "^5.3.0" 333 | strip-ansi "^4.0.0" 334 | strip-json-comments "~2.0.1" 335 | table "4.0.2" 336 | text-table "~0.2.0" 337 | 338 | espree@^3.5.4: 339 | version "3.5.4" 340 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" 341 | dependencies: 342 | acorn "^5.5.0" 343 | acorn-jsx "^3.0.0" 344 | 345 | esprima@^4.0.0: 346 | version "4.0.1" 347 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 348 | 349 | esquery@^1.0.0: 350 | version "1.0.1" 351 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 352 | dependencies: 353 | estraverse "^4.0.0" 354 | 355 | esrecurse@^4.1.0: 356 | version "4.2.1" 357 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 358 | dependencies: 359 | estraverse "^4.1.0" 360 | 361 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 362 | version "4.2.0" 363 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 364 | 365 | esutils@^2.0.2: 366 | version "2.0.2" 367 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 368 | 369 | external-editor@^2.0.4: 370 | version "2.2.0" 371 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" 372 | dependencies: 373 | chardet "^0.4.0" 374 | iconv-lite "^0.4.17" 375 | tmp "^0.0.33" 376 | 377 | fast-deep-equal@^1.0.0: 378 | version "1.1.0" 379 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" 380 | 381 | fast-json-stable-stringify@^2.0.0: 382 | version "2.0.0" 383 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 384 | 385 | fast-levenshtein@~2.0.4: 386 | version "2.0.6" 387 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 388 | 389 | figures@^2.0.0: 390 | version "2.0.0" 391 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 392 | dependencies: 393 | escape-string-regexp "^1.0.5" 394 | 395 | file-entry-cache@^2.0.0: 396 | version "2.0.0" 397 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 398 | dependencies: 399 | flat-cache "^1.2.1" 400 | object-assign "^4.0.1" 401 | 402 | find-up@^1.0.0: 403 | version "1.1.2" 404 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 405 | dependencies: 406 | path-exists "^2.0.0" 407 | pinkie-promise "^2.0.0" 408 | 409 | find-up@^2.0.0: 410 | version "2.1.0" 411 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 412 | dependencies: 413 | locate-path "^2.0.0" 414 | 415 | flat-cache@^1.2.1: 416 | version "1.3.0" 417 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" 418 | dependencies: 419 | circular-json "^0.3.1" 420 | del "^2.0.2" 421 | graceful-fs "^4.1.2" 422 | write "^0.2.1" 423 | 424 | fs.realpath@^1.0.0: 425 | version "1.0.0" 426 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 427 | 428 | function-bind@^1.1.1: 429 | version "1.1.1" 430 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 431 | 432 | functional-red-black-tree@^1.0.1: 433 | version "1.0.1" 434 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 435 | 436 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: 437 | version "7.1.2" 438 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 439 | dependencies: 440 | fs.realpath "^1.0.0" 441 | inflight "^1.0.4" 442 | inherits "2" 443 | minimatch "^3.0.4" 444 | once "^1.3.0" 445 | path-is-absolute "^1.0.0" 446 | 447 | globals@^11.0.1: 448 | version "11.7.0" 449 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" 450 | 451 | globby@^5.0.0: 452 | version "5.0.0" 453 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 454 | dependencies: 455 | array-union "^1.0.1" 456 | arrify "^1.0.0" 457 | glob "^7.0.3" 458 | object-assign "^4.0.1" 459 | pify "^2.0.0" 460 | pinkie-promise "^2.0.0" 461 | 462 | graceful-fs@^4.1.2: 463 | version "4.1.11" 464 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 465 | 466 | has-ansi@^2.0.0: 467 | version "2.0.0" 468 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 469 | dependencies: 470 | ansi-regex "^2.0.0" 471 | 472 | has-flag@^3.0.0: 473 | version "3.0.0" 474 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 475 | 476 | has@^1.0.1: 477 | version "1.0.3" 478 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 479 | dependencies: 480 | function-bind "^1.1.1" 481 | 482 | hosted-git-info@^2.1.4: 483 | version "2.6.1" 484 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.1.tgz#6e4cee78b01bb849dcf93527708c69fdbee410df" 485 | 486 | husky@^0.14.3: 487 | version "0.14.3" 488 | resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3" 489 | dependencies: 490 | is-ci "^1.0.10" 491 | normalize-path "^1.0.0" 492 | strip-indent "^2.0.0" 493 | 494 | iconv-lite@^0.4.17: 495 | version "0.4.23" 496 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" 497 | dependencies: 498 | safer-buffer ">= 2.1.2 < 3" 499 | 500 | ignore@^3.3.3: 501 | version "3.3.10" 502 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" 503 | 504 | imurmurhash@^0.1.4: 505 | version "0.1.4" 506 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 507 | 508 | inflight@^1.0.4: 509 | version "1.0.6" 510 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 511 | dependencies: 512 | once "^1.3.0" 513 | wrappy "1" 514 | 515 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 516 | version "2.0.3" 517 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 518 | 519 | inquirer@^3.0.6: 520 | version "3.3.0" 521 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" 522 | dependencies: 523 | ansi-escapes "^3.0.0" 524 | chalk "^2.0.0" 525 | cli-cursor "^2.1.0" 526 | cli-width "^2.0.0" 527 | external-editor "^2.0.4" 528 | figures "^2.0.0" 529 | lodash "^4.3.0" 530 | mute-stream "0.0.7" 531 | run-async "^2.2.0" 532 | rx-lite "^4.0.8" 533 | rx-lite-aggregates "^4.0.8" 534 | string-width "^2.1.0" 535 | strip-ansi "^4.0.0" 536 | through "^2.3.6" 537 | 538 | is-arrayish@^0.2.1: 539 | version "0.2.1" 540 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 541 | 542 | is-builtin-module@^1.0.0: 543 | version "1.0.0" 544 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 545 | dependencies: 546 | builtin-modules "^1.0.0" 547 | 548 | is-ci@^1.0.10: 549 | version "1.1.0" 550 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" 551 | dependencies: 552 | ci-info "^1.0.0" 553 | 554 | is-fullwidth-code-point@^2.0.0: 555 | version "2.0.0" 556 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 557 | 558 | is-path-cwd@^1.0.0: 559 | version "1.0.0" 560 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 561 | 562 | is-path-in-cwd@^1.0.0: 563 | version "1.0.1" 564 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" 565 | dependencies: 566 | is-path-inside "^1.0.0" 567 | 568 | is-path-inside@^1.0.0: 569 | version "1.0.1" 570 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" 571 | dependencies: 572 | path-is-inside "^1.0.1" 573 | 574 | is-promise@^2.1.0: 575 | version "2.1.0" 576 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 577 | 578 | is-resolvable@^1.0.0: 579 | version "1.1.0" 580 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" 581 | 582 | isarray@^1.0.0, isarray@~1.0.0: 583 | version "1.0.0" 584 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 585 | 586 | isexe@^2.0.0: 587 | version "2.0.0" 588 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 589 | 590 | js-tokens@^3.0.2: 591 | version "3.0.2" 592 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 593 | 594 | js-yaml@^3.9.1: 595 | version "3.13.1" 596 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 597 | dependencies: 598 | argparse "^1.0.7" 599 | esprima "^4.0.0" 600 | 601 | json-schema-traverse@^0.3.0: 602 | version "0.3.1" 603 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 604 | 605 | json-stable-stringify-without-jsonify@^1.0.1: 606 | version "1.0.1" 607 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 608 | 609 | levn@^0.3.0, levn@~0.3.0: 610 | version "0.3.0" 611 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 612 | dependencies: 613 | prelude-ls "~1.1.2" 614 | type-check "~0.3.2" 615 | 616 | load-json-file@^2.0.0: 617 | version "2.0.0" 618 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 619 | dependencies: 620 | graceful-fs "^4.1.2" 621 | parse-json "^2.2.0" 622 | pify "^2.0.0" 623 | strip-bom "^3.0.0" 624 | 625 | locate-path@^2.0.0: 626 | version "2.0.0" 627 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 628 | dependencies: 629 | p-locate "^2.0.0" 630 | path-exists "^3.0.0" 631 | 632 | lodash@^4.17.4, lodash@^4.3.0: 633 | version "4.17.10" 634 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" 635 | 636 | lru-cache@^4.0.1: 637 | version "4.1.3" 638 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" 639 | dependencies: 640 | pseudomap "^1.0.2" 641 | yallist "^2.1.2" 642 | 643 | mimic-fn@^1.0.0: 644 | version "1.2.0" 645 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 646 | 647 | minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: 648 | version "3.0.4" 649 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 650 | dependencies: 651 | brace-expansion "^1.1.7" 652 | 653 | minimist@0.0.8: 654 | version "0.0.8" 655 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 656 | 657 | mkdirp@^0.5.1: 658 | version "0.5.1" 659 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 660 | dependencies: 661 | minimist "0.0.8" 662 | 663 | ms@2.0.0: 664 | version "2.0.0" 665 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 666 | 667 | mute-stream@0.0.7: 668 | version "0.0.7" 669 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 670 | 671 | natural-compare@^1.4.0: 672 | version "1.4.0" 673 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 674 | 675 | normalize-package-data@^2.3.2: 676 | version "2.4.0" 677 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 678 | dependencies: 679 | hosted-git-info "^2.1.4" 680 | is-builtin-module "^1.0.0" 681 | semver "2 || 3 || 4 || 5" 682 | validate-npm-package-license "^3.0.1" 683 | 684 | normalize-path@^1.0.0: 685 | version "1.0.0" 686 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" 687 | 688 | object-assign@^4.0.1: 689 | version "4.1.1" 690 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 691 | 692 | once@^1.3.0: 693 | version "1.4.0" 694 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 695 | dependencies: 696 | wrappy "1" 697 | 698 | onetime@^2.0.0: 699 | version "2.0.1" 700 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 701 | dependencies: 702 | mimic-fn "^1.0.0" 703 | 704 | optionator@^0.8.2: 705 | version "0.8.2" 706 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 707 | dependencies: 708 | deep-is "~0.1.3" 709 | fast-levenshtein "~2.0.4" 710 | levn "~0.3.0" 711 | prelude-ls "~1.1.2" 712 | type-check "~0.3.2" 713 | wordwrap "~1.0.0" 714 | 715 | os-tmpdir@~1.0.2: 716 | version "1.0.2" 717 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 718 | 719 | p-limit@^1.1.0: 720 | version "1.3.0" 721 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 722 | dependencies: 723 | p-try "^1.0.0" 724 | 725 | p-locate@^2.0.0: 726 | version "2.0.0" 727 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 728 | dependencies: 729 | p-limit "^1.1.0" 730 | 731 | p-try@^1.0.0: 732 | version "1.0.0" 733 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 734 | 735 | parse-json@^2.2.0: 736 | version "2.2.0" 737 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 738 | dependencies: 739 | error-ex "^1.2.0" 740 | 741 | path-exists@^2.0.0: 742 | version "2.1.0" 743 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 744 | dependencies: 745 | pinkie-promise "^2.0.0" 746 | 747 | path-exists@^3.0.0: 748 | version "3.0.0" 749 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 750 | 751 | path-is-absolute@^1.0.0: 752 | version "1.0.1" 753 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 754 | 755 | path-is-inside@^1.0.1, path-is-inside@^1.0.2: 756 | version "1.0.2" 757 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 758 | 759 | path-parse@^1.0.5: 760 | version "1.0.5" 761 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 762 | 763 | path-type@^2.0.0: 764 | version "2.0.0" 765 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 766 | dependencies: 767 | pify "^2.0.0" 768 | 769 | pify@^2.0.0: 770 | version "2.3.0" 771 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 772 | 773 | pinkie-promise@^2.0.0: 774 | version "2.0.1" 775 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 776 | dependencies: 777 | pinkie "^2.0.0" 778 | 779 | pinkie@^2.0.0: 780 | version "2.0.4" 781 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 782 | 783 | pkg-dir@^1.0.0: 784 | version "1.0.0" 785 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" 786 | dependencies: 787 | find-up "^1.0.0" 788 | 789 | pluralize@^7.0.0: 790 | version "7.0.0" 791 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" 792 | 793 | prelude-ls@~1.1.2: 794 | version "1.1.2" 795 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 796 | 797 | process-nextick-args@~2.0.0: 798 | version "2.0.0" 799 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 800 | 801 | progress@^2.0.0: 802 | version "2.0.0" 803 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 804 | 805 | pseudomap@^1.0.2: 806 | version "1.0.2" 807 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 808 | 809 | read-pkg-up@^2.0.0: 810 | version "2.0.0" 811 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 812 | dependencies: 813 | find-up "^2.0.0" 814 | read-pkg "^2.0.0" 815 | 816 | read-pkg@^2.0.0: 817 | version "2.0.0" 818 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 819 | dependencies: 820 | load-json-file "^2.0.0" 821 | normalize-package-data "^2.3.2" 822 | path-type "^2.0.0" 823 | 824 | readable-stream@^2.2.2: 825 | version "2.3.6" 826 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 827 | dependencies: 828 | core-util-is "~1.0.0" 829 | inherits "~2.0.3" 830 | isarray "~1.0.0" 831 | process-nextick-args "~2.0.0" 832 | safe-buffer "~5.1.1" 833 | string_decoder "~1.1.1" 834 | util-deprecate "~1.0.1" 835 | 836 | regexpp@^1.0.1: 837 | version "1.1.0" 838 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" 839 | 840 | require-uncached@^1.0.3: 841 | version "1.0.3" 842 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 843 | dependencies: 844 | caller-path "^0.1.0" 845 | resolve-from "^1.0.0" 846 | 847 | resolve-from@^1.0.0: 848 | version "1.0.1" 849 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 850 | 851 | resolve@^1.5.0, resolve@^1.6.0: 852 | version "1.8.1" 853 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" 854 | dependencies: 855 | path-parse "^1.0.5" 856 | 857 | restore-cursor@^2.0.0: 858 | version "2.0.0" 859 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 860 | dependencies: 861 | onetime "^2.0.0" 862 | signal-exit "^3.0.2" 863 | 864 | rimraf@^2.2.8: 865 | version "2.6.2" 866 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 867 | dependencies: 868 | glob "^7.0.5" 869 | 870 | run-async@^2.2.0: 871 | version "2.3.0" 872 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 873 | dependencies: 874 | is-promise "^2.1.0" 875 | 876 | rx-lite-aggregates@^4.0.8: 877 | version "4.0.8" 878 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 879 | dependencies: 880 | rx-lite "*" 881 | 882 | rx-lite@*, rx-lite@^4.0.8: 883 | version "4.0.8" 884 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 885 | 886 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 887 | version "5.1.2" 888 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 889 | 890 | "safer-buffer@>= 2.1.2 < 3": 891 | version "2.1.2" 892 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 893 | 894 | "semver@2 || 3 || 4 || 5", semver@^5.3.0: 895 | version "5.5.0" 896 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 897 | 898 | shebang-command@^1.2.0: 899 | version "1.2.0" 900 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 901 | dependencies: 902 | shebang-regex "^1.0.0" 903 | 904 | shebang-regex@^1.0.0: 905 | version "1.0.0" 906 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 907 | 908 | signal-exit@^3.0.2: 909 | version "3.0.2" 910 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 911 | 912 | slice-ansi@1.0.0: 913 | version "1.0.0" 914 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" 915 | dependencies: 916 | is-fullwidth-code-point "^2.0.0" 917 | 918 | spdx-correct@^3.0.0: 919 | version "3.0.0" 920 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" 921 | dependencies: 922 | spdx-expression-parse "^3.0.0" 923 | spdx-license-ids "^3.0.0" 924 | 925 | spdx-exceptions@^2.1.0: 926 | version "2.1.0" 927 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" 928 | 929 | spdx-expression-parse@^3.0.0: 930 | version "3.0.0" 931 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 932 | dependencies: 933 | spdx-exceptions "^2.1.0" 934 | spdx-license-ids "^3.0.0" 935 | 936 | spdx-license-ids@^3.0.0: 937 | version "3.0.0" 938 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" 939 | 940 | sprintf-js@~1.0.2: 941 | version "1.0.3" 942 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 943 | 944 | string-width@^2.1.0, string-width@^2.1.1: 945 | version "2.1.1" 946 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 947 | dependencies: 948 | is-fullwidth-code-point "^2.0.0" 949 | strip-ansi "^4.0.0" 950 | 951 | string_decoder@~1.1.1: 952 | version "1.1.1" 953 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 954 | dependencies: 955 | safe-buffer "~5.1.0" 956 | 957 | strip-ansi@^3.0.0: 958 | version "3.0.1" 959 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 960 | dependencies: 961 | ansi-regex "^2.0.0" 962 | 963 | strip-ansi@^4.0.0: 964 | version "4.0.0" 965 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 966 | dependencies: 967 | ansi-regex "^3.0.0" 968 | 969 | strip-bom@^3.0.0: 970 | version "3.0.0" 971 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 972 | 973 | strip-indent@^2.0.0: 974 | version "2.0.0" 975 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" 976 | 977 | strip-json-comments@~2.0.1: 978 | version "2.0.1" 979 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 980 | 981 | supports-color@^2.0.0: 982 | version "2.0.0" 983 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 984 | 985 | supports-color@^5.3.0: 986 | version "5.4.0" 987 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 988 | dependencies: 989 | has-flag "^3.0.0" 990 | 991 | table@4.0.2: 992 | version "4.0.2" 993 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" 994 | dependencies: 995 | ajv "^5.2.3" 996 | ajv-keywords "^2.1.0" 997 | chalk "^2.1.0" 998 | lodash "^4.17.4" 999 | slice-ansi "1.0.0" 1000 | string-width "^2.1.1" 1001 | 1002 | text-table@~0.2.0: 1003 | version "0.2.0" 1004 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1005 | 1006 | through@^2.3.6: 1007 | version "2.3.8" 1008 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1009 | 1010 | tmp@^0.0.33: 1011 | version "0.0.33" 1012 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1013 | dependencies: 1014 | os-tmpdir "~1.0.2" 1015 | 1016 | type-check@~0.3.2: 1017 | version "0.3.2" 1018 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1019 | dependencies: 1020 | prelude-ls "~1.1.2" 1021 | 1022 | typedarray@^0.0.6: 1023 | version "0.0.6" 1024 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1025 | 1026 | util-deprecate@~1.0.1: 1027 | version "1.0.2" 1028 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1029 | 1030 | validate-npm-package-license@^3.0.1: 1031 | version "3.0.3" 1032 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" 1033 | dependencies: 1034 | spdx-correct "^3.0.0" 1035 | spdx-expression-parse "^3.0.0" 1036 | 1037 | which@^1.2.9: 1038 | version "1.3.1" 1039 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1040 | dependencies: 1041 | isexe "^2.0.0" 1042 | 1043 | wordwrap@~1.0.0: 1044 | version "1.0.0" 1045 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1046 | 1047 | wrappy@1: 1048 | version "1.0.2" 1049 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1050 | 1051 | write@^0.2.1: 1052 | version "0.2.1" 1053 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 1054 | dependencies: 1055 | mkdirp "^0.5.1" 1056 | 1057 | yallist@^2.1.2: 1058 | version "2.1.2" 1059 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1060 | --------------------------------------------------------------------------------