├── .eslintrc.json ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── index.d.ts ├── package.json ├── src ├── index.js ├── iso.js ├── lens.js ├── lensProxy.js ├── operations.js ├── prism.js ├── traversal.js ├── typeClasses.js └── utils.js ├── test ├── curry.test.js ├── index.test.js └── optics.test.js └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint:recommended", 3 | "ecmaFeatures": { 4 | "modules": true, 5 | "spread": true, 6 | "restParams": true 7 | }, 8 | "env": { 9 | "browser": true, 10 | "node": true, 11 | "es6": true 12 | }, 13 | "parserOptions": { 14 | "ecmaVersion": 9, 15 | "sourceType": "module" 16 | }, 17 | "rules": { 18 | "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | 63 | # Node specific modules 64 | cjs/ 65 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # dev-oly folders 2 | .babelrc* 3 | .eslintrc* 4 | .bookignore 5 | book.json 6 | test 7 | examples 8 | node_modules 9 | 10 | # doc folders 11 | test 12 | docs 13 | examples 14 | _book -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Yassine Elouafi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # focused 3 | 4 | Yet another Optics library for JavaScript, based on the famous lens library from Haskell. Wrapped in a convenient Proxy interface. 5 | 6 | Put simply, this library will allow you to: 7 | 8 | - Create functional references (Optics), i.e. like pointers to nested parts in data structures (e.g. Object properties, Array elements, Map keys/values, or even fancier parts like a number inside a string ...). 9 | - Apply immutable updates to data structures pointed by those functional references. 10 | 11 | # Install 12 | 13 | ```js 14 | yarn add focused 15 | ``` 16 | 17 | or 18 | 19 | ```sh 20 | npm install --save focused 21 | ``` 22 | 23 | # Tutorial 24 | 25 | Lenses, or Optics in general, are an elegant way, from functional programming, to access and update immutable data structures. Simply put, an optic gives us a reference, also called a _focus_, to a nested part of a data structure. Once we build a focus (using some helper), we can use given functions to access or update, immutably, the embedded value. 26 | 27 | In the following tutorial, we'll introduce Optics using `focused` helpers. The library is meant to be friendly for JavaScript developers who are not used to FP jargon. 28 | 29 | We'll use the following object as a test bed 30 | 31 | ```js 32 | import { lensProxy, set, ... } from "focused"; 33 | 34 | const state = { 35 | name: "Luffy", 36 | level: 4, 37 | nakama: [ 38 | { name: "Zoro", level: 3 }, 39 | { name: "Sanji", level: 3 }, 40 | { name: "Chopper", level: 2 } 41 | ] 42 | }; 43 | 44 | // we'll use this as a convenient way to access deep properties in the state 45 | const _ = lensProxy(); 46 | ``` 47 | 48 | ## Focusing on a single value 49 | 50 | Here is our first example, using the `set` function: 51 | 52 | ```js 53 | const newState = set(_.name, "Mugiwara", state); 54 | // => { name: "Mugiwara", ... } 55 | ``` 56 | 57 | above, `set` takes 3 arguments: 58 | 59 | 1. `_.name` is a _Lens_ which lets us focus on the `name` property inside the `state` object 60 | 2. The new value which replaces the old one 61 | 3. The state to operate on. 62 | 63 | It then returns a new state, with the `name` property replaced with the new value. 64 | 65 | `over` is like `set` but takes a function instead of a constant value 66 | 67 | ```js 68 | const newState = over(_.level, x => x * 2, state); 69 | // => { name: "Luffy", level: 8, ... } 70 | ``` 71 | 72 | As you may have noticed, `set` is just a shortcut for `over(lens, _ => newValue, state)`. 73 | 74 | Besides properties, we can access elements inside an array 75 | 76 | ```js 77 | set(_.nakama[0].name, "Jimbi", state); 78 | ``` 79 | 80 | It's important to remember that a Lens focuses _exactly_ on 1 value. no more, no less. In the above example, accessing a non existing property on `state` (or out of bound index) will throw an error. 81 | 82 | If you want the access to silently fail, you can prefix the property name with `$`. 83 | 84 | ```js 85 | const newState = over(_.$assistant.$level, x => x * 2, state); 86 | // newState == state 87 | ``` 88 | 89 | `_.$assistant` is sometimes called an _Affine_, which is a focus on _at most_ one value (ie 0 or 1 value). 90 | 91 | There is also a `view` function, which provides a read only access to a Lens 92 | 93 | ```js 94 | view(_.name, state); 95 | // => Luffy 96 | ``` 97 | 98 | You're probably wondering, what's the utility of the above function, since the access can be trivially achieved with `state.name`. That's true, but Lenses allows more advanced accesses that are not as trivial to achieve as the above case, especially when combined with other Optics as we'll see. 99 | 100 | Similarly, `preview` can be used with Affines to safely dereference deeply nested values 101 | 102 | ```js 103 | preview(_.$assitant.$level, state); 104 | // null 105 | ``` 106 | 107 | ## Focusing on multiple values 108 | 109 | As we said, Lenses can focus on a single value. To focus on multiple values, we can use the `each` Optic together with `toList` function (`view` can only view a single value). 110 | 111 | For example, to gets the `name`s of all Luffy's `nakama` 112 | 113 | ```js 114 | toList(_.nakama.$(each).name, state); 115 | // => ["Zoro", "Sanji", "Chopper"] 116 | ``` 117 | 118 | Note how we wrapped `each` inside the `.$()` method of the proxy. `.$()` lets us insert arbitrary Optics in the access path which will be automatically composed with the other Optics in the chain. 119 | 120 | In Optics jargon, `each` is called a _Traversal_. It's an optic which can focus on multiple parts inside a data structure. Note that Traversals are not restricted to lists. You can create your own Traversals for any _Traversable_ data structure (eg Maps, trees, linked lists ...). 121 | 122 | Of course, Traversals work automatically with update functions like `over`. For example 123 | 124 | ```js 125 | over(_.nakama.$(each).name, s => s.toUpperCase(), state); 126 | ``` 127 | 128 | returns a new state with all `nakama` names uppercased. 129 | 130 | Another Traversal is `filtered` which can restrict the focus only to parts meeting some criteria. For example 131 | 132 | ```js 133 | toList(_.nakama.$(filtered(x => x.level > 2)).name, state); 134 | // => ["Zoro", "Sanji"] 135 | ``` 136 | 137 | retrieves all `nakama`s names with level above `2`. While 138 | 139 | ```js 140 | over(_.nakama.$(filtered(x => x.level > 2)).name, s => s.toUpperCase(), state); 141 | ``` 142 | 143 | updates all `nakama`s names with level above `2`. 144 | 145 | ## When the part and the whole matches 146 | 147 | Suppose we have the following json 148 | 149 | ```js 150 | const pkgJson = `{ 151 | "name": "my-package", 152 | "version": "1.0.0", 153 | "description": "Simple package", 154 | "main": "index.html", 155 | "scripts": { 156 | "start": "parcel index.html --open", 157 | "build": "parcel build index.html" 158 | }, 159 | "dependencies": { 160 | "mydep": "6.0.0" 161 | } 162 | } 163 | `; 164 | ``` 165 | 166 | And we want to focus on the `mydep` field inside `dependencies`. With normal JS code, we can call `JSON.parse` on the json string, modify the field on the created object, then call `JSON.stringify` on the same object to create the new json string. 167 | 168 | It turns out that Optics has got a first class concept for the above operations. When the whole (source JSON) and the part (object created by `JSON.parse`) _matches_ we call that an _Isomorphism_ (or simply _Iso_). In the above example we can create an Isomorphism between the JSON string and the corresponding JS object using the `iso` function 169 | 170 | ```js 171 | const json = iso(JSON.parse, JSON.stringify); 172 | ``` 173 | 174 | `iso` takes 2 functions: one to go from the source to the target, and the other to go back. 175 | 176 | > Note this is a partial Optic since `JSON.parse` can fail. We've got another Optic (oh yeah) to account for failure 177 | 178 | Ok, so having the `json` Iso, we can use it with the standard functions, for example 179 | 180 | ```js 181 | set(_.$(json).dependencies.mydep, "6.1.0", pkgJson); 182 | ``` 183 | 184 | returns another JSON string with the `mydep` modified. Abstracting over the parsing/stringifying steps. 185 | 186 | The previous example is nice, but it'd be nicer if we can get access to the semver string `6.0.0` as a regular JS object. Let's go a little further and create another Isomorphism for semver like strings 187 | 188 | ```js 189 | const semver = iso( 190 | s => { 191 | const [major, minor, patch] = s.split(".").map(x => +x); 192 | return { major, minor, patch }; 193 | }, 194 | ({ major, minor, patch }) => [major, minor, patch].join(".") 195 | ); 196 | ``` 197 | 198 | Now we can have a focus directly on the parts of a semver string as numbers. Below 199 | 200 | ```js 201 | over(_.$(json).dependencies.mydep.$(semver).minor, x => x + 1, jsonObj); 202 | ``` 203 | 204 | increments the minor directly in the JSON string. 205 | 206 | > Of course, we abstracted over failures in the semver Iso. 207 | 208 | ## When the match can't always succeed 209 | 210 | As I mentioned, the previous case was not a total Isomorphism because JSON strings aren't always parsed to JS objects. So, as you may expect, we need to introduce another fancy name, this time our Optic is called a `Prism`. Which is an Isomorphism that may fail when going from the source to the target (but which always succeeds when going back). 211 | 212 | A simple way to create a Prism is the `simplePrism` function. It's like `iso` but you return `null` when the conversion fails. 213 | 214 | ```js 215 | const maybeJson = simplePrism(s => { 216 | try { 217 | return JSON.parse(s); 218 | } catch (e) { 219 | return null; 220 | } 221 | }, JSON.stringify); 222 | ``` 223 | 224 | So now, something like 225 | 226 | ```js 227 | const badJSonObj = "@#" + jsonObj; 228 | set(_.$(maybeJson).dependencies.mydep, "6.1.0", badJSonObj); 229 | ``` 230 | 231 | will simply return the original JSON string. The conversion of the `semver` Iso to a Prism is left as an exercise. 232 | 233 | # Documentation 234 | 235 | Using Optics follows a uniform pattern 236 | - First we create an Optic which focuses on some value(s) inside a container 237 | - Then we use an operation to access or modify the value through the created Optic 238 | 239 | >In the following, all showcased functions are imported from the `focused` package 240 | 241 | ## Creating Optics 242 | 243 | As seen in the tutorial,`lensProxy` offers a convenient way to create Optics which focus on javascript objects and arrays. `lensProxy` is essentially a façade API which uses explicit functions behind the scene. In the following examples, we'll see both the proxy and the coresponding explicit functions. 244 | 245 | ### Object properties 246 | 247 | As we saw in the tutorial, we use the familiar property access notation to focus on an object property. For example 248 | 249 | ```js 250 | const _ = lensProxy() 251 | const nameProp = _.name 252 | ``` 253 | 254 | creates a Lens which focuses on the `name` property of an object. 255 | 256 | Using the explicit style, we can use the the `prop` function 257 | 258 | ```js 259 | const nameProp = prop("name") 260 | ``` 261 | As said previously, **a Lens focuses exactly on one value**, it means the value must exist in the target container (in this sense the `prop` lens is *partial*). For example, if you use `nameProp` on an object which doesn't have a `name` property, it will throw an error. 262 | 263 | ### Array elements 264 | 265 | As with object properties, we use the array index notation to focus on an array element at a specific index. For example 266 | 267 | ```js 268 | const _ = lensProxy() 269 | const firstElem = _[0] 270 | ``` 271 | creates a lens that focuses on the first element on an array. The underlying function is `index`, so we could also write 272 | 273 | ```js 274 | const firstElem = index(0) 275 | ``` 276 | 277 | `index` is also a partial Lens, meaning it will throw if given index is out of the bounds of the target array. 278 | 279 | ### Creating custom lenses 280 | 281 | The `lens` function can be used to create arbitrary Lenses. The function takes 2 parameters 282 | 283 | - `getter` is used to extract the focus value from the target container 284 | - `setter` is used to update the target container with a new focus value. 285 | 286 | In the following example, `nameProp` is equivalent to the `nameProp` Lens we saw earlier. 287 | 288 | ```js 289 | const nameProp = lens( 290 | s => s.name, 291 | (value, s) => ({...s, name: value}) 292 | ) 293 | ``` 294 | 295 | As you may have guessed, both `prop` and `index` can be implemented using `lens` 296 | 297 | ### Composing Lenses 298 | 299 | >Generally you can combine any 2 Optics together, even if they're of different kind (eg you can combine Lenses with Traversals) 300 | 301 | A nice property of Lenses, and Optics in general, is that they can be combined to create a focus on deeply nested values. For example 302 | 303 | ```js 304 | const _ = lensProxy() 305 | const street = _.freinds[0].address.street 306 | ``` 307 | 308 | creates a Lens which focuses on the `street` of the `address` of the first element of the `freinds` array. As a matter of comparaison, let's say we want to update, immutably, the `street` property on a given object `person`. Using JavaScript spread syntax 309 | 310 | 311 | ```js 312 | const firstFreind = person.freinds[0]; 313 | const newPerson = { 314 | ...person, 315 | freinds: [ 316 | { 317 | ...firstFreind, 318 | address: { 319 | ...firstFreind.address, 320 | street: "new street" 321 | } 322 | }, 323 | ...person.freinds.slice(1) 324 | ] 325 | }; 326 | ``` 327 | 328 | The equivalent operation in `focused` Lenses is 329 | 330 | ```js 331 | const newPerson = set(_.freinds[0].address.street, "new street", person) 332 | ``` 333 | 334 | We're chaining `.` accesses to successively focus on deeply nested values. Behind the scene, `lensProxy` is creating the necessary `prop` and `index` Lenses, then composing them using `compose` function. Using explicit style, the above Lens could be rewritten like 335 | 336 | ```js 337 | const streetLens = compose( 338 | prop("freinds"), 339 | index(0), 340 | prop("address"), 341 | prop("street") 342 | ); 343 | ``` 344 | 345 | The important thing to remember here, is that`lensProxy` is essentially doing the same thing in the above `compose` example. Plus some memoization tricks to ensure that Lenses are created only once and reused on subsequent operations. 346 | 347 | ## Creating Isomorphisms 348 | 349 | Isomorphisms, or simply Isos, are useful when we want to switch between different representations of the same object. In the tutorial, we already saw `json` which create an Iso between a JSON string and the underlying object that the string parses to. 350 | 351 | As we saw, we can use the `iso` function to create a simple Iso. It takes a couple of functions 352 | 353 | - the firs function is used to convert from the source representation to the target one 354 | - the second function is used to convert back 355 | 356 | We'll see another interesting example of Isos in the next section 357 | 358 | ## Creating Traversals 359 | 360 | While Lenses can focus exactly on one value. Traversals has the ability to focus on many values (including `0`). 361 | 362 | ### Array Traversals 363 | 364 | Perhaps the most familiar Traversal is `each` which focuses on all elements of an array 365 | 366 | ```js 367 | const todos = ["each", "pray", "love"]; 368 | over(each, x => x.toUpperCase(), todos) 369 | // ["EACH", "PRAY", "LOVE"] 370 | ``` 371 | 372 | which is essentially equivalent to the `map` operation of array. However, as we said, what sets Optics apart is their ability to compose with other Optics 373 | 374 | ```js 375 | const todos = [ 376 | { title: "eat", done: false }, 377 | { title: "pray", done: false }, 378 | { title: "love", done: false } 379 | ]; 380 | // set done to `true` for all todos 381 | set( 382 | compose(each, prop("done")), 383 | true, 384 | todos 385 | ) 386 | ``` 387 | 388 | This can be more concisely formulated using the proxy interface 389 | 390 | ```js 391 | const _ = lensProxy(); 392 | set(_.$(each).done, true, todos) 393 | ``` 394 | 395 | Note that when Traversals are composed with another Optic, the result is always a Traversal. 396 | 397 | ### Traversing Map's keys/values 398 | 399 | Another useful example is traversing keys or values of a JavaScript `Map` object. Although the library already provides `eachMapKey` and `eachMapValue` Traversals for that purpose, it would be instructive to see how we can build them by simple composition of more primitive Optics. 400 | 401 | First, we can observe that a `Map` object can be seen also as a collection of `[key, value]` pairs. So we can start by creating an Iso between `Map` and `Array<[key, value]>` 402 | 403 | ```js 404 | const mapEntries = iso( 405 | map => [...map.entries()], 406 | entries => new Map(entries) 407 | ); 408 | ``` 409 | 410 | Then from here, we can traverse keys or values by simply focusing on the appropriate index (`0` or `1`) of each pair in the returned array. 411 | 412 | ```js 413 | eachMapValue = compose(mapEntries, each, index(1)); 414 | eachMapKey = compose(mapEntries, each, index(0)); 415 | ``` 416 | 417 | Since composition with a Traversal is also a Traversal. In the above examples, we obtain, in both cases, a Traversal that focuses on all key/values of the Map. 418 | 419 | As an illustration, the following example use `eachMapValue` combined with the `prop("score")` lens to increase the score of each player stored in the Map. 420 | 421 | ```js 422 | const playerMap = new Map([ 423 | ["Yassine", { name: "Yassine", score: 41 }], 424 | ["Yahya", { name: "Yahya", score: 800 }], 425 | ["Ayman", { name: "Ayman", score: 410} ] 426 | ]); 427 | const _ = lensProxy(); 428 | over( 429 | _.$(eachMapValue).score, 430 | x => x + 1000, 431 | playerMap 432 | ); 433 | ``` 434 | 435 | ### Filtered Traversals 436 | 437 | Another useful function is `filtered`. It can be used to restrict the set of values obtained from another Traversal. The function takes 2 arguments 438 | 439 | - A predicate used to filter traversed elements 440 | - The Traversal to be filtered (defaults to `each`) 441 | 442 | ```js 443 | const todos = [ 444 | { title: "eat", done: false }, 445 | { title: "pray", done: true }, 446 | { title: "love", done: true } 447 | ]; 448 | 449 | const isDone = t => t.done 450 | // view title of all done todos 451 | toList(_.$(filtered(isDone)).title, todos); 452 | // => ["pray", "love"] 453 | // set done of all done todos to false 454 | set(_.$(filtered(isDone)).done, false, todos) 455 | ``` 456 | 457 | Note that `filtered` can work with arbitrary traversals, not just arrays. 458 | 459 | ```js 460 | const playersAbove300 = filtered(p => p.score > 300, eachMapValue) 461 | over( 462 | _.$(playersAbove300).score, 463 | x => x + 1000, 464 | playerMap 465 | ); 466 | ``` 467 | 468 | (TBC) 469 | 470 | ## Todos 471 | - [ ] API docs 472 | - [x] add typings 473 | - [ ] Indexed Traversals 474 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | // convenient shortcut for functions taking 1 param 2 | export type Fn = (x: A) => B; 3 | 4 | export type Const = R & { _brand: A }; 5 | 6 | export type Either = 7 | | { type: "Left"; value: A } 8 | | { type: "Right"; value: B }; 9 | 10 | export interface Monoid { 11 | empty: () => A; 12 | concat: (xs: A[]) => A; 13 | } 14 | 15 | export interface Functor { 16 | map(f: Fn, x: FA): FB; 17 | } 18 | 19 | export interface Applicative extends Functor { 20 | pure: Fn; 21 | combine: (f: Fn, fas: FA[]) => FB; 22 | } 23 | 24 | export interface Getting { 25 | "~~type~~": "Getting"; 26 | "~~apply~~": , FS extends Const>( 27 | F: Applicative, 28 | f: Fn, 29 | s: S 30 | ) => FS; 31 | } 32 | 33 | export interface Getter { 34 | "~~type~~": "Getting"; 35 | "~~apply~~": , FS extends Const>( 36 | F: Functor, 37 | f: Fn, 38 | s: S 39 | ) => FS; 40 | } 41 | 42 | export interface Iso { 43 | "~~type~~": "Getting" & "Iso" & "Lens" & "Traversal"; 44 | "~~apply~~": ((F: Functor, f: Fn, s: S) => FT); 45 | from: (s: S) => A; 46 | to: (b: B) => T; 47 | } 48 | 49 | export interface Prism { 50 | "~~type~~": "Getting" & "Prism" & "Traversal"; 51 | "~~apply~~": (( 52 | F: Applicative, 53 | f: Fn, 54 | s: S 55 | ) => FT); 56 | match: (s: S) => Either; 57 | build: (b: B) => T; 58 | } 59 | 60 | export interface Lens { 61 | "~~type~~": "Getting" & "Lens" & "Traversal"; 62 | "~~apply~~": ((F: Functor, f: Fn, s: S) => FT); 63 | } 64 | 65 | export interface Traversal { 66 | "~~type~~": "Getting" & "Traversal"; 67 | "~~apply~~": (( 68 | F: Applicative, 69 | f: Fn, 70 | s: S 71 | ) => FT); 72 | } 73 | 74 | // Monomorphic version 75 | export type SimpleIso = Iso; 76 | export type SimplePrism = Prism; 77 | export type SimpleLens = Lens; 78 | export type SimpleTraversal = Traversal; 79 | 80 | // arity 2 81 | export function compose( 82 | parent: Iso, 83 | child: Iso 84 | ): Iso; 85 | export function compose( 86 | parent: Prism, 87 | child: Prism 88 | ): Prism; 89 | export function compose( 90 | parent: Lens, 91 | child: Lens 92 | ): Lens; 93 | export function compose( 94 | parent: Traversal, 95 | child: Traversal 96 | ): Traversal; 97 | export function compose( 98 | parent: Getter, 99 | child: Getter 100 | ): Getter; 101 | // arity 3 102 | export function compose( 103 | parent: Iso, 104 | child1: Iso, 105 | child2: Iso 106 | ): Iso; 107 | export function compose( 108 | parent: Prism, 109 | child1: Prism, 110 | child2: Prism 111 | ): Prism; 112 | export function compose( 113 | parent: Traversal, 114 | child1: Traversal, 115 | child2: Traversal 116 | ): Traversal; 117 | export function compose( 118 | parent: Getter, 119 | child1: Getter, 120 | child2: Getter 121 | ): Getter; 122 | // arity 4 123 | export function compose( 124 | parent: Iso, 125 | child1: Iso, 126 | child2: Iso, 127 | child3: Iso 128 | ): Iso; 129 | export function compose( 130 | parent: Prism, 131 | child1: Prism, 132 | child2: Prism, 133 | child3: Prism 134 | ): Prism; 135 | export function compose( 136 | parent: Lens, 137 | child1: Lens, 138 | child2: Lens, 139 | child3: Lens 140 | ): Lens; 141 | export function compose( 142 | parent: Traversal, 143 | child1: Traversal, 144 | child2: Traversal, 145 | child3: Traversal 146 | ): Traversal; 147 | export function compose( 148 | parent: Getter, 149 | child1: Getter, 150 | child2: Getter, 151 | child3: Getter 152 | ): Getter; 153 | // arity 5 154 | export function compose( 155 | parent: Iso, 156 | child1: Iso, 157 | child2: Iso, 158 | child3: Iso, 159 | child4: Iso 160 | ): Iso; 161 | export function compose( 162 | parent: Prism, 163 | child1: Prism, 164 | child2: Prism, 165 | child3: Prism, 166 | child4: Prism 167 | ): Prism; 168 | export function compose( 169 | parent: Lens, 170 | child1: Lens, 171 | child2: Lens, 172 | child3: Lens, 173 | child4: Lens 174 | ): Lens; 175 | export function compose( 176 | parent: Traversal, 177 | child1: Traversal, 178 | child2: Traversal, 179 | child3: Traversal, 180 | child4: Traversal 181 | ): Traversal; 182 | export function compose( 183 | parent: Getter, 184 | child1: Getter, 185 | child2: Getter, 186 | child3: Getter, 187 | child4: Getter 188 | ): Getter; 189 | // for higher arities you can use _.$().$()... of nest compose calls 190 | 191 | export function over( 192 | optic: Traversal, 193 | updater: (a: A) => B, 194 | state: S 195 | ): T; 196 | 197 | export function set( 198 | optic: Traversal, 199 | value: B, 200 | state: S 201 | ): T; 202 | 203 | export function view(optic: Getting, state: S): A; 204 | 205 | export function preview( 206 | optic: Getting, 207 | state: S 208 | ): A | null; 209 | 210 | export function has(optic: Getting, state: S): boolean; 211 | 212 | export function toList(optic: Getting, state: S): A[]; 213 | 214 | export function append( 215 | optic: SimpleTraversal, 216 | item: A, 217 | state: S 218 | ): S; 219 | export function insertAt( 220 | optic: SimpleTraversal, 221 | index: number, 222 | item: A, 223 | state: S 224 | ): S; 225 | export function removeAt( 226 | optic: SimpleTraversal, 227 | index: number, 228 | state: S 229 | ): S; 230 | export function removeIf( 231 | optic: SimpleTraversal, 232 | f: (x: A) => boolean, 233 | state: S 234 | ): S; 235 | 236 | export function iso( 237 | from: (s: S) => A, 238 | to: (b: B) => T 239 | ): Iso; 240 | export function from(anIso: Iso): Iso; 241 | export function withIso( 242 | anIso: Iso, 243 | f: (from: Fn, to: Fn) => R 244 | ): R; 245 | export function non(x: A): SimpleIso; 246 | export function anon(x: A, f: Fn): SimpleIso; 247 | // TODO: json :: SimpleIso 248 | // TODO: mapEntries :: SimpleIso>, Array<[Key,Value]> 249 | 250 | export function lens( 251 | get: (s: S) => A, 252 | set: (b: B, s: S) => T 253 | ): Lens; 254 | export function prop(name: K): SimpleLens; 255 | export function index(i: number): SimpleLens<[A], A>; 256 | export function atProp( 257 | name: K 258 | ): SimpleLens; 259 | export function to(getter: (s: S) => A): Getter; 260 | 261 | export function eachOf(): SimpleTraversal; 262 | export const each: SimpleTraversal; 263 | 264 | export function filtered( 265 | f: (x: A) => Boolean, 266 | traversal?: Traversal 267 | ): Traversal; 268 | export function maybeProp( 269 | name: K 270 | ): SimpleTraversal; 271 | // TODO: eachValue :: SimpleTraversal, V> 272 | // TODO: eachKey :: SimpleTraversal, K> 273 | 274 | export function left(a: A): Either; 275 | export function rght(b: B): Either; 276 | export function prism( 277 | match: (s: S) => Either, 278 | build: (b: B) => T 279 | ): Prism; 280 | export function simplePrism( 281 | match: (s: S) => A | null, 282 | build: (a: A) => S 283 | ): SimplePrism; 284 | export function withPrism( 285 | aPrism: Prism, 286 | f: (match: (s: S) => Either, build: (b: B) => T) => R 287 | ): R; 288 | // TODO: maybeJson :: SimplePrism 289 | 290 | export type LensProxy = SimpleLens & 291 | (S extends object ? { [K in keyof S]: LensProxy } : {}) & { 292 | $(child: SimpleLens): LensProxy; 293 | $(child: SimpleTraversal): TraversalProxy; 294 | $(child: Getter): GetterProxy; 295 | }; 296 | 297 | export type TraversalProxy = SimpleTraversal & 298 | (S extends object ? { [K in keyof S]: TraversalProxy } : {}) & { 299 | $(child: SimpleTraversal): TraversalProxy; 300 | $(child: Getter): GetterProxy; 301 | }; 302 | 303 | export type GetterProxy = Getter & 304 | (S extends object ? { [K in keyof S]: GetterProxy } : {}) & { 305 | $(child: Getter): GetterProxy; 306 | }; 307 | 308 | export function lensProxy(parent?: SimpleLens): LensProxy; 309 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "focused", 3 | "version": "0.7.2", 4 | "description": "Lens/Optics library for JavaScript", 5 | "module": "src/index.js", 6 | "main": "cjs/index.js", 7 | "typings": "./index.d.ts", 8 | "repository": "https://github.com/yelouafi/focused.git", 9 | "author": "Yassine Elouafi ", 10 | "license": "MIT", 11 | "keywords": [ 12 | "optic", 13 | "lens", 14 | "isomorphism", 15 | "prism", 16 | "traversal" 17 | ], 18 | "devDependencies": { 19 | "babel-cli": "^6.26.0", 20 | "babel-preset-env": "^1.7.0", 21 | "eslint": "^5.8.0", 22 | "esm": "^3.0.84", 23 | "faucet": "^0.0.1", 24 | "rimraf": "^2.6.2", 25 | "tape": "^4.9.1" 26 | }, 27 | "scripts": { 28 | "lint": "eslint src test", 29 | "test": "node -r esm test/index.test | faucet", 30 | "check": "npm run lint && npm run test", 31 | "clean": "rimraf cjs", 32 | "build": "npm run clean && babel src --out-dir cjs", 33 | "prepare": "npm run build", 34 | "prerelease": "npm run check && npm run prepare", 35 | "release:patch": "npm run prerelease && npm version patch && git push --follow-tags && npm publish", 36 | "release:minor": "npm run prerelease && npm version minor && git push --follow-tags && npm publish", 37 | "release:major": "npm run prerelease && npm version major && git push --follow-tags && npm publish" 38 | }, 39 | "babel": { 40 | "presets": [ 41 | [ 42 | "env", 43 | { 44 | "targets": { 45 | "node": "current" 46 | } 47 | } 48 | ] 49 | ] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import { curry3, curry4 } from "./utils"; 2 | import { over } from "./operations"; 3 | export { 4 | iso, 5 | from, 6 | withIso, 7 | non, 8 | anon, 9 | json, 10 | mapEntries, 11 | compose2Isos 12 | } from "./iso"; 13 | export { prop, index, lens, atProp } from "./lens"; 14 | export { 15 | prism, 16 | withPrism, 17 | simplePrism, 18 | left, 19 | right, 20 | maybeJson, 21 | compose2Prisms 22 | } from "./prism"; 23 | export { 24 | each, 25 | eachOf, 26 | filtered, 27 | maybeProp, 28 | eachMapKey, 29 | eachMapValue 30 | } from "./traversal"; 31 | export { 32 | view, 33 | preview, 34 | toList, 35 | has, 36 | over, 37 | set, 38 | compose, 39 | compose2 40 | } from "./operations"; 41 | export { lensProxy, idLens } from "./lensProxy"; 42 | 43 | function _append(lens, x, s) { 44 | return over(lens, xs => xs.concat([x]), s); 45 | } 46 | 47 | function _insertAt(lens, index, x, s) { 48 | return over( 49 | lens, 50 | xs => { 51 | return xs 52 | .slice(0, index) 53 | .concat([x]) 54 | .concat(xs.slice(index)); 55 | }, 56 | s 57 | ); 58 | } 59 | 60 | function _removeIf(lens, p, s) { 61 | return over(lens, xs => xs.filter((x, i) => !p(x, i)), s); 62 | } 63 | 64 | function _removeAt(lens, index, s) { 65 | return removeIf(lens, (_, i) => i === index, s); 66 | } 67 | 68 | export const append = curry3(_append); 69 | export const insertAt = curry4(_insertAt); 70 | export const removeIf = curry3(_removeIf); 71 | export const removeAt = curry3(_removeAt); 72 | -------------------------------------------------------------------------------- /src/iso.js: -------------------------------------------------------------------------------- 1 | /* 2 | type Iso = (Functor, A => F, S) => F & 3 | { from: S => A, to: B => T } 4 | 5 | type SimpleIso = Iso 6 | */ 7 | 8 | // iso : (S => A, B => T) => Iso 9 | export function iso(from, to) { 10 | function isoFn(aFunctor, f, s) { 11 | return aFunctor.map(to, f(from(s))); 12 | } 13 | // escape hatch to avoid profunctors 14 | Object.assign(isoFn, { 15 | __IS_ISO: true, 16 | from, 17 | to 18 | }); 19 | return isoFn; 20 | } 21 | 22 | // withIso : (Iso, (S => A, B => T) => R) => R 23 | export function withIso(anIso, f) { 24 | return f(anIso.from, anIso.to); 25 | } 26 | 27 | // parent : Iso from: S => A, to: B => T 28 | // child : Iso from: A => X, to: Y => B 29 | // return : Iso from: S => X, to: Y => T 30 | export function compose2Isos(parent, child) { 31 | const { from: sa, to: bt } = parent; 32 | const { from: ax, to: yb } = child; 33 | return iso(s => ax(sa(s)), y => bt(yb(y))); 34 | } 35 | 36 | // from : Iso => Iso 37 | export function from(anIso) { 38 | return iso(anIso.to, anIso.from); 39 | } 40 | 41 | // non : a => SimpleIso without a, A> 42 | export function non(a) { 43 | return iso( 44 | //from : Maybe -> a 45 | m => (m === null ? a : m), 46 | //to : a -> Maybe 47 | x => (x === a ? null : x) 48 | ); 49 | } 50 | 51 | // non : (a, A -> boolean) => SimpleIso where pred(A) == false, a> 52 | export function anon(a, pred) { 53 | return iso(m => (m === null ? a : m), x => (pred(x) ? null : x)); 54 | } 55 | 56 | // json : SimpleIso 57 | export const json = iso(JSON.parse, JSON.stringify); 58 | 59 | // SimpleIso>, Array<[Key,Value]> 60 | export const mapEntries = iso(map => [...map.entries()], kvs => new Map(kvs)); 61 | -------------------------------------------------------------------------------- /src/lens.js: -------------------------------------------------------------------------------- 1 | /* 2 | type Lens = (Functor, A => F, S) => F 3 | type SimpleLens = Lens 4 | */ 5 | 6 | // lens : (S => A, (B,S) => T) => Lens 7 | export function lens(getter, setter) { 8 | return function gsLens(aFunctor, f, s) { 9 | return aFunctor.map(a2 => setter(a2, s), f(getter(s))); 10 | }; 11 | } 12 | 13 | // prop : K => SimpleLens 14 | // PARTIAL : will throw if name isn't a prop of the target 15 | export function prop(name) { 16 | return lens( 17 | s => { 18 | if (!s.hasOwnProperty(name)) { 19 | throw new Error( 20 | `object ${JSON.stringify(s)} doesn't have property ${name}` 21 | ); 22 | } 23 | return s[name]; 24 | }, 25 | (a, s) => 26 | Object.assign({}, s, { 27 | [name]: a 28 | }) 29 | ); 30 | } 31 | 32 | // index : number => SimpleLens<[A], A> 33 | // PARTIAL : will throw if idx is out of bounds 34 | export function index(idx) { 35 | return function indexLens(aFunctor, f, xs) { 36 | if (idx < 0 || idx >= xs.length) { 37 | throw new Error("index out of bounds!"); 38 | } 39 | return aFunctor.map(a2 => { 40 | const ys = xs.slice(); 41 | ys[idx] = a2; 42 | return ys; 43 | }, f(xs[idx])); 44 | }; 45 | } 46 | 47 | // atProp : K => SimpleLens, Maybe> 48 | export function atProp(key) { 49 | return function atKeyLens(aFunctor, f, s) { 50 | let a = s !== null && s.hasOwnProperty(key) ? s[key] : null; 51 | return aFunctor.map(a2 => { 52 | if (a2 === null) { 53 | if (a === null || s === null) return s; 54 | const copy = Object.assign({}, s); 55 | delete copy[key]; 56 | return copy; 57 | } else { 58 | return Object.assign({}, s, { [key]: a2 }); 59 | } 60 | }, f(a)); 61 | }; 62 | } 63 | 64 | // to : (S => A) => SimpleLens 65 | export function to(getter) { 66 | return lens(getter, () => { 67 | throw new Error("Can not modify the value of a getter"); 68 | }); 69 | } 70 | -------------------------------------------------------------------------------- /src/lensProxy.js: -------------------------------------------------------------------------------- 1 | import { prop, index } from "./lens"; 2 | import { maybeProp } from "./traversal"; 3 | import { compose2 } from "./operations"; 4 | 5 | // idLens : SimpleLens 6 | export function idLens(_, f, s) { 7 | return f(s); 8 | } 9 | 10 | /** 11 | * returns a Proxy object for easing creation & composition of optics 12 | * 13 | * const _ = lensProxy() 14 | * _.name <=> prop("name") 15 | * _.todo.title <=> compose(prop("todo"), prop("title")) 16 | * 17 | * For convenience, safe access to non existing is provided by perfixng the prop name with '$' 18 | * 19 | * _.$name <=> maybeProp("name") 20 | * 21 | * You can also insert other optics usin '$' method of the proxy lensProxy, for example 22 | * 23 | * _.todos.$(each).title <=> compose(prop("todos"), each, prop("title")) 24 | * 25 | * is a traversal that focuses on all titles of the todo array 26 | */ 27 | 28 | function getOrCreateLens(memo, parent, key) { 29 | let l = memo.get(key); 30 | if (l == null) { 31 | let child; 32 | const num = Number(key); 33 | if (String(num) === key) { 34 | child = index(num); 35 | } else if (key[0] === "$") { 36 | child = maybeProp(key.slice(1)); 37 | } else { 38 | child = prop(key); 39 | } 40 | l = lensProxy(compose2(parent, child)); 41 | memo.set(key, l); 42 | } 43 | return l; 44 | } 45 | 46 | export function lensProxy(parent = idLens) { 47 | const memo = new Map(); 48 | return new Proxy(() => {}, { 49 | get(target, key) { 50 | if (key === "$") { 51 | return child => { 52 | return lensProxy(compose2(parent, child)); 53 | }; 54 | } 55 | return getOrCreateLens(memo, parent, key); 56 | }, 57 | apply(target, thiz, [F, f, s]) { 58 | return parent(F, f, s); 59 | } 60 | }); 61 | } 62 | -------------------------------------------------------------------------------- /src/operations.js: -------------------------------------------------------------------------------- 1 | import { id, konst, curry2, curry3 } from "./utils"; 2 | import { 3 | ConstAny, 4 | ConstFirst, 5 | ConstList, 6 | ConstVoid, 7 | Identity, 8 | List 9 | } from "./typeClasses"; 10 | import { compose2Isos } from "./iso"; 11 | import { compose2Prisms } from "./prism"; 12 | 13 | /* 14 | type Settable = (Identity, A => Identity, S) => Identity 15 | type Getting = (Const, A => Const, S) => Const 16 | type Getter = Getting -- ie should work for any R 17 | */ 18 | 19 | // view : Getting => S => A 20 | export const view = curry2(function _view(aGetter, s) { 21 | return aGetter(ConstVoid, id, s); 22 | }); 23 | 24 | function _over(aSettable, f, s) { 25 | return aSettable(Identity, f, s); 26 | } 27 | 28 | // over : Settable => (A => B) => S => T 29 | export const over = curry3(_over); 30 | 31 | // set : Settable => B => S => T 32 | export const set = curry3(function _set(aSettable, v, s) { 33 | return _over(aSettable, konst(v), s); 34 | }); 35 | 36 | // toList : Getting<[A], S,A> => S => [A] 37 | export const toList = curry2(function toList(aGetting, s) { 38 | return aGetting(ConstList, List.pure, s); 39 | }); 40 | 41 | // preview : Getting => S => (A | null) 42 | export const preview = curry2(function _preview(aGetting, s) { 43 | return aGetting(ConstFirst, id, s); 44 | }); 45 | 46 | // has : (Getting, S) => Boolean 47 | export const has = curry2(function _has(aGetting, s) { 48 | return aGetting(ConstAny, konst(true), s); 49 | }); 50 | 51 | /** 52 | * Compose 2 optics, Abstarcting the constraints, the type can be seen as 53 | * 54 | * compose2 : (Optic, Optic) => Optic 55 | * 56 | * However, we need also to combine 2 Isos into an Iso and idem for Prisms 57 | * In Haskell this is acheived using type classes & Profunctors 58 | * 59 | * Here we're just inspecting types at runtime, it's ugly and less flexible but 60 | * works for our limited cases. Most notably, I don't want to introduce Profunctors 61 | * for performance reasons. 62 | */ 63 | export function compose2(parent, child) { 64 | // ad-hoc polymporphism FTW 65 | if (parent.__IS_ISO && child.__IS_ISO) { 66 | return compose2Isos(parent, child); 67 | } 68 | if (parent.__IS_PRISM && child.__IS_PRISM) { 69 | return compose2Prisms(parent, child); 70 | } 71 | return function composedOptics(F, f, s) { 72 | return parent(F, a => child(F, f, a), s); 73 | }; 74 | } 75 | 76 | export function compose(...ls) { 77 | return ls.reduce(compose2); 78 | } 79 | -------------------------------------------------------------------------------- /src/prism.js: -------------------------------------------------------------------------------- 1 | /* 2 | type Either = { type: "LEFT", value: T } | { type: "RIGHT", value: A } 3 | 4 | type Prism = 5 | (Applicative, A => F, S) => F 6 | & { __IS_PRISM: true, match: S => Either, to: B => T } 7 | 8 | type SimplePrism = Prism 9 | */ 10 | 11 | export function left(value) { 12 | return { type: "LEFT", value }; 13 | } 14 | 15 | export function right(value) { 16 | return { type: "RIGHT", value }; 17 | } 18 | 19 | // prism : (S => Either, B => T) => Prism 20 | export function prism(match, build) { 21 | function prismFn(anApplicative, f, s) { 22 | const result = match(s); 23 | if (result.type === "LEFT") return anApplicative.pure(result.value); 24 | const fa = f(result.value); 25 | return anApplicative.map(build, fa); 26 | } 27 | // escape hatch to avoid profunctors 28 | Object.assign(prismFn, { 29 | __IS_PRISM: true, 30 | build, 31 | match 32 | }); 33 | return prismFn; 34 | } 35 | 36 | // simplePrism : (S => Maybe, A => S) => SimplePrism 37 | export function simplePrism(match, build) { 38 | return prism(s => { 39 | const result = match(s); 40 | return result === null 41 | ? { type: "LEFT", value: s } 42 | : { type: "RIGHT", value: result }; 43 | }, build); 44 | } 45 | 46 | // withPrism : (Prism, (S => Either, B => T) => R) => R 47 | export function withPrism(aPrism, f) { 48 | return f(aPrism.match, aPrism.build); 49 | } 50 | 51 | // parent : Prism & { match: S => Either, to: B => T } 52 | // child : Prism & { match: A => Either, to: Y => B } 53 | // return : Prism & { match: S => Either, to: Y => T } 54 | export function compose2Prisms(parentL, childL) { 55 | const { match: sta, build: bt } = parentL; 56 | const { match: abx, build: yb } = childL; 57 | return prism( 58 | s => { 59 | const ta = sta(s); 60 | if (ta.type === "LEFT") return ta; 61 | const bx = abx(ta.value); 62 | if (bx.type === "RIGHT") return bx; 63 | return bt(bx.value); 64 | }, 65 | y => bt(yb(y)) 66 | ); 67 | } 68 | 69 | // json : SimplePrism 70 | export const maybeJson = simplePrism(s => { 71 | try { 72 | return JSON.parse(s); 73 | } catch (e) { 74 | return null; 75 | } 76 | }, JSON.stringify); 77 | -------------------------------------------------------------------------------- /src/traversal.js: -------------------------------------------------------------------------------- 1 | import { id } from "./utils"; 2 | import { compose } from "./operations"; 3 | import { mapEntries } from "./iso"; 4 | import { index } from "./lens"; 5 | /* 6 | type Traversal = (Applicative, A => F, S) => F 7 | type SimpleTraversal = Traversal 8 | */ 9 | 10 | // each : Traversal< Array, Array, A, B> 11 | export function each(anApplicative, f, xs) { 12 | return anApplicative.combine(id, xs.map(f)); 13 | } 14 | 15 | // eachOf: () => Traversal< Array, Array, A, B> 16 | // this of the convenience of typings since TypeScript doesn't 17 | // allow type parameters on non functions 18 | export function eachOf() { 19 | return each; 20 | } 21 | 22 | // filter : (A => Boolean) => Traversal< Array, Array, A, B> 23 | export function filtered(pred, traverse = each) { 24 | return function filterTraversal(anApplicative, f, s) { 25 | return traverse(anApplicative, update, s); 26 | 27 | function update(v) { 28 | return pred(v) ? f(v) : anApplicative.pure(v); 29 | } 30 | }; 31 | } 32 | 33 | // maybeProp :: K => SimpleTraversal 34 | // This is an Affine Traversal; ie focus on 0 or 1 value 35 | export function maybeProp(name) { 36 | return function propTraversal(anApplicative, f, s) { 37 | if (!s.hasOwnProperty(name)) { 38 | return anApplicative.pure(s); 39 | } 40 | return anApplicative.map(a2 => { 41 | return Object.assign({}, s, { 42 | [name]: a2 43 | }); 44 | }, f(s[name])); 45 | }; 46 | } 47 | 48 | // eachValue :: SimpleTraversal, V> 49 | export const eachMapValue = compose( 50 | mapEntries, 51 | each, 52 | index(1) 53 | ); 54 | 55 | // eachKey :: SimpleTraversal, K> 56 | export const eachMapKey = compose( 57 | mapEntries, 58 | each, 59 | index(0) 60 | ); 61 | -------------------------------------------------------------------------------- /src/typeClasses.js: -------------------------------------------------------------------------------- 1 | export const Void = { 2 | empty: () => { 3 | throw "Void.empty! (you're likely using view with a Traversal, try preview or toList instead)"; 4 | }, 5 | concat: () => { 6 | throw "Void.concat! (you're likely using view with a Traversal, try preview or toList instead)"; 7 | } 8 | }; 9 | 10 | export const List = { 11 | empty: () => [], 12 | concat: xxs => [].concat(...xxs), 13 | pure: x => [x], 14 | map: (f, xs) => xs.map(f) 15 | }; 16 | 17 | export const First = { 18 | empty: () => null, 19 | concat2: (x1, x2) => (x1 !== null ? x1 : x2), 20 | concat: xs => xs.reduce(First.concat2, null) 21 | }; 22 | 23 | export const Any = { 24 | empty: () => false, 25 | concat2: (x1, x2) => x1 || x2, 26 | concat: xs => xs.reduce(Any.concat2, false) 27 | }; 28 | 29 | export const Identity = { 30 | pure: x => x, 31 | map: (f, x) => f(x), 32 | combine: (f, xs) => f(xs) 33 | }; 34 | 35 | export const Const = aMonoid => ({ 36 | pure: _ => aMonoid.empty(), 37 | map: (f, x) => x, 38 | combine: (_, xs) => aMonoid.concat(xs) 39 | }); 40 | 41 | export const ConstVoid = Const(Void); 42 | export const ConstList = Const(List); 43 | export const ConstFirst = Const(First); 44 | export const ConstAny = Const(Any); 45 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | export const id = x => x; 2 | export const konst = x => _ => x; 3 | 4 | export function curry2(f) { 5 | return function curried2(x, y) { 6 | if (arguments.length >= 2) return f(x, y); 7 | return function curried2_1arg(y) { 8 | return f(x, y); 9 | }; 10 | }; 11 | } 12 | 13 | export function curry3(f) { 14 | return function curried3(x, y, z) { 15 | if (arguments.length >= 3) return f(x, y, z); 16 | if (arguments.length === 2) { 17 | return function curried3_2args(z) { 18 | return f(x, y, z); 19 | }; 20 | } 21 | return curry2(function curried3_1(y, z) { 22 | return f(x, y, z); 23 | }); 24 | }; 25 | } 26 | 27 | export function curry4(f) { 28 | return function curried4(w, x, y, z) { 29 | if (arguments.length >= 4) return f(w, x, y, z); 30 | if (arguments.length === 3) { 31 | return function curried4_3args(z) { 32 | return f(w, x, y, z); 33 | }; 34 | } 35 | if (arguments.length === 2) { 36 | return curry2(function curried4_2args(y, z) { 37 | return f(w, x, y, z); 38 | }); 39 | } 40 | return curry3(function curried4_1(x, y, z) { 41 | return f(w, x, y, z); 42 | }); 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /test/curry.test.js: -------------------------------------------------------------------------------- 1 | import test from "tape"; 2 | import { curry2, curry3, curry4 } from "../src/utils"; 3 | 4 | const add2 = curry2((x, y) => x + y); 5 | const add3 = curry3((x, y, z) => x + y + z); 6 | const add4 = curry4((w, x, y, z) => w + x + y + z); 7 | 8 | test("curry2", assert => { 9 | assert.equal(add2(1, 2), 3); 10 | assert.equal(add2(1)(2), 3); 11 | assert.end(); 12 | }); 13 | 14 | test("curry3", assert => { 15 | assert.equal(add3(1, 2, 3), 6); 16 | assert.equal(add3(1, 2)(3), 6); 17 | assert.equal(add3(1)(2, 3), 6); 18 | assert.equal(add3(1)(2)(3), 6); 19 | assert.end(); 20 | }); 21 | 22 | test("curry4", assert => { 23 | assert.equal(add4(1, 2, 3, 4), 10); 24 | 25 | assert.equal(add4(1, 2, 3)(4), 10); 26 | assert.equal(add4(1, 2)(3, 4), 10); 27 | assert.equal(add4(1, 2)(3)(4), 10); 28 | assert.equal(add4(1)(2, 3, 4), 10); 29 | assert.equal(add4(1)(2, 3)(4), 10); 30 | assert.equal(add4(1)(2)(3, 4), 10); 31 | assert.equal(add4(1)(2)(3)(4), 10); 32 | assert.end(); 33 | }); 34 | -------------------------------------------------------------------------------- /test/index.test.js: -------------------------------------------------------------------------------- 1 | import "./curry.test"; 2 | import "./optics.test"; 3 | -------------------------------------------------------------------------------- /test/optics.test.js: -------------------------------------------------------------------------------- 1 | import test from "tape"; 2 | import { 3 | iso, 4 | maybeJson, 5 | view, 6 | over, 7 | toList, 8 | preview, 9 | set, 10 | each, 11 | filtered, 12 | json, 13 | lensProxy, 14 | anon, 15 | atProp, 16 | compose, 17 | append, 18 | insertAt, 19 | removeIf, 20 | removeAt 21 | } from "../src"; 22 | 23 | const state = { 24 | name: "Luffy", 25 | level: 4, 26 | nakama: [ 27 | { name: "Zorro", level: 3 }, 28 | { name: "Sanji", level: 3 }, 29 | { name: "Chooper", level: 2 } 30 | ] 31 | }; 32 | 33 | const _ = lensProxy(); 34 | 35 | test("view/prop", assert => { 36 | assert.equal(view(_.name, state), "Luffy"); 37 | assert.end(); 38 | }); 39 | 40 | test("preview/maybeProp", assert => { 41 | assert.deepEqual(preview(_.$lastname.level, state), null); 42 | assert.end(); 43 | }); 44 | 45 | test("over/maybeProp", assert => { 46 | assert.deepEqual(over(_.$assitant.$level, x => x * 2, state), state); 47 | assert.end(); 48 | }); 49 | 50 | test("over/prop", assert => { 51 | assert.deepEqual(over(_.level, x => x * 2, state), { 52 | ...state, 53 | level: state.level * 2 54 | }); 55 | assert.end(); 56 | }); 57 | 58 | test("view/atProp", assert => { 59 | assert.equal( 60 | view(atProp("surname"), { name: "Luffy" }), 61 | null, 62 | "should return null if property is absent" 63 | ); 64 | 65 | assert.end(); 66 | }); 67 | 68 | test("view/atProp", assert => { 69 | assert.deepEqual( 70 | set(atProp("surname"), "Monkey D.", { name: "Luffy" }), 71 | { 72 | name: "Luffy", 73 | surname: "Monkey D." 74 | }, 75 | "Should add the property if absent" 76 | ); 77 | 78 | assert.deepEqual( 79 | set( 80 | compose( 81 | atProp("navigator"), 82 | atProp("name") 83 | ), 84 | "Nami", 85 | { name: "Luffy" } 86 | ), 87 | { 88 | name: "Luffy", 89 | navigator: { name: "Nami" } 90 | }, 91 | "Should add deeply nested property if absent" 92 | ); 93 | 94 | assert.end(); 95 | }); 96 | 97 | // _.at('address').at('street') 98 | // Lens<{}, Maybe<{}>> . Lens<{}, Maybe> 99 | 100 | test("toList/each", assert => { 101 | assert.deepEqual( 102 | toList(_.nakama.$(each).name, state), 103 | state.nakama.map(n => n.name) 104 | ); 105 | assert.end(); 106 | }); 107 | 108 | test("toList/filtered", assert => { 109 | assert.deepEqual( 110 | toList(_.nakama.$(filtered(x => x.level > 2)).name, state), 111 | state.nakama.filter(n => n.level > 2).map(n => n.name) 112 | ); 113 | assert.end(); 114 | }); 115 | 116 | test("over/filtered", assert => { 117 | assert.deepEqual( 118 | over(_.nakama.$(filtered(x => x.level > 2)).name, s => `**${s}**`, state), 119 | { 120 | ...state, 121 | nakama: state.nakama.map(n => 122 | n.level > 2 ? { ...n, name: `**${n.name}**` } : n 123 | ) 124 | } 125 | ); 126 | assert.end(); 127 | }); 128 | 129 | test("set/[0]", assert => { 130 | assert.deepEqual(set(_.nakama[0].name, "Jimbi", state), { 131 | ...state, 132 | nakama: state.nakama.map((n, i) => (i === 0 ? { ...n, name: "Jimbi" } : n)) 133 | }); 134 | assert.end(); 135 | }); 136 | 137 | test("iso/anon", assert => { 138 | // nonZero is an Iso from Maybe to number (with 1 as default value) 139 | // source is either null or a negative number 140 | // target is any number 141 | const negative = anon(0, x => x >= 0); 142 | assert.equal(view(negative, -10), -10); 143 | assert.equal(view(negative, null), 0); 144 | 145 | assert.equal( 146 | set(negative, -3, -10), 147 | -3, 148 | "should allow setting to negative numbers" 149 | ); 150 | assert.equal( 151 | set(negative, -3, null), 152 | -3, 153 | "should allow setting on null values" 154 | ); 155 | assert.equal( 156 | set(negative, 10, -3), 157 | null, 158 | "should not allow setting non-negative numbers" 159 | ); 160 | assert.end(); 161 | }); 162 | 163 | const jsonObj = `{ 164 | "name": "my-package", 165 | "version": "1.0.0", 166 | "description": "Simple package", 167 | "main": "index.html", 168 | "scripts": { 169 | "start": "parcel index.html --open", 170 | "build": "parcel build index.html" 171 | }, 172 | "dependencies": { 173 | "mydep": "6.0.0" 174 | } 175 | } 176 | `; 177 | 178 | const semver = iso( 179 | s => { 180 | const [major, minor, patch] = s.split(".").map(x => +x); 181 | return { major, minor, patch }; 182 | }, 183 | ({ major, minor, patch }) => [major, minor, patch].join(".") 184 | ); 185 | 186 | test("over/iso", assert => { 187 | const actualJSON = over( 188 | _.$(json).dependencies.mydep.$(semver).minor, 189 | x => x + 1, 190 | jsonObj 191 | ); 192 | const js = JSON.parse(jsonObj); 193 | js.dependencies.mydep = "6.1.0"; 194 | 195 | assert.deepEqual(JSON.parse(actualJSON), js); 196 | assert.end(); 197 | }); 198 | 199 | test("over/prism", assert => { 200 | const badJSonObj = "@#" + jsonObj; 201 | 202 | assert.equal( 203 | set(_.$(maybeJson).dependencies.mydep, "6.1.0", badJSonObj), 204 | badJSonObj 205 | ); 206 | assert.end(); 207 | }); 208 | 209 | test("append", assert => { 210 | assert.deepEqual(append(_.nakama, { name: "Nami", level: 1 }, state), { 211 | ...state, 212 | nakama: state.nakama.concat({ name: "Nami", level: 1 }) 213 | }); 214 | assert.end(); 215 | }); 216 | 217 | test("insertAt", assert => { 218 | assert.deepEqual(insertAt(_.nakama, 1, { name: "Nami", level: 1 }, state), { 219 | ...state, 220 | nakama: [ 221 | state.nakama[0], 222 | { name: "Nami", level: 1 }, 223 | ...state.nakama.slice(1) 224 | ] 225 | }); 226 | assert.end(); 227 | }); 228 | 229 | test("removeIf", assert => { 230 | assert.deepEqual(removeIf(_.nakama, n => n.level > 2, state), { 231 | ...state, 232 | nakama: state.nakama.filter(n => n.level <= 2) 233 | }); 234 | assert.end(); 235 | }); 236 | 237 | test("removeAt", assert => { 238 | assert.deepEqual(removeAt(_.nakama, 2, state), { 239 | ...state, 240 | nakama: state.nakama.filter((_, i) => i !== 2) 241 | }); 242 | assert.end(); 243 | }); 244 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.0.0" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 8 | integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/highlight@^7.0.0": 13 | version "7.0.0" 14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 15 | integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | abbrev@1: 22 | version "1.1.1" 23 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 24 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 25 | 26 | acorn-jsx@^5.0.0: 27 | version "5.0.0" 28 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.0.tgz#958584ddb60990c02c97c1bd9d521fce433bb101" 29 | integrity sha512-XkB50fn0MURDyww9+UYL3c1yLbOBz0ZFvrdYlGB8l+Ije1oSC75qAqrzSPjYQbdnQUzhlUGNKuesryAv0gxZOg== 30 | 31 | acorn@^6.0.2: 32 | version "6.4.1" 33 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" 34 | integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== 35 | 36 | ajv@^6.5.3: 37 | version "6.5.4" 38 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59" 39 | integrity sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg== 40 | dependencies: 41 | fast-deep-equal "^2.0.1" 42 | fast-json-stable-stringify "^2.0.0" 43 | json-schema-traverse "^0.4.1" 44 | uri-js "^4.2.2" 45 | 46 | ansi-escapes@^3.0.0: 47 | version "3.1.0" 48 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" 49 | integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== 50 | 51 | ansi-regex@^2.0.0: 52 | version "2.1.1" 53 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 54 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 55 | 56 | ansi-regex@^3.0.0: 57 | version "3.0.0" 58 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 59 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 60 | 61 | ansi-styles@^2.2.1: 62 | version "2.2.1" 63 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 64 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 65 | 66 | ansi-styles@^3.2.1: 67 | version "3.2.1" 68 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 69 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 70 | dependencies: 71 | color-convert "^1.9.0" 72 | 73 | anymatch@^1.3.0: 74 | version "1.3.2" 75 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" 76 | integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== 77 | dependencies: 78 | micromatch "^2.1.5" 79 | normalize-path "^2.0.0" 80 | 81 | aproba@^1.0.3: 82 | version "1.2.0" 83 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 84 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 85 | 86 | are-we-there-yet@~1.1.2: 87 | version "1.1.5" 88 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 89 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 90 | dependencies: 91 | delegates "^1.0.0" 92 | readable-stream "^2.0.6" 93 | 94 | argparse@^1.0.7: 95 | version "1.0.10" 96 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 97 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 98 | dependencies: 99 | sprintf-js "~1.0.2" 100 | 101 | arr-diff@^2.0.0: 102 | version "2.0.0" 103 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 104 | integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= 105 | dependencies: 106 | arr-flatten "^1.0.1" 107 | 108 | arr-diff@^4.0.0: 109 | version "4.0.0" 110 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 111 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 112 | 113 | arr-flatten@^1.0.1, arr-flatten@^1.1.0: 114 | version "1.1.0" 115 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 116 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 117 | 118 | arr-union@^3.1.0: 119 | version "3.1.0" 120 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 121 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 122 | 123 | array-union@^1.0.1: 124 | version "1.0.2" 125 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 126 | integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= 127 | dependencies: 128 | array-uniq "^1.0.1" 129 | 130 | array-uniq@^1.0.1: 131 | version "1.0.3" 132 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 133 | integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= 134 | 135 | array-unique@^0.2.1: 136 | version "0.2.1" 137 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 138 | integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= 139 | 140 | array-unique@^0.3.2: 141 | version "0.3.2" 142 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 143 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 144 | 145 | arrify@^1.0.0: 146 | version "1.0.1" 147 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 148 | integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= 149 | 150 | assign-symbols@^1.0.0: 151 | version "1.0.0" 152 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 153 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 154 | 155 | async-each@^1.0.0: 156 | version "1.0.1" 157 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 158 | integrity sha1-GdOGodntxufByF04iu28xW0zYC0= 159 | 160 | atob@^2.1.1: 161 | version "2.1.2" 162 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 163 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 164 | 165 | babel-cli@^6.26.0: 166 | version "6.26.0" 167 | resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" 168 | integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE= 169 | dependencies: 170 | babel-core "^6.26.0" 171 | babel-polyfill "^6.26.0" 172 | babel-register "^6.26.0" 173 | babel-runtime "^6.26.0" 174 | commander "^2.11.0" 175 | convert-source-map "^1.5.0" 176 | fs-readdir-recursive "^1.0.0" 177 | glob "^7.1.2" 178 | lodash "^4.17.4" 179 | output-file-sync "^1.1.2" 180 | path-is-absolute "^1.0.1" 181 | slash "^1.0.0" 182 | source-map "^0.5.6" 183 | v8flags "^2.1.1" 184 | optionalDependencies: 185 | chokidar "^1.6.1" 186 | 187 | babel-code-frame@^6.26.0: 188 | version "6.26.0" 189 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 190 | integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= 191 | dependencies: 192 | chalk "^1.1.3" 193 | esutils "^2.0.2" 194 | js-tokens "^3.0.2" 195 | 196 | babel-core@^6.26.0: 197 | version "6.26.3" 198 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" 199 | integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== 200 | dependencies: 201 | babel-code-frame "^6.26.0" 202 | babel-generator "^6.26.0" 203 | babel-helpers "^6.24.1" 204 | babel-messages "^6.23.0" 205 | babel-register "^6.26.0" 206 | babel-runtime "^6.26.0" 207 | babel-template "^6.26.0" 208 | babel-traverse "^6.26.0" 209 | babel-types "^6.26.0" 210 | babylon "^6.18.0" 211 | convert-source-map "^1.5.1" 212 | debug "^2.6.9" 213 | json5 "^0.5.1" 214 | lodash "^4.17.4" 215 | minimatch "^3.0.4" 216 | path-is-absolute "^1.0.1" 217 | private "^0.1.8" 218 | slash "^1.0.0" 219 | source-map "^0.5.7" 220 | 221 | babel-generator@^6.26.0: 222 | version "6.26.1" 223 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" 224 | integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== 225 | dependencies: 226 | babel-messages "^6.23.0" 227 | babel-runtime "^6.26.0" 228 | babel-types "^6.26.0" 229 | detect-indent "^4.0.0" 230 | jsesc "^1.3.0" 231 | lodash "^4.17.4" 232 | source-map "^0.5.7" 233 | trim-right "^1.0.1" 234 | 235 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: 236 | version "6.24.1" 237 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" 238 | integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= 239 | dependencies: 240 | babel-helper-explode-assignable-expression "^6.24.1" 241 | babel-runtime "^6.22.0" 242 | babel-types "^6.24.1" 243 | 244 | babel-helper-call-delegate@^6.24.1: 245 | version "6.24.1" 246 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" 247 | integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= 248 | dependencies: 249 | babel-helper-hoist-variables "^6.24.1" 250 | babel-runtime "^6.22.0" 251 | babel-traverse "^6.24.1" 252 | babel-types "^6.24.1" 253 | 254 | babel-helper-define-map@^6.24.1: 255 | version "6.26.0" 256 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" 257 | integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= 258 | dependencies: 259 | babel-helper-function-name "^6.24.1" 260 | babel-runtime "^6.26.0" 261 | babel-types "^6.26.0" 262 | lodash "^4.17.4" 263 | 264 | babel-helper-explode-assignable-expression@^6.24.1: 265 | version "6.24.1" 266 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" 267 | integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= 268 | dependencies: 269 | babel-runtime "^6.22.0" 270 | babel-traverse "^6.24.1" 271 | babel-types "^6.24.1" 272 | 273 | babel-helper-function-name@^6.24.1: 274 | version "6.24.1" 275 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" 276 | integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= 277 | dependencies: 278 | babel-helper-get-function-arity "^6.24.1" 279 | babel-runtime "^6.22.0" 280 | babel-template "^6.24.1" 281 | babel-traverse "^6.24.1" 282 | babel-types "^6.24.1" 283 | 284 | babel-helper-get-function-arity@^6.24.1: 285 | version "6.24.1" 286 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" 287 | integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= 288 | dependencies: 289 | babel-runtime "^6.22.0" 290 | babel-types "^6.24.1" 291 | 292 | babel-helper-hoist-variables@^6.24.1: 293 | version "6.24.1" 294 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" 295 | integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= 296 | dependencies: 297 | babel-runtime "^6.22.0" 298 | babel-types "^6.24.1" 299 | 300 | babel-helper-optimise-call-expression@^6.24.1: 301 | version "6.24.1" 302 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" 303 | integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= 304 | dependencies: 305 | babel-runtime "^6.22.0" 306 | babel-types "^6.24.1" 307 | 308 | babel-helper-regex@^6.24.1: 309 | version "6.26.0" 310 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" 311 | integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= 312 | dependencies: 313 | babel-runtime "^6.26.0" 314 | babel-types "^6.26.0" 315 | lodash "^4.17.4" 316 | 317 | babel-helper-remap-async-to-generator@^6.24.1: 318 | version "6.24.1" 319 | resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" 320 | integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= 321 | dependencies: 322 | babel-helper-function-name "^6.24.1" 323 | babel-runtime "^6.22.0" 324 | babel-template "^6.24.1" 325 | babel-traverse "^6.24.1" 326 | babel-types "^6.24.1" 327 | 328 | babel-helper-replace-supers@^6.24.1: 329 | version "6.24.1" 330 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" 331 | integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= 332 | dependencies: 333 | babel-helper-optimise-call-expression "^6.24.1" 334 | babel-messages "^6.23.0" 335 | babel-runtime "^6.22.0" 336 | babel-template "^6.24.1" 337 | babel-traverse "^6.24.1" 338 | babel-types "^6.24.1" 339 | 340 | babel-helpers@^6.24.1: 341 | version "6.24.1" 342 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 343 | integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= 344 | dependencies: 345 | babel-runtime "^6.22.0" 346 | babel-template "^6.24.1" 347 | 348 | babel-messages@^6.23.0: 349 | version "6.23.0" 350 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 351 | integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= 352 | dependencies: 353 | babel-runtime "^6.22.0" 354 | 355 | babel-plugin-check-es2015-constants@^6.22.0: 356 | version "6.22.0" 357 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" 358 | integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= 359 | dependencies: 360 | babel-runtime "^6.22.0" 361 | 362 | babel-plugin-syntax-async-functions@^6.8.0: 363 | version "6.13.0" 364 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" 365 | integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= 366 | 367 | babel-plugin-syntax-exponentiation-operator@^6.8.0: 368 | version "6.13.0" 369 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" 370 | integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= 371 | 372 | babel-plugin-syntax-trailing-function-commas@^6.22.0: 373 | version "6.22.0" 374 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" 375 | integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= 376 | 377 | babel-plugin-transform-async-to-generator@^6.22.0: 378 | version "6.24.1" 379 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" 380 | integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= 381 | dependencies: 382 | babel-helper-remap-async-to-generator "^6.24.1" 383 | babel-plugin-syntax-async-functions "^6.8.0" 384 | babel-runtime "^6.22.0" 385 | 386 | babel-plugin-transform-es2015-arrow-functions@^6.22.0: 387 | version "6.22.0" 388 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" 389 | integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= 390 | dependencies: 391 | babel-runtime "^6.22.0" 392 | 393 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: 394 | version "6.22.0" 395 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" 396 | integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= 397 | dependencies: 398 | babel-runtime "^6.22.0" 399 | 400 | babel-plugin-transform-es2015-block-scoping@^6.23.0: 401 | version "6.26.0" 402 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" 403 | integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= 404 | dependencies: 405 | babel-runtime "^6.26.0" 406 | babel-template "^6.26.0" 407 | babel-traverse "^6.26.0" 408 | babel-types "^6.26.0" 409 | lodash "^4.17.4" 410 | 411 | babel-plugin-transform-es2015-classes@^6.23.0: 412 | version "6.24.1" 413 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" 414 | integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= 415 | dependencies: 416 | babel-helper-define-map "^6.24.1" 417 | babel-helper-function-name "^6.24.1" 418 | babel-helper-optimise-call-expression "^6.24.1" 419 | babel-helper-replace-supers "^6.24.1" 420 | babel-messages "^6.23.0" 421 | babel-runtime "^6.22.0" 422 | babel-template "^6.24.1" 423 | babel-traverse "^6.24.1" 424 | babel-types "^6.24.1" 425 | 426 | babel-plugin-transform-es2015-computed-properties@^6.22.0: 427 | version "6.24.1" 428 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" 429 | integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= 430 | dependencies: 431 | babel-runtime "^6.22.0" 432 | babel-template "^6.24.1" 433 | 434 | babel-plugin-transform-es2015-destructuring@^6.23.0: 435 | version "6.23.0" 436 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" 437 | integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= 438 | dependencies: 439 | babel-runtime "^6.22.0" 440 | 441 | babel-plugin-transform-es2015-duplicate-keys@^6.22.0: 442 | version "6.24.1" 443 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" 444 | integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= 445 | dependencies: 446 | babel-runtime "^6.22.0" 447 | babel-types "^6.24.1" 448 | 449 | babel-plugin-transform-es2015-for-of@^6.23.0: 450 | version "6.23.0" 451 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" 452 | integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= 453 | dependencies: 454 | babel-runtime "^6.22.0" 455 | 456 | babel-plugin-transform-es2015-function-name@^6.22.0: 457 | version "6.24.1" 458 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" 459 | integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= 460 | dependencies: 461 | babel-helper-function-name "^6.24.1" 462 | babel-runtime "^6.22.0" 463 | babel-types "^6.24.1" 464 | 465 | babel-plugin-transform-es2015-literals@^6.22.0: 466 | version "6.22.0" 467 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" 468 | integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= 469 | dependencies: 470 | babel-runtime "^6.22.0" 471 | 472 | babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: 473 | version "6.24.1" 474 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" 475 | integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= 476 | dependencies: 477 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1" 478 | babel-runtime "^6.22.0" 479 | babel-template "^6.24.1" 480 | 481 | babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: 482 | version "6.26.2" 483 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" 484 | integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== 485 | dependencies: 486 | babel-plugin-transform-strict-mode "^6.24.1" 487 | babel-runtime "^6.26.0" 488 | babel-template "^6.26.0" 489 | babel-types "^6.26.0" 490 | 491 | babel-plugin-transform-es2015-modules-systemjs@^6.23.0: 492 | version "6.24.1" 493 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" 494 | integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= 495 | dependencies: 496 | babel-helper-hoist-variables "^6.24.1" 497 | babel-runtime "^6.22.0" 498 | babel-template "^6.24.1" 499 | 500 | babel-plugin-transform-es2015-modules-umd@^6.23.0: 501 | version "6.24.1" 502 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" 503 | integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= 504 | dependencies: 505 | babel-plugin-transform-es2015-modules-amd "^6.24.1" 506 | babel-runtime "^6.22.0" 507 | babel-template "^6.24.1" 508 | 509 | babel-plugin-transform-es2015-object-super@^6.22.0: 510 | version "6.24.1" 511 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" 512 | integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= 513 | dependencies: 514 | babel-helper-replace-supers "^6.24.1" 515 | babel-runtime "^6.22.0" 516 | 517 | babel-plugin-transform-es2015-parameters@^6.23.0: 518 | version "6.24.1" 519 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" 520 | integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= 521 | dependencies: 522 | babel-helper-call-delegate "^6.24.1" 523 | babel-helper-get-function-arity "^6.24.1" 524 | babel-runtime "^6.22.0" 525 | babel-template "^6.24.1" 526 | babel-traverse "^6.24.1" 527 | babel-types "^6.24.1" 528 | 529 | babel-plugin-transform-es2015-shorthand-properties@^6.22.0: 530 | version "6.24.1" 531 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" 532 | integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= 533 | dependencies: 534 | babel-runtime "^6.22.0" 535 | babel-types "^6.24.1" 536 | 537 | babel-plugin-transform-es2015-spread@^6.22.0: 538 | version "6.22.0" 539 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" 540 | integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= 541 | dependencies: 542 | babel-runtime "^6.22.0" 543 | 544 | babel-plugin-transform-es2015-sticky-regex@^6.22.0: 545 | version "6.24.1" 546 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" 547 | integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= 548 | dependencies: 549 | babel-helper-regex "^6.24.1" 550 | babel-runtime "^6.22.0" 551 | babel-types "^6.24.1" 552 | 553 | babel-plugin-transform-es2015-template-literals@^6.22.0: 554 | version "6.22.0" 555 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" 556 | integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= 557 | dependencies: 558 | babel-runtime "^6.22.0" 559 | 560 | babel-plugin-transform-es2015-typeof-symbol@^6.23.0: 561 | version "6.23.0" 562 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" 563 | integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= 564 | dependencies: 565 | babel-runtime "^6.22.0" 566 | 567 | babel-plugin-transform-es2015-unicode-regex@^6.22.0: 568 | version "6.24.1" 569 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" 570 | integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= 571 | dependencies: 572 | babel-helper-regex "^6.24.1" 573 | babel-runtime "^6.22.0" 574 | regexpu-core "^2.0.0" 575 | 576 | babel-plugin-transform-exponentiation-operator@^6.22.0: 577 | version "6.24.1" 578 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" 579 | integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= 580 | dependencies: 581 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" 582 | babel-plugin-syntax-exponentiation-operator "^6.8.0" 583 | babel-runtime "^6.22.0" 584 | 585 | babel-plugin-transform-regenerator@^6.22.0: 586 | version "6.26.0" 587 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" 588 | integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= 589 | dependencies: 590 | regenerator-transform "^0.10.0" 591 | 592 | babel-plugin-transform-strict-mode@^6.24.1: 593 | version "6.24.1" 594 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" 595 | integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= 596 | dependencies: 597 | babel-runtime "^6.22.0" 598 | babel-types "^6.24.1" 599 | 600 | babel-polyfill@^6.26.0: 601 | version "6.26.0" 602 | resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" 603 | integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= 604 | dependencies: 605 | babel-runtime "^6.26.0" 606 | core-js "^2.5.0" 607 | regenerator-runtime "^0.10.5" 608 | 609 | babel-preset-env@^1.7.0: 610 | version "1.7.0" 611 | resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" 612 | integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== 613 | dependencies: 614 | babel-plugin-check-es2015-constants "^6.22.0" 615 | babel-plugin-syntax-trailing-function-commas "^6.22.0" 616 | babel-plugin-transform-async-to-generator "^6.22.0" 617 | babel-plugin-transform-es2015-arrow-functions "^6.22.0" 618 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" 619 | babel-plugin-transform-es2015-block-scoping "^6.23.0" 620 | babel-plugin-transform-es2015-classes "^6.23.0" 621 | babel-plugin-transform-es2015-computed-properties "^6.22.0" 622 | babel-plugin-transform-es2015-destructuring "^6.23.0" 623 | babel-plugin-transform-es2015-duplicate-keys "^6.22.0" 624 | babel-plugin-transform-es2015-for-of "^6.23.0" 625 | babel-plugin-transform-es2015-function-name "^6.22.0" 626 | babel-plugin-transform-es2015-literals "^6.22.0" 627 | babel-plugin-transform-es2015-modules-amd "^6.22.0" 628 | babel-plugin-transform-es2015-modules-commonjs "^6.23.0" 629 | babel-plugin-transform-es2015-modules-systemjs "^6.23.0" 630 | babel-plugin-transform-es2015-modules-umd "^6.23.0" 631 | babel-plugin-transform-es2015-object-super "^6.22.0" 632 | babel-plugin-transform-es2015-parameters "^6.23.0" 633 | babel-plugin-transform-es2015-shorthand-properties "^6.22.0" 634 | babel-plugin-transform-es2015-spread "^6.22.0" 635 | babel-plugin-transform-es2015-sticky-regex "^6.22.0" 636 | babel-plugin-transform-es2015-template-literals "^6.22.0" 637 | babel-plugin-transform-es2015-typeof-symbol "^6.23.0" 638 | babel-plugin-transform-es2015-unicode-regex "^6.22.0" 639 | babel-plugin-transform-exponentiation-operator "^6.22.0" 640 | babel-plugin-transform-regenerator "^6.22.0" 641 | browserslist "^3.2.6" 642 | invariant "^2.2.2" 643 | semver "^5.3.0" 644 | 645 | babel-register@^6.26.0: 646 | version "6.26.0" 647 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" 648 | integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= 649 | dependencies: 650 | babel-core "^6.26.0" 651 | babel-runtime "^6.26.0" 652 | core-js "^2.5.0" 653 | home-or-tmp "^2.0.0" 654 | lodash "^4.17.4" 655 | mkdirp "^0.5.1" 656 | source-map-support "^0.4.15" 657 | 658 | babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: 659 | version "6.26.0" 660 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 661 | integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= 662 | dependencies: 663 | core-js "^2.4.0" 664 | regenerator-runtime "^0.11.0" 665 | 666 | babel-template@^6.24.1, babel-template@^6.26.0: 667 | version "6.26.0" 668 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 669 | integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= 670 | dependencies: 671 | babel-runtime "^6.26.0" 672 | babel-traverse "^6.26.0" 673 | babel-types "^6.26.0" 674 | babylon "^6.18.0" 675 | lodash "^4.17.4" 676 | 677 | babel-traverse@^6.24.1, babel-traverse@^6.26.0: 678 | version "6.26.0" 679 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 680 | integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= 681 | dependencies: 682 | babel-code-frame "^6.26.0" 683 | babel-messages "^6.23.0" 684 | babel-runtime "^6.26.0" 685 | babel-types "^6.26.0" 686 | babylon "^6.18.0" 687 | debug "^2.6.8" 688 | globals "^9.18.0" 689 | invariant "^2.2.2" 690 | lodash "^4.17.4" 691 | 692 | babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: 693 | version "6.26.0" 694 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 695 | integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= 696 | dependencies: 697 | babel-runtime "^6.26.0" 698 | esutils "^2.0.2" 699 | lodash "^4.17.4" 700 | to-fast-properties "^1.0.3" 701 | 702 | babylon@^6.18.0: 703 | version "6.18.0" 704 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 705 | integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== 706 | 707 | balanced-match@^1.0.0: 708 | version "1.0.0" 709 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 710 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 711 | 712 | base@^0.11.1: 713 | version "0.11.2" 714 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 715 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 716 | dependencies: 717 | cache-base "^1.0.1" 718 | class-utils "^0.3.5" 719 | component-emitter "^1.2.1" 720 | define-property "^1.0.0" 721 | isobject "^3.0.1" 722 | mixin-deep "^1.2.0" 723 | pascalcase "^0.1.1" 724 | 725 | binary-extensions@^1.0.0: 726 | version "1.12.0" 727 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" 728 | integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== 729 | 730 | brace-expansion@^1.1.7: 731 | version "1.1.11" 732 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 733 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 734 | dependencies: 735 | balanced-match "^1.0.0" 736 | concat-map "0.0.1" 737 | 738 | braces@^1.8.2: 739 | version "1.8.5" 740 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 741 | integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= 742 | dependencies: 743 | expand-range "^1.8.1" 744 | preserve "^0.2.0" 745 | repeat-element "^1.1.2" 746 | 747 | braces@^2.3.1: 748 | version "2.3.2" 749 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 750 | integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 751 | dependencies: 752 | arr-flatten "^1.1.0" 753 | array-unique "^0.3.2" 754 | extend-shallow "^2.0.1" 755 | fill-range "^4.0.0" 756 | isobject "^3.0.1" 757 | repeat-element "^1.1.2" 758 | snapdragon "^0.8.1" 759 | snapdragon-node "^2.0.1" 760 | split-string "^3.0.2" 761 | to-regex "^3.0.1" 762 | 763 | browserslist@^3.2.6: 764 | version "3.2.8" 765 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" 766 | integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== 767 | dependencies: 768 | caniuse-lite "^1.0.30000844" 769 | electron-to-chromium "^1.3.47" 770 | 771 | cache-base@^1.0.1: 772 | version "1.0.1" 773 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 774 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 775 | dependencies: 776 | collection-visit "^1.0.0" 777 | component-emitter "^1.2.1" 778 | get-value "^2.0.6" 779 | has-value "^1.0.0" 780 | isobject "^3.0.1" 781 | set-value "^2.0.0" 782 | to-object-path "^0.3.0" 783 | union-value "^1.0.0" 784 | unset-value "^1.0.0" 785 | 786 | caller-path@^0.1.0: 787 | version "0.1.0" 788 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 789 | integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= 790 | dependencies: 791 | callsites "^0.2.0" 792 | 793 | callsites@^0.2.0: 794 | version "0.2.0" 795 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 796 | integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= 797 | 798 | caniuse-lite@^1.0.30000844: 799 | version "1.0.30000904" 800 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000904.tgz#4445d00da859a0e0ae6dbb2876c545f3324f6c74" 801 | integrity sha512-M4sXvogCoY5Fp6fuXIaQG/MIexlEFQ3Lgwban+KlqiQUbUIkSmjAB8ZJIP79aj2cdqz2F1Lb+Z+5GwHvCrbLtg== 802 | 803 | chalk@^1.1.3: 804 | version "1.1.3" 805 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 806 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 807 | dependencies: 808 | ansi-styles "^2.2.1" 809 | escape-string-regexp "^1.0.2" 810 | has-ansi "^2.0.0" 811 | strip-ansi "^3.0.0" 812 | supports-color "^2.0.0" 813 | 814 | chalk@^2.0.0, chalk@^2.1.0: 815 | version "2.4.1" 816 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 817 | integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== 818 | dependencies: 819 | ansi-styles "^3.2.1" 820 | escape-string-regexp "^1.0.5" 821 | supports-color "^5.3.0" 822 | 823 | chardet@^0.7.0: 824 | version "0.7.0" 825 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 826 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 827 | 828 | chokidar@^1.6.1: 829 | version "1.7.0" 830 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" 831 | integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= 832 | dependencies: 833 | anymatch "^1.3.0" 834 | async-each "^1.0.0" 835 | glob-parent "^2.0.0" 836 | inherits "^2.0.1" 837 | is-binary-path "^1.0.0" 838 | is-glob "^2.0.0" 839 | path-is-absolute "^1.0.0" 840 | readdirp "^2.0.0" 841 | optionalDependencies: 842 | fsevents "^1.0.0" 843 | 844 | chownr@^1.0.1: 845 | version "1.1.1" 846 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" 847 | integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== 848 | 849 | circular-json@^0.3.1: 850 | version "0.3.3" 851 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" 852 | integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== 853 | 854 | class-utils@^0.3.5: 855 | version "0.3.6" 856 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 857 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 858 | dependencies: 859 | arr-union "^3.1.0" 860 | define-property "^0.2.5" 861 | isobject "^3.0.0" 862 | static-extend "^0.1.1" 863 | 864 | cli-cursor@^2.1.0: 865 | version "2.1.0" 866 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 867 | integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= 868 | dependencies: 869 | restore-cursor "^2.0.0" 870 | 871 | cli-width@^2.0.0: 872 | version "2.2.0" 873 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 874 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 875 | 876 | code-point-at@^1.0.0: 877 | version "1.1.0" 878 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 879 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 880 | 881 | collection-visit@^1.0.0: 882 | version "1.0.0" 883 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 884 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 885 | dependencies: 886 | map-visit "^1.0.0" 887 | object-visit "^1.0.0" 888 | 889 | color-convert@^1.9.0: 890 | version "1.9.3" 891 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 892 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 893 | dependencies: 894 | color-name "1.1.3" 895 | 896 | color-name@1.1.3: 897 | version "1.1.3" 898 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 899 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 900 | 901 | commander@^2.11.0: 902 | version "2.19.0" 903 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" 904 | integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== 905 | 906 | component-emitter@^1.2.1: 907 | version "1.2.1" 908 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 909 | integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= 910 | 911 | concat-map@0.0.1: 912 | version "0.0.1" 913 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 914 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 915 | 916 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 917 | version "1.1.0" 918 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 919 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 920 | 921 | convert-source-map@^1.5.0, convert-source-map@^1.5.1: 922 | version "1.6.0" 923 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" 924 | integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== 925 | dependencies: 926 | safe-buffer "~5.1.1" 927 | 928 | copy-descriptor@^0.1.0: 929 | version "0.1.1" 930 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 931 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 932 | 933 | core-js@^2.4.0, core-js@^2.5.0: 934 | version "2.5.7" 935 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" 936 | integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== 937 | 938 | core-util-is@~1.0.0: 939 | version "1.0.2" 940 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 941 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 942 | 943 | cross-spawn@^6.0.5: 944 | version "6.0.5" 945 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 946 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 947 | dependencies: 948 | nice-try "^1.0.4" 949 | path-key "^2.0.1" 950 | semver "^5.5.0" 951 | shebang-command "^1.2.0" 952 | which "^1.2.9" 953 | 954 | debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: 955 | version "2.6.9" 956 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 957 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 958 | dependencies: 959 | ms "2.0.0" 960 | 961 | debug@^4.0.1: 962 | version "4.1.0" 963 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" 964 | integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== 965 | dependencies: 966 | ms "^2.1.1" 967 | 968 | decode-uri-component@^0.2.0: 969 | version "0.2.0" 970 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 971 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 972 | 973 | deep-equal@~0.1.0: 974 | version "0.1.2" 975 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz#b246c2b80a570a47c11be1d9bd1070ec878b87ce" 976 | integrity sha1-skbCuApXCkfBG+HZvRBw7IeLh84= 977 | 978 | deep-equal@~1.0.1: 979 | version "1.0.1" 980 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 981 | integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= 982 | 983 | deep-extend@^0.6.0: 984 | version "0.6.0" 985 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 986 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 987 | 988 | deep-is@~0.1.3: 989 | version "0.1.3" 990 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 991 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 992 | 993 | define-properties@^1.1.2: 994 | version "1.1.3" 995 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 996 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 997 | dependencies: 998 | object-keys "^1.0.12" 999 | 1000 | define-property@^0.2.5: 1001 | version "0.2.5" 1002 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 1003 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 1004 | dependencies: 1005 | is-descriptor "^0.1.0" 1006 | 1007 | define-property@^1.0.0: 1008 | version "1.0.0" 1009 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 1010 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 1011 | dependencies: 1012 | is-descriptor "^1.0.0" 1013 | 1014 | define-property@^2.0.2: 1015 | version "2.0.2" 1016 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 1017 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 1018 | dependencies: 1019 | is-descriptor "^1.0.2" 1020 | isobject "^3.0.1" 1021 | 1022 | defined@0.0.0, defined@~0.0.0: 1023 | version "0.0.0" 1024 | resolved "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz#f35eea7d705e933baf13b2f03b3f83d921403b3e" 1025 | integrity sha1-817qfXBekzuvE7LwOz+D2SFAOz4= 1026 | 1027 | defined@~1.0.0: 1028 | version "1.0.0" 1029 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 1030 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 1031 | 1032 | del@^2.0.2: 1033 | version "2.2.2" 1034 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 1035 | integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= 1036 | dependencies: 1037 | globby "^5.0.0" 1038 | is-path-cwd "^1.0.0" 1039 | is-path-in-cwd "^1.0.0" 1040 | object-assign "^4.0.1" 1041 | pify "^2.0.0" 1042 | pinkie-promise "^2.0.0" 1043 | rimraf "^2.2.8" 1044 | 1045 | delegates@^1.0.0: 1046 | version "1.0.0" 1047 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 1048 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 1049 | 1050 | detect-indent@^4.0.0: 1051 | version "4.0.0" 1052 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 1053 | integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= 1054 | dependencies: 1055 | repeating "^2.0.0" 1056 | 1057 | detect-libc@^1.0.2: 1058 | version "1.0.3" 1059 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 1060 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 1061 | 1062 | doctrine@^2.1.0: 1063 | version "2.1.0" 1064 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 1065 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 1066 | dependencies: 1067 | esutils "^2.0.2" 1068 | 1069 | duplexer@~0.1.1: 1070 | version "0.1.1" 1071 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" 1072 | integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= 1073 | 1074 | electron-to-chromium@^1.3.47: 1075 | version "1.3.83" 1076 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.83.tgz#74584eb0972bb6777811c5d68d988c722f5e6666" 1077 | integrity sha512-DqJoDarxq50dcHsOOlMLNoy+qQitlMNbYb6wwbE0oUw2veHdRkpNrhmngiUYKMErdJ8SJ48rpJsZTQgy5SoEAA== 1078 | 1079 | es-abstract@^1.5.0: 1080 | version "1.12.0" 1081 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" 1082 | integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== 1083 | dependencies: 1084 | es-to-primitive "^1.1.1" 1085 | function-bind "^1.1.1" 1086 | has "^1.0.1" 1087 | is-callable "^1.1.3" 1088 | is-regex "^1.0.4" 1089 | 1090 | es-to-primitive@^1.1.1: 1091 | version "1.2.0" 1092 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" 1093 | integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== 1094 | dependencies: 1095 | is-callable "^1.1.4" 1096 | is-date-object "^1.0.1" 1097 | is-symbol "^1.0.2" 1098 | 1099 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 1100 | version "1.0.5" 1101 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1102 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1103 | 1104 | eslint-scope@^4.0.0: 1105 | version "4.0.0" 1106 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" 1107 | integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== 1108 | dependencies: 1109 | esrecurse "^4.1.0" 1110 | estraverse "^4.1.1" 1111 | 1112 | eslint-utils@^1.3.1: 1113 | version "1.4.2" 1114 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" 1115 | integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== 1116 | dependencies: 1117 | eslint-visitor-keys "^1.0.0" 1118 | 1119 | eslint-visitor-keys@^1.0.0: 1120 | version "1.1.0" 1121 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 1122 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 1123 | 1124 | eslint@^5.8.0: 1125 | version "5.8.0" 1126 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.8.0.tgz#91fbf24f6e0471e8fdf681a4d9dd1b2c9f28309b" 1127 | integrity sha512-Zok6Bru3y2JprqTNm14mgQ15YQu/SMDkWdnmHfFg770DIUlmMFd/gqqzCHekxzjHZJxXv3tmTpH0C1icaYJsRQ== 1128 | dependencies: 1129 | "@babel/code-frame" "^7.0.0" 1130 | ajv "^6.5.3" 1131 | chalk "^2.1.0" 1132 | cross-spawn "^6.0.5" 1133 | debug "^4.0.1" 1134 | doctrine "^2.1.0" 1135 | eslint-scope "^4.0.0" 1136 | eslint-utils "^1.3.1" 1137 | eslint-visitor-keys "^1.0.0" 1138 | espree "^4.0.0" 1139 | esquery "^1.0.1" 1140 | esutils "^2.0.2" 1141 | file-entry-cache "^2.0.0" 1142 | functional-red-black-tree "^1.0.1" 1143 | glob "^7.1.2" 1144 | globals "^11.7.0" 1145 | ignore "^4.0.6" 1146 | imurmurhash "^0.1.4" 1147 | inquirer "^6.1.0" 1148 | is-resolvable "^1.1.0" 1149 | js-yaml "^3.12.0" 1150 | json-stable-stringify-without-jsonify "^1.0.1" 1151 | levn "^0.3.0" 1152 | lodash "^4.17.5" 1153 | minimatch "^3.0.4" 1154 | mkdirp "^0.5.1" 1155 | natural-compare "^1.4.0" 1156 | optionator "^0.8.2" 1157 | path-is-inside "^1.0.2" 1158 | pluralize "^7.0.0" 1159 | progress "^2.0.0" 1160 | regexpp "^2.0.1" 1161 | require-uncached "^1.0.3" 1162 | semver "^5.5.1" 1163 | strip-ansi "^4.0.0" 1164 | strip-json-comments "^2.0.1" 1165 | table "^5.0.2" 1166 | text-table "^0.2.0" 1167 | 1168 | esm@^3.0.84: 1169 | version "3.1.0" 1170 | resolved "https://registry.yarnpkg.com/esm/-/esm-3.1.0.tgz#89eb950b3f04b691b12f96a0d9c8de93039a1a26" 1171 | integrity sha512-r4Go7Wh7Wh0WPinRXeeM9PIajRsUdt8SAyki5R1obVc0+BwtqvtjbngVSSdXg0jCe2xZkY8hyBMx6q/uymUkPw== 1172 | 1173 | espree@^4.0.0: 1174 | version "4.1.0" 1175 | resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" 1176 | integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== 1177 | dependencies: 1178 | acorn "^6.0.2" 1179 | acorn-jsx "^5.0.0" 1180 | eslint-visitor-keys "^1.0.0" 1181 | 1182 | esprima@^4.0.0: 1183 | version "4.0.1" 1184 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1185 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1186 | 1187 | esquery@^1.0.1: 1188 | version "1.0.1" 1189 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 1190 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== 1191 | dependencies: 1192 | estraverse "^4.0.0" 1193 | 1194 | esrecurse@^4.1.0: 1195 | version "4.2.1" 1196 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 1197 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 1198 | dependencies: 1199 | estraverse "^4.1.0" 1200 | 1201 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 1202 | version "4.2.0" 1203 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 1204 | integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= 1205 | 1206 | esutils@^2.0.2: 1207 | version "2.0.2" 1208 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1209 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 1210 | 1211 | expand-brackets@^0.1.4: 1212 | version "0.1.5" 1213 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 1214 | integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= 1215 | dependencies: 1216 | is-posix-bracket "^0.1.0" 1217 | 1218 | expand-brackets@^2.1.4: 1219 | version "2.1.4" 1220 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 1221 | integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 1222 | dependencies: 1223 | debug "^2.3.3" 1224 | define-property "^0.2.5" 1225 | extend-shallow "^2.0.1" 1226 | posix-character-classes "^0.1.0" 1227 | regex-not "^1.0.0" 1228 | snapdragon "^0.8.1" 1229 | to-regex "^3.0.1" 1230 | 1231 | expand-range@^1.8.1: 1232 | version "1.8.2" 1233 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 1234 | integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= 1235 | dependencies: 1236 | fill-range "^2.1.0" 1237 | 1238 | extend-shallow@^2.0.1: 1239 | version "2.0.1" 1240 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 1241 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 1242 | dependencies: 1243 | is-extendable "^0.1.0" 1244 | 1245 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 1246 | version "3.0.2" 1247 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 1248 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 1249 | dependencies: 1250 | assign-symbols "^1.0.0" 1251 | is-extendable "^1.0.1" 1252 | 1253 | external-editor@^3.0.0: 1254 | version "3.0.3" 1255 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" 1256 | integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== 1257 | dependencies: 1258 | chardet "^0.7.0" 1259 | iconv-lite "^0.4.24" 1260 | tmp "^0.0.33" 1261 | 1262 | extglob@^0.3.1: 1263 | version "0.3.2" 1264 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 1265 | integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= 1266 | dependencies: 1267 | is-extglob "^1.0.0" 1268 | 1269 | extglob@^2.0.4: 1270 | version "2.0.4" 1271 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 1272 | integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 1273 | dependencies: 1274 | array-unique "^0.3.2" 1275 | define-property "^1.0.0" 1276 | expand-brackets "^2.1.4" 1277 | extend-shallow "^2.0.1" 1278 | fragment-cache "^0.2.1" 1279 | regex-not "^1.0.0" 1280 | snapdragon "^0.8.1" 1281 | to-regex "^3.0.1" 1282 | 1283 | fast-deep-equal@^2.0.1: 1284 | version "2.0.1" 1285 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 1286 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 1287 | 1288 | fast-json-stable-stringify@^2.0.0: 1289 | version "2.0.0" 1290 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 1291 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 1292 | 1293 | fast-levenshtein@~2.0.4: 1294 | version "2.0.6" 1295 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1296 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1297 | 1298 | faucet@^0.0.1: 1299 | version "0.0.1" 1300 | resolved "https://registry.yarnpkg.com/faucet/-/faucet-0.0.1.tgz#597dcf1d2189a2c062321b591e8f151ed2039d9c" 1301 | integrity sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw= 1302 | dependencies: 1303 | defined "0.0.0" 1304 | duplexer "~0.1.1" 1305 | minimist "0.0.5" 1306 | sprintf "~0.1.3" 1307 | tap-parser "~0.4.0" 1308 | tape "~2.3.2" 1309 | through2 "~0.2.3" 1310 | 1311 | figures@^2.0.0: 1312 | version "2.0.0" 1313 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 1314 | integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= 1315 | dependencies: 1316 | escape-string-regexp "^1.0.5" 1317 | 1318 | file-entry-cache@^2.0.0: 1319 | version "2.0.0" 1320 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 1321 | integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= 1322 | dependencies: 1323 | flat-cache "^1.2.1" 1324 | object-assign "^4.0.1" 1325 | 1326 | filename-regex@^2.0.0: 1327 | version "2.0.1" 1328 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 1329 | integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= 1330 | 1331 | fill-range@^2.1.0: 1332 | version "2.2.4" 1333 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" 1334 | integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== 1335 | dependencies: 1336 | is-number "^2.1.0" 1337 | isobject "^2.0.0" 1338 | randomatic "^3.0.0" 1339 | repeat-element "^1.1.2" 1340 | repeat-string "^1.5.2" 1341 | 1342 | fill-range@^4.0.0: 1343 | version "4.0.0" 1344 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 1345 | integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 1346 | dependencies: 1347 | extend-shallow "^2.0.1" 1348 | is-number "^3.0.0" 1349 | repeat-string "^1.6.1" 1350 | to-regex-range "^2.1.0" 1351 | 1352 | flat-cache@^1.2.1: 1353 | version "1.3.0" 1354 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" 1355 | integrity sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE= 1356 | dependencies: 1357 | circular-json "^0.3.1" 1358 | del "^2.0.2" 1359 | graceful-fs "^4.1.2" 1360 | write "^0.2.1" 1361 | 1362 | for-each@~0.3.3: 1363 | version "0.3.3" 1364 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 1365 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 1366 | dependencies: 1367 | is-callable "^1.1.3" 1368 | 1369 | for-in@^1.0.1, for-in@^1.0.2: 1370 | version "1.0.2" 1371 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1372 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 1373 | 1374 | for-own@^0.1.4: 1375 | version "0.1.5" 1376 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1377 | integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= 1378 | dependencies: 1379 | for-in "^1.0.1" 1380 | 1381 | fragment-cache@^0.2.1: 1382 | version "0.2.1" 1383 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1384 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 1385 | dependencies: 1386 | map-cache "^0.2.2" 1387 | 1388 | fs-minipass@^1.2.5: 1389 | version "1.2.5" 1390 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 1391 | integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== 1392 | dependencies: 1393 | minipass "^2.2.1" 1394 | 1395 | fs-readdir-recursive@^1.0.0: 1396 | version "1.1.0" 1397 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" 1398 | integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== 1399 | 1400 | fs.realpath@^1.0.0: 1401 | version "1.0.0" 1402 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1403 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1404 | 1405 | fsevents@^1.0.0: 1406 | version "1.2.4" 1407 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" 1408 | integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== 1409 | dependencies: 1410 | nan "^2.9.2" 1411 | node-pre-gyp "^0.10.0" 1412 | 1413 | function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: 1414 | version "1.1.1" 1415 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1416 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1417 | 1418 | functional-red-black-tree@^1.0.1: 1419 | version "1.0.1" 1420 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1421 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 1422 | 1423 | gauge@~2.7.3: 1424 | version "2.7.4" 1425 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1426 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 1427 | dependencies: 1428 | aproba "^1.0.3" 1429 | console-control-strings "^1.0.0" 1430 | has-unicode "^2.0.0" 1431 | object-assign "^4.1.0" 1432 | signal-exit "^3.0.0" 1433 | string-width "^1.0.1" 1434 | strip-ansi "^3.0.1" 1435 | wide-align "^1.1.0" 1436 | 1437 | get-value@^2.0.3, get-value@^2.0.6: 1438 | version "2.0.6" 1439 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1440 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 1441 | 1442 | glob-base@^0.3.0: 1443 | version "0.3.0" 1444 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1445 | integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= 1446 | dependencies: 1447 | glob-parent "^2.0.0" 1448 | is-glob "^2.0.0" 1449 | 1450 | glob-parent@^2.0.0: 1451 | version "2.0.0" 1452 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1453 | integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= 1454 | dependencies: 1455 | is-glob "^2.0.0" 1456 | 1457 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.2: 1458 | version "7.1.3" 1459 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 1460 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 1461 | dependencies: 1462 | fs.realpath "^1.0.0" 1463 | inflight "^1.0.4" 1464 | inherits "2" 1465 | minimatch "^3.0.4" 1466 | once "^1.3.0" 1467 | path-is-absolute "^1.0.0" 1468 | 1469 | globals@^11.7.0: 1470 | version "11.8.0" 1471 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d" 1472 | integrity sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA== 1473 | 1474 | globals@^9.18.0: 1475 | version "9.18.0" 1476 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 1477 | integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== 1478 | 1479 | globby@^5.0.0: 1480 | version "5.0.0" 1481 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 1482 | integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= 1483 | dependencies: 1484 | array-union "^1.0.1" 1485 | arrify "^1.0.0" 1486 | glob "^7.0.3" 1487 | object-assign "^4.0.1" 1488 | pify "^2.0.0" 1489 | pinkie-promise "^2.0.0" 1490 | 1491 | graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: 1492 | version "4.1.14" 1493 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.14.tgz#1b6e8362ef8c5ecb5da799901f39297e3054773a" 1494 | integrity sha512-ns/IGcSmmGNPP085JCheg0Nombh1QPvSCnlx+2V+byQWRQEIL4ZB5jXJMNIHOFVS1roi85HIi5Ka0h43iWXfcQ== 1495 | 1496 | has-ansi@^2.0.0: 1497 | version "2.0.0" 1498 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1499 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 1500 | dependencies: 1501 | ansi-regex "^2.0.0" 1502 | 1503 | has-flag@^3.0.0: 1504 | version "3.0.0" 1505 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1506 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1507 | 1508 | has-symbols@^1.0.0: 1509 | version "1.0.0" 1510 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" 1511 | integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= 1512 | 1513 | has-unicode@^2.0.0: 1514 | version "2.0.1" 1515 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1516 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 1517 | 1518 | has-value@^0.3.1: 1519 | version "0.3.1" 1520 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1521 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 1522 | dependencies: 1523 | get-value "^2.0.3" 1524 | has-values "^0.1.4" 1525 | isobject "^2.0.0" 1526 | 1527 | has-value@^1.0.0: 1528 | version "1.0.0" 1529 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1530 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 1531 | dependencies: 1532 | get-value "^2.0.6" 1533 | has-values "^1.0.0" 1534 | isobject "^3.0.0" 1535 | 1536 | has-values@^0.1.4: 1537 | version "0.1.4" 1538 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1539 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 1540 | 1541 | has-values@^1.0.0: 1542 | version "1.0.0" 1543 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1544 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 1545 | dependencies: 1546 | is-number "^3.0.0" 1547 | kind-of "^4.0.0" 1548 | 1549 | has@^1.0.1, has@~1.0.3: 1550 | version "1.0.3" 1551 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1552 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1553 | dependencies: 1554 | function-bind "^1.1.1" 1555 | 1556 | home-or-tmp@^2.0.0: 1557 | version "2.0.0" 1558 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1559 | integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= 1560 | dependencies: 1561 | os-homedir "^1.0.0" 1562 | os-tmpdir "^1.0.1" 1563 | 1564 | iconv-lite@^0.4.24, iconv-lite@^0.4.4: 1565 | version "0.4.24" 1566 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1567 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1568 | dependencies: 1569 | safer-buffer ">= 2.1.2 < 3" 1570 | 1571 | ignore-walk@^3.0.1: 1572 | version "3.0.1" 1573 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 1574 | integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== 1575 | dependencies: 1576 | minimatch "^3.0.4" 1577 | 1578 | ignore@^4.0.6: 1579 | version "4.0.6" 1580 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1581 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1582 | 1583 | imurmurhash@^0.1.4: 1584 | version "0.1.4" 1585 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1586 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1587 | 1588 | inflight@^1.0.4: 1589 | version "1.0.6" 1590 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1591 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1592 | dependencies: 1593 | once "^1.3.0" 1594 | wrappy "1" 1595 | 1596 | inherits@2, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: 1597 | version "2.0.3" 1598 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1599 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1600 | 1601 | ini@~1.3.0: 1602 | version "1.3.5" 1603 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1604 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 1605 | 1606 | inquirer@^6.1.0: 1607 | version "6.2.0" 1608 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" 1609 | integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== 1610 | dependencies: 1611 | ansi-escapes "^3.0.0" 1612 | chalk "^2.0.0" 1613 | cli-cursor "^2.1.0" 1614 | cli-width "^2.0.0" 1615 | external-editor "^3.0.0" 1616 | figures "^2.0.0" 1617 | lodash "^4.17.10" 1618 | mute-stream "0.0.7" 1619 | run-async "^2.2.0" 1620 | rxjs "^6.1.0" 1621 | string-width "^2.1.0" 1622 | strip-ansi "^4.0.0" 1623 | through "^2.3.6" 1624 | 1625 | invariant@^2.2.2: 1626 | version "2.2.4" 1627 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1628 | integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== 1629 | dependencies: 1630 | loose-envify "^1.0.0" 1631 | 1632 | is-accessor-descriptor@^0.1.6: 1633 | version "0.1.6" 1634 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1635 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 1636 | dependencies: 1637 | kind-of "^3.0.2" 1638 | 1639 | is-accessor-descriptor@^1.0.0: 1640 | version "1.0.0" 1641 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1642 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 1643 | dependencies: 1644 | kind-of "^6.0.0" 1645 | 1646 | is-binary-path@^1.0.0: 1647 | version "1.0.1" 1648 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1649 | integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= 1650 | dependencies: 1651 | binary-extensions "^1.0.0" 1652 | 1653 | is-buffer@^1.1.5: 1654 | version "1.1.6" 1655 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1656 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1657 | 1658 | is-callable@^1.1.3, is-callable@^1.1.4: 1659 | version "1.1.4" 1660 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 1661 | integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== 1662 | 1663 | is-data-descriptor@^0.1.4: 1664 | version "0.1.4" 1665 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1666 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 1667 | dependencies: 1668 | kind-of "^3.0.2" 1669 | 1670 | is-data-descriptor@^1.0.0: 1671 | version "1.0.0" 1672 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1673 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 1674 | dependencies: 1675 | kind-of "^6.0.0" 1676 | 1677 | is-date-object@^1.0.1: 1678 | version "1.0.1" 1679 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1680 | integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= 1681 | 1682 | is-descriptor@^0.1.0: 1683 | version "0.1.6" 1684 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1685 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 1686 | dependencies: 1687 | is-accessor-descriptor "^0.1.6" 1688 | is-data-descriptor "^0.1.4" 1689 | kind-of "^5.0.0" 1690 | 1691 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1692 | version "1.0.2" 1693 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1694 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 1695 | dependencies: 1696 | is-accessor-descriptor "^1.0.0" 1697 | is-data-descriptor "^1.0.0" 1698 | kind-of "^6.0.2" 1699 | 1700 | is-dotfile@^1.0.0: 1701 | version "1.0.3" 1702 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 1703 | integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= 1704 | 1705 | is-equal-shallow@^0.1.3: 1706 | version "0.1.3" 1707 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1708 | integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= 1709 | dependencies: 1710 | is-primitive "^2.0.0" 1711 | 1712 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1713 | version "0.1.1" 1714 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1715 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 1716 | 1717 | is-extendable@^1.0.1: 1718 | version "1.0.1" 1719 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1720 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 1721 | dependencies: 1722 | is-plain-object "^2.0.4" 1723 | 1724 | is-extglob@^1.0.0: 1725 | version "1.0.0" 1726 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1727 | integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= 1728 | 1729 | is-finite@^1.0.0: 1730 | version "1.0.2" 1731 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1732 | integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= 1733 | dependencies: 1734 | number-is-nan "^1.0.0" 1735 | 1736 | is-fullwidth-code-point@^1.0.0: 1737 | version "1.0.0" 1738 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1739 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1740 | dependencies: 1741 | number-is-nan "^1.0.0" 1742 | 1743 | is-fullwidth-code-point@^2.0.0: 1744 | version "2.0.0" 1745 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1746 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1747 | 1748 | is-glob@^2.0.0, is-glob@^2.0.1: 1749 | version "2.0.1" 1750 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1751 | integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= 1752 | dependencies: 1753 | is-extglob "^1.0.0" 1754 | 1755 | is-number@^2.1.0: 1756 | version "2.1.0" 1757 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1758 | integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= 1759 | dependencies: 1760 | kind-of "^3.0.2" 1761 | 1762 | is-number@^3.0.0: 1763 | version "3.0.0" 1764 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1765 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 1766 | dependencies: 1767 | kind-of "^3.0.2" 1768 | 1769 | is-number@^4.0.0: 1770 | version "4.0.0" 1771 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" 1772 | integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== 1773 | 1774 | is-path-cwd@^1.0.0: 1775 | version "1.0.0" 1776 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 1777 | integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= 1778 | 1779 | is-path-in-cwd@^1.0.0: 1780 | version "1.0.1" 1781 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" 1782 | integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== 1783 | dependencies: 1784 | is-path-inside "^1.0.0" 1785 | 1786 | is-path-inside@^1.0.0: 1787 | version "1.0.1" 1788 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" 1789 | integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= 1790 | dependencies: 1791 | path-is-inside "^1.0.1" 1792 | 1793 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1794 | version "2.0.4" 1795 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1796 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1797 | dependencies: 1798 | isobject "^3.0.1" 1799 | 1800 | is-posix-bracket@^0.1.0: 1801 | version "0.1.1" 1802 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1803 | integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= 1804 | 1805 | is-primitive@^2.0.0: 1806 | version "2.0.0" 1807 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1808 | integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= 1809 | 1810 | is-promise@^2.1.0: 1811 | version "2.1.0" 1812 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 1813 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 1814 | 1815 | is-regex@^1.0.4: 1816 | version "1.0.4" 1817 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1818 | integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= 1819 | dependencies: 1820 | has "^1.0.1" 1821 | 1822 | is-resolvable@^1.1.0: 1823 | version "1.1.0" 1824 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" 1825 | integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== 1826 | 1827 | is-symbol@^1.0.2: 1828 | version "1.0.2" 1829 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" 1830 | integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== 1831 | dependencies: 1832 | has-symbols "^1.0.0" 1833 | 1834 | is-windows@^1.0.2: 1835 | version "1.0.2" 1836 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1837 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 1838 | 1839 | isarray@0.0.1: 1840 | version "0.0.1" 1841 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1842 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 1843 | 1844 | isarray@1.0.0, isarray@~1.0.0: 1845 | version "1.0.0" 1846 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1847 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1848 | 1849 | isexe@^2.0.0: 1850 | version "2.0.0" 1851 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1852 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1853 | 1854 | isobject@^2.0.0: 1855 | version "2.1.0" 1856 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1857 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1858 | dependencies: 1859 | isarray "1.0.0" 1860 | 1861 | isobject@^3.0.0, isobject@^3.0.1: 1862 | version "3.0.1" 1863 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1864 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 1865 | 1866 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1867 | version "4.0.0" 1868 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1869 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1870 | 1871 | js-tokens@^3.0.2: 1872 | version "3.0.2" 1873 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1874 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= 1875 | 1876 | js-yaml@^3.12.0: 1877 | version "3.13.1" 1878 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1879 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1880 | dependencies: 1881 | argparse "^1.0.7" 1882 | esprima "^4.0.0" 1883 | 1884 | jsesc@^1.3.0: 1885 | version "1.3.0" 1886 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 1887 | integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= 1888 | 1889 | jsesc@~0.5.0: 1890 | version "0.5.0" 1891 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" 1892 | integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= 1893 | 1894 | json-schema-traverse@^0.4.1: 1895 | version "0.4.1" 1896 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1897 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1898 | 1899 | json-stable-stringify-without-jsonify@^1.0.1: 1900 | version "1.0.1" 1901 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1902 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1903 | 1904 | json5@^0.5.1: 1905 | version "0.5.1" 1906 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 1907 | integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= 1908 | 1909 | jsonify@~0.0.0: 1910 | version "0.0.0" 1911 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1912 | integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= 1913 | 1914 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1915 | version "3.2.2" 1916 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1917 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1918 | dependencies: 1919 | is-buffer "^1.1.5" 1920 | 1921 | kind-of@^4.0.0: 1922 | version "4.0.0" 1923 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1924 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1925 | dependencies: 1926 | is-buffer "^1.1.5" 1927 | 1928 | kind-of@^5.0.0: 1929 | version "5.1.0" 1930 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1931 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 1932 | 1933 | kind-of@^6.0.0, kind-of@^6.0.2: 1934 | version "6.0.2" 1935 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1936 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== 1937 | 1938 | levn@^0.3.0, levn@~0.3.0: 1939 | version "0.3.0" 1940 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1941 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1942 | dependencies: 1943 | prelude-ls "~1.1.2" 1944 | type-check "~0.3.2" 1945 | 1946 | lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5: 1947 | version "4.17.15" 1948 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1949 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 1950 | 1951 | loose-envify@^1.0.0: 1952 | version "1.4.0" 1953 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1954 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1955 | dependencies: 1956 | js-tokens "^3.0.0 || ^4.0.0" 1957 | 1958 | map-cache@^0.2.2: 1959 | version "0.2.2" 1960 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1961 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 1962 | 1963 | map-visit@^1.0.0: 1964 | version "1.0.0" 1965 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1966 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 1967 | dependencies: 1968 | object-visit "^1.0.0" 1969 | 1970 | math-random@^1.0.1: 1971 | version "1.0.1" 1972 | resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" 1973 | integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= 1974 | 1975 | micromatch@^2.1.5: 1976 | version "2.3.11" 1977 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1978 | integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= 1979 | dependencies: 1980 | arr-diff "^2.0.0" 1981 | array-unique "^0.2.1" 1982 | braces "^1.8.2" 1983 | expand-brackets "^0.1.4" 1984 | extglob "^0.3.1" 1985 | filename-regex "^2.0.0" 1986 | is-extglob "^1.0.0" 1987 | is-glob "^2.0.1" 1988 | kind-of "^3.0.2" 1989 | normalize-path "^2.0.1" 1990 | object.omit "^2.0.0" 1991 | parse-glob "^3.0.4" 1992 | regex-cache "^0.4.2" 1993 | 1994 | micromatch@^3.1.10: 1995 | version "3.1.10" 1996 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 1997 | integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 1998 | dependencies: 1999 | arr-diff "^4.0.0" 2000 | array-unique "^0.3.2" 2001 | braces "^2.3.1" 2002 | define-property "^2.0.2" 2003 | extend-shallow "^3.0.2" 2004 | extglob "^2.0.4" 2005 | fragment-cache "^0.2.1" 2006 | kind-of "^6.0.2" 2007 | nanomatch "^1.2.9" 2008 | object.pick "^1.3.0" 2009 | regex-not "^1.0.0" 2010 | snapdragon "^0.8.1" 2011 | to-regex "^3.0.2" 2012 | 2013 | mimic-fn@^1.0.0: 2014 | version "1.2.0" 2015 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 2016 | integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== 2017 | 2018 | minimatch@^3.0.4: 2019 | version "3.0.4" 2020 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2021 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 2022 | dependencies: 2023 | brace-expansion "^1.1.7" 2024 | 2025 | minimist@0.0.5: 2026 | version "0.0.5" 2027 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566" 2028 | integrity sha1-16oye87PUY+RBqxrjwA/o7zqhWY= 2029 | 2030 | minimist@0.0.8: 2031 | version "0.0.8" 2032 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2033 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 2034 | 2035 | minimist@^1.2.0, minimist@~1.2.0: 2036 | version "1.2.0" 2037 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2038 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 2039 | 2040 | minipass@^2.2.1, minipass@^2.3.3: 2041 | version "2.3.5" 2042 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" 2043 | integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== 2044 | dependencies: 2045 | safe-buffer "^5.1.2" 2046 | yallist "^3.0.0" 2047 | 2048 | minizlib@^1.1.0: 2049 | version "1.1.1" 2050 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" 2051 | integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg== 2052 | dependencies: 2053 | minipass "^2.2.1" 2054 | 2055 | mixin-deep@^1.2.0: 2056 | version "1.3.2" 2057 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 2058 | integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== 2059 | dependencies: 2060 | for-in "^1.0.2" 2061 | is-extendable "^1.0.1" 2062 | 2063 | mkdirp@^0.5.0, mkdirp@^0.5.1: 2064 | version "0.5.1" 2065 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2066 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 2067 | dependencies: 2068 | minimist "0.0.8" 2069 | 2070 | ms@2.0.0: 2071 | version "2.0.0" 2072 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2073 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 2074 | 2075 | ms@^2.1.1: 2076 | version "2.1.1" 2077 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 2078 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 2079 | 2080 | mute-stream@0.0.7: 2081 | version "0.0.7" 2082 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 2083 | integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= 2084 | 2085 | nan@^2.9.2: 2086 | version "2.11.1" 2087 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" 2088 | integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== 2089 | 2090 | nanomatch@^1.2.9: 2091 | version "1.2.13" 2092 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 2093 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 2094 | dependencies: 2095 | arr-diff "^4.0.0" 2096 | array-unique "^0.3.2" 2097 | define-property "^2.0.2" 2098 | extend-shallow "^3.0.2" 2099 | fragment-cache "^0.2.1" 2100 | is-windows "^1.0.2" 2101 | kind-of "^6.0.2" 2102 | object.pick "^1.3.0" 2103 | regex-not "^1.0.0" 2104 | snapdragon "^0.8.1" 2105 | to-regex "^3.0.1" 2106 | 2107 | natural-compare@^1.4.0: 2108 | version "1.4.0" 2109 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2110 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 2111 | 2112 | needle@^2.2.1: 2113 | version "2.2.4" 2114 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" 2115 | integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== 2116 | dependencies: 2117 | debug "^2.1.2" 2118 | iconv-lite "^0.4.4" 2119 | sax "^1.2.4" 2120 | 2121 | nice-try@^1.0.4: 2122 | version "1.0.5" 2123 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 2124 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 2125 | 2126 | node-pre-gyp@^0.10.0: 2127 | version "0.10.3" 2128 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" 2129 | integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== 2130 | dependencies: 2131 | detect-libc "^1.0.2" 2132 | mkdirp "^0.5.1" 2133 | needle "^2.2.1" 2134 | nopt "^4.0.1" 2135 | npm-packlist "^1.1.6" 2136 | npmlog "^4.0.2" 2137 | rc "^1.2.7" 2138 | rimraf "^2.6.1" 2139 | semver "^5.3.0" 2140 | tar "^4" 2141 | 2142 | nopt@^4.0.1: 2143 | version "4.0.1" 2144 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 2145 | integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= 2146 | dependencies: 2147 | abbrev "1" 2148 | osenv "^0.1.4" 2149 | 2150 | normalize-path@^2.0.0, normalize-path@^2.0.1: 2151 | version "2.1.1" 2152 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 2153 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 2154 | dependencies: 2155 | remove-trailing-separator "^1.0.1" 2156 | 2157 | npm-bundled@^1.0.1: 2158 | version "1.0.5" 2159 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" 2160 | integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== 2161 | 2162 | npm-packlist@^1.1.6: 2163 | version "1.1.12" 2164 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" 2165 | integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== 2166 | dependencies: 2167 | ignore-walk "^3.0.1" 2168 | npm-bundled "^1.0.1" 2169 | 2170 | npmlog@^4.0.2: 2171 | version "4.1.2" 2172 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 2173 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 2174 | dependencies: 2175 | are-we-there-yet "~1.1.2" 2176 | console-control-strings "~1.1.0" 2177 | gauge "~2.7.3" 2178 | set-blocking "~2.0.0" 2179 | 2180 | number-is-nan@^1.0.0: 2181 | version "1.0.1" 2182 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2183 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 2184 | 2185 | object-assign@^4.0.1, object-assign@^4.1.0: 2186 | version "4.1.1" 2187 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2188 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 2189 | 2190 | object-copy@^0.1.0: 2191 | version "0.1.0" 2192 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 2193 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 2194 | dependencies: 2195 | copy-descriptor "^0.1.0" 2196 | define-property "^0.2.5" 2197 | kind-of "^3.0.3" 2198 | 2199 | object-inspect@~1.6.0: 2200 | version "1.6.0" 2201 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" 2202 | integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== 2203 | 2204 | object-keys@^1.0.12: 2205 | version "1.0.12" 2206 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" 2207 | integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== 2208 | 2209 | object-keys@~0.4.0: 2210 | version "0.4.0" 2211 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" 2212 | integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= 2213 | 2214 | object-visit@^1.0.0: 2215 | version "1.0.1" 2216 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 2217 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 2218 | dependencies: 2219 | isobject "^3.0.0" 2220 | 2221 | object.omit@^2.0.0: 2222 | version "2.0.1" 2223 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 2224 | integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= 2225 | dependencies: 2226 | for-own "^0.1.4" 2227 | is-extendable "^0.1.1" 2228 | 2229 | object.pick@^1.3.0: 2230 | version "1.3.0" 2231 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 2232 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 2233 | dependencies: 2234 | isobject "^3.0.1" 2235 | 2236 | once@^1.3.0: 2237 | version "1.4.0" 2238 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2239 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2240 | dependencies: 2241 | wrappy "1" 2242 | 2243 | onetime@^2.0.0: 2244 | version "2.0.1" 2245 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 2246 | integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= 2247 | dependencies: 2248 | mimic-fn "^1.0.0" 2249 | 2250 | optionator@^0.8.2: 2251 | version "0.8.2" 2252 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2253 | integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= 2254 | dependencies: 2255 | deep-is "~0.1.3" 2256 | fast-levenshtein "~2.0.4" 2257 | levn "~0.3.0" 2258 | prelude-ls "~1.1.2" 2259 | type-check "~0.3.2" 2260 | wordwrap "~1.0.0" 2261 | 2262 | os-homedir@^1.0.0: 2263 | version "1.0.2" 2264 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2265 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 2266 | 2267 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: 2268 | version "1.0.2" 2269 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2270 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 2271 | 2272 | osenv@^0.1.4: 2273 | version "0.1.5" 2274 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 2275 | integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== 2276 | dependencies: 2277 | os-homedir "^1.0.0" 2278 | os-tmpdir "^1.0.0" 2279 | 2280 | output-file-sync@^1.1.2: 2281 | version "1.1.2" 2282 | resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" 2283 | integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= 2284 | dependencies: 2285 | graceful-fs "^4.1.4" 2286 | mkdirp "^0.5.1" 2287 | object-assign "^4.1.0" 2288 | 2289 | parse-glob@^3.0.4: 2290 | version "3.0.4" 2291 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2292 | integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= 2293 | dependencies: 2294 | glob-base "^0.3.0" 2295 | is-dotfile "^1.0.0" 2296 | is-extglob "^1.0.0" 2297 | is-glob "^2.0.0" 2298 | 2299 | pascalcase@^0.1.1: 2300 | version "0.1.1" 2301 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 2302 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 2303 | 2304 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 2305 | version "1.0.1" 2306 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2307 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2308 | 2309 | path-is-inside@^1.0.1, path-is-inside@^1.0.2: 2310 | version "1.0.2" 2311 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 2312 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 2313 | 2314 | path-key@^2.0.1: 2315 | version "2.0.1" 2316 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2317 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 2318 | 2319 | path-parse@^1.0.5: 2320 | version "1.0.6" 2321 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 2322 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 2323 | 2324 | pify@^2.0.0: 2325 | version "2.3.0" 2326 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2327 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 2328 | 2329 | pinkie-promise@^2.0.0: 2330 | version "2.0.1" 2331 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2332 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 2333 | dependencies: 2334 | pinkie "^2.0.0" 2335 | 2336 | pinkie@^2.0.0: 2337 | version "2.0.4" 2338 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2339 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 2340 | 2341 | pluralize@^7.0.0: 2342 | version "7.0.0" 2343 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" 2344 | integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== 2345 | 2346 | posix-character-classes@^0.1.0: 2347 | version "0.1.1" 2348 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 2349 | integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 2350 | 2351 | prelude-ls@~1.1.2: 2352 | version "1.1.2" 2353 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2354 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 2355 | 2356 | preserve@^0.2.0: 2357 | version "0.2.0" 2358 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2359 | integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= 2360 | 2361 | private@^0.1.6, private@^0.1.8: 2362 | version "0.1.8" 2363 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 2364 | integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== 2365 | 2366 | process-nextick-args@~2.0.0: 2367 | version "2.0.0" 2368 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 2369 | integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== 2370 | 2371 | progress@^2.0.0: 2372 | version "2.0.1" 2373 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31" 2374 | integrity sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg== 2375 | 2376 | punycode@^2.1.0: 2377 | version "2.1.1" 2378 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2379 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2380 | 2381 | randomatic@^3.0.0: 2382 | version "3.1.1" 2383 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" 2384 | integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== 2385 | dependencies: 2386 | is-number "^4.0.0" 2387 | kind-of "^6.0.0" 2388 | math-random "^1.0.1" 2389 | 2390 | rc@^1.2.7: 2391 | version "1.2.8" 2392 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2393 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 2394 | dependencies: 2395 | deep-extend "^0.6.0" 2396 | ini "~1.3.0" 2397 | minimist "^1.2.0" 2398 | strip-json-comments "~2.0.1" 2399 | 2400 | readable-stream@^2.0.2, readable-stream@^2.0.6: 2401 | version "2.3.6" 2402 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 2403 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 2404 | dependencies: 2405 | core-util-is "~1.0.0" 2406 | inherits "~2.0.3" 2407 | isarray "~1.0.0" 2408 | process-nextick-args "~2.0.0" 2409 | safe-buffer "~5.1.1" 2410 | string_decoder "~1.1.1" 2411 | util-deprecate "~1.0.1" 2412 | 2413 | readable-stream@~1.1.11, readable-stream@~1.1.9: 2414 | version "1.1.14" 2415 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 2416 | integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= 2417 | dependencies: 2418 | core-util-is "~1.0.0" 2419 | inherits "~2.0.1" 2420 | isarray "0.0.1" 2421 | string_decoder "~0.10.x" 2422 | 2423 | readdirp@^2.0.0: 2424 | version "2.2.1" 2425 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" 2426 | integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== 2427 | dependencies: 2428 | graceful-fs "^4.1.11" 2429 | micromatch "^3.1.10" 2430 | readable-stream "^2.0.2" 2431 | 2432 | regenerate@^1.2.1: 2433 | version "1.4.0" 2434 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" 2435 | integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== 2436 | 2437 | regenerator-runtime@^0.10.5: 2438 | version "0.10.5" 2439 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" 2440 | integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= 2441 | 2442 | regenerator-runtime@^0.11.0: 2443 | version "0.11.1" 2444 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 2445 | integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== 2446 | 2447 | regenerator-transform@^0.10.0: 2448 | version "0.10.1" 2449 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" 2450 | integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== 2451 | dependencies: 2452 | babel-runtime "^6.18.0" 2453 | babel-types "^6.19.0" 2454 | private "^0.1.6" 2455 | 2456 | regex-cache@^0.4.2: 2457 | version "0.4.4" 2458 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 2459 | integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== 2460 | dependencies: 2461 | is-equal-shallow "^0.1.3" 2462 | 2463 | regex-not@^1.0.0, regex-not@^1.0.2: 2464 | version "1.0.2" 2465 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 2466 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 2467 | dependencies: 2468 | extend-shallow "^3.0.2" 2469 | safe-regex "^1.1.0" 2470 | 2471 | regexpp@^2.0.1: 2472 | version "2.0.1" 2473 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 2474 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 2475 | 2476 | regexpu-core@^2.0.0: 2477 | version "2.0.0" 2478 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" 2479 | integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= 2480 | dependencies: 2481 | regenerate "^1.2.1" 2482 | regjsgen "^0.2.0" 2483 | regjsparser "^0.1.4" 2484 | 2485 | regjsgen@^0.2.0: 2486 | version "0.2.0" 2487 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" 2488 | integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= 2489 | 2490 | regjsparser@^0.1.4: 2491 | version "0.1.5" 2492 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" 2493 | integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= 2494 | dependencies: 2495 | jsesc "~0.5.0" 2496 | 2497 | remove-trailing-separator@^1.0.1: 2498 | version "1.1.0" 2499 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2500 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 2501 | 2502 | repeat-element@^1.1.2: 2503 | version "1.1.3" 2504 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 2505 | integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== 2506 | 2507 | repeat-string@^1.5.2, repeat-string@^1.6.1: 2508 | version "1.6.1" 2509 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2510 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 2511 | 2512 | repeating@^2.0.0: 2513 | version "2.0.1" 2514 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 2515 | integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= 2516 | dependencies: 2517 | is-finite "^1.0.0" 2518 | 2519 | require-uncached@^1.0.3: 2520 | version "1.0.3" 2521 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 2522 | integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= 2523 | dependencies: 2524 | caller-path "^0.1.0" 2525 | resolve-from "^1.0.0" 2526 | 2527 | resolve-from@^1.0.0: 2528 | version "1.0.1" 2529 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 2530 | integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= 2531 | 2532 | resolve-url@^0.2.1: 2533 | version "0.2.1" 2534 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 2535 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 2536 | 2537 | resolve@~1.7.1: 2538 | version "1.7.1" 2539 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" 2540 | integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== 2541 | dependencies: 2542 | path-parse "^1.0.5" 2543 | 2544 | restore-cursor@^2.0.0: 2545 | version "2.0.0" 2546 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 2547 | integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= 2548 | dependencies: 2549 | onetime "^2.0.0" 2550 | signal-exit "^3.0.2" 2551 | 2552 | resumer@~0.0.0: 2553 | version "0.0.0" 2554 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" 2555 | integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= 2556 | dependencies: 2557 | through "~2.3.4" 2558 | 2559 | ret@~0.1.10: 2560 | version "0.1.15" 2561 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 2562 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 2563 | 2564 | rimraf@^2.2.8, rimraf@^2.6.1, rimraf@^2.6.2: 2565 | version "2.6.2" 2566 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 2567 | integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== 2568 | dependencies: 2569 | glob "^7.0.5" 2570 | 2571 | run-async@^2.2.0: 2572 | version "2.3.0" 2573 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 2574 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 2575 | dependencies: 2576 | is-promise "^2.1.0" 2577 | 2578 | rxjs@^6.1.0: 2579 | version "6.3.3" 2580 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" 2581 | integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== 2582 | dependencies: 2583 | tslib "^1.9.0" 2584 | 2585 | safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2586 | version "5.1.2" 2587 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2588 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2589 | 2590 | safe-regex@^1.1.0: 2591 | version "1.1.0" 2592 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 2593 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 2594 | dependencies: 2595 | ret "~0.1.10" 2596 | 2597 | "safer-buffer@>= 2.1.2 < 3": 2598 | version "2.1.2" 2599 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2600 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2601 | 2602 | sax@^1.2.4: 2603 | version "1.2.4" 2604 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 2605 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 2606 | 2607 | semver@^5.3.0, semver@^5.5.0, semver@^5.5.1: 2608 | version "5.6.0" 2609 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 2610 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 2611 | 2612 | set-blocking@~2.0.0: 2613 | version "2.0.0" 2614 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2615 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2616 | 2617 | set-value@^0.4.3: 2618 | version "0.4.3" 2619 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 2620 | integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= 2621 | dependencies: 2622 | extend-shallow "^2.0.1" 2623 | is-extendable "^0.1.1" 2624 | is-plain-object "^2.0.1" 2625 | to-object-path "^0.3.0" 2626 | 2627 | set-value@^2.0.0: 2628 | version "2.0.0" 2629 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 2630 | integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== 2631 | dependencies: 2632 | extend-shallow "^2.0.1" 2633 | is-extendable "^0.1.1" 2634 | is-plain-object "^2.0.3" 2635 | split-string "^3.0.1" 2636 | 2637 | shebang-command@^1.2.0: 2638 | version "1.2.0" 2639 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2640 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2641 | dependencies: 2642 | shebang-regex "^1.0.0" 2643 | 2644 | shebang-regex@^1.0.0: 2645 | version "1.0.0" 2646 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2647 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2648 | 2649 | signal-exit@^3.0.0, signal-exit@^3.0.2: 2650 | version "3.0.2" 2651 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2652 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2653 | 2654 | slash@^1.0.0: 2655 | version "1.0.0" 2656 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 2657 | integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= 2658 | 2659 | slice-ansi@1.0.0: 2660 | version "1.0.0" 2661 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" 2662 | integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== 2663 | dependencies: 2664 | is-fullwidth-code-point "^2.0.0" 2665 | 2666 | snapdragon-node@^2.0.1: 2667 | version "2.1.1" 2668 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 2669 | integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 2670 | dependencies: 2671 | define-property "^1.0.0" 2672 | isobject "^3.0.0" 2673 | snapdragon-util "^3.0.1" 2674 | 2675 | snapdragon-util@^3.0.1: 2676 | version "3.0.1" 2677 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 2678 | integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 2679 | dependencies: 2680 | kind-of "^3.2.0" 2681 | 2682 | snapdragon@^0.8.1: 2683 | version "0.8.2" 2684 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 2685 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 2686 | dependencies: 2687 | base "^0.11.1" 2688 | debug "^2.2.0" 2689 | define-property "^0.2.5" 2690 | extend-shallow "^2.0.1" 2691 | map-cache "^0.2.2" 2692 | source-map "^0.5.6" 2693 | source-map-resolve "^0.5.0" 2694 | use "^3.1.0" 2695 | 2696 | source-map-resolve@^0.5.0: 2697 | version "0.5.2" 2698 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 2699 | integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== 2700 | dependencies: 2701 | atob "^2.1.1" 2702 | decode-uri-component "^0.2.0" 2703 | resolve-url "^0.2.1" 2704 | source-map-url "^0.4.0" 2705 | urix "^0.1.0" 2706 | 2707 | source-map-support@^0.4.15: 2708 | version "0.4.18" 2709 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 2710 | integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== 2711 | dependencies: 2712 | source-map "^0.5.6" 2713 | 2714 | source-map-url@^0.4.0: 2715 | version "0.4.0" 2716 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 2717 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 2718 | 2719 | source-map@^0.5.6, source-map@^0.5.7: 2720 | version "0.5.7" 2721 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2722 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2723 | 2724 | split-string@^3.0.1, split-string@^3.0.2: 2725 | version "3.1.0" 2726 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 2727 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 2728 | dependencies: 2729 | extend-shallow "^3.0.0" 2730 | 2731 | sprintf-js@~1.0.2: 2732 | version "1.0.3" 2733 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2734 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2735 | 2736 | sprintf@~0.1.3: 2737 | version "0.1.5" 2738 | resolved "https://registry.yarnpkg.com/sprintf/-/sprintf-0.1.5.tgz#8f83e39a9317c1a502cb7db8050e51c679f6edcf" 2739 | integrity sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8= 2740 | 2741 | static-extend@^0.1.1: 2742 | version "0.1.2" 2743 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 2744 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 2745 | dependencies: 2746 | define-property "^0.2.5" 2747 | object-copy "^0.1.0" 2748 | 2749 | string-width@^1.0.1: 2750 | version "1.0.2" 2751 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2752 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 2753 | dependencies: 2754 | code-point-at "^1.0.0" 2755 | is-fullwidth-code-point "^1.0.0" 2756 | strip-ansi "^3.0.0" 2757 | 2758 | "string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: 2759 | version "2.1.1" 2760 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2761 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2762 | dependencies: 2763 | is-fullwidth-code-point "^2.0.0" 2764 | strip-ansi "^4.0.0" 2765 | 2766 | string.prototype.trim@~1.1.2: 2767 | version "1.1.2" 2768 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" 2769 | integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= 2770 | dependencies: 2771 | define-properties "^1.1.2" 2772 | es-abstract "^1.5.0" 2773 | function-bind "^1.0.2" 2774 | 2775 | string_decoder@~0.10.x: 2776 | version "0.10.31" 2777 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2778 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= 2779 | 2780 | string_decoder@~1.1.1: 2781 | version "1.1.1" 2782 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2783 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2784 | dependencies: 2785 | safe-buffer "~5.1.0" 2786 | 2787 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2788 | version "3.0.1" 2789 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2790 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2791 | dependencies: 2792 | ansi-regex "^2.0.0" 2793 | 2794 | strip-ansi@^4.0.0: 2795 | version "4.0.0" 2796 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2797 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2798 | dependencies: 2799 | ansi-regex "^3.0.0" 2800 | 2801 | strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: 2802 | version "2.0.1" 2803 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2804 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2805 | 2806 | supports-color@^2.0.0: 2807 | version "2.0.0" 2808 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2809 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 2810 | 2811 | supports-color@^5.3.0: 2812 | version "5.5.0" 2813 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2814 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2815 | dependencies: 2816 | has-flag "^3.0.0" 2817 | 2818 | table@^5.0.2: 2819 | version "5.1.0" 2820 | resolved "https://registry.yarnpkg.com/table/-/table-5.1.0.tgz#69a54644f6f01ad1628f8178715b408dc6bf11f7" 2821 | integrity sha512-e542in22ZLhD/fOIuXs/8yDZ9W61ltF8daM88rkRNtgTIct+vI2fTnAyu/Db2TCfEcI8i7mjZz6meLq0nW7TYg== 2822 | dependencies: 2823 | ajv "^6.5.3" 2824 | lodash "^4.17.10" 2825 | slice-ansi "1.0.0" 2826 | string-width "^2.1.1" 2827 | 2828 | tap-parser@~0.4.0: 2829 | version "0.4.3" 2830 | resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-0.4.3.tgz#a4eae190c10d76c7a111921ff38bbe4d58f09eea" 2831 | integrity sha1-pOrhkMENdsehEZIf84u+TVjwnuo= 2832 | dependencies: 2833 | inherits "~2.0.1" 2834 | readable-stream "~1.1.11" 2835 | 2836 | tape@^4.9.1: 2837 | version "4.9.1" 2838 | resolved "https://registry.yarnpkg.com/tape/-/tape-4.9.1.tgz#1173d7337e040c76fbf42ec86fcabedc9b3805c9" 2839 | integrity sha512-6fKIXknLpoe/Jp4rzHKFPpJUHDHDqn8jus99IfPnHIjyz78HYlefTGD3b5EkbQzuLfaEvmfPK3IolLgq2xT3kw== 2840 | dependencies: 2841 | deep-equal "~1.0.1" 2842 | defined "~1.0.0" 2843 | for-each "~0.3.3" 2844 | function-bind "~1.1.1" 2845 | glob "~7.1.2" 2846 | has "~1.0.3" 2847 | inherits "~2.0.3" 2848 | minimist "~1.2.0" 2849 | object-inspect "~1.6.0" 2850 | resolve "~1.7.1" 2851 | resumer "~0.0.0" 2852 | string.prototype.trim "~1.1.2" 2853 | through "~2.3.8" 2854 | 2855 | tape@~2.3.2: 2856 | version "2.3.3" 2857 | resolved "https://registry.yarnpkg.com/tape/-/tape-2.3.3.tgz#2e7ce0a31df09f8d6851664a71842e0ca5057af7" 2858 | integrity sha1-Lnzgox3wn41oUWZKcYQuDKUFevc= 2859 | dependencies: 2860 | deep-equal "~0.1.0" 2861 | defined "~0.0.0" 2862 | inherits "~2.0.1" 2863 | jsonify "~0.0.0" 2864 | resumer "~0.0.0" 2865 | through "~2.3.4" 2866 | 2867 | tar@^4: 2868 | version "4.4.6" 2869 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" 2870 | integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg== 2871 | dependencies: 2872 | chownr "^1.0.1" 2873 | fs-minipass "^1.2.5" 2874 | minipass "^2.3.3" 2875 | minizlib "^1.1.0" 2876 | mkdirp "^0.5.0" 2877 | safe-buffer "^5.1.2" 2878 | yallist "^3.0.2" 2879 | 2880 | text-table@^0.2.0: 2881 | version "0.2.0" 2882 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2883 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2884 | 2885 | through2@~0.2.3: 2886 | version "0.2.3" 2887 | resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f" 2888 | integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8= 2889 | dependencies: 2890 | readable-stream "~1.1.9" 2891 | xtend "~2.1.1" 2892 | 2893 | through@^2.3.6, through@~2.3.4, through@~2.3.8: 2894 | version "2.3.8" 2895 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2896 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2897 | 2898 | tmp@^0.0.33: 2899 | version "0.0.33" 2900 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 2901 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 2902 | dependencies: 2903 | os-tmpdir "~1.0.2" 2904 | 2905 | to-fast-properties@^1.0.3: 2906 | version "1.0.3" 2907 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 2908 | integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= 2909 | 2910 | to-object-path@^0.3.0: 2911 | version "0.3.0" 2912 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 2913 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 2914 | dependencies: 2915 | kind-of "^3.0.2" 2916 | 2917 | to-regex-range@^2.1.0: 2918 | version "2.1.1" 2919 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 2920 | integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 2921 | dependencies: 2922 | is-number "^3.0.0" 2923 | repeat-string "^1.6.1" 2924 | 2925 | to-regex@^3.0.1, to-regex@^3.0.2: 2926 | version "3.0.2" 2927 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 2928 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 2929 | dependencies: 2930 | define-property "^2.0.2" 2931 | extend-shallow "^3.0.2" 2932 | regex-not "^1.0.2" 2933 | safe-regex "^1.1.0" 2934 | 2935 | trim-right@^1.0.1: 2936 | version "1.0.1" 2937 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 2938 | integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= 2939 | 2940 | tslib@^1.9.0: 2941 | version "1.9.3" 2942 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 2943 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 2944 | 2945 | type-check@~0.3.2: 2946 | version "0.3.2" 2947 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2948 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2949 | dependencies: 2950 | prelude-ls "~1.1.2" 2951 | 2952 | union-value@^1.0.0: 2953 | version "1.0.0" 2954 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 2955 | integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= 2956 | dependencies: 2957 | arr-union "^3.1.0" 2958 | get-value "^2.0.6" 2959 | is-extendable "^0.1.1" 2960 | set-value "^0.4.3" 2961 | 2962 | unset-value@^1.0.0: 2963 | version "1.0.0" 2964 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 2965 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 2966 | dependencies: 2967 | has-value "^0.3.1" 2968 | isobject "^3.0.0" 2969 | 2970 | uri-js@^4.2.2: 2971 | version "4.2.2" 2972 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2973 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 2974 | dependencies: 2975 | punycode "^2.1.0" 2976 | 2977 | urix@^0.1.0: 2978 | version "0.1.0" 2979 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 2980 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 2981 | 2982 | use@^3.1.0: 2983 | version "3.1.1" 2984 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 2985 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 2986 | 2987 | user-home@^1.1.1: 2988 | version "1.1.1" 2989 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" 2990 | integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= 2991 | 2992 | util-deprecate@~1.0.1: 2993 | version "1.0.2" 2994 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2995 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2996 | 2997 | v8flags@^2.1.1: 2998 | version "2.1.1" 2999 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" 3000 | integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= 3001 | dependencies: 3002 | user-home "^1.1.1" 3003 | 3004 | which@^1.2.9: 3005 | version "1.3.1" 3006 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 3007 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 3008 | dependencies: 3009 | isexe "^2.0.0" 3010 | 3011 | wide-align@^1.1.0: 3012 | version "1.1.3" 3013 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 3014 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 3015 | dependencies: 3016 | string-width "^1.0.2 || 2" 3017 | 3018 | wordwrap@~1.0.0: 3019 | version "1.0.0" 3020 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 3021 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 3022 | 3023 | wrappy@1: 3024 | version "1.0.2" 3025 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3026 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 3027 | 3028 | write@^0.2.1: 3029 | version "0.2.1" 3030 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 3031 | integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= 3032 | dependencies: 3033 | mkdirp "^0.5.1" 3034 | 3035 | xtend@~2.1.1: 3036 | version "2.1.2" 3037 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" 3038 | integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= 3039 | dependencies: 3040 | object-keys "~0.4.0" 3041 | 3042 | yallist@^3.0.0, yallist@^3.0.2: 3043 | version "3.0.2" 3044 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" 3045 | integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= 3046 | --------------------------------------------------------------------------------