├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── cli.js ├── package.json ├── src ├── __test__ │ ├── __snapshots__ │ │ └── index.test.ts.snap │ └── index.test.ts ├── example-usage.ts ├── example.src.ts ├── example.ts ├── generate.ts ├── index.ts ├── parse.ts ├── transformAST.ts ├── transformFile.ts └── transformString.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | 10 | pids 11 | logs 12 | results 13 | 14 | npm-debug.log 15 | 16 | node_modules 17 | coverage 18 | /lib 19 | package-lock.json 20 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "6" 5 | - "8" 6 | - "10" 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Forbes Lindesay 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # opaque-types 2 | 3 | Support for opaque and nominal types in typescript via a transformation. 4 | 5 | [![Build Status](https://img.shields.io/travis/ForbesLindesay/opaque-types/master.svg)](https://travis-ci.org/ForbesLindesay/opaque-types) 6 | 7 | ## Installation 8 | 9 | yarn add opaque-types 10 | 11 | ## Usage 12 | 13 | Define a file with the extension `.src.ts`. e.g. `types.src.ts` 14 | 15 | ```typescript 16 | // @nominal 17 | export type Longitude = number; 18 | // @nominal 19 | export type Latitude = number; 20 | 21 | // @opaque 22 | export type UserID = number; 23 | 24 | // @nominal 25 | // @expose 26 | export type Email = string; 27 | export const Email = { 28 | isValid(email: string): email is Email { 29 | return /.+\@.+/.test(email); 30 | }, 31 | }; 32 | ``` 33 | 34 | Running `opaque-types ` will generate a file called `types.ts` (i.e. without the `.src` part), that exposes opaque/nominal types, along with an API for casting to and from them. 35 | 36 | Usage: 37 | 38 | ```typescript 39 | import {Longitude, Latitude, UserID, Email} from './types'; 40 | 41 | const i = UserID.unsafeCast(100); 42 | const x = Longitude.unsafeCast(10); 43 | const y = Latitude.unsafeCast(5); 44 | 45 | export function go(id: UserID, longitude: Longitude, latitude: Latitude) {} 46 | 47 | go(i, x, y); 48 | // errors: go(i, y, x); 49 | 50 | // errors: const a: number = x; 51 | // errors: const b: number = y; 52 | const a: number = Longitude.extract(x); 53 | const b: number = Longitude.extract(y); 54 | 55 | // cast validates the value. It is only 56 | // available if `isValid` is defined. 57 | const email = Email.cast('forbes@example.com'); 58 | const str: string = email; 59 | // errors: const e: Email = 'forbes@example.com'; 60 | function sendMessage(email: Email, body: string) {} 61 | sendMessage(email, 'Hi person at ' + email); 62 | ``` 63 | 64 | - `@nominal` marks the type as a "nominal" type. If you declare the same "nominal" type, with the same name, in multiple different files, they will be treated as the same type. This is useful if you want to create a library that exposes an API with types like "Email". 65 | - `@opaque` marks the type as an "opaque" type. Each declaration of an `@opaque` type is separate, and cannot be confused, even if they have the same name. 66 | - `@expose` exposes the underlying type. In the above example, you can use an `Email` in a location where a `string` is required, but you still cannot pass an arbitrary string to a method expecting an `Email`. 67 | 68 | ## License 69 | 70 | MIT 71 | -------------------------------------------------------------------------------- /cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require('./').default(process.argv[2] || process.cwd()); 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "opaque-types", 3 | "version": "1.1.2", 4 | "description": "Generate opaque types for typescript.", 5 | "main": "lib/index.js", 6 | "types": "lib/index.d.ts", 7 | "bin": { 8 | "opaque-types": "./cli.js" 9 | }, 10 | "files": [ 11 | "lib", 12 | "cli.js" 13 | ], 14 | "scripts": { 15 | "pretest": "npm run build", 16 | "prepublishOnly": "npm run build", 17 | "build": "tsc", 18 | "test": "jest" 19 | }, 20 | "repository": { 21 | "type": "git", 22 | "url": "https://github.com/ForbesLindesay/character-parser.git" 23 | }, 24 | "keywords": [], 25 | "author": "ForbesLindesay", 26 | "license": "MIT", 27 | "devDependencies": { 28 | "@types/jest": "^23.1.1", 29 | "@types/node": "^10.5.1", 30 | "jest": "^23.1.0", 31 | "ts-jest": "^22.4.6", 32 | "typescript": "^2.4.0" 33 | }, 34 | "dependencies": { 35 | "@babel/generator": "^7.0.0-beta.51", 36 | "@babel/parser": "^7.0.0-beta.51", 37 | "@babel/types": "^7.0.0-beta.51", 38 | "lsr": "^2.0.0", 39 | "prettier": "^1.13.5" 40 | }, 41 | "jest": { 42 | "transform": { 43 | "^.+\\.tsx?$": "ts-jest" 44 | }, 45 | "testRegex": "src/.*(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$", 46 | "moduleFileExtensions": [ 47 | "ts", 48 | "tsx", 49 | "js", 50 | "jsx", 51 | "json", 52 | "node" 53 | ] 54 | }, 55 | "prettier": { 56 | "printWidth": 80, 57 | "tabWidth": 2, 58 | "useTabs": false, 59 | "semi": true, 60 | "singleQuote": true, 61 | "trailingComma": "all", 62 | "bracketSpacing": false, 63 | "jsxBracketSameLine": false 64 | } 65 | } -------------------------------------------------------------------------------- /src/__test__/__snapshots__/index.test.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`pipeline 1`] = ` 4 | "/** 5 | * @generated opaque-types 6 | */ 7 | 8 | export type Latitude__Base = number; 9 | 10 | declare class Latitude__Class { 11 | private __kind: 'Latitude'; 12 | } 13 | 14 | /** 15 | * @expose 16 | * @nominal 17 | * @base Latitude__Base 18 | */ 19 | type Latitude = Latitude__Base & Latitude__Class; 20 | const Latitude = { 21 | extract(value: Latitude): Latitude__Base { 22 | return value; 23 | }, 24 | 25 | unsafeCast(value: Latitude__Base): Latitude { 26 | return value as any; 27 | }, 28 | }; 29 | export {Latitude}; 30 | export type Longitude__Base = number; 31 | 32 | declare class Longitude__Class { 33 | private __kind: 'Longitude'; 34 | } 35 | 36 | /** 37 | * @expose 38 | * @nominal 39 | * @base Longitude__Base 40 | */ 41 | type Longitude = Longitude__Base & Longitude__Class; 42 | const Longitude = { 43 | extract(value: Longitude): Longitude__Base { 44 | return value; 45 | }, 46 | 47 | unsafeCast(value: Longitude__Base): Longitude { 48 | return value as any; 49 | }, 50 | }; 51 | export {Longitude}; 52 | export type ID__Base = number; 53 | declare const ID__Symbol: unique symbol; 54 | 55 | declare class ID__Class { 56 | private __kind: typeof ID__Symbol; 57 | } 58 | 59 | /** 60 | * @opaque 61 | * @base ID__Base 62 | */ 63 | type ID = typeof ID__Symbol & ID__Class; 64 | const ID = { 65 | cast(value: ID__Base): ID { 66 | if (!ID.isValid(value)) { 67 | throw new TypeError('Expected \\"ID\\" but got: ' + JSON.stringify(value)); 68 | } 69 | 70 | return value as any; 71 | }, 72 | 73 | extract(value: ID): ID__Base { 74 | return value as any; 75 | }, 76 | 77 | unsafeCast(value: ID__Base): ID { 78 | return value as any; 79 | }, 80 | 81 | isValid(id: any): boolean { 82 | return ( 83 | typeof id === 'number' && 84 | !Number.isNaN(id) && 85 | id < Number.MAX_SAFE_INTEGER && 86 | id >= 0 && 87 | id === Math.floor(id) 88 | ); 89 | }, 90 | }; 91 | export {ID}; 92 | export type MyThing__Base = { 93 | foo(): T; 94 | }; 95 | declare const MyThing__Symbol: unique symbol; 96 | 97 | declare class MyThing__Class { 98 | private __kind: typeof MyThing__Symbol; 99 | private __T: T; 100 | } 101 | 102 | /** 103 | * @opaque 104 | * @base MyThing__Base 105 | */ 106 | type MyThing = typeof MyThing__Symbol & MyThing__Class; 107 | const MyThing = { 108 | extract(value: MyThing): MyThing__Base { 109 | return value as any; 110 | }, 111 | 112 | unsafeCast(value: MyThing__Base): MyThing { 113 | return value as any; 114 | }, 115 | }; 116 | export default MyThing; 117 | export type Email__Base = string; 118 | 119 | declare class Email__Class { 120 | private __kind: 'Email'; 121 | } 122 | 123 | /** 124 | * @expose 125 | * @nominal 126 | * @base Email__Base 127 | */ 128 | type Email = Email__Base & Email__Class; 129 | const Email = { 130 | cast(value: Email__Base): Email { 131 | if (!Email.isValid(value)) { 132 | throw new TypeError('Expected \\"Email\\" but got: ' + JSON.stringify(value)); 133 | } 134 | 135 | return value as any; 136 | }, 137 | 138 | extract(value: Email): Email__Base { 139 | return value; 140 | }, 141 | 142 | unsafeCast(value: Email__Base): Email { 143 | return value as any; 144 | }, 145 | 146 | isValid(email: string): email is Email { 147 | return /.+\\\\@.+/.test(email); 148 | }, 149 | }; 150 | export {Email}; 151 | " 152 | `; 153 | -------------------------------------------------------------------------------- /src/__test__/index.test.ts: -------------------------------------------------------------------------------- 1 | import {readFileSync, writeFileSync} from 'fs'; 2 | import transformFile from '../transformFile'; 3 | 4 | test('pipeline', async () => { 5 | const filename = __dirname + '/../example.src.ts'; 6 | const outputFilename = __dirname + '/../example.ts'; 7 | const output = await transformFile(filename); 8 | expect(output).toMatchSnapshot(); 9 | if (readFileSync(outputFilename, 'utf8') !== output) { 10 | writeFileSync(outputFilename, output); 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /src/example-usage.ts: -------------------------------------------------------------------------------- 1 | import MyThing, {Longitude, Latitude, ID} from './example'; 2 | 3 | const x = Longitude.unsafeCast(10); 4 | const y = Latitude.unsafeCast(5); 5 | const i = ID.cast(100); 6 | 7 | export function go( 8 | id: ID, 9 | longitude: Longitude, 10 | latitude: Latitude, 11 | value: number, 12 | ) {} 13 | 14 | go(i, x, y, 0); 15 | go(i, x, y, x); 16 | go(i, x, y, y); 17 | go(i, x, y, ID.extract(i)); 18 | // errors: 19 | // go(i, y, x, 0); 20 | // errors: 21 | // go(i, x, y, i); 22 | // errors: 23 | // go(0, x, y, 0); 24 | 25 | export function thing(t: MyThing) {} 26 | 27 | thing( 28 | MyThing.unsafeCast({ 29 | foo() { 30 | return ''; 31 | }, 32 | }), 33 | ); 34 | 35 | // errors: 36 | // thing( 37 | // MyThing.unsafeCast({ 38 | // foo() { 39 | // return 42; 40 | // }, 41 | // }), 42 | // ); 43 | 44 | // errors: 45 | // thing({ 46 | // foo() { 47 | // return ''; 48 | // }, 49 | // }); 50 | -------------------------------------------------------------------------------- /src/example.src.ts: -------------------------------------------------------------------------------- 1 | // @expose 2 | // @nominal 3 | export type Latitude = number; 4 | // @expose 5 | // @nominal 6 | export type Longitude = number; 7 | 8 | // @opaque 9 | export type ID = number; 10 | export const ID = { 11 | isValid(id: any): boolean { 12 | return ( 13 | typeof id === 'number' && 14 | !Number.isNaN(id) && 15 | id < Number.MAX_SAFE_INTEGER && 16 | id >= 0 && 17 | id === Math.floor(id) 18 | ); 19 | }, 20 | }; 21 | 22 | // @opaque 23 | type MyThing = {foo(): T}; 24 | export default MyThing; 25 | 26 | // @nominal 27 | // @expose 28 | export type Email = string; 29 | export const Email = { 30 | isValid(email: string): email is Email { 31 | return /.+\@.+/.test(email); 32 | }, 33 | }; 34 | -------------------------------------------------------------------------------- /src/example.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @generated opaque-types 3 | */ 4 | 5 | export type Latitude__Base = number; 6 | 7 | declare class Latitude__Class { 8 | private __kind: 'Latitude'; 9 | } 10 | 11 | /** 12 | * @expose 13 | * @nominal 14 | * @base Latitude__Base 15 | */ 16 | type Latitude = Latitude__Base & Latitude__Class; 17 | const Latitude = { 18 | extract(value: Latitude): Latitude__Base { 19 | return value; 20 | }, 21 | 22 | unsafeCast(value: Latitude__Base): Latitude { 23 | return value as any; 24 | }, 25 | }; 26 | export {Latitude}; 27 | export type Longitude__Base = number; 28 | 29 | declare class Longitude__Class { 30 | private __kind: 'Longitude'; 31 | } 32 | 33 | /** 34 | * @expose 35 | * @nominal 36 | * @base Longitude__Base 37 | */ 38 | type Longitude = Longitude__Base & Longitude__Class; 39 | const Longitude = { 40 | extract(value: Longitude): Longitude__Base { 41 | return value; 42 | }, 43 | 44 | unsafeCast(value: Longitude__Base): Longitude { 45 | return value as any; 46 | }, 47 | }; 48 | export {Longitude}; 49 | export type ID__Base = number; 50 | declare const ID__Symbol: unique symbol; 51 | 52 | declare class ID__Class { 53 | private __kind: typeof ID__Symbol; 54 | } 55 | 56 | /** 57 | * @opaque 58 | * @base ID__Base 59 | */ 60 | type ID = typeof ID__Symbol & ID__Class; 61 | const ID = { 62 | cast(value: ID__Base): ID { 63 | if (!ID.isValid(value)) { 64 | throw new TypeError('Expected "ID" but got: ' + JSON.stringify(value)); 65 | } 66 | 67 | return value as any; 68 | }, 69 | 70 | extract(value: ID): ID__Base { 71 | return value as any; 72 | }, 73 | 74 | unsafeCast(value: ID__Base): ID { 75 | return value as any; 76 | }, 77 | 78 | isValid(id: any): boolean { 79 | return ( 80 | typeof id === 'number' && 81 | !Number.isNaN(id) && 82 | id < Number.MAX_SAFE_INTEGER && 83 | id >= 0 && 84 | id === Math.floor(id) 85 | ); 86 | }, 87 | }; 88 | export {ID}; 89 | export type MyThing__Base = { 90 | foo(): T; 91 | }; 92 | declare const MyThing__Symbol: unique symbol; 93 | 94 | declare class MyThing__Class { 95 | private __kind: typeof MyThing__Symbol; 96 | private __T: T; 97 | } 98 | 99 | /** 100 | * @opaque 101 | * @base MyThing__Base 102 | */ 103 | type MyThing = typeof MyThing__Symbol & MyThing__Class; 104 | const MyThing = { 105 | extract(value: MyThing): MyThing__Base { 106 | return value as any; 107 | }, 108 | 109 | unsafeCast(value: MyThing__Base): MyThing { 110 | return value as any; 111 | }, 112 | }; 113 | export default MyThing; 114 | export type Email__Base = string; 115 | 116 | declare class Email__Class { 117 | private __kind: 'Email'; 118 | } 119 | 120 | /** 121 | * @expose 122 | * @nominal 123 | * @base Email__Base 124 | */ 125 | type Email = Email__Base & Email__Class; 126 | const Email = { 127 | cast(value: Email__Base): Email { 128 | if (!Email.isValid(value)) { 129 | throw new TypeError('Expected "Email" but got: ' + JSON.stringify(value)); 130 | } 131 | 132 | return value as any; 133 | }, 134 | 135 | extract(value: Email): Email__Base { 136 | return value; 137 | }, 138 | 139 | unsafeCast(value: Email__Base): Email { 140 | return value as any; 141 | }, 142 | 143 | isValid(email: string): email is Email { 144 | return /.+\@.+/.test(email); 145 | }, 146 | }; 147 | export {Email}; 148 | -------------------------------------------------------------------------------- /src/generate.ts: -------------------------------------------------------------------------------- 1 | import {File} from '@babel/types'; 2 | const generate = require('@babel/generator').default; 3 | 4 | export default function generateSource(file: File): string { 5 | return generate(file).code; 6 | } 7 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import {writeFile} from 'fs'; 2 | import lsr from 'lsr'; 3 | import transformAST from './transformAST'; 4 | import transformFile from './transformFile'; 5 | import transformString from './transformString'; 6 | 7 | export {transformAST, transformFile, transformString}; 8 | export default async function transformDirectory( 9 | dirname: string, 10 | ): Promise { 11 | await Promise.all( 12 | (await lsr(dirname)) 13 | .filter(entry => entry.isFile() && /\.src\.tsx?$/.test(entry.name)) 14 | .map(entry => 15 | transformFile(entry.fullPath).then(output => { 16 | return new Promise((resolve, reject) => { 17 | writeFile( 18 | entry.fullPath.replace(/\.src\.(tsx?)$/, '.$1'), 19 | output, 20 | err => { 21 | if (err) reject(err); 22 | else resolve(); 23 | }, 24 | ); 25 | }); 26 | }), 27 | ), 28 | ); 29 | } 30 | -------------------------------------------------------------------------------- /src/parse.ts: -------------------------------------------------------------------------------- 1 | import {File} from '@babel/types'; 2 | const {parse} = require('@babel/parser'); 3 | 4 | export interface Options { 5 | filename?: string; 6 | } 7 | export default function parseSource(src: string, options: Options = {}): File { 8 | const result: File = parse(src, { 9 | allowImportExportEverywhere: true, 10 | allowReturnOutsideFunction: true, 11 | allowSuperOutsideMethod: true, 12 | sourceType: 'module', 13 | sourceFilename: options.filename, 14 | plugins: [ 15 | 'jsx', 16 | 'typescript', 17 | 'doExpressions', 18 | 'objectRestSpread', 19 | 'classProperties', 20 | 'classPrivateProperties', 21 | 'classPrivateMethods', 22 | 'exportDefaultFrom', 23 | 'exportNamespaceFrom', 24 | 'asyncGenerators', 25 | 'functionBind', 26 | 'dynamicImport', 27 | 'numericSeparator', 28 | 'optionalChaining', 29 | 'bigInt', 30 | 'optionalCatchBinding', 31 | 'throwExpressions', 32 | 'pipelineOperator', 33 | 'nullishCoalescingOperator', 34 | ], 35 | }); 36 | (result.program as any).source = src; 37 | return result; 38 | } 39 | -------------------------------------------------------------------------------- /src/transformAST.ts: -------------------------------------------------------------------------------- 1 | import { 2 | File, 3 | Statement, 4 | isVariableDeclaration, 5 | isTSTypeAliasDeclaration, 6 | isExportNamedDeclaration, 7 | isIdentifier, 8 | ObjectExpression, 9 | TSTypeAliasDeclaration, 10 | isObjectExpression, 11 | TSType, 12 | ObjectMethod, 13 | ObjectProperty, 14 | SpreadElement, 15 | variableDeclaration, 16 | variableDeclarator, 17 | identifier, 18 | tsTypeAnnotation, 19 | tsTypeOperator, 20 | tsSymbolKeyword, 21 | classDeclaration, 22 | classBody, 23 | TSTypeParameterDeclaration, 24 | classProperty, 25 | tsTypeQuery, 26 | tsTypeReference, 27 | tsTypeAliasDeclaration, 28 | tsIntersectionType, 29 | tsTypeParameterInstantiation, 30 | Comment, 31 | exportNamedDeclaration, 32 | exportSpecifier, 33 | Identifier, 34 | isObjectMethod, 35 | isObjectProperty, 36 | objectExpression, 37 | objectMethod, 38 | blockStatement, 39 | returnStatement, 40 | TSTypeAnnotation, 41 | tsAsExpression, 42 | tsAnyKeyword, 43 | ifStatement, 44 | callExpression, 45 | memberExpression, 46 | unaryExpression, 47 | throwStatement, 48 | newExpression, 49 | stringLiteral, 50 | binaryExpression, 51 | spreadElement, 52 | tsLiteralType, 53 | isStatement, 54 | } from '@babel/types'; 55 | 56 | const addComment = require('@babel/types').addComment; 57 | 58 | function uniqueSymbol(name: string) { 59 | const id = identifier(name); 60 | const op = tsTypeOperator(tsSymbolKeyword()); 61 | op.operator = 'unique'; 62 | id.typeAnnotation = tsTypeAnnotation(op); 63 | const declaration = variableDeclaration('const', [variableDeclarator(id)]); 64 | declaration.declare = true; 65 | return declaration; 66 | } 67 | function declareClass( 68 | name: string, 69 | symbolReference: TSType, 70 | typeParamaters: TSTypeParameterDeclaration | null, 71 | ) { 72 | const properties = [ 73 | classProperty( 74 | identifier('__kind'), 75 | null, 76 | tsTypeAnnotation(symbolReference), 77 | ), 78 | ]; 79 | if (typeParamaters) { 80 | typeParamaters.params.forEach((p, i) => { 81 | if (p.name) { 82 | properties.push( 83 | classProperty( 84 | identifier(`__${p.name}`), 85 | null, 86 | tsTypeAnnotation(tsTypeReference(identifier(p.name))), 87 | ), 88 | ); 89 | } 90 | }); 91 | } 92 | properties.forEach(prop => { 93 | prop.accessibility = 'private'; 94 | }); 95 | const cls = classDeclaration(identifier(name), null, classBody(properties)); 96 | cls.declare = true; 97 | cls.typeParameters = typeParamaters; 98 | return cls; 99 | } 100 | function typeIdentifier(name: string, type: TSType) { 101 | const id = identifier(name); 102 | id.typeAnnotation = tsTypeAnnotation(type); 103 | return id; 104 | } 105 | 106 | class Placeholder { 107 | private _statements: Statement[]; 108 | constructor(original: Statement) { 109 | this._statements = [original]; 110 | } 111 | remove() { 112 | this._statements = []; 113 | } 114 | replace(statements: Statement[]) { 115 | this._statements = statements; 116 | } 117 | resolve(): Statement[] { 118 | return this._statements; 119 | } 120 | } 121 | class Type { 122 | private readonly _name: string; 123 | private readonly _placeholders: Placeholder[] = []; 124 | private _comments: Comment[] = []; 125 | private _baseType: TSTypeAliasDeclaration | undefined; 126 | private _methods: Array = []; 127 | private _export = false; 128 | constructor(name: string) { 129 | this._name = name; 130 | } 131 | private _placeholder(root: Statement) { 132 | if (isExportNamedDeclaration(root)) { 133 | this._export = true; 134 | } 135 | if (root.leadingComments) { 136 | this._comments.push(...root.leadingComments); 137 | } 138 | const placeholder = new Placeholder(root); 139 | this._placeholders.push(placeholder); 140 | return placeholder; 141 | } 142 | addMethods(expression: ObjectExpression | Identifier, root: Statement) { 143 | if (isObjectExpression(expression)) { 144 | this._methods.push(...expression.properties); 145 | } else { 146 | this._methods.push(spreadElement(expression)); 147 | } 148 | return this._placeholder(root); 149 | } 150 | addBaseType(type: TSTypeAliasDeclaration, root: Statement) { 151 | this._baseType = type; 152 | return this._placeholder(root); 153 | } 154 | private _hasMethod(name: string) { 155 | return this._methods.some( 156 | method => 157 | (isObjectMethod(method) || isObjectProperty(method)) && 158 | isIdentifier(method.key) && 159 | !method.computed && 160 | method.key.name === name, 161 | ); 162 | } 163 | private _addDefaultMethod( 164 | method: ObjectMethod, 165 | returnType: TSTypeAnnotation, 166 | typeParameters: TSTypeParameterDeclaration | null, 167 | ) { 168 | const key: Identifier = method.key; 169 | if (this._hasMethod(key.name)) { 170 | return; 171 | } 172 | method.returnType = returnType; 173 | if (typeParameters) { 174 | method.typeParameters = typeParameters; 175 | } 176 | this._methods.unshift(method); 177 | } 178 | private _hasComment(tag: string) { 179 | return this._comments.some(c => c.value.indexOf(tag) !== -1); 180 | } 181 | resolve() { 182 | const opaque = this._hasComment('@opaque'); 183 | const nominal = this._hasComment('@nominal'); 184 | 185 | if (this._baseType && (opaque || nominal)) { 186 | const placeholder = this._placeholders.pop()!; 187 | this._placeholders.forEach(p => p.remove()); 188 | 189 | const expose = this._hasComment('@expose'); 190 | const {typeParameters, typeAnnotation, id} = this._baseType; 191 | 192 | const typeParameterInstantiation = typeParameters 193 | ? tsTypeParameterInstantiation( 194 | typeParameters.params.map(p => 195 | tsTypeReference(identifier(p.name!)), 196 | ), 197 | ) 198 | : null; 199 | 200 | const BASE_NAME = this._name + '__Base'; 201 | const SYMBOL_NAME = this._name + '__Symbol'; 202 | const CLASS_NAME = this._name + '__Class'; 203 | 204 | const result: Statement[] = []; 205 | result.push( 206 | exportNamedDeclaration( 207 | tsTypeAliasDeclaration( 208 | identifier(BASE_NAME), 209 | typeParameters, 210 | typeAnnotation, 211 | ), 212 | [], 213 | ), 214 | ); 215 | const baseReference = tsTypeReference(identifier(BASE_NAME)); 216 | baseReference.typeParameters = typeParameterInstantiation; 217 | 218 | if (opaque) { 219 | result.push(uniqueSymbol(SYMBOL_NAME)); 220 | } 221 | const symbolReference = opaque 222 | ? tsTypeQuery(identifier(SYMBOL_NAME)) 223 | : tsLiteralType(stringLiteral(this._name)); 224 | 225 | result.push(declareClass(CLASS_NAME, symbolReference, typeParameters)); 226 | const classReference = tsTypeReference(identifier(CLASS_NAME)); 227 | classReference.typeParameters = typeParameterInstantiation; 228 | 229 | const intersection: TSType[] = []; 230 | if (expose) { 231 | intersection.push(baseReference); 232 | } 233 | intersection.push(classReference); 234 | 235 | const typeAlias = tsTypeAliasDeclaration( 236 | id, 237 | typeParameters, 238 | expose 239 | ? tsIntersectionType([baseReference, classReference]) 240 | : classReference, 241 | ); 242 | addComment( 243 | typeAlias, 244 | 'leading', 245 | '*\n' + 246 | [ 247 | expose ? ' * @expose' : null, 248 | opaque ? ' * @opaque' : ' * @nominal', 249 | ' * @base ' + BASE_NAME, 250 | ] 251 | .filter(Boolean) 252 | .join('\n') + 253 | '\n', 254 | ); 255 | result.push(typeAlias); 256 | const opaqueReference = tsTypeReference(id); 257 | opaqueReference.typeParameters = typeParameterInstantiation; 258 | 259 | this._addDefaultMethod( 260 | objectMethod( 261 | 'method', 262 | identifier('unsafeCast'), 263 | [typeIdentifier('value', baseReference)], 264 | blockStatement([ 265 | returnStatement( 266 | tsAsExpression(identifier('value'), tsAnyKeyword()), 267 | ), 268 | ]), 269 | ), 270 | tsTypeAnnotation(opaqueReference), 271 | typeParameters, 272 | ); 273 | this._addDefaultMethod( 274 | objectMethod( 275 | 'method', 276 | identifier('extract'), 277 | [typeIdentifier('value', opaqueReference)], 278 | blockStatement([ 279 | returnStatement( 280 | expose 281 | ? identifier('value') 282 | : tsAsExpression(identifier('value'), tsAnyKeyword()), 283 | ), 284 | ]), 285 | ), 286 | tsTypeAnnotation(baseReference), 287 | typeParameters, 288 | ); 289 | if (this._hasMethod('isValid')) { 290 | this._addDefaultMethod( 291 | objectMethod( 292 | 'method', 293 | identifier('cast'), 294 | [typeIdentifier('value', baseReference)], 295 | blockStatement([ 296 | ifStatement( 297 | unaryExpression( 298 | '!', 299 | callExpression(memberExpression(id, identifier('isValid')), [ 300 | identifier('value'), 301 | ]), 302 | ), 303 | blockStatement([ 304 | throwStatement( 305 | newExpression(identifier('TypeError'), [ 306 | binaryExpression( 307 | '+', 308 | stringLiteral(`Expected "${this._name}" but got: `), 309 | callExpression( 310 | memberExpression( 311 | identifier('JSON'), 312 | identifier('stringify'), 313 | ), 314 | [identifier('value')], 315 | ), 316 | ), 317 | ]), 318 | ), 319 | ]), 320 | ), 321 | returnStatement( 322 | tsAsExpression(identifier('value'), tsAnyKeyword()), 323 | ), 324 | ]), 325 | ), 326 | tsTypeAnnotation(opaqueReference), 327 | typeParameters, 328 | ); 329 | } 330 | result.push( 331 | variableDeclaration('const', [ 332 | variableDeclarator(id, objectExpression(this._methods)), 333 | ]), 334 | ); 335 | 336 | if (this._export) { 337 | result.push( 338 | exportNamedDeclaration(null, [ 339 | exportSpecifier(identifier(this._name), identifier(this._name)), 340 | ]), 341 | ); 342 | } 343 | 344 | placeholder.replace(result); 345 | } 346 | } 347 | } 348 | class Types { 349 | private _types = new Map(); 350 | private _typesList: Type[] = []; 351 | get(name: string) { 352 | const cached = this._types.get(name); 353 | if (cached) return cached; 354 | const fresh = new Type(name); 355 | this._types.set(name, fresh); 356 | this._typesList.push(fresh); 357 | return fresh; 358 | } 359 | resolve(statements: ReadonlyArray): Statement[] { 360 | this._typesList.forEach(type => type.resolve()); 361 | const result: Statement[] = []; 362 | statements.forEach(s => { 363 | if (s instanceof Placeholder) { 364 | result.push(...s.resolve()); 365 | } else { 366 | result.push(s); 367 | } 368 | }); 369 | return result; 370 | } 371 | } 372 | export default function tranformAST(file: File): File { 373 | const statements = file.program.body; 374 | const result: Array = []; 375 | const types = new Types(); 376 | 377 | function push(statement: Statement | Placeholder) { 378 | if (!(statement instanceof Placeholder)) { 379 | if (statement.trailingComments) { 380 | statement.trailingComments = statement.trailingComments.filter( 381 | comment => 382 | !/\@opaque/.test(comment.value) && 383 | !/\@nominal/.test(comment.value) && 384 | !/\@expose/.test(comment.value), 385 | ); 386 | } 387 | } 388 | result.push(statement); 389 | } 390 | function handle(statement: Statement, root: Statement = statement) { 391 | if (isTSTypeAliasDeclaration(statement)) { 392 | // id: Identifier; 393 | // typeParameters: TSTypeParameterDeclaration | null; 394 | // typeAnnotation: TSType; 395 | // declare: boolean | null; 396 | push(types.get(statement.id.name).addBaseType(statement, root)); 397 | } else if ( 398 | isVariableDeclaration(statement) && 399 | statement.declarations.length === 1 400 | ) { 401 | const declaration = statement.declarations[0]; 402 | if ( 403 | isIdentifier(declaration.id) && 404 | declaration.init && 405 | (isObjectExpression(declaration.init) || isIdentifier(declaration.init)) 406 | ) { 407 | push(types.get(declaration.id.name).addMethods(declaration.init, root)); 408 | } else { 409 | push(root); 410 | } 411 | } else if (isExportNamedDeclaration(statement) && statement.declaration) { 412 | handle(statement.declaration, statement); 413 | } else { 414 | push(root); 415 | } 416 | } 417 | 418 | statements.forEach(statement => { 419 | handle(statement); 420 | }); 421 | file.program.body = types.resolve(result); 422 | return file; 423 | } 424 | -------------------------------------------------------------------------------- /src/transformFile.ts: -------------------------------------------------------------------------------- 1 | import {readFile} from 'fs'; 2 | import transformString from './transformString'; 3 | const prettier = require('prettier'); 4 | 5 | export default async function transformFile( 6 | filename: string, 7 | ): Promise { 8 | let [output, prettierOptions] = await Promise.all([ 9 | new Promise((resolve, reject) => { 10 | readFile(filename, 'utf8', (err, data) => { 11 | if (err) reject(err); 12 | else 13 | resolve( 14 | /\@opaque/.test(data) || /\@nominal/.test(data) ? data : null, 15 | ); 16 | }); 17 | }).then(src => src && transformString(src)), 18 | prettier.resolveConfig(filename), 19 | ]); 20 | if (!output) { 21 | return output; 22 | } 23 | let previousOutput = null; 24 | let iterations = 0; 25 | prettierOptions = { 26 | ...prettierOptions, 27 | parser: 'typescript', 28 | filepath: filename, 29 | }; 30 | while (previousOutput !== output && iterations < 10) { 31 | iterations++; 32 | [previousOutput, output] = [ 33 | output, 34 | prettier.format(output, prettierOptions), 35 | ]; 36 | } 37 | return output; 38 | } 39 | -------------------------------------------------------------------------------- /src/transformString.ts: -------------------------------------------------------------------------------- 1 | import {readFile} from 'fs'; 2 | import parse from './parse'; 3 | import transform from './transformAST'; 4 | import generate from './generate'; 5 | 6 | export default function transformString( 7 | src: string, 8 | options?: {filename?: string}, 9 | ) { 10 | return ( 11 | '/**\n * @generated opaque-types\n */\n\n' + 12 | generate(transform(parse(src, options))) 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": true, 3 | "compilerOptions": { 4 | "declaration": true, 5 | "outDir": "lib", 6 | "strict": true, 7 | "lib": [ 8 | "es2018" 9 | ] 10 | } 11 | } -------------------------------------------------------------------------------- /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-beta.35": 6 | version "7.0.0-beta.51" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz#bd71d9b192af978df915829d39d4094456439a0c" 8 | dependencies: 9 | "@babel/highlight" "7.0.0-beta.51" 10 | 11 | "@babel/generator@^7.0.0-beta.51": 12 | version "7.0.0-beta.51" 13 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.51.tgz#6c7575ffde761d07485e04baedc0392c6d9e30f6" 14 | dependencies: 15 | "@babel/types" "7.0.0-beta.51" 16 | jsesc "^2.5.1" 17 | lodash "^4.17.5" 18 | source-map "^0.5.0" 19 | trim-right "^1.0.1" 20 | 21 | "@babel/highlight@7.0.0-beta.51": 22 | version "7.0.0-beta.51" 23 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.51.tgz#e8844ae25a1595ccfd42b89623b4376ca06d225d" 24 | dependencies: 25 | chalk "^2.0.0" 26 | esutils "^2.0.2" 27 | js-tokens "^3.0.0" 28 | 29 | "@babel/parser@^7.0.0-beta.51": 30 | version "7.0.0-beta.51" 31 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.51.tgz#27cec2df409df60af58270ed8f6aa55409ea86f6" 32 | 33 | "@babel/types@7.0.0-beta.51", "@babel/types@^7.0.0-beta.51": 34 | version "7.0.0-beta.51" 35 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.51.tgz#d802b7b543b5836c778aa691797abf00f3d97ea9" 36 | dependencies: 37 | esutils "^2.0.2" 38 | lodash "^4.17.5" 39 | to-fast-properties "^2.0.0" 40 | 41 | "@types/jest@^23.1.1": 42 | version "23.1.4" 43 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.1.4.tgz#71e1e2d08b1db742f479ee2795536ebc999a2419" 44 | 45 | "@types/node@^10.5.1": 46 | version "10.5.1" 47 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.1.tgz#d578446f4abff5c0b49ade9b4e5274f6badaadfc" 48 | 49 | "@types/node@^7.0.31": 50 | version "7.0.66" 51 | resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.66.tgz#3d1dc4d6f52e484e843806ff456379f7e6ad5553" 52 | 53 | abab@^1.0.4: 54 | version "1.0.4" 55 | resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" 56 | 57 | abbrev@1: 58 | version "1.1.1" 59 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 60 | 61 | acorn-globals@^4.1.0: 62 | version "4.1.0" 63 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" 64 | dependencies: 65 | acorn "^5.0.0" 66 | 67 | acorn@^5.0.0, acorn@^5.3.0: 68 | version "5.7.1" 69 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" 70 | 71 | ajv@^5.1.0: 72 | version "5.5.2" 73 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 74 | dependencies: 75 | co "^4.6.0" 76 | fast-deep-equal "^1.0.0" 77 | fast-json-stable-stringify "^2.0.0" 78 | json-schema-traverse "^0.3.0" 79 | 80 | align-text@^0.1.1, align-text@^0.1.3: 81 | version "0.1.4" 82 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 83 | dependencies: 84 | kind-of "^3.0.2" 85 | longest "^1.0.1" 86 | repeat-string "^1.5.2" 87 | 88 | amdefine@>=0.0.4: 89 | version "1.0.1" 90 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 91 | 92 | ansi-escapes@^3.0.0: 93 | version "3.1.0" 94 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" 95 | 96 | ansi-regex@^2.0.0: 97 | version "2.1.1" 98 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 99 | 100 | ansi-regex@^3.0.0: 101 | version "3.0.0" 102 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 103 | 104 | ansi-styles@^2.2.1: 105 | version "2.2.1" 106 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 107 | 108 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 109 | version "3.2.1" 110 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 111 | dependencies: 112 | color-convert "^1.9.0" 113 | 114 | anymatch@^1.3.0: 115 | version "1.3.2" 116 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" 117 | dependencies: 118 | micromatch "^2.1.5" 119 | normalize-path "^2.0.0" 120 | 121 | anymatch@^2.0.0: 122 | version "2.0.0" 123 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 124 | dependencies: 125 | micromatch "^3.1.4" 126 | normalize-path "^2.1.1" 127 | 128 | append-transform@^1.0.0: 129 | version "1.0.0" 130 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" 131 | dependencies: 132 | default-require-extensions "^2.0.0" 133 | 134 | aproba@^1.0.3: 135 | version "1.2.0" 136 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 137 | 138 | are-we-there-yet@~1.1.2: 139 | version "1.1.5" 140 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 141 | dependencies: 142 | delegates "^1.0.0" 143 | readable-stream "^2.0.6" 144 | 145 | argparse@^1.0.7: 146 | version "1.0.10" 147 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 148 | dependencies: 149 | sprintf-js "~1.0.2" 150 | 151 | arr-diff@^2.0.0: 152 | version "2.0.0" 153 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 154 | dependencies: 155 | arr-flatten "^1.0.1" 156 | 157 | arr-diff@^4.0.0: 158 | version "4.0.0" 159 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 160 | 161 | arr-flatten@^1.0.1, arr-flatten@^1.1.0: 162 | version "1.1.0" 163 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 164 | 165 | arr-union@^3.1.0: 166 | version "3.1.0" 167 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 168 | 169 | array-equal@^1.0.0: 170 | version "1.0.0" 171 | resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" 172 | 173 | array-filter@~0.0.0: 174 | version "0.0.1" 175 | resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" 176 | 177 | array-map@~0.0.0: 178 | version "0.0.0" 179 | resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" 180 | 181 | array-reduce@~0.0.0: 182 | version "0.0.0" 183 | resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" 184 | 185 | array-unique@^0.2.1: 186 | version "0.2.1" 187 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 188 | 189 | array-unique@^0.3.2: 190 | version "0.3.2" 191 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 192 | 193 | arrify@^1.0.1: 194 | version "1.0.1" 195 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 196 | 197 | asap@~1.0.0: 198 | version "1.0.0" 199 | resolved "https://registry.yarnpkg.com/asap/-/asap-1.0.0.tgz#b2a45da5fdfa20b0496fc3768cc27c12fa916a7d" 200 | 201 | asap@~2.0.3: 202 | version "2.0.6" 203 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 204 | 205 | asn1@~0.2.3: 206 | version "0.2.3" 207 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 208 | 209 | assert-plus@1.0.0, assert-plus@^1.0.0: 210 | version "1.0.0" 211 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 212 | 213 | assign-symbols@^1.0.0: 214 | version "1.0.0" 215 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 216 | 217 | astral-regex@^1.0.0: 218 | version "1.0.0" 219 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 220 | 221 | async-each@^1.0.0: 222 | version "1.0.1" 223 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 224 | 225 | async-limiter@~1.0.0: 226 | version "1.0.0" 227 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 228 | 229 | async@^1.4.0: 230 | version "1.5.2" 231 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 232 | 233 | async@^2.1.4: 234 | version "2.6.1" 235 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" 236 | dependencies: 237 | lodash "^4.17.10" 238 | 239 | asynckit@^0.4.0: 240 | version "0.4.0" 241 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 242 | 243 | atob@^2.1.1: 244 | version "2.1.1" 245 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" 246 | 247 | aws-sign2@~0.7.0: 248 | version "0.7.0" 249 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 250 | 251 | aws4@^1.6.0: 252 | version "1.7.0" 253 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" 254 | 255 | babel-code-frame@^6.26.0: 256 | version "6.26.0" 257 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 258 | dependencies: 259 | chalk "^1.1.3" 260 | esutils "^2.0.2" 261 | js-tokens "^3.0.2" 262 | 263 | babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3: 264 | version "6.26.3" 265 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" 266 | dependencies: 267 | babel-code-frame "^6.26.0" 268 | babel-generator "^6.26.0" 269 | babel-helpers "^6.24.1" 270 | babel-messages "^6.23.0" 271 | babel-register "^6.26.0" 272 | babel-runtime "^6.26.0" 273 | babel-template "^6.26.0" 274 | babel-traverse "^6.26.0" 275 | babel-types "^6.26.0" 276 | babylon "^6.18.0" 277 | convert-source-map "^1.5.1" 278 | debug "^2.6.9" 279 | json5 "^0.5.1" 280 | lodash "^4.17.4" 281 | minimatch "^3.0.4" 282 | path-is-absolute "^1.0.1" 283 | private "^0.1.8" 284 | slash "^1.0.0" 285 | source-map "^0.5.7" 286 | 287 | babel-generator@^6.18.0, babel-generator@^6.26.0: 288 | version "6.26.1" 289 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" 290 | dependencies: 291 | babel-messages "^6.23.0" 292 | babel-runtime "^6.26.0" 293 | babel-types "^6.26.0" 294 | detect-indent "^4.0.0" 295 | jsesc "^1.3.0" 296 | lodash "^4.17.4" 297 | source-map "^0.5.7" 298 | trim-right "^1.0.1" 299 | 300 | babel-helpers@^6.24.1: 301 | version "6.24.1" 302 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" 303 | dependencies: 304 | babel-runtime "^6.22.0" 305 | babel-template "^6.24.1" 306 | 307 | babel-jest@^23.2.0: 308 | version "23.2.0" 309 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.2.0.tgz#14a9d6a3f4122dfea6069d37085adf26a53a4dba" 310 | dependencies: 311 | babel-plugin-istanbul "^4.1.6" 312 | babel-preset-jest "^23.2.0" 313 | 314 | babel-messages@^6.23.0: 315 | version "6.23.0" 316 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" 317 | dependencies: 318 | babel-runtime "^6.22.0" 319 | 320 | babel-plugin-istanbul@^4.1.6: 321 | version "4.1.6" 322 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" 323 | dependencies: 324 | babel-plugin-syntax-object-rest-spread "^6.13.0" 325 | find-up "^2.1.0" 326 | istanbul-lib-instrument "^1.10.1" 327 | test-exclude "^4.2.1" 328 | 329 | babel-plugin-jest-hoist@^22.4.4: 330 | version "22.4.4" 331 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz#b9851906eab34c7bf6f8c895a2b08bea1a844c0b" 332 | 333 | babel-plugin-jest-hoist@^23.2.0: 334 | version "23.2.0" 335 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" 336 | 337 | babel-plugin-syntax-object-rest-spread@^6.13.0: 338 | version "6.13.0" 339 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" 340 | 341 | babel-plugin-transform-es2015-modules-commonjs@^6.26.2: 342 | version "6.26.2" 343 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" 344 | dependencies: 345 | babel-plugin-transform-strict-mode "^6.24.1" 346 | babel-runtime "^6.26.0" 347 | babel-template "^6.26.0" 348 | babel-types "^6.26.0" 349 | 350 | babel-plugin-transform-strict-mode@^6.24.1: 351 | version "6.24.1" 352 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" 353 | dependencies: 354 | babel-runtime "^6.22.0" 355 | babel-types "^6.24.1" 356 | 357 | babel-preset-jest@^22.4.3: 358 | version "22.4.4" 359 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz#ec9fbd8bcd7dfd24b8b5320e0e688013235b7c39" 360 | dependencies: 361 | babel-plugin-jest-hoist "^22.4.4" 362 | babel-plugin-syntax-object-rest-spread "^6.13.0" 363 | 364 | babel-preset-jest@^23.2.0: 365 | version "23.2.0" 366 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" 367 | dependencies: 368 | babel-plugin-jest-hoist "^23.2.0" 369 | babel-plugin-syntax-object-rest-spread "^6.13.0" 370 | 371 | babel-register@^6.26.0: 372 | version "6.26.0" 373 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" 374 | dependencies: 375 | babel-core "^6.26.0" 376 | babel-runtime "^6.26.0" 377 | core-js "^2.5.0" 378 | home-or-tmp "^2.0.0" 379 | lodash "^4.17.4" 380 | mkdirp "^0.5.1" 381 | source-map-support "^0.4.15" 382 | 383 | babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: 384 | version "6.26.0" 385 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 386 | dependencies: 387 | core-js "^2.4.0" 388 | regenerator-runtime "^0.11.0" 389 | 390 | babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: 391 | version "6.26.0" 392 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" 393 | dependencies: 394 | babel-runtime "^6.26.0" 395 | babel-traverse "^6.26.0" 396 | babel-types "^6.26.0" 397 | babylon "^6.18.0" 398 | lodash "^4.17.4" 399 | 400 | babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: 401 | version "6.26.0" 402 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" 403 | dependencies: 404 | babel-code-frame "^6.26.0" 405 | babel-messages "^6.23.0" 406 | babel-runtime "^6.26.0" 407 | babel-types "^6.26.0" 408 | babylon "^6.18.0" 409 | debug "^2.6.8" 410 | globals "^9.18.0" 411 | invariant "^2.2.2" 412 | lodash "^4.17.4" 413 | 414 | babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.24.1, babel-types@^6.26.0: 415 | version "6.26.0" 416 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" 417 | dependencies: 418 | babel-runtime "^6.26.0" 419 | esutils "^2.0.2" 420 | lodash "^4.17.4" 421 | to-fast-properties "^1.0.3" 422 | 423 | babylon@^6.18.0: 424 | version "6.18.0" 425 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" 426 | 427 | balanced-match@^1.0.0: 428 | version "1.0.0" 429 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 430 | 431 | barrage@^1.1.0: 432 | version "1.1.0" 433 | resolved "https://registry.yarnpkg.com/barrage/-/barrage-1.1.0.tgz#6f5384765c463f7718012f160dccf033fc6fc394" 434 | dependencies: 435 | promise "^6.0.0" 436 | 437 | base@^0.11.1: 438 | version "0.11.2" 439 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 440 | dependencies: 441 | cache-base "^1.0.1" 442 | class-utils "^0.3.5" 443 | component-emitter "^1.2.1" 444 | define-property "^1.0.0" 445 | isobject "^3.0.1" 446 | mixin-deep "^1.2.0" 447 | pascalcase "^0.1.1" 448 | 449 | bcrypt-pbkdf@^1.0.0: 450 | version "1.0.2" 451 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 452 | dependencies: 453 | tweetnacl "^0.14.3" 454 | 455 | binary-extensions@^1.0.0: 456 | version "1.11.0" 457 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" 458 | 459 | brace-expansion@^1.1.7: 460 | version "1.1.11" 461 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 462 | dependencies: 463 | balanced-match "^1.0.0" 464 | concat-map "0.0.1" 465 | 466 | braces@^1.8.2: 467 | version "1.8.5" 468 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 469 | dependencies: 470 | expand-range "^1.8.1" 471 | preserve "^0.2.0" 472 | repeat-element "^1.1.2" 473 | 474 | braces@^2.3.1: 475 | version "2.3.2" 476 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 477 | dependencies: 478 | arr-flatten "^1.1.0" 479 | array-unique "^0.3.2" 480 | extend-shallow "^2.0.1" 481 | fill-range "^4.0.0" 482 | isobject "^3.0.1" 483 | repeat-element "^1.1.2" 484 | snapdragon "^0.8.1" 485 | snapdragon-node "^2.0.1" 486 | split-string "^3.0.2" 487 | to-regex "^3.0.1" 488 | 489 | browser-process-hrtime@^0.1.2: 490 | version "0.1.2" 491 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" 492 | 493 | browser-resolve@^1.11.2, browser-resolve@^1.11.3: 494 | version "1.11.3" 495 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" 496 | dependencies: 497 | resolve "1.1.7" 498 | 499 | bser@^2.0.0: 500 | version "2.0.0" 501 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" 502 | dependencies: 503 | node-int64 "^0.4.0" 504 | 505 | buffer-from@^1.0.0: 506 | version "1.1.0" 507 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" 508 | 509 | builtin-modules@^1.0.0: 510 | version "1.1.1" 511 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 512 | 513 | cache-base@^1.0.1: 514 | version "1.0.1" 515 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 516 | dependencies: 517 | collection-visit "^1.0.0" 518 | component-emitter "^1.2.1" 519 | get-value "^2.0.6" 520 | has-value "^1.0.0" 521 | isobject "^3.0.1" 522 | set-value "^2.0.0" 523 | to-object-path "^0.3.0" 524 | union-value "^1.0.0" 525 | unset-value "^1.0.0" 526 | 527 | callsites@^2.0.0: 528 | version "2.0.0" 529 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" 530 | 531 | camelcase@^1.0.2: 532 | version "1.2.1" 533 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 534 | 535 | camelcase@^4.1.0: 536 | version "4.1.0" 537 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 538 | 539 | capture-exit@^1.2.0: 540 | version "1.2.0" 541 | resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" 542 | dependencies: 543 | rsvp "^3.3.3" 544 | 545 | caseless@~0.12.0: 546 | version "0.12.0" 547 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 548 | 549 | center-align@^0.1.1: 550 | version "0.1.3" 551 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 552 | dependencies: 553 | align-text "^0.1.3" 554 | lazy-cache "^1.0.3" 555 | 556 | chalk@^1.1.3: 557 | version "1.1.3" 558 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 559 | dependencies: 560 | ansi-styles "^2.2.1" 561 | escape-string-regexp "^1.0.2" 562 | has-ansi "^2.0.0" 563 | strip-ansi "^3.0.0" 564 | supports-color "^2.0.0" 565 | 566 | chalk@^2.0.0, chalk@^2.0.1: 567 | version "2.4.1" 568 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" 569 | dependencies: 570 | ansi-styles "^3.2.1" 571 | escape-string-regexp "^1.0.5" 572 | supports-color "^5.3.0" 573 | 574 | chokidar@^1.6.0: 575 | version "1.7.0" 576 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" 577 | dependencies: 578 | anymatch "^1.3.0" 579 | async-each "^1.0.0" 580 | glob-parent "^2.0.0" 581 | inherits "^2.0.1" 582 | is-binary-path "^1.0.0" 583 | is-glob "^2.0.0" 584 | path-is-absolute "^1.0.0" 585 | readdirp "^2.0.0" 586 | optionalDependencies: 587 | fsevents "^1.0.0" 588 | 589 | chownr@^1.0.1: 590 | version "1.0.1" 591 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" 592 | 593 | ci-info@^1.0.0: 594 | version "1.1.3" 595 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" 596 | 597 | class-utils@^0.3.5: 598 | version "0.3.6" 599 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 600 | dependencies: 601 | arr-union "^3.1.0" 602 | define-property "^0.2.5" 603 | isobject "^3.0.0" 604 | static-extend "^0.1.1" 605 | 606 | cliui@^2.1.0: 607 | version "2.1.0" 608 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 609 | dependencies: 610 | center-align "^0.1.1" 611 | right-align "^0.1.1" 612 | wordwrap "0.0.2" 613 | 614 | cliui@^4.0.0: 615 | version "4.1.0" 616 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" 617 | dependencies: 618 | string-width "^2.1.1" 619 | strip-ansi "^4.0.0" 620 | wrap-ansi "^2.0.0" 621 | 622 | clorox@^1.0.3: 623 | version "1.0.3" 624 | resolved "https://registry.yarnpkg.com/clorox/-/clorox-1.0.3.tgz#6fa63653f280c33d69f548fb14d239ddcfa1590d" 625 | 626 | co@^4.6.0: 627 | version "4.6.0" 628 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 629 | 630 | code-point-at@^1.0.0: 631 | version "1.1.0" 632 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 633 | 634 | collection-visit@^1.0.0: 635 | version "1.0.0" 636 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 637 | dependencies: 638 | map-visit "^1.0.0" 639 | object-visit "^1.0.0" 640 | 641 | color-convert@^1.9.0: 642 | version "1.9.2" 643 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" 644 | dependencies: 645 | color-name "1.1.1" 646 | 647 | color-name@1.1.1: 648 | version "1.1.1" 649 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" 650 | 651 | combined-stream@1.0.6, combined-stream@~1.0.5: 652 | version "1.0.6" 653 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" 654 | dependencies: 655 | delayed-stream "~1.0.0" 656 | 657 | compare-versions@^3.1.0: 658 | version "3.3.0" 659 | resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3" 660 | 661 | component-emitter@^1.2.1: 662 | version "1.2.1" 663 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 664 | 665 | concat-map@0.0.1: 666 | version "0.0.1" 667 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 668 | 669 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 670 | version "1.1.0" 671 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 672 | 673 | convert-source-map@^1.4.0, convert-source-map@^1.5.1: 674 | version "1.5.1" 675 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" 676 | 677 | copy-descriptor@^0.1.0: 678 | version "0.1.1" 679 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 680 | 681 | core-js@^2.4.0, core-js@^2.5.0: 682 | version "2.5.7" 683 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" 684 | 685 | core-util-is@1.0.2, core-util-is@~1.0.0: 686 | version "1.0.2" 687 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 688 | 689 | cpx@^1.5.0: 690 | version "1.5.0" 691 | resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" 692 | dependencies: 693 | babel-runtime "^6.9.2" 694 | chokidar "^1.6.0" 695 | duplexer "^0.1.1" 696 | glob "^7.0.5" 697 | glob2base "^0.0.12" 698 | minimatch "^3.0.2" 699 | mkdirp "^0.5.1" 700 | resolve "^1.1.7" 701 | safe-buffer "^5.0.1" 702 | shell-quote "^1.6.1" 703 | subarg "^1.0.0" 704 | 705 | cross-spawn@^5.0.1: 706 | version "5.1.0" 707 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 708 | dependencies: 709 | lru-cache "^4.0.1" 710 | shebang-command "^1.2.0" 711 | which "^1.2.9" 712 | 713 | cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": 714 | version "0.3.4" 715 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" 716 | 717 | "cssstyle@>= 0.3.1 < 0.4.0": 718 | version "0.3.1" 719 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.3.1.tgz#6da9b4cff1bc5d716e6e5fe8e04fcb1b50a49adf" 720 | dependencies: 721 | cssom "0.3.x" 722 | 723 | dashdash@^1.12.0: 724 | version "1.14.1" 725 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 726 | dependencies: 727 | assert-plus "^1.0.0" 728 | 729 | data-urls@^1.0.0: 730 | version "1.0.0" 731 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.0.tgz#24802de4e81c298ea8a9388bb0d8e461c774684f" 732 | dependencies: 733 | abab "^1.0.4" 734 | whatwg-mimetype "^2.0.0" 735 | whatwg-url "^6.4.0" 736 | 737 | debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: 738 | version "2.6.9" 739 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 740 | dependencies: 741 | ms "2.0.0" 742 | 743 | debug@^3.1.0: 744 | version "3.1.0" 745 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 746 | dependencies: 747 | ms "2.0.0" 748 | 749 | decamelize@^1.0.0, decamelize@^1.1.1: 750 | version "1.2.0" 751 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 752 | 753 | decode-uri-component@^0.2.0: 754 | version "0.2.0" 755 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 756 | 757 | deep-extend@^0.6.0: 758 | version "0.6.0" 759 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 760 | 761 | deep-is@~0.1.3: 762 | version "0.1.3" 763 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 764 | 765 | default-require-extensions@^2.0.0: 766 | version "2.0.0" 767 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" 768 | dependencies: 769 | strip-bom "^3.0.0" 770 | 771 | define-properties@^1.1.2: 772 | version "1.1.2" 773 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 774 | dependencies: 775 | foreach "^2.0.5" 776 | object-keys "^1.0.8" 777 | 778 | define-property@^0.2.5: 779 | version "0.2.5" 780 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 781 | dependencies: 782 | is-descriptor "^0.1.0" 783 | 784 | define-property@^1.0.0: 785 | version "1.0.0" 786 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 787 | dependencies: 788 | is-descriptor "^1.0.0" 789 | 790 | define-property@^2.0.2: 791 | version "2.0.2" 792 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 793 | dependencies: 794 | is-descriptor "^1.0.2" 795 | isobject "^3.0.1" 796 | 797 | delayed-stream@~1.0.0: 798 | version "1.0.0" 799 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 800 | 801 | delegates@^1.0.0: 802 | version "1.0.0" 803 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 804 | 805 | detect-indent@^4.0.0: 806 | version "4.0.0" 807 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 808 | dependencies: 809 | repeating "^2.0.0" 810 | 811 | detect-libc@^1.0.2: 812 | version "1.0.3" 813 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 814 | 815 | detect-newline@^2.1.0: 816 | version "2.1.0" 817 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" 818 | 819 | diff@^3.2.0: 820 | version "3.5.0" 821 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 822 | 823 | domexception@^1.0.0: 824 | version "1.0.1" 825 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" 826 | dependencies: 827 | webidl-conversions "^4.0.2" 828 | 829 | duplexer@^0.1.1: 830 | version "0.1.1" 831 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" 832 | 833 | ecc-jsbn@~0.1.1: 834 | version "0.1.1" 835 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 836 | dependencies: 837 | jsbn "~0.1.0" 838 | 839 | error-ex@^1.2.0: 840 | version "1.3.2" 841 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 842 | dependencies: 843 | is-arrayish "^0.2.1" 844 | 845 | es-abstract@^1.5.1: 846 | version "1.12.0" 847 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" 848 | dependencies: 849 | es-to-primitive "^1.1.1" 850 | function-bind "^1.1.1" 851 | has "^1.0.1" 852 | is-callable "^1.1.3" 853 | is-regex "^1.0.4" 854 | 855 | es-to-primitive@^1.1.1: 856 | version "1.1.1" 857 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 858 | dependencies: 859 | is-callable "^1.1.1" 860 | is-date-object "^1.0.1" 861 | is-symbol "^1.0.1" 862 | 863 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 864 | version "1.0.5" 865 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 866 | 867 | escodegen@^1.9.0: 868 | version "1.10.0" 869 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.10.0.tgz#f647395de22519fbd0d928ffcf1d17e0dec2603e" 870 | dependencies: 871 | esprima "^3.1.3" 872 | estraverse "^4.2.0" 873 | esutils "^2.0.2" 874 | optionator "^0.8.1" 875 | optionalDependencies: 876 | source-map "~0.6.1" 877 | 878 | esprima@^3.1.3: 879 | version "3.1.3" 880 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 881 | 882 | esprima@^4.0.0: 883 | version "4.0.0" 884 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" 885 | 886 | estraverse@^4.2.0: 887 | version "4.2.0" 888 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 889 | 890 | esutils@^2.0.2: 891 | version "2.0.2" 892 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 893 | 894 | exec-sh@^0.2.0: 895 | version "0.2.2" 896 | resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" 897 | dependencies: 898 | merge "^1.2.0" 899 | 900 | execa@^0.7.0: 901 | version "0.7.0" 902 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 903 | dependencies: 904 | cross-spawn "^5.0.1" 905 | get-stream "^3.0.0" 906 | is-stream "^1.1.0" 907 | npm-run-path "^2.0.0" 908 | p-finally "^1.0.0" 909 | signal-exit "^3.0.0" 910 | strip-eof "^1.0.0" 911 | 912 | exit@^0.1.2: 913 | version "0.1.2" 914 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 915 | 916 | expand-brackets@^0.1.4: 917 | version "0.1.5" 918 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 919 | dependencies: 920 | is-posix-bracket "^0.1.0" 921 | 922 | expand-brackets@^2.1.4: 923 | version "2.1.4" 924 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 925 | dependencies: 926 | debug "^2.3.3" 927 | define-property "^0.2.5" 928 | extend-shallow "^2.0.1" 929 | posix-character-classes "^0.1.0" 930 | regex-not "^1.0.0" 931 | snapdragon "^0.8.1" 932 | to-regex "^3.0.1" 933 | 934 | expand-range@^1.8.1: 935 | version "1.8.2" 936 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 937 | dependencies: 938 | fill-range "^2.1.0" 939 | 940 | expect@^22.4.0: 941 | version "22.4.3" 942 | resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" 943 | dependencies: 944 | ansi-styles "^3.2.0" 945 | jest-diff "^22.4.3" 946 | jest-get-type "^22.4.3" 947 | jest-matcher-utils "^22.4.3" 948 | jest-message-util "^22.4.3" 949 | jest-regex-util "^22.4.3" 950 | 951 | expect@^23.3.0: 952 | version "23.3.0" 953 | resolved "https://registry.yarnpkg.com/expect/-/expect-23.3.0.tgz#ecb051adcbdc40ac4db576c16067f12fdb13cc61" 954 | dependencies: 955 | ansi-styles "^3.2.0" 956 | jest-diff "^23.2.0" 957 | jest-get-type "^22.1.0" 958 | jest-matcher-utils "^23.2.0" 959 | jest-message-util "^23.3.0" 960 | jest-regex-util "^23.3.0" 961 | 962 | extend-shallow@^2.0.1: 963 | version "2.0.1" 964 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 965 | dependencies: 966 | is-extendable "^0.1.0" 967 | 968 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 969 | version "3.0.2" 970 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 971 | dependencies: 972 | assign-symbols "^1.0.0" 973 | is-extendable "^1.0.1" 974 | 975 | extend@~3.0.1: 976 | version "3.0.1" 977 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 978 | 979 | extglob@^0.3.1: 980 | version "0.3.2" 981 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 982 | dependencies: 983 | is-extglob "^1.0.0" 984 | 985 | extglob@^2.0.4: 986 | version "2.0.4" 987 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 988 | dependencies: 989 | array-unique "^0.3.2" 990 | define-property "^1.0.0" 991 | expand-brackets "^2.1.4" 992 | extend-shallow "^2.0.1" 993 | fragment-cache "^0.2.1" 994 | regex-not "^1.0.0" 995 | snapdragon "^0.8.1" 996 | to-regex "^3.0.1" 997 | 998 | extsprintf@1.3.0: 999 | version "1.3.0" 1000 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 1001 | 1002 | extsprintf@^1.2.0: 1003 | version "1.4.0" 1004 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 1005 | 1006 | fast-deep-equal@^1.0.0: 1007 | version "1.1.0" 1008 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" 1009 | 1010 | fast-json-stable-stringify@^2.0.0: 1011 | version "2.0.0" 1012 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 1013 | 1014 | fast-levenshtein@~2.0.4: 1015 | version "2.0.6" 1016 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1017 | 1018 | fb-watchman@^2.0.0: 1019 | version "2.0.0" 1020 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" 1021 | dependencies: 1022 | bser "^2.0.0" 1023 | 1024 | filename-regex@^2.0.0: 1025 | version "2.0.1" 1026 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 1027 | 1028 | fileset@^2.0.2: 1029 | version "2.0.3" 1030 | resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" 1031 | dependencies: 1032 | glob "^7.0.3" 1033 | minimatch "^3.0.3" 1034 | 1035 | fill-range@^2.1.0: 1036 | version "2.2.4" 1037 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" 1038 | dependencies: 1039 | is-number "^2.1.0" 1040 | isobject "^2.0.0" 1041 | randomatic "^3.0.0" 1042 | repeat-element "^1.1.2" 1043 | repeat-string "^1.5.2" 1044 | 1045 | fill-range@^4.0.0: 1046 | version "4.0.0" 1047 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 1048 | dependencies: 1049 | extend-shallow "^2.0.1" 1050 | is-number "^3.0.0" 1051 | repeat-string "^1.6.1" 1052 | to-regex-range "^2.1.0" 1053 | 1054 | find-index@^0.1.1: 1055 | version "0.1.1" 1056 | resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" 1057 | 1058 | find-up@^1.0.0: 1059 | version "1.1.2" 1060 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 1061 | dependencies: 1062 | path-exists "^2.0.0" 1063 | pinkie-promise "^2.0.0" 1064 | 1065 | find-up@^2.1.0: 1066 | version "2.1.0" 1067 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 1068 | dependencies: 1069 | locate-path "^2.0.0" 1070 | 1071 | for-in@^1.0.1, for-in@^1.0.2: 1072 | version "1.0.2" 1073 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 1074 | 1075 | for-own@^0.1.4: 1076 | version "0.1.5" 1077 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 1078 | dependencies: 1079 | for-in "^1.0.1" 1080 | 1081 | foreach@^2.0.5: 1082 | version "2.0.5" 1083 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 1084 | 1085 | forever-agent@~0.6.1: 1086 | version "0.6.1" 1087 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 1088 | 1089 | form-data@~2.3.1: 1090 | version "2.3.2" 1091 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" 1092 | dependencies: 1093 | asynckit "^0.4.0" 1094 | combined-stream "1.0.6" 1095 | mime-types "^2.1.12" 1096 | 1097 | fragment-cache@^0.2.1: 1098 | version "0.2.1" 1099 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 1100 | dependencies: 1101 | map-cache "^0.2.2" 1102 | 1103 | fs-extra@6.0.0: 1104 | version "6.0.0" 1105 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.0.tgz#0f0afb290bb3deb87978da816fcd3c7797f3a817" 1106 | dependencies: 1107 | graceful-fs "^4.1.2" 1108 | jsonfile "^4.0.0" 1109 | universalify "^0.1.0" 1110 | 1111 | fs-minipass@^1.2.5: 1112 | version "1.2.5" 1113 | resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" 1114 | dependencies: 1115 | minipass "^2.2.1" 1116 | 1117 | fs.realpath@^1.0.0: 1118 | version "1.0.0" 1119 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1120 | 1121 | fsevents@^1.0.0, fsevents@^1.2.3: 1122 | version "1.2.4" 1123 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" 1124 | dependencies: 1125 | nan "^2.9.2" 1126 | node-pre-gyp "^0.10.0" 1127 | 1128 | function-bind@^1.1.1: 1129 | version "1.1.1" 1130 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1131 | 1132 | gauge@~2.7.3: 1133 | version "2.7.4" 1134 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1135 | dependencies: 1136 | aproba "^1.0.3" 1137 | console-control-strings "^1.0.0" 1138 | has-unicode "^2.0.0" 1139 | object-assign "^4.1.0" 1140 | signal-exit "^3.0.0" 1141 | string-width "^1.0.1" 1142 | strip-ansi "^3.0.1" 1143 | wide-align "^1.1.0" 1144 | 1145 | get-caller-file@^1.0.1: 1146 | version "1.0.2" 1147 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 1148 | 1149 | get-stream@^3.0.0: 1150 | version "3.0.0" 1151 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 1152 | 1153 | get-value@^2.0.3, get-value@^2.0.6: 1154 | version "2.0.6" 1155 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1156 | 1157 | getpass@^0.1.1: 1158 | version "0.1.7" 1159 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 1160 | dependencies: 1161 | assert-plus "^1.0.0" 1162 | 1163 | glob-base@^0.3.0: 1164 | version "0.3.0" 1165 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1166 | dependencies: 1167 | glob-parent "^2.0.0" 1168 | is-glob "^2.0.0" 1169 | 1170 | glob-parent@^2.0.0: 1171 | version "2.0.0" 1172 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1173 | dependencies: 1174 | is-glob "^2.0.0" 1175 | 1176 | glob2base@^0.0.12: 1177 | version "0.0.12" 1178 | resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" 1179 | dependencies: 1180 | find-index "^0.1.1" 1181 | 1182 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: 1183 | version "7.1.2" 1184 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 1185 | dependencies: 1186 | fs.realpath "^1.0.0" 1187 | inflight "^1.0.4" 1188 | inherits "2" 1189 | minimatch "^3.0.4" 1190 | once "^1.3.0" 1191 | path-is-absolute "^1.0.0" 1192 | 1193 | globals@^9.18.0: 1194 | version "9.18.0" 1195 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" 1196 | 1197 | graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: 1198 | version "4.1.11" 1199 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1200 | 1201 | growly@^1.3.0: 1202 | version "1.3.0" 1203 | resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" 1204 | 1205 | handlebars@^4.0.3: 1206 | version "4.0.11" 1207 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" 1208 | dependencies: 1209 | async "^1.4.0" 1210 | optimist "^0.6.1" 1211 | source-map "^0.4.4" 1212 | optionalDependencies: 1213 | uglify-js "^2.6" 1214 | 1215 | har-schema@^2.0.0: 1216 | version "2.0.0" 1217 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 1218 | 1219 | har-validator@~5.0.3: 1220 | version "5.0.3" 1221 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" 1222 | dependencies: 1223 | ajv "^5.1.0" 1224 | har-schema "^2.0.0" 1225 | 1226 | has-ansi@^2.0.0: 1227 | version "2.0.0" 1228 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1229 | dependencies: 1230 | ansi-regex "^2.0.0" 1231 | 1232 | has-flag@^1.0.0: 1233 | version "1.0.0" 1234 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1235 | 1236 | has-flag@^3.0.0: 1237 | version "3.0.0" 1238 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1239 | 1240 | has-unicode@^2.0.0: 1241 | version "2.0.1" 1242 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1243 | 1244 | has-value@^0.3.1: 1245 | version "0.3.1" 1246 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1247 | dependencies: 1248 | get-value "^2.0.3" 1249 | has-values "^0.1.4" 1250 | isobject "^2.0.0" 1251 | 1252 | has-value@^1.0.0: 1253 | version "1.0.0" 1254 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1255 | dependencies: 1256 | get-value "^2.0.6" 1257 | has-values "^1.0.0" 1258 | isobject "^3.0.0" 1259 | 1260 | has-values@^0.1.4: 1261 | version "0.1.4" 1262 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1263 | 1264 | has-values@^1.0.0: 1265 | version "1.0.0" 1266 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1267 | dependencies: 1268 | is-number "^3.0.0" 1269 | kind-of "^4.0.0" 1270 | 1271 | has@^1.0.1: 1272 | version "1.0.3" 1273 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1274 | dependencies: 1275 | function-bind "^1.1.1" 1276 | 1277 | home-or-tmp@^2.0.0: 1278 | version "2.0.0" 1279 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" 1280 | dependencies: 1281 | os-homedir "^1.0.0" 1282 | os-tmpdir "^1.0.1" 1283 | 1284 | hosted-git-info@^2.1.4: 1285 | version "2.6.1" 1286 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.1.tgz#6e4cee78b01bb849dcf93527708c69fdbee410df" 1287 | 1288 | html-encoding-sniffer@^1.0.2: 1289 | version "1.0.2" 1290 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" 1291 | dependencies: 1292 | whatwg-encoding "^1.0.1" 1293 | 1294 | http-signature@~1.2.0: 1295 | version "1.2.0" 1296 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 1297 | dependencies: 1298 | assert-plus "^1.0.0" 1299 | jsprim "^1.2.2" 1300 | sshpk "^1.7.0" 1301 | 1302 | iconv-lite@0.4.19: 1303 | version "0.4.19" 1304 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 1305 | 1306 | iconv-lite@^0.4.4: 1307 | version "0.4.23" 1308 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" 1309 | dependencies: 1310 | safer-buffer ">= 2.1.2 < 3" 1311 | 1312 | ignore-walk@^3.0.1: 1313 | version "3.0.1" 1314 | resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" 1315 | dependencies: 1316 | minimatch "^3.0.4" 1317 | 1318 | import-local@^1.0.0: 1319 | version "1.0.0" 1320 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" 1321 | dependencies: 1322 | pkg-dir "^2.0.0" 1323 | resolve-cwd "^2.0.0" 1324 | 1325 | imurmurhash@^0.1.4: 1326 | version "0.1.4" 1327 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1328 | 1329 | inflight@^1.0.4: 1330 | version "1.0.6" 1331 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1332 | dependencies: 1333 | once "^1.3.0" 1334 | wrappy "1" 1335 | 1336 | inherits@2, inherits@^2.0.1, inherits@~2.0.3: 1337 | version "2.0.3" 1338 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1339 | 1340 | ini@~1.3.0: 1341 | version "1.3.5" 1342 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1343 | 1344 | invariant@^2.2.2: 1345 | version "2.2.4" 1346 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" 1347 | dependencies: 1348 | loose-envify "^1.0.0" 1349 | 1350 | invert-kv@^1.0.0: 1351 | version "1.0.0" 1352 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1353 | 1354 | is-accessor-descriptor@^0.1.6: 1355 | version "0.1.6" 1356 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1357 | dependencies: 1358 | kind-of "^3.0.2" 1359 | 1360 | is-accessor-descriptor@^1.0.0: 1361 | version "1.0.0" 1362 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1363 | dependencies: 1364 | kind-of "^6.0.0" 1365 | 1366 | is-arrayish@^0.2.1: 1367 | version "0.2.1" 1368 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1369 | 1370 | is-binary-path@^1.0.0: 1371 | version "1.0.1" 1372 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1373 | dependencies: 1374 | binary-extensions "^1.0.0" 1375 | 1376 | is-buffer@^1.1.5: 1377 | version "1.1.6" 1378 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1379 | 1380 | is-builtin-module@^1.0.0: 1381 | version "1.0.0" 1382 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1383 | dependencies: 1384 | builtin-modules "^1.0.0" 1385 | 1386 | is-callable@^1.1.1, is-callable@^1.1.3: 1387 | version "1.1.4" 1388 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 1389 | 1390 | is-ci@^1.0.10: 1391 | version "1.1.0" 1392 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" 1393 | dependencies: 1394 | ci-info "^1.0.0" 1395 | 1396 | is-data-descriptor@^0.1.4: 1397 | version "0.1.4" 1398 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1399 | dependencies: 1400 | kind-of "^3.0.2" 1401 | 1402 | is-data-descriptor@^1.0.0: 1403 | version "1.0.0" 1404 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1405 | dependencies: 1406 | kind-of "^6.0.0" 1407 | 1408 | is-date-object@^1.0.1: 1409 | version "1.0.1" 1410 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 1411 | 1412 | is-descriptor@^0.1.0: 1413 | version "0.1.6" 1414 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1415 | dependencies: 1416 | is-accessor-descriptor "^0.1.6" 1417 | is-data-descriptor "^0.1.4" 1418 | kind-of "^5.0.0" 1419 | 1420 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1421 | version "1.0.2" 1422 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1423 | dependencies: 1424 | is-accessor-descriptor "^1.0.0" 1425 | is-data-descriptor "^1.0.0" 1426 | kind-of "^6.0.2" 1427 | 1428 | is-dotfile@^1.0.0: 1429 | version "1.0.3" 1430 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 1431 | 1432 | is-equal-shallow@^0.1.3: 1433 | version "0.1.3" 1434 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1435 | dependencies: 1436 | is-primitive "^2.0.0" 1437 | 1438 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1439 | version "0.1.1" 1440 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1441 | 1442 | is-extendable@^1.0.1: 1443 | version "1.0.1" 1444 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1445 | dependencies: 1446 | is-plain-object "^2.0.4" 1447 | 1448 | is-extglob@^1.0.0: 1449 | version "1.0.0" 1450 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1451 | 1452 | is-finite@^1.0.0: 1453 | version "1.0.2" 1454 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 1455 | dependencies: 1456 | number-is-nan "^1.0.0" 1457 | 1458 | is-fullwidth-code-point@^1.0.0: 1459 | version "1.0.0" 1460 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1461 | dependencies: 1462 | number-is-nan "^1.0.0" 1463 | 1464 | is-fullwidth-code-point@^2.0.0: 1465 | version "2.0.0" 1466 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1467 | 1468 | is-generator-fn@^1.0.0: 1469 | version "1.0.0" 1470 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" 1471 | 1472 | is-glob@^2.0.0, is-glob@^2.0.1: 1473 | version "2.0.1" 1474 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1475 | dependencies: 1476 | is-extglob "^1.0.0" 1477 | 1478 | is-number@^2.1.0: 1479 | version "2.1.0" 1480 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1481 | dependencies: 1482 | kind-of "^3.0.2" 1483 | 1484 | is-number@^3.0.0: 1485 | version "3.0.0" 1486 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1487 | dependencies: 1488 | kind-of "^3.0.2" 1489 | 1490 | is-number@^4.0.0: 1491 | version "4.0.0" 1492 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" 1493 | 1494 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1495 | version "2.0.4" 1496 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1497 | dependencies: 1498 | isobject "^3.0.1" 1499 | 1500 | is-posix-bracket@^0.1.0: 1501 | version "0.1.1" 1502 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1503 | 1504 | is-primitive@^2.0.0: 1505 | version "2.0.0" 1506 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1507 | 1508 | is-regex@^1.0.4: 1509 | version "1.0.4" 1510 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 1511 | dependencies: 1512 | has "^1.0.1" 1513 | 1514 | is-stream@^1.1.0: 1515 | version "1.1.0" 1516 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1517 | 1518 | is-symbol@^1.0.1: 1519 | version "1.0.1" 1520 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 1521 | 1522 | is-typedarray@~1.0.0: 1523 | version "1.0.0" 1524 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1525 | 1526 | is-utf8@^0.2.0: 1527 | version "0.2.1" 1528 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1529 | 1530 | is-windows@^1.0.2: 1531 | version "1.0.2" 1532 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1533 | 1534 | isarray@1.0.0, isarray@~1.0.0: 1535 | version "1.0.0" 1536 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1537 | 1538 | isexe@^2.0.0: 1539 | version "2.0.0" 1540 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1541 | 1542 | isobject@^2.0.0: 1543 | version "2.1.0" 1544 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1545 | dependencies: 1546 | isarray "1.0.0" 1547 | 1548 | isobject@^3.0.0, isobject@^3.0.1: 1549 | version "3.0.1" 1550 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1551 | 1552 | isstream@~0.1.2: 1553 | version "0.1.2" 1554 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1555 | 1556 | istanbul-api@^1.3.1: 1557 | version "1.3.1" 1558 | resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" 1559 | dependencies: 1560 | async "^2.1.4" 1561 | compare-versions "^3.1.0" 1562 | fileset "^2.0.2" 1563 | istanbul-lib-coverage "^1.2.0" 1564 | istanbul-lib-hook "^1.2.0" 1565 | istanbul-lib-instrument "^1.10.1" 1566 | istanbul-lib-report "^1.1.4" 1567 | istanbul-lib-source-maps "^1.2.4" 1568 | istanbul-reports "^1.3.0" 1569 | js-yaml "^3.7.0" 1570 | mkdirp "^0.5.1" 1571 | once "^1.4.0" 1572 | 1573 | istanbul-lib-coverage@^1.2.0: 1574 | version "1.2.0" 1575 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" 1576 | 1577 | istanbul-lib-hook@^1.2.0: 1578 | version "1.2.1" 1579 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805" 1580 | dependencies: 1581 | append-transform "^1.0.0" 1582 | 1583 | istanbul-lib-instrument@^1.10.1: 1584 | version "1.10.1" 1585 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" 1586 | dependencies: 1587 | babel-generator "^6.18.0" 1588 | babel-template "^6.16.0" 1589 | babel-traverse "^6.18.0" 1590 | babel-types "^6.18.0" 1591 | babylon "^6.18.0" 1592 | istanbul-lib-coverage "^1.2.0" 1593 | semver "^5.3.0" 1594 | 1595 | istanbul-lib-report@^1.1.4: 1596 | version "1.1.4" 1597 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" 1598 | dependencies: 1599 | istanbul-lib-coverage "^1.2.0" 1600 | mkdirp "^0.5.1" 1601 | path-parse "^1.0.5" 1602 | supports-color "^3.1.2" 1603 | 1604 | istanbul-lib-source-maps@^1.2.4: 1605 | version "1.2.5" 1606 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1" 1607 | dependencies: 1608 | debug "^3.1.0" 1609 | istanbul-lib-coverage "^1.2.0" 1610 | mkdirp "^0.5.1" 1611 | rimraf "^2.6.1" 1612 | source-map "^0.5.3" 1613 | 1614 | istanbul-reports@^1.3.0: 1615 | version "1.3.0" 1616 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554" 1617 | dependencies: 1618 | handlebars "^4.0.3" 1619 | 1620 | jest-changed-files@^23.2.0: 1621 | version "23.2.0" 1622 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.2.0.tgz#a145a6e4b66d0129fc7c99cee134dc937a643d9c" 1623 | dependencies: 1624 | throat "^4.0.0" 1625 | 1626 | jest-cli@^23.3.0: 1627 | version "23.3.0" 1628 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.3.0.tgz#307e9be7733443b789a8279d694054d051a9e5e2" 1629 | dependencies: 1630 | ansi-escapes "^3.0.0" 1631 | chalk "^2.0.1" 1632 | exit "^0.1.2" 1633 | glob "^7.1.2" 1634 | graceful-fs "^4.1.11" 1635 | import-local "^1.0.0" 1636 | is-ci "^1.0.10" 1637 | istanbul-api "^1.3.1" 1638 | istanbul-lib-coverage "^1.2.0" 1639 | istanbul-lib-instrument "^1.10.1" 1640 | istanbul-lib-source-maps "^1.2.4" 1641 | jest-changed-files "^23.2.0" 1642 | jest-config "^23.3.0" 1643 | jest-environment-jsdom "^23.3.0" 1644 | jest-get-type "^22.1.0" 1645 | jest-haste-map "^23.2.0" 1646 | jest-message-util "^23.3.0" 1647 | jest-regex-util "^23.3.0" 1648 | jest-resolve-dependencies "^23.3.0" 1649 | jest-runner "^23.3.0" 1650 | jest-runtime "^23.3.0" 1651 | jest-snapshot "^23.3.0" 1652 | jest-util "^23.3.0" 1653 | jest-validate "^23.3.0" 1654 | jest-watcher "^23.2.0" 1655 | jest-worker "^23.2.0" 1656 | micromatch "^3.1.10" 1657 | node-notifier "^5.2.1" 1658 | prompts "^0.1.9" 1659 | realpath-native "^1.0.0" 1660 | rimraf "^2.5.4" 1661 | slash "^1.0.0" 1662 | string-length "^2.0.0" 1663 | strip-ansi "^4.0.0" 1664 | which "^1.2.12" 1665 | yargs "^11.0.0" 1666 | 1667 | jest-config@^22.4.3, jest-config@^22.4.4: 1668 | version "22.4.4" 1669 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.4.tgz#72a521188720597169cd8b4ff86934ef5752d86a" 1670 | dependencies: 1671 | chalk "^2.0.1" 1672 | glob "^7.1.1" 1673 | jest-environment-jsdom "^22.4.1" 1674 | jest-environment-node "^22.4.1" 1675 | jest-get-type "^22.1.0" 1676 | jest-jasmine2 "^22.4.4" 1677 | jest-regex-util "^22.1.0" 1678 | jest-resolve "^22.4.2" 1679 | jest-util "^22.4.1" 1680 | jest-validate "^22.4.4" 1681 | pretty-format "^22.4.0" 1682 | 1683 | jest-config@^23.3.0: 1684 | version "23.3.0" 1685 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.3.0.tgz#bb4d53b70f9500fafddf718d226abb53b13b8323" 1686 | dependencies: 1687 | babel-core "^6.0.0" 1688 | babel-jest "^23.2.0" 1689 | chalk "^2.0.1" 1690 | glob "^7.1.1" 1691 | jest-environment-jsdom "^23.3.0" 1692 | jest-environment-node "^23.3.0" 1693 | jest-get-type "^22.1.0" 1694 | jest-jasmine2 "^23.3.0" 1695 | jest-regex-util "^23.3.0" 1696 | jest-resolve "^23.2.0" 1697 | jest-util "^23.3.0" 1698 | jest-validate "^23.3.0" 1699 | pretty-format "^23.2.0" 1700 | 1701 | jest-diff@^22.4.0, jest-diff@^22.4.3: 1702 | version "22.4.3" 1703 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" 1704 | dependencies: 1705 | chalk "^2.0.1" 1706 | diff "^3.2.0" 1707 | jest-get-type "^22.4.3" 1708 | pretty-format "^22.4.3" 1709 | 1710 | jest-diff@^23.2.0: 1711 | version "23.2.0" 1712 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.2.0.tgz#9f2cf4b51e12c791550200abc16b47130af1062a" 1713 | dependencies: 1714 | chalk "^2.0.1" 1715 | diff "^3.2.0" 1716 | jest-get-type "^22.1.0" 1717 | pretty-format "^23.2.0" 1718 | 1719 | jest-docblock@^23.2.0: 1720 | version "23.2.0" 1721 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" 1722 | dependencies: 1723 | detect-newline "^2.1.0" 1724 | 1725 | jest-each@^23.2.0: 1726 | version "23.2.0" 1727 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.2.0.tgz#a400f81c857083f50c4f53399b109f12023fb19d" 1728 | dependencies: 1729 | chalk "^2.0.1" 1730 | pretty-format "^23.2.0" 1731 | 1732 | jest-environment-jsdom@^22.4.1: 1733 | version "22.4.3" 1734 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" 1735 | dependencies: 1736 | jest-mock "^22.4.3" 1737 | jest-util "^22.4.3" 1738 | jsdom "^11.5.1" 1739 | 1740 | jest-environment-jsdom@^23.3.0: 1741 | version "23.3.0" 1742 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.3.0.tgz#190457f91c9e615454c4186056065db6ed7a4e2a" 1743 | dependencies: 1744 | jest-mock "^23.2.0" 1745 | jest-util "^23.3.0" 1746 | jsdom "^11.5.1" 1747 | 1748 | jest-environment-node@^22.4.1: 1749 | version "22.4.3" 1750 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" 1751 | dependencies: 1752 | jest-mock "^22.4.3" 1753 | jest-util "^22.4.3" 1754 | 1755 | jest-environment-node@^23.3.0: 1756 | version "23.3.0" 1757 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.3.0.tgz#1e8df21c847aa5d03b76573f0dc16fcde5034c32" 1758 | dependencies: 1759 | jest-mock "^23.2.0" 1760 | jest-util "^23.3.0" 1761 | 1762 | jest-get-type@^22.1.0, jest-get-type@^22.4.3: 1763 | version "22.4.3" 1764 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" 1765 | 1766 | jest-haste-map@^23.2.0: 1767 | version "23.2.0" 1768 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.2.0.tgz#d10cbac007c695948c8ef1821a2b2ed2d4f2d4d8" 1769 | dependencies: 1770 | fb-watchman "^2.0.0" 1771 | graceful-fs "^4.1.11" 1772 | jest-docblock "^23.2.0" 1773 | jest-serializer "^23.0.1" 1774 | jest-worker "^23.2.0" 1775 | micromatch "^3.1.10" 1776 | sane "^2.0.0" 1777 | 1778 | jest-jasmine2@^22.4.4: 1779 | version "22.4.4" 1780 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz#c55f92c961a141f693f869f5f081a79a10d24e23" 1781 | dependencies: 1782 | chalk "^2.0.1" 1783 | co "^4.6.0" 1784 | expect "^22.4.0" 1785 | graceful-fs "^4.1.11" 1786 | is-generator-fn "^1.0.0" 1787 | jest-diff "^22.4.0" 1788 | jest-matcher-utils "^22.4.0" 1789 | jest-message-util "^22.4.0" 1790 | jest-snapshot "^22.4.0" 1791 | jest-util "^22.4.1" 1792 | source-map-support "^0.5.0" 1793 | 1794 | jest-jasmine2@^23.3.0: 1795 | version "23.3.0" 1796 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.3.0.tgz#a8706baac23c8a130d5aa8ef5464a9d49096d1b5" 1797 | dependencies: 1798 | chalk "^2.0.1" 1799 | co "^4.6.0" 1800 | expect "^23.3.0" 1801 | is-generator-fn "^1.0.0" 1802 | jest-diff "^23.2.0" 1803 | jest-each "^23.2.0" 1804 | jest-matcher-utils "^23.2.0" 1805 | jest-message-util "^23.3.0" 1806 | jest-snapshot "^23.3.0" 1807 | jest-util "^23.3.0" 1808 | pretty-format "^23.2.0" 1809 | 1810 | jest-leak-detector@^23.2.0: 1811 | version "23.2.0" 1812 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.2.0.tgz#c289d961dc638f14357d4ef96e0431ecc1aa377d" 1813 | dependencies: 1814 | pretty-format "^23.2.0" 1815 | 1816 | jest-matcher-utils@^22.4.0, jest-matcher-utils@^22.4.3: 1817 | version "22.4.3" 1818 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" 1819 | dependencies: 1820 | chalk "^2.0.1" 1821 | jest-get-type "^22.4.3" 1822 | pretty-format "^22.4.3" 1823 | 1824 | jest-matcher-utils@^23.2.0: 1825 | version "23.2.0" 1826 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.2.0.tgz#4d4981f23213e939e3cedf23dc34c747b5ae1913" 1827 | dependencies: 1828 | chalk "^2.0.1" 1829 | jest-get-type "^22.1.0" 1830 | pretty-format "^23.2.0" 1831 | 1832 | jest-message-util@^22.4.0, jest-message-util@^22.4.3: 1833 | version "22.4.3" 1834 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" 1835 | dependencies: 1836 | "@babel/code-frame" "^7.0.0-beta.35" 1837 | chalk "^2.0.1" 1838 | micromatch "^2.3.11" 1839 | slash "^1.0.0" 1840 | stack-utils "^1.0.1" 1841 | 1842 | jest-message-util@^23.3.0: 1843 | version "23.3.0" 1844 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.3.0.tgz#bc07b11cec6971fb5dd9de2dfb60ebc22150c160" 1845 | dependencies: 1846 | "@babel/code-frame" "^7.0.0-beta.35" 1847 | chalk "^2.0.1" 1848 | micromatch "^3.1.10" 1849 | slash "^1.0.0" 1850 | stack-utils "^1.0.1" 1851 | 1852 | jest-mock@^22.4.3: 1853 | version "22.4.3" 1854 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" 1855 | 1856 | jest-mock@^23.2.0: 1857 | version "23.2.0" 1858 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" 1859 | 1860 | jest-regex-util@^22.1.0, jest-regex-util@^22.4.3: 1861 | version "22.4.3" 1862 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" 1863 | 1864 | jest-regex-util@^23.3.0: 1865 | version "23.3.0" 1866 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" 1867 | 1868 | jest-resolve-dependencies@^23.3.0: 1869 | version "23.3.0" 1870 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.3.0.tgz#8444d3b0b1288b80864d8801ff50b44a4d695d1d" 1871 | dependencies: 1872 | jest-regex-util "^23.3.0" 1873 | jest-snapshot "^23.3.0" 1874 | 1875 | jest-resolve@^22.4.2: 1876 | version "22.4.3" 1877 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" 1878 | dependencies: 1879 | browser-resolve "^1.11.2" 1880 | chalk "^2.0.1" 1881 | 1882 | jest-resolve@^23.2.0: 1883 | version "23.2.0" 1884 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.2.0.tgz#a0790ad5a3b99002ab4dbfcbf8d9e2d6a69b3d99" 1885 | dependencies: 1886 | browser-resolve "^1.11.3" 1887 | chalk "^2.0.1" 1888 | realpath-native "^1.0.0" 1889 | 1890 | jest-runner@^23.3.0: 1891 | version "23.3.0" 1892 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.3.0.tgz#04c7e458a617501a4875db0d7ffbe0e3cbd43bfb" 1893 | dependencies: 1894 | exit "^0.1.2" 1895 | graceful-fs "^4.1.11" 1896 | jest-config "^23.3.0" 1897 | jest-docblock "^23.2.0" 1898 | jest-haste-map "^23.2.0" 1899 | jest-jasmine2 "^23.3.0" 1900 | jest-leak-detector "^23.2.0" 1901 | jest-message-util "^23.3.0" 1902 | jest-runtime "^23.3.0" 1903 | jest-util "^23.3.0" 1904 | jest-worker "^23.2.0" 1905 | source-map-support "^0.5.6" 1906 | throat "^4.0.0" 1907 | 1908 | jest-runtime@^23.3.0: 1909 | version "23.3.0" 1910 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.3.0.tgz#4865aab4ceff82f9cec6335fd7ae1422cc1de7df" 1911 | dependencies: 1912 | babel-core "^6.0.0" 1913 | babel-plugin-istanbul "^4.1.6" 1914 | chalk "^2.0.1" 1915 | convert-source-map "^1.4.0" 1916 | exit "^0.1.2" 1917 | fast-json-stable-stringify "^2.0.0" 1918 | graceful-fs "^4.1.11" 1919 | jest-config "^23.3.0" 1920 | jest-haste-map "^23.2.0" 1921 | jest-message-util "^23.3.0" 1922 | jest-regex-util "^23.3.0" 1923 | jest-resolve "^23.2.0" 1924 | jest-snapshot "^23.3.0" 1925 | jest-util "^23.3.0" 1926 | jest-validate "^23.3.0" 1927 | micromatch "^3.1.10" 1928 | realpath-native "^1.0.0" 1929 | slash "^1.0.0" 1930 | strip-bom "3.0.0" 1931 | write-file-atomic "^2.1.0" 1932 | yargs "^11.0.0" 1933 | 1934 | jest-serializer@^23.0.1: 1935 | version "23.0.1" 1936 | resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" 1937 | 1938 | jest-snapshot@^22.4.0: 1939 | version "22.4.3" 1940 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" 1941 | dependencies: 1942 | chalk "^2.0.1" 1943 | jest-diff "^22.4.3" 1944 | jest-matcher-utils "^22.4.3" 1945 | mkdirp "^0.5.1" 1946 | natural-compare "^1.4.0" 1947 | pretty-format "^22.4.3" 1948 | 1949 | jest-snapshot@^23.3.0: 1950 | version "23.3.0" 1951 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.3.0.tgz#fc4e9f81e45432d10507e27f50bce60f44d81424" 1952 | dependencies: 1953 | babel-traverse "^6.0.0" 1954 | babel-types "^6.0.0" 1955 | chalk "^2.0.1" 1956 | jest-diff "^23.2.0" 1957 | jest-matcher-utils "^23.2.0" 1958 | jest-message-util "^23.3.0" 1959 | jest-resolve "^23.2.0" 1960 | mkdirp "^0.5.1" 1961 | natural-compare "^1.4.0" 1962 | pretty-format "^23.2.0" 1963 | semver "^5.5.0" 1964 | 1965 | jest-util@^22.4.1, jest-util@^22.4.3: 1966 | version "22.4.3" 1967 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" 1968 | dependencies: 1969 | callsites "^2.0.0" 1970 | chalk "^2.0.1" 1971 | graceful-fs "^4.1.11" 1972 | is-ci "^1.0.10" 1973 | jest-message-util "^22.4.3" 1974 | mkdirp "^0.5.1" 1975 | source-map "^0.6.0" 1976 | 1977 | jest-util@^23.3.0: 1978 | version "23.3.0" 1979 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.3.0.tgz#79f35bb0c30100ef611d963ee6b88f8ed873a81d" 1980 | dependencies: 1981 | callsites "^2.0.0" 1982 | chalk "^2.0.1" 1983 | graceful-fs "^4.1.11" 1984 | is-ci "^1.0.10" 1985 | jest-message-util "^23.3.0" 1986 | mkdirp "^0.5.1" 1987 | slash "^1.0.0" 1988 | source-map "^0.6.0" 1989 | 1990 | jest-validate@^22.4.4: 1991 | version "22.4.4" 1992 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.4.tgz#1dd0b616ef46c995de61810d85f57119dbbcec4d" 1993 | dependencies: 1994 | chalk "^2.0.1" 1995 | jest-config "^22.4.4" 1996 | jest-get-type "^22.1.0" 1997 | leven "^2.1.0" 1998 | pretty-format "^22.4.0" 1999 | 2000 | jest-validate@^23.3.0: 2001 | version "23.3.0" 2002 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.3.0.tgz#d49bea6aad98c30acd2cbb542434798a0cc13f76" 2003 | dependencies: 2004 | chalk "^2.0.1" 2005 | jest-get-type "^22.1.0" 2006 | leven "^2.1.0" 2007 | pretty-format "^23.2.0" 2008 | 2009 | jest-watcher@^23.2.0: 2010 | version "23.2.0" 2011 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.2.0.tgz#678e852896e919e9d9a0eb4b8baf1ae279620ea9" 2012 | dependencies: 2013 | ansi-escapes "^3.0.0" 2014 | chalk "^2.0.1" 2015 | string-length "^2.0.0" 2016 | 2017 | jest-worker@^23.2.0: 2018 | version "23.2.0" 2019 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" 2020 | dependencies: 2021 | merge-stream "^1.0.1" 2022 | 2023 | jest@^23.1.0: 2024 | version "23.3.0" 2025 | resolved "https://registry.yarnpkg.com/jest/-/jest-23.3.0.tgz#1355cd792f38cf20fba4da02dddb7ca14d9484b5" 2026 | dependencies: 2027 | import-local "^1.0.0" 2028 | jest-cli "^23.3.0" 2029 | 2030 | js-tokens@^3.0.0, js-tokens@^3.0.2: 2031 | version "3.0.2" 2032 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 2033 | 2034 | js-yaml@^3.7.0: 2035 | version "3.12.0" 2036 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" 2037 | dependencies: 2038 | argparse "^1.0.7" 2039 | esprima "^4.0.0" 2040 | 2041 | jsbn@~0.1.0: 2042 | version "0.1.1" 2043 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 2044 | 2045 | jsdom@^11.5.1: 2046 | version "11.11.0" 2047 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.11.0.tgz#df486efad41aee96c59ad7a190e2449c7eb1110e" 2048 | dependencies: 2049 | abab "^1.0.4" 2050 | acorn "^5.3.0" 2051 | acorn-globals "^4.1.0" 2052 | array-equal "^1.0.0" 2053 | cssom ">= 0.3.2 < 0.4.0" 2054 | cssstyle ">= 0.3.1 < 0.4.0" 2055 | data-urls "^1.0.0" 2056 | domexception "^1.0.0" 2057 | escodegen "^1.9.0" 2058 | html-encoding-sniffer "^1.0.2" 2059 | left-pad "^1.2.0" 2060 | nwsapi "^2.0.0" 2061 | parse5 "4.0.0" 2062 | pn "^1.1.0" 2063 | request "^2.83.0" 2064 | request-promise-native "^1.0.5" 2065 | sax "^1.2.4" 2066 | symbol-tree "^3.2.2" 2067 | tough-cookie "^2.3.3" 2068 | w3c-hr-time "^1.0.1" 2069 | webidl-conversions "^4.0.2" 2070 | whatwg-encoding "^1.0.3" 2071 | whatwg-mimetype "^2.1.0" 2072 | whatwg-url "^6.4.1" 2073 | ws "^4.0.0" 2074 | xml-name-validator "^3.0.0" 2075 | 2076 | jsesc@^1.3.0: 2077 | version "1.3.0" 2078 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" 2079 | 2080 | jsesc@^2.5.1: 2081 | version "2.5.1" 2082 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" 2083 | 2084 | json-schema-traverse@^0.3.0: 2085 | version "0.3.1" 2086 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 2087 | 2088 | json-schema@0.2.3: 2089 | version "0.2.3" 2090 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 2091 | 2092 | json-stringify-safe@~5.0.1: 2093 | version "5.0.1" 2094 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 2095 | 2096 | json5@^0.5.1: 2097 | version "0.5.1" 2098 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 2099 | 2100 | jsonfile@^4.0.0: 2101 | version "4.0.0" 2102 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 2103 | optionalDependencies: 2104 | graceful-fs "^4.1.6" 2105 | 2106 | jsonify@~0.0.0: 2107 | version "0.0.0" 2108 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 2109 | 2110 | jsprim@^1.2.2: 2111 | version "1.4.1" 2112 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 2113 | dependencies: 2114 | assert-plus "1.0.0" 2115 | extsprintf "1.3.0" 2116 | json-schema "0.2.3" 2117 | verror "1.10.0" 2118 | 2119 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 2120 | version "3.2.2" 2121 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 2122 | dependencies: 2123 | is-buffer "^1.1.5" 2124 | 2125 | kind-of@^4.0.0: 2126 | version "4.0.0" 2127 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 2128 | dependencies: 2129 | is-buffer "^1.1.5" 2130 | 2131 | kind-of@^5.0.0: 2132 | version "5.1.0" 2133 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 2134 | 2135 | kind-of@^6.0.0, kind-of@^6.0.2: 2136 | version "6.0.2" 2137 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 2138 | 2139 | lazy-cache@^1.0.3: 2140 | version "1.0.4" 2141 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 2142 | 2143 | lcid@^1.0.0: 2144 | version "1.0.0" 2145 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 2146 | dependencies: 2147 | invert-kv "^1.0.0" 2148 | 2149 | left-pad@^1.2.0: 2150 | version "1.3.0" 2151 | resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" 2152 | 2153 | leven@^2.1.0: 2154 | version "2.1.0" 2155 | resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" 2156 | 2157 | levn@~0.3.0: 2158 | version "0.3.0" 2159 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2160 | dependencies: 2161 | prelude-ls "~1.1.2" 2162 | type-check "~0.3.2" 2163 | 2164 | load-json-file@^1.0.0: 2165 | version "1.1.0" 2166 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 2167 | dependencies: 2168 | graceful-fs "^4.1.2" 2169 | parse-json "^2.2.0" 2170 | pify "^2.0.0" 2171 | pinkie-promise "^2.0.0" 2172 | strip-bom "^2.0.0" 2173 | 2174 | locate-path@^2.0.0: 2175 | version "2.0.0" 2176 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 2177 | dependencies: 2178 | p-locate "^2.0.0" 2179 | path-exists "^3.0.0" 2180 | 2181 | lodash.sortby@^4.7.0: 2182 | version "4.7.0" 2183 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 2184 | 2185 | lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5: 2186 | version "4.17.10" 2187 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" 2188 | 2189 | longest@^1.0.1: 2190 | version "1.0.1" 2191 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 2192 | 2193 | loose-envify@^1.0.0: 2194 | version "1.3.1" 2195 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 2196 | dependencies: 2197 | js-tokens "^3.0.0" 2198 | 2199 | lru-cache@^4.0.1: 2200 | version "4.1.3" 2201 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" 2202 | dependencies: 2203 | pseudomap "^1.0.2" 2204 | yallist "^2.1.2" 2205 | 2206 | lsr@^2.0.0: 2207 | version "2.0.0" 2208 | resolved "https://registry.yarnpkg.com/lsr/-/lsr-2.0.0.tgz#d2186b14c2a08f7617515d8125426bfb2821ce2b" 2209 | dependencies: 2210 | "@types/node" "^7.0.31" 2211 | barrage "^1.1.0" 2212 | promise "^7.2.0" 2213 | 2214 | makeerror@1.0.x: 2215 | version "1.0.11" 2216 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" 2217 | dependencies: 2218 | tmpl "1.0.x" 2219 | 2220 | map-cache@^0.2.2: 2221 | version "0.2.2" 2222 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 2223 | 2224 | map-visit@^1.0.0: 2225 | version "1.0.0" 2226 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 2227 | dependencies: 2228 | object-visit "^1.0.0" 2229 | 2230 | math-random@^1.0.1: 2231 | version "1.0.1" 2232 | resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" 2233 | 2234 | mem@^1.1.0: 2235 | version "1.1.0" 2236 | resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" 2237 | dependencies: 2238 | mimic-fn "^1.0.0" 2239 | 2240 | merge-stream@^1.0.1: 2241 | version "1.0.1" 2242 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" 2243 | dependencies: 2244 | readable-stream "^2.0.1" 2245 | 2246 | merge@^1.2.0: 2247 | version "1.2.0" 2248 | resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" 2249 | 2250 | micromatch@^2.1.5, micromatch@^2.3.11: 2251 | version "2.3.11" 2252 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 2253 | dependencies: 2254 | arr-diff "^2.0.0" 2255 | array-unique "^0.2.1" 2256 | braces "^1.8.2" 2257 | expand-brackets "^0.1.4" 2258 | extglob "^0.3.1" 2259 | filename-regex "^2.0.0" 2260 | is-extglob "^1.0.0" 2261 | is-glob "^2.0.1" 2262 | kind-of "^3.0.2" 2263 | normalize-path "^2.0.1" 2264 | object.omit "^2.0.0" 2265 | parse-glob "^3.0.4" 2266 | regex-cache "^0.4.2" 2267 | 2268 | micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: 2269 | version "3.1.10" 2270 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 2271 | dependencies: 2272 | arr-diff "^4.0.0" 2273 | array-unique "^0.3.2" 2274 | braces "^2.3.1" 2275 | define-property "^2.0.2" 2276 | extend-shallow "^3.0.2" 2277 | extglob "^2.0.4" 2278 | fragment-cache "^0.2.1" 2279 | kind-of "^6.0.2" 2280 | nanomatch "^1.2.9" 2281 | object.pick "^1.3.0" 2282 | regex-not "^1.0.0" 2283 | snapdragon "^0.8.1" 2284 | to-regex "^3.0.2" 2285 | 2286 | mime-db@~1.33.0: 2287 | version "1.33.0" 2288 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" 2289 | 2290 | mime-types@^2.1.12, mime-types@~2.1.17: 2291 | version "2.1.18" 2292 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" 2293 | dependencies: 2294 | mime-db "~1.33.0" 2295 | 2296 | mimic-fn@^1.0.0: 2297 | version "1.2.0" 2298 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" 2299 | 2300 | minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: 2301 | version "3.0.4" 2302 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2303 | dependencies: 2304 | brace-expansion "^1.1.7" 2305 | 2306 | minimist@0.0.8: 2307 | version "0.0.8" 2308 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2309 | 2310 | minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: 2311 | version "1.2.0" 2312 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2313 | 2314 | minimist@~0.0.1: 2315 | version "0.0.10" 2316 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 2317 | 2318 | minipass@^2.2.1, minipass@^2.3.3: 2319 | version "2.3.3" 2320 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" 2321 | dependencies: 2322 | safe-buffer "^5.1.2" 2323 | yallist "^3.0.0" 2324 | 2325 | minizlib@^1.1.0: 2326 | version "1.1.0" 2327 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" 2328 | dependencies: 2329 | minipass "^2.2.1" 2330 | 2331 | mixin-deep@^1.2.0: 2332 | version "1.3.1" 2333 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 2334 | dependencies: 2335 | for-in "^1.0.2" 2336 | is-extendable "^1.0.1" 2337 | 2338 | mkdirp@^0.5.0, mkdirp@^0.5.1: 2339 | version "0.5.1" 2340 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2341 | dependencies: 2342 | minimist "0.0.8" 2343 | 2344 | ms@2.0.0: 2345 | version "2.0.0" 2346 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2347 | 2348 | nan@^2.9.2: 2349 | version "2.10.0" 2350 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" 2351 | 2352 | nanomatch@^1.2.9: 2353 | version "1.2.13" 2354 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 2355 | dependencies: 2356 | arr-diff "^4.0.0" 2357 | array-unique "^0.3.2" 2358 | define-property "^2.0.2" 2359 | extend-shallow "^3.0.2" 2360 | fragment-cache "^0.2.1" 2361 | is-windows "^1.0.2" 2362 | kind-of "^6.0.2" 2363 | object.pick "^1.3.0" 2364 | regex-not "^1.0.0" 2365 | snapdragon "^0.8.1" 2366 | to-regex "^3.0.1" 2367 | 2368 | natural-compare@^1.4.0: 2369 | version "1.4.0" 2370 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2371 | 2372 | needle@^2.2.0: 2373 | version "2.2.1" 2374 | resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" 2375 | dependencies: 2376 | debug "^2.1.2" 2377 | iconv-lite "^0.4.4" 2378 | sax "^1.2.4" 2379 | 2380 | node-int64@^0.4.0: 2381 | version "0.4.0" 2382 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2383 | 2384 | node-notifier@^5.2.1: 2385 | version "5.2.1" 2386 | resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" 2387 | dependencies: 2388 | growly "^1.3.0" 2389 | semver "^5.4.1" 2390 | shellwords "^0.1.1" 2391 | which "^1.3.0" 2392 | 2393 | node-pre-gyp@^0.10.0: 2394 | version "0.10.2" 2395 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.2.tgz#e8945c20ef6795a20aac2b44f036eb13cf5146e3" 2396 | dependencies: 2397 | detect-libc "^1.0.2" 2398 | mkdirp "^0.5.1" 2399 | needle "^2.2.0" 2400 | nopt "^4.0.1" 2401 | npm-packlist "^1.1.6" 2402 | npmlog "^4.0.2" 2403 | rc "^1.2.7" 2404 | rimraf "^2.6.1" 2405 | semver "^5.3.0" 2406 | tar "^4" 2407 | 2408 | nopt@^4.0.1: 2409 | version "4.0.1" 2410 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 2411 | dependencies: 2412 | abbrev "1" 2413 | osenv "^0.1.4" 2414 | 2415 | normalize-package-data@^2.3.2: 2416 | version "2.4.0" 2417 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 2418 | dependencies: 2419 | hosted-git-info "^2.1.4" 2420 | is-builtin-module "^1.0.0" 2421 | semver "2 || 3 || 4 || 5" 2422 | validate-npm-package-license "^3.0.1" 2423 | 2424 | normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: 2425 | version "2.1.1" 2426 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 2427 | dependencies: 2428 | remove-trailing-separator "^1.0.1" 2429 | 2430 | npm-bundled@^1.0.1: 2431 | version "1.0.3" 2432 | resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" 2433 | 2434 | npm-packlist@^1.1.6: 2435 | version "1.1.10" 2436 | resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" 2437 | dependencies: 2438 | ignore-walk "^3.0.1" 2439 | npm-bundled "^1.0.1" 2440 | 2441 | npm-run-path@^2.0.0: 2442 | version "2.0.2" 2443 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 2444 | dependencies: 2445 | path-key "^2.0.0" 2446 | 2447 | npmlog@^4.0.2: 2448 | version "4.1.2" 2449 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 2450 | dependencies: 2451 | are-we-there-yet "~1.1.2" 2452 | console-control-strings "~1.1.0" 2453 | gauge "~2.7.3" 2454 | set-blocking "~2.0.0" 2455 | 2456 | number-is-nan@^1.0.0: 2457 | version "1.0.1" 2458 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2459 | 2460 | nwsapi@^2.0.0: 2461 | version "2.0.4" 2462 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.4.tgz#dc79040a5f77b97716dc79565fc7fc3ef7d50570" 2463 | 2464 | oauth-sign@~0.8.2: 2465 | version "0.8.2" 2466 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 2467 | 2468 | object-assign@^4.1.0: 2469 | version "4.1.1" 2470 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2471 | 2472 | object-copy@^0.1.0: 2473 | version "0.1.0" 2474 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 2475 | dependencies: 2476 | copy-descriptor "^0.1.0" 2477 | define-property "^0.2.5" 2478 | kind-of "^3.0.3" 2479 | 2480 | object-keys@^1.0.8: 2481 | version "1.0.12" 2482 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" 2483 | 2484 | object-visit@^1.0.0: 2485 | version "1.0.1" 2486 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 2487 | dependencies: 2488 | isobject "^3.0.0" 2489 | 2490 | object.getownpropertydescriptors@^2.0.3: 2491 | version "2.0.3" 2492 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" 2493 | dependencies: 2494 | define-properties "^1.1.2" 2495 | es-abstract "^1.5.1" 2496 | 2497 | object.omit@^2.0.0: 2498 | version "2.0.1" 2499 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 2500 | dependencies: 2501 | for-own "^0.1.4" 2502 | is-extendable "^0.1.1" 2503 | 2504 | object.pick@^1.3.0: 2505 | version "1.3.0" 2506 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 2507 | dependencies: 2508 | isobject "^3.0.1" 2509 | 2510 | once@^1.3.0, once@^1.4.0: 2511 | version "1.4.0" 2512 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2513 | dependencies: 2514 | wrappy "1" 2515 | 2516 | optimist@^0.6.1: 2517 | version "0.6.1" 2518 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 2519 | dependencies: 2520 | minimist "~0.0.1" 2521 | wordwrap "~0.0.2" 2522 | 2523 | optionator@^0.8.1: 2524 | version "0.8.2" 2525 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2526 | dependencies: 2527 | deep-is "~0.1.3" 2528 | fast-levenshtein "~2.0.4" 2529 | levn "~0.3.0" 2530 | prelude-ls "~1.1.2" 2531 | type-check "~0.3.2" 2532 | wordwrap "~1.0.0" 2533 | 2534 | os-homedir@^1.0.0: 2535 | version "1.0.2" 2536 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2537 | 2538 | os-locale@^2.0.0: 2539 | version "2.1.0" 2540 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" 2541 | dependencies: 2542 | execa "^0.7.0" 2543 | lcid "^1.0.0" 2544 | mem "^1.1.0" 2545 | 2546 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: 2547 | version "1.0.2" 2548 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2549 | 2550 | osenv@^0.1.4: 2551 | version "0.1.5" 2552 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 2553 | dependencies: 2554 | os-homedir "^1.0.0" 2555 | os-tmpdir "^1.0.0" 2556 | 2557 | p-finally@^1.0.0: 2558 | version "1.0.0" 2559 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 2560 | 2561 | p-limit@^1.1.0: 2562 | version "1.3.0" 2563 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 2564 | dependencies: 2565 | p-try "^1.0.0" 2566 | 2567 | p-locate@^2.0.0: 2568 | version "2.0.0" 2569 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 2570 | dependencies: 2571 | p-limit "^1.1.0" 2572 | 2573 | p-try@^1.0.0: 2574 | version "1.0.0" 2575 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 2576 | 2577 | parse-glob@^3.0.4: 2578 | version "3.0.4" 2579 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2580 | dependencies: 2581 | glob-base "^0.3.0" 2582 | is-dotfile "^1.0.0" 2583 | is-extglob "^1.0.0" 2584 | is-glob "^2.0.0" 2585 | 2586 | parse-json@^2.2.0: 2587 | version "2.2.0" 2588 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 2589 | dependencies: 2590 | error-ex "^1.2.0" 2591 | 2592 | parse5@4.0.0: 2593 | version "4.0.0" 2594 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" 2595 | 2596 | pascalcase@^0.1.1: 2597 | version "0.1.1" 2598 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 2599 | 2600 | path-exists@^2.0.0: 2601 | version "2.1.0" 2602 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 2603 | dependencies: 2604 | pinkie-promise "^2.0.0" 2605 | 2606 | path-exists@^3.0.0: 2607 | version "3.0.0" 2608 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 2609 | 2610 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 2611 | version "1.0.1" 2612 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2613 | 2614 | path-key@^2.0.0: 2615 | version "2.0.1" 2616 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2617 | 2618 | path-parse@^1.0.5: 2619 | version "1.0.5" 2620 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 2621 | 2622 | path-type@^1.0.0: 2623 | version "1.1.0" 2624 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 2625 | dependencies: 2626 | graceful-fs "^4.1.2" 2627 | pify "^2.0.0" 2628 | pinkie-promise "^2.0.0" 2629 | 2630 | performance-now@^2.1.0: 2631 | version "2.1.0" 2632 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 2633 | 2634 | pify@^2.0.0: 2635 | version "2.3.0" 2636 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2637 | 2638 | pinkie-promise@^2.0.0: 2639 | version "2.0.1" 2640 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2641 | dependencies: 2642 | pinkie "^2.0.0" 2643 | 2644 | pinkie@^2.0.0: 2645 | version "2.0.4" 2646 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2647 | 2648 | pkg-dir@^2.0.0: 2649 | version "2.0.0" 2650 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 2651 | dependencies: 2652 | find-up "^2.1.0" 2653 | 2654 | pn@^1.1.0: 2655 | version "1.1.0" 2656 | resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" 2657 | 2658 | posix-character-classes@^0.1.0: 2659 | version "0.1.1" 2660 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 2661 | 2662 | prelude-ls@~1.1.2: 2663 | version "1.1.2" 2664 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2665 | 2666 | preserve@^0.2.0: 2667 | version "0.2.0" 2668 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2669 | 2670 | prettier@^1.13.5: 2671 | version "1.13.7" 2672 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281" 2673 | 2674 | pretty-format@^22.4.0, pretty-format@^22.4.3: 2675 | version "22.4.3" 2676 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" 2677 | dependencies: 2678 | ansi-regex "^3.0.0" 2679 | ansi-styles "^3.2.0" 2680 | 2681 | pretty-format@^23.2.0: 2682 | version "23.2.0" 2683 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.2.0.tgz#3b0aaa63c018a53583373c1cb3a5d96cc5e83017" 2684 | dependencies: 2685 | ansi-regex "^3.0.0" 2686 | ansi-styles "^3.2.0" 2687 | 2688 | private@^0.1.8: 2689 | version "0.1.8" 2690 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" 2691 | 2692 | process-nextick-args@~2.0.0: 2693 | version "2.0.0" 2694 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 2695 | 2696 | promise@^6.0.0: 2697 | version "6.1.0" 2698 | resolved "https://registry.yarnpkg.com/promise/-/promise-6.1.0.tgz#2ce729f6b94b45c26891ad0602c5c90e04c6eef6" 2699 | dependencies: 2700 | asap "~1.0.0" 2701 | 2702 | promise@^7.2.0: 2703 | version "7.3.1" 2704 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" 2705 | dependencies: 2706 | asap "~2.0.3" 2707 | 2708 | prompts@^0.1.9: 2709 | version "0.1.10" 2710 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.10.tgz#832cbf6116ecb121d6884e84643bb2cf92b3ed2c" 2711 | dependencies: 2712 | clorox "^1.0.3" 2713 | sisteransi "^0.1.1" 2714 | 2715 | pseudomap@^1.0.2: 2716 | version "1.0.2" 2717 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2718 | 2719 | psl@^1.1.24: 2720 | version "1.1.28" 2721 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.28.tgz#4fb6ceb08a1e2214d4fd4de0ca22dae13740bc7b" 2722 | 2723 | punycode@^1.4.1: 2724 | version "1.4.1" 2725 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2726 | 2727 | punycode@^2.1.0: 2728 | version "2.1.1" 2729 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2730 | 2731 | qs@~6.5.1: 2732 | version "6.5.2" 2733 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 2734 | 2735 | randomatic@^3.0.0: 2736 | version "3.0.0" 2737 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" 2738 | dependencies: 2739 | is-number "^4.0.0" 2740 | kind-of "^6.0.0" 2741 | math-random "^1.0.1" 2742 | 2743 | rc@^1.2.7: 2744 | version "1.2.8" 2745 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2746 | dependencies: 2747 | deep-extend "^0.6.0" 2748 | ini "~1.3.0" 2749 | minimist "^1.2.0" 2750 | strip-json-comments "~2.0.1" 2751 | 2752 | read-pkg-up@^1.0.1: 2753 | version "1.0.1" 2754 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 2755 | dependencies: 2756 | find-up "^1.0.0" 2757 | read-pkg "^1.0.0" 2758 | 2759 | read-pkg@^1.0.0: 2760 | version "1.1.0" 2761 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 2762 | dependencies: 2763 | load-json-file "^1.0.0" 2764 | normalize-package-data "^2.3.2" 2765 | path-type "^1.0.0" 2766 | 2767 | readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6: 2768 | version "2.3.6" 2769 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 2770 | dependencies: 2771 | core-util-is "~1.0.0" 2772 | inherits "~2.0.3" 2773 | isarray "~1.0.0" 2774 | process-nextick-args "~2.0.0" 2775 | safe-buffer "~5.1.1" 2776 | string_decoder "~1.1.1" 2777 | util-deprecate "~1.0.1" 2778 | 2779 | readdirp@^2.0.0: 2780 | version "2.1.0" 2781 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 2782 | dependencies: 2783 | graceful-fs "^4.1.2" 2784 | minimatch "^3.0.2" 2785 | readable-stream "^2.0.2" 2786 | set-immediate-shim "^1.0.1" 2787 | 2788 | realpath-native@^1.0.0: 2789 | version "1.0.1" 2790 | resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.1.tgz#07f40a0cce8f8261e2e8b7ebebf5c95965d7b633" 2791 | dependencies: 2792 | util.promisify "^1.0.0" 2793 | 2794 | regenerator-runtime@^0.11.0: 2795 | version "0.11.1" 2796 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" 2797 | 2798 | regex-cache@^0.4.2: 2799 | version "0.4.4" 2800 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 2801 | dependencies: 2802 | is-equal-shallow "^0.1.3" 2803 | 2804 | regex-not@^1.0.0, regex-not@^1.0.2: 2805 | version "1.0.2" 2806 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 2807 | dependencies: 2808 | extend-shallow "^3.0.2" 2809 | safe-regex "^1.1.0" 2810 | 2811 | remove-trailing-separator@^1.0.1: 2812 | version "1.1.0" 2813 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2814 | 2815 | repeat-element@^1.1.2: 2816 | version "1.1.2" 2817 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 2818 | 2819 | repeat-string@^1.5.2, repeat-string@^1.6.1: 2820 | version "1.6.1" 2821 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2822 | 2823 | repeating@^2.0.0: 2824 | version "2.0.1" 2825 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 2826 | dependencies: 2827 | is-finite "^1.0.0" 2828 | 2829 | request-promise-core@1.1.1: 2830 | version "1.1.1" 2831 | resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" 2832 | dependencies: 2833 | lodash "^4.13.1" 2834 | 2835 | request-promise-native@^1.0.5: 2836 | version "1.0.5" 2837 | resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" 2838 | dependencies: 2839 | request-promise-core "1.1.1" 2840 | stealthy-require "^1.1.0" 2841 | tough-cookie ">=2.3.3" 2842 | 2843 | request@^2.83.0: 2844 | version "2.87.0" 2845 | resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" 2846 | dependencies: 2847 | aws-sign2 "~0.7.0" 2848 | aws4 "^1.6.0" 2849 | caseless "~0.12.0" 2850 | combined-stream "~1.0.5" 2851 | extend "~3.0.1" 2852 | forever-agent "~0.6.1" 2853 | form-data "~2.3.1" 2854 | har-validator "~5.0.3" 2855 | http-signature "~1.2.0" 2856 | is-typedarray "~1.0.0" 2857 | isstream "~0.1.2" 2858 | json-stringify-safe "~5.0.1" 2859 | mime-types "~2.1.17" 2860 | oauth-sign "~0.8.2" 2861 | performance-now "^2.1.0" 2862 | qs "~6.5.1" 2863 | safe-buffer "^5.1.1" 2864 | tough-cookie "~2.3.3" 2865 | tunnel-agent "^0.6.0" 2866 | uuid "^3.1.0" 2867 | 2868 | require-directory@^2.1.1: 2869 | version "2.1.1" 2870 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2871 | 2872 | require-main-filename@^1.0.1: 2873 | version "1.0.1" 2874 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 2875 | 2876 | resolve-cwd@^2.0.0: 2877 | version "2.0.0" 2878 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" 2879 | dependencies: 2880 | resolve-from "^3.0.0" 2881 | 2882 | resolve-from@^3.0.0: 2883 | version "3.0.0" 2884 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" 2885 | 2886 | resolve-url@^0.2.1: 2887 | version "0.2.1" 2888 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 2889 | 2890 | resolve@1.1.7: 2891 | version "1.1.7" 2892 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 2893 | 2894 | resolve@^1.1.7: 2895 | version "1.8.1" 2896 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" 2897 | dependencies: 2898 | path-parse "^1.0.5" 2899 | 2900 | ret@~0.1.10: 2901 | version "0.1.15" 2902 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 2903 | 2904 | right-align@^0.1.1: 2905 | version "0.1.3" 2906 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 2907 | dependencies: 2908 | align-text "^0.1.1" 2909 | 2910 | rimraf@^2.5.4, rimraf@^2.6.1: 2911 | version "2.6.2" 2912 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 2913 | dependencies: 2914 | glob "^7.0.5" 2915 | 2916 | rsvp@^3.3.3: 2917 | version "3.6.2" 2918 | resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" 2919 | 2920 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2921 | version "5.1.2" 2922 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2923 | 2924 | safe-regex@^1.1.0: 2925 | version "1.1.0" 2926 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 2927 | dependencies: 2928 | ret "~0.1.10" 2929 | 2930 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2: 2931 | version "2.1.2" 2932 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2933 | 2934 | sane@^2.0.0: 2935 | version "2.5.2" 2936 | resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" 2937 | dependencies: 2938 | anymatch "^2.0.0" 2939 | capture-exit "^1.2.0" 2940 | exec-sh "^0.2.0" 2941 | fb-watchman "^2.0.0" 2942 | micromatch "^3.1.4" 2943 | minimist "^1.1.1" 2944 | walker "~1.0.5" 2945 | watch "~0.18.0" 2946 | optionalDependencies: 2947 | fsevents "^1.2.3" 2948 | 2949 | sax@^1.2.4: 2950 | version "1.2.4" 2951 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 2952 | 2953 | "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: 2954 | version "5.5.0" 2955 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 2956 | 2957 | set-blocking@^2.0.0, set-blocking@~2.0.0: 2958 | version "2.0.0" 2959 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2960 | 2961 | set-immediate-shim@^1.0.1: 2962 | version "1.0.1" 2963 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2964 | 2965 | set-value@^0.4.3: 2966 | version "0.4.3" 2967 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 2968 | dependencies: 2969 | extend-shallow "^2.0.1" 2970 | is-extendable "^0.1.1" 2971 | is-plain-object "^2.0.1" 2972 | to-object-path "^0.3.0" 2973 | 2974 | set-value@^2.0.0: 2975 | version "2.0.0" 2976 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 2977 | dependencies: 2978 | extend-shallow "^2.0.1" 2979 | is-extendable "^0.1.1" 2980 | is-plain-object "^2.0.3" 2981 | split-string "^3.0.1" 2982 | 2983 | shebang-command@^1.2.0: 2984 | version "1.2.0" 2985 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2986 | dependencies: 2987 | shebang-regex "^1.0.0" 2988 | 2989 | shebang-regex@^1.0.0: 2990 | version "1.0.0" 2991 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2992 | 2993 | shell-quote@^1.6.1: 2994 | version "1.6.1" 2995 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" 2996 | dependencies: 2997 | array-filter "~0.0.0" 2998 | array-map "~0.0.0" 2999 | array-reduce "~0.0.0" 3000 | jsonify "~0.0.0" 3001 | 3002 | shellwords@^0.1.1: 3003 | version "0.1.1" 3004 | resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" 3005 | 3006 | signal-exit@^3.0.0, signal-exit@^3.0.2: 3007 | version "3.0.2" 3008 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 3009 | 3010 | sisteransi@^0.1.1: 3011 | version "0.1.1" 3012 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" 3013 | 3014 | slash@^1.0.0: 3015 | version "1.0.0" 3016 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 3017 | 3018 | snapdragon-node@^2.0.1: 3019 | version "2.1.1" 3020 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 3021 | dependencies: 3022 | define-property "^1.0.0" 3023 | isobject "^3.0.0" 3024 | snapdragon-util "^3.0.1" 3025 | 3026 | snapdragon-util@^3.0.1: 3027 | version "3.0.1" 3028 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 3029 | dependencies: 3030 | kind-of "^3.2.0" 3031 | 3032 | snapdragon@^0.8.1: 3033 | version "0.8.2" 3034 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 3035 | dependencies: 3036 | base "^0.11.1" 3037 | debug "^2.2.0" 3038 | define-property "^0.2.5" 3039 | extend-shallow "^2.0.1" 3040 | map-cache "^0.2.2" 3041 | source-map "^0.5.6" 3042 | source-map-resolve "^0.5.0" 3043 | use "^3.1.0" 3044 | 3045 | source-map-resolve@^0.5.0: 3046 | version "0.5.2" 3047 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 3048 | dependencies: 3049 | atob "^2.1.1" 3050 | decode-uri-component "^0.2.0" 3051 | resolve-url "^0.2.1" 3052 | source-map-url "^0.4.0" 3053 | urix "^0.1.0" 3054 | 3055 | source-map-support@^0.4.15: 3056 | version "0.4.18" 3057 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 3058 | dependencies: 3059 | source-map "^0.5.6" 3060 | 3061 | source-map-support@^0.5.0, source-map-support@^0.5.5, source-map-support@^0.5.6: 3062 | version "0.5.6" 3063 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" 3064 | dependencies: 3065 | buffer-from "^1.0.0" 3066 | source-map "^0.6.0" 3067 | 3068 | source-map-url@^0.4.0: 3069 | version "0.4.0" 3070 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 3071 | 3072 | source-map@^0.4.4: 3073 | version "0.4.4" 3074 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 3075 | dependencies: 3076 | amdefine ">=0.0.4" 3077 | 3078 | source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: 3079 | version "0.5.7" 3080 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 3081 | 3082 | source-map@^0.6.0, source-map@~0.6.1: 3083 | version "0.6.1" 3084 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 3085 | 3086 | spdx-correct@^3.0.0: 3087 | version "3.0.0" 3088 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" 3089 | dependencies: 3090 | spdx-expression-parse "^3.0.0" 3091 | spdx-license-ids "^3.0.0" 3092 | 3093 | spdx-exceptions@^2.1.0: 3094 | version "2.1.0" 3095 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" 3096 | 3097 | spdx-expression-parse@^3.0.0: 3098 | version "3.0.0" 3099 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 3100 | dependencies: 3101 | spdx-exceptions "^2.1.0" 3102 | spdx-license-ids "^3.0.0" 3103 | 3104 | spdx-license-ids@^3.0.0: 3105 | version "3.0.0" 3106 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" 3107 | 3108 | split-string@^3.0.1, split-string@^3.0.2: 3109 | version "3.1.0" 3110 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 3111 | dependencies: 3112 | extend-shallow "^3.0.0" 3113 | 3114 | sprintf-js@~1.0.2: 3115 | version "1.0.3" 3116 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3117 | 3118 | sshpk@^1.7.0: 3119 | version "1.14.2" 3120 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" 3121 | dependencies: 3122 | asn1 "~0.2.3" 3123 | assert-plus "^1.0.0" 3124 | dashdash "^1.12.0" 3125 | getpass "^0.1.1" 3126 | safer-buffer "^2.0.2" 3127 | optionalDependencies: 3128 | bcrypt-pbkdf "^1.0.0" 3129 | ecc-jsbn "~0.1.1" 3130 | jsbn "~0.1.0" 3131 | tweetnacl "~0.14.0" 3132 | 3133 | stack-utils@^1.0.1: 3134 | version "1.0.1" 3135 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" 3136 | 3137 | static-extend@^0.1.1: 3138 | version "0.1.2" 3139 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 3140 | dependencies: 3141 | define-property "^0.2.5" 3142 | object-copy "^0.1.0" 3143 | 3144 | stealthy-require@^1.1.0: 3145 | version "1.1.1" 3146 | resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" 3147 | 3148 | string-length@^2.0.0: 3149 | version "2.0.0" 3150 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" 3151 | dependencies: 3152 | astral-regex "^1.0.0" 3153 | strip-ansi "^4.0.0" 3154 | 3155 | string-width@^1.0.1: 3156 | version "1.0.2" 3157 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 3158 | dependencies: 3159 | code-point-at "^1.0.0" 3160 | is-fullwidth-code-point "^1.0.0" 3161 | strip-ansi "^3.0.0" 3162 | 3163 | "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: 3164 | version "2.1.1" 3165 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 3166 | dependencies: 3167 | is-fullwidth-code-point "^2.0.0" 3168 | strip-ansi "^4.0.0" 3169 | 3170 | string_decoder@~1.1.1: 3171 | version "1.1.1" 3172 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 3173 | dependencies: 3174 | safe-buffer "~5.1.0" 3175 | 3176 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 3177 | version "3.0.1" 3178 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 3179 | dependencies: 3180 | ansi-regex "^2.0.0" 3181 | 3182 | strip-ansi@^4.0.0: 3183 | version "4.0.0" 3184 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 3185 | dependencies: 3186 | ansi-regex "^3.0.0" 3187 | 3188 | strip-bom@3.0.0, strip-bom@^3.0.0: 3189 | version "3.0.0" 3190 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 3191 | 3192 | strip-bom@^2.0.0: 3193 | version "2.0.0" 3194 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 3195 | dependencies: 3196 | is-utf8 "^0.2.0" 3197 | 3198 | strip-eof@^1.0.0: 3199 | version "1.0.0" 3200 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 3201 | 3202 | strip-json-comments@~2.0.1: 3203 | version "2.0.1" 3204 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 3205 | 3206 | subarg@^1.0.0: 3207 | version "1.0.0" 3208 | resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" 3209 | dependencies: 3210 | minimist "^1.1.0" 3211 | 3212 | supports-color@^2.0.0: 3213 | version "2.0.0" 3214 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 3215 | 3216 | supports-color@^3.1.2: 3217 | version "3.2.3" 3218 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 3219 | dependencies: 3220 | has-flag "^1.0.0" 3221 | 3222 | supports-color@^5.3.0: 3223 | version "5.4.0" 3224 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 3225 | dependencies: 3226 | has-flag "^3.0.0" 3227 | 3228 | symbol-tree@^3.2.2: 3229 | version "3.2.2" 3230 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" 3231 | 3232 | tar@^4: 3233 | version "4.4.4" 3234 | resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" 3235 | dependencies: 3236 | chownr "^1.0.1" 3237 | fs-minipass "^1.2.5" 3238 | minipass "^2.3.3" 3239 | minizlib "^1.1.0" 3240 | mkdirp "^0.5.0" 3241 | safe-buffer "^5.1.2" 3242 | yallist "^3.0.2" 3243 | 3244 | test-exclude@^4.2.1: 3245 | version "4.2.1" 3246 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa" 3247 | dependencies: 3248 | arrify "^1.0.1" 3249 | micromatch "^3.1.8" 3250 | object-assign "^4.1.0" 3251 | read-pkg-up "^1.0.1" 3252 | require-main-filename "^1.0.1" 3253 | 3254 | throat@^4.0.0: 3255 | version "4.1.0" 3256 | resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" 3257 | 3258 | tmpl@1.0.x: 3259 | version "1.0.4" 3260 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" 3261 | 3262 | to-fast-properties@^1.0.3: 3263 | version "1.0.3" 3264 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" 3265 | 3266 | to-fast-properties@^2.0.0: 3267 | version "2.0.0" 3268 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 3269 | 3270 | to-object-path@^0.3.0: 3271 | version "0.3.0" 3272 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 3273 | dependencies: 3274 | kind-of "^3.0.2" 3275 | 3276 | to-regex-range@^2.1.0: 3277 | version "2.1.1" 3278 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 3279 | dependencies: 3280 | is-number "^3.0.0" 3281 | repeat-string "^1.6.1" 3282 | 3283 | to-regex@^3.0.1, to-regex@^3.0.2: 3284 | version "3.0.2" 3285 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 3286 | dependencies: 3287 | define-property "^2.0.2" 3288 | extend-shallow "^3.0.2" 3289 | regex-not "^1.0.2" 3290 | safe-regex "^1.1.0" 3291 | 3292 | tough-cookie@>=2.3.3, tough-cookie@^2.3.3: 3293 | version "2.4.3" 3294 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 3295 | dependencies: 3296 | psl "^1.1.24" 3297 | punycode "^1.4.1" 3298 | 3299 | tough-cookie@~2.3.3: 3300 | version "2.3.4" 3301 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" 3302 | dependencies: 3303 | punycode "^1.4.1" 3304 | 3305 | tr46@^1.0.1: 3306 | version "1.0.1" 3307 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" 3308 | dependencies: 3309 | punycode "^2.1.0" 3310 | 3311 | trim-right@^1.0.1: 3312 | version "1.0.1" 3313 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" 3314 | 3315 | ts-jest@^22.4.6: 3316 | version "22.4.6" 3317 | resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-22.4.6.tgz#a5d7f5e8b809626d1f4143209d301287472ec344" 3318 | dependencies: 3319 | babel-core "^6.26.3" 3320 | babel-plugin-istanbul "^4.1.6" 3321 | babel-plugin-transform-es2015-modules-commonjs "^6.26.2" 3322 | babel-preset-jest "^22.4.3" 3323 | cpx "^1.5.0" 3324 | fs-extra "6.0.0" 3325 | jest-config "^22.4.3" 3326 | lodash "^4.17.10" 3327 | pkg-dir "^2.0.0" 3328 | source-map-support "^0.5.5" 3329 | yargs "^11.0.0" 3330 | 3331 | tunnel-agent@^0.6.0: 3332 | version "0.6.0" 3333 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 3334 | dependencies: 3335 | safe-buffer "^5.0.1" 3336 | 3337 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 3338 | version "0.14.5" 3339 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 3340 | 3341 | type-check@~0.3.2: 3342 | version "0.3.2" 3343 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 3344 | dependencies: 3345 | prelude-ls "~1.1.2" 3346 | 3347 | typescript@^2.4.0: 3348 | version "2.9.2" 3349 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" 3350 | 3351 | uglify-js@^2.6: 3352 | version "2.8.29" 3353 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" 3354 | dependencies: 3355 | source-map "~0.5.1" 3356 | yargs "~3.10.0" 3357 | optionalDependencies: 3358 | uglify-to-browserify "~1.0.0" 3359 | 3360 | uglify-to-browserify@~1.0.0: 3361 | version "1.0.2" 3362 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 3363 | 3364 | union-value@^1.0.0: 3365 | version "1.0.0" 3366 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 3367 | dependencies: 3368 | arr-union "^3.1.0" 3369 | get-value "^2.0.6" 3370 | is-extendable "^0.1.1" 3371 | set-value "^0.4.3" 3372 | 3373 | universalify@^0.1.0: 3374 | version "0.1.2" 3375 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 3376 | 3377 | unset-value@^1.0.0: 3378 | version "1.0.0" 3379 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 3380 | dependencies: 3381 | has-value "^0.3.1" 3382 | isobject "^3.0.0" 3383 | 3384 | urix@^0.1.0: 3385 | version "0.1.0" 3386 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 3387 | 3388 | use@^3.1.0: 3389 | version "3.1.0" 3390 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" 3391 | dependencies: 3392 | kind-of "^6.0.2" 3393 | 3394 | util-deprecate@~1.0.1: 3395 | version "1.0.2" 3396 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3397 | 3398 | util.promisify@^1.0.0: 3399 | version "1.0.0" 3400 | resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" 3401 | dependencies: 3402 | define-properties "^1.1.2" 3403 | object.getownpropertydescriptors "^2.0.3" 3404 | 3405 | uuid@^3.1.0: 3406 | version "3.3.2" 3407 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" 3408 | 3409 | validate-npm-package-license@^3.0.1: 3410 | version "3.0.3" 3411 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" 3412 | dependencies: 3413 | spdx-correct "^3.0.0" 3414 | spdx-expression-parse "^3.0.0" 3415 | 3416 | verror@1.10.0: 3417 | version "1.10.0" 3418 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 3419 | dependencies: 3420 | assert-plus "^1.0.0" 3421 | core-util-is "1.0.2" 3422 | extsprintf "^1.2.0" 3423 | 3424 | w3c-hr-time@^1.0.1: 3425 | version "1.0.1" 3426 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" 3427 | dependencies: 3428 | browser-process-hrtime "^0.1.2" 3429 | 3430 | walker@~1.0.5: 3431 | version "1.0.7" 3432 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" 3433 | dependencies: 3434 | makeerror "1.0.x" 3435 | 3436 | watch@~0.18.0: 3437 | version "0.18.0" 3438 | resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" 3439 | dependencies: 3440 | exec-sh "^0.2.0" 3441 | minimist "^1.2.0" 3442 | 3443 | webidl-conversions@^4.0.2: 3444 | version "4.0.2" 3445 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" 3446 | 3447 | whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: 3448 | version "1.0.3" 3449 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" 3450 | dependencies: 3451 | iconv-lite "0.4.19" 3452 | 3453 | whatwg-mimetype@^2.0.0, whatwg-mimetype@^2.1.0: 3454 | version "2.1.0" 3455 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz#f0f21d76cbba72362eb609dbed2a30cd17fcc7d4" 3456 | 3457 | whatwg-url@^6.4.0, whatwg-url@^6.4.1: 3458 | version "6.5.0" 3459 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" 3460 | dependencies: 3461 | lodash.sortby "^4.7.0" 3462 | tr46 "^1.0.1" 3463 | webidl-conversions "^4.0.2" 3464 | 3465 | which-module@^2.0.0: 3466 | version "2.0.0" 3467 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 3468 | 3469 | which@^1.2.12, which@^1.2.9, which@^1.3.0: 3470 | version "1.3.1" 3471 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 3472 | dependencies: 3473 | isexe "^2.0.0" 3474 | 3475 | wide-align@^1.1.0: 3476 | version "1.1.3" 3477 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 3478 | dependencies: 3479 | string-width "^1.0.2 || 2" 3480 | 3481 | window-size@0.1.0: 3482 | version "0.1.0" 3483 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 3484 | 3485 | wordwrap@0.0.2: 3486 | version "0.0.2" 3487 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 3488 | 3489 | wordwrap@~0.0.2: 3490 | version "0.0.3" 3491 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 3492 | 3493 | wordwrap@~1.0.0: 3494 | version "1.0.0" 3495 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 3496 | 3497 | wrap-ansi@^2.0.0: 3498 | version "2.1.0" 3499 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 3500 | dependencies: 3501 | string-width "^1.0.1" 3502 | strip-ansi "^3.0.1" 3503 | 3504 | wrappy@1: 3505 | version "1.0.2" 3506 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3507 | 3508 | write-file-atomic@^2.1.0: 3509 | version "2.3.0" 3510 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" 3511 | dependencies: 3512 | graceful-fs "^4.1.11" 3513 | imurmurhash "^0.1.4" 3514 | signal-exit "^3.0.2" 3515 | 3516 | ws@^4.0.0: 3517 | version "4.1.0" 3518 | resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" 3519 | dependencies: 3520 | async-limiter "~1.0.0" 3521 | safe-buffer "~5.1.0" 3522 | 3523 | xml-name-validator@^3.0.0: 3524 | version "3.0.0" 3525 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 3526 | 3527 | y18n@^3.2.1: 3528 | version "3.2.1" 3529 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 3530 | 3531 | yallist@^2.1.2: 3532 | version "2.1.2" 3533 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 3534 | 3535 | yallist@^3.0.0, yallist@^3.0.2: 3536 | version "3.0.2" 3537 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" 3538 | 3539 | yargs-parser@^9.0.2: 3540 | version "9.0.2" 3541 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" 3542 | dependencies: 3543 | camelcase "^4.1.0" 3544 | 3545 | yargs@^11.0.0: 3546 | version "11.1.0" 3547 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" 3548 | dependencies: 3549 | cliui "^4.0.0" 3550 | decamelize "^1.1.1" 3551 | find-up "^2.1.0" 3552 | get-caller-file "^1.0.1" 3553 | os-locale "^2.0.0" 3554 | require-directory "^2.1.1" 3555 | require-main-filename "^1.0.1" 3556 | set-blocking "^2.0.0" 3557 | string-width "^2.0.0" 3558 | which-module "^2.0.0" 3559 | y18n "^3.2.1" 3560 | yargs-parser "^9.0.2" 3561 | 3562 | yargs@~3.10.0: 3563 | version "3.10.0" 3564 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 3565 | dependencies: 3566 | camelcase "^1.0.2" 3567 | cliui "^2.1.0" 3568 | decamelize "^1.0.0" 3569 | window-size "0.1.0" 3570 | --------------------------------------------------------------------------------