├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── package.json ├── samples ├── async.js ├── child.js ├── collect.js ├── concat.js ├── duplex.js ├── filter.js ├── flatMap.js ├── join.js ├── last.js ├── map.js ├── merge.js ├── parse.js ├── reduce.js ├── replace.js ├── split.js └── stringify.js ├── src ├── index.spec.ts └── index.ts ├── tsconfig.json ├── tslint.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | node_modules 3 | dist 4 | sample_output 5 | yarn-error.log 6 | TODO.md -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "trailingComma": "all" 4 | } 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright JS Foundation and other contributors 4 | 5 | Based on Underscore.js, copyright Jeremy Ashkenas, 6 | DocumentCloud and Investigative Reporters & Editors 7 | 8 | This software consists of voluntary contributions made by many 9 | individuals. For exact contribution history, see the revision history 10 | available at https://github.com/Wenzil/Mhysa 11 | 12 | The following license applies to all parts of this software except as 13 | documented below: 14 | 15 | ==== 16 | 17 | Permission is hereby granted, free of charge, to any person obtaining 18 | a copy of this software and associated documentation files (the 19 | "Software"), to deal in the Software without restriction, including 20 | without limitation the rights to use, copy, modify, merge, publish, 21 | distribute, sublicense, and/or sell copies of the Software, and to 22 | permit persons to whom the Software is furnished to do so, subject to 23 | the following conditions: 24 | 25 | The above copyright notice and this permission notice shall be 26 | included in all copies or substantial portions of the Software. 27 | 28 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 29 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 30 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 31 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 32 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 33 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 34 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 35 | 36 | ==== 37 | 38 | Copyright and related rights for sample code are waived via CC0. Sample 39 | code is defined as all source code displayed within the prose of the 40 | documentation. 41 | 42 | CC0: http://creativecommons.org/publicdomain/zero/1.0/ 43 | 44 | ==== 45 | 46 | Files located in the node_modules and vendor directories are externally 47 | maintained libraries used by this software which have their own 48 | licenses; we recommend you read them, as their terms may differ from the 49 | terms above. 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mhysa 2 | 3 | **Dependency-free stream utils for Node.js** 4 | 5 | Released under the [MIT](https://github.com/Wenzil/Mhysa/blob/master/LICENSE) license. 6 | 7 | ```sh 8 | yarn add mhysa 9 | ``` 10 | 11 | Tested with Node.js versions 8+ 12 | 13 | ## fromArray(array) 14 | Convert an array into a `Readable` stream of its elements 15 | 16 | | Param | Type | Description | 17 | | --- | --- | --- | 18 | | `array` | `T[]` | Array of elements to stream | 19 | 20 | ```js 21 | Mhysa.fromArray(["a", "b"]) 22 | .pipe(process.stdout); 23 | // ab is printed out 24 | ``` 25 | 26 | 27 | ## map(mapper, options) 28 | Return a `ReadWrite` stream that maps streamed chunks 29 | 30 | | Param | Type | Description | 31 | | --- | --- | --- | 32 | | `mapper` | `(chunk: T, encoding: string) => R` | Mapper function, mapping each (chunk, encoding) to a new chunk (or a promise of such) | 33 | | `options` | `object` | | 34 | | `options.readableObjectMode` | `boolean` | Whether this stream should behave as a readable stream of objects | 35 | | `options.writableObjectMode` | `boolean` | Whether this stream should behave as a writable stream of objects | 36 | 37 | ```js 38 | Mhysa.fromArray(["a", "b"]) 39 | .pipe(Mhysa.map(s => s.toUpperCase())) 40 | .pipe(process.stdout); 41 | // AB is printed out 42 | ``` 43 | 44 | 45 | ## flatMap(mapper, options) 46 | Return a `ReadWrite` stream that flat maps streamed chunks 47 | 48 | | Param | Type | Description | 49 | | --- | --- | --- | 50 | | `mapper` | `(chunk: T, encoding: string) => R[]` | Mapper function, mapping each (chunk, encoding) to an array of new chunks (or a promise of such) | 51 | | `options` | `object` | | 52 | | `options.readableObjectMode` | `boolean` | Whether this stream should behave as a readable stream of objects | 53 | | `options.writableObjectMode` | `boolean` | Whether this stream should behave as a writable stream of objects | 54 | 55 | ```js 56 | Mhysa.fromArray(["a", "AA"]) 57 | .pipe(Mhysa.flatMap(s => new Array(s.length).fill(s))) 58 | .pipe(process.stdout); 59 | // aAAAA is printed out 60 | ``` 61 | 62 | 63 | ## filter(predicate, options) 64 | Return a `ReadWrite` stream that filters out streamed chunks for which the predicate does not hold 65 | 66 | | Param | Type | Description | 67 | | --- | --- | --- | 68 | | `predicate` | `(chunk: T, encoding: string) => boolean` | Predicate with which to filter scream chunks | 69 | | `options` | `object` | | 70 | | `options.objectMode` | `boolean` | `boolean` | Whether this stream should behave as a stream of objects | 71 | 72 | ```js 73 | Mhysa.fromArray(["a", "b", "c"]) 74 | .pipe(Mhysa.filter(s => s !== "b")) 75 | .pipe(process.stdout); 76 | // ac is printed out 77 | ``` 78 | 79 | 80 | ## reduce(iteratee, initialValue, options) 81 | Return a `ReadWrite` stream that reduces streamed chunks down to a single value and yield that 82 | value 83 | 84 | | Param | Type | Description | 85 | | --- | --- | --- | 86 | | `iteratee` | `(chunk: T, encoding: string) => R` | Reducer function to apply on each streamed chunk | 87 | | `initialValue` | `T` | Initial value | 88 | | `options` | `object` | | 89 | | `options.readableObjectMode` | `boolean` | Whether this stream should behave as a readable stream of objects | 90 | | `options.writableObjectMode` | `boolean` | Whether this stream should behave as a writable stream of objects | 91 | 92 | ```js 93 | Mhysa.fromArray(["a", "b", "cc"]) 94 | .pipe(Mhysa.reduce((acc, s) => ({ ...acc, [s]: s.length }), {})) 95 | .pipe(Mhysa.stringify()) 96 | .pipe(process.stdout); 97 | // {"a":1,"b":1","c":2} is printed out 98 | ``` 99 | 100 | 101 | ## split(separator) 102 | Return a `ReadWrite` stream that splits streamed chunks using the given separator 103 | 104 | | Param | Type | Description | 105 | | --- | --- | --- | 106 | | `separator` | `string` | Separator to split by, defaulting to `"\n"` | 107 | | `options` | `object` | | 108 | | `options.encoding` | `string` | Character encoding to use for decoding chunks. Defaults to utf8 109 | 110 | ```js 111 | Mhysa.fromArray(["a,b", "c,d"]) 112 | .pipe(Mhysa.split(",")) 113 | .pipe(Mhysa.join("|")) 114 | .pipe(process.stdout); 115 | // a|bc|d is printed out 116 | ``` 117 | 118 | 119 | ## join(separator) 120 | Return a `ReadWrite` stream that joins streamed chunks using the given separator 121 | 122 | | Param | Type | Description | 123 | | --- | --- | --- | 124 | | `separator` | `string` | Separator to join with | 125 | | `options` | `object` | | 126 | | `options.encoding` | `string` | Character encoding to use for decoding chunks. Defaults to utf8 127 | 128 | ```js 129 | Mhysa.fromArray(["a", "b", "c"]) 130 | .pipe(Mhysa.join(",")) 131 | .pipe(process.stdout); 132 | // a,b,c is printed out 133 | ``` 134 | 135 | 136 | ## replace(searchValue, replaceValue) 137 | Return a `ReadWrite` stream that replaces occurrences of the given string or regular expression in 138 | the streamed chunks with the specified replacement string 139 | 140 | | Param | Type | Description | 141 | | --- | --- | --- | 142 | | `searchValue` | `string \| RegExp` | Search string to use | 143 | | `replaceValue` | `string` | Replacement string to use | 144 | | `options` | `object` | | 145 | | `options.encoding` | `string` | Character encoding to use for decoding chunks. Defaults to utf8 146 | 147 | ```js 148 | Mhysa.fromArray(["a1", "b22", "c333"]) 149 | .pipe(Mhysa.replace(/b\d+/, "B")) 150 | .pipe(process.stdout); 151 | // a1Bc333 is printed out 152 | ``` 153 | 154 | 155 | ## parse() 156 | Return a `ReadWrite` stream that parses the streamed chunks as JSON 157 | 158 | ```js 159 | Mhysa.fromArray(['{ "a": "b" }']) 160 | .pipe(Mhysa.parse()) 161 | .once("data", object => console.log(object)); 162 | // { a: 'b' } is printed out 163 | ``` 164 | 165 | 166 | ## stringify() 167 | Return a `ReadWrite` stream that stringifies the streamed chunks to JSON 168 | 169 | ```js 170 | Mhysa.fromArray([{ a: "b" }]) 171 | .pipe(Mhysa.stringify()) 172 | .pipe(process.stdout); 173 | // {"a":"b"} is printed out 174 | ``` 175 | 176 | 177 | ## collect(options) 178 | Return a `ReadWrite` stream that collects streamed chunks into an array or buffer 179 | 180 | | Param | Type | Description | 181 | | --- | --- | --- | 182 | | `options` | `object` | | 183 | | `options.objectMode` | `boolean` | Whether this stream should behave as a stream of objects | 184 | 185 | ```js 186 | Mhysa.fromArray(["a", "b", "c"]) 187 | .pipe(Mhysa.collect({ objectMode: true })) 188 | .once("data", object => console.log(object)); 189 | // [ 'a', 'b', 'c' ] is printed out 190 | ``` 191 | 192 | 193 | ## concat(streams) 194 | Return a `Readable` stream of readable streams concatenated together 195 | 196 | | Param | Type | Description | 197 | | --- | --- | --- | 198 | | `streams` | `...Readable[]` | Readable streams to concatenate | 199 | 200 | ```js 201 | const source1 = new Readable(); 202 | const source2 = new Readable(); 203 | Mhysa.concat(source1, source2).pipe(process.stdout) 204 | source1.push("a1 "); 205 | source2.push("c3 "); 206 | source1.push("b2 "); 207 | source2.push("d4 "); 208 | source1.push(null); 209 | source2.push(null); 210 | // a1 b2 c3 d4 is printed out 211 | ``` 212 | 213 | 214 | ## merge(streams) 215 | Return a `Readable` stream of readable streams merged together in chunk arrival order 216 | 217 | | Param | Type | Description | 218 | | --- | --- | --- | 219 | | `streams` | `...Readable[]` | Readable streams to merge | 220 | 221 | ```js 222 | const source1 = new Readable({ read() {} }); 223 | const source2 = new Readable({ read() {} }); 224 | Mhysa.merge(source1, source2).pipe(process.stdout); 225 | source1.push("a1 "); 226 | setTimeout(() => source2.push("c3 "), 10); 227 | setTimeout(() => source1.push("b2 "), 20); 228 | setTimeout(() => source2.push("d4 "), 30); 229 | setTimeout(() => source1.push(null), 40); 230 | setTimeout(() => source2.push(null), 50); 231 | // a1 c3 b2 d4 is printed out 232 | ``` 233 | 234 | 235 | ## duplex(writable, readable) 236 | Return a `Duplex` stream from a writable stream that is assumed to somehow, when written to, 237 | cause the given readable stream to yield chunks 238 | 239 | | Param | Type | Description | 240 | | --- | --- | --- | 241 | | `writable` | `Writable` | Writable stream assumed to cause the readable stream to yield chunks when written to | 242 | | `readable` | `Readable` | Readable stream assumed to yield chunks when the writable stream is written to | 243 | 244 | ```js 245 | const catProcess = require("child_process").exec("grep -o ab"); 246 | Mhysa.fromArray(["a", "b", "c"]) 247 | .pipe(Mhysa.duplex(catProcess.stdin, catProcess.stdout)) 248 | .pipe(process.stdout); 249 | // ab is printed out 250 | ``` 251 | 252 | 253 | ## child(childProcess) 254 | Return a `Duplex` stream from a child process' stdin and stdout 255 | 256 | | Param | Type | Description | 257 | | --- | --- | --- | 258 | | childProcess | `ChildProcess` | Child process from which to create duplex stream | 259 | 260 | ```js 261 | const catProcess = require("child_process").exec("grep -o ab"); 262 | Mhysa.fromArray(["a", "b", "c"]) 263 | .pipe(Mhysa.child(catProcess)) 264 | .pipe(process.stdout); 265 | // ab is printed out 266 | ``` 267 | 268 | 269 | ## last(readable) 270 | Return a `Promise` resolving to the last streamed chunk of the given readable stream, after it has 271 | ended 272 | 273 | | Param | Type | Description | 274 | | --- | --- | --- | 275 | | `readable` | `Readable` | Readable stream to wait on | 276 | 277 | ```js 278 | let f = async () => { 279 | const source = Mhysa.fromArray(["a", "b", "c"]); 280 | console.log(await Mhysa.last(source)); 281 | }; 282 | f(); 283 | // c is printed out 284 | ``` 285 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mhysa", 3 | "version": "1.0.2", 4 | "description": "Streams and event emitter utils for Node.js", 5 | "keywords": [ 6 | "promise", 7 | "stream", 8 | "event emitter", 9 | "utils" 10 | ], 11 | "author": { 12 | "name": "Wenzil" 13 | }, 14 | "license": "MIT", 15 | "main": "dist/index.js", 16 | "types": "dist/index.d.ts", 17 | "files": [ 18 | "dist" 19 | ], 20 | "repository": { 21 | "url": "git@github.com:Wenzil/Mhysa.git", 22 | "type": "git" 23 | }, 24 | "scripts": { 25 | "test": "ava", 26 | "lint": "tslint -p tsconfig.json", 27 | "validate:tslint": "tslint-config-prettier-check ./tslint.json", 28 | "prepublishOnly": "yarn lint && yarn test && yarn tsc" 29 | }, 30 | "dependencies": {}, 31 | "devDependencies": { 32 | "@types/chai": "^4.1.7", 33 | "@types/node": "^10.12.10", 34 | "ava": "^1.0.0-rc.2", 35 | "chai": "^4.2.0", 36 | "mhysa": "./", 37 | "prettier": "^1.14.3", 38 | "ts-node": "^7.0.1", 39 | "tslint": "^5.11.0", 40 | "tslint-config-prettier": "^1.16.0", 41 | "tslint-plugin-prettier": "^2.0.1", 42 | "typescript": "^3.1.6" 43 | }, 44 | "ava": { 45 | "files": [ 46 | "src/**/*.spec.ts" 47 | ], 48 | "sources": [ 49 | "src/**/*.ts" 50 | ], 51 | "compileEnhancements": false, 52 | "failWithoutAssertions": false, 53 | "extensions": [ 54 | "ts" 55 | ], 56 | "require": [ 57 | "ts-node/register/transpile-only" 58 | ] 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /samples/async.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a", "b", "c"]) 4 | .pipe(Mhysa.map(s => Promise.resolve(s + s))) 5 | .pipe(Mhysa.flatMap(s => Promise.resolve([s, s.toUpperCase()]))) 6 | .pipe(Mhysa.filter(s => Promise.resolve(s !== "bb"))) 7 | .pipe(Mhysa.join(",")) 8 | .pipe(process.stdout); 9 | -------------------------------------------------------------------------------- /samples/child.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | const catProcess = require("child_process").exec("grep -o ab"); 3 | 4 | Mhysa.fromArray(["a", "b", "c"]) 5 | .pipe(Mhysa.child(catProcess)) 6 | .pipe(process.stdout); 7 | -------------------------------------------------------------------------------- /samples/collect.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a", "b", "c"]) 4 | .pipe(Mhysa.collect({ objectMode: true })) 5 | .on("data", object => console.log(object)); 6 | -------------------------------------------------------------------------------- /samples/concat.js: -------------------------------------------------------------------------------- 1 | const { Readable } = require("stream"); 2 | const Mhysa = require("mhysa"); 3 | 4 | const source1 = new Readable(); 5 | const source2 = new Readable(); 6 | Mhysa.concat(source1, source2).pipe(process.stdout); 7 | source1.push("a1 "); 8 | source2.push("c3 "); 9 | source1.push("b2 "); 10 | source2.push("d4 "); 11 | source1.push(null); 12 | source2.push(null); 13 | -------------------------------------------------------------------------------- /samples/duplex.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | const catProcess = require("child_process").exec("grep -o ab"); 3 | 4 | Mhysa.fromArray(["a", "b", "c"]) 5 | .pipe(Mhysa.duplex(catProcess.stdin, catProcess.stdout)) 6 | .pipe(process.stdout); 7 | -------------------------------------------------------------------------------- /samples/filter.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a", "b", "c"]) 4 | .pipe(Mhysa.filter(s => s !== "b")) 5 | .pipe(Mhysa.join(",")) 6 | .pipe(process.stdout); 7 | -------------------------------------------------------------------------------- /samples/flatMap.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a", "AA"]) 4 | .pipe(Mhysa.flatMap(s => new Array(s.length).fill(s))) 5 | .pipe(Mhysa.join(",")) 6 | .pipe(process.stdout); 7 | -------------------------------------------------------------------------------- /samples/join.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a", "b", "c"]) 4 | .pipe(Mhysa.join(",")) 5 | .pipe(process.stdout); 6 | -------------------------------------------------------------------------------- /samples/last.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | let f = async () => { 4 | const source = Mhysa.fromArray(["a", "b", "c"]); 5 | console.log(await Mhysa.last(source)); 6 | }; 7 | f(); 8 | -------------------------------------------------------------------------------- /samples/map.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a", "b"]) 4 | .pipe(Mhysa.map(s => s.toUpperCase())) 5 | .pipe(Mhysa.join(",")) 6 | .pipe(process.stdout); 7 | -------------------------------------------------------------------------------- /samples/merge.js: -------------------------------------------------------------------------------- 1 | const { Readable } = require("stream"); 2 | const Mhysa = require("mhysa"); 3 | 4 | const source1 = new Readable({ read() {} }); 5 | const source2 = new Readable({ read() {} }); 6 | Mhysa.merge(source1, source2).pipe(process.stdout); 7 | source1.push("a1 "); 8 | setTimeout(() => source2.push("c3 "), 10); 9 | setTimeout(() => source1.push("b2 "), 20); 10 | setTimeout(() => source2.push("d4 "), 30); 11 | setTimeout(() => source1.push(null), 40); 12 | setTimeout(() => source2.push(null), 50); 13 | -------------------------------------------------------------------------------- /samples/parse.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(['{ "a": "b" }']) 4 | .pipe(Mhysa.parse()) 5 | .on("data", object => console.log(object)); 6 | -------------------------------------------------------------------------------- /samples/reduce.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a", "b", "cc"]) 4 | .pipe(Mhysa.reduce((acc, s) => ({ ...acc, [s]: s.length }), {})) 5 | .pipe(Mhysa.stringify()) 6 | .pipe(process.stdout); 7 | -------------------------------------------------------------------------------- /samples/replace.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a1", "b22", "c333"]) 4 | .pipe(Mhysa.replace(/b\d+/, "B")) 5 | .pipe(process.stdout); 6 | -------------------------------------------------------------------------------- /samples/split.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray(["a,b", "c,d"]) 4 | .pipe(Mhysa.split(",")) 5 | .pipe(Mhysa.join("|")) 6 | .pipe(process.stdout); 7 | -------------------------------------------------------------------------------- /samples/stringify.js: -------------------------------------------------------------------------------- 1 | const Mhysa = require("mhysa"); 2 | 3 | Mhysa.fromArray([{ a: "b" }]) 4 | .pipe(Mhysa.stringify()) 5 | .pipe(process.stdout); 6 | -------------------------------------------------------------------------------- /src/index.spec.ts: -------------------------------------------------------------------------------- 1 | import * as cp from "child_process"; 2 | import test from "ava"; 3 | import { expect } from "chai"; 4 | import { Readable } from "stream"; 5 | import { 6 | fromArray, 7 | map, 8 | flatMap, 9 | filter, 10 | split, 11 | join, 12 | replace, 13 | parse, 14 | stringify, 15 | collect, 16 | concat, 17 | merge, 18 | duplex, 19 | child, 20 | reduce, 21 | last, 22 | } from "."; 23 | 24 | test.cb("fromArray() streams array elements in flowing mode", t => { 25 | t.plan(3); 26 | const elements = ["a", "b", "c"]; 27 | const stream = fromArray(elements); 28 | let i = 0; 29 | stream 30 | .on("data", (element: string) => { 31 | expect(element).to.equal(elements[i]); 32 | t.pass(); 33 | i++; 34 | }) 35 | .on("error", t.end) 36 | .on("end", t.end); 37 | }); 38 | 39 | test.cb("fromArray() streams array elements in paused mode", t => { 40 | t.plan(3); 41 | const elements = ["a", "b", "c"]; 42 | const stream = fromArray(elements); 43 | let i = 0; 44 | stream 45 | .on("readable", () => { 46 | let element = stream.read(); 47 | while (element !== null) { 48 | expect(element).to.equal(elements[i]); 49 | t.pass(); 50 | i++; 51 | element = stream.read(); 52 | } 53 | }) 54 | .on("error", t.end) 55 | .on("end", t.end); 56 | }); 57 | 58 | test.cb("fromArray() ends immediately if there are no array elements", t => { 59 | t.plan(0); 60 | fromArray([]) 61 | .on("data", () => t.fail()) 62 | .on("error", t.end) 63 | .on("end", t.end); 64 | }); 65 | 66 | test.cb("map() maps elements synchronously", t => { 67 | t.plan(3); 68 | const source = new Readable({ objectMode: true }); 69 | const expectedElements = ["A", "B", "C"]; 70 | let i = 0; 71 | source 72 | .pipe(map((element: string) => element.toUpperCase())) 73 | .on("data", (element: string) => { 74 | expect(element).to.equal(expectedElements[i]); 75 | t.pass(); 76 | i++; 77 | }) 78 | .on("error", t.end) 79 | .on("end", t.end); 80 | 81 | source.push("a"); 82 | source.push("b"); 83 | source.push("c"); 84 | source.push(null); 85 | }); 86 | 87 | test.cb("map() maps elements asynchronously", t => { 88 | t.plan(3); 89 | const source = new Readable({ objectMode: true }); 90 | const expectedElements = ["A", "B", "C"]; 91 | let i = 0; 92 | source 93 | .pipe( 94 | map(async (element: string) => { 95 | await Promise.resolve(); 96 | return element.toUpperCase(); 97 | }), 98 | ) 99 | .on("data", (element: string) => { 100 | expect(element).to.equal(expectedElements[i]); 101 | t.pass(); 102 | i++; 103 | }) 104 | .on("error", t.end) 105 | .on("end", t.end); 106 | 107 | source.push("a"); 108 | source.push("b"); 109 | source.push("c"); 110 | source.push(null); 111 | }); 112 | 113 | test.cb("map() emits errors during synchronous mapping", t => { 114 | t.plan(2); 115 | const source = new Readable({ objectMode: true }); 116 | source 117 | .pipe( 118 | map((element: string) => { 119 | if (element !== "a") { 120 | throw new Error("Failed mapping"); 121 | } 122 | return element.toUpperCase(); 123 | }), 124 | ) 125 | .resume() 126 | .on("error", err => { 127 | expect(err.message).to.equal("Failed mapping"); 128 | t.pass(); 129 | }) 130 | .on("end", t.end); 131 | 132 | source.push("a"); 133 | source.push("b"); 134 | source.push("c"); 135 | source.push(null); 136 | }); 137 | 138 | test.cb("map() emits errors during asynchronous mapping", t => { 139 | t.plan(2); 140 | const source = new Readable({ objectMode: true }); 141 | source 142 | .pipe( 143 | map(async (element: string) => { 144 | await Promise.resolve(); 145 | if (element !== "a") { 146 | throw new Error("Failed mapping"); 147 | } 148 | return element.toUpperCase(); 149 | }), 150 | ) 151 | .resume() 152 | .on("error", err => { 153 | expect(err.message).to.equal("Failed mapping"); 154 | t.pass(); 155 | }) 156 | .on("end", t.end); 157 | 158 | source.push("a"); 159 | source.push("b"); 160 | source.push("c"); 161 | source.push(null); 162 | }); 163 | 164 | test.cb("flatMap() maps elements synchronously", t => { 165 | t.plan(6); 166 | const source = new Readable({ objectMode: true }); 167 | const expectedElements = ["a", "A", "b", "B", "c", "C"]; 168 | let i = 0; 169 | source 170 | .pipe(flatMap((element: string) => [element, element.toUpperCase()])) 171 | .on("data", (element: string) => { 172 | expect(element).to.equal(expectedElements[i]); 173 | t.pass(); 174 | i++; 175 | }) 176 | .on("end", t.end); 177 | 178 | source.push("a"); 179 | source.push("b"); 180 | source.push("c"); 181 | source.push(null); 182 | }); 183 | 184 | test.cb("flatMap() maps elements asynchronously", t => { 185 | t.plan(6); 186 | const source = new Readable({ objectMode: true }); 187 | const expectedElements = ["a", "A", "b", "B", "c", "C"]; 188 | let i = 0; 189 | source 190 | .pipe( 191 | flatMap(async (element: string) => { 192 | await Promise.resolve(); 193 | return [element, element.toUpperCase()]; 194 | }), 195 | ) 196 | .on("data", (element: string) => { 197 | expect(element).to.equal(expectedElements[i]); 198 | t.pass(); 199 | i++; 200 | }) 201 | .on("end", t.end); 202 | 203 | source.push("a"); 204 | source.push("b"); 205 | source.push("c"); 206 | source.push(null); 207 | }); 208 | 209 | test.cb("flatMap() emits errors during synchronous mapping", t => { 210 | t.plan(2); 211 | const source = new Readable({ objectMode: true }); 212 | source 213 | .pipe( 214 | flatMap((element: string) => { 215 | if (element !== "a") { 216 | throw new Error("Failed mapping"); 217 | } 218 | return [element, element.toUpperCase()]; 219 | }), 220 | ) 221 | .resume() 222 | .on("error", err => { 223 | expect(err.message).to.equal("Failed mapping"); 224 | t.pass(); 225 | }) 226 | .on("end", t.end); 227 | 228 | source.push("a"); 229 | source.push("b"); 230 | source.push("c"); 231 | source.push(null); 232 | }); 233 | 234 | test.cb("flatMap() emits errors during asynchronous mapping", t => { 235 | t.plan(2); 236 | const source = new Readable({ objectMode: true }); 237 | source 238 | .pipe( 239 | flatMap(async (element: string) => { 240 | await Promise.resolve(); 241 | if (element !== "a") { 242 | throw new Error("Failed mapping"); 243 | } 244 | return [element, element.toUpperCase()]; 245 | }), 246 | ) 247 | .resume() 248 | .on("error", err => { 249 | expect(err.message).to.equal("Failed mapping"); 250 | t.pass(); 251 | }) 252 | .on("end", t.end); 253 | 254 | source.push("a"); 255 | source.push("b"); 256 | source.push("c"); 257 | source.push(null); 258 | }); 259 | 260 | test.cb("filter() filters elements synchronously", t => { 261 | t.plan(2); 262 | const source = new Readable({ objectMode: true }); 263 | const expectedElements = ["a", "c"]; 264 | let i = 0; 265 | source 266 | .pipe(filter((element: string) => element !== "b")) 267 | .on("data", (element: string) => { 268 | expect(element).to.equal(expectedElements[i]); 269 | t.pass(); 270 | i++; 271 | }) 272 | .on("error", t.end) 273 | .on("end", t.end); 274 | 275 | source.push("a"); 276 | source.push("b"); 277 | source.push("c"); 278 | source.push(null); 279 | }); 280 | 281 | test.cb("filter() filters elements asynchronously", t => { 282 | t.plan(2); 283 | const source = new Readable({ objectMode: true }); 284 | const expectedElements = ["a", "c"]; 285 | let i = 0; 286 | source 287 | .pipe( 288 | filter(async (element: string) => { 289 | await Promise.resolve(); 290 | return element !== "b"; 291 | }), 292 | ) 293 | .on("data", (element: string) => { 294 | expect(element).to.equal(expectedElements[i]); 295 | t.pass(); 296 | i++; 297 | }) 298 | .on("error", t.end) 299 | .on("end", t.end); 300 | 301 | source.push("a"); 302 | source.push("b"); 303 | source.push("c"); 304 | source.push(null); 305 | }); 306 | 307 | test.cb("filter() emits errors during synchronous filtering", t => { 308 | t.plan(2); 309 | const source = new Readable({ objectMode: true }); 310 | source 311 | .pipe( 312 | filter((element: string) => { 313 | if (element !== "a") { 314 | throw new Error("Failed filtering"); 315 | } 316 | return true; 317 | }), 318 | ) 319 | .resume() 320 | .on("error", err => { 321 | expect(err.message).to.equal("Failed filtering"); 322 | t.pass(); 323 | }) 324 | .on("end", t.end); 325 | 326 | source.push("a"); 327 | source.push("b"); 328 | source.push("c"); 329 | source.push(null); 330 | }); 331 | 332 | test.cb("filter() emits errors during asynchronous filtering", t => { 333 | t.plan(2); 334 | const source = new Readable({ objectMode: true }); 335 | source 336 | .pipe( 337 | filter(async (element: string) => { 338 | await Promise.resolve(); 339 | if (element !== "a") { 340 | throw new Error("Failed filtering"); 341 | } 342 | return true; 343 | }), 344 | ) 345 | .resume() 346 | .on("error", err => { 347 | expect(err.message).to.equal("Failed filtering"); 348 | t.pass(); 349 | }) 350 | .on("end", t.end); 351 | 352 | source.push("a"); 353 | source.push("b"); 354 | source.push("c"); 355 | source.push(null); 356 | }); 357 | 358 | test.cb("reduce() reduces elements synchronously", t => { 359 | t.plan(1); 360 | const source = new Readable({ objectMode: true }); 361 | const expectedValue = 6; 362 | source 363 | .pipe(reduce((acc: number, element: string) => acc + element.length, 0)) 364 | .on("data", (element: string) => { 365 | expect(element).to.equal(expectedValue); 366 | t.pass(); 367 | }) 368 | .on("error", t.end) 369 | .on("end", t.end); 370 | 371 | source.push("ab"); 372 | source.push("cd"); 373 | source.push("ef"); 374 | source.push(null); 375 | }); 376 | 377 | test.cb("reduce() reduces elements asynchronously", t => { 378 | t.plan(1); 379 | const source = new Readable({ objectMode: true }); 380 | const expectedValue = 6; 381 | source 382 | .pipe( 383 | reduce(async (acc: number, element: string) => { 384 | await Promise.resolve(); 385 | return acc + element.length; 386 | }, 0), 387 | ) 388 | .on("data", (element: string) => { 389 | expect(element).to.equal(expectedValue); 390 | t.pass(); 391 | }) 392 | .on("error", t.end) 393 | .on("end", t.end); 394 | 395 | source.push("ab"); 396 | source.push("cd"); 397 | source.push("ef"); 398 | source.push(null); 399 | }); 400 | 401 | test.cb("reduce() emits errors during synchronous reduce", t => { 402 | t.plan(2); 403 | const source = new Readable({ objectMode: true }); 404 | source 405 | .pipe( 406 | reduce((acc: number, element: string) => { 407 | if (element !== "ab") { 408 | throw new Error("Failed reduce"); 409 | } 410 | return acc + element.length; 411 | }, 0), 412 | ) 413 | .resume() 414 | .on("error", err => { 415 | expect(err.message).to.equal("Failed reduce"); 416 | t.pass(); 417 | }) 418 | .on("end", t.end); 419 | 420 | source.push("ab"); 421 | source.push("cd"); 422 | source.push("ef"); 423 | source.push(null); 424 | }); 425 | 426 | test.cb("reduce() emits errors during asynchronous reduce", t => { 427 | t.plan(2); 428 | const source = new Readable({ objectMode: true }); 429 | source 430 | .pipe( 431 | reduce(async (acc: number, element: string) => { 432 | await Promise.resolve(); 433 | if (element !== "ab") { 434 | throw new Error("Failed mapping"); 435 | } 436 | return acc + element.length; 437 | }, 0), 438 | ) 439 | .resume() 440 | .on("error", err => { 441 | expect(err.message).to.equal("Failed mapping"); 442 | t.pass(); 443 | }) 444 | .on("end", t.end); 445 | 446 | source.push("ab"); 447 | source.push("cd"); 448 | source.push("ef"); 449 | source.push(null); 450 | }); 451 | 452 | test.cb("split() splits chunks using the default separator (\\n)", t => { 453 | t.plan(5); 454 | const source = new Readable({ objectMode: true }); 455 | const expectedParts = ["ab", "c", "d", "ef", ""]; 456 | let i = 0; 457 | source 458 | .pipe(split()) 459 | .on("data", part => { 460 | expect(part).to.equal(expectedParts[i]); 461 | t.pass(); 462 | i++; 463 | }) 464 | .on("error", t.end) 465 | .on("end", t.end); 466 | 467 | source.push("ab\n"); 468 | source.push("c"); 469 | source.push("\n"); 470 | source.push("d"); 471 | source.push("\nef\n"); 472 | source.push(null); 473 | }); 474 | 475 | test.cb("split() splits chunks using the specified separator", t => { 476 | t.plan(6); 477 | const source = new Readable({ objectMode: true }); 478 | const expectedParts = ["ab", "c", "d", "e", "f", ""]; 479 | let i = 0; 480 | source 481 | .pipe(split("|")) 482 | .on("data", (part: string) => { 483 | expect(part).to.equal(expectedParts[i]); 484 | t.pass(); 485 | i++; 486 | }) 487 | .on("error", t.end) 488 | .on("end", t.end); 489 | 490 | source.push("ab|"); 491 | source.push("c|d"); 492 | source.push("|"); 493 | source.push("e"); 494 | source.push("|f|"); 495 | source.push(null); 496 | }); 497 | 498 | test.cb( 499 | "split() splits utf8 encoded buffers using the specified separator", 500 | t => { 501 | t.plan(3); 502 | const expectedElements = ["a", "b", "c"]; 503 | let i = 0; 504 | const through = split(","); 505 | const buf = Buffer.from("a,b,c"); 506 | through 507 | .on("data", element => { 508 | expect(element).to.equal(expectedElements[i]); 509 | i++; 510 | t.pass(); 511 | }) 512 | .on("error", t.end) 513 | .on("end", t.end); 514 | 515 | for (let j = 0; j < buf.length; ++j) { 516 | through.write(buf.slice(j, j + 1)); 517 | } 518 | through.end(); 519 | }, 520 | ); 521 | 522 | test.cb( 523 | "split() splits utf8 encoded buffers with multi-byte characters using the specified separator", 524 | t => { 525 | t.plan(3); 526 | const expectedElements = ["一", "一", "一"]; 527 | let i = 0; 528 | const through = split(","); 529 | const buf = Buffer.from("一,一,一"); // Those spaces are multi-byte utf8 characters (code: 4E00) 530 | through 531 | .on("data", element => { 532 | expect(element).to.equal(expectedElements[i]); 533 | i++; 534 | t.pass(); 535 | }) 536 | .on("error", t.end) 537 | .on("end", t.end); 538 | 539 | for (let j = 0; j < buf.length; ++j) { 540 | through.write(buf.slice(j, j + 1)); 541 | } 542 | through.end(); 543 | }, 544 | ); 545 | 546 | test.cb("join() joins chunks using the specified separator", t => { 547 | t.plan(9); 548 | const source = new Readable({ objectMode: true }); 549 | const expectedParts = ["ab|", "|", "c|d", "|", "|", "|", "e", "|", "|f|"]; 550 | let i = 0; 551 | source 552 | .pipe(join("|")) 553 | .on("data", part => { 554 | expect(part).to.equal(expectedParts[i]); 555 | t.pass(); 556 | i++; 557 | }) 558 | .on("error", t.end) 559 | .on("end", t.end); 560 | 561 | source.push("ab|"); 562 | source.push("c|d"); 563 | source.push("|"); 564 | source.push("e"); 565 | source.push("|f|"); 566 | source.push(null); 567 | }); 568 | 569 | test.cb( 570 | "join() joins chunks using the specified separator without breaking up multi-byte characters " + 571 | "spanning multiple chunks", 572 | t => { 573 | t.plan(5); 574 | const source = new Readable({ objectMode: true }); 575 | const expectedParts = ["ø", "|", "ö", "|", "一"]; 576 | let i = 0; 577 | source 578 | .pipe(join("|")) 579 | .on("data", part => { 580 | expect(part).to.equal(expectedParts[i]); 581 | t.pass(); 582 | i++; 583 | }) 584 | .on("error", t.end) 585 | .on("end", t.end); 586 | 587 | source.push(Buffer.from("ø").slice(0, 1)); // 2-byte character spanning two chunks 588 | source.push(Buffer.from("ø").slice(1, 2)); 589 | source.push(Buffer.from("ö").slice(0, 1)); // 2-byte character spanning two chunks 590 | source.push(Buffer.from("ö").slice(1, 2)); 591 | source.push(Buffer.from("一").slice(0, 1)); // 3-byte character spanning three chunks 592 | source.push(Buffer.from("一").slice(1, 2)); 593 | source.push(Buffer.from("一").slice(2, 3)); 594 | source.push(null); 595 | }, 596 | ); 597 | 598 | test.cb( 599 | "replace() replaces occurrences of the given string in the streamed elements with the specified " + 600 | "replacement string", 601 | t => { 602 | t.plan(3); 603 | const source = new Readable({ objectMode: true }); 604 | const expectedElements = ["abc", "xyf", "ghi"]; 605 | let i = 0; 606 | source 607 | .pipe(replace("de", "xy")) 608 | .on("data", part => { 609 | expect(part).to.equal(expectedElements[i]); 610 | t.pass(); 611 | i++; 612 | }) 613 | .on("error", t.end) 614 | .on("end", t.end); 615 | 616 | source.push("abc"); 617 | source.push("def"); 618 | source.push("ghi"); 619 | source.push(null); 620 | }, 621 | ); 622 | 623 | test.cb( 624 | "replace() replaces occurrences of the given regular expression in the streamed elements with " + 625 | "the specified replacement string", 626 | t => { 627 | t.plan(3); 628 | const source = new Readable({ objectMode: true }); 629 | const expectedElements = ["abc", "xyz", "ghi"]; 630 | let i = 0; 631 | source 632 | .pipe(replace(/^def$/, "xyz")) 633 | .on("data", part => { 634 | expect(part).to.equal(expectedElements[i]); 635 | t.pass(); 636 | i++; 637 | }) 638 | .on("error", t.end) 639 | .on("end", t.end); 640 | 641 | source.push("abc"); 642 | source.push("def"); 643 | source.push("ghi"); 644 | source.push(null); 645 | }, 646 | ); 647 | 648 | test.cb( 649 | "replace() replaces occurrences of the given multi-byte character even if it spans multiple chunks", 650 | t => { 651 | t.plan(3); 652 | const source = new Readable({ objectMode: true }); 653 | const expectedElements = ["ø", "O", "a"]; 654 | let i = 0; 655 | source 656 | .pipe(replace("ö", "O")) 657 | .on("data", part => { 658 | expect(part).to.equal(expectedElements[i]); 659 | t.pass(); 660 | i++; 661 | }) 662 | .on("error", t.end) 663 | .on("end", t.end); 664 | 665 | source.push(Buffer.from("ø").slice(0, 1)); // 2-byte character spanning two chunks 666 | source.push(Buffer.from("ø").slice(1, 2)); 667 | source.push(Buffer.from("ö").slice(0, 1)); // 2-byte character spanning two chunks 668 | source.push(Buffer.from("ö").slice(1, 2)); 669 | source.push("a"); 670 | source.push(null); 671 | }, 672 | ); 673 | 674 | test.cb("parse() parses the streamed elements as JSON", t => { 675 | t.plan(3); 676 | const source = new Readable({ objectMode: true }); 677 | const expectedElements = ["abc", {}, []]; 678 | let i = 0; 679 | source 680 | .pipe(parse()) 681 | .on("data", part => { 682 | expect(part).to.deep.equal(expectedElements[i]); 683 | t.pass(); 684 | i++; 685 | }) 686 | .on("error", t.end) 687 | .on("end", t.end); 688 | 689 | source.push('"abc"'); 690 | source.push("{}"); 691 | source.push("[]"); 692 | source.push(null); 693 | }); 694 | 695 | test.cb("parse() emits errors on invalid JSON", t => { 696 | t.plan(2); 697 | const source = new Readable({ objectMode: true }); 698 | source 699 | .pipe(parse()) 700 | .resume() 701 | .on("error", () => t.pass()) 702 | .on("end", t.end); 703 | 704 | source.push("{}"); 705 | source.push({}); 706 | source.push([]); 707 | source.push(null); 708 | }); 709 | 710 | test.cb("stringify() stringifies the streamed elements as JSON", t => { 711 | t.plan(4); 712 | const source = new Readable({ objectMode: true }); 713 | const expectedElements = [ 714 | '"abc"', 715 | "0", 716 | '{"a":"a","b":"b","c":"c"}', 717 | '["a","b","c"]', 718 | ]; 719 | let i = 0; 720 | source 721 | .pipe(stringify()) 722 | .on("data", part => { 723 | expect(part).to.deep.equal(expectedElements[i]); 724 | t.pass(); 725 | i++; 726 | }) 727 | .on("error", t.end) 728 | .on("end", t.end); 729 | 730 | source.push("abc"); 731 | source.push(0); 732 | source.push({ a: "a", b: "b", c: "c" }); 733 | source.push(["a", "b", "c"]); 734 | source.push(null); 735 | }); 736 | 737 | test.cb( 738 | "stringify() stringifies the streamed elements as pretty-printed JSON", 739 | t => { 740 | t.plan(4); 741 | const source = new Readable({ objectMode: true }); 742 | const expectedElements = [ 743 | '"abc"', 744 | "0", 745 | '{\n "a": "a",\n "b": "b",\n "c": "c"\n}', 746 | '[\n "a",\n "b",\n "c"\n]', 747 | ]; 748 | let i = 0; 749 | source 750 | .pipe(stringify({ pretty: true })) 751 | .on("data", part => { 752 | expect(part).to.deep.equal(expectedElements[i]); 753 | t.pass(); 754 | i++; 755 | }) 756 | .on("error", t.end) 757 | .on("end", t.end); 758 | 759 | source.push("abc"); 760 | source.push(0); 761 | source.push({ a: "a", b: "b", c: "c" }); 762 | source.push(["a", "b", "c"]); 763 | source.push(null); 764 | }, 765 | ); 766 | 767 | test.cb( 768 | "collect() collects streamed elements into an array (object, flowing mode)", 769 | t => { 770 | t.plan(1); 771 | const source = new Readable({ objectMode: true }); 772 | 773 | source 774 | .pipe(collect({ objectMode: true })) 775 | .on("data", collected => { 776 | expect(collected).to.deep.equal(["a", "b", "c"]); 777 | t.pass(); 778 | }) 779 | .on("error", t.end) 780 | .on("end", t.end); 781 | 782 | source.push("a"); 783 | source.push("b"); 784 | source.push("c"); 785 | source.push(null); 786 | }, 787 | ); 788 | 789 | test.cb( 790 | "collect() collects streamed elements into an array (object, paused mode)", 791 | t => { 792 | t.plan(1); 793 | const source = new Readable({ objectMode: true }); 794 | const collector = source.pipe(collect({ objectMode: true })); 795 | 796 | collector 797 | .on("readable", () => { 798 | let collected = collector.read(); 799 | while (collected !== null) { 800 | expect(collected).to.deep.equal(["a", "b", "c"]); 801 | t.pass(); 802 | collected = collector.read(); 803 | } 804 | }) 805 | .on("error", t.end) 806 | .on("end", t.end); 807 | 808 | source.push("a"); 809 | source.push("b"); 810 | source.push("c"); 811 | source.push(null); 812 | }, 813 | ); 814 | 815 | test.cb( 816 | "collect() collects streamed bytes into a buffer (non-object, flowing mode)", 817 | t => { 818 | t.plan(1); 819 | const source = new Readable({ objectMode: false }); 820 | 821 | source 822 | .pipe(collect()) 823 | .on("data", collected => { 824 | expect(collected).to.deep.equal(Buffer.from("abc")); 825 | t.pass(); 826 | }) 827 | .on("error", t.end) 828 | .on("end", t.end); 829 | 830 | source.push("a"); 831 | source.push("b"); 832 | source.push("c"); 833 | source.push(null); 834 | }, 835 | ); 836 | 837 | test.cb( 838 | "collect() collects streamed bytes into a buffer (non-object, paused mode)", 839 | t => { 840 | t.plan(1); 841 | const source = new Readable({ objectMode: false }); 842 | const collector = source.pipe(collect({ objectMode: false })); 843 | collector 844 | .on("readable", () => { 845 | let collected = collector.read(); 846 | while (collected !== null) { 847 | expect(collected).to.deep.equal(Buffer.from("abc")); 848 | t.pass(); 849 | collected = collector.read(); 850 | } 851 | }) 852 | .on("error", t.end) 853 | .on("end", t.end); 854 | 855 | source.push("a"); 856 | source.push("b"); 857 | source.push("c"); 858 | source.push(null); 859 | }, 860 | ); 861 | 862 | test.cb( 863 | "collect() emits an empty array if the source was empty (object mode)", 864 | t => { 865 | t.plan(1); 866 | const source = new Readable({ objectMode: true }); 867 | const collector = source.pipe(collect({ objectMode: true })); 868 | collector 869 | .on("data", collected => { 870 | expect(collected).to.deep.equal([]); 871 | t.pass(); 872 | }) 873 | .on("error", t.end) 874 | .on("end", t.end); 875 | 876 | source.push(null); 877 | }, 878 | ); 879 | 880 | test.cb( 881 | "collect() emits nothing if the source was empty (non-object mode)", 882 | t => { 883 | t.plan(0); 884 | const source = new Readable({ objectMode: false }); 885 | const collector = source.pipe(collect({ objectMode: false })); 886 | collector 887 | .on("data", () => t.fail()) 888 | .on("error", t.end) 889 | .on("end", t.end); 890 | 891 | source.push(null); 892 | }, 893 | ); 894 | 895 | test.cb( 896 | "concat() concatenates multiple readable streams (object, flowing mode)", 897 | t => { 898 | t.plan(6); 899 | const source1 = new Readable({ objectMode: true }); 900 | const source2 = new Readable({ objectMode: true }); 901 | const expectedElements = ["a", "b", "c", "d", "e", "f"]; 902 | let i = 0; 903 | concat(source1, source2) 904 | .on("data", (element: string) => { 905 | expect(element).to.equal(expectedElements[i]); 906 | t.pass(); 907 | i++; 908 | }) 909 | .on("error", t.end) 910 | .on("end", t.end); 911 | 912 | source1.push("a"); 913 | source2.push("d"); 914 | source1.push("b"); 915 | source2.push("e"); 916 | source1.push("c"); 917 | source2.push("f"); 918 | source2.push(null); 919 | source1.push(null); 920 | }, 921 | ); 922 | 923 | test.cb( 924 | "concat() concatenates multiple readable streams (object, paused mode)", 925 | t => { 926 | t.plan(6); 927 | const source1 = new Readable({ objectMode: true }); 928 | const source2 = new Readable({ objectMode: true }); 929 | const expectedElements = ["a", "b", "c", "d", "e", "f"]; 930 | let i = 0; 931 | const concatenation = concat(source1, source2) 932 | .on("readable", () => { 933 | let element = concatenation.read(); 934 | while (element !== null) { 935 | expect(element).to.equal(expectedElements[i]); 936 | t.pass(); 937 | i++; 938 | element = concatenation.read(); 939 | } 940 | }) 941 | .on("error", t.end) 942 | .on("end", t.end); 943 | 944 | source1.push("a"); 945 | source2.push("d"); 946 | source1.push("b"); 947 | source2.push("e"); 948 | source1.push("c"); 949 | source2.push("f"); 950 | source2.push(null); 951 | source1.push(null); 952 | }, 953 | ); 954 | 955 | test.cb( 956 | "concat() concatenates multiple readable streams (non-object, flowing mode)", 957 | t => { 958 | t.plan(6); 959 | const source1 = new Readable({ objectMode: false }); 960 | const source2 = new Readable({ objectMode: false }); 961 | const expectedElements = ["a", "b", "c", "d", "e", "f"]; 962 | let i = 0; 963 | concat(source1, source2) 964 | .on("data", (element: string) => { 965 | expect(element).to.deep.equal(Buffer.from(expectedElements[i])); 966 | t.pass(); 967 | i++; 968 | }) 969 | .on("error", t.end) 970 | .on("end", t.end); 971 | 972 | source1.push("a"); 973 | source2.push("d"); 974 | source1.push("b"); 975 | source2.push("e"); 976 | source1.push("c"); 977 | source2.push("f"); 978 | source2.push(null); 979 | source1.push(null); 980 | }, 981 | ); 982 | 983 | test.cb( 984 | "concat() concatenates multiple readable streams (non-object, paused mode)", 985 | t => { 986 | t.plan(6); 987 | const source1 = new Readable({ objectMode: false, read: () => ({}) }); 988 | const source2 = new Readable({ objectMode: false, read: () => ({}) }); 989 | const expectedElements = ["a", "b", "c", "d", "e", "f"]; 990 | let i = 0; 991 | const concatenation = concat(source1, source2) 992 | .on("readable", () => { 993 | let element = concatenation.read(); 994 | while (element !== null) { 995 | expect(element).to.deep.equal( 996 | Buffer.from(expectedElements[i]), 997 | ); 998 | t.pass(); 999 | i++; 1000 | element = concatenation.read(); 1001 | } 1002 | }) 1003 | .on("error", t.end) 1004 | .on("end", t.end); 1005 | 1006 | source1.push("a"); 1007 | setTimeout(() => source2.push("d"), 10); 1008 | setTimeout(() => source1.push("b"), 20); 1009 | setTimeout(() => source2.push("e"), 30); 1010 | setTimeout(() => source1.push("c"), 40); 1011 | setTimeout(() => source2.push("f"), 50); 1012 | setTimeout(() => source2.push(null), 60); 1013 | setTimeout(() => source1.push(null), 70); 1014 | }, 1015 | ); 1016 | 1017 | test.cb("concat() concatenates a single readable stream (object mode)", t => { 1018 | t.plan(3); 1019 | const source = new Readable({ objectMode: true }); 1020 | const expectedElements = ["a", "b", "c", "d", "e", "f"]; 1021 | let i = 0; 1022 | concat(source) 1023 | .on("data", (element: string) => { 1024 | expect(element).to.equal(expectedElements[i]); 1025 | t.pass(); 1026 | i++; 1027 | }) 1028 | .on("error", t.end) 1029 | .on("end", t.end); 1030 | 1031 | source.push("a"); 1032 | source.push("b"); 1033 | source.push("c"); 1034 | source.push(null); 1035 | }); 1036 | 1037 | test.cb( 1038 | "concat() concatenates a single readable stream (non-object mode)", 1039 | t => { 1040 | t.plan(3); 1041 | const source = new Readable({ objectMode: false }); 1042 | const expectedElements = ["a", "b", "c", "d", "e", "f"]; 1043 | let i = 0; 1044 | concat(source) 1045 | .on("data", (element: string) => { 1046 | expect(element).to.deep.equal(Buffer.from(expectedElements[i])); 1047 | t.pass(); 1048 | i++; 1049 | }) 1050 | .on("error", t.end) 1051 | .on("end", t.end); 1052 | 1053 | source.push("a"); 1054 | source.push("b"); 1055 | source.push("c"); 1056 | source.push(null); 1057 | }, 1058 | ); 1059 | 1060 | test.cb("concat() concatenates empty list of readable streams", t => { 1061 | t.plan(0); 1062 | concat() 1063 | .pipe(collect()) 1064 | .on("data", _ => { 1065 | t.fail(); 1066 | }) 1067 | .on("error", t.end) 1068 | .on("end", t.end); 1069 | }); 1070 | 1071 | test.cb( 1072 | "merge() merges multiple readable streams in chunk arrival order", 1073 | t => { 1074 | t.plan(6); 1075 | const source1 = new Readable({ objectMode: true, read: () => ({}) }); 1076 | const source2 = new Readable({ objectMode: true, read: () => ({}) }); 1077 | const expectedElements = ["a", "d", "b", "e", "c", "f"]; 1078 | let i = 0; 1079 | merge(source1, source2) 1080 | .on("data", (element: string) => { 1081 | expect(element).to.equal(expectedElements[i]); 1082 | t.pass(); 1083 | i++; 1084 | }) 1085 | .on("error", t.end) 1086 | .on("end", t.end); 1087 | 1088 | source1.push("a"); 1089 | setTimeout(() => source2.push("d"), 10); 1090 | setTimeout(() => source1.push("b"), 20); 1091 | setTimeout(() => source2.push("e"), 30); 1092 | setTimeout(() => source1.push("c"), 40); 1093 | setTimeout(() => source2.push("f"), 50); 1094 | setTimeout(() => source2.push(null), 60); 1095 | setTimeout(() => source1.push(null), 70); 1096 | }, 1097 | ); 1098 | 1099 | test.cb("merge() merges a readable stream", t => { 1100 | t.plan(3); 1101 | const source = new Readable({ objectMode: true, read: () => ({}) }); 1102 | const expectedElements = ["a", "b", "c"]; 1103 | let i = 0; 1104 | merge(source) 1105 | .on("data", (element: string) => { 1106 | expect(element).to.equal(expectedElements[i]); 1107 | t.pass(); 1108 | i++; 1109 | }) 1110 | .on("error", t.end) 1111 | .on("end", t.end); 1112 | 1113 | source.push("a"); 1114 | source.push("b"); 1115 | source.push("c"); 1116 | source.push(null); 1117 | }); 1118 | 1119 | test.cb("merge() merges an empty list of readable streams", t => { 1120 | t.plan(0); 1121 | merge() 1122 | .on("data", () => t.pass()) 1123 | .on("error", t.end) 1124 | .on("end", t.end); 1125 | }); 1126 | 1127 | test.cb( 1128 | "duplex() combines a writable and readable stream into a ReadWrite stream", 1129 | t => { 1130 | t.plan(1); 1131 | const source = new Readable(); 1132 | const catProcess = cp.exec("cat"); 1133 | let out = ""; 1134 | source 1135 | .pipe(duplex(catProcess.stdin, catProcess.stdout)) 1136 | .on("data", chunk => (out += chunk)) 1137 | .on("error", t.end) 1138 | .on("end", () => { 1139 | expect(out).to.equal("abcdef"); 1140 | t.pass(); 1141 | t.end(); 1142 | }); 1143 | source.push("ab"); 1144 | source.push("cd"); 1145 | source.push("ef"); 1146 | source.push(null); 1147 | }, 1148 | ); 1149 | 1150 | test.cb( 1151 | "child() allows easily writing to child process stdin and reading from its stdout", 1152 | t => { 1153 | t.plan(1); 1154 | const source = new Readable(); 1155 | const catProcess = cp.exec("cat"); 1156 | let out = ""; 1157 | source 1158 | .pipe(child(catProcess)) 1159 | .on("data", chunk => (out += chunk)) 1160 | .on("error", t.end) 1161 | .on("end", () => { 1162 | expect(out).to.equal("abcdef"); 1163 | t.pass(); 1164 | t.end(); 1165 | }); 1166 | source.push("ab"); 1167 | source.push("cd"); 1168 | source.push("ef"); 1169 | source.push(null); 1170 | }, 1171 | ); 1172 | 1173 | test("last() resolves to the last chunk streamed by the given readable stream", async t => { 1174 | const source = new Readable({ objectMode: true }); 1175 | const lastPromise = last(source); 1176 | source.push("ab"); 1177 | source.push("cd"); 1178 | source.push("ef"); 1179 | source.push(null); 1180 | const lastChunk = await lastPromise; 1181 | expect(lastChunk).to.equal("ef"); 1182 | }); 1183 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { Transform, Readable, Writable, Duplex } from "stream"; 2 | import { ChildProcess } from "child_process"; 3 | import { StringDecoder } from "string_decoder"; 4 | 5 | export interface ThroughOptions { 6 | objectMode?: boolean; 7 | } 8 | export interface TransformOptions { 9 | readableObjectMode?: boolean; 10 | writableObjectMode?: boolean; 11 | } 12 | export interface WithEncoding { 13 | encoding: string; 14 | } 15 | 16 | /** 17 | * Convert an array into a Readable stream of its elements 18 | * @param array Array of elements to stream 19 | */ 20 | export function fromArray(array: any[]): NodeJS.ReadableStream { 21 | let cursor = 0; 22 | return new Readable({ 23 | objectMode: true, 24 | read() { 25 | if (cursor < array.length) { 26 | this.push(array[cursor]); 27 | cursor++; 28 | } else { 29 | this.push(null); 30 | } 31 | }, 32 | }); 33 | } 34 | 35 | /** 36 | * Return a ReadWrite stream that maps streamed chunks 37 | * @param mapper Mapper function, mapping each (chunk, encoding) to a new chunk (or a promise of such) 38 | * @param options 39 | * @param options.readableObjectMode Whether this stream should behave as a readable stream of objects 40 | * @param options.writableObjectMode Whether this stream should behave as a writable stream of objects 41 | */ 42 | export function map( 43 | mapper: (chunk: T, encoding: string) => R, 44 | options: TransformOptions = { 45 | readableObjectMode: true, 46 | writableObjectMode: true, 47 | }, 48 | ): NodeJS.ReadWriteStream { 49 | return new Transform({ 50 | ...options, 51 | async transform(chunk: T, encoding, callback) { 52 | let isPromise = false; 53 | try { 54 | const mapped = mapper(chunk, encoding); 55 | isPromise = mapped instanceof Promise; 56 | callback(undefined, await mapped); 57 | } catch (err) { 58 | if (isPromise) { 59 | // Calling the callback asynchronously with an error wouldn't emit the error, so emit directly 60 | this.emit("error", err); 61 | callback(); 62 | } else { 63 | callback(err); 64 | } 65 | } 66 | }, 67 | }); 68 | } 69 | 70 | /** 71 | * Return a ReadWrite stream that flat maps streamed chunks 72 | * @param mapper Mapper function, mapping each (chunk, encoding) to an array of new chunks (or a promise of such) 73 | * @param options 74 | * @param options.readableObjectMode Whether this stream should behave as a readable stream of objects 75 | * @param options.writableObjectMode Whether this stream should behave as a writable stream of objects 76 | */ 77 | export function flatMap( 78 | mapper: 79 | | ((chunk: T, encoding: string) => R[]) 80 | | ((chunk: T, encoding: string) => Promise), 81 | options: TransformOptions = { 82 | readableObjectMode: true, 83 | writableObjectMode: true, 84 | }, 85 | ): NodeJS.ReadWriteStream { 86 | return new Transform({ 87 | ...options, 88 | async transform(chunk: T, encoding, callback) { 89 | let isPromise = false; 90 | try { 91 | const mapped = mapper(chunk, encoding); 92 | isPromise = mapped instanceof Promise; 93 | (await mapped).forEach(c => this.push(c)); 94 | callback(); 95 | } catch (err) { 96 | if (isPromise) { 97 | // Calling the callback asynchronously with an error wouldn't emit the error, so emit directly 98 | this.emit("error", err); 99 | callback(); 100 | } else { 101 | callback(err); 102 | } 103 | } 104 | }, 105 | }); 106 | } 107 | 108 | /** 109 | * Return a ReadWrite stream that filters out streamed chunks for which the predicate does not hold 110 | * @param predicate Predicate with which to filter scream chunks 111 | * @param options 112 | * @param options.objectMode Whether this stream should behave as a stream of objects 113 | */ 114 | export function filter( 115 | predicate: 116 | | ((chunk: T, encoding: string) => boolean) 117 | | ((chunk: T, encoding: string) => Promise), 118 | options: ThroughOptions = { 119 | objectMode: true, 120 | }, 121 | ) { 122 | return new Transform({ 123 | readableObjectMode: options.objectMode, 124 | writableObjectMode: options.objectMode, 125 | async transform(chunk: T, encoding, callback) { 126 | let isPromise = false; 127 | try { 128 | const result = predicate(chunk, encoding); 129 | isPromise = result instanceof Promise; 130 | if (!!(await result)) { 131 | callback(undefined, chunk); 132 | } else { 133 | callback(); 134 | } 135 | } catch (err) { 136 | if (isPromise) { 137 | // Calling the callback asynchronously with an error wouldn't emit the error, so emit directly 138 | this.emit("error", err); 139 | callback(); 140 | } else { 141 | callback(err); 142 | } 143 | } 144 | }, 145 | }); 146 | } 147 | 148 | /** 149 | * Return a ReadWrite stream that reduces streamed chunks down to a single value and yield that 150 | * value 151 | * @param iteratee Reducer function to apply on each streamed chunk 152 | * @param initialValue Initial value 153 | * @param options 154 | * @param options.readableObjectMode Whether this stream should behave as a readable stream of objects 155 | * @param options.writableObjectMode Whether this stream should behave as a writable stream of objects 156 | */ 157 | export function reduce( 158 | iteratee: 159 | | ((previousValue: R, chunk: T, encoding: string) => R) 160 | | ((previousValue: R, chunk: T, encoding: string) => Promise), 161 | initialValue: R, 162 | options: TransformOptions = { 163 | readableObjectMode: true, 164 | writableObjectMode: true, 165 | }, 166 | ) { 167 | let value = initialValue; 168 | return new Transform({ 169 | readableObjectMode: options.readableObjectMode, 170 | writableObjectMode: options.writableObjectMode, 171 | async transform(chunk: T, encoding, callback) { 172 | let isPromise = false; 173 | try { 174 | const result = iteratee(value, chunk, encoding); 175 | isPromise = result instanceof Promise; 176 | value = await result; 177 | callback(); 178 | } catch (err) { 179 | if (isPromise) { 180 | // Calling the callback asynchronously with an error wouldn't emit the error, so emit directly 181 | this.emit("error", err); 182 | callback(); 183 | } else { 184 | callback(err); 185 | } 186 | } 187 | }, 188 | flush(callback) { 189 | // Best effort attempt at yielding the final value (will throw if e.g. yielding an object and 190 | // downstream doesn't expect objects) 191 | try { 192 | callback(undefined, value); 193 | } catch (err) { 194 | try { 195 | this.emit("error", err); 196 | } catch { 197 | // Best effort was made 198 | } 199 | } 200 | }, 201 | }); 202 | } 203 | 204 | /** 205 | * Return a ReadWrite stream that splits streamed chunks using the given separator 206 | * @param separator Separator to split by, defaulting to "\n" 207 | * @param options 208 | * @param options.encoding Encoding written chunks are assumed to use 209 | */ 210 | export function split( 211 | separator: string | RegExp = "\n", 212 | options: WithEncoding = { encoding: "utf8" }, 213 | ): NodeJS.ReadWriteStream { 214 | let buffered = ""; 215 | const decoder = new StringDecoder(options.encoding); 216 | 217 | return new Transform({ 218 | readableObjectMode: true, 219 | transform(chunk: Buffer, encoding, callback) { 220 | const asString = decoder.write(chunk); 221 | const splitted = asString.split(separator); 222 | if (splitted.length > 1) { 223 | splitted[0] = buffered.concat(splitted[0]); 224 | buffered = ""; 225 | } 226 | buffered += splitted[splitted.length - 1]; 227 | splitted.slice(0, -1).forEach((part: string) => this.push(part)); 228 | callback(); 229 | }, 230 | flush(callback) { 231 | callback(undefined, buffered + decoder.end()); 232 | }, 233 | }); 234 | } 235 | 236 | /** 237 | * Return a ReadWrite stream that joins streamed chunks using the given separator 238 | * @param separator Separator to join with 239 | * @param options 240 | * @param options.encoding Encoding written chunks are assumed to use 241 | */ 242 | export function join( 243 | separator: string, 244 | options: WithEncoding = { encoding: "utf8" }, 245 | ): NodeJS.ReadWriteStream { 246 | let isFirstChunk = true; 247 | const decoder = new StringDecoder(options.encoding); 248 | return new Transform({ 249 | readableObjectMode: true, 250 | async transform(chunk: Buffer, encoding, callback) { 251 | const asString = decoder.write(chunk); 252 | // Take care not to break up multi-byte characters spanning multiple chunks 253 | if (asString !== "" || chunk.length === 0) { 254 | if (!isFirstChunk) { 255 | this.push(separator); 256 | } 257 | this.push(asString); 258 | isFirstChunk = false; 259 | } 260 | callback(); 261 | }, 262 | }); 263 | } 264 | 265 | /** 266 | * Return a ReadWrite stream that replaces occurrences of the given string or regular expression in 267 | * the streamed chunks with the specified replacement string 268 | * @param searchValue Search string to use 269 | * @param replaceValue Replacement string to use 270 | * @param options 271 | * @param options.encoding Encoding written chunks are assumed to use 272 | */ 273 | export function replace( 274 | searchValue: string | RegExp, 275 | replaceValue: string, 276 | options: WithEncoding = { encoding: "utf8" }, 277 | ): NodeJS.ReadWriteStream { 278 | const decoder = new StringDecoder(options.encoding); 279 | return new Transform({ 280 | readableObjectMode: true, 281 | transform(chunk: Buffer, encoding, callback) { 282 | const asString = decoder.write(chunk); 283 | // Take care not to break up multi-byte characters spanning multiple chunks 284 | if (asString !== "" || chunk.length === 0) { 285 | callback( 286 | undefined, 287 | asString.replace(searchValue, replaceValue), 288 | ); 289 | } else { 290 | callback(); 291 | } 292 | }, 293 | }); 294 | } 295 | 296 | /** 297 | * Return a ReadWrite stream that parses the streamed chunks as JSON. Each streamed chunk 298 | * must be a fully defined JSON string. 299 | */ 300 | export function parse(): NodeJS.ReadWriteStream { 301 | const decoder = new StringDecoder("utf8"); // JSON must be utf8 302 | return new Transform({ 303 | readableObjectMode: true, 304 | writableObjectMode: true, 305 | async transform(chunk: Buffer, encoding, callback) { 306 | try { 307 | const asString = decoder.write(chunk); 308 | // Using await causes parsing errors to be emitted 309 | callback(undefined, await JSON.parse(asString)); 310 | } catch (err) { 311 | callback(err); 312 | } 313 | }, 314 | }); 315 | } 316 | 317 | type JsonPrimitive = string | number | object; 318 | type JsonValue = JsonPrimitive | JsonPrimitive[]; 319 | interface JsonParseOptions { 320 | pretty: boolean; 321 | } 322 | 323 | /** 324 | * Return a ReadWrite stream that stringifies the streamed chunks to JSON 325 | */ 326 | export function stringify( 327 | options: JsonParseOptions = { pretty: false }, 328 | ): NodeJS.ReadWriteStream { 329 | return new Transform({ 330 | readableObjectMode: true, 331 | writableObjectMode: true, 332 | transform(chunk: JsonValue, encoding, callback) { 333 | callback( 334 | undefined, 335 | options.pretty 336 | ? JSON.stringify(chunk, null, 2) 337 | : JSON.stringify(chunk), 338 | ); 339 | }, 340 | }); 341 | } 342 | 343 | /** 344 | * Return a ReadWrite stream that collects streamed chunks into an array or buffer 345 | * @param options 346 | * @param options.objectMode Whether this stream should behave as a stream of objects 347 | */ 348 | export function collect( 349 | options: ThroughOptions = { objectMode: false }, 350 | ): NodeJS.ReadWriteStream { 351 | const collected: any[] = []; 352 | return new Transform({ 353 | readableObjectMode: options.objectMode, 354 | writableObjectMode: options.objectMode, 355 | transform(data, encoding, callback) { 356 | collected.push(data); 357 | callback(); 358 | }, 359 | flush(callback) { 360 | this.push( 361 | options.objectMode ? collected : Buffer.concat(collected), 362 | ); 363 | callback(); 364 | }, 365 | }); 366 | } 367 | 368 | /** 369 | * Return a Readable stream of readable streams concatenated together 370 | * @param streams Readable streams to concatenate 371 | */ 372 | export function concat( 373 | ...streams: NodeJS.ReadableStream[] 374 | ): NodeJS.ReadableStream { 375 | let isStarted = false; 376 | let currentStreamIndex = 0; 377 | const startCurrentStream = () => { 378 | if (currentStreamIndex >= streams.length) { 379 | wrapper.push(null); 380 | } else { 381 | streams[currentStreamIndex] 382 | .on("data", chunk => { 383 | if (!wrapper.push(chunk)) { 384 | streams[currentStreamIndex].pause(); 385 | } 386 | }) 387 | .on("error", err => wrapper.emit("error", err)) 388 | .on("end", () => { 389 | currentStreamIndex++; 390 | startCurrentStream(); 391 | }); 392 | } 393 | }; 394 | 395 | const wrapper = new Readable({ 396 | objectMode: true, 397 | read() { 398 | if (!isStarted) { 399 | isStarted = true; 400 | startCurrentStream(); 401 | } 402 | if (currentStreamIndex < streams.length) { 403 | streams[currentStreamIndex].resume(); 404 | } 405 | }, 406 | }); 407 | return wrapper; 408 | } 409 | 410 | /** 411 | * Return a Readable stream of readable streams merged together in chunk arrival order 412 | * @param streams Readable streams to merge 413 | */ 414 | export function merge( 415 | ...streams: NodeJS.ReadableStream[] 416 | ): NodeJS.ReadableStream { 417 | let isStarted = false; 418 | let streamEndedCount = 0; 419 | return new Readable({ 420 | objectMode: true, 421 | read() { 422 | if (streamEndedCount >= streams.length) { 423 | this.push(null); 424 | } else if (!isStarted) { 425 | isStarted = true; 426 | streams.forEach(stream => 427 | stream 428 | .on("data", chunk => { 429 | if (!this.push(chunk)) { 430 | streams.forEach(s => s.pause()); 431 | } 432 | }) 433 | .on("error", err => this.emit("error", err)) 434 | .on("end", () => { 435 | streamEndedCount++; 436 | if (streamEndedCount === streams.length) { 437 | this.push(null); 438 | } 439 | }), 440 | ); 441 | } else { 442 | streams.forEach(s => s.resume()); 443 | } 444 | }, 445 | }); 446 | } 447 | 448 | /** 449 | * Return a Duplex stream from a writable stream that is assumed to somehow, when written to, 450 | * cause the given readable stream to yield chunks 451 | * @param writable Writable stream assumed to cause the readable stream to yield chunks when written to 452 | * @param readable Readable stream assumed to yield chunks when the writable stream is written to 453 | */ 454 | export function duplex(writable: Writable, readable: Readable) { 455 | const wrapper = new Duplex({ 456 | readableObjectMode: true, 457 | writableObjectMode: true, 458 | read() { 459 | readable.resume(); 460 | }, 461 | write(chunk, encoding, callback) { 462 | return writable.write(chunk, encoding, callback); 463 | }, 464 | final(callback) { 465 | writable.end(callback); 466 | }, 467 | }); 468 | readable 469 | .on("data", chunk => { 470 | if (!wrapper.push(chunk)) { 471 | readable.pause(); 472 | } 473 | }) 474 | .on("error", err => wrapper.emit("error", err)) 475 | .on("end", () => wrapper.push(null)); 476 | writable.on("drain", () => wrapper.emit("drain")); 477 | writable.on("error", err => wrapper.emit("error", err)); 478 | return wrapper; 479 | } 480 | 481 | /** 482 | * Return a Duplex stream from a child process' stdin and stdout 483 | * @param childProcess Child process from which to create duplex stream 484 | */ 485 | export function child(childProcess: ChildProcess) { 486 | return duplex(childProcess.stdin, childProcess.stdout); 487 | } 488 | 489 | /** 490 | * Return a Promise resolving to the last streamed chunk of the given readable stream, after it has 491 | * ended 492 | * @param readable Readable stream to wait on 493 | */ 494 | export function last(readable: Readable): Promise { 495 | let lastChunk: T | null = null; 496 | return new Promise((resolve, reject) => { 497 | readable 498 | .on("data", chunk => (lastChunk = chunk)) 499 | .on("end", () => resolve(lastChunk)); 500 | }); 501 | } 502 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "noImplicitAny": true, 4 | "strictNullChecks": true, 5 | "noImplicitReturns": true, 6 | "noUnusedLocals": true, 7 | "noImplicitThis": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "suppressImplicitAnyIndexErrors": true, 10 | "outDir": "./dist", 11 | "module": "commonjs", 12 | "target": "es5", 13 | "lib": ["es2016"], 14 | "sourceMap": true, 15 | "declaration": true 16 | }, 17 | "include": ["src/**/*.ts"] 18 | } 19 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "tslint:latest", 4 | "tslint-plugin-prettier", 5 | "tslint-config-prettier" 6 | ], 7 | "rules": { 8 | "no-console": false, 9 | "no-implicit-dependencies": [true, "dev"], 10 | "prettier": true, 11 | "ordered-imports": false, 12 | "interface-name": false 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ava/babel-plugin-throws-helper@^3.0.0": 6 | version "3.0.0" 7 | resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-3.0.0.tgz#2c933ec22da0c4ce1fc5369f2b95452c70420586" 8 | integrity sha512-mN9UolOs4WX09QkheU1ELkVy2WPnwonlO3XMdN8JF8fQqRVgVTR21xDbvEOUsbwz6Zwjq7ji9yzyjuXqDPalxg== 9 | 10 | "@ava/babel-preset-stage-4@^2.0.0": 11 | version "2.0.0" 12 | resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-2.0.0.tgz#2cd072ff818e4432b87fd4c5fd5c5d1a405a4343" 13 | integrity sha512-OWqMYeTSZ16AfLx0Vn0Uj7tcu+uMRlbKmks+DVCFlln7vomVsOtst+Oz+HCussDSFGpE+30VtHAUHLy6pLDpHQ== 14 | dependencies: 15 | "@babel/plugin-proposal-async-generator-functions" "^7.0.0" 16 | "@babel/plugin-proposal-object-rest-spread" "^7.0.0" 17 | "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" 18 | "@babel/plugin-transform-async-to-generator" "^7.0.0" 19 | "@babel/plugin-transform-dotall-regex" "^7.0.0" 20 | "@babel/plugin-transform-exponentiation-operator" "^7.0.0" 21 | "@babel/plugin-transform-modules-commonjs" "^7.0.0" 22 | 23 | "@ava/babel-preset-transform-test-files@^4.0.0": 24 | version "4.0.0" 25 | resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-4.0.0.tgz#95d426f5982f934567ae5a21e43eac0a463d6feb" 26 | integrity sha512-V9hYHA/ZLb4I8imrrG8PT0mzgThjWWmahPV+mrQUZobVnsekBUDrf0JsfXVm4guS3binWxWn+MmQt+V81hTizA== 27 | dependencies: 28 | "@ava/babel-plugin-throws-helper" "^3.0.0" 29 | babel-plugin-espower "^3.0.0" 30 | 31 | "@ava/write-file-atomic@^2.2.0": 32 | version "2.2.0" 33 | resolved "https://registry.yarnpkg.com/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz#d625046f3495f1f5e372135f473909684b429247" 34 | integrity sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA== 35 | dependencies: 36 | graceful-fs "^4.1.11" 37 | imurmurhash "^0.1.4" 38 | slide "^1.1.5" 39 | 40 | "@babel/code-frame@^7.0.0": 41 | version "7.0.0" 42 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 43 | integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== 44 | dependencies: 45 | "@babel/highlight" "^7.0.0" 46 | 47 | "@babel/core@^7.1.5": 48 | version "7.1.6" 49 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.6.tgz#3733cbee4317429bc87c62b29cf8587dba7baeb3" 50 | integrity sha512-Hz6PJT6e44iUNpAn8AoyAs6B3bl60g7MJQaI0rZEar6ECzh6+srYO1xlIdssio34mPaUtAb1y+XlkkSJzok3yw== 51 | dependencies: 52 | "@babel/code-frame" "^7.0.0" 53 | "@babel/generator" "^7.1.6" 54 | "@babel/helpers" "^7.1.5" 55 | "@babel/parser" "^7.1.6" 56 | "@babel/template" "^7.1.2" 57 | "@babel/traverse" "^7.1.6" 58 | "@babel/types" "^7.1.6" 59 | convert-source-map "^1.1.0" 60 | debug "^4.1.0" 61 | json5 "^2.1.0" 62 | lodash "^4.17.10" 63 | resolve "^1.3.2" 64 | semver "^5.4.1" 65 | source-map "^0.5.0" 66 | 67 | "@babel/generator@^7.0.0", "@babel/generator@^7.1.5", "@babel/generator@^7.1.6": 68 | version "7.1.6" 69 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.6.tgz#001303cf87a5b9d093494a4bf251d7b5d03d3999" 70 | integrity sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ== 71 | dependencies: 72 | "@babel/types" "^7.1.6" 73 | jsesc "^2.5.1" 74 | lodash "^4.17.10" 75 | source-map "^0.5.0" 76 | trim-right "^1.0.1" 77 | 78 | "@babel/helper-annotate-as-pure@^7.0.0": 79 | version "7.0.0" 80 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" 81 | integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== 82 | dependencies: 83 | "@babel/types" "^7.0.0" 84 | 85 | "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": 86 | version "7.1.0" 87 | resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" 88 | integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== 89 | dependencies: 90 | "@babel/helper-explode-assignable-expression" "^7.1.0" 91 | "@babel/types" "^7.0.0" 92 | 93 | "@babel/helper-explode-assignable-expression@^7.1.0": 94 | version "7.1.0" 95 | resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" 96 | integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== 97 | dependencies: 98 | "@babel/traverse" "^7.1.0" 99 | "@babel/types" "^7.0.0" 100 | 101 | "@babel/helper-function-name@^7.1.0": 102 | version "7.1.0" 103 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" 104 | integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== 105 | dependencies: 106 | "@babel/helper-get-function-arity" "^7.0.0" 107 | "@babel/template" "^7.1.0" 108 | "@babel/types" "^7.0.0" 109 | 110 | "@babel/helper-get-function-arity@^7.0.0": 111 | version "7.0.0" 112 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" 113 | integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== 114 | dependencies: 115 | "@babel/types" "^7.0.0" 116 | 117 | "@babel/helper-module-imports@^7.0.0": 118 | version "7.0.0" 119 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" 120 | integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== 121 | dependencies: 122 | "@babel/types" "^7.0.0" 123 | 124 | "@babel/helper-module-transforms@^7.1.0": 125 | version "7.1.0" 126 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" 127 | integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== 128 | dependencies: 129 | "@babel/helper-module-imports" "^7.0.0" 130 | "@babel/helper-simple-access" "^7.1.0" 131 | "@babel/helper-split-export-declaration" "^7.0.0" 132 | "@babel/template" "^7.1.0" 133 | "@babel/types" "^7.0.0" 134 | lodash "^4.17.10" 135 | 136 | "@babel/helper-plugin-utils@^7.0.0": 137 | version "7.0.0" 138 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" 139 | integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== 140 | 141 | "@babel/helper-regex@^7.0.0": 142 | version "7.0.0" 143 | resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" 144 | integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== 145 | dependencies: 146 | lodash "^4.17.10" 147 | 148 | "@babel/helper-remap-async-to-generator@^7.1.0": 149 | version "7.1.0" 150 | resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" 151 | integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== 152 | dependencies: 153 | "@babel/helper-annotate-as-pure" "^7.0.0" 154 | "@babel/helper-wrap-function" "^7.1.0" 155 | "@babel/template" "^7.1.0" 156 | "@babel/traverse" "^7.1.0" 157 | "@babel/types" "^7.0.0" 158 | 159 | "@babel/helper-simple-access@^7.1.0": 160 | version "7.1.0" 161 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" 162 | integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== 163 | dependencies: 164 | "@babel/template" "^7.1.0" 165 | "@babel/types" "^7.0.0" 166 | 167 | "@babel/helper-split-export-declaration@^7.0.0": 168 | version "7.0.0" 169 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" 170 | integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== 171 | dependencies: 172 | "@babel/types" "^7.0.0" 173 | 174 | "@babel/helper-wrap-function@^7.1.0": 175 | version "7.1.0" 176 | resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" 177 | integrity sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA== 178 | dependencies: 179 | "@babel/helper-function-name" "^7.1.0" 180 | "@babel/template" "^7.1.0" 181 | "@babel/traverse" "^7.1.0" 182 | "@babel/types" "^7.0.0" 183 | 184 | "@babel/helpers@^7.1.5": 185 | version "7.1.5" 186 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.5.tgz#68bfc1895d685f2b8f1995e788dbfe1f6ccb1996" 187 | integrity sha512-2jkcdL02ywNBry1YNFAH/fViq4fXG0vdckHqeJk+75fpQ2OH+Az6076tX/M0835zA45E0Cqa6pV5Kiv9YOqjEg== 188 | dependencies: 189 | "@babel/template" "^7.1.2" 190 | "@babel/traverse" "^7.1.5" 191 | "@babel/types" "^7.1.5" 192 | 193 | "@babel/highlight@^7.0.0": 194 | version "7.0.0" 195 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 196 | integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== 197 | dependencies: 198 | chalk "^2.0.0" 199 | esutils "^2.0.2" 200 | js-tokens "^4.0.0" 201 | 202 | "@babel/parser@^7.0.0", "@babel/parser@^7.1.2", "@babel/parser@^7.1.6": 203 | version "7.1.6" 204 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.6.tgz#16e97aca1ec1062324a01c5a6a7d0df8dd189854" 205 | integrity sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ== 206 | 207 | "@babel/plugin-proposal-async-generator-functions@^7.0.0": 208 | version "7.1.0" 209 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce" 210 | integrity sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew== 211 | dependencies: 212 | "@babel/helper-plugin-utils" "^7.0.0" 213 | "@babel/helper-remap-async-to-generator" "^7.1.0" 214 | "@babel/plugin-syntax-async-generators" "^7.0.0" 215 | 216 | "@babel/plugin-proposal-object-rest-spread@^7.0.0": 217 | version "7.0.0" 218 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" 219 | integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== 220 | dependencies: 221 | "@babel/helper-plugin-utils" "^7.0.0" 222 | "@babel/plugin-syntax-object-rest-spread" "^7.0.0" 223 | 224 | "@babel/plugin-proposal-optional-catch-binding@^7.0.0": 225 | version "7.0.0" 226 | resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" 227 | integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== 228 | dependencies: 229 | "@babel/helper-plugin-utils" "^7.0.0" 230 | "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" 231 | 232 | "@babel/plugin-syntax-async-generators@^7.0.0": 233 | version "7.0.0" 234 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" 235 | integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== 236 | dependencies: 237 | "@babel/helper-plugin-utils" "^7.0.0" 238 | 239 | "@babel/plugin-syntax-object-rest-spread@^7.0.0": 240 | version "7.0.0" 241 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" 242 | integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== 243 | dependencies: 244 | "@babel/helper-plugin-utils" "^7.0.0" 245 | 246 | "@babel/plugin-syntax-optional-catch-binding@^7.0.0": 247 | version "7.0.0" 248 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" 249 | integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== 250 | dependencies: 251 | "@babel/helper-plugin-utils" "^7.0.0" 252 | 253 | "@babel/plugin-transform-async-to-generator@^7.0.0": 254 | version "7.1.0" 255 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811" 256 | integrity sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g== 257 | dependencies: 258 | "@babel/helper-module-imports" "^7.0.0" 259 | "@babel/helper-plugin-utils" "^7.0.0" 260 | "@babel/helper-remap-async-to-generator" "^7.1.0" 261 | 262 | "@babel/plugin-transform-dotall-regex@^7.0.0": 263 | version "7.0.0" 264 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" 265 | integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== 266 | dependencies: 267 | "@babel/helper-plugin-utils" "^7.0.0" 268 | "@babel/helper-regex" "^7.0.0" 269 | regexpu-core "^4.1.3" 270 | 271 | "@babel/plugin-transform-exponentiation-operator@^7.0.0": 272 | version "7.1.0" 273 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73" 274 | integrity sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ== 275 | dependencies: 276 | "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" 277 | "@babel/helper-plugin-utils" "^7.0.0" 278 | 279 | "@babel/plugin-transform-modules-commonjs@^7.0.0": 280 | version "7.1.0" 281 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c" 282 | integrity sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA== 283 | dependencies: 284 | "@babel/helper-module-transforms" "^7.1.0" 285 | "@babel/helper-plugin-utils" "^7.0.0" 286 | "@babel/helper-simple-access" "^7.1.0" 287 | 288 | "@babel/template@^7.1.0", "@babel/template@^7.1.2": 289 | version "7.1.2" 290 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" 291 | integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== 292 | dependencies: 293 | "@babel/code-frame" "^7.0.0" 294 | "@babel/parser" "^7.1.2" 295 | "@babel/types" "^7.1.2" 296 | 297 | "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.1.6": 298 | version "7.1.6" 299 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.6.tgz#c8db9963ab4ce5b894222435482bd8ea854b7b5c" 300 | integrity sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ== 301 | dependencies: 302 | "@babel/code-frame" "^7.0.0" 303 | "@babel/generator" "^7.1.6" 304 | "@babel/helper-function-name" "^7.1.0" 305 | "@babel/helper-split-export-declaration" "^7.0.0" 306 | "@babel/parser" "^7.1.6" 307 | "@babel/types" "^7.1.6" 308 | debug "^4.1.0" 309 | globals "^11.1.0" 310 | lodash "^4.17.10" 311 | 312 | "@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.5", "@babel/types@^7.1.6": 313 | version "7.1.6" 314 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.6.tgz#0adb330c3a281348a190263aceb540e10f04bcce" 315 | integrity sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w== 316 | dependencies: 317 | esutils "^2.0.2" 318 | lodash "^4.17.10" 319 | to-fast-properties "^2.0.0" 320 | 321 | "@concordance/react@^2.0.0": 322 | version "2.0.0" 323 | resolved "https://registry.yarnpkg.com/@concordance/react/-/react-2.0.0.tgz#aef913f27474c53731f4fd79cc2f54897de90fde" 324 | integrity sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA== 325 | dependencies: 326 | arrify "^1.0.1" 327 | 328 | "@types/chai@^4.1.7": 329 | version "4.1.7" 330 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" 331 | integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== 332 | 333 | "@types/node@^10.12.10": 334 | version "10.12.10" 335 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.10.tgz#4fa76e6598b7de3f0cb6ec3abacc4f59e5b3a2ce" 336 | integrity sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w== 337 | 338 | abbrev@1: 339 | version "1.1.1" 340 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 341 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 342 | 343 | ansi-align@^2.0.0: 344 | version "2.0.0" 345 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" 346 | integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= 347 | dependencies: 348 | string-width "^2.0.0" 349 | 350 | ansi-escapes@^3.1.0: 351 | version "3.1.0" 352 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" 353 | integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== 354 | 355 | ansi-regex@^2.0.0: 356 | version "2.1.1" 357 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 358 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 359 | 360 | ansi-regex@^3.0.0: 361 | version "3.0.0" 362 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 363 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 364 | 365 | ansi-regex@^4.0.0: 366 | version "4.0.0" 367 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" 368 | integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== 369 | 370 | ansi-styles@^2.2.1: 371 | version "2.2.1" 372 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 373 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 374 | 375 | ansi-styles@^3.2.1: 376 | version "3.2.1" 377 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 378 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 379 | dependencies: 380 | color-convert "^1.9.0" 381 | 382 | anymatch@^2.0.0: 383 | version "2.0.0" 384 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 385 | integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== 386 | dependencies: 387 | micromatch "^3.1.4" 388 | normalize-path "^2.1.1" 389 | 390 | aproba@^1.0.3: 391 | version "1.2.0" 392 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 393 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 394 | 395 | are-we-there-yet@~1.1.2: 396 | version "1.1.5" 397 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 398 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 399 | dependencies: 400 | delegates "^1.0.0" 401 | readable-stream "^2.0.6" 402 | 403 | argparse@^1.0.7: 404 | version "1.0.10" 405 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 406 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 407 | dependencies: 408 | sprintf-js "~1.0.2" 409 | 410 | arr-diff@^4.0.0: 411 | version "4.0.0" 412 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 413 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 414 | 415 | arr-flatten@^1.1.0: 416 | version "1.1.0" 417 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 418 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 419 | 420 | arr-union@^3.1.0: 421 | version "3.1.0" 422 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 423 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 424 | 425 | array-differ@^1.0.0: 426 | version "1.0.0" 427 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" 428 | integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= 429 | 430 | array-find-index@^1.0.1: 431 | version "1.0.2" 432 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 433 | integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= 434 | 435 | array-union@^1.0.1: 436 | version "1.0.2" 437 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 438 | integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= 439 | dependencies: 440 | array-uniq "^1.0.1" 441 | 442 | array-uniq@^1.0.1: 443 | version "1.0.3" 444 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 445 | integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= 446 | 447 | array-uniq@^2.0.0: 448 | version "2.0.0" 449 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-2.0.0.tgz#0009e30306e37a6dd2e2e2480db5316fdade1583" 450 | integrity sha512-O3QZEr+3wDj7otzF7PjNGs6CA3qmYMLvt5xGkjY/V0VxS+ovvqVo/5wKM/OVOAyuX4DTh9H31zE/yKtO66hTkg== 451 | 452 | array-unique@^0.3.2: 453 | version "0.3.2" 454 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 455 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 456 | 457 | arrify@^1.0.0, arrify@^1.0.1: 458 | version "1.0.1" 459 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 460 | integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= 461 | 462 | assertion-error@^1.1.0: 463 | version "1.1.0" 464 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 465 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 466 | 467 | assign-symbols@^1.0.0: 468 | version "1.0.0" 469 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 470 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 471 | 472 | async-each@^1.0.0: 473 | version "1.0.1" 474 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 475 | integrity sha1-GdOGodntxufByF04iu28xW0zYC0= 476 | 477 | atob@^2.1.1: 478 | version "2.1.2" 479 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 480 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 481 | 482 | ava@^1.0.0-rc.2: 483 | version "1.0.0-rc.2" 484 | resolved "https://registry.yarnpkg.com/ava/-/ava-1.0.0-rc.2.tgz#a2f63211d2ad1924fa4671ff3b29212b1da656af" 485 | integrity sha512-MxCW+bY+ddID5SrZZHbkuCiwsLup3Dn/bAgnrl6BzHYRI4RF9Yk5zv6S2L1TjqUF1LvRS8RiqZBrD+G6db+fEg== 486 | dependencies: 487 | "@ava/babel-preset-stage-4" "^2.0.0" 488 | "@ava/babel-preset-transform-test-files" "^4.0.0" 489 | "@ava/write-file-atomic" "^2.2.0" 490 | "@babel/core" "^7.1.5" 491 | "@babel/generator" "^7.1.5" 492 | "@babel/plugin-syntax-async-generators" "^7.0.0" 493 | "@babel/plugin-syntax-object-rest-spread" "^7.0.0" 494 | "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" 495 | "@concordance/react" "^2.0.0" 496 | ansi-escapes "^3.1.0" 497 | ansi-styles "^3.2.1" 498 | arr-flatten "^1.1.0" 499 | array-union "^1.0.1" 500 | array-uniq "^2.0.0" 501 | arrify "^1.0.0" 502 | bluebird "^3.5.3" 503 | chalk "^2.4.1" 504 | chokidar "^2.0.4" 505 | chunkd "^1.0.0" 506 | ci-parallel-vars "^1.0.0" 507 | clean-stack "^2.0.0" 508 | clean-yaml-object "^0.1.0" 509 | cli-cursor "^2.1.0" 510 | cli-truncate "^1.1.0" 511 | code-excerpt "^2.1.1" 512 | common-path-prefix "^1.0.0" 513 | concordance "^4.0.0" 514 | convert-source-map "^1.6.0" 515 | currently-unhandled "^0.4.1" 516 | debug "^4.1.0" 517 | del "^3.0.0" 518 | dot-prop "^4.2.0" 519 | emittery "^0.4.1" 520 | empower-core "^1.2.0" 521 | equal-length "^1.0.0" 522 | escape-string-regexp "^1.0.5" 523 | esm "^3.0.84" 524 | figures "^2.0.0" 525 | find-up "^3.0.0" 526 | get-port "^4.0.0" 527 | globby "^7.1.1" 528 | ignore-by-default "^1.0.0" 529 | import-local "^2.0.0" 530 | indent-string "^3.2.0" 531 | is-ci "^1.2.1" 532 | is-error "^2.2.1" 533 | is-observable "^1.1.0" 534 | is-plain-object "^2.0.4" 535 | is-promise "^2.1.0" 536 | lodash.clone "^4.5.0" 537 | lodash.clonedeep "^4.5.0" 538 | lodash.clonedeepwith "^4.5.0" 539 | lodash.debounce "^4.0.3" 540 | lodash.difference "^4.3.0" 541 | lodash.flatten "^4.2.0" 542 | loud-rejection "^1.2.0" 543 | make-dir "^1.3.0" 544 | matcher "^1.1.1" 545 | md5-hex "^2.0.0" 546 | meow "^5.0.0" 547 | ms "^2.1.1" 548 | multimatch "^2.1.0" 549 | observable-to-promise "^0.5.0" 550 | ora "^3.0.0" 551 | package-hash "^2.0.0" 552 | pkg-conf "^2.1.0" 553 | plur "^3.0.1" 554 | pretty-ms "^4.0.0" 555 | require-precompiled "^0.1.0" 556 | resolve-cwd "^2.0.0" 557 | slash "^2.0.0" 558 | source-map-support "^0.5.9" 559 | stack-utils "^1.0.1" 560 | strip-ansi "^5.0.0" 561 | strip-bom-buf "^1.0.0" 562 | supertap "^1.0.0" 563 | supports-color "^5.5.0" 564 | trim-off-newlines "^1.0.1" 565 | trim-right "^1.0.1" 566 | unique-temp-dir "^1.0.0" 567 | update-notifier "^2.5.0" 568 | 569 | babel-code-frame@^6.22.0: 570 | version "6.26.0" 571 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 572 | integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= 573 | dependencies: 574 | chalk "^1.1.3" 575 | esutils "^2.0.2" 576 | js-tokens "^3.0.2" 577 | 578 | babel-plugin-espower@^3.0.0: 579 | version "3.0.0" 580 | resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.0.tgz#8dadfa5ec2b9c82e3c4aa0a2d14fbd3ff6d40061" 581 | integrity sha512-f2IUz5kQyrwXnShcv7tvGxf76QkrEl00ENYgd6R0VMrz4xqlwBLZXFs5vse2vehs1Z+T2sXTP3UWX2QxMorzzw== 582 | dependencies: 583 | "@babel/generator" "^7.0.0" 584 | "@babel/parser" "^7.0.0" 585 | call-matcher "^1.0.0" 586 | core-js "^2.0.0" 587 | espower-location-detector "^1.0.0" 588 | espurify "^1.6.0" 589 | estraverse "^4.1.1" 590 | 591 | balanced-match@^1.0.0: 592 | version "1.0.0" 593 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 594 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 595 | 596 | base@^0.11.1: 597 | version "0.11.2" 598 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 599 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 600 | dependencies: 601 | cache-base "^1.0.1" 602 | class-utils "^0.3.5" 603 | component-emitter "^1.2.1" 604 | define-property "^1.0.0" 605 | isobject "^3.0.1" 606 | mixin-deep "^1.2.0" 607 | pascalcase "^0.1.1" 608 | 609 | binary-extensions@^1.0.0: 610 | version "1.12.0" 611 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" 612 | integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== 613 | 614 | bluebird@^3.5.3: 615 | version "3.5.3" 616 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" 617 | integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== 618 | 619 | boxen@^1.2.1: 620 | version "1.3.0" 621 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" 622 | integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== 623 | dependencies: 624 | ansi-align "^2.0.0" 625 | camelcase "^4.0.0" 626 | chalk "^2.0.1" 627 | cli-boxes "^1.0.0" 628 | string-width "^2.0.0" 629 | term-size "^1.2.0" 630 | widest-line "^2.0.0" 631 | 632 | brace-expansion@^1.1.7: 633 | version "1.1.11" 634 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 635 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 636 | dependencies: 637 | balanced-match "^1.0.0" 638 | concat-map "0.0.1" 639 | 640 | braces@^2.3.0, braces@^2.3.1: 641 | version "2.3.2" 642 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 643 | integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 644 | dependencies: 645 | arr-flatten "^1.1.0" 646 | array-unique "^0.3.2" 647 | extend-shallow "^2.0.1" 648 | fill-range "^4.0.0" 649 | isobject "^3.0.1" 650 | repeat-element "^1.1.2" 651 | snapdragon "^0.8.1" 652 | snapdragon-node "^2.0.1" 653 | split-string "^3.0.2" 654 | to-regex "^3.0.1" 655 | 656 | buffer-from@^1.0.0, buffer-from@^1.1.0: 657 | version "1.1.1" 658 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 659 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 660 | 661 | builtin-modules@^1.0.0, builtin-modules@^1.1.1: 662 | version "1.1.1" 663 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 664 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 665 | 666 | cache-base@^1.0.1: 667 | version "1.0.1" 668 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 669 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 670 | dependencies: 671 | collection-visit "^1.0.0" 672 | component-emitter "^1.2.1" 673 | get-value "^2.0.6" 674 | has-value "^1.0.0" 675 | isobject "^3.0.1" 676 | set-value "^2.0.0" 677 | to-object-path "^0.3.0" 678 | union-value "^1.0.0" 679 | unset-value "^1.0.0" 680 | 681 | call-matcher@^1.0.0: 682 | version "1.1.0" 683 | resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432" 684 | integrity sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw== 685 | dependencies: 686 | core-js "^2.0.0" 687 | deep-equal "^1.0.0" 688 | espurify "^1.6.0" 689 | estraverse "^4.0.0" 690 | 691 | call-signature@0.0.2: 692 | version "0.0.2" 693 | resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" 694 | integrity sha1-qEq8glpV70yysCi9dOIFpluaSZY= 695 | 696 | camelcase-keys@^4.0.0: 697 | version "4.2.0" 698 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" 699 | integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= 700 | dependencies: 701 | camelcase "^4.1.0" 702 | map-obj "^2.0.0" 703 | quick-lru "^1.0.0" 704 | 705 | camelcase@^4.0.0, camelcase@^4.1.0: 706 | version "4.1.0" 707 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 708 | integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= 709 | 710 | capture-stack-trace@^1.0.0: 711 | version "1.0.1" 712 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" 713 | integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== 714 | 715 | chai@^4.2.0: 716 | version "4.2.0" 717 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 718 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 719 | dependencies: 720 | assertion-error "^1.1.0" 721 | check-error "^1.0.2" 722 | deep-eql "^3.0.1" 723 | get-func-name "^2.0.0" 724 | pathval "^1.1.0" 725 | type-detect "^4.0.5" 726 | 727 | chalk@^1.1.3: 728 | version "1.1.3" 729 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 730 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 731 | dependencies: 732 | ansi-styles "^2.2.1" 733 | escape-string-regexp "^1.0.2" 734 | has-ansi "^2.0.0" 735 | strip-ansi "^3.0.0" 736 | supports-color "^2.0.0" 737 | 738 | chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1: 739 | version "2.4.1" 740 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 741 | integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== 742 | dependencies: 743 | ansi-styles "^3.2.1" 744 | escape-string-regexp "^1.0.5" 745 | supports-color "^5.3.0" 746 | 747 | check-error@^1.0.2: 748 | version "1.0.2" 749 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 750 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 751 | 752 | chokidar@^2.0.4: 753 | version "2.0.4" 754 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" 755 | integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== 756 | dependencies: 757 | anymatch "^2.0.0" 758 | async-each "^1.0.0" 759 | braces "^2.3.0" 760 | glob-parent "^3.1.0" 761 | inherits "^2.0.1" 762 | is-binary-path "^1.0.0" 763 | is-glob "^4.0.0" 764 | lodash.debounce "^4.0.8" 765 | normalize-path "^2.1.1" 766 | path-is-absolute "^1.0.0" 767 | readdirp "^2.0.0" 768 | upath "^1.0.5" 769 | optionalDependencies: 770 | fsevents "^1.2.2" 771 | 772 | chownr@^1.1.1: 773 | version "1.1.1" 774 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" 775 | integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== 776 | 777 | chunkd@^1.0.0: 778 | version "1.0.0" 779 | resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-1.0.0.tgz#4ead4a3704bcce510c4bb4d4a8be30c557836dd1" 780 | integrity sha512-xx3Pb5VF9QaqCotolyZ1ywFBgyuJmu6+9dLiqBxgelEse9Xsr3yUlpoX3O4Oh11M00GT2kYMsRByTKIMJW2Lkg== 781 | 782 | ci-info@^1.5.0: 783 | version "1.6.0" 784 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" 785 | integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== 786 | 787 | ci-parallel-vars@^1.0.0: 788 | version "1.0.0" 789 | resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.0.tgz#af97729ed1c7381911ca37bcea263d62638701b3" 790 | integrity sha512-u6dx20FBXm+apMi+5x7UVm6EH7BL1gc4XrcnQewjcB7HWRcor/V5qWc3RG2HwpgDJ26gIi2DSEu3B7sXynAw/g== 791 | 792 | class-utils@^0.3.5: 793 | version "0.3.6" 794 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 795 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 796 | dependencies: 797 | arr-union "^3.1.0" 798 | define-property "^0.2.5" 799 | isobject "^3.0.0" 800 | static-extend "^0.1.1" 801 | 802 | clean-stack@^2.0.0: 803 | version "2.0.0" 804 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.0.0.tgz#301bfa9e8dd2d3d984c0e542f7aa67b996f63e0a" 805 | integrity sha512-VEoL9Qh7I8s8iHnV53DaeWSt8NJ0g3khMfK6NiCPB7H657juhro+cSw2O88uo3bo0c0X5usamtXk0/Of0wXa5A== 806 | 807 | clean-yaml-object@^0.1.0: 808 | version "0.1.0" 809 | resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" 810 | integrity sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g= 811 | 812 | cli-boxes@^1.0.0: 813 | version "1.0.0" 814 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" 815 | integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= 816 | 817 | cli-cursor@^2.1.0: 818 | version "2.1.0" 819 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 820 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 821 | dependencies: 822 | restore-cursor "^2.0.0" 823 | 824 | cli-spinners@^1.1.0: 825 | version "1.3.1" 826 | resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" 827 | integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== 828 | 829 | cli-truncate@^1.1.0: 830 | version "1.1.0" 831 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" 832 | integrity sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA== 833 | dependencies: 834 | slice-ansi "^1.0.0" 835 | string-width "^2.0.0" 836 | 837 | clone@^1.0.2: 838 | version "1.0.4" 839 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 840 | integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= 841 | 842 | code-excerpt@^2.1.1: 843 | version "2.1.1" 844 | resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-2.1.1.tgz#5fe3057bfbb71a5f300f659ef2cc0a47651ba77c" 845 | integrity sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw== 846 | dependencies: 847 | convert-to-spaces "^1.0.1" 848 | 849 | code-point-at@^1.0.0: 850 | version "1.1.0" 851 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 852 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 853 | 854 | collection-visit@^1.0.0: 855 | version "1.0.0" 856 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 857 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 858 | dependencies: 859 | map-visit "^1.0.0" 860 | object-visit "^1.0.0" 861 | 862 | color-convert@^1.9.0: 863 | version "1.9.3" 864 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 865 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 866 | dependencies: 867 | color-name "1.1.3" 868 | 869 | color-name@1.1.3: 870 | version "1.1.3" 871 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 872 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 873 | 874 | commander@^2.12.1: 875 | version "2.19.0" 876 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" 877 | integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== 878 | 879 | common-path-prefix@^1.0.0: 880 | version "1.0.0" 881 | resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" 882 | integrity sha1-zVL28HEuC6q5fW+XModPIvR3UsA= 883 | 884 | component-emitter@^1.2.1: 885 | version "1.2.1" 886 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 887 | integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= 888 | 889 | concat-map@0.0.1: 890 | version "0.0.1" 891 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 892 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 893 | 894 | concordance@^4.0.0: 895 | version "4.0.0" 896 | resolved "https://registry.yarnpkg.com/concordance/-/concordance-4.0.0.tgz#5932fdee397d129bdbc3a1885fbe69839b1b7e15" 897 | integrity sha512-l0RFuB8RLfCS0Pt2Id39/oCPykE01pyxgAFypWTlaGRgvLkZrtczZ8atEHpTeEIW+zYWXTBuA9cCSeEOScxReQ== 898 | dependencies: 899 | date-time "^2.1.0" 900 | esutils "^2.0.2" 901 | fast-diff "^1.1.2" 902 | js-string-escape "^1.0.1" 903 | lodash.clonedeep "^4.5.0" 904 | lodash.flattendeep "^4.4.0" 905 | lodash.islength "^4.0.1" 906 | lodash.merge "^4.6.1" 907 | md5-hex "^2.0.0" 908 | semver "^5.5.1" 909 | well-known-symbols "^2.0.0" 910 | 911 | configstore@^3.0.0: 912 | version "3.1.2" 913 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" 914 | integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== 915 | dependencies: 916 | dot-prop "^4.1.0" 917 | graceful-fs "^4.1.2" 918 | make-dir "^1.0.0" 919 | unique-string "^1.0.0" 920 | write-file-atomic "^2.0.0" 921 | xdg-basedir "^3.0.0" 922 | 923 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 924 | version "1.1.0" 925 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 926 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 927 | 928 | convert-source-map@^1.1.0, convert-source-map@^1.6.0: 929 | version "1.6.0" 930 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" 931 | integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== 932 | dependencies: 933 | safe-buffer "~5.1.1" 934 | 935 | convert-to-spaces@^1.0.1: 936 | version "1.0.2" 937 | resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" 938 | integrity sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU= 939 | 940 | copy-descriptor@^0.1.0: 941 | version "0.1.1" 942 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 943 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 944 | 945 | core-js@^2.0.0: 946 | version "2.5.7" 947 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" 948 | integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== 949 | 950 | core-util-is@~1.0.0: 951 | version "1.0.2" 952 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 953 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 954 | 955 | create-error-class@^3.0.0: 956 | version "3.0.2" 957 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 958 | integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= 959 | dependencies: 960 | capture-stack-trace "^1.0.0" 961 | 962 | cross-spawn@^5.0.1: 963 | version "5.1.0" 964 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 965 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 966 | dependencies: 967 | lru-cache "^4.0.1" 968 | shebang-command "^1.2.0" 969 | which "^1.2.9" 970 | 971 | crypto-random-string@^1.0.0: 972 | version "1.0.0" 973 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" 974 | integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= 975 | 976 | currently-unhandled@^0.4.1: 977 | version "0.4.1" 978 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 979 | integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= 980 | dependencies: 981 | array-find-index "^1.0.1" 982 | 983 | date-time@^2.1.0: 984 | version "2.1.0" 985 | resolved "https://registry.yarnpkg.com/date-time/-/date-time-2.1.0.tgz#0286d1b4c769633b3ca13e1e62558d2dbdc2eba2" 986 | integrity sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g== 987 | dependencies: 988 | time-zone "^1.0.0" 989 | 990 | debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: 991 | version "2.6.9" 992 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 993 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 994 | dependencies: 995 | ms "2.0.0" 996 | 997 | debug@^4.1.0: 998 | version "4.1.0" 999 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" 1000 | integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== 1001 | dependencies: 1002 | ms "^2.1.1" 1003 | 1004 | decamelize-keys@^1.0.0: 1005 | version "1.1.0" 1006 | resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" 1007 | integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= 1008 | dependencies: 1009 | decamelize "^1.1.0" 1010 | map-obj "^1.0.0" 1011 | 1012 | decamelize@^1.1.0: 1013 | version "1.2.0" 1014 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 1015 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 1016 | 1017 | decode-uri-component@^0.2.0: 1018 | version "0.2.0" 1019 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 1020 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 1021 | 1022 | deep-eql@^3.0.1: 1023 | version "3.0.1" 1024 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 1025 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 1026 | dependencies: 1027 | type-detect "^4.0.0" 1028 | 1029 | deep-equal@^1.0.0: 1030 | version "1.0.1" 1031 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 1032 | integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= 1033 | 1034 | deep-extend@^0.6.0: 1035 | version "0.6.0" 1036 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 1037 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 1038 | 1039 | defaults@^1.0.3: 1040 | version "1.0.3" 1041 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 1042 | integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= 1043 | dependencies: 1044 | clone "^1.0.2" 1045 | 1046 | define-property@^0.2.5: 1047 | version "0.2.5" 1048 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 1049 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 1050 | dependencies: 1051 | is-descriptor "^0.1.0" 1052 | 1053 | define-property@^1.0.0: 1054 | version "1.0.0" 1055 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 1056 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 1057 | dependencies: 1058 | is-descriptor "^1.0.0" 1059 | 1060 | define-property@^2.0.2: 1061 | version "2.0.2" 1062 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 1063 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 1064 | dependencies: 1065 | is-descriptor "^1.0.2" 1066 | isobject "^3.0.1" 1067 | 1068 | del@^3.0.0: 1069 | version "3.0.0" 1070 | resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" 1071 | integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= 1072 | dependencies: 1073 | globby "^6.1.0" 1074 | is-path-cwd "^1.0.0" 1075 | is-path-in-cwd "^1.0.0" 1076 | p-map "^1.1.1" 1077 | pify "^3.0.0" 1078 | rimraf "^2.2.8" 1079 | 1080 | delegates@^1.0.0: 1081 | version "1.0.0" 1082 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 1083 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 1084 | 1085 | detect-libc@^1.0.2: 1086 | version "1.0.3" 1087 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 1088 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 1089 | 1090 | diff@^3.1.0, diff@^3.2.0: 1091 | version "3.5.0" 1092 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 1093 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 1094 | 1095 | dir-glob@^2.0.0: 1096 | version "2.0.0" 1097 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" 1098 | integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== 1099 | dependencies: 1100 | arrify "^1.0.1" 1101 | path-type "^3.0.0" 1102 | 1103 | dot-prop@^4.1.0, dot-prop@^4.2.0: 1104 | version "4.2.0" 1105 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" 1106 | integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== 1107 | dependencies: 1108 | is-obj "^1.0.0" 1109 | 1110 | duplexer3@^0.1.4: 1111 | version "0.1.4" 1112 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 1113 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 1114 | 1115 | emittery@^0.4.1: 1116 | version "0.4.1" 1117 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.4.1.tgz#abe9d3297389ba424ac87e53d1c701962ce7433d" 1118 | integrity sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ== 1119 | 1120 | empower-core@^1.2.0: 1121 | version "1.2.0" 1122 | resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-1.2.0.tgz#ce3fb2484d5187fa29c23fba8344b0b2fdf5601c" 1123 | integrity sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ== 1124 | dependencies: 1125 | call-signature "0.0.2" 1126 | core-js "^2.0.0" 1127 | 1128 | equal-length@^1.0.0: 1129 | version "1.0.1" 1130 | resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" 1131 | integrity sha1-IcoRLUirJLTh5//A5TOdMf38J0w= 1132 | 1133 | error-ex@^1.3.1: 1134 | version "1.3.2" 1135 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1136 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1137 | dependencies: 1138 | is-arrayish "^0.2.1" 1139 | 1140 | es6-error@^4.0.1: 1141 | version "4.1.1" 1142 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" 1143 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== 1144 | 1145 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: 1146 | version "1.0.5" 1147 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1148 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1149 | 1150 | eslint-plugin-prettier@^2.2.0: 1151 | version "2.7.0" 1152 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904" 1153 | integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA== 1154 | dependencies: 1155 | fast-diff "^1.1.1" 1156 | jest-docblock "^21.0.0" 1157 | 1158 | esm@^3.0.84: 1159 | version "3.0.84" 1160 | resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63" 1161 | integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw== 1162 | 1163 | espower-location-detector@^1.0.0: 1164 | version "1.0.0" 1165 | resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" 1166 | integrity sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU= 1167 | dependencies: 1168 | is-url "^1.2.1" 1169 | path-is-absolute "^1.0.0" 1170 | source-map "^0.5.0" 1171 | xtend "^4.0.0" 1172 | 1173 | esprima@^4.0.0: 1174 | version "4.0.1" 1175 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1176 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1177 | 1178 | espurify@^1.6.0: 1179 | version "1.8.1" 1180 | resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056" 1181 | integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg== 1182 | dependencies: 1183 | core-js "^2.0.0" 1184 | 1185 | estraverse@^4.0.0, estraverse@^4.1.1: 1186 | version "4.2.0" 1187 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 1188 | integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= 1189 | 1190 | esutils@^2.0.2: 1191 | version "2.0.2" 1192 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1193 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 1194 | 1195 | execa@^0.7.0: 1196 | version "0.7.0" 1197 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 1198 | integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= 1199 | dependencies: 1200 | cross-spawn "^5.0.1" 1201 | get-stream "^3.0.0" 1202 | is-stream "^1.1.0" 1203 | npm-run-path "^2.0.0" 1204 | p-finally "^1.0.0" 1205 | signal-exit "^3.0.0" 1206 | strip-eof "^1.0.0" 1207 | 1208 | expand-brackets@^2.1.4: 1209 | version "2.1.4" 1210 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 1211 | integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 1212 | dependencies: 1213 | debug "^2.3.3" 1214 | define-property "^0.2.5" 1215 | extend-shallow "^2.0.1" 1216 | posix-character-classes "^0.1.0" 1217 | regex-not "^1.0.0" 1218 | snapdragon "^0.8.1" 1219 | to-regex "^3.0.1" 1220 | 1221 | extend-shallow@^2.0.1: 1222 | version "2.0.1" 1223 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 1224 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 1225 | dependencies: 1226 | is-extendable "^0.1.0" 1227 | 1228 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 1229 | version "3.0.2" 1230 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 1231 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 1232 | dependencies: 1233 | assign-symbols "^1.0.0" 1234 | is-extendable "^1.0.1" 1235 | 1236 | extglob@^2.0.4: 1237 | version "2.0.4" 1238 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 1239 | integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 1240 | dependencies: 1241 | array-unique "^0.3.2" 1242 | define-property "^1.0.0" 1243 | expand-brackets "^2.1.4" 1244 | extend-shallow "^2.0.1" 1245 | fragment-cache "^0.2.1" 1246 | regex-not "^1.0.0" 1247 | snapdragon "^0.8.1" 1248 | to-regex "^3.0.1" 1249 | 1250 | fast-diff@^1.1.1, fast-diff@^1.1.2: 1251 | version "1.2.0" 1252 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 1253 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 1254 | 1255 | figures@^2.0.0: 1256 | version "2.0.0" 1257 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 1258 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 1259 | dependencies: 1260 | escape-string-regexp "^1.0.5" 1261 | 1262 | fill-range@^4.0.0: 1263 | version "4.0.0" 1264 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 1265 | integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 1266 | dependencies: 1267 | extend-shallow "^2.0.1" 1268 | is-number "^3.0.0" 1269 | repeat-string "^1.6.1" 1270 | to-regex-range "^2.1.0" 1271 | 1272 | find-up@^2.0.0: 1273 | version "2.1.0" 1274 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1275 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 1276 | dependencies: 1277 | locate-path "^2.0.0" 1278 | 1279 | find-up@^3.0.0: 1280 | version "3.0.0" 1281 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 1282 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 1283 | dependencies: 1284 | locate-path "^3.0.0" 1285 | 1286 | for-in@^1.0.2: 1287 | version "1.0.2" 1288 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1289 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 1290 | 1291 | fragment-cache@^0.2.1: 1292 | version "0.2.1" 1293 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1294 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 1295 | dependencies: 1296 | map-cache "^0.2.2" 1297 | 1298 | fs-minipass@^1.2.5: 1299 | version "1.2.5" 1300 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 1301 | integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== 1302 | dependencies: 1303 | minipass "^2.2.1" 1304 | 1305 | fs.realpath@^1.0.0: 1306 | version "1.0.0" 1307 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1308 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1309 | 1310 | fsevents@^1.2.2: 1311 | version "1.2.4" 1312 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" 1313 | integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== 1314 | dependencies: 1315 | nan "^2.9.2" 1316 | node-pre-gyp "^0.10.0" 1317 | 1318 | gauge@~2.7.3: 1319 | version "2.7.4" 1320 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1321 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 1322 | dependencies: 1323 | aproba "^1.0.3" 1324 | console-control-strings "^1.0.0" 1325 | has-unicode "^2.0.0" 1326 | object-assign "^4.1.0" 1327 | signal-exit "^3.0.0" 1328 | string-width "^1.0.1" 1329 | strip-ansi "^3.0.1" 1330 | wide-align "^1.1.0" 1331 | 1332 | get-func-name@^2.0.0: 1333 | version "2.0.0" 1334 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 1335 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 1336 | 1337 | get-port@^4.0.0: 1338 | version "4.0.0" 1339 | resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.0.0.tgz#373c85960138ee20027c070e3cb08019fea29816" 1340 | integrity sha512-Yy3yNI2oShgbaWg4cmPhWjkZfktEvpKI09aDX4PZzNtlU9obuYrX7x2mumQsrNxlF+Ls7OtMQW/u+X4s896bOQ== 1341 | 1342 | get-stream@^3.0.0: 1343 | version "3.0.0" 1344 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 1345 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 1346 | 1347 | get-value@^2.0.3, get-value@^2.0.6: 1348 | version "2.0.6" 1349 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1350 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 1351 | 1352 | glob-parent@^3.1.0: 1353 | version "3.1.0" 1354 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" 1355 | integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= 1356 | dependencies: 1357 | is-glob "^3.1.0" 1358 | path-dirname "^1.0.0" 1359 | 1360 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: 1361 | version "7.1.3" 1362 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1363 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 1364 | dependencies: 1365 | fs.realpath "^1.0.0" 1366 | inflight "^1.0.4" 1367 | inherits "2" 1368 | minimatch "^3.0.4" 1369 | once "^1.3.0" 1370 | path-is-absolute "^1.0.0" 1371 | 1372 | global-dirs@^0.1.0: 1373 | version "0.1.1" 1374 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" 1375 | integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= 1376 | dependencies: 1377 | ini "^1.3.4" 1378 | 1379 | globals@^11.1.0: 1380 | version "11.9.0" 1381 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" 1382 | integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== 1383 | 1384 | globby@^6.1.0: 1385 | version "6.1.0" 1386 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 1387 | integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= 1388 | dependencies: 1389 | array-union "^1.0.1" 1390 | glob "^7.0.3" 1391 | object-assign "^4.0.1" 1392 | pify "^2.0.0" 1393 | pinkie-promise "^2.0.0" 1394 | 1395 | globby@^7.1.1: 1396 | version "7.1.1" 1397 | resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" 1398 | integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= 1399 | dependencies: 1400 | array-union "^1.0.1" 1401 | dir-glob "^2.0.0" 1402 | glob "^7.1.2" 1403 | ignore "^3.3.5" 1404 | pify "^3.0.0" 1405 | slash "^1.0.0" 1406 | 1407 | got@^6.7.1: 1408 | version "6.7.1" 1409 | resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" 1410 | integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= 1411 | dependencies: 1412 | create-error-class "^3.0.0" 1413 | duplexer3 "^0.1.4" 1414 | get-stream "^3.0.0" 1415 | is-redirect "^1.0.0" 1416 | is-retry-allowed "^1.0.0" 1417 | is-stream "^1.0.0" 1418 | lowercase-keys "^1.0.0" 1419 | safe-buffer "^5.0.1" 1420 | timed-out "^4.0.0" 1421 | unzip-response "^2.0.1" 1422 | url-parse-lax "^1.0.0" 1423 | 1424 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 1425 | version "4.1.15" 1426 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 1427 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 1428 | 1429 | has-ansi@^2.0.0: 1430 | version "2.0.0" 1431 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1432 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 1433 | dependencies: 1434 | ansi-regex "^2.0.0" 1435 | 1436 | has-flag@^3.0.0: 1437 | version "3.0.0" 1438 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1439 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1440 | 1441 | has-unicode@^2.0.0: 1442 | version "2.0.1" 1443 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1444 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 1445 | 1446 | has-value@^0.3.1: 1447 | version "0.3.1" 1448 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1449 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 1450 | dependencies: 1451 | get-value "^2.0.3" 1452 | has-values "^0.1.4" 1453 | isobject "^2.0.0" 1454 | 1455 | has-value@^1.0.0: 1456 | version "1.0.0" 1457 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1458 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 1459 | dependencies: 1460 | get-value "^2.0.6" 1461 | has-values "^1.0.0" 1462 | isobject "^3.0.0" 1463 | 1464 | has-values@^0.1.4: 1465 | version "0.1.4" 1466 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1467 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 1468 | 1469 | has-values@^1.0.0: 1470 | version "1.0.0" 1471 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1472 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 1473 | dependencies: 1474 | is-number "^3.0.0" 1475 | kind-of "^4.0.0" 1476 | 1477 | hosted-git-info@^2.1.4: 1478 | version "2.7.1" 1479 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" 1480 | integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== 1481 | 1482 | iconv-lite@^0.4.4: 1483 | version "0.4.24" 1484 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1485 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1486 | dependencies: 1487 | safer-buffer ">= 2.1.2 < 3" 1488 | 1489 | ignore-by-default@^1.0.0: 1490 | version "1.0.1" 1491 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 1492 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 1493 | 1494 | ignore-walk@^3.0.1: 1495 | version "3.0.1" 1496 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 1497 | integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== 1498 | dependencies: 1499 | minimatch "^3.0.4" 1500 | 1501 | ignore@^3.3.5: 1502 | version "3.3.10" 1503 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" 1504 | integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== 1505 | 1506 | import-lazy@^2.1.0: 1507 | version "2.1.0" 1508 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 1509 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 1510 | 1511 | import-local@^2.0.0: 1512 | version "2.0.0" 1513 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" 1514 | integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== 1515 | dependencies: 1516 | pkg-dir "^3.0.0" 1517 | resolve-cwd "^2.0.0" 1518 | 1519 | imurmurhash@^0.1.4: 1520 | version "0.1.4" 1521 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1522 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1523 | 1524 | indent-string@^3.0.0, indent-string@^3.2.0: 1525 | version "3.2.0" 1526 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" 1527 | integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= 1528 | 1529 | inflight@^1.0.4: 1530 | version "1.0.6" 1531 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1532 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1533 | dependencies: 1534 | once "^1.3.0" 1535 | wrappy "1" 1536 | 1537 | inherits@2, inherits@^2.0.1, inherits@~2.0.3: 1538 | version "2.0.3" 1539 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1540 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1541 | 1542 | ini@^1.3.4, ini@~1.3.0: 1543 | version "1.3.5" 1544 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1545 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 1546 | 1547 | irregular-plurals@^2.0.0: 1548 | version "2.0.0" 1549 | resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872" 1550 | integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw== 1551 | 1552 | is-accessor-descriptor@^0.1.6: 1553 | version "0.1.6" 1554 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1555 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 1556 | dependencies: 1557 | kind-of "^3.0.2" 1558 | 1559 | is-accessor-descriptor@^1.0.0: 1560 | version "1.0.0" 1561 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1562 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 1563 | dependencies: 1564 | kind-of "^6.0.0" 1565 | 1566 | is-arrayish@^0.2.1: 1567 | version "0.2.1" 1568 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1569 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1570 | 1571 | is-binary-path@^1.0.0: 1572 | version "1.0.1" 1573 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1574 | integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= 1575 | dependencies: 1576 | binary-extensions "^1.0.0" 1577 | 1578 | is-buffer@^1.1.5: 1579 | version "1.1.6" 1580 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1581 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1582 | 1583 | is-builtin-module@^1.0.0: 1584 | version "1.0.0" 1585 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1586 | integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= 1587 | dependencies: 1588 | builtin-modules "^1.0.0" 1589 | 1590 | is-ci@^1.0.10, is-ci@^1.2.1: 1591 | version "1.2.1" 1592 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" 1593 | integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== 1594 | dependencies: 1595 | ci-info "^1.5.0" 1596 | 1597 | is-data-descriptor@^0.1.4: 1598 | version "0.1.4" 1599 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1600 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 1601 | dependencies: 1602 | kind-of "^3.0.2" 1603 | 1604 | is-data-descriptor@^1.0.0: 1605 | version "1.0.0" 1606 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1607 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 1608 | dependencies: 1609 | kind-of "^6.0.0" 1610 | 1611 | is-descriptor@^0.1.0: 1612 | version "0.1.6" 1613 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1614 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 1615 | dependencies: 1616 | is-accessor-descriptor "^0.1.6" 1617 | is-data-descriptor "^0.1.4" 1618 | kind-of "^5.0.0" 1619 | 1620 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1621 | version "1.0.2" 1622 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1623 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 1624 | dependencies: 1625 | is-accessor-descriptor "^1.0.0" 1626 | is-data-descriptor "^1.0.0" 1627 | kind-of "^6.0.2" 1628 | 1629 | is-error@^2.2.1: 1630 | version "2.2.1" 1631 | resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" 1632 | integrity sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw= 1633 | 1634 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1635 | version "0.1.1" 1636 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1637 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 1638 | 1639 | is-extendable@^1.0.1: 1640 | version "1.0.1" 1641 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1642 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 1643 | dependencies: 1644 | is-plain-object "^2.0.4" 1645 | 1646 | is-extglob@^2.1.0, is-extglob@^2.1.1: 1647 | version "2.1.1" 1648 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1649 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1650 | 1651 | is-fullwidth-code-point@^1.0.0: 1652 | version "1.0.0" 1653 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1654 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1655 | dependencies: 1656 | number-is-nan "^1.0.0" 1657 | 1658 | is-fullwidth-code-point@^2.0.0: 1659 | version "2.0.0" 1660 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1661 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1662 | 1663 | is-glob@^3.1.0: 1664 | version "3.1.0" 1665 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 1666 | integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= 1667 | dependencies: 1668 | is-extglob "^2.1.0" 1669 | 1670 | is-glob@^4.0.0: 1671 | version "4.0.0" 1672 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" 1673 | integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= 1674 | dependencies: 1675 | is-extglob "^2.1.1" 1676 | 1677 | is-installed-globally@^0.1.0: 1678 | version "0.1.0" 1679 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" 1680 | integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= 1681 | dependencies: 1682 | global-dirs "^0.1.0" 1683 | is-path-inside "^1.0.0" 1684 | 1685 | is-npm@^1.0.0: 1686 | version "1.0.0" 1687 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" 1688 | integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= 1689 | 1690 | is-number@^3.0.0: 1691 | version "3.0.0" 1692 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1693 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 1694 | dependencies: 1695 | kind-of "^3.0.2" 1696 | 1697 | is-obj@^1.0.0: 1698 | version "1.0.1" 1699 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 1700 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 1701 | 1702 | is-observable@^0.2.0: 1703 | version "0.2.0" 1704 | resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" 1705 | integrity sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI= 1706 | dependencies: 1707 | symbol-observable "^0.2.2" 1708 | 1709 | is-observable@^1.1.0: 1710 | version "1.1.0" 1711 | resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" 1712 | integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== 1713 | dependencies: 1714 | symbol-observable "^1.1.0" 1715 | 1716 | is-path-cwd@^1.0.0: 1717 | version "1.0.0" 1718 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 1719 | integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= 1720 | 1721 | is-path-in-cwd@^1.0.0: 1722 | version "1.0.1" 1723 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" 1724 | integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== 1725 | dependencies: 1726 | is-path-inside "^1.0.0" 1727 | 1728 | is-path-inside@^1.0.0: 1729 | version "1.0.1" 1730 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" 1731 | integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= 1732 | dependencies: 1733 | path-is-inside "^1.0.1" 1734 | 1735 | is-plain-obj@^1.1.0: 1736 | version "1.1.0" 1737 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1738 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= 1739 | 1740 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1741 | version "2.0.4" 1742 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1743 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1744 | dependencies: 1745 | isobject "^3.0.1" 1746 | 1747 | is-promise@^2.1.0: 1748 | version "2.1.0" 1749 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1750 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 1751 | 1752 | is-redirect@^1.0.0: 1753 | version "1.0.0" 1754 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 1755 | integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= 1756 | 1757 | is-retry-allowed@^1.0.0: 1758 | version "1.1.0" 1759 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" 1760 | integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= 1761 | 1762 | is-stream@^1.0.0, is-stream@^1.1.0: 1763 | version "1.1.0" 1764 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1765 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1766 | 1767 | is-url@^1.2.1: 1768 | version "1.2.4" 1769 | resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" 1770 | integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== 1771 | 1772 | is-utf8@^0.2.1: 1773 | version "0.2.1" 1774 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1775 | integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= 1776 | 1777 | is-windows@^1.0.2: 1778 | version "1.0.2" 1779 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1780 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 1781 | 1782 | isarray@1.0.0, isarray@~1.0.0: 1783 | version "1.0.0" 1784 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1785 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1786 | 1787 | isexe@^2.0.0: 1788 | version "2.0.0" 1789 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1790 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1791 | 1792 | isobject@^2.0.0: 1793 | version "2.1.0" 1794 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1795 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1796 | dependencies: 1797 | isarray "1.0.0" 1798 | 1799 | isobject@^3.0.0, isobject@^3.0.1: 1800 | version "3.0.1" 1801 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1802 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 1803 | 1804 | jest-docblock@^21.0.0: 1805 | version "21.2.0" 1806 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" 1807 | integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== 1808 | 1809 | js-string-escape@^1.0.1: 1810 | version "1.0.1" 1811 | resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" 1812 | integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= 1813 | 1814 | js-tokens@^3.0.2: 1815 | version "3.0.2" 1816 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1817 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= 1818 | 1819 | js-tokens@^4.0.0: 1820 | version "4.0.0" 1821 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1822 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1823 | 1824 | js-yaml@^3.10.0, js-yaml@^3.7.0: 1825 | version "3.12.0" 1826 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" 1827 | integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== 1828 | dependencies: 1829 | argparse "^1.0.7" 1830 | esprima "^4.0.0" 1831 | 1832 | jsesc@^2.5.1: 1833 | version "2.5.2" 1834 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1835 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1836 | 1837 | jsesc@~0.5.0: 1838 | version "0.5.0" 1839 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1840 | integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 1841 | 1842 | json-parse-better-errors@^1.0.1: 1843 | version "1.0.2" 1844 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1845 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1846 | 1847 | json5@^2.1.0: 1848 | version "2.1.0" 1849 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" 1850 | integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== 1851 | dependencies: 1852 | minimist "^1.2.0" 1853 | 1854 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1855 | version "3.2.2" 1856 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1857 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1858 | dependencies: 1859 | is-buffer "^1.1.5" 1860 | 1861 | kind-of@^4.0.0: 1862 | version "4.0.0" 1863 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1864 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1865 | dependencies: 1866 | is-buffer "^1.1.5" 1867 | 1868 | kind-of@^5.0.0: 1869 | version "5.1.0" 1870 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1871 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 1872 | 1873 | kind-of@^6.0.0, kind-of@^6.0.2: 1874 | version "6.0.2" 1875 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1876 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== 1877 | 1878 | latest-version@^3.0.0: 1879 | version "3.1.0" 1880 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" 1881 | integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= 1882 | dependencies: 1883 | package-json "^4.0.0" 1884 | 1885 | lines-and-columns@^1.1.6: 1886 | version "1.1.6" 1887 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 1888 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 1889 | 1890 | load-json-file@^4.0.0: 1891 | version "4.0.0" 1892 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 1893 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= 1894 | dependencies: 1895 | graceful-fs "^4.1.2" 1896 | parse-json "^4.0.0" 1897 | pify "^3.0.0" 1898 | strip-bom "^3.0.0" 1899 | 1900 | locate-path@^2.0.0: 1901 | version "2.0.0" 1902 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1903 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1904 | dependencies: 1905 | p-locate "^2.0.0" 1906 | path-exists "^3.0.0" 1907 | 1908 | locate-path@^3.0.0: 1909 | version "3.0.0" 1910 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1911 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1912 | dependencies: 1913 | p-locate "^3.0.0" 1914 | path-exists "^3.0.0" 1915 | 1916 | lodash.clone@^4.5.0: 1917 | version "4.5.0" 1918 | resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" 1919 | integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= 1920 | 1921 | lodash.clonedeep@^4.5.0: 1922 | version "4.5.0" 1923 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 1924 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 1925 | 1926 | lodash.clonedeepwith@^4.5.0: 1927 | version "4.5.0" 1928 | resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" 1929 | integrity sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ= 1930 | 1931 | lodash.debounce@^4.0.3, lodash.debounce@^4.0.8: 1932 | version "4.0.8" 1933 | resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" 1934 | integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= 1935 | 1936 | lodash.difference@^4.3.0: 1937 | version "4.5.0" 1938 | resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" 1939 | integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= 1940 | 1941 | lodash.flatten@^4.2.0: 1942 | version "4.4.0" 1943 | resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" 1944 | integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= 1945 | 1946 | lodash.flattendeep@^4.4.0: 1947 | version "4.4.0" 1948 | resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" 1949 | integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= 1950 | 1951 | lodash.islength@^4.0.1: 1952 | version "4.0.1" 1953 | resolved "https://registry.yarnpkg.com/lodash.islength/-/lodash.islength-4.0.1.tgz#4e9868d452575d750affd358c979543dc20ed577" 1954 | integrity sha1-Tpho1FJXXXUK/9NYyXlUPcIO1Xc= 1955 | 1956 | lodash.merge@^4.6.1: 1957 | version "4.6.1" 1958 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" 1959 | integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== 1960 | 1961 | lodash@^4.17.10: 1962 | version "4.17.11" 1963 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" 1964 | integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== 1965 | 1966 | log-symbols@^2.2.0: 1967 | version "2.2.0" 1968 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" 1969 | integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== 1970 | dependencies: 1971 | chalk "^2.0.1" 1972 | 1973 | loud-rejection@^1.0.0, loud-rejection@^1.2.0: 1974 | version "1.6.0" 1975 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 1976 | integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= 1977 | dependencies: 1978 | currently-unhandled "^0.4.1" 1979 | signal-exit "^3.0.0" 1980 | 1981 | lowercase-keys@^1.0.0: 1982 | version "1.0.1" 1983 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 1984 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 1985 | 1986 | lru-cache@^4.0.1: 1987 | version "4.1.4" 1988 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.4.tgz#51cc46e8e6d9530771c857e24ccc720ecdbcc031" 1989 | integrity sha512-EPstzZ23znHUVLKj+lcXO1KvZkrlw+ZirdwvOmnAnA/1PB4ggyXJ77LRkCqkff+ShQ+cqoxCxLQOh4cKITO5iA== 1990 | dependencies: 1991 | pseudomap "^1.0.2" 1992 | yallist "^3.0.2" 1993 | 1994 | make-dir@^1.0.0, make-dir@^1.3.0: 1995 | version "1.3.0" 1996 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 1997 | integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== 1998 | dependencies: 1999 | pify "^3.0.0" 2000 | 2001 | make-error@^1.1.1: 2002 | version "1.3.5" 2003 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" 2004 | integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== 2005 | 2006 | map-cache@^0.2.2: 2007 | version "0.2.2" 2008 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 2009 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 2010 | 2011 | map-obj@^1.0.0: 2012 | version "1.0.1" 2013 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 2014 | integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= 2015 | 2016 | map-obj@^2.0.0: 2017 | version "2.0.0" 2018 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" 2019 | integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= 2020 | 2021 | map-visit@^1.0.0: 2022 | version "1.0.0" 2023 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 2024 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 2025 | dependencies: 2026 | object-visit "^1.0.0" 2027 | 2028 | matcher@^1.1.1: 2029 | version "1.1.1" 2030 | resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" 2031 | integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== 2032 | dependencies: 2033 | escape-string-regexp "^1.0.4" 2034 | 2035 | md5-hex@^2.0.0: 2036 | version "2.0.0" 2037 | resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33" 2038 | integrity sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM= 2039 | dependencies: 2040 | md5-o-matic "^0.1.1" 2041 | 2042 | md5-o-matic@^0.1.1: 2043 | version "0.1.1" 2044 | resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" 2045 | integrity sha1-givM1l4RfFFPqxdrJZRdVBAKA8M= 2046 | 2047 | meow@^5.0.0: 2048 | version "5.0.0" 2049 | resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" 2050 | integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== 2051 | dependencies: 2052 | camelcase-keys "^4.0.0" 2053 | decamelize-keys "^1.0.0" 2054 | loud-rejection "^1.0.0" 2055 | minimist-options "^3.0.1" 2056 | normalize-package-data "^2.3.4" 2057 | read-pkg-up "^3.0.0" 2058 | redent "^2.0.0" 2059 | trim-newlines "^2.0.0" 2060 | yargs-parser "^10.0.0" 2061 | 2062 | mhysa@./: 2063 | version "1.0.2" 2064 | 2065 | micromatch@^3.1.10, micromatch@^3.1.4: 2066 | version "3.1.10" 2067 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 2068 | integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 2069 | dependencies: 2070 | arr-diff "^4.0.0" 2071 | array-unique "^0.3.2" 2072 | braces "^2.3.1" 2073 | define-property "^2.0.2" 2074 | extend-shallow "^3.0.2" 2075 | extglob "^2.0.4" 2076 | fragment-cache "^0.2.1" 2077 | kind-of "^6.0.2" 2078 | nanomatch "^1.2.9" 2079 | object.pick "^1.3.0" 2080 | regex-not "^1.0.0" 2081 | snapdragon "^0.8.1" 2082 | to-regex "^3.0.2" 2083 | 2084 | mimic-fn@^1.0.0: 2085 | version "1.2.0" 2086 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 2087 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 2088 | 2089 | minimatch@^3.0.0, minimatch@^3.0.4: 2090 | version "3.0.4" 2091 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2092 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 2093 | dependencies: 2094 | brace-expansion "^1.1.7" 2095 | 2096 | minimist-options@^3.0.1: 2097 | version "3.0.2" 2098 | resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" 2099 | integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== 2100 | dependencies: 2101 | arrify "^1.0.1" 2102 | is-plain-obj "^1.1.0" 2103 | 2104 | minimist@0.0.8: 2105 | version "0.0.8" 2106 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2107 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 2108 | 2109 | minimist@^1.2.0: 2110 | version "1.2.0" 2111 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2112 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 2113 | 2114 | minipass@^2.2.1, minipass@^2.3.4: 2115 | version "2.3.5" 2116 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" 2117 | integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== 2118 | dependencies: 2119 | safe-buffer "^5.1.2" 2120 | yallist "^3.0.0" 2121 | 2122 | minizlib@^1.1.1: 2123 | version "1.1.1" 2124 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" 2125 | integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg== 2126 | dependencies: 2127 | minipass "^2.2.1" 2128 | 2129 | mixin-deep@^1.2.0: 2130 | version "1.3.1" 2131 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 2132 | integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== 2133 | dependencies: 2134 | for-in "^1.0.2" 2135 | is-extendable "^1.0.1" 2136 | 2137 | mkdirp@^0.5.0, mkdirp@^0.5.1: 2138 | version "0.5.1" 2139 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2140 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 2141 | dependencies: 2142 | minimist "0.0.8" 2143 | 2144 | ms@2.0.0: 2145 | version "2.0.0" 2146 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2147 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 2148 | 2149 | ms@^2.1.1: 2150 | version "2.1.1" 2151 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 2152 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 2153 | 2154 | multimatch@^2.1.0: 2155 | version "2.1.0" 2156 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" 2157 | integrity sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis= 2158 | dependencies: 2159 | array-differ "^1.0.0" 2160 | array-union "^1.0.1" 2161 | arrify "^1.0.0" 2162 | minimatch "^3.0.0" 2163 | 2164 | nan@^2.9.2: 2165 | version "2.11.1" 2166 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" 2167 | integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== 2168 | 2169 | nanomatch@^1.2.9: 2170 | version "1.2.13" 2171 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 2172 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 2173 | dependencies: 2174 | arr-diff "^4.0.0" 2175 | array-unique "^0.3.2" 2176 | define-property "^2.0.2" 2177 | extend-shallow "^3.0.2" 2178 | fragment-cache "^0.2.1" 2179 | is-windows "^1.0.2" 2180 | kind-of "^6.0.2" 2181 | object.pick "^1.3.0" 2182 | regex-not "^1.0.0" 2183 | snapdragon "^0.8.1" 2184 | to-regex "^3.0.1" 2185 | 2186 | needle@^2.2.1: 2187 | version "2.2.4" 2188 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" 2189 | integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== 2190 | dependencies: 2191 | debug "^2.1.2" 2192 | iconv-lite "^0.4.4" 2193 | sax "^1.2.4" 2194 | 2195 | node-pre-gyp@^0.10.0: 2196 | version "0.10.3" 2197 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" 2198 | integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== 2199 | dependencies: 2200 | detect-libc "^1.0.2" 2201 | mkdirp "^0.5.1" 2202 | needle "^2.2.1" 2203 | nopt "^4.0.1" 2204 | npm-packlist "^1.1.6" 2205 | npmlog "^4.0.2" 2206 | rc "^1.2.7" 2207 | rimraf "^2.6.1" 2208 | semver "^5.3.0" 2209 | tar "^4" 2210 | 2211 | nopt@^4.0.1: 2212 | version "4.0.1" 2213 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 2214 | integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= 2215 | dependencies: 2216 | abbrev "1" 2217 | osenv "^0.1.4" 2218 | 2219 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 2220 | version "2.4.0" 2221 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 2222 | integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== 2223 | dependencies: 2224 | hosted-git-info "^2.1.4" 2225 | is-builtin-module "^1.0.0" 2226 | semver "2 || 3 || 4 || 5" 2227 | validate-npm-package-license "^3.0.1" 2228 | 2229 | normalize-path@^2.1.1: 2230 | version "2.1.1" 2231 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 2232 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 2233 | dependencies: 2234 | remove-trailing-separator "^1.0.1" 2235 | 2236 | npm-bundled@^1.0.1: 2237 | version "1.0.5" 2238 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" 2239 | integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== 2240 | 2241 | npm-packlist@^1.1.6: 2242 | version "1.1.12" 2243 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" 2244 | integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== 2245 | dependencies: 2246 | ignore-walk "^3.0.1" 2247 | npm-bundled "^1.0.1" 2248 | 2249 | npm-run-path@^2.0.0: 2250 | version "2.0.2" 2251 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 2252 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 2253 | dependencies: 2254 | path-key "^2.0.0" 2255 | 2256 | npmlog@^4.0.2: 2257 | version "4.1.2" 2258 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 2259 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 2260 | dependencies: 2261 | are-we-there-yet "~1.1.2" 2262 | console-control-strings "~1.1.0" 2263 | gauge "~2.7.3" 2264 | set-blocking "~2.0.0" 2265 | 2266 | number-is-nan@^1.0.0: 2267 | version "1.0.1" 2268 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2269 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 2270 | 2271 | object-assign@^4.0.1, object-assign@^4.1.0: 2272 | version "4.1.1" 2273 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2274 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 2275 | 2276 | object-copy@^0.1.0: 2277 | version "0.1.0" 2278 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 2279 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 2280 | dependencies: 2281 | copy-descriptor "^0.1.0" 2282 | define-property "^0.2.5" 2283 | kind-of "^3.0.3" 2284 | 2285 | object-visit@^1.0.0: 2286 | version "1.0.1" 2287 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 2288 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 2289 | dependencies: 2290 | isobject "^3.0.0" 2291 | 2292 | object.pick@^1.3.0: 2293 | version "1.3.0" 2294 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 2295 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 2296 | dependencies: 2297 | isobject "^3.0.1" 2298 | 2299 | observable-to-promise@^0.5.0: 2300 | version "0.5.0" 2301 | resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f" 2302 | integrity sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8= 2303 | dependencies: 2304 | is-observable "^0.2.0" 2305 | symbol-observable "^1.0.4" 2306 | 2307 | once@^1.3.0: 2308 | version "1.4.0" 2309 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2310 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2311 | dependencies: 2312 | wrappy "1" 2313 | 2314 | onetime@^2.0.0: 2315 | version "2.0.1" 2316 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 2317 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 2318 | dependencies: 2319 | mimic-fn "^1.0.0" 2320 | 2321 | ora@^3.0.0: 2322 | version "3.0.0" 2323 | resolved "https://registry.yarnpkg.com/ora/-/ora-3.0.0.tgz#8179e3525b9aafd99242d63cc206fd64732741d0" 2324 | integrity sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg== 2325 | dependencies: 2326 | chalk "^2.3.1" 2327 | cli-cursor "^2.1.0" 2328 | cli-spinners "^1.1.0" 2329 | log-symbols "^2.2.0" 2330 | strip-ansi "^4.0.0" 2331 | wcwidth "^1.0.1" 2332 | 2333 | os-homedir@^1.0.0: 2334 | version "1.0.2" 2335 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2336 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 2337 | 2338 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: 2339 | version "1.0.2" 2340 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2341 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 2342 | 2343 | osenv@^0.1.4: 2344 | version "0.1.5" 2345 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 2346 | integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== 2347 | dependencies: 2348 | os-homedir "^1.0.0" 2349 | os-tmpdir "^1.0.0" 2350 | 2351 | p-finally@^1.0.0: 2352 | version "1.0.0" 2353 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 2354 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 2355 | 2356 | p-limit@^1.1.0: 2357 | version "1.3.0" 2358 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 2359 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 2360 | dependencies: 2361 | p-try "^1.0.0" 2362 | 2363 | p-limit@^2.0.0: 2364 | version "2.0.0" 2365 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" 2366 | integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== 2367 | dependencies: 2368 | p-try "^2.0.0" 2369 | 2370 | p-locate@^2.0.0: 2371 | version "2.0.0" 2372 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 2373 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 2374 | dependencies: 2375 | p-limit "^1.1.0" 2376 | 2377 | p-locate@^3.0.0: 2378 | version "3.0.0" 2379 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 2380 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 2381 | dependencies: 2382 | p-limit "^2.0.0" 2383 | 2384 | p-map@^1.1.1: 2385 | version "1.2.0" 2386 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" 2387 | integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== 2388 | 2389 | p-try@^1.0.0: 2390 | version "1.0.0" 2391 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 2392 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 2393 | 2394 | p-try@^2.0.0: 2395 | version "2.0.0" 2396 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" 2397 | integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== 2398 | 2399 | package-hash@^2.0.0: 2400 | version "2.0.0" 2401 | resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-2.0.0.tgz#78ae326c89e05a4d813b68601977af05c00d2a0d" 2402 | integrity sha1-eK4ybIngWk2BO2hgGXevBcANKg0= 2403 | dependencies: 2404 | graceful-fs "^4.1.11" 2405 | lodash.flattendeep "^4.4.0" 2406 | md5-hex "^2.0.0" 2407 | release-zalgo "^1.0.0" 2408 | 2409 | package-json@^4.0.0: 2410 | version "4.0.1" 2411 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" 2412 | integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= 2413 | dependencies: 2414 | got "^6.7.1" 2415 | registry-auth-token "^3.0.1" 2416 | registry-url "^3.0.3" 2417 | semver "^5.1.0" 2418 | 2419 | parse-json@^4.0.0: 2420 | version "4.0.0" 2421 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 2422 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 2423 | dependencies: 2424 | error-ex "^1.3.1" 2425 | json-parse-better-errors "^1.0.1" 2426 | 2427 | parse-ms@^2.0.0: 2428 | version "2.0.0" 2429 | resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.0.0.tgz#7b3640295100caf3fa0100ccceb56635b62f9d62" 2430 | integrity sha512-AddiXFSLLCqj+tCRJ9MrUtHZB4DWojO3tk0NVZ+g5MaMQHF2+p2ktqxuoXyPFLljz/aUK0Nfhd/uGWnhXVXEyA== 2431 | 2432 | pascalcase@^0.1.1: 2433 | version "0.1.1" 2434 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 2435 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 2436 | 2437 | path-dirname@^1.0.0: 2438 | version "1.0.2" 2439 | resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" 2440 | integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= 2441 | 2442 | path-exists@^3.0.0: 2443 | version "3.0.0" 2444 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2445 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 2446 | 2447 | path-is-absolute@^1.0.0: 2448 | version "1.0.1" 2449 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2450 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2451 | 2452 | path-is-inside@^1.0.1: 2453 | version "1.0.2" 2454 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 2455 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 2456 | 2457 | path-key@^2.0.0: 2458 | version "2.0.1" 2459 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2460 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 2461 | 2462 | path-parse@^1.0.5: 2463 | version "1.0.6" 2464 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 2465 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 2466 | 2467 | path-type@^3.0.0: 2468 | version "3.0.0" 2469 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 2470 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 2471 | dependencies: 2472 | pify "^3.0.0" 2473 | 2474 | pathval@^1.1.0: 2475 | version "1.1.0" 2476 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" 2477 | integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 2478 | 2479 | pify@^2.0.0: 2480 | version "2.3.0" 2481 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2482 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 2483 | 2484 | pify@^3.0.0: 2485 | version "3.0.0" 2486 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 2487 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 2488 | 2489 | pinkie-promise@^2.0.0: 2490 | version "2.0.1" 2491 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2492 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 2493 | dependencies: 2494 | pinkie "^2.0.0" 2495 | 2496 | pinkie@^2.0.0: 2497 | version "2.0.4" 2498 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2499 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 2500 | 2501 | pkg-conf@^2.1.0: 2502 | version "2.1.0" 2503 | resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" 2504 | integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= 2505 | dependencies: 2506 | find-up "^2.0.0" 2507 | load-json-file "^4.0.0" 2508 | 2509 | pkg-dir@^3.0.0: 2510 | version "3.0.0" 2511 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" 2512 | integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== 2513 | dependencies: 2514 | find-up "^3.0.0" 2515 | 2516 | plur@^3.0.1: 2517 | version "3.0.1" 2518 | resolved "https://registry.yarnpkg.com/plur/-/plur-3.0.1.tgz#268652d605f816699b42b86248de73c9acd06a7c" 2519 | integrity sha512-lJl0ojUynAM1BZn58Pas2WT/TXeC1+bS+UqShl0x9+49AtOn7DixRXVzaC8qrDOIxNDmepKnLuMTH7NQmkX0PA== 2520 | dependencies: 2521 | irregular-plurals "^2.0.0" 2522 | 2523 | posix-character-classes@^0.1.0: 2524 | version "0.1.1" 2525 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 2526 | integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 2527 | 2528 | prepend-http@^1.0.1: 2529 | version "1.0.4" 2530 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 2531 | integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= 2532 | 2533 | prettier@^1.14.3: 2534 | version "1.15.2" 2535 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.2.tgz#d31abe22afa4351efa14c7f8b94b58bb7452205e" 2536 | integrity sha512-YgPLFFA0CdKL4Eg2IHtUSjzj/BWgszDHiNQAe0VAIBse34148whfdzLagRL+QiKS+YfK5ftB6X4v/MBw8yCoug== 2537 | 2538 | pretty-ms@^4.0.0: 2539 | version "4.0.0" 2540 | resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-4.0.0.tgz#31baf41b94fd02227098aaa03bd62608eb0d6e92" 2541 | integrity sha512-qG66ahoLCwpLXD09ZPHSCbUWYTqdosB7SMP4OffgTgL2PBKXMuUsrk5Bwg8q4qPkjTXsKBMr+YK3Ltd/6F9s/Q== 2542 | dependencies: 2543 | parse-ms "^2.0.0" 2544 | 2545 | process-nextick-args@~2.0.0: 2546 | version "2.0.0" 2547 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 2548 | integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== 2549 | 2550 | pseudomap@^1.0.2: 2551 | version "1.0.2" 2552 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2553 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 2554 | 2555 | quick-lru@^1.0.0: 2556 | version "1.1.0" 2557 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" 2558 | integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= 2559 | 2560 | rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: 2561 | version "1.2.8" 2562 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2563 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 2564 | dependencies: 2565 | deep-extend "^0.6.0" 2566 | ini "~1.3.0" 2567 | minimist "^1.2.0" 2568 | strip-json-comments "~2.0.1" 2569 | 2570 | read-pkg-up@^3.0.0: 2571 | version "3.0.0" 2572 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" 2573 | integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= 2574 | dependencies: 2575 | find-up "^2.0.0" 2576 | read-pkg "^3.0.0" 2577 | 2578 | read-pkg@^3.0.0: 2579 | version "3.0.0" 2580 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 2581 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= 2582 | dependencies: 2583 | load-json-file "^4.0.0" 2584 | normalize-package-data "^2.3.2" 2585 | path-type "^3.0.0" 2586 | 2587 | readable-stream@^2.0.2, readable-stream@^2.0.6: 2588 | version "2.3.6" 2589 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 2590 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 2591 | dependencies: 2592 | core-util-is "~1.0.0" 2593 | inherits "~2.0.3" 2594 | isarray "~1.0.0" 2595 | process-nextick-args "~2.0.0" 2596 | safe-buffer "~5.1.1" 2597 | string_decoder "~1.1.1" 2598 | util-deprecate "~1.0.1" 2599 | 2600 | readdirp@^2.0.0: 2601 | version "2.2.1" 2602 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" 2603 | integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== 2604 | dependencies: 2605 | graceful-fs "^4.1.11" 2606 | micromatch "^3.1.10" 2607 | readable-stream "^2.0.2" 2608 | 2609 | redent@^2.0.0: 2610 | version "2.0.0" 2611 | resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" 2612 | integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= 2613 | dependencies: 2614 | indent-string "^3.0.0" 2615 | strip-indent "^2.0.0" 2616 | 2617 | regenerate-unicode-properties@^7.0.0: 2618 | version "7.0.0" 2619 | resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" 2620 | integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== 2621 | dependencies: 2622 | regenerate "^1.4.0" 2623 | 2624 | regenerate@^1.4.0: 2625 | version "1.4.0" 2626 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 2627 | integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 2628 | 2629 | regex-not@^1.0.0, regex-not@^1.0.2: 2630 | version "1.0.2" 2631 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 2632 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 2633 | dependencies: 2634 | extend-shallow "^3.0.2" 2635 | safe-regex "^1.1.0" 2636 | 2637 | regexpu-core@^4.1.3: 2638 | version "4.2.0" 2639 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" 2640 | integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== 2641 | dependencies: 2642 | regenerate "^1.4.0" 2643 | regenerate-unicode-properties "^7.0.0" 2644 | regjsgen "^0.4.0" 2645 | regjsparser "^0.3.0" 2646 | unicode-match-property-ecmascript "^1.0.4" 2647 | unicode-match-property-value-ecmascript "^1.0.2" 2648 | 2649 | registry-auth-token@^3.0.1: 2650 | version "3.3.2" 2651 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" 2652 | integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== 2653 | dependencies: 2654 | rc "^1.1.6" 2655 | safe-buffer "^5.0.1" 2656 | 2657 | registry-url@^3.0.3: 2658 | version "3.1.0" 2659 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" 2660 | integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= 2661 | dependencies: 2662 | rc "^1.0.1" 2663 | 2664 | regjsgen@^0.4.0: 2665 | version "0.4.0" 2666 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" 2667 | integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== 2668 | 2669 | regjsparser@^0.3.0: 2670 | version "0.3.0" 2671 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" 2672 | integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== 2673 | dependencies: 2674 | jsesc "~0.5.0" 2675 | 2676 | release-zalgo@^1.0.0: 2677 | version "1.0.0" 2678 | resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" 2679 | integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= 2680 | dependencies: 2681 | es6-error "^4.0.1" 2682 | 2683 | remove-trailing-separator@^1.0.1: 2684 | version "1.1.0" 2685 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2686 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 2687 | 2688 | repeat-element@^1.1.2: 2689 | version "1.1.3" 2690 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 2691 | integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== 2692 | 2693 | repeat-string@^1.6.1: 2694 | version "1.6.1" 2695 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2696 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 2697 | 2698 | require-precompiled@^0.1.0: 2699 | version "0.1.0" 2700 | resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" 2701 | integrity sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo= 2702 | 2703 | resolve-cwd@^2.0.0: 2704 | version "2.0.0" 2705 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" 2706 | integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= 2707 | dependencies: 2708 | resolve-from "^3.0.0" 2709 | 2710 | resolve-from@^3.0.0: 2711 | version "3.0.0" 2712 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" 2713 | integrity sha1-six699nWiBvItuZTM17rywoYh0g= 2714 | 2715 | resolve-url@^0.2.1: 2716 | version "0.2.1" 2717 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 2718 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 2719 | 2720 | resolve@^1.3.2: 2721 | version "1.8.1" 2722 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" 2723 | integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== 2724 | dependencies: 2725 | path-parse "^1.0.5" 2726 | 2727 | restore-cursor@^2.0.0: 2728 | version "2.0.0" 2729 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 2730 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 2731 | dependencies: 2732 | onetime "^2.0.0" 2733 | signal-exit "^3.0.2" 2734 | 2735 | ret@~0.1.10: 2736 | version "0.1.15" 2737 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 2738 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 2739 | 2740 | rimraf@^2.2.8, rimraf@^2.6.1: 2741 | version "2.6.2" 2742 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 2743 | integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== 2744 | dependencies: 2745 | glob "^7.0.5" 2746 | 2747 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2748 | version "5.1.2" 2749 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2750 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2751 | 2752 | safe-regex@^1.1.0: 2753 | version "1.1.0" 2754 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 2755 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 2756 | dependencies: 2757 | ret "~0.1.10" 2758 | 2759 | "safer-buffer@>= 2.1.2 < 3": 2760 | version "2.1.2" 2761 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2762 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2763 | 2764 | sax@^1.2.4: 2765 | version "1.2.4" 2766 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 2767 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 2768 | 2769 | semver-diff@^2.0.0: 2770 | version "2.1.0" 2771 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" 2772 | integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= 2773 | dependencies: 2774 | semver "^5.0.3" 2775 | 2776 | "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.1: 2777 | version "5.6.0" 2778 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 2779 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 2780 | 2781 | serialize-error@^2.1.0: 2782 | version "2.1.0" 2783 | resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" 2784 | integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= 2785 | 2786 | set-blocking@~2.0.0: 2787 | version "2.0.0" 2788 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2789 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2790 | 2791 | set-value@^0.4.3: 2792 | version "0.4.3" 2793 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 2794 | integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= 2795 | dependencies: 2796 | extend-shallow "^2.0.1" 2797 | is-extendable "^0.1.1" 2798 | is-plain-object "^2.0.1" 2799 | to-object-path "^0.3.0" 2800 | 2801 | set-value@^2.0.0: 2802 | version "2.0.0" 2803 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 2804 | integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== 2805 | dependencies: 2806 | extend-shallow "^2.0.1" 2807 | is-extendable "^0.1.1" 2808 | is-plain-object "^2.0.3" 2809 | split-string "^3.0.1" 2810 | 2811 | shebang-command@^1.2.0: 2812 | version "1.2.0" 2813 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2814 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2815 | dependencies: 2816 | shebang-regex "^1.0.0" 2817 | 2818 | shebang-regex@^1.0.0: 2819 | version "1.0.0" 2820 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2821 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2822 | 2823 | signal-exit@^3.0.0, signal-exit@^3.0.2: 2824 | version "3.0.2" 2825 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2826 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2827 | 2828 | slash@^1.0.0: 2829 | version "1.0.0" 2830 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 2831 | integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= 2832 | 2833 | slash@^2.0.0: 2834 | version "2.0.0" 2835 | resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" 2836 | integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== 2837 | 2838 | slice-ansi@^1.0.0: 2839 | version "1.0.0" 2840 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" 2841 | integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== 2842 | dependencies: 2843 | is-fullwidth-code-point "^2.0.0" 2844 | 2845 | slide@^1.1.5: 2846 | version "1.1.6" 2847 | resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" 2848 | integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= 2849 | 2850 | snapdragon-node@^2.0.1: 2851 | version "2.1.1" 2852 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 2853 | integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 2854 | dependencies: 2855 | define-property "^1.0.0" 2856 | isobject "^3.0.0" 2857 | snapdragon-util "^3.0.1" 2858 | 2859 | snapdragon-util@^3.0.1: 2860 | version "3.0.1" 2861 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 2862 | integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 2863 | dependencies: 2864 | kind-of "^3.2.0" 2865 | 2866 | snapdragon@^0.8.1: 2867 | version "0.8.2" 2868 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 2869 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 2870 | dependencies: 2871 | base "^0.11.1" 2872 | debug "^2.2.0" 2873 | define-property "^0.2.5" 2874 | extend-shallow "^2.0.1" 2875 | map-cache "^0.2.2" 2876 | source-map "^0.5.6" 2877 | source-map-resolve "^0.5.0" 2878 | use "^3.1.0" 2879 | 2880 | source-map-resolve@^0.5.0: 2881 | version "0.5.2" 2882 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 2883 | integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== 2884 | dependencies: 2885 | atob "^2.1.1" 2886 | decode-uri-component "^0.2.0" 2887 | resolve-url "^0.2.1" 2888 | source-map-url "^0.4.0" 2889 | urix "^0.1.0" 2890 | 2891 | source-map-support@^0.5.6, source-map-support@^0.5.9: 2892 | version "0.5.9" 2893 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" 2894 | integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== 2895 | dependencies: 2896 | buffer-from "^1.0.0" 2897 | source-map "^0.6.0" 2898 | 2899 | source-map-url@^0.4.0: 2900 | version "0.4.0" 2901 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 2902 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 2903 | 2904 | source-map@^0.5.0, source-map@^0.5.6: 2905 | version "0.5.7" 2906 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2907 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2908 | 2909 | source-map@^0.6.0: 2910 | version "0.6.1" 2911 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2912 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2913 | 2914 | spdx-correct@^3.0.0: 2915 | version "3.0.2" 2916 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" 2917 | integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ== 2918 | dependencies: 2919 | spdx-expression-parse "^3.0.0" 2920 | spdx-license-ids "^3.0.0" 2921 | 2922 | spdx-exceptions@^2.1.0: 2923 | version "2.2.0" 2924 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 2925 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== 2926 | 2927 | spdx-expression-parse@^3.0.0: 2928 | version "3.0.0" 2929 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 2930 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 2931 | dependencies: 2932 | spdx-exceptions "^2.1.0" 2933 | spdx-license-ids "^3.0.0" 2934 | 2935 | spdx-license-ids@^3.0.0: 2936 | version "3.0.2" 2937 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2" 2938 | integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg== 2939 | 2940 | split-string@^3.0.1, split-string@^3.0.2: 2941 | version "3.1.0" 2942 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 2943 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 2944 | dependencies: 2945 | extend-shallow "^3.0.0" 2946 | 2947 | sprintf-js@~1.0.2: 2948 | version "1.0.3" 2949 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2950 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2951 | 2952 | stack-utils@^1.0.1: 2953 | version "1.0.2" 2954 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" 2955 | integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== 2956 | 2957 | static-extend@^0.1.1: 2958 | version "0.1.2" 2959 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 2960 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 2961 | dependencies: 2962 | define-property "^0.2.5" 2963 | object-copy "^0.1.0" 2964 | 2965 | string-width@^1.0.1: 2966 | version "1.0.2" 2967 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2968 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 2969 | dependencies: 2970 | code-point-at "^1.0.0" 2971 | is-fullwidth-code-point "^1.0.0" 2972 | strip-ansi "^3.0.0" 2973 | 2974 | "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: 2975 | version "2.1.1" 2976 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2977 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2978 | dependencies: 2979 | is-fullwidth-code-point "^2.0.0" 2980 | strip-ansi "^4.0.0" 2981 | 2982 | string_decoder@~1.1.1: 2983 | version "1.1.1" 2984 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2985 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2986 | dependencies: 2987 | safe-buffer "~5.1.0" 2988 | 2989 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2990 | version "3.0.1" 2991 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2992 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2993 | dependencies: 2994 | ansi-regex "^2.0.0" 2995 | 2996 | strip-ansi@^4.0.0: 2997 | version "4.0.0" 2998 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2999 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 3000 | dependencies: 3001 | ansi-regex "^3.0.0" 3002 | 3003 | strip-ansi@^5.0.0: 3004 | version "5.0.0" 3005 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" 3006 | integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== 3007 | dependencies: 3008 | ansi-regex "^4.0.0" 3009 | 3010 | strip-bom-buf@^1.0.0: 3011 | version "1.0.0" 3012 | resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" 3013 | integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI= 3014 | dependencies: 3015 | is-utf8 "^0.2.1" 3016 | 3017 | strip-bom@^3.0.0: 3018 | version "3.0.0" 3019 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 3020 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 3021 | 3022 | strip-eof@^1.0.0: 3023 | version "1.0.0" 3024 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 3025 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 3026 | 3027 | strip-indent@^2.0.0: 3028 | version "2.0.0" 3029 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" 3030 | integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= 3031 | 3032 | strip-json-comments@~2.0.1: 3033 | version "2.0.1" 3034 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 3035 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 3036 | 3037 | supertap@^1.0.0: 3038 | version "1.0.0" 3039 | resolved "https://registry.yarnpkg.com/supertap/-/supertap-1.0.0.tgz#bd9751c7fafd68c68cf8222a29892206a119fa9e" 3040 | integrity sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA== 3041 | dependencies: 3042 | arrify "^1.0.1" 3043 | indent-string "^3.2.0" 3044 | js-yaml "^3.10.0" 3045 | serialize-error "^2.1.0" 3046 | strip-ansi "^4.0.0" 3047 | 3048 | supports-color@^2.0.0: 3049 | version "2.0.0" 3050 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 3051 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 3052 | 3053 | supports-color@^5.3.0, supports-color@^5.5.0: 3054 | version "5.5.0" 3055 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 3056 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 3057 | dependencies: 3058 | has-flag "^3.0.0" 3059 | 3060 | symbol-observable@^0.2.2: 3061 | version "0.2.4" 3062 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" 3063 | integrity sha1-lag9smGG1q9+ehjb2XYKL4bQj0A= 3064 | 3065 | symbol-observable@^1.0.4, symbol-observable@^1.1.0: 3066 | version "1.2.0" 3067 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" 3068 | integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== 3069 | 3070 | tar@^4: 3071 | version "4.4.8" 3072 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" 3073 | integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== 3074 | dependencies: 3075 | chownr "^1.1.1" 3076 | fs-minipass "^1.2.5" 3077 | minipass "^2.3.4" 3078 | minizlib "^1.1.1" 3079 | mkdirp "^0.5.0" 3080 | safe-buffer "^5.1.2" 3081 | yallist "^3.0.2" 3082 | 3083 | term-size@^1.2.0: 3084 | version "1.2.0" 3085 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" 3086 | integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= 3087 | dependencies: 3088 | execa "^0.7.0" 3089 | 3090 | time-zone@^1.0.0: 3091 | version "1.0.0" 3092 | resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" 3093 | integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0= 3094 | 3095 | timed-out@^4.0.0: 3096 | version "4.0.1" 3097 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 3098 | integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= 3099 | 3100 | to-fast-properties@^2.0.0: 3101 | version "2.0.0" 3102 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 3103 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 3104 | 3105 | to-object-path@^0.3.0: 3106 | version "0.3.0" 3107 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 3108 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 3109 | dependencies: 3110 | kind-of "^3.0.2" 3111 | 3112 | to-regex-range@^2.1.0: 3113 | version "2.1.1" 3114 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 3115 | integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 3116 | dependencies: 3117 | is-number "^3.0.0" 3118 | repeat-string "^1.6.1" 3119 | 3120 | to-regex@^3.0.1, to-regex@^3.0.2: 3121 | version "3.0.2" 3122 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 3123 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 3124 | dependencies: 3125 | define-property "^2.0.2" 3126 | extend-shallow "^3.0.2" 3127 | regex-not "^1.0.2" 3128 | safe-regex "^1.1.0" 3129 | 3130 | trim-newlines@^2.0.0: 3131 | version "2.0.0" 3132 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" 3133 | integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= 3134 | 3135 | trim-off-newlines@^1.0.1: 3136 | version "1.0.1" 3137 | resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" 3138 | integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= 3139 | 3140 | trim-right@^1.0.1: 3141 | version "1.0.1" 3142 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 3143 | integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= 3144 | 3145 | ts-node@^7.0.1: 3146 | version "7.0.1" 3147 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" 3148 | integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== 3149 | dependencies: 3150 | arrify "^1.0.0" 3151 | buffer-from "^1.1.0" 3152 | diff "^3.1.0" 3153 | make-error "^1.1.1" 3154 | minimist "^1.2.0" 3155 | mkdirp "^0.5.1" 3156 | source-map-support "^0.5.6" 3157 | yn "^2.0.0" 3158 | 3159 | tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1: 3160 | version "1.9.3" 3161 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 3162 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 3163 | 3164 | tslint-config-prettier@^1.16.0: 3165 | version "1.16.0" 3166 | resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.16.0.tgz#4627d0e2639554d89210e480093c381b5186963f" 3167 | integrity sha512-zu6RAcpBtqdvhT6KpBh9kRPYATjOf9BnRi718kNqVKFjEgSE4rFrPprFju1YJrkOa3RbtbWI1ZSuLd2NBX1MDw== 3168 | 3169 | tslint-plugin-prettier@^2.0.1: 3170 | version "2.0.1" 3171 | resolved "https://registry.yarnpkg.com/tslint-plugin-prettier/-/tslint-plugin-prettier-2.0.1.tgz#95b6a3b766622ffc44375825d7760225c50c3680" 3172 | integrity sha512-4FX9JIx/1rKHIPJNfMb+ooX1gPk5Vg3vNi7+dyFYpLO+O57F4g+b/fo1+W/G0SUOkBLHB/YKScxjX/P+7ZT/Tw== 3173 | dependencies: 3174 | eslint-plugin-prettier "^2.2.0" 3175 | lines-and-columns "^1.1.6" 3176 | tslib "^1.7.1" 3177 | 3178 | tslint@^5.11.0: 3179 | version "5.11.0" 3180 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" 3181 | integrity sha1-mPMMAurjzecAYgHkwzywi0hYHu0= 3182 | dependencies: 3183 | babel-code-frame "^6.22.0" 3184 | builtin-modules "^1.1.1" 3185 | chalk "^2.3.0" 3186 | commander "^2.12.1" 3187 | diff "^3.2.0" 3188 | glob "^7.1.1" 3189 | js-yaml "^3.7.0" 3190 | minimatch "^3.0.4" 3191 | resolve "^1.3.2" 3192 | semver "^5.3.0" 3193 | tslib "^1.8.0" 3194 | tsutils "^2.27.2" 3195 | 3196 | tsutils@^2.27.2: 3197 | version "2.29.0" 3198 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 3199 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 3200 | dependencies: 3201 | tslib "^1.8.1" 3202 | 3203 | type-detect@^4.0.0, type-detect@^4.0.5: 3204 | version "4.0.8" 3205 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 3206 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 3207 | 3208 | typescript@^3.1.6: 3209 | version "3.1.6" 3210 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" 3211 | integrity sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA== 3212 | 3213 | uid2@0.0.3: 3214 | version "0.0.3" 3215 | resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" 3216 | integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= 3217 | 3218 | unicode-canonical-property-names-ecmascript@^1.0.4: 3219 | version "1.0.4" 3220 | resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" 3221 | integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== 3222 | 3223 | unicode-match-property-ecmascript@^1.0.4: 3224 | version "1.0.4" 3225 | resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" 3226 | integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== 3227 | dependencies: 3228 | unicode-canonical-property-names-ecmascript "^1.0.4" 3229 | unicode-property-aliases-ecmascript "^1.0.4" 3230 | 3231 | unicode-match-property-value-ecmascript@^1.0.2: 3232 | version "1.0.2" 3233 | resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" 3234 | integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== 3235 | 3236 | unicode-property-aliases-ecmascript@^1.0.4: 3237 | version "1.0.4" 3238 | resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" 3239 | integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== 3240 | 3241 | union-value@^1.0.0: 3242 | version "1.0.0" 3243 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 3244 | integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= 3245 | dependencies: 3246 | arr-union "^3.1.0" 3247 | get-value "^2.0.6" 3248 | is-extendable "^0.1.1" 3249 | set-value "^0.4.3" 3250 | 3251 | unique-string@^1.0.0: 3252 | version "1.0.0" 3253 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" 3254 | integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= 3255 | dependencies: 3256 | crypto-random-string "^1.0.0" 3257 | 3258 | unique-temp-dir@^1.0.0: 3259 | version "1.0.0" 3260 | resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" 3261 | integrity sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U= 3262 | dependencies: 3263 | mkdirp "^0.5.1" 3264 | os-tmpdir "^1.0.1" 3265 | uid2 "0.0.3" 3266 | 3267 | unset-value@^1.0.0: 3268 | version "1.0.0" 3269 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 3270 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 3271 | dependencies: 3272 | has-value "^0.3.1" 3273 | isobject "^3.0.0" 3274 | 3275 | unzip-response@^2.0.1: 3276 | version "2.0.1" 3277 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" 3278 | integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= 3279 | 3280 | upath@^1.0.5: 3281 | version "1.1.0" 3282 | resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" 3283 | integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== 3284 | 3285 | update-notifier@^2.5.0: 3286 | version "2.5.0" 3287 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" 3288 | integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== 3289 | dependencies: 3290 | boxen "^1.2.1" 3291 | chalk "^2.0.1" 3292 | configstore "^3.0.0" 3293 | import-lazy "^2.1.0" 3294 | is-ci "^1.0.10" 3295 | is-installed-globally "^0.1.0" 3296 | is-npm "^1.0.0" 3297 | latest-version "^3.0.0" 3298 | semver-diff "^2.0.0" 3299 | xdg-basedir "^3.0.0" 3300 | 3301 | urix@^0.1.0: 3302 | version "0.1.0" 3303 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 3304 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 3305 | 3306 | url-parse-lax@^1.0.0: 3307 | version "1.0.0" 3308 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 3309 | integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= 3310 | dependencies: 3311 | prepend-http "^1.0.1" 3312 | 3313 | use@^3.1.0: 3314 | version "3.1.1" 3315 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 3316 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 3317 | 3318 | util-deprecate@~1.0.1: 3319 | version "1.0.2" 3320 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3321 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 3322 | 3323 | validate-npm-package-license@^3.0.1: 3324 | version "3.0.4" 3325 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 3326 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 3327 | dependencies: 3328 | spdx-correct "^3.0.0" 3329 | spdx-expression-parse "^3.0.0" 3330 | 3331 | wcwidth@^1.0.1: 3332 | version "1.0.1" 3333 | resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 3334 | integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= 3335 | dependencies: 3336 | defaults "^1.0.3" 3337 | 3338 | well-known-symbols@^2.0.0: 3339 | version "2.0.0" 3340 | resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" 3341 | integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== 3342 | 3343 | which@^1.2.9: 3344 | version "1.3.1" 3345 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 3346 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 3347 | dependencies: 3348 | isexe "^2.0.0" 3349 | 3350 | wide-align@^1.1.0: 3351 | version "1.1.3" 3352 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 3353 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 3354 | dependencies: 3355 | string-width "^1.0.2 || 2" 3356 | 3357 | widest-line@^2.0.0: 3358 | version "2.0.1" 3359 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" 3360 | integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== 3361 | dependencies: 3362 | string-width "^2.1.1" 3363 | 3364 | wrappy@1: 3365 | version "1.0.2" 3366 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3367 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 3368 | 3369 | write-file-atomic@^2.0.0: 3370 | version "2.3.0" 3371 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" 3372 | integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== 3373 | dependencies: 3374 | graceful-fs "^4.1.11" 3375 | imurmurhash "^0.1.4" 3376 | signal-exit "^3.0.2" 3377 | 3378 | xdg-basedir@^3.0.0: 3379 | version "3.0.0" 3380 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" 3381 | integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= 3382 | 3383 | xtend@^4.0.0: 3384 | version "4.0.1" 3385 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 3386 | integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= 3387 | 3388 | yallist@^3.0.0, yallist@^3.0.2: 3389 | version "3.0.3" 3390 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" 3391 | integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== 3392 | 3393 | yargs-parser@^10.0.0: 3394 | version "10.1.0" 3395 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" 3396 | integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== 3397 | dependencies: 3398 | camelcase "^4.1.0" 3399 | 3400 | yn@^2.0.0: 3401 | version "2.0.0" 3402 | resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" 3403 | integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= 3404 | --------------------------------------------------------------------------------