From 4f62e0d7ffac49d3077ccdf6bc7caa40883d5991 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 17:29:35 +0000 Subject: [PATCH 01/44] Fixes --- package.json | 26 +- src/convert.ts | 406 +++--- src/index.ts | 85 +- yarn.lock | 3312 +++++++++++++++++++++++++++--------------------- 4 files changed, 2154 insertions(+), 1675 deletions(-) diff --git a/package.json b/package.json index 28a0281..a4673bc 100644 --- a/package.json +++ b/package.json @@ -23,23 +23,25 @@ "test:watch": "ava -w" }, "dependencies": { - "@babel/generator": "7.0.0-beta.38", - "@babel/traverse": "7.0.0-beta.38", - "@babel/types": "7.0.0-beta.38", - "glob": "^7.1.2", - "lodash": "^4.17.4", - "mz": "^2.7.0" + "@babel/generator": "7.2.2", + "@babel/parser": "7.2.3", + "@babel/traverse": "7.2.3", + "@babel/types": "7.2.2", + "glob": "^7.1.3", + "lodash": "^4.17.11", + "mz": "^2.7.0", + "stdin": "^0.0.1" }, "devDependencies": { - "@types/glob": "^5.0.33", - "@types/lodash": "^4.14.86", + "@types/glob": "^7.1.1", + "@types/lodash": "^4.14.119", "@types/minimist": "^1.2.0", "@types/mz": "^0.0.32", - "ava": "^0.24.0", - "concurrently": "^3.5.1", + "ava": "^1.0.1", + "concurrently": "^4.1.0", "flow-bin": "^0.59.0", - "tslint": "^5.8.0", - "typescript": "^2.6.2" + "tslint": "^5.12.0", + "typescript": "^3.2.2" }, "ava": { "files": [ diff --git a/src/convert.ts b/src/convert.ts index 881474f..9f0ecc8 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -1,215 +1,309 @@ -import { booleanLiteral, Flow, FlowType, FunctionTypeAnnotation, identifier, Identifier, isSpreadProperty, isTSTypeParameter, isTypeParameter, Node, numericLiteral, stringLiteral, tsAnyKeyword, tsArrayType, tsAsExpression, tsBooleanKeyword, tsFunctionType, TSFunctionType, tsIntersectionType, tsLiteralType, tsNullKeyword, tsNumberKeyword, tsPropertySignature, tsStringKeyword, tsThisType, tsTupleType, TSType, tsTypeAnnotation, tsTypeLiteral, tsTypeParameter, tsTypeParameterDeclaration, tsTypeQuery, tsTypeReference, tsUndefinedKeyword, tsUnionType, tsVoidKeyword, TypeAnnotation, TypeParameter } from '@babel/types' -import { generateFreeIdentifier } from './utils' +import { + booleanLiteral, + Flow, + FlowType, + FunctionTypeAnnotation, + identifier, + Identifier, + isSpreadProperty, + isTSTypeParameter, + isTypeParameter, + Node, + numericLiteral, + stringLiteral, + tsAnyKeyword, + tsArrayType, + tsAsExpression, + tsBooleanKeyword, + tsFunctionType, + TSFunctionType, + tsIntersectionType, + tsLiteralType, + tsNullKeyword, + tsNumberKeyword, + tsPropertySignature, + tsStringKeyword, + tsThisType, + tsTupleType, + TSType, + tsTypeAnnotation, + tsTypeLiteral, + tsTypeParameter, + tsTypeParameterDeclaration, + tsTypeQuery, + tsTypeReference, + tsUndefinedKeyword, + tsUnionType, + tsVoidKeyword, + TypeAnnotation, + TypeParameter, + tsQualifiedName, + QualifiedTypeIdentifier, +} from "@babel/types"; +import { generateFreeIdentifier } from "./utils"; // TODO: Add overloads export function toTs(node: Flow | TSType): TSType { + console.log(`\t ${node.type}`); switch (node.type) { - // TS types // TODO: Why does tsTs get called with TSTypes? It should only get called with Flow types. - case 'TSAnyKeyword': - case 'TSArrayType': - case 'TSBooleanKeyword': - case 'TSConstructorType': - case 'TSExpressionWithTypeArguments': - case 'TSFunctionType': - case 'TSIndexedAccessType': - case 'TSIntersectionType': - case 'TSLiteralType': - case 'TSMappedType': - case 'TSNeverKeyword': - case 'TSNullKeyword': - case 'TSNumberKeyword': - case 'TSObjectKeyword': - case 'TSParenthesizedType': - case 'TSStringKeyword': - case 'TSSymbolKeyword': - case 'TSThisType': - case 'TSTupleType': - case 'TSTypeAnnotation': - case 'TSTypeLiteral': - case 'TSTypeOperator': - case 'TSTypePredicate': - case 'TSTypeQuery': - case 'TSTypeReference': - case 'TSUndefinedKeyword': - case 'TSUnionType': - case 'TSVoidKeyword': - case 'TSTypeParameterDeclaration': - case 'TSAsExpression': - case 'TSPropertySignature': - return node + case "TSAnyKeyword": + case "TSArrayType": + case "TSBooleanKeyword": + case "TSConstructorType": + case "TSExpressionWithTypeArguments": + case "TSFunctionType": + case "TSIndexedAccessType": + case "TSIntersectionType": + case "TSLiteralType": + case "TSMappedType": + case "TSNeverKeyword": + case "TSNullKeyword": + case "TSNumberKeyword": + case "TSObjectKeyword": + case "TSParenthesizedType": + case "TSStringKeyword": + case "TSSymbolKeyword": + case "TSThisType": + case "TSTupleType": + case "TSTypeAnnotation": + case "TSTypeLiteral": + case "TSTypeOperator": + case "TSTypePredicate": + case "TSTypeQuery": + case "TSTypeReference": + case "TSUndefinedKeyword": + case "TSUnionType": + case "TSVoidKeyword": + case "TSTypeParameterDeclaration": + case "TSAsExpression": + case "TSPropertySignature": + return node; // Flow types - case 'AnyTypeAnnotation': - case 'ArrayTypeAnnotation': - case 'BooleanTypeAnnotation': - case 'BooleanLiteralTypeAnnotation': - case 'FunctionTypeAnnotation': - case 'GenericTypeAnnotation': - case 'IntersectionTypeAnnotation': - case 'MixedTypeAnnotation': - case 'NullableTypeAnnotation': - case 'NullLiteralTypeAnnotation': - case 'NumericLiteralTypeAnnotation': - case 'NumberTypeAnnotation': - case 'StringLiteralTypeAnnotation': - case 'StringTypeAnnotation': - case 'ThisTypeAnnotation': - case 'TupleTypeAnnotation': - case 'TypeofTypeAnnotation': - case 'TypeAnnotation': - case 'ObjectTypeAnnotation': - case 'UnionTypeAnnotation': - case 'VoidTypeAnnotation': - return toTsType(node) - - case 'ObjectTypeProperty': - let _ = tsPropertySignature(node.key, tsTypeAnnotation(toTs(node.value))) - _.optional = node.optional - _.readonly = node.variance && node.variance.kind === 'minus' - return _ - - case 'TypeCastExpression': - return tsAsExpression(node.expression, toTs(node.typeAnnotation)) - - case 'TypeParameterDeclaration': + case "AnyTypeAnnotation": + case "ArrayTypeAnnotation": + case "BooleanTypeAnnotation": + case "BooleanLiteralTypeAnnotation": + case "FunctionTypeAnnotation": + case "GenericTypeAnnotation": + case "IntersectionTypeAnnotation": + case "MixedTypeAnnotation": + case "NullableTypeAnnotation": + case "NullLiteralTypeAnnotation": + case "NumericLiteralTypeAnnotation": + case "NumberTypeAnnotation": + case "StringLiteralTypeAnnotation": + case "StringTypeAnnotation": + case "ThisTypeAnnotation": + case "TupleTypeAnnotation": + case "TypeofTypeAnnotation": + case "TypeAnnotation": + case "ObjectTypeAnnotation": + case "UnionTypeAnnotation": + case "VoidTypeAnnotation": + return toTsType(node); + + case "ObjectTypeProperty": + let _ = tsPropertySignature(node.key, tsTypeAnnotation(toTs(node.value))); + _.optional = node.optional; + _.readonly = node.variance && node.variance.kind === "minus"; + return _; + + case "TypeCastExpression": + return tsAsExpression(node.expression, toTs(node.typeAnnotation)); + + case "TypeParameterDeclaration": let params = node.params.map(_ => { - let d = (_ as any as TypeParameter).default + let d = ((_ as any) as TypeParameter).default; let p = tsTypeParameter( hasBound(_) ? toTsType(_.bound.typeAnnotation) : undefined, d ? toTs(d) : undefined - ) - p.name = _.name - return p - }) + ); + p.name = _.name; + return p; + }); + + return tsTypeParameterDeclaration(params); - return tsTypeParameterDeclaration(params) - - case 'ClassImplements': - case 'ClassProperty': - case 'DeclareClass': - case 'DeclareFunction': - case 'DeclareInterface': - case 'DeclareModule': - case 'DeclareTypeAlias': - case 'DeclareVariable': - case 'ExistentialTypeParam': - case 'FunctionTypeParam': - case 'InterfaceExtends': - case 'InterfaceDeclaration': - case 'TypeAlias': - case 'TypeParameterInstantiation': - case 'ObjectTypeCallProperty': - case 'ObjectTypeIndexer': - case 'QualifiedTypeIdentifier': - throw 'wut' + case "ClassImplements": + case "ClassProperty": + case "DeclareClass": + case "DeclareFunction": + case "DeclareInterface": + case "DeclareModule": + case "DeclareTypeAlias": + case "DeclareVariable": + case "ExistentialTypeParam": + case "FunctionTypeParam": + case "InterfaceExtends": + case "InterfaceDeclaration": + case "TypeAlias": + case "TypeParameterInstantiation": + case "ObjectTypeCallProperty": + case "ObjectTypeIndexer": + case "QualifiedTypeIdentifier": + console.dir(node); + throw "wut"; } } export function toTsType(node: FlowType): TSType { switch (node.type) { - case 'AnyTypeAnnotation': return tsAnyKeyword() - case 'ArrayTypeAnnotation': return tsArrayType(toTsType(node.elementType)) - case 'BooleanTypeAnnotation': return tsBooleanKeyword() - case 'BooleanLiteralTypeAnnotation': return tsLiteralType(booleanLiteral(node.value!)) - case 'FunctionTypeAnnotation': return functionToTsType(node) - case 'GenericTypeAnnotation': return tsTypeReference(node.id) - case 'IntersectionTypeAnnotation': return tsIntersectionType(node.types.map(toTsType)) - case 'MixedTypeAnnotation': return tsAnyKeyword() - case 'NullLiteralTypeAnnotation': return tsNullKeyword() - case 'NullableTypeAnnotation': return tsUnionType([toTsType(node.typeAnnotation), tsNullKeyword(), tsUndefinedKeyword()]) - case 'NumberLiteralTypeAnnotation': return tsLiteralType(numericLiteral(node.value!)) - case 'NumberTypeAnnotation': return tsNumberKeyword() - case 'StringLiteralTypeAnnotation': return tsLiteralType(stringLiteral(node.value!)) - case 'StringTypeAnnotation': return tsStringKeyword() - case 'ThisTypeAnnotation': return tsThisType() - case 'TupleTypeAnnotation': return tsTupleType(node.types.map(toTsType)) - case 'TypeofTypeAnnotation': return tsTypeQuery(getId(node.argument)) - case 'ObjectTypeAnnotation': return tsTypeLiteral([ - ...node.properties.map(_ => { - if (isSpreadProperty(_)) { - return _ - } - let s = tsPropertySignature(_.key, tsTypeAnnotation(toTsType(_.value))) - s.optional = _.optional - return s - // TODO: anonymous indexers - // TODO: named indexers - // TODO: call properties - // TODO: variance - }) - // ...node.indexers.map(_ => tSIndexSignature()) - ]) - case 'UnionTypeAnnotation': return tsUnionType(node.types.map(toTsType)) - case 'VoidTypeAnnotation': return tsVoidKeyword() + case "AnyTypeAnnotation": + return tsAnyKeyword(); + case "ArrayTypeAnnotation": + return tsArrayType(toTsType(node.elementType)); + case "BooleanTypeAnnotation": + return tsBooleanKeyword(); + case "BooleanLiteralTypeAnnotation": + return tsLiteralType(booleanLiteral(node.value!)); + case "FunctionTypeAnnotation": + return functionToTsType(node); + case "GenericTypeAnnotation": + if (node.id.type === "QualifiedTypeIdentifier") { + const qualifiedTypeIdentifier: QualifiedTypeIdentifier = node.id; + console.dir(node); + return tsTypeReference( + tsQualifiedName( + qualifiedTypeIdentifier.qualification, + qualifiedTypeIdentifier.id + ) + ); + } else { + return tsTypeReference(node.id); + } + case "IntersectionTypeAnnotation": + return tsIntersectionType(node.types.map(toTsType)); + case "MixedTypeAnnotation": + return tsAnyKeyword(); + case "NullLiteralTypeAnnotation": + return tsNullKeyword(); + case "NullableTypeAnnotation": + return tsUnionType([ + toTsType(node.typeAnnotation), + tsNullKeyword(), + tsUndefinedKeyword(), + ]); + case "NumberLiteralTypeAnnotation": + return tsLiteralType(numericLiteral(node.value!)); + case "NumberTypeAnnotation": + return tsNumberKeyword(); + case "StringLiteralTypeAnnotation": + return tsLiteralType(stringLiteral(node.value!)); + case "StringTypeAnnotation": + return tsStringKeyword(); + case "ThisTypeAnnotation": + return tsThisType(); + case "TupleTypeAnnotation": + return tsTupleType(node.types.map(toTsType)); + case "TypeofTypeAnnotation": + return tsTypeQuery(getId(node.argument)); + + case "TypeAnnotation": + console.log(node); + return toTsType(node.typeAnnotation); + + case "ObjectTypeAnnotation": + return tsTypeLiteral([ + ...node.properties.map(_ => { + if (isSpreadProperty(_)) { + return _; + } + let s = tsPropertySignature( + _.key, + tsTypeAnnotation(toTsType(_.value)) + ); + s.optional = _.optional; + return s; + // TODO: anonymous indexers + // TODO: named indexers + // TODO: call properties + // TODO: variance + }), + // ...node.indexers.map(_ => tSIndexSignature()) + ]); + case "UnionTypeAnnotation": + return tsUnionType(node.types.map(toTsType)); + case "VoidTypeAnnotation": + return tsVoidKeyword(); + case "QualifiedTypeAnnotation": + console.dir(node); + default: + throw new Error(`Didn't understand type '${node.type}'`); } } function getId(node: FlowType): Identifier { switch (node.type) { - case 'GenericTypeAnnotation': return node.id - default: throw ReferenceError('typeof query must reference a node that has an id') + case "GenericTypeAnnotation": + return node.id; + default: + throw ReferenceError("typeof query must reference a node that has an id"); } } function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { - - let typeParams = undefined + let typeParams = undefined; if (node.typeParameters) { - typeParams = tsTypeParameterDeclaration(node.typeParameters.params.map(_ => { - - // TODO: How is this possible? - if (isTSTypeParameter(_)) { - return _ - } + typeParams = tsTypeParameterDeclaration( + node.typeParameters.params.map(_ => { + // TODO: How is this possible? + if (isTSTypeParameter(_)) { + return _; + } - let constraint = _.bound ? toTs(_.bound) : undefined - let default_ = _.default ? toTs(_.default) : undefined - let param = tsTypeParameter(constraint, default_) - param.name = _.name - return param - })) + let constraint = _.bound ? toTs(_.bound) : undefined; + let default_ = _.default ? toTs(_.default) : undefined; + let param = tsTypeParameter(constraint, default_); + param.name = _.name; + return param; + }) + ); } - let f = tsFunctionType(typeParams) + let f = tsFunctionType(typeParams); // Params if (node.params) { // TODO: Rest params - let paramNames = node.params.map(_ => _.name).filter(_ => _ !== null).map(_ => (_ as Identifier).name) + let paramNames = node.params + .map(_ => _.name) + .filter(_ => _ !== null) + .map(_ => (_ as Identifier).name); f.parameters = node.params.map(_ => { - let name = _.name && _.name.name + let name = _.name && _.name.name; // Generate param name? (Required in TS, optional in Flow) if (name == null) { - name = generateFreeIdentifier(paramNames) - paramNames.push(name) + name = generateFreeIdentifier(paramNames); + paramNames.push(name); } - let id = identifier(name) + let id = identifier(name); if (_.typeAnnotation) { - id.typeAnnotation = tsTypeAnnotation(toTsType(_.typeAnnotation)) + id.typeAnnotation = tsTypeAnnotation(toTsType(_.typeAnnotation)); } - return id - }) + return id; + }); } // Return type if (node.returnType) { - f.typeAnnotation = tsTypeAnnotation(toTsType(node.returnType)) + f.typeAnnotation = tsTypeAnnotation(toTsType(node.returnType)); } - return f + return f; } function hasBound(node: Node): node is BoundedTypeParameter { - return isTypeParameter(node) && node.bound != null + return isTypeParameter(node) && node.bound != null; } interface BoundedTypeParameter extends TypeParameter { - bound: TypeAnnotation + bound: TypeAnnotation; } diff --git a/src/index.ts b/src/index.ts index a4003f9..d6bb7bf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,71 +1,88 @@ -import { parse } from '@babel/babylon' -import generate from '@babel/generator' -import traverse, { Node, Visitor } from '@babel/traverse' -import { File } from '@babel/types' -import { sync } from 'glob' -import { dropWhile, pullAt } from 'lodash' -import { EOL } from 'os' -import { relative, resolve } from 'path' +import { parse } from "@babel/parser"; +import generate from "@babel/generator"; +import traverse, { Node, Visitor } from "@babel/traverse"; +import { File } from "@babel/types"; +import { sync } from "glob"; +import { dropWhile, pullAt } from "lodash"; +import { EOL } from "os"; +import { relative, resolve } from "path"; -type Warning = [string, string, number, number] -type Rule = (warnings: Warning[]) => Visitor +type Warning = [string, string, number, number]; +type Rule = (warnings: Warning[]) => Visitor; -let rules = new Map() +let rules = new Map(); export function addRule(ruleName: string, rule: Rule) { if (rules.has(ruleName)) { - throw `A rule with the name "${ruleName}" is already defined` + throw `A rule with the name "${ruleName}" is already defined`; } - rules.set(ruleName, rule) + rules.set(ruleName, rule); } export async function compile(code: string, filename: string) { + console.log("Parse..."); + const parsed = parse(code, { + plugins: ["classProperties", "flow", "objectRestSpread"], + sourceType: "module", + }); + console.log("Convert..."); + let [warnings, ast] = await convert(parsed); - let [warnings, ast] = await convert( - parse(code, { plugins: ['classProperties', 'flow', 'objectRestSpread'], sourceType: 'module' }) - ) - + console.log("Warnings..."); warnings.forEach(([message, issueURL, line, column]) => { - console.log(`Warning: ${message} (at ${relative(__dirname, filename)}: line ${line}, column ${column}). See ${issueURL}`) - }) + console.log( + `Warning: ${message} (at ${relative( + __dirname, + filename + )}: line ${line}, column ${column}). See ${issueURL}` + ); + }); - return addTrailingSpace(trimLeadingNewlines(generate(stripAtFlowAnnotation(ast)).code)) + console.log("Strip flow annotations..."); + return addTrailingSpace( + trimLeadingNewlines(generate(stripAtFlowAnnotation(ast)).code) + ); } /** * @internal */ export async function convert(ast: T): Promise<[Warning[], T]> { - + console.log("Loading rules..."); // load rules directory - await Promise.all(sync(resolve(__dirname, './rules/*.js')).map(_ => import(_))) + await Promise.all( + sync(resolve(__dirname, "./rules/*.js")).map(_ => import(_)) + ); + + let warnings: Warning[] = []; + rules.forEach((visitor, i) => { + console.log(`Running visitor ${i}`); - let warnings: Warning[] = [] - rules.forEach(visitor => - traverse(ast, visitor(warnings)) - ) + return traverse(ast, visitor(warnings)); + }); + console.log("Done"); - return [warnings, ast] + return [warnings, ast]; } function stripAtFlowAnnotation(ast: File): File { - let { leadingComments } = ast.program.body[0] + let { leadingComments } = ast.program.body[0]; if (leadingComments) { - let index = leadingComments.findIndex(_ => _.value.trim() === '@flow') + let index = leadingComments.findIndex(_ => _.value.trim() === "@flow"); if (index > -1) { - pullAt(leadingComments, index) + pullAt(leadingComments, index); } } - return ast + return ast; } function addTrailingSpace(file: string): string { if (file.endsWith(EOL)) { - return file + return file; } - return file + EOL + return file + EOL; } function trimLeadingNewlines(file: string): string { - return dropWhile(file.split(EOL), _ => !_).join(EOL) + return dropWhile(file.split(EOL), _ => !_).join(EOL); } diff --git a/yarn.lock b/yarn.lock index e760061..96bd7c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,33 +2,31 @@ # yarn lockfile v1 -"@ava/babel-plugin-throws-helper@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz#2fc1fe3c211a71071a4eca7b8f7af5842cd1ae7c" - -"@ava/babel-preset-stage-4@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-1.1.0.tgz#ae60be881a0babf7d35f52aba770d1f6194f76bd" - dependencies: - babel-plugin-check-es2015-constants "^6.8.0" - babel-plugin-syntax-trailing-function-commas "^6.20.0" - babel-plugin-transform-async-to-generator "^6.16.0" - babel-plugin-transform-es2015-destructuring "^6.19.0" - babel-plugin-transform-es2015-function-name "^6.9.0" - babel-plugin-transform-es2015-modules-commonjs "^6.18.0" - babel-plugin-transform-es2015-parameters "^6.21.0" - babel-plugin-transform-es2015-spread "^6.8.0" - babel-plugin-transform-es2015-sticky-regex "^6.8.0" - babel-plugin-transform-es2015-unicode-regex "^6.11.0" - babel-plugin-transform-exponentiation-operator "^6.8.0" - package-hash "^1.2.0" - -"@ava/babel-preset-transform-test-files@^3.0.0": +"@ava/babel-plugin-throws-helper@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-3.0.0.tgz#cded1196a8d8d9381a509240ab92e91a5ec069f7" + resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-3.0.0.tgz#2c933ec22da0c4ce1fc5369f2b95452c70420586" + integrity sha512-mN9UolOs4WX09QkheU1ELkVy2WPnwonlO3XMdN8JF8fQqRVgVTR21xDbvEOUsbwz6Zwjq7ji9yzyjuXqDPalxg== + +"@ava/babel-preset-stage-4@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@ava/babel-preset-stage-4/-/babel-preset-stage-4-2.0.0.tgz#2cd072ff818e4432b87fd4c5fd5c5d1a405a4343" + integrity sha512-OWqMYeTSZ16AfLx0Vn0Uj7tcu+uMRlbKmks+DVCFlln7vomVsOtst+Oz+HCussDSFGpE+30VtHAUHLy6pLDpHQ== + dependencies: + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.0.0" + "@babel/plugin-transform-dotall-regex" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + +"@ava/babel-preset-transform-test-files@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-4.0.0.tgz#95d426f5982f934567ae5a21e43eac0a463d6feb" + integrity sha512-V9hYHA/ZLb4I8imrrG8PT0mzgThjWWmahPV+mrQUZobVnsekBUDrf0JsfXVm4guS3binWxWn+MmQt+V81hTizA== dependencies: - "@ava/babel-plugin-throws-helper" "^2.0.0" - babel-plugin-espower "^2.3.2" + "@ava/babel-plugin-throws-helper" "^3.0.0" + babel-plugin-espower "^3.0.0" "@ava/write-file-atomic@^2.2.0": version "2.2.0" @@ -38,72 +36,291 @@ imurmurhash "^0.1.4" slide "^1.1.5" -"@babel/code-frame@7.0.0-beta.38": - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz#c0af5930617e55e050336838e3a3670983b0b2b2" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" + integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.2" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.2.2" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" -"@babel/generator@7.0.0-beta.38": - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.38.tgz#6115a66663e3adfd1d6844029ffb2354680182eb" +"@babel/generator@7.2.2", "@babel/generator@^7.0.0", "@babel/generator@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" + integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== dependencies: - "@babel/types" "7.0.0-beta.38" + "@babel/types" "^7.2.2" jsesc "^2.5.1" - lodash "^4.2.0" + lodash "^4.17.10" source-map "^0.5.0" trim-right "^1.0.1" -"@babel/helper-function-name@7.0.0-beta.38": - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.38.tgz#dc6e74930efc7b0236b5ba72a633d34c778ba015" - dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.38" - "@babel/template" "7.0.0-beta.38" - "@babel/types" "7.0.0-beta.38" - -"@babel/helper-get-function-arity@7.0.0-beta.38": - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.38.tgz#5c27de7641ac31da6e947dcc8009bd31282d9d84" +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963" + integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.2.2" + "@babel/types" "^7.2.2" + lodash "^4.17.10" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" + integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.2.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== dependencies: - "@babel/types" "7.0.0-beta.38" - -"@babel/template@7.0.0-beta.38": - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.38.tgz#8a2d403a01da320beb8333dc6403500fa79e8597" - dependencies: - "@babel/code-frame" "7.0.0-beta.38" - "@babel/types" "7.0.0-beta.38" - babylon "7.0.0-beta.38" - lodash "^4.2.0" + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" -"@babel/traverse@7.0.0-beta.38": - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.38.tgz#56462b91753dd5c6faf36e56a77c64077ddb85b8" - dependencies: - "@babel/code-frame" "7.0.0-beta.38" - "@babel/generator" "7.0.0-beta.38" - "@babel/helper-function-name" "7.0.0-beta.38" - "@babel/types" "7.0.0-beta.38" - babylon "7.0.0-beta.38" - debug "^3.0.1" +"@babel/parser@7.2.3", "@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" + integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== + +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8" + integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" + integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-dotall-regex@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49" + integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-exponentiation-operator@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404" + integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + +"@babel/traverse@7.2.3", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" globals "^11.1.0" - invariant "^2.2.0" - lodash "^4.2.0" + lodash "^4.17.10" -"@babel/types@7.0.0-beta.38": - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.38.tgz#2ce2443f7dc6ad535a67db4940cbd34e64035a6f" +"@babel/types@7.2.2", "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" + integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== dependencies: esutils "^2.0.2" - lodash "^4.2.0" + lodash "^4.17.10" to-fast-properties "^2.0.0" -"@concordance/react@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@concordance/react/-/react-1.0.0.tgz#fcf3cad020e5121bfd1c61d05bc3516aac25f734" +"@concordance/react@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@concordance/react/-/react-2.0.0.tgz#aef913f27474c53731f4fd79cc2f54897de90fde" + integrity sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA== dependencies: arrify "^1.0.1" @@ -111,17 +328,19 @@ version "1.1.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-1.1.0.tgz#93b1be91f63c184450385272c47b6496fd028e02" -"@types/glob@^5.0.33": - version "5.0.34" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.34.tgz#ee626c9be3da877d717911c6101eee0a9871bbf4" +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== dependencies: "@types/events" "*" "@types/minimatch" "*" "@types/node" "*" -"@types/lodash@^4.14.86": - version "4.14.91" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.91.tgz#794611b28056d16b5436059c6d800b39d573cd3a" +"@types/lodash@^4.14.119": + version "4.14.119" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.119.tgz#be847e5f4bc3e35e46d041c394ead8b603ad8b39" + integrity sha512-Z3TNyBL8Vd/M9D9Ms2S3LmFq2sSMzahodD6rCS9V2N44HUMINb75jNkSuwAx7eo2ufqTdfOdtGQpNbieUjPQmw== "@types/minimatch@*": version "3.0.2" @@ -145,26 +364,16 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" dependencies: string-width "^2.0.0" -ansi-escapes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" - -ansi-regex@^0.2.0, ansi-regex@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" +ansi-escapes@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== ansi-regex@^2.0.0: version "2.1.1" @@ -174,9 +383,10 @@ ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" -ansi-styles@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== ansi-styles@^2.2.1: version "2.2.1" @@ -188,20 +398,24 @@ ansi-styles@^3.1.0: dependencies: color-convert "^1.9.0" -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" + micromatch "^3.1.4" + normalize-path "^2.1.1" aproba@^1.0.3: version "1.2.0" @@ -220,19 +434,20 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-exclude@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-differ@^1.0.0: version "1.0.0" @@ -248,149 +463,126 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" -array-uniq@^1.0.1, array-uniq@^1.0.2: +array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +array-uniq@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-2.0.0.tgz#0009e30306e37a6dd2e2e2480db5316fdade1583" + integrity sha512-O3QZEr+3wDj7otzF7PjNGs6CA3qmYMLvt5xGkjY/V0VxS+ovvqVo/5wKM/OVOAyuX4DTh9H31zE/yKtO66hTkg== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: +assign-symbols@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -auto-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961" - -ava-init@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ava-init/-/ava-init-0.2.1.tgz#75ac4c8553326290d2866e63b62fa7035684bd58" - dependencies: - arr-exclude "^1.0.0" - execa "^0.7.0" - has-yarn "^1.0.0" - read-pkg-up "^2.0.0" - write-pkg "^3.1.0" +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -ava@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/ava/-/ava-0.24.0.tgz#dd0ab33a0b3ad2ac582f55e9a61caf8bcf7a9af1" +ava@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ava/-/ava-1.0.1.tgz#04be9a12ba60c55cfc869350ec04520ba3c94698" + integrity sha512-wTb9D14fytTeSOyNu+if6nzSni+MyEn9xgpJki2V5MiTbwMVtt4Svh40gCIos3k5Jqp1wXPCTZLIGKLpI965fQ== dependencies: - "@ava/babel-preset-stage-4" "^1.1.0" - "@ava/babel-preset-transform-test-files" "^3.0.0" + "@ava/babel-preset-stage-4" "^2.0.0" + "@ava/babel-preset-transform-test-files" "^4.0.0" "@ava/write-file-atomic" "^2.2.0" - "@concordance/react" "^1.0.0" - ansi-escapes "^3.0.0" - ansi-styles "^3.1.0" - arr-flatten "^1.0.1" + "@babel/core" "^7.2.2" + "@babel/generator" "^7.2.2" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@concordance/react" "^2.0.0" + ansi-escapes "^3.1.0" + ansi-styles "^3.2.1" + arr-flatten "^1.1.0" array-union "^1.0.1" - array-uniq "^1.0.2" + array-uniq "^2.0.0" arrify "^1.0.0" - auto-bind "^1.1.0" - ava-init "^0.2.0" - babel-core "^6.17.0" - babel-generator "^6.26.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" - bluebird "^3.0.0" - caching-transform "^1.0.0" - chalk "^2.0.1" - chokidar "^1.4.2" - clean-stack "^1.1.1" + bluebird "^3.5.3" + chalk "^2.4.1" + chokidar "^2.0.4" + chunkd "^1.0.0" + ci-parallel-vars "^1.0.0" + clean-stack "^2.0.0" clean-yaml-object "^0.1.0" cli-cursor "^2.1.0" - cli-spinners "^1.0.0" - cli-truncate "^1.0.0" - co-with-promise "^4.6.0" - code-excerpt "^2.1.0" + cli-truncate "^1.1.0" + code-excerpt "^2.1.1" common-path-prefix "^1.0.0" - concordance "^3.0.0" - convert-source-map "^1.2.0" - core-assert "^0.2.0" + concordance "^4.0.0" + convert-source-map "^1.6.0" currently-unhandled "^0.4.1" - debug "^3.0.1" - dot-prop "^4.1.0" - empower-core "^0.6.1" + debug "^4.1.0" + del "^3.0.0" + dot-prop "^4.2.0" + emittery "^0.4.1" + empower-core "^1.2.0" equal-length "^1.0.0" + escape-string-regexp "^1.0.5" + esm "^3.0.84" figures "^2.0.0" - find-cache-dir "^1.0.0" - fn-name "^2.0.0" - get-port "^3.0.0" - globby "^6.0.0" - has-flag "^2.0.0" - hullabaloo-config-manager "^1.1.0" + find-up "^3.0.0" + get-port "^4.0.0" + globby "^7.1.1" ignore-by-default "^1.0.0" - import-local "^0.1.1" - indent-string "^3.0.0" - is-ci "^1.0.7" - is-generator-fn "^1.0.0" - is-obj "^1.0.0" - is-observable "^1.0.0" + import-local "^2.0.0" + indent-string "^3.2.0" + is-ci "^2.0.0" + is-error "^2.2.1" + is-observable "^1.1.0" + is-plain-object "^2.0.4" is-promise "^2.1.0" - js-yaml "^3.8.2" - last-line-stream "^1.0.0" + lodash.clone "^4.5.0" + lodash.clonedeep "^4.5.0" lodash.clonedeepwith "^4.5.0" lodash.debounce "^4.0.3" lodash.difference "^4.3.0" lodash.flatten "^4.2.0" loud-rejection "^1.2.0" - make-dir "^1.0.0" - matcher "^1.0.0" + make-dir "^1.3.0" + matcher "^1.1.1" md5-hex "^2.0.0" - meow "^3.7.0" - ms "^2.0.0" + meow "^5.0.0" + ms "^2.1.1" multimatch "^2.1.0" observable-to-promise "^0.5.0" - option-chain "^1.0.0" + ora "^3.0.0" package-hash "^2.0.0" - pkg-conf "^2.0.0" - plur "^2.0.0" - pretty-ms "^3.0.0" + pkg-conf "^2.1.0" + plur "^3.0.1" + pretty-ms "^4.0.0" require-precompiled "^0.1.0" resolve-cwd "^2.0.0" - safe-buffer "^5.1.1" - semver "^5.4.1" - slash "^1.0.0" - source-map-support "^0.5.0" - stack-utils "^1.0.1" - strip-ansi "^4.0.0" + slash "^2.0.0" + source-map-support "^0.5.9" + stack-utils "^1.0.2" + strip-ansi "^5.0.0" strip-bom-buf "^1.0.0" - supports-color "^5.0.0" - time-require "^0.1.2" + supertap "^1.0.0" + supports-color "^5.5.0" trim-off-newlines "^1.0.1" + trim-right "^1.0.1" unique-temp-dir "^1.0.0" - update-notifier "^2.3.0" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + update-notifier "^2.5.0" -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -398,325 +590,44 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.17.0, babel-core@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.0" - debug "^2.6.8" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.7" - slash "^1.0.0" - source-map "^0.5.6" - -babel-generator@^6.1.0, babel-generator@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.6" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-espower@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-2.3.2.tgz#5516b8fcdb26c9f0e1d8160749f6e4c65e71271e" +babel-plugin-espower@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.0.tgz#8dadfa5ec2b9c82e3c4aa0a2d14fbd3ff6d40061" + integrity sha512-f2IUz5kQyrwXnShcv7tvGxf76QkrEl00ENYgd6R0VMrz4xqlwBLZXFs5vse2vehs1Z+T2sXTP3UWX2QxMorzzw== dependencies: - babel-generator "^6.1.0" - babylon "^6.1.0" + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" call-matcher "^1.0.0" core-js "^2.0.0" espower-location-detector "^1.0.0" espurify "^1.6.0" estraverse "^4.1.1" -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-object-rest-spread@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.20.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@^6.16.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-destructuring@^6.19.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.9.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.18.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-parameters@^6.21.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-unicode-regex@^6.11.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@7.0.0-beta.38: - version "7.0.0-beta.38" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.38.tgz#9b3a33e571a47464a2d20cb9dd5a570f00e3f996" - -babylon@^6.1.0, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: - tweetnacl "^0.14.3" + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird@^3.0.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" +bluebird@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== boxen@^1.2.1: version "1.3.0" @@ -737,29 +648,45 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" -buf-compare@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -caching-transform@^1.0.0: +cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1" - dependencies: - md5-hex "^1.2.0" - mkdirp "^0.5.1" - write-file-atomic "^1.1.4" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" call-matcher@^1.0.0: version "1.0.1" @@ -774,47 +701,28 @@ call-signature@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" -camelcase@^4.0.0: +camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +camelcase@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -chalk@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" - dependencies: - ansi-styles "^1.1.0" - escape-string-regexp "^1.0.0" - has-ansi "^0.1.0" - strip-ansi "^0.3.0" - supports-color "^0.2.0" - -chalk@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -825,7 +733,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: +chalk@^2.0.0, chalk@^2.0.1: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: @@ -833,28 +741,74 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" -chokidar@^1.4.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" +chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: - anymatch "^1.3.0" + anymatch "^2.0.0" async-each "^1.0.0" - glob-parent "^2.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" inherits "^2.0.1" is-binary-path "^1.0.0" - is-glob "^2.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" path-is-absolute "^1.0.0" readdirp "^2.0.0" + upath "^1.0.5" optionalDependencies: - fsevents "^1.0.0" + fsevents "^1.2.2" -ci-info@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4" +chownr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== -clean-stack@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" +chunkd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-1.0.0.tgz#4ead4a3704bcce510c4bb4d4a8be30c557836dd1" + integrity sha512-xx3Pb5VF9QaqCotolyZ1ywFBgyuJmu6+9dLiqBxgelEse9Xsr3yUlpoX3O4Oh11M00GT2kYMsRByTKIMJW2Lkg== + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-parallel-vars@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.0.tgz#af97729ed1c7381911ca37bcea263d62638701b3" + integrity sha512-u6dx20FBXm+apMi+5x7UVm6EH7BL1gc4XrcnQewjcB7HWRcor/V5qWc3RG2HwpgDJ26gIi2DSEu3B7sXynAw/g== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.0.0.tgz#301bfa9e8dd2d3d984c0e542f7aa67b996f63e0a" + integrity sha512-VEoL9Qh7I8s8iHnV53DaeWSt8NJ0g3khMfK6NiCPB7H657juhro+cSw2O88uo3bo0c0X5usamtXk0/Of0wXa5A== clean-yaml-object@^0.1.0: version "0.1.0" @@ -870,30 +824,37 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-spinners@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.1.0.tgz#f1847b168844d917a671eb9d147e3df497c90d06" +cli-spinners@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" + integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== -cli-truncate@^1.0.0: +cli-truncate@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" + integrity sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA== dependencies: slice-ansi "^1.0.0" string-width "^2.0.0" -co-with-promise@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co-with-promise/-/co-with-promise-4.6.0.tgz#413e7db6f5893a60b942cf492c4bec93db415ab7" +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: - pinkie-promise "^1.0.0" + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -code-excerpt@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-2.1.0.tgz#5dcc081e88f4a7e3b554e9e35d7ef232d47f8147" +code-excerpt@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-2.1.1.tgz#5fe3057bfbb71a5f300f659ef2cc0a47651ba77c" + integrity sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw== dependencies: convert-to-spaces "^1.0.1" @@ -901,6 +862,14 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + color-convert@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" @@ -911,60 +880,55 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -commander@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" - -commander@^2.9.0: - version "2.12.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" +commander@^2.12.1: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== common-path-prefix@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concordance@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/concordance/-/concordance-3.0.0.tgz#b2286af54405fc995fc7345b0b106d8dd073cb29" +concordance@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/concordance/-/concordance-4.0.0.tgz#5932fdee397d129bdbc3a1885fbe69839b1b7e15" + integrity sha512-l0RFuB8RLfCS0Pt2Id39/oCPykE01pyxgAFypWTlaGRgvLkZrtczZ8atEHpTeEIW+zYWXTBuA9cCSeEOScxReQ== dependencies: date-time "^2.1.0" esutils "^2.0.2" - fast-diff "^1.1.1" - function-name-support "^0.2.0" + fast-diff "^1.1.2" js-string-escape "^1.0.1" lodash.clonedeep "^4.5.0" lodash.flattendeep "^4.4.0" - lodash.merge "^4.6.0" + lodash.islength "^4.0.1" + lodash.merge "^4.6.1" md5-hex "^2.0.0" - semver "^5.3.0" - well-known-symbols "^1.0.0" + semver "^5.5.1" + well-known-symbols "^2.0.0" -concurrently@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521" +concurrently@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.0.tgz#17fdf067da71210685d9ea554423ef239da30d33" + integrity sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg== dependencies: - chalk "0.5.1" - commander "2.6.0" + chalk "^2.4.1" date-fns "^1.23.0" - lodash "^4.5.1" - rx "2.3.24" + lodash "^4.17.10" + read-pkg "^4.0.1" + rxjs "^6.3.3" spawn-command "^0.0.2-1" - supports-color "^3.2.3" + supports-color "^4.5.0" tree-kill "^1.1.0" + yargs "^12.0.1" configstore@^3.0.0: version "3.1.1" @@ -981,26 +945,27 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" -convert-source-map@^1.2.0, convert-source-map@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +convert-source-map@^1.1.0, convert-source-map@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" convert-to-spaces@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" -core-assert@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" - dependencies: - buf-compare "^1.0.0" - is-error "^2.2.0" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.0.0, core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.0.0: version "2.5.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1018,11 +983,16 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: - boom "2.x.x" + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" crypto-random-string@^1.0.0: version "1.0.0" @@ -1034,67 +1004,104 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - date-fns@^1.23.0: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" -date-time@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" - date-time@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/date-time/-/date-time-2.1.0.tgz#0286d1b4c769633b3ca13e1e62558d2dbdc2eba2" dependencies: time-zone "^1.0.0" -debug@^2.2.0, debug@^2.6.8: +debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: - ms "2.0.0" + ms "^2.1.1" + +decamelize-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" -decamelize@^1.1.2: +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-equal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" -delegates@^1.0.0: +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: - repeating "^2.0.0" + is-descriptor "^1.0.2" + isobject "^3.0.1" -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" detect-libc@^1.0.2: version "1.0.3" @@ -1104,9 +1111,18 @@ diff@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" -dot-prop@^4.1.0: +dir-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dot-prop@^4.1.0, dot-prop@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== dependencies: is-obj "^1.0.0" @@ -1114,37 +1130,50 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" +emittery@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.4.1.tgz#abe9d3297389ba424ac87e53d1c701962ce7433d" + integrity sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ== -empower-core@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.2.tgz#5adef566088e31fba80ba0a36df47d7094169144" +empower-core@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-1.2.0.tgz#ce3fb2484d5187fa29c23fba8344b0b2fdf5601c" + integrity sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ== dependencies: call-signature "0.0.2" core-js "^2.0.0" +end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + equal-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es6-error@^4.0.1, es6-error@^4.0.2: +es6-error@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" -escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +esm@^3.0.84: + version "3.0.84" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63" + integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw== + espower-location-detector@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" @@ -1184,39 +1213,65 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: - is-posix-bracket "^0.1.0" + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: - fill-range "^2.1.0" + is-extendable "^0.1.0" -extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: - is-extglob "^1.0.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + assign-symbols "^1.0.0" + is-extendable "^1.0.1" -fast-diff@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== figures@^2.0.0: version "2.0.0" @@ -1224,102 +1279,63 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + flow-bin@^0.59.0: version "0.59.0" resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.59.0.tgz#8c151ee7f09f1deed9bf0b9d1f2e8ab9d470f1bb" -fn-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" - -for-in@^1.0.1: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + map-cache "^0.2.2" -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" + minipass "^2.2.1" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.39" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" +fsevents@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-name-support@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/function-name-support/-/function-name-support-0.2.0.tgz#55d3bfaa6eafd505a50f9bc81fdf57564a0bb071" + nan "^2.9.2" + node-pre-gyp "^0.10.0" gauge@~2.7.3: version "2.7.4" @@ -1334,36 +1350,39 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -get-port@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-port@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.1.0.tgz#93eb3d5552c197497d76e9c389a6ac9920e20192" + integrity sha512-4/fqAYrzrzOiqDrdeZRKXGdTGgbkfTEumGlNQPeP6Jy8w0PzN9mzeNQ3XgHaTNie8pQ3hOUkrwlZt2Fzk5H9mA== get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: - assert-plus "^1.0.0" + pump "^3.0.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: - is-glob "^2.0.0" + is-glob "^3.1.0" + path-dirname "^1.0.0" glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" @@ -1376,6 +1395,18 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -1386,13 +1417,10 @@ globals@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -globby@^6.0.0: +globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= dependencies: array-union "^1.0.1" glob "^7.0.3" @@ -1400,6 +1428,18 @@ globby@^6.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -1420,128 +1460,103 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -has-ansi@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" - dependencies: - ansi-regex "^0.2.0" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" dependencies: ansi-regex "^2.0.0" -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" -has-yarn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" -hawk@3.1.3, hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" + is-number "^3.0.0" + kind-of "^4.0.0" hosted-git-info@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -hullabaloo-config-manager@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/hullabaloo-config-manager/-/hullabaloo-config-manager-1.1.1.tgz#1d9117813129ad035fd9e8477eaf066911269fe3" +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: - dot-prop "^4.1.0" - es6-error "^4.0.2" - graceful-fs "^4.1.11" - indent-string "^3.1.0" - json5 "^0.5.1" - lodash.clonedeep "^4.5.0" - lodash.clonedeepwith "^4.5.0" - lodash.isequal "^4.5.0" - lodash.merge "^4.6.0" - md5-hex "^2.0.0" - package-hash "^2.0.0" - pkg-dir "^2.0.0" - resolve-from "^3.0.0" - safe-buffer "^5.0.1" + safer-buffer ">= 2.1.2 < 3" ignore-by-default@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" -import-local@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8" +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: - pkg-dir "^2.0.0" + pkg-dir "^3.0.0" resolve-cwd "^2.0.0" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0, indent-string@^3.1.0: +indent-string@^3.0.0, indent-string@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= inflight@^1.0.4: version "1.0.6" @@ -1550,7 +1565,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1558,15 +1573,29 @@ ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -invariant@^2.2.0, invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +irregular-plurals@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872" + integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: - loose-envify "^1.0.0" + kind-of "^3.0.2" -irregular-plurals@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" @@ -1588,39 +1617,73 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -is-ci@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== dependencies: - ci-info "^1.0.0" + ci-info "^1.5.0" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: - is-primitive "^2.0.0" + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" -is-error@^2.2.0: +is-error@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c" + integrity sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw= -is-extendable@^0.1.1: +is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: - number-is-nan "^1.0.0" + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -1632,15 +1695,19 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: - is-extglob "^1.0.0" + is-extglob "^2.1.1" is-installed-globally@^0.1.0: version "0.1.0" @@ -1653,12 +1720,6 @@ is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -1675,29 +1736,42 @@ is-observable@^0.2.0: dependencies: symbol-observable "^0.2.2" -is-observable@^1.0.0: +is-observable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== dependencies: symbol-observable "^1.1.0" +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.0.0: +is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" is-promise@^2.1.0: version "2.1.0" @@ -1715,18 +1789,19 @@ is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - is-url@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" -is-utf8@^0.2.0, is-utf8@^0.2.1: +is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -1741,33 +1816,32 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" -js-tokens@^3.0.0, js-tokens@^3.0.2: +js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.8.2: - version "3.10.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.10.0, js-yaml@^3.7.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - jsesc@^2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" @@ -1776,38 +1850,19 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" + minimist "^1.2.0" -kind-of@^3.0.2: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: @@ -1819,11 +1874,15 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -last-line-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600" - dependencies: - through2 "^2.0.0" +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== latest-version@^3.0.0: version "3.1.0" @@ -1831,23 +1890,21 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" + invert-kv "^2.0.0" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" + parse-json "^4.0.0" + pify "^3.0.0" strip-bom "^3.0.0" locate-path@^2.0.0: @@ -1857,6 +1914,19 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -1865,7 +1935,7 @@ lodash.clonedeepwith@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" -lodash.debounce@^4.0.3: +lodash.debounce@^4.0.3, lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -1881,23 +1951,27 @@ lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" +lodash.islength@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.islength/-/lodash.islength-4.0.1.tgz#4e9868d452575d750affd358c979543dc20ed577" + integrity sha1-Tpho1FJXXXUK/9NYyXlUPcIO1Xc= -lodash.merge@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" +lodash.merge@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" + integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== -lodash@^4.17.4, lodash@^4.2.0, lodash@^4.5.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^4.17.10, lodash@^4.17.11: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -loose-envify@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== dependencies: - js-tokens "^3.0.0" + chalk "^2.0.1" loud-rejection@^1.0.0, loud-rejection@^1.2.0: version "1.6.0" @@ -1923,21 +1997,47 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -map-obj@^1.0.0, map-obj@^1.0.1: +make-dir@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" -matcher@^1.0.0: +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + +map-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.0.0.tgz#aaf0c4816eb69b92094674175625f3466b0e3e19" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: - escape-string-regexp "^1.0.4" + object-visit "^1.0.0" -md5-hex@^1.2.0, md5-hex@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-1.3.0.tgz#d2c4afe983c4370662179b8cad145219135046c4" +matcher@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" + integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== dependencies: - md5-o-matic "^0.1.1" + escape-string-regexp "^1.0.4" md5-hex@^2.0.0: version "2.0.0" @@ -1949,48 +2049,48 @@ md5-o-matic@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" -meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" +mem@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + map-age-cleaner "^0.1.1" + mimic-fn "^1.0.0" + p-is-promise "^1.1.0" -mime-types@^2.1.12, mime-types@~2.1.7: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== dependencies: - mime-db "~1.30.0" + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + yargs-parser "^10.0.0" + +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" mimic-fn@^1.0.0: version "1.1.0" @@ -2002,15 +2102,46 @@ minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -"mkdirp@>=0.5 0", mkdirp@^0.5.1: +minipass@^2.2.1, minipass@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -2020,9 +2151,10 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -ms@^2.0.0: +ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== multimatch@^2.1.0: version "2.1.0" @@ -2041,25 +2173,57 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@^2.3.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" +nan@^2.9.2: + version "2.12.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" + integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-pre-gyp@^0.6.39: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== dependencies: detect-libc "^1.0.2" - hawk "3.1.3" mkdirp "^0.5.1" + needle "^2.2.1" nopt "^4.0.1" + npm-packlist "^1.1.6" npmlog "^4.0.2" - rc "^1.1.7" - request "2.81.0" + rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" + tar "^4" nopt@^4.0.1: version "4.0.1" @@ -2077,12 +2241,26 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + +npm-packlist@^1.1.6: + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -2102,20 +2280,32 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" observable-to-promise@^0.5.0: version "0.5.0" @@ -2124,7 +2314,7 @@ observable-to-promise@^0.5.0: is-observable "^0.2.0" symbol-observable "^1.0.4" -once@^1.3.0, once@^1.3.3: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -2136,14 +2326,31 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -option-chain@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/option-chain/-/option-chain-1.0.0.tgz#938d73bd4e1783f948d34023644ada23669e30f2" +ora@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.0.0.tgz#8179e3525b9aafd99242d63cc206fd64732741d0" + integrity sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg== + dependencies: + chalk "^2.3.1" + cli-cursor "^2.1.0" + cli-spinners "^1.1.0" + log-symbols "^2.2.0" + strip-ansi "^4.0.0" + wcwidth "^1.0.1" os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2155,25 +2362,53 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + p-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" +p-limit@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" + integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" dependencies: p-limit "^1.1.0" -package-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: - md5-hex "^1.3.0" + p-limit "^2.0.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== + +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== package-hash@^2.0.0: version "2.0.0" @@ -2193,40 +2428,34 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: - error-ex "^1.2.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" -parse-ms@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e" +parse-ms@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.0.0.tgz#7b3640295100caf3fa0100ccceb56635b62f9d62" + integrity sha512-AddiXFSLLCqj+tCRJ9MrUtHZB4DWojO3tk0NVZ+g5MaMQHF2+p2ktqxuoXyPFLljz/aUK0Nfhd/uGWnhXVXEyA== -parse-ms@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2234,7 +2463,7 @@ path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" -path-key@^2.0.0: +path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -2242,23 +2471,12 @@ path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: - pify "^2.0.0" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + pify "^3.0.0" pify@^2.0.0: version "2.3.0" @@ -2268,69 +2486,53 @@ pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" -pinkie-promise@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" - dependencies: - pinkie "^1.0.0" - pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" dependencies: pinkie "^2.0.0" -pinkie@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4" - pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -pkg-conf@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" +pkg-conf@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= dependencies: find-up "^2.0.0" - load-json-file "^2.0.0" + load-json-file "^4.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: - find-up "^2.1.0" + find-up "^3.0.0" -plur@^2.0.0, plur@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" +plur@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/plur/-/plur-3.0.1.tgz#268652d605f816699b42b86248de73c9acd06a7c" + integrity sha512-lJl0ojUynAM1BZn58Pas2WT/TXeC1+bS+UqShl0x9+49AtOn7DixRXVzaC8qrDOIxNDmepKnLuMTH7NQmkX0PA== dependencies: - irregular-plurals "^1.0.0" + irregular-plurals "^2.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-ms@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" - dependencies: - parse-ms "^0.1.0" - -pretty-ms@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-3.1.0.tgz#e9cac9c76bf6ee52fe942dd9c6c4213153b12881" +pretty-ms@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-4.0.0.tgz#31baf41b94fd02227098aaa03bd62608eb0d6e92" + integrity sha512-qG66ahoLCwpLXD09ZPHSCbUWYTqdosB7SMP4OffgTgL2PBKXMuUsrk5Bwg8q4qPkjTXsKBMr+YK3Ltd/6F9s/Q== dependencies: - parse-ms "^1.0.0" - plur "^2.1.2" - -private@^0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + parse-ms "^2.0.0" process-nextick-args@~1.0.6: version "1.0.7" @@ -2340,22 +2542,20 @@ pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + end-of-stream "^1.1.0" + once "^1.3.1" + +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: +rc@^1.0.1, rc@^1.1.6: version "1.2.2" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" dependencies: @@ -2364,37 +2564,43 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= dependencies: find-up "^2.0.0" - read-pkg "^2.0.0" + read-pkg "^3.0.0" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= dependencies: - load-json-file "^1.0.0" + load-json-file "^4.0.0" normalize-package-data "^2.3.2" - path-type "^1.0.0" + path-type "^3.0.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" +read-pkg@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= dependencies: - load-json-file "^2.0.0" normalize-package-data "^2.3.2" - path-type "^2.0.0" + parse-json "^4.0.0" + pify "^3.0.0" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5: +readable-stream@^2.0.2, readable-stream@^2.0.6: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -2415,34 +2621,45 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" + indent-string "^3.0.0" + strip-indent "^2.0.0" -regenerate@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== + dependencies: + regenerate "^1.4.0" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: - is-equal-shallow "^0.1.3" + extend-shallow "^3.0.2" + safe-regex "^1.1.0" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" +regexpu-core@^4.1.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32" + integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA== dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" registry-auth-token@^3.0.1: version "3.3.1" @@ -2457,13 +2674,15 @@ registry-url@^3.0.3: dependencies: rc "^1.0.1" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== dependencies: jsesc "~0.5.0" @@ -2481,42 +2700,20 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.5.2: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= require-precompiled@^0.1.0: version "0.1.0" @@ -2532,6 +2729,11 @@ resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + resolve@^1.3.2: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" @@ -2545,20 +2747,57 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@^2.2.8: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" -rx@2.3.24: - version "2.3.24" - resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" +rxjs@^6.3.3: + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== + dependencies: + tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -2569,7 +2808,17 @@ semver-diff@^2.0.0: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" -set-blocking@~2.0.0: +semver@^5.5.0, semver@^5.5.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + integrity sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= + +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -2577,6 +2826,26 @@ set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -2595,6 +2864,11 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slice-ansi@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" @@ -2605,30 +2879,60 @@ slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: - hoek "2.x.x" + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: - is-plain-obj "^1.0.0" + kind-of "^3.2.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" source-map "^0.5.6" - -source-map-support@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.0.tgz#2018a7ad2bdf8faf2691e5fddab26bed5a2bacab" - dependencies: + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== + dependencies: + buffer-from "^1.0.0" source-map "^0.6.0" +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -2655,27 +2959,34 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" -sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" +stack-utils@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" + define-property "^0.2.5" + object-copy "^0.1.0" -stack-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" +stdin@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/stdin/-/stdin-0.0.1.tgz#d3041981aaec3dfdbc77a1b38d6372e38f5fb71e" + integrity sha1-0wQZgarsPf28d6GzjWNy449ftx4= string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" @@ -2698,16 +3009,6 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" - dependencies: - ansi-regex "^0.2.1" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -2720,9 +3021,12 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" strip-bom-buf@^1.0.0: version "1.0.0" @@ -2730,12 +3034,6 @@ strip-bom-buf@^1.0.0: dependencies: is-utf8 "^0.2.1" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -2744,41 +3042,42 @@ strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -supports-color@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" +supertap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supertap/-/supertap-1.0.0.tgz#bd9751c7fafd68c68cf8222a29892206a119fa9e" + integrity sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA== + dependencies: + arrify "^1.0.1" + indent-string "^3.2.0" + js-yaml "^3.10.0" + serialize-error "^2.1.0" + strip-ansi "^4.0.0" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^4.0.0: +supports-color@^4.0.0, supports-color@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" dependencies: has-flag "^2.0.0" -supports-color@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - has-flag "^2.0.0" + has-flag "^3.0.0" symbol-observable@^0.2.2: version "0.2.4" @@ -2788,26 +3087,18 @@ symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32" -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" +tar@^4: + version "4.4.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.4" + minizlib "^1.1.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" term-size@^1.2.0: version "1.2.0" @@ -2815,10 +3106,6 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -2831,22 +3118,6 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -through2@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -time-require@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/time-require/-/time-require-0.1.2.tgz#f9e12cb370fc2605e11404582ba54ef5ca2b2d98" - dependencies: - chalk "^0.4.0" - date-time "^0.1.1" - pretty-ms "^0.2.1" - text-table "^0.2.0" - time-zone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" @@ -2855,27 +3126,43 @@ timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" -tough-cookie@~2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: - punycode "^1.4.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" tree-kill@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= trim-off-newlines@^1.0.1: version "1.0.1" @@ -2885,54 +3172,82 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" -tslib@^1.7.1, tslib@^1.8.0: +tslib@^1.8.0: version "1.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.1.tgz#6946af2d1d651a7b1863b531d6e5afa41aa44eac" -tslint@^5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.8.0.tgz#1f49ad5b2e77c76c3af4ddcae552ae4e3612eb13" +tslib@^1.8.1, tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tslint@^5.12.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.12.0.tgz#47f2dba291ed3d580752d109866fb640768fca36" + integrity sha512-CKEcH1MHUBhoV43SA/Jmy1l24HJJgI0eyLbBNSRyFlsQvb9v6Zdq+Nz2vEOH00nC5SUx4SneJ59PZUS/ARcokQ== dependencies: babel-code-frame "^6.22.0" builtin-modules "^1.1.1" - chalk "^2.1.0" - commander "^2.9.0" + chalk "^2.3.0" + commander "^2.12.1" diff "^3.2.0" glob "^7.1.1" + js-yaml "^3.7.0" minimatch "^3.0.4" resolve "^1.3.2" semver "^5.3.0" - tslib "^1.7.1" - tsutils "^2.12.1" - -tsutils@^2.12.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.13.1.tgz#d6d1cc0f7c04cf9fb3b28a292973cffb9cfbe09a" - dependencies: tslib "^1.8.0" + tsutils "^2.27.2" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" +tsutils@^2.27.2: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -typescript@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" + tslib "^1.8.1" -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +typescript@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" + integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg== uid2@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -2947,38 +3262,59 @@ unique-temp-dir@^1.0.0: os-tmpdir "^1.0.1" uid2 "0.0.3" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" -update-notifier@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== + +update-notifier@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== dependencies: boxen "^1.2.1" chalk "^2.0.1" configstore "^3.0.0" import-lazy "^2.1.0" + is-ci "^1.0.10" is-installed-globally "^0.1.0" is-npm "^1.0.0" latest-version "^3.0.0" semver-diff "^2.0.0" xdg-basedir "^3.0.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" dependencies: prepend-http "^1.0.1" +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -uuid@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -2986,17 +3322,22 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + defaults "^1.0.3" -well-known-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-1.0.0.tgz#73c78ae81a7726a8fa598e2880801c8b16225518" +well-known-symbols@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" + integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which@^1.2.9: version "1.3.0" @@ -3016,18 +3357,18 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^1.1.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - write-file-atomic@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" @@ -3036,32 +3377,57 @@ write-file-atomic@^2.0.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-json-file@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - pify "^3.0.0" - sort-keys "^2.0.0" - write-file-atomic "^2.0.0" - -write-pkg@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.1.0.tgz#030a9994cc9993d25b4e75a9f1a1923607291ce9" - dependencies: - sort-keys "^2.0.0" - write-json-file "^2.2.0" - xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +"y18n@^3.2.1 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^12.0.1: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" From 1c3961640aa5ec2605be4ebc7d388925cabcbf1d Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 18:02:11 +0000 Subject: [PATCH 02/44] More fixes --- src/convert.ts | 31 ++++++++++++++++--------------- src/rules/Functions.ts | 19 +++++++++++++------ 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 9f0ecc8..d1f091b 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -82,6 +82,8 @@ export function toTs(node: Flow | TSType): TSType { return node; // Flow types + case "TypeAnnotation": + return tsTypeAnnotation(toTsType(node)); case "AnyTypeAnnotation": case "ArrayTypeAnnotation": case "BooleanTypeAnnotation": @@ -99,7 +101,6 @@ export function toTs(node: Flow | TSType): TSType { case "ThisTypeAnnotation": case "TupleTypeAnnotation": case "TypeofTypeAnnotation": - case "TypeAnnotation": case "ObjectTypeAnnotation": case "UnionTypeAnnotation": case "VoidTypeAnnotation": @@ -112,7 +113,7 @@ export function toTs(node: Flow | TSType): TSType { return _; case "TypeCastExpression": - return tsAsExpression(node.expression, toTs(node.typeAnnotation)); + return tsAsExpression(node.expression, toTsType(node.typeAnnotation)); case "TypeParameterDeclaration": let params = node.params.map(_ => { @@ -127,6 +128,9 @@ export function toTs(node: Flow | TSType): TSType { return tsTypeParameterDeclaration(params); + case "QualifiedTypeIdentifier": + return tsTypeReference(tsQualifiedName(node.qualification, node.id)); + case "ClassImplements": case "ClassProperty": case "DeclareClass": @@ -143,7 +147,7 @@ export function toTs(node: Flow | TSType): TSType { case "TypeParameterInstantiation": case "ObjectTypeCallProperty": case "ObjectTypeIndexer": - case "QualifiedTypeIdentifier": + console.log("WUT"); console.dir(node); throw "wut"; } @@ -160,20 +164,18 @@ export function toTsType(node: FlowType): TSType { case "BooleanLiteralTypeAnnotation": return tsLiteralType(booleanLiteral(node.value!)); case "FunctionTypeAnnotation": + console.dir(node); + console.dir(functionToTsType(node), { depth: 8 }); return functionToTsType(node); case "GenericTypeAnnotation": + return toTs(node.id); + /* if (node.id.type === "QualifiedTypeIdentifier") { - const qualifiedTypeIdentifier: QualifiedTypeIdentifier = node.id; - console.dir(node); - return tsTypeReference( - tsQualifiedName( - qualifiedTypeIdentifier.qualification, - qualifiedTypeIdentifier.id - ) - ); + return toTsType(node.id); } else { return tsTypeReference(node.id); } + */ case "IntersectionTypeAnnotation": return tsIntersectionType(node.types.map(toTsType)); case "MixedTypeAnnotation": @@ -202,8 +204,7 @@ export function toTsType(node: FlowType): TSType { return tsTypeQuery(getId(node.argument)); case "TypeAnnotation": - console.log(node); - return toTsType(node.typeAnnotation); + return toTs(node.typeAnnotation); case "ObjectTypeAnnotation": return tsTypeLiteral([ @@ -228,8 +229,8 @@ export function toTsType(node: FlowType): TSType { return tsUnionType(node.types.map(toTsType)); case "VoidTypeAnnotation": return tsVoidKeyword(); - case "QualifiedTypeAnnotation": - console.dir(node); + case "ExistsTypeAnnotation": + return tsAnyKeyword(); default: throw new Error(`Didn't understand type '${node.type}'`); } diff --git a/src/rules/Functions.ts b/src/rules/Functions.ts index d05ca23..bc223a3 100644 --- a/src/rules/Functions.ts +++ b/src/rules/Functions.ts @@ -1,8 +1,15 @@ -import { addRule } from '../' -import { toTs } from '../convert' +import { addRule } from "../"; +import { toTs } from "../convert"; -addRule('Functions', () => ({ +addRule("Functions", () => ({ + TypeAnnotation(path) { + if (path.node.typeAnnotation.type === "FunctionTypeAnnotation") { + console.log("OK?"); + path.replaceWith(toTs(path.node)); + console.log("OK!"); + } + }, FunctionTypeAnnotation(path) { - path.replaceWith(toTs(path.node)) - } -})) + path.replaceWith(toTs(path.node)); + }, +})); From 44da30d1497888d5d24efaf57cf76ef056cf321b Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 19:34:54 +0000 Subject: [PATCH 03/44] More compatibility --- src/convert.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index d1f091b..0befcf9 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -155,6 +155,8 @@ export function toTs(node: Flow | TSType): TSType { export function toTsType(node: FlowType): TSType { switch (node.type) { + case "Identifier": + return tsTypeReference(node); case "AnyTypeAnnotation": return tsAnyKeyword(); case "ArrayTypeAnnotation": @@ -164,10 +166,11 @@ export function toTsType(node: FlowType): TSType { case "BooleanLiteralTypeAnnotation": return tsLiteralType(booleanLiteral(node.value!)); case "FunctionTypeAnnotation": - console.dir(node); - console.dir(functionToTsType(node), { depth: 8 }); return functionToTsType(node); case "GenericTypeAnnotation": + if (node.id.type === "Identifier") { + return toTsType(node.id); + } return toTs(node.id); /* if (node.id.type === "QualifiedTypeIdentifier") { @@ -265,8 +268,10 @@ function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { ); } - let f = tsFunctionType(typeParams); - + let f = tsFunctionType( + typeParams, + node.returnType ? tsTypeAnnotation(toTs(node.returnType)) : undefined + ); // Params if (node.params) { // TODO: Rest params @@ -293,10 +298,6 @@ function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { }); } - // Return type - if (node.returnType) { - f.typeAnnotation = tsTypeAnnotation(toTsType(node.returnType)); - } return f; } From 58a7389894aac06026a3e8b0d220cba346d1f72f Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 19:41:30 +0000 Subject: [PATCH 04/44] Increased logging --- src/convert.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/convert.ts b/src/convert.ts index 0befcf9..58c93ff 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -42,9 +42,27 @@ import { } from "@babel/types"; import { generateFreeIdentifier } from "./utils"; +let depth = 0; // TODO: Add overloads export function toTs(node: Flow | TSType): TSType { - console.log(`\t ${node.type}`); + try { + depth++; + console.log(" ".repeat(depth) + ` >${node.type}`); + return _toTs(node); + } catch (e) { + if (!e.logged) { + e.logged = true; + console.log(" ".repeat(depth) + ` !${node.type}`); + console.error(e); + console.dir(node, { depth: 8 }); + } + throw e; + } finally { + console.log(" ".repeat(depth) + ` <${node.type}`); + depth--; + } +} +export function _toTs(node: Flow | TSType): TSType { switch (node.type) { // TS types // TODO: Why does tsTs get called with TSTypes? It should only get called with Flow types. From a8acccfdc79f1c9f8671f77f79e1138185733120 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 19:54:32 +0000 Subject: [PATCH 05/44] Only output stack when error occurs --- src/convert.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 58c93ff..90fdcd8 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -43,23 +43,28 @@ import { import { generateFreeIdentifier } from "./utils"; let depth = 0; +let stack = []; // TODO: Add overloads export function toTs(node: Flow | TSType): TSType { try { depth++; - console.log(" ".repeat(depth) + ` >${node.type}`); + stack.push(" ".repeat(depth) + ` >${node.type}`); return _toTs(node); } catch (e) { if (!e.logged) { e.logged = true; - console.log(" ".repeat(depth) + ` !${node.type}`); + stack.push(" ".repeat(depth) + ` !${node.type}`); + console.error(stack.join("\n")); console.error(e); console.dir(node, { depth: 8 }); } throw e; } finally { - console.log(" ".repeat(depth) + ` <${node.type}`); + stack.push(" ".repeat(depth) + ` <${node.type}`); depth--; + if (depth === 0) { + stack = []; + } } } export function _toTs(node: Flow | TSType): TSType { From 8e17ae9f5a703d9f0f713f1b8a16c998bed409cf Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 22:24:58 +0000 Subject: [PATCH 06/44] More fixes, merge visitors --- src/convert.ts | 19 +++++++++++++++---- src/index.ts | 34 ++++++++++++++++++++++++++++++---- src/rules/Indexer.ts | 28 ++++++++++++++-------------- src/rules/ObjectType.ts | 8 ++++++++ src/rules/TypeAlias.ts | 8 ++++++++ 5 files changed, 75 insertions(+), 22 deletions(-) create mode 100644 src/rules/ObjectType.ts create mode 100644 src/rules/TypeAlias.ts diff --git a/src/convert.ts b/src/convert.ts index 90fdcd8..3bc2bf0 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -5,7 +5,7 @@ import { FunctionTypeAnnotation, identifier, Identifier, - isSpreadProperty, + isSpreadElement, isTSTypeParameter, isTypeParameter, Node, @@ -39,6 +39,8 @@ import { TypeParameter, tsQualifiedName, QualifiedTypeIdentifier, + tsIndexSignature, + tsTypeAliasDeclaration, } from "@babel/types"; import { generateFreeIdentifier } from "./utils"; @@ -154,6 +156,13 @@ export function _toTs(node: Flow | TSType): TSType { case "QualifiedTypeIdentifier": return tsTypeReference(tsQualifiedName(node.qualification, node.id)); + /* + case "ObjectTypeIndexer": + return tsTypeLiteral([tsIndexSignature(node.parameters)]); + */ + case "TypeAlias": + return tsTypeAliasDeclaration(node.id, null, toTs(node.right)); + case "ClassImplements": case "ClassProperty": case "DeclareClass": @@ -177,6 +186,9 @@ export function _toTs(node: Flow | TSType): TSType { } export function toTsType(node: FlowType): TSType { + if (node.type.match(/^TS[A-Z]/)) { + return node; + } switch (node.type) { case "Identifier": return tsTypeReference(node); @@ -235,12 +247,12 @@ export function toTsType(node: FlowType): TSType { case "ObjectTypeAnnotation": return tsTypeLiteral([ ...node.properties.map(_ => { - if (isSpreadProperty(_)) { + if (isSpreadElement(_)) { return _; } let s = tsPropertySignature( _.key, - tsTypeAnnotation(toTsType(_.value)) + tsTypeAnnotation(toTsType(_.typeAnnotation || _.value)) ); s.optional = _.optional; return s; @@ -321,7 +333,6 @@ function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { }); } - return f; } diff --git a/src/index.ts b/src/index.ts index d6bb7bf..1ceea6c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -55,11 +55,37 @@ export async function convert(ast: T): Promise<[Warning[], T]> { ); let warnings: Warning[] = []; - rules.forEach((visitor, i) => { - console.log(`Running visitor ${i}`); - - return traverse(ast, visitor(warnings)); + const order = [ + "$Exact", + "$Keys", + "$ReadOnly", + "Bounds", + "Casting", + "Exact", + "Variance", + "Indexer", + "TypeAlias", + ]; + const keys = [...rules.keys()]; + const all = [...order, ...keys.filter(k => order.indexOf(k) < 0)]; + const visitor = {}; + all.forEach(i => { + const visGen = rules.get(i); + const vis = visGen(warnings); + Object.keys(vis).forEach(k => { + if (!visitor[k]) { + visitor[k] = vis[k]; + } else { + const oldVis = visitor[k]; + visitor[k] = (...args) => { + oldVis(...args); + vis[k](...args); + }; + } + }); }); + console.log(`Traversing...`); + traverse(ast, visitor); console.log("Done"); return [warnings, ast]; diff --git a/src/rules/Indexer.ts b/src/rules/Indexer.ts index 1f2a9d9..a1de001 100644 --- a/src/rules/Indexer.ts +++ b/src/rules/Indexer.ts @@ -1,19 +1,19 @@ -import { identifier, objectTypeIndexer } from '@babel/types' -import { addRule } from '../' -import { generateFreeIdentifier } from '../utils' +import { identifier, objectTypeIndexer } from "@babel/types"; +import { addRule } from "../"; +import { generateFreeIdentifier } from "../utils"; -addRule('Indexer', () => ({ +addRule("Indexer", () => ({ ObjectTypeIndexer(path) { - if (path.node.id !== null) { - return + return; } - path.replaceWith(objectTypeIndexer( - identifier(generateFreeIdentifier([])), - path.node.key, - path.node.value - )) - - } -})) + path.replaceWith( + objectTypeIndexer( + identifier(generateFreeIdentifier([])), + path.node.key, + path.node.value + ) + ); + }, +})); diff --git a/src/rules/ObjectType.ts b/src/rules/ObjectType.ts new file mode 100644 index 0000000..34368a1 --- /dev/null +++ b/src/rules/ObjectType.ts @@ -0,0 +1,8 @@ +import { addRule } from "../"; +import { toTs } from "../convert"; + +addRule("ObjectType", () => ({ + ObjectTypeAnnotation(path) { + path.replaceWith(toTs(path.node)); + }, +})); diff --git a/src/rules/TypeAlias.ts b/src/rules/TypeAlias.ts new file mode 100644 index 0000000..e00bc02 --- /dev/null +++ b/src/rules/TypeAlias.ts @@ -0,0 +1,8 @@ +import { addRule } from ".."; +import { toTs } from "../convert"; + +addRule("TypeAlias", () => ({ + TypeAlias(path) { + path.replaceWith(toTs(path.node)); + }, +})); From 630e6e715b73cbc9ddc629690c237e887b787775 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 22:36:27 +0000 Subject: [PATCH 07/44] More progress --- src/cli.ts | 68 ++++++++++++++++++++----------------- src/rules/Functions.ts | 7 ---- src/rules/TypeAnnotation.ts | 8 +++++ src/rules/Variance.ts | 20 +++++------ 4 files changed, 54 insertions(+), 49 deletions(-) create mode 100644 src/rules/TypeAnnotation.ts diff --git a/src/cli.ts b/src/cli.ts index ab5aaa7..4a4a5c8 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,64 +1,68 @@ #!/usr/bin/env node -import minimist = require('minimist') -import { readFile, writeFile } from 'mz/fs' -import { resolve } from 'path' -import stdin = require('stdin') -import { compile } from './index' +import minimist = require("minimist"); +import { readFile, writeFile } from "mz/fs"; +import { resolve } from "path"; +import stdin = require("stdin"); +import { compile } from "./index"; -main(minimist(process.argv.slice(2), { - alias: { - help: ['h'], - input: ['i'], - output: ['o'] - } -})) +main( + minimist(process.argv.slice(2), { + alias: { + help: ["h"], + input: ["i"], + output: ["o"], + }, + }) +); async function main(argv: minimist.ParsedArgs) { - if (argv.help) { - printHelp() - process.exit(0) + printHelp(); + process.exit(0); } - const argIn: string = argv._[0] || argv.input - const argOut: string = argv._[1] || argv.output + const argIn: string = argv._[0] || argv.input; + const argOut: string = argv._[1] || argv.output; try { - const flow = await readInput(argIn) - const ts = await compile(flow, argIn) - await writeOutput(ts, argOut) + console.log("Flow"); + const flow = await readInput(argIn); + console.log("TypeScript"); + const ts = await compile(flow, argIn); + console.log("Write"); + await writeOutput(ts, argOut); } catch (e) { - process.stderr.write(e.message) - process.exit(1) + console.error(e); + //process.stderr.write(e.message) + process.exit(1); } - } function readInput(argIn?: string) { if (!argIn) { - return new Promise(stdin) + return new Promise(stdin); } - return readFile(resolve(process.cwd(), argIn), 'utf-8') + return readFile(resolve(process.cwd(), argIn), "utf-8"); } function writeOutput(ts: string, argOut: string): Promise { if (!argOut) { try { - process.stdout.write(ts) - return Promise.resolve() + process.stdout.write(ts); + return Promise.resolve(); } catch (err) { - return Promise.reject(err) + return Promise.reject(err); } } - return writeFile(argOut, ts) + return writeFile(argOut, ts); } function printHelp() { - const pkg = require('../../package.json') + const pkg = require("../../package.json"); process.stdout.write( -` + ` ${pkg.name} ${pkg.version} Usage: flow2ts [--input, -i] [IN_FILE] [--output, -o] [OUT_FILE] @@ -66,5 +70,5 @@ With no IN_FILE, or when IN_FILE is -, read standard input. With no OUT_FILE and when IN_FILE is specified, create .ts file in the same directory. With no OUT_FILE nor IN_FILE, write to standard output. ` - ) + ); } diff --git a/src/rules/Functions.ts b/src/rules/Functions.ts index bc223a3..54e780a 100644 --- a/src/rules/Functions.ts +++ b/src/rules/Functions.ts @@ -2,13 +2,6 @@ import { addRule } from "../"; import { toTs } from "../convert"; addRule("Functions", () => ({ - TypeAnnotation(path) { - if (path.node.typeAnnotation.type === "FunctionTypeAnnotation") { - console.log("OK?"); - path.replaceWith(toTs(path.node)); - console.log("OK!"); - } - }, FunctionTypeAnnotation(path) { path.replaceWith(toTs(path.node)); }, diff --git a/src/rules/TypeAnnotation.ts b/src/rules/TypeAnnotation.ts new file mode 100644 index 0000000..37ab2cb --- /dev/null +++ b/src/rules/TypeAnnotation.ts @@ -0,0 +1,8 @@ +import { addRule } from "../"; +import { toTs } from "../convert"; + +addRule("TypeAnnotation", () => ({ + TypeAnnotation(path) { + path.replaceWith(toTs(path.node)); + }, +})); diff --git a/src/rules/Variance.ts b/src/rules/Variance.ts index d8afbb4..504cf08 100644 --- a/src/rules/Variance.ts +++ b/src/rules/Variance.ts @@ -1,16 +1,16 @@ -import { addRule } from '../' -import { toTs } from '../convert' +import { addRule } from ".."; +import { toTs } from "../convert"; -addRule('Variance', warnings => ({ +addRule("Variance", warnings => ({ ObjectTypeProperty(path) { - if (path.node.variance && path.node.variance.kind === 'plus') { + if (path.node.variance && path.node.variance.kind === "plus") { warnings.push([ `Contravariance can't be expressed in TypeScript`, - 'https://github.com/Microsoft/TypeScript/issues/1394', + "https://github.com/Microsoft/TypeScript/issues/1394", path.node.loc.start.line, - path.node.loc.start.column - ]) + path.node.loc.start.column, + ]); } - path.replaceWith(toTs(path.node)) - } -})) + path.replaceWith(toTs(path.node)); + }, +})); From 106c3ca8643900adef0934f2bc699153ef2d8f47 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 22:43:28 +0000 Subject: [PATCH 08/44] Better debugging --- src/convert.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/convert.ts b/src/convert.ts index 3bc2bf0..5cd4fd8 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -113,6 +113,7 @@ export function _toTs(node: Flow | TSType): TSType { case "ArrayTypeAnnotation": case "BooleanTypeAnnotation": case "BooleanLiteralTypeAnnotation": + case "ExistsTypeAnnotation": case "FunctionTypeAnnotation": case "GenericTypeAnnotation": case "IntersectionTypeAnnotation": @@ -303,9 +304,14 @@ function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { ); } + const returnTypeType = node.returnType ? toTs(node.returnType) : null; + if (node.returnType && !returnTypeType) { + console.dir(node.returnType); + throw new Error(`Could not convert return type '${node.returnType.type}'`); + } let f = tsFunctionType( typeParams, - node.returnType ? tsTypeAnnotation(toTs(node.returnType)) : undefined + node.returnType ? tsTypeAnnotation(returnTypeType) : undefined ); // Params if (node.params) { From d7a282d2da96af1a3544c332a82efe85b03fbb5e Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 23:08:36 +0000 Subject: [PATCH 09/44] More progress --- src/convert.ts | 27 ++++++++++++++++++++++----- src/rules/TypeAnnotation.ts | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 5cd4fd8..43657c2 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -155,7 +155,7 @@ export function _toTs(node: Flow | TSType): TSType { return tsTypeParameterDeclaration(params); case "QualifiedTypeIdentifier": - return tsTypeReference(tsQualifiedName(node.qualification, node.id)); + return toTsType(node); /* case "ObjectTypeIndexer": @@ -193,6 +193,8 @@ export function toTsType(node: FlowType): TSType { switch (node.type) { case "Identifier": return tsTypeReference(node); + case "QualifiedTypeIdentifier": + return tsTypeReference(tsQualifiedName(node.qualification, node.id)); case "AnyTypeAnnotation": return tsAnyKeyword(); case "ArrayTypeAnnotation": @@ -203,11 +205,26 @@ export function toTsType(node: FlowType): TSType { return tsLiteralType(booleanLiteral(node.value!)); case "FunctionTypeAnnotation": return functionToTsType(node); - case "GenericTypeAnnotation": - if (node.id.type === "Identifier") { + case "GenericTypeAnnotation": { + if (node.typeParameters && node.typeParameters.length) { + return tsTypeReference( + toTs(node.id), + node.typeParameters.params.map(p => toTsType(p)) + ); + } else { return toTsType(node.id); } - return toTs(node.id); + /* + let type; + if (node.id.type === "Identifier") { + type = toTsType(node.id); + } else { + type = toTs(node.id); + } + type.typeArguments = toTsType(node.typeParameters), + return type; + */ + } /* if (node.id.type === "QualifiedTypeIdentifier") { return toTsType(node.id); @@ -265,7 +282,7 @@ export function toTsType(node: FlowType): TSType { // ...node.indexers.map(_ => tSIndexSignature()) ]); case "UnionTypeAnnotation": - return tsUnionType(node.types.map(toTsType)); + return tsUnionType(node.types.map(toTs)); case "VoidTypeAnnotation": return tsVoidKeyword(); case "ExistsTypeAnnotation": diff --git a/src/rules/TypeAnnotation.ts b/src/rules/TypeAnnotation.ts index 37ab2cb..f38d85b 100644 --- a/src/rules/TypeAnnotation.ts +++ b/src/rules/TypeAnnotation.ts @@ -1,4 +1,4 @@ -import { addRule } from "../"; +import { addRule } from ".."; import { toTs } from "../convert"; addRule("TypeAnnotation", () => ({ From 10348d95e60d8b52fe70b4cef56e3b2935948ff4 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 4 Jan 2019 23:20:20 +0000 Subject: [PATCH 10/44] Generics --- src/convert.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 43657c2..4dddd75 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -41,6 +41,7 @@ import { QualifiedTypeIdentifier, tsIndexSignature, tsTypeAliasDeclaration, + tsTypeParameterInstantiation, } from "@babel/types"; import { generateFreeIdentifier } from "./utils"; @@ -186,15 +187,22 @@ export function _toTs(node: Flow | TSType): TSType { } } +export function toTsTypeName(node: FlowType): TsType { + switch (node.type) { + case "Identifier": + return node; + case "QualifiedTypeIdentifier": + return tsQualifiedName(node.qualification, node.id); + } +} export function toTsType(node: FlowType): TSType { if (node.type.match(/^TS[A-Z]/)) { return node; } switch (node.type) { case "Identifier": - return tsTypeReference(node); case "QualifiedTypeIdentifier": - return tsTypeReference(tsQualifiedName(node.qualification, node.id)); + return tsTypeReference(toTsTypeName(node)); case "AnyTypeAnnotation": return tsAnyKeyword(); case "ArrayTypeAnnotation": @@ -206,10 +214,12 @@ export function toTsType(node: FlowType): TSType { case "FunctionTypeAnnotation": return functionToTsType(node); case "GenericTypeAnnotation": { - if (node.typeParameters && node.typeParameters.length) { + if (node.typeParameters && node.typeParameters.params.length) { return tsTypeReference( - toTs(node.id), - node.typeParameters.params.map(p => toTsType(p)) + toTsTypeName(node.id), + tsTypeParameterInstantiation( + node.typeParameters.params.map(p => toTsType(p)) + ) ); } else { return toTsType(node.id); From 37882178a5bf9150b447a56e7580d722c47f4217 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 09:50:50 +0000 Subject: [PATCH 11/44] Add explicit prettier config, matching old formatting (roughly) --- package.json | 7 +- prettier.config.js | 6 + src/cli.ts | 60 +++--- src/convert.ts | 401 ++++++++++++++++++------------------ src/index.ts | 124 ++++++----- src/rules/$Exact.ts | 1 - src/rules/$Keys.ts | 2 +- src/rules/$ReadOnly.ts | 6 +- src/rules/Bounds.ts | 1 - src/rules/Exact.ts | 8 +- src/rules/Functions.ts | 12 +- src/rules/Indexer.ts | 22 +- src/rules/Maybe.ts | 19 +- src/rules/ObjectType.ts | 12 +- src/rules/Opaque.ts | 12 +- src/rules/TypeAlias.ts | 12 +- src/rules/TypeAnnotation.ts | 12 +- src/rules/Variance.ts | 20 +- yarn.lock | 5 + 19 files changed, 369 insertions(+), 373 deletions(-) create mode 100644 prettier.config.js diff --git a/package.json b/package.json index a4673bc..4004ce8 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,8 @@ "build:watch": "tsc -w", "clean": "rm -rf ./dist", "lint": "tslint src/**/*.ts", + "prettier": "prettier 'src/**/*.[tj]s'", + "prettier:fix": "yarn prettier --write", "prepublishOnly": "npm run clean && npm run lint && npm run build -- -d", "pretest": "npm run build", "tdd": "concurrently -k 'npm run build:watch' 'npm run test:watch'", @@ -40,12 +42,11 @@ "ava": "^1.0.1", "concurrently": "^4.1.0", "flow-bin": "^0.59.0", + "prettier": "^1.15.3", "tslint": "^5.12.0", "typescript": "^3.2.2" }, "ava": { - "files": [ - "./dist/test/test.js" - ] + "files": ["./dist/test/test.js"] } } diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..c1bd0d7 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,6 @@ +module.exports = { + printWidth: 100, + semi: false, + singleQuote: true, + trailingComma: 'none', +} diff --git a/src/cli.ts b/src/cli.ts index 4a4a5c8..cbe1aae 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,65 +1,65 @@ #!/usr/bin/env node -import minimist = require("minimist"); -import { readFile, writeFile } from "mz/fs"; -import { resolve } from "path"; -import stdin = require("stdin"); -import { compile } from "./index"; +import minimist = require('minimist') +import { readFile, writeFile } from 'mz/fs' +import { resolve } from 'path' +import stdin = require('stdin') +import { compile } from './index' main( minimist(process.argv.slice(2), { alias: { - help: ["h"], - input: ["i"], - output: ["o"], - }, + help: ['h'], + input: ['i'], + output: ['o'] + } }) -); +) async function main(argv: minimist.ParsedArgs) { if (argv.help) { - printHelp(); - process.exit(0); + printHelp() + process.exit(0) } - const argIn: string = argv._[0] || argv.input; - const argOut: string = argv._[1] || argv.output; + const argIn: string = argv._[0] || argv.input + const argOut: string = argv._[1] || argv.output try { - console.log("Flow"); - const flow = await readInput(argIn); - console.log("TypeScript"); - const ts = await compile(flow, argIn); - console.log("Write"); - await writeOutput(ts, argOut); + console.log('Flow') + const flow = await readInput(argIn) + console.log('TypeScript') + const ts = await compile(flow, argIn) + console.log('Write') + await writeOutput(ts, argOut) } catch (e) { - console.error(e); + console.error(e) //process.stderr.write(e.message) - process.exit(1); + process.exit(1) } } function readInput(argIn?: string) { if (!argIn) { - return new Promise(stdin); + return new Promise(stdin) } - return readFile(resolve(process.cwd(), argIn), "utf-8"); + return readFile(resolve(process.cwd(), argIn), 'utf-8') } function writeOutput(ts: string, argOut: string): Promise { if (!argOut) { try { - process.stdout.write(ts); - return Promise.resolve(); + process.stdout.write(ts) + return Promise.resolve() } catch (err) { - return Promise.reject(err); + return Promise.reject(err) } } - return writeFile(argOut, ts); + return writeFile(argOut, ts) } function printHelp() { - const pkg = require("../../package.json"); + const pkg = require('../../package.json') process.stdout.write( ` @@ -70,5 +70,5 @@ With no IN_FILE, or when IN_FILE is -, read standard input. With no OUT_FILE and when IN_FILE is specified, create .ts file in the same directory. With no OUT_FILE nor IN_FILE, write to standard output. ` - ); + ) } diff --git a/src/convert.ts b/src/convert.ts index 4dddd75..44924ad 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -41,32 +41,32 @@ import { QualifiedTypeIdentifier, tsIndexSignature, tsTypeAliasDeclaration, - tsTypeParameterInstantiation, -} from "@babel/types"; -import { generateFreeIdentifier } from "./utils"; + tsTypeParameterInstantiation +} from '@babel/types' +import { generateFreeIdentifier } from './utils' -let depth = 0; -let stack = []; +let depth = 0 +let stack = [] // TODO: Add overloads export function toTs(node: Flow | TSType): TSType { try { - depth++; - stack.push(" ".repeat(depth) + ` >${node.type}`); - return _toTs(node); + depth++ + stack.push(' '.repeat(depth) + ` >${node.type}`) + return _toTs(node) } catch (e) { if (!e.logged) { - e.logged = true; - stack.push(" ".repeat(depth) + ` !${node.type}`); - console.error(stack.join("\n")); - console.error(e); - console.dir(node, { depth: 8 }); + e.logged = true + stack.push(' '.repeat(depth) + ` !${node.type}`) + console.error(stack.join('\n')) + console.error(e) + console.dir(node, { depth: 8 }) } - throw e; + throw e } finally { - stack.push(" ".repeat(depth) + ` <${node.type}`); - depth--; + stack.push(' '.repeat(depth) + ` <${node.type}`) + depth-- if (depth === 0) { - stack = []; + stack = [] } } } @@ -74,155 +74,153 @@ export function _toTs(node: Flow | TSType): TSType { switch (node.type) { // TS types // TODO: Why does tsTs get called with TSTypes? It should only get called with Flow types. - case "TSAnyKeyword": - case "TSArrayType": - case "TSBooleanKeyword": - case "TSConstructorType": - case "TSExpressionWithTypeArguments": - case "TSFunctionType": - case "TSIndexedAccessType": - case "TSIntersectionType": - case "TSLiteralType": - case "TSMappedType": - case "TSNeverKeyword": - case "TSNullKeyword": - case "TSNumberKeyword": - case "TSObjectKeyword": - case "TSParenthesizedType": - case "TSStringKeyword": - case "TSSymbolKeyword": - case "TSThisType": - case "TSTupleType": - case "TSTypeAnnotation": - case "TSTypeLiteral": - case "TSTypeOperator": - case "TSTypePredicate": - case "TSTypeQuery": - case "TSTypeReference": - case "TSUndefinedKeyword": - case "TSUnionType": - case "TSVoidKeyword": - case "TSTypeParameterDeclaration": - case "TSAsExpression": - case "TSPropertySignature": - return node; + case 'TSAnyKeyword': + case 'TSArrayType': + case 'TSBooleanKeyword': + case 'TSConstructorType': + case 'TSExpressionWithTypeArguments': + case 'TSFunctionType': + case 'TSIndexedAccessType': + case 'TSIntersectionType': + case 'TSLiteralType': + case 'TSMappedType': + case 'TSNeverKeyword': + case 'TSNullKeyword': + case 'TSNumberKeyword': + case 'TSObjectKeyword': + case 'TSParenthesizedType': + case 'TSStringKeyword': + case 'TSSymbolKeyword': + case 'TSThisType': + case 'TSTupleType': + case 'TSTypeAnnotation': + case 'TSTypeLiteral': + case 'TSTypeOperator': + case 'TSTypePredicate': + case 'TSTypeQuery': + case 'TSTypeReference': + case 'TSUndefinedKeyword': + case 'TSUnionType': + case 'TSVoidKeyword': + case 'TSTypeParameterDeclaration': + case 'TSAsExpression': + case 'TSPropertySignature': + return node // Flow types - case "TypeAnnotation": - return tsTypeAnnotation(toTsType(node)); - case "AnyTypeAnnotation": - case "ArrayTypeAnnotation": - case "BooleanTypeAnnotation": - case "BooleanLiteralTypeAnnotation": - case "ExistsTypeAnnotation": - case "FunctionTypeAnnotation": - case "GenericTypeAnnotation": - case "IntersectionTypeAnnotation": - case "MixedTypeAnnotation": - case "NullableTypeAnnotation": - case "NullLiteralTypeAnnotation": - case "NumericLiteralTypeAnnotation": - case "NumberTypeAnnotation": - case "StringLiteralTypeAnnotation": - case "StringTypeAnnotation": - case "ThisTypeAnnotation": - case "TupleTypeAnnotation": - case "TypeofTypeAnnotation": - case "ObjectTypeAnnotation": - case "UnionTypeAnnotation": - case "VoidTypeAnnotation": - return toTsType(node); + case 'TypeAnnotation': + return tsTypeAnnotation(toTsType(node)) + case 'AnyTypeAnnotation': + case 'ArrayTypeAnnotation': + case 'BooleanTypeAnnotation': + case 'BooleanLiteralTypeAnnotation': + case 'ExistsTypeAnnotation': + case 'FunctionTypeAnnotation': + case 'GenericTypeAnnotation': + case 'IntersectionTypeAnnotation': + case 'MixedTypeAnnotation': + case 'NullableTypeAnnotation': + case 'NullLiteralTypeAnnotation': + case 'NumericLiteralTypeAnnotation': + case 'NumberTypeAnnotation': + case 'StringLiteralTypeAnnotation': + case 'StringTypeAnnotation': + case 'ThisTypeAnnotation': + case 'TupleTypeAnnotation': + case 'TypeofTypeAnnotation': + case 'ObjectTypeAnnotation': + case 'UnionTypeAnnotation': + case 'VoidTypeAnnotation': + return toTsType(node) - case "ObjectTypeProperty": - let _ = tsPropertySignature(node.key, tsTypeAnnotation(toTs(node.value))); - _.optional = node.optional; - _.readonly = node.variance && node.variance.kind === "minus"; - return _; + case 'ObjectTypeProperty': + let _ = tsPropertySignature(node.key, tsTypeAnnotation(toTs(node.value))) + _.optional = node.optional + _.readonly = node.variance && node.variance.kind === 'minus' + return _ - case "TypeCastExpression": - return tsAsExpression(node.expression, toTsType(node.typeAnnotation)); + case 'TypeCastExpression': + return tsAsExpression(node.expression, toTsType(node.typeAnnotation)) - case "TypeParameterDeclaration": + case 'TypeParameterDeclaration': let params = node.params.map(_ => { - let d = ((_ as any) as TypeParameter).default; + let d = ((_ as any) as TypeParameter).default let p = tsTypeParameter( hasBound(_) ? toTsType(_.bound.typeAnnotation) : undefined, d ? toTs(d) : undefined - ); - p.name = _.name; - return p; - }); + ) + p.name = _.name + return p + }) - return tsTypeParameterDeclaration(params); + return tsTypeParameterDeclaration(params) - case "QualifiedTypeIdentifier": - return toTsType(node); + case 'QualifiedTypeIdentifier': + return toTsType(node) /* case "ObjectTypeIndexer": return tsTypeLiteral([tsIndexSignature(node.parameters)]); */ - case "TypeAlias": - return tsTypeAliasDeclaration(node.id, null, toTs(node.right)); + case 'TypeAlias': + return tsTypeAliasDeclaration(node.id, null, toTs(node.right)) - case "ClassImplements": - case "ClassProperty": - case "DeclareClass": - case "DeclareFunction": - case "DeclareInterface": - case "DeclareModule": - case "DeclareTypeAlias": - case "DeclareVariable": - case "ExistentialTypeParam": - case "FunctionTypeParam": - case "InterfaceExtends": - case "InterfaceDeclaration": - case "TypeAlias": - case "TypeParameterInstantiation": - case "ObjectTypeCallProperty": - case "ObjectTypeIndexer": - console.log("WUT"); - console.dir(node); - throw "wut"; + case 'ClassImplements': + case 'ClassProperty': + case 'DeclareClass': + case 'DeclareFunction': + case 'DeclareInterface': + case 'DeclareModule': + case 'DeclareTypeAlias': + case 'DeclareVariable': + case 'ExistentialTypeParam': + case 'FunctionTypeParam': + case 'InterfaceExtends': + case 'InterfaceDeclaration': + case 'TypeAlias': + case 'TypeParameterInstantiation': + case 'ObjectTypeCallProperty': + case 'ObjectTypeIndexer': + console.log('WUT') + console.dir(node) + throw 'wut' } } export function toTsTypeName(node: FlowType): TsType { switch (node.type) { - case "Identifier": - return node; - case "QualifiedTypeIdentifier": - return tsQualifiedName(node.qualification, node.id); + case 'Identifier': + return node + case 'QualifiedTypeIdentifier': + return tsQualifiedName(node.qualification, node.id) } } export function toTsType(node: FlowType): TSType { if (node.type.match(/^TS[A-Z]/)) { - return node; + return node } switch (node.type) { - case "Identifier": - case "QualifiedTypeIdentifier": - return tsTypeReference(toTsTypeName(node)); - case "AnyTypeAnnotation": - return tsAnyKeyword(); - case "ArrayTypeAnnotation": - return tsArrayType(toTsType(node.elementType)); - case "BooleanTypeAnnotation": - return tsBooleanKeyword(); - case "BooleanLiteralTypeAnnotation": - return tsLiteralType(booleanLiteral(node.value!)); - case "FunctionTypeAnnotation": - return functionToTsType(node); - case "GenericTypeAnnotation": { + case 'Identifier': + case 'QualifiedTypeIdentifier': + return tsTypeReference(toTsTypeName(node)) + case 'AnyTypeAnnotation': + return tsAnyKeyword() + case 'ArrayTypeAnnotation': + return tsArrayType(toTsType(node.elementType)) + case 'BooleanTypeAnnotation': + return tsBooleanKeyword() + case 'BooleanLiteralTypeAnnotation': + return tsLiteralType(booleanLiteral(node.value!)) + case 'FunctionTypeAnnotation': + return functionToTsType(node) + case 'GenericTypeAnnotation': { if (node.typeParameters && node.typeParameters.params.length) { return tsTypeReference( toTsTypeName(node.id), - tsTypeParameterInstantiation( - node.typeParameters.params.map(p => toTsType(p)) - ) - ); + tsTypeParameterInstantiation(node.typeParameters.params.map(p => toTsType(p))) + ) } else { - return toTsType(node.id); + return toTsType(node.id) } /* let type; @@ -242,137 +240,130 @@ export function toTsType(node: FlowType): TSType { return tsTypeReference(node.id); } */ - case "IntersectionTypeAnnotation": - return tsIntersectionType(node.types.map(toTsType)); - case "MixedTypeAnnotation": - return tsAnyKeyword(); - case "NullLiteralTypeAnnotation": - return tsNullKeyword(); - case "NullableTypeAnnotation": - return tsUnionType([ - toTsType(node.typeAnnotation), - tsNullKeyword(), - tsUndefinedKeyword(), - ]); - case "NumberLiteralTypeAnnotation": - return tsLiteralType(numericLiteral(node.value!)); - case "NumberTypeAnnotation": - return tsNumberKeyword(); - case "StringLiteralTypeAnnotation": - return tsLiteralType(stringLiteral(node.value!)); - case "StringTypeAnnotation": - return tsStringKeyword(); - case "ThisTypeAnnotation": - return tsThisType(); - case "TupleTypeAnnotation": - return tsTupleType(node.types.map(toTsType)); - case "TypeofTypeAnnotation": - return tsTypeQuery(getId(node.argument)); + case 'IntersectionTypeAnnotation': + return tsIntersectionType(node.types.map(toTsType)) + case 'MixedTypeAnnotation': + return tsAnyKeyword() + case 'NullLiteralTypeAnnotation': + return tsNullKeyword() + case 'NullableTypeAnnotation': + return tsUnionType([toTsType(node.typeAnnotation), tsNullKeyword(), tsUndefinedKeyword()]) + case 'NumberLiteralTypeAnnotation': + return tsLiteralType(numericLiteral(node.value!)) + case 'NumberTypeAnnotation': + return tsNumberKeyword() + case 'StringLiteralTypeAnnotation': + return tsLiteralType(stringLiteral(node.value!)) + case 'StringTypeAnnotation': + return tsStringKeyword() + case 'ThisTypeAnnotation': + return tsThisType() + case 'TupleTypeAnnotation': + return tsTupleType(node.types.map(toTsType)) + case 'TypeofTypeAnnotation': + return tsTypeQuery(getId(node.argument)) - case "TypeAnnotation": - return toTs(node.typeAnnotation); + case 'TypeAnnotation': + return toTs(node.typeAnnotation) - case "ObjectTypeAnnotation": + case 'ObjectTypeAnnotation': return tsTypeLiteral([ ...node.properties.map(_ => { if (isSpreadElement(_)) { - return _; + return _ } let s = tsPropertySignature( _.key, tsTypeAnnotation(toTsType(_.typeAnnotation || _.value)) - ); - s.optional = _.optional; - return s; + ) + s.optional = _.optional + return s // TODO: anonymous indexers // TODO: named indexers // TODO: call properties // TODO: variance - }), + }) // ...node.indexers.map(_ => tSIndexSignature()) - ]); - case "UnionTypeAnnotation": - return tsUnionType(node.types.map(toTs)); - case "VoidTypeAnnotation": - return tsVoidKeyword(); - case "ExistsTypeAnnotation": - return tsAnyKeyword(); + ]) + case 'UnionTypeAnnotation': + return tsUnionType(node.types.map(toTs)) + case 'VoidTypeAnnotation': + return tsVoidKeyword() + case 'ExistsTypeAnnotation': + return tsAnyKeyword() default: - throw new Error(`Didn't understand type '${node.type}'`); + throw new Error(`Didn't understand type '${node.type}'`) } } function getId(node: FlowType): Identifier { switch (node.type) { - case "GenericTypeAnnotation": - return node.id; + case 'GenericTypeAnnotation': + return node.id default: - throw ReferenceError("typeof query must reference a node that has an id"); + throw ReferenceError('typeof query must reference a node that has an id') } } function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { - let typeParams = undefined; + let typeParams = undefined if (node.typeParameters) { typeParams = tsTypeParameterDeclaration( node.typeParameters.params.map(_ => { // TODO: How is this possible? if (isTSTypeParameter(_)) { - return _; + return _ } - let constraint = _.bound ? toTs(_.bound) : undefined; - let default_ = _.default ? toTs(_.default) : undefined; - let param = tsTypeParameter(constraint, default_); - param.name = _.name; - return param; + let constraint = _.bound ? toTs(_.bound) : undefined + let default_ = _.default ? toTs(_.default) : undefined + let param = tsTypeParameter(constraint, default_) + param.name = _.name + return param }) - ); + ) } - const returnTypeType = node.returnType ? toTs(node.returnType) : null; + const returnTypeType = node.returnType ? toTs(node.returnType) : null if (node.returnType && !returnTypeType) { - console.dir(node.returnType); - throw new Error(`Could not convert return type '${node.returnType.type}'`); + console.dir(node.returnType) + throw new Error(`Could not convert return type '${node.returnType.type}'`) } - let f = tsFunctionType( - typeParams, - node.returnType ? tsTypeAnnotation(returnTypeType) : undefined - ); + let f = tsFunctionType(typeParams, node.returnType ? tsTypeAnnotation(returnTypeType) : undefined) // Params if (node.params) { // TODO: Rest params let paramNames = node.params .map(_ => _.name) .filter(_ => _ !== null) - .map(_ => (_ as Identifier).name); + .map(_ => (_ as Identifier).name) f.parameters = node.params.map(_ => { - let name = _.name && _.name.name; + let name = _.name && _.name.name // Generate param name? (Required in TS, optional in Flow) if (name == null) { - name = generateFreeIdentifier(paramNames); - paramNames.push(name); + name = generateFreeIdentifier(paramNames) + paramNames.push(name) } - let id = identifier(name); + let id = identifier(name) if (_.typeAnnotation) { - id.typeAnnotation = tsTypeAnnotation(toTsType(_.typeAnnotation)); + id.typeAnnotation = tsTypeAnnotation(toTsType(_.typeAnnotation)) } - return id; - }); + return id + }) } - return f; + return f } function hasBound(node: Node): node is BoundedTypeParameter { - return isTypeParameter(node) && node.bound != null; + return isTypeParameter(node) && node.bound != null } interface BoundedTypeParameter extends TypeParameter { - bound: TypeAnnotation; + bound: TypeAnnotation } diff --git a/src/index.ts b/src/index.ts index 1ceea6c..20fcf90 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,114 +1,110 @@ -import { parse } from "@babel/parser"; -import generate from "@babel/generator"; -import traverse, { Node, Visitor } from "@babel/traverse"; -import { File } from "@babel/types"; -import { sync } from "glob"; -import { dropWhile, pullAt } from "lodash"; -import { EOL } from "os"; -import { relative, resolve } from "path"; +import { parse } from '@babel/parser' +import generate from '@babel/generator' +import traverse, { Node, Visitor } from '@babel/traverse' +import { File } from '@babel/types' +import { sync } from 'glob' +import { dropWhile, pullAt } from 'lodash' +import { EOL } from 'os' +import { relative, resolve } from 'path' -type Warning = [string, string, number, number]; -type Rule = (warnings: Warning[]) => Visitor; +type Warning = [string, string, number, number] +type Rule = (warnings: Warning[]) => Visitor -let rules = new Map(); +let rules = new Map() export function addRule(ruleName: string, rule: Rule) { if (rules.has(ruleName)) { - throw `A rule with the name "${ruleName}" is already defined`; + throw `A rule with the name "${ruleName}" is already defined` } - rules.set(ruleName, rule); + rules.set(ruleName, rule) } export async function compile(code: string, filename: string) { - console.log("Parse..."); + console.log('Parse...') const parsed = parse(code, { - plugins: ["classProperties", "flow", "objectRestSpread"], - sourceType: "module", - }); - console.log("Convert..."); - let [warnings, ast] = await convert(parsed); + plugins: ['classProperties', 'flow', 'objectRestSpread'], + sourceType: 'module' + }) + console.log('Convert...') + let [warnings, ast] = await convert(parsed) - console.log("Warnings..."); + console.log('Warnings...') warnings.forEach(([message, issueURL, line, column]) => { console.log( `Warning: ${message} (at ${relative( __dirname, filename )}: line ${line}, column ${column}). See ${issueURL}` - ); - }); + ) + }) - console.log("Strip flow annotations..."); - return addTrailingSpace( - trimLeadingNewlines(generate(stripAtFlowAnnotation(ast)).code) - ); + console.log('Strip flow annotations...') + return addTrailingSpace(trimLeadingNewlines(generate(stripAtFlowAnnotation(ast)).code)) } /** * @internal */ export async function convert(ast: T): Promise<[Warning[], T]> { - console.log("Loading rules..."); + console.log('Loading rules...') // load rules directory - await Promise.all( - sync(resolve(__dirname, "./rules/*.js")).map(_ => import(_)) - ); + await Promise.all(sync(resolve(__dirname, './rules/*.js')).map(_ => import(_))) - let warnings: Warning[] = []; + let warnings: Warning[] = [] const order = [ - "$Exact", - "$Keys", - "$ReadOnly", - "Bounds", - "Casting", - "Exact", - "Variance", - "Indexer", - "TypeAlias", - ]; - const keys = [...rules.keys()]; - const all = [...order, ...keys.filter(k => order.indexOf(k) < 0)]; - const visitor = {}; + '$Exact', + '$Keys', + '$ReadOnly', + 'Bounds', + 'Casting', + 'Exact', + 'Variance', + 'Indexer', + 'TypeAlias' + ] + const keys = [...rules.keys()] + const all = [...order, ...keys.filter(k => order.indexOf(k) < 0)] + const visitor = {} all.forEach(i => { - const visGen = rules.get(i); - const vis = visGen(warnings); + const visGen = rules.get(i) + const vis = visGen(warnings) Object.keys(vis).forEach(k => { if (!visitor[k]) { - visitor[k] = vis[k]; + visitor[k] = vis[k] } else { - const oldVis = visitor[k]; + const oldVis = visitor[k] visitor[k] = (...args) => { - oldVis(...args); - vis[k](...args); - }; + oldVis(...args) + vis[k](...args) + } } - }); - }); - console.log(`Traversing...`); - traverse(ast, visitor); - console.log("Done"); + }) + }) + console.log(`Traversing...`) + traverse(ast, visitor) + console.log('Done') - return [warnings, ast]; + return [warnings, ast] } function stripAtFlowAnnotation(ast: File): File { - let { leadingComments } = ast.program.body[0]; + let { leadingComments } = ast.program.body[0] if (leadingComments) { - let index = leadingComments.findIndex(_ => _.value.trim() === "@flow"); + let index = leadingComments.findIndex(_ => _.value.trim() === '@flow') if (index > -1) { - pullAt(leadingComments, index); + pullAt(leadingComments, index) } } - return ast; + return ast } function addTrailingSpace(file: string): string { if (file.endsWith(EOL)) { - return file; + return file } - return file + EOL; + return file + EOL } function trimLeadingNewlines(file: string): string { - return dropWhile(file.split(EOL), _ => !_).join(EOL); + return dropWhile(file.split(EOL), _ => !_).join(EOL) } diff --git a/src/rules/$Exact.ts b/src/rules/$Exact.ts index e9d3a6b..a84c129 100644 --- a/src/rules/$Exact.ts +++ b/src/rules/$Exact.ts @@ -2,7 +2,6 @@ import { addRule } from '../' addRule('$Exact', warnings => ({ GenericTypeAnnotation(path) { - if (path.node.id.name !== '$Exact') { return } diff --git a/src/rules/$Keys.ts b/src/rules/$Keys.ts index 805d015..39cd881 100644 --- a/src/rules/$Keys.ts +++ b/src/rules/$Keys.ts @@ -6,7 +6,7 @@ addRule('$Keys', () => ({ if (path.node.id.name !== '$Keys') { return } - let { id } = (path.node.typeParameters.params[0] as GenericTypeAnnotation) + let { id } = path.node.typeParameters.params[0] as GenericTypeAnnotation let op = tsTypeOperator(tsTypeReference(id)) path.replaceWith(op) } diff --git a/src/rules/$ReadOnly.ts b/src/rules/$ReadOnly.ts index bcd0095..c00079c 100644 --- a/src/rules/$ReadOnly.ts +++ b/src/rules/$ReadOnly.ts @@ -3,14 +3,10 @@ import { addRule } from '../' addRule('$ReadOnly', () => ({ GenericTypeAnnotation(path) { - if (path.node.id.name !== '$ReadOnly') { return } - path.replaceWith(genericTypeAnnotation( - identifier('Readonly'), - path.node.typeParameters - )) + path.replaceWith(genericTypeAnnotation(identifier('Readonly'), path.node.typeParameters)) } })) diff --git a/src/rules/Bounds.ts b/src/rules/Bounds.ts index 7bc0b43..a7b1828 100644 --- a/src/rules/Bounds.ts +++ b/src/rules/Bounds.ts @@ -4,7 +4,6 @@ import { toTs } from '../convert' addRule('Bounds', () => ({ TypeParameterDeclaration(path) { - if (path.node.params.every(_ => !hasBound(_))) { return } diff --git a/src/rules/Exact.ts b/src/rules/Exact.ts index f33a19a..4094541 100644 --- a/src/rules/Exact.ts +++ b/src/rules/Exact.ts @@ -10,11 +10,9 @@ addRule('Exact', warnings => ({ path.node.loc.start.line, path.node.loc.start.column ]) - path.replaceWith(objectTypeAnnotation( - path.node.properties, - path.node.indexers, - path.node.callProperties - )) + path.replaceWith( + objectTypeAnnotation(path.node.properties, path.node.indexers, path.node.callProperties) + ) } } })) diff --git a/src/rules/Functions.ts b/src/rules/Functions.ts index 54e780a..d05ca23 100644 --- a/src/rules/Functions.ts +++ b/src/rules/Functions.ts @@ -1,8 +1,8 @@ -import { addRule } from "../"; -import { toTs } from "../convert"; +import { addRule } from '../' +import { toTs } from '../convert' -addRule("Functions", () => ({ +addRule('Functions', () => ({ FunctionTypeAnnotation(path) { - path.replaceWith(toTs(path.node)); - }, -})); + path.replaceWith(toTs(path.node)) + } +})) diff --git a/src/rules/Indexer.ts b/src/rules/Indexer.ts index a1de001..bfb09f1 100644 --- a/src/rules/Indexer.ts +++ b/src/rules/Indexer.ts @@ -1,19 +1,15 @@ -import { identifier, objectTypeIndexer } from "@babel/types"; -import { addRule } from "../"; -import { generateFreeIdentifier } from "../utils"; +import { identifier, objectTypeIndexer } from '@babel/types' +import { addRule } from '../' +import { generateFreeIdentifier } from '../utils' -addRule("Indexer", () => ({ +addRule('Indexer', () => ({ ObjectTypeIndexer(path) { if (path.node.id !== null) { - return; + return } path.replaceWith( - objectTypeIndexer( - identifier(generateFreeIdentifier([])), - path.node.key, - path.node.value - ) - ); - }, -})); + objectTypeIndexer(identifier(generateFreeIdentifier([])), path.node.key, path.node.value) + ) + } +})) diff --git a/src/rules/Maybe.ts b/src/rules/Maybe.ts index 369f514..52ddf1e 100644 --- a/src/rules/Maybe.ts +++ b/src/rules/Maybe.ts @@ -1,12 +1,19 @@ -import { genericTypeAnnotation, identifier, nullLiteralTypeAnnotation, unionTypeAnnotation } from '@babel/types' +import { + genericTypeAnnotation, + identifier, + nullLiteralTypeAnnotation, + unionTypeAnnotation +} from '@babel/types' import { addRule } from '../' addRule('Maybe', () => ({ NullableTypeAnnotation(path) { - path.replaceWith(unionTypeAnnotation([ - (path.node as any).typeAnnotation, - nullLiteralTypeAnnotation(), - genericTypeAnnotation(identifier('undefined')) - ])) + path.replaceWith( + unionTypeAnnotation([ + (path.node as any).typeAnnotation, + nullLiteralTypeAnnotation(), + genericTypeAnnotation(identifier('undefined')) + ]) + ) } })) diff --git a/src/rules/ObjectType.ts b/src/rules/ObjectType.ts index 34368a1..ec679a4 100644 --- a/src/rules/ObjectType.ts +++ b/src/rules/ObjectType.ts @@ -1,8 +1,8 @@ -import { addRule } from "../"; -import { toTs } from "../convert"; +import { addRule } from '../' +import { toTs } from '../convert' -addRule("ObjectType", () => ({ +addRule('ObjectType', () => ({ ObjectTypeAnnotation(path) { - path.replaceWith(toTs(path.node)); - }, -})); + path.replaceWith(toTs(path.node)) + } +})) diff --git a/src/rules/Opaque.ts b/src/rules/Opaque.ts index af1da81..eb0b2ea 100644 --- a/src/rules/Opaque.ts +++ b/src/rules/Opaque.ts @@ -10,11 +10,13 @@ addRule('Opaque', warnings => ({ path.node.loc.start.line, path.node.loc.start.column ]) - path.replaceWith(typeAlias( - (path.node as any).id, - (path.node as any).typeParameters, - (path.node as any).impltype - )) + path.replaceWith( + typeAlias( + (path.node as any).id, + (path.node as any).typeParameters, + (path.node as any).impltype + ) + ) } } })) diff --git a/src/rules/TypeAlias.ts b/src/rules/TypeAlias.ts index e00bc02..5ef78a9 100644 --- a/src/rules/TypeAlias.ts +++ b/src/rules/TypeAlias.ts @@ -1,8 +1,8 @@ -import { addRule } from ".."; -import { toTs } from "../convert"; +import { addRule } from '..' +import { toTs } from '../convert' -addRule("TypeAlias", () => ({ +addRule('TypeAlias', () => ({ TypeAlias(path) { - path.replaceWith(toTs(path.node)); - }, -})); + path.replaceWith(toTs(path.node)) + } +})) diff --git a/src/rules/TypeAnnotation.ts b/src/rules/TypeAnnotation.ts index f38d85b..fe1fadd 100644 --- a/src/rules/TypeAnnotation.ts +++ b/src/rules/TypeAnnotation.ts @@ -1,8 +1,8 @@ -import { addRule } from ".."; -import { toTs } from "../convert"; +import { addRule } from '..' +import { toTs } from '../convert' -addRule("TypeAnnotation", () => ({ +addRule('TypeAnnotation', () => ({ TypeAnnotation(path) { - path.replaceWith(toTs(path.node)); - }, -})); + path.replaceWith(toTs(path.node)) + } +})) diff --git a/src/rules/Variance.ts b/src/rules/Variance.ts index 504cf08..6875a3a 100644 --- a/src/rules/Variance.ts +++ b/src/rules/Variance.ts @@ -1,16 +1,16 @@ -import { addRule } from ".."; -import { toTs } from "../convert"; +import { addRule } from '..' +import { toTs } from '../convert' -addRule("Variance", warnings => ({ +addRule('Variance', warnings => ({ ObjectTypeProperty(path) { - if (path.node.variance && path.node.variance.kind === "plus") { + if (path.node.variance && path.node.variance.kind === 'plus') { warnings.push([ `Contravariance can't be expressed in TypeScript`, - "https://github.com/Microsoft/TypeScript/issues/1394", + 'https://github.com/Microsoft/TypeScript/issues/1394', path.node.loc.start.line, - path.node.loc.start.column, - ]); + path.node.loc.start.column + ]) } - path.replaceWith(toTs(path.node)); - }, -})); + path.replaceWith(toTs(path.node)) + } +})) diff --git a/yarn.lock b/yarn.lock index 96bd7c8..f04110e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2527,6 +2527,11 @@ prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" +prettier@^1.15.3: + version "1.15.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" + integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg== + pretty-ms@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-4.0.0.tgz#31baf41b94fd02227098aaa03bd62608eb0d6e92" From d22316882b53c0d84991bc9884240d7553609dc0 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 09:53:48 +0000 Subject: [PATCH 12/44] Add prettier --- package.json | 3 +++ prettier.config.js | 6 ++++++ yarn.lock | 5 +++++ 3 files changed, 14 insertions(+) create mode 100644 prettier.config.js diff --git a/package.json b/package.json index 28a0281..4aff330 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,8 @@ "build:watch": "tsc -w", "clean": "rm -rf ./dist", "lint": "tslint src/**/*.ts", + "prettier": "prettier 'src/**/*.[tj]s'", + "prettier:fix": "yarn prettier --write", "prepublishOnly": "npm run clean && npm run lint && npm run build -- -d", "pretest": "npm run build", "tdd": "concurrently -k 'npm run build:watch' 'npm run test:watch'", @@ -38,6 +40,7 @@ "ava": "^0.24.0", "concurrently": "^3.5.1", "flow-bin": "^0.59.0", + "prettier": "^1.15.3", "tslint": "^5.8.0", "typescript": "^2.6.2" }, diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..7e10ad0 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,6 @@ +module.exports = { + printWidth: 80, + semi: false, + singleQuote: true, + trailingComma: 'none', +} diff --git a/yarn.lock b/yarn.lock index e760061..45ffd62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2315,6 +2315,11 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier@^1.15.3: + version "1.15.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" + integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg== + pretty-ms@^0.2.1: version "0.2.2" resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-0.2.2.tgz#da879a682ff33a37011046f13d627f67c73b84f6" From d9699a7574703cb5f3c0fb8a076c32b07f34b36e Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 09:54:48 +0000 Subject: [PATCH 13/44] Autoformat with 'yarn prettier:fix' --- src/cli.ts | 20 ++--- src/convert.ts | 176 ++++++++++++++++++++++++++++------------ src/index.ts | 26 ++++-- src/rules/$Exact.ts | 1 - src/rules/$Keys.ts | 8 +- src/rules/$ReadOnly.ts | 8 +- src/rules/Bounds.ts | 8 +- src/rules/Exact.ts | 12 +-- src/rules/Indexer.ts | 14 ++-- src/rules/Maybe.ts | 19 +++-- src/rules/Opaque.ts | 12 +-- src/rules/TypeImport.ts | 4 +- 12 files changed, 202 insertions(+), 106 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index ab5aaa7..66a5921 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -6,16 +6,17 @@ import { resolve } from 'path' import stdin = require('stdin') import { compile } from './index' -main(minimist(process.argv.slice(2), { - alias: { - help: ['h'], - input: ['i'], - output: ['o'] - } -})) +main( + minimist(process.argv.slice(2), { + alias: { + help: ['h'], + input: ['i'], + output: ['o'] + } + }) +) async function main(argv: minimist.ParsedArgs) { - if (argv.help) { printHelp() process.exit(0) @@ -32,7 +33,6 @@ async function main(argv: minimist.ParsedArgs) { process.stderr.write(e.message) process.exit(1) } - } function readInput(argIn?: string) { @@ -58,7 +58,7 @@ function printHelp() { const pkg = require('../../package.json') process.stdout.write( -` + ` ${pkg.name} ${pkg.version} Usage: flow2ts [--input, -i] [IN_FILE] [--output, -o] [OUT_FILE] diff --git a/src/convert.ts b/src/convert.ts index 881474f..9fcf45c 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -1,10 +1,48 @@ -import { booleanLiteral, Flow, FlowType, FunctionTypeAnnotation, identifier, Identifier, isSpreadProperty, isTSTypeParameter, isTypeParameter, Node, numericLiteral, stringLiteral, tsAnyKeyword, tsArrayType, tsAsExpression, tsBooleanKeyword, tsFunctionType, TSFunctionType, tsIntersectionType, tsLiteralType, tsNullKeyword, tsNumberKeyword, tsPropertySignature, tsStringKeyword, tsThisType, tsTupleType, TSType, tsTypeAnnotation, tsTypeLiteral, tsTypeParameter, tsTypeParameterDeclaration, tsTypeQuery, tsTypeReference, tsUndefinedKeyword, tsUnionType, tsVoidKeyword, TypeAnnotation, TypeParameter } from '@babel/types' +import { + booleanLiteral, + Flow, + FlowType, + FunctionTypeAnnotation, + identifier, + Identifier, + isSpreadProperty, + isTSTypeParameter, + isTypeParameter, + Node, + numericLiteral, + stringLiteral, + tsAnyKeyword, + tsArrayType, + tsAsExpression, + tsBooleanKeyword, + tsFunctionType, + TSFunctionType, + tsIntersectionType, + tsLiteralType, + tsNullKeyword, + tsNumberKeyword, + tsPropertySignature, + tsStringKeyword, + tsThisType, + tsTupleType, + TSType, + tsTypeAnnotation, + tsTypeLiteral, + tsTypeParameter, + tsTypeParameterDeclaration, + tsTypeQuery, + tsTypeReference, + tsUndefinedKeyword, + tsUnionType, + tsVoidKeyword, + TypeAnnotation, + TypeParameter +} from '@babel/types' import { generateFreeIdentifier } from './utils' // TODO: Add overloads export function toTs(node: Flow | TSType): TSType { switch (node.type) { - // TS types // TODO: Why does tsTs get called with TSTypes? It should only get called with Flow types. case 'TSAnyKeyword': @@ -75,7 +113,7 @@ export function toTs(node: Flow | TSType): TSType { case 'TypeParameterDeclaration': let params = node.params.map(_ => { - let d = (_ as any as TypeParameter).default + let d = ((_ as any) as TypeParameter).default let p = tsTypeParameter( hasBound(_) ? toTsType(_.bound.typeAnnotation) : undefined, d ? toTs(d) : undefined @@ -109,68 +147,97 @@ export function toTs(node: Flow | TSType): TSType { export function toTsType(node: FlowType): TSType { switch (node.type) { - case 'AnyTypeAnnotation': return tsAnyKeyword() - case 'ArrayTypeAnnotation': return tsArrayType(toTsType(node.elementType)) - case 'BooleanTypeAnnotation': return tsBooleanKeyword() - case 'BooleanLiteralTypeAnnotation': return tsLiteralType(booleanLiteral(node.value!)) - case 'FunctionTypeAnnotation': return functionToTsType(node) - case 'GenericTypeAnnotation': return tsTypeReference(node.id) - case 'IntersectionTypeAnnotation': return tsIntersectionType(node.types.map(toTsType)) - case 'MixedTypeAnnotation': return tsAnyKeyword() - case 'NullLiteralTypeAnnotation': return tsNullKeyword() - case 'NullableTypeAnnotation': return tsUnionType([toTsType(node.typeAnnotation), tsNullKeyword(), tsUndefinedKeyword()]) - case 'NumberLiteralTypeAnnotation': return tsLiteralType(numericLiteral(node.value!)) - case 'NumberTypeAnnotation': return tsNumberKeyword() - case 'StringLiteralTypeAnnotation': return tsLiteralType(stringLiteral(node.value!)) - case 'StringTypeAnnotation': return tsStringKeyword() - case 'ThisTypeAnnotation': return tsThisType() - case 'TupleTypeAnnotation': return tsTupleType(node.types.map(toTsType)) - case 'TypeofTypeAnnotation': return tsTypeQuery(getId(node.argument)) - case 'ObjectTypeAnnotation': return tsTypeLiteral([ - ...node.properties.map(_ => { - if (isSpreadProperty(_)) { - return _ - } - let s = tsPropertySignature(_.key, tsTypeAnnotation(toTsType(_.value))) - s.optional = _.optional - return s - // TODO: anonymous indexers - // TODO: named indexers - // TODO: call properties - // TODO: variance - }) - // ...node.indexers.map(_ => tSIndexSignature()) - ]) - case 'UnionTypeAnnotation': return tsUnionType(node.types.map(toTsType)) - case 'VoidTypeAnnotation': return tsVoidKeyword() + case 'AnyTypeAnnotation': + return tsAnyKeyword() + case 'ArrayTypeAnnotation': + return tsArrayType(toTsType(node.elementType)) + case 'BooleanTypeAnnotation': + return tsBooleanKeyword() + case 'BooleanLiteralTypeAnnotation': + return tsLiteralType(booleanLiteral(node.value!)) + case 'FunctionTypeAnnotation': + return functionToTsType(node) + case 'GenericTypeAnnotation': + return tsTypeReference(node.id) + case 'IntersectionTypeAnnotation': + return tsIntersectionType(node.types.map(toTsType)) + case 'MixedTypeAnnotation': + return tsAnyKeyword() + case 'NullLiteralTypeAnnotation': + return tsNullKeyword() + case 'NullableTypeAnnotation': + return tsUnionType([ + toTsType(node.typeAnnotation), + tsNullKeyword(), + tsUndefinedKeyword() + ]) + case 'NumberLiteralTypeAnnotation': + return tsLiteralType(numericLiteral(node.value!)) + case 'NumberTypeAnnotation': + return tsNumberKeyword() + case 'StringLiteralTypeAnnotation': + return tsLiteralType(stringLiteral(node.value!)) + case 'StringTypeAnnotation': + return tsStringKeyword() + case 'ThisTypeAnnotation': + return tsThisType() + case 'TupleTypeAnnotation': + return tsTupleType(node.types.map(toTsType)) + case 'TypeofTypeAnnotation': + return tsTypeQuery(getId(node.argument)) + case 'ObjectTypeAnnotation': + return tsTypeLiteral([ + ...node.properties.map(_ => { + if (isSpreadProperty(_)) { + return _ + } + let s = tsPropertySignature( + _.key, + tsTypeAnnotation(toTsType(_.value)) + ) + s.optional = _.optional + return s + // TODO: anonymous indexers + // TODO: named indexers + // TODO: call properties + // TODO: variance + }) + // ...node.indexers.map(_ => tSIndexSignature()) + ]) + case 'UnionTypeAnnotation': + return tsUnionType(node.types.map(toTsType)) + case 'VoidTypeAnnotation': + return tsVoidKeyword() } } function getId(node: FlowType): Identifier { switch (node.type) { - case 'GenericTypeAnnotation': return node.id - default: throw ReferenceError('typeof query must reference a node that has an id') + case 'GenericTypeAnnotation': + return node.id + default: + throw ReferenceError('typeof query must reference a node that has an id') } } function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { - let typeParams = undefined if (node.typeParameters) { - typeParams = tsTypeParameterDeclaration(node.typeParameters.params.map(_ => { - - // TODO: How is this possible? - if (isTSTypeParameter(_)) { - return _ - } + typeParams = tsTypeParameterDeclaration( + node.typeParameters.params.map(_ => { + // TODO: How is this possible? + if (isTSTypeParameter(_)) { + return _ + } - let constraint = _.bound ? toTs(_.bound) : undefined - let default_ = _.default ? toTs(_.default) : undefined - let param = tsTypeParameter(constraint, default_) - param.name = _.name - return param - })) + let constraint = _.bound ? toTs(_.bound) : undefined + let default_ = _.default ? toTs(_.default) : undefined + let param = tsTypeParameter(constraint, default_) + param.name = _.name + return param + }) + ) } let f = tsFunctionType(typeParams) @@ -178,7 +245,10 @@ function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { // Params if (node.params) { // TODO: Rest params - let paramNames = node.params.map(_ => _.name).filter(_ => _ !== null).map(_ => (_ as Identifier).name) + let paramNames = node.params + .map(_ => _.name) + .filter(_ => _ !== null) + .map(_ => (_ as Identifier).name) f.parameters = node.params.map(_ => { let name = _.name && _.name.name diff --git a/src/index.ts b/src/index.ts index a4003f9..b81c00f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,30 +20,38 @@ export function addRule(ruleName: string, rule: Rule) { } export async function compile(code: string, filename: string) { - let [warnings, ast] = await convert( - parse(code, { plugins: ['classProperties', 'flow', 'objectRestSpread'], sourceType: 'module' }) + parse(code, { + plugins: ['classProperties', 'flow', 'objectRestSpread'], + sourceType: 'module' + }) ) warnings.forEach(([message, issueURL, line, column]) => { - console.log(`Warning: ${message} (at ${relative(__dirname, filename)}: line ${line}, column ${column}). See ${issueURL}`) + console.log( + `Warning: ${message} (at ${relative( + __dirname, + filename + )}: line ${line}, column ${column}). See ${issueURL}` + ) }) - return addTrailingSpace(trimLeadingNewlines(generate(stripAtFlowAnnotation(ast)).code)) + return addTrailingSpace( + trimLeadingNewlines(generate(stripAtFlowAnnotation(ast)).code) + ) } /** * @internal */ export async function convert(ast: T): Promise<[Warning[], T]> { - // load rules directory - await Promise.all(sync(resolve(__dirname, './rules/*.js')).map(_ => import(_))) + await Promise.all( + sync(resolve(__dirname, './rules/*.js')).map(_ => import(_)) + ) let warnings: Warning[] = [] - rules.forEach(visitor => - traverse(ast, visitor(warnings)) - ) + rules.forEach(visitor => traverse(ast, visitor(warnings))) return [warnings, ast] } diff --git a/src/rules/$Exact.ts b/src/rules/$Exact.ts index e9d3a6b..a84c129 100644 --- a/src/rules/$Exact.ts +++ b/src/rules/$Exact.ts @@ -2,7 +2,6 @@ import { addRule } from '../' addRule('$Exact', warnings => ({ GenericTypeAnnotation(path) { - if (path.node.id.name !== '$Exact') { return } diff --git a/src/rules/$Keys.ts b/src/rules/$Keys.ts index 805d015..69bd057 100644 --- a/src/rules/$Keys.ts +++ b/src/rules/$Keys.ts @@ -1,4 +1,8 @@ -import { GenericTypeAnnotation, tsTypeOperator, tsTypeReference } from '@babel/types' +import { + GenericTypeAnnotation, + tsTypeOperator, + tsTypeReference +} from '@babel/types' import { addRule } from '../' addRule('$Keys', () => ({ @@ -6,7 +10,7 @@ addRule('$Keys', () => ({ if (path.node.id.name !== '$Keys') { return } - let { id } = (path.node.typeParameters.params[0] as GenericTypeAnnotation) + let { id } = path.node.typeParameters.params[0] as GenericTypeAnnotation let op = tsTypeOperator(tsTypeReference(id)) path.replaceWith(op) } diff --git a/src/rules/$ReadOnly.ts b/src/rules/$ReadOnly.ts index bcd0095..5cd92fd 100644 --- a/src/rules/$ReadOnly.ts +++ b/src/rules/$ReadOnly.ts @@ -3,14 +3,12 @@ import { addRule } from '../' addRule('$ReadOnly', () => ({ GenericTypeAnnotation(path) { - if (path.node.id.name !== '$ReadOnly') { return } - path.replaceWith(genericTypeAnnotation( - identifier('Readonly'), - path.node.typeParameters - )) + path.replaceWith( + genericTypeAnnotation(identifier('Readonly'), path.node.typeParameters) + ) } })) diff --git a/src/rules/Bounds.ts b/src/rules/Bounds.ts index 7bc0b43..22bf009 100644 --- a/src/rules/Bounds.ts +++ b/src/rules/Bounds.ts @@ -1,10 +1,14 @@ -import { isTypeParameter, Node, TypeAnnotation, TypeParameter } from '@babel/types' +import { + isTypeParameter, + Node, + TypeAnnotation, + TypeParameter +} from '@babel/types' import { addRule } from '../' import { toTs } from '../convert' addRule('Bounds', () => ({ TypeParameterDeclaration(path) { - if (path.node.params.every(_ => !hasBound(_))) { return } diff --git a/src/rules/Exact.ts b/src/rules/Exact.ts index f33a19a..321757e 100644 --- a/src/rules/Exact.ts +++ b/src/rules/Exact.ts @@ -10,11 +10,13 @@ addRule('Exact', warnings => ({ path.node.loc.start.line, path.node.loc.start.column ]) - path.replaceWith(objectTypeAnnotation( - path.node.properties, - path.node.indexers, - path.node.callProperties - )) + path.replaceWith( + objectTypeAnnotation( + path.node.properties, + path.node.indexers, + path.node.callProperties + ) + ) } } })) diff --git a/src/rules/Indexer.ts b/src/rules/Indexer.ts index 1f2a9d9..6dff97c 100644 --- a/src/rules/Indexer.ts +++ b/src/rules/Indexer.ts @@ -4,16 +4,16 @@ import { generateFreeIdentifier } from '../utils' addRule('Indexer', () => ({ ObjectTypeIndexer(path) { - if (path.node.id !== null) { return } - path.replaceWith(objectTypeIndexer( - identifier(generateFreeIdentifier([])), - path.node.key, - path.node.value - )) - + path.replaceWith( + objectTypeIndexer( + identifier(generateFreeIdentifier([])), + path.node.key, + path.node.value + ) + ) } })) diff --git a/src/rules/Maybe.ts b/src/rules/Maybe.ts index 369f514..52ddf1e 100644 --- a/src/rules/Maybe.ts +++ b/src/rules/Maybe.ts @@ -1,12 +1,19 @@ -import { genericTypeAnnotation, identifier, nullLiteralTypeAnnotation, unionTypeAnnotation } from '@babel/types' +import { + genericTypeAnnotation, + identifier, + nullLiteralTypeAnnotation, + unionTypeAnnotation +} from '@babel/types' import { addRule } from '../' addRule('Maybe', () => ({ NullableTypeAnnotation(path) { - path.replaceWith(unionTypeAnnotation([ - (path.node as any).typeAnnotation, - nullLiteralTypeAnnotation(), - genericTypeAnnotation(identifier('undefined')) - ])) + path.replaceWith( + unionTypeAnnotation([ + (path.node as any).typeAnnotation, + nullLiteralTypeAnnotation(), + genericTypeAnnotation(identifier('undefined')) + ]) + ) } })) diff --git a/src/rules/Opaque.ts b/src/rules/Opaque.ts index af1da81..eb0b2ea 100644 --- a/src/rules/Opaque.ts +++ b/src/rules/Opaque.ts @@ -10,11 +10,13 @@ addRule('Opaque', warnings => ({ path.node.loc.start.line, path.node.loc.start.column ]) - path.replaceWith(typeAlias( - (path.node as any).id, - (path.node as any).typeParameters, - (path.node as any).impltype - )) + path.replaceWith( + typeAlias( + (path.node as any).id, + (path.node as any).typeParameters, + (path.node as any).impltype + ) + ) } } })) diff --git a/src/rules/TypeImport.ts b/src/rules/TypeImport.ts index ad9ff67..f477fa3 100644 --- a/src/rules/TypeImport.ts +++ b/src/rules/TypeImport.ts @@ -4,7 +4,9 @@ import { addRule } from '../' addRule('TypeImport', () => ({ ImportDeclaration(path) { if ((path as any).node.importKind === 'type') { - path.replaceWith(importDeclaration(path.node.specifiers, path.node.source)) + path.replaceWith( + importDeclaration(path.node.specifiers, path.node.source) + ) } } })) From 85fce70d19f2e013a134afc4b3cf0b3f0a2dfa15 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 10:09:32 +0000 Subject: [PATCH 14/44] Assert prettier --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4aff330..a6278ee 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,10 @@ "build": "tsc", "build:watch": "tsc -w", "clean": "rm -rf ./dist", - "lint": "tslint src/**/*.ts", + "lint": "tslint src/**/*.ts && npm run prettier:check", "prettier": "prettier 'src/**/*.[tj]s'", "prettier:fix": "yarn prettier --write", + "prettier:check": "yarn prettier -l", "prepublishOnly": "npm run clean && npm run lint && npm run build -- -d", "pretest": "npm run build", "tdd": "concurrently -k 'npm run build:watch' 'npm run test:watch'", From fde88fcaf09248961d7cd5a3a44326bcd79cce02 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 15:21:25 +0000 Subject: [PATCH 15/44] Resolve some TypeScript woes --- package.json | 4 ++- src/convert.ts | 69 +++++++++++++++++++++++--------------------------- src/index.ts | 2 +- test/test.ts | 2 +- tsconfig.json | 13 ++++------ 5 files changed, 42 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index 4bcb9c7..ae334b8 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,8 @@ "typescript": "^3.2.2" }, "ava": { - "files": ["./dist/test/test.js"] + "files": [ + "./dist/test/test.js" + ] } } diff --git a/src/convert.ts b/src/convert.ts index b50e154..a18097a 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -41,7 +41,9 @@ import { QualifiedTypeIdentifier, tsIndexSignature, tsTypeAliasDeclaration, - tsTypeParameterInstantiation + tsTypeParameterInstantiation, + TSTypeElement, + TSQualifiedName } from '@babel/types' import { generateFreeIdentifier } from './utils' @@ -187,22 +189,30 @@ export function _toTs(node: Flow | TSType): TSType { } } -export function toTsTypeName(node: FlowType): TsType { +export function toTsTypeName( + node: Identifier | QualifiedTypeIdentifier +): Identifier | TSQualifiedName { switch (node.type) { case 'Identifier': return node case 'QualifiedTypeIdentifier': - return tsQualifiedName(node.qualification, node.id) + return tsQualifiedName(toTsTypeName(node.qualification), node.id) } + throw new Error('Could not convert to TS identifier') } + export function toTsType(node: FlowType): TSType { if (node.type.match(/^TS[A-Z]/)) { + // @ts-ignore return node } switch (node.type) { + // @ts-ignore case 'Identifier': + // @ts-ignore case 'QualifiedTypeIdentifier': return tsTypeReference(toTsTypeName(node)) + case 'AnyTypeAnnotation': return tsAnyKeyword() case 'ArrayTypeAnnotation': @@ -222,26 +232,9 @@ export function toTsType(node: FlowType): TSType { ) ) } else { - return toTsType(node.id) - } - /* - let type; - if (node.id.type === "Identifier") { - type = toTsType(node.id); - } else { - type = toTs(node.id); + return tsTypeReference(toTsTypeName(node.id)) } - type.typeArguments = toTsType(node.typeParameters), - return type; - */ } - /* - if (node.id.type === "QualifiedTypeIdentifier") { - return toTsType(node.id); - } else { - return tsTypeReference(node.id); - } - */ case 'IntersectionTypeAnnotation': return tsIntersectionType(node.types.map(toTsType)) case 'MixedTypeAnnotation': @@ -274,21 +267,23 @@ export function toTsType(node: FlowType): TSType { case 'ObjectTypeAnnotation': return tsTypeLiteral([ - ...node.properties.map(_ => { - if (isSpreadElement(_)) { - return _ + ...node.properties.map( + (_): TSTypeElement => { + if (_.type === 'ObjectTypeSpreadProperty') { + return _ + } + let s = tsPropertySignature( + _.key, + tsTypeAnnotation(toTsType((_ as any).typeAnnotation)) + ) + s.optional = (_ as any).optional + return s + // TODO: anonymous indexers + // TODO: named indexers + // TODO: call properties + // TODO: variance } - let s = tsPropertySignature( - _.key, - tsTypeAnnotation(toTsType(_.typeAnnotation || _.value)) - ) - s.optional = _.optional - return s - // TODO: anonymous indexers - // TODO: named indexers - // TODO: call properties - // TODO: variance - }) + ) // ...node.indexers.map(_ => tSIndexSignature()) ]) case 'UnionTypeAnnotation': @@ -312,7 +307,7 @@ function getId(node: FlowType): Identifier { } function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { - let typeParams = undefined + let typeParams if (node.typeParameters) { typeParams = tsTypeParameterDeclaration( @@ -338,7 +333,7 @@ function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { } let f = tsFunctionType( typeParams, - node.returnType ? tsTypeAnnotation(returnTypeType) : undefined + node.returnType ? tsTypeAnnotation(returnTypeType as any) : undefined ) // Params if (node.params) { diff --git a/src/index.ts b/src/index.ts index 37c57ca..b3877e2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -70,7 +70,7 @@ export async function convert(ast: T): Promise<[Warning[], T]> { const all = [...order, ...keys.filter(k => order.indexOf(k) < 0)] const visitor = {} all.forEach(i => { - const visGen = rules.get(i) + const visGen = rules.get(i)! const vis = visGen(warnings) Object.keys(vis).forEach(k => { if (!visitor[k]) { diff --git a/test/test.ts b/test/test.ts index 530603a..f13a9f3 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1,4 +1,4 @@ -import { test } from 'ava' +import test from 'ava' import { sync } from 'glob' import { readFile } from 'mz/fs' import { basename, resolve } from 'path' diff --git a/tsconfig.json b/tsconfig.json index 9c65af7..a1ac858 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,19 @@ { "compilerOptions": { + "allowSyntheticDefaultImports": true, "declaration": false, - "lib": [ - "es2015" - ], + "lib": ["es2015", "esnext.asynciterable"], "module": "commonjs", "moduleResolution": "node", "noFallthroughCasesInSwitch": true, - "noImplicitAny": true, + "noImplicitAny": false, "noUnusedLocals": true, "noUnusedParameters": true, "outDir": "dist", "preserveConstEnums": false, "sourceMap": true, "strict": true, - "target": "es2015" + "target": "esnext" }, - "exclude": [ - "**/*.js.flow" - ] + "exclude": ["**/*.js.flow"] } From 03a172df0cf065b32a4884a1f0317d5a6521360c Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 16:20:36 +0000 Subject: [PATCH 16/44] Progress --- package.json | 2 +- src/convert.ts | 85 +++++++++++++++++++++++----------- src/index.ts | 1 + src/rules/Indexer.ts | 8 +++- src/rules/Mixed.ts | 3 ++ test/rules/Indexers/output.txt | 2 +- test/rules/Mixed/output.txt | 2 +- yarn.lock | 7 +-- 8 files changed, 76 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index ae334b8..29fb01d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@types/mz": "^0.0.32", "ava": "^1.0.1", "concurrently": "^4.1.0", - "flow-bin": "^0.59.0", + "flow-bin": "^0.89.0", "prettier": "^1.15.3", "tslint": "^5.12.0", "typescript": "^3.2.2" diff --git a/src/convert.ts b/src/convert.ts index a18097a..77242c4 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -5,11 +5,12 @@ import { FunctionTypeAnnotation, identifier, Identifier, - isSpreadElement, isTSTypeParameter, isTypeParameter, Node, numericLiteral, + objectTypeIndexer, + QualifiedTypeIdentifier, stringLiteral, tsAnyKeyword, tsArrayType, @@ -22,33 +23,33 @@ import { tsNullKeyword, tsNumberKeyword, tsPropertySignature, + tsQualifiedName, + TSQualifiedName, tsStringKeyword, tsThisType, tsTupleType, TSType, + tsTypeAliasDeclaration, tsTypeAnnotation, + TSTypeElement, tsTypeLiteral, tsTypeParameter, tsTypeParameterDeclaration, + tsTypeParameterInstantiation, tsTypeQuery, tsTypeReference, tsUndefinedKeyword, tsUnionType, - tsVoidKeyword, + tsUnknownKeyword, TypeAnnotation, TypeParameter, - tsQualifiedName, - QualifiedTypeIdentifier, - tsIndexSignature, - tsTypeAliasDeclaration, - tsTypeParameterInstantiation, - TSTypeElement, - TSQualifiedName + ObjectTypeIndexer, + tsIndexSignature } from '@babel/types' import { generateFreeIdentifier } from './utils' let depth = 0 -let stack = [] +let stack: string[] = [] // TODO: Add overloads export function toTs(node: Flow | TSType): TSType { try { @@ -95,7 +96,6 @@ export function _toTs(node: Flow | TSType): TSType { case 'TSSymbolKeyword': case 'TSThisType': case 'TSTupleType': - case 'TSTypeAnnotation': case 'TSTypeLiteral': case 'TSTypeOperator': case 'TSTypePredicate': @@ -104,14 +104,17 @@ export function _toTs(node: Flow | TSType): TSType { case 'TSUndefinedKeyword': case 'TSUnionType': case 'TSVoidKeyword': + // @ts-ignore + case 'TSTypeAnnotation': + // @ts-ignore case 'TSTypeParameterDeclaration': + // @ts-ignore case 'TSAsExpression': + // @ts-ignore case 'TSPropertySignature': return node // Flow types - case 'TypeAnnotation': - return tsTypeAnnotation(toTsType(node)) case 'AnyTypeAnnotation': case 'ArrayTypeAnnotation': case 'BooleanTypeAnnotation': @@ -123,7 +126,6 @@ export function _toTs(node: Flow | TSType): TSType { case 'MixedTypeAnnotation': case 'NullableTypeAnnotation': case 'NullLiteralTypeAnnotation': - case 'NumericLiteralTypeAnnotation': case 'NumberTypeAnnotation': case 'StringLiteralTypeAnnotation': case 'StringTypeAnnotation': @@ -133,15 +135,28 @@ export function _toTs(node: Flow | TSType): TSType { case 'ObjectTypeAnnotation': case 'UnionTypeAnnotation': case 'VoidTypeAnnotation': + // @ts-ignore + case 'NumericLiteralTypeAnnotation': return toTsType(node) + case 'ObjectTypeIndexer': + //return tsTypeLiteral([tsIndexSignature(node.parameters)]) + // @ts-ignore CHEATING! + return objectTypeIndexer( + node.id || identifier(generateFreeIdentifier([])), + node.key, + node.value + ) + case 'ObjectTypeProperty': let _ = tsPropertySignature(node.key, tsTypeAnnotation(toTs(node.value))) _.optional = node.optional _.readonly = node.variance && node.variance.kind === 'minus' + // @ts-ignore return _ case 'TypeCastExpression': + // @ts-ignore return tsAsExpression(node.expression, toTsType(node.typeAnnotation)) case 'TypeParameterDeclaration': @@ -155,27 +170,26 @@ export function _toTs(node: Flow | TSType): TSType { return p }) + // @ts-ignore return tsTypeParameterDeclaration(params) case 'QualifiedTypeIdentifier': - return toTsType(node) + // @ts-ignore + return tsQualifiedName(toTsTypeName(node.qualification), node.id) - /* - case "ObjectTypeIndexer": - return tsTypeLiteral([tsIndexSignature(node.parameters)]); - */ case 'TypeAlias': + // @ts-ignore return tsTypeAliasDeclaration(node.id, null, toTs(node.right)) + case 'TypeAnnotation': + //return tsTypeAnnotation(toTsType(node)) case 'ClassImplements': - case 'ClassProperty': case 'DeclareClass': case 'DeclareFunction': case 'DeclareInterface': case 'DeclareModule': case 'DeclareTypeAlias': case 'DeclareVariable': - case 'ExistentialTypeParam': case 'FunctionTypeParam': case 'InterfaceExtends': case 'InterfaceDeclaration': @@ -183,10 +197,15 @@ export function _toTs(node: Flow | TSType): TSType { case 'TypeParameterInstantiation': case 'ObjectTypeCallProperty': case 'ObjectTypeIndexer': + // @ts-ignore + case 'ClassProperty': + // @ts-ignore + case 'ExistentialTypeParam': console.log('WUT') console.dir(node) throw 'wut' } + throw new Error(`Note type not understood: '${node.type}'`) } export function toTsTypeName( @@ -211,7 +230,12 @@ export function toTsType(node: FlowType): TSType { case 'Identifier': // @ts-ignore case 'QualifiedTypeIdentifier': - return tsTypeReference(toTsTypeName(node)) + throw new Error( + `'${ + // @ts-ignore + node.type + }' passed to toTsType, instead use \`tsTypeReference(toTsTypeName(node))\`` + ) case 'AnyTypeAnnotation': return tsAnyKeyword() @@ -238,7 +262,7 @@ export function toTsType(node: FlowType): TSType { case 'IntersectionTypeAnnotation': return tsIntersectionType(node.types.map(toTsType)) case 'MixedTypeAnnotation': - return tsAnyKeyword() + return tsUnknownKeyword() case 'NullLiteralTypeAnnotation': return tsNullKeyword() case 'NullableTypeAnnotation': @@ -262,7 +286,9 @@ export function toTsType(node: FlowType): TSType { case 'TypeofTypeAnnotation': return tsTypeQuery(getId(node.argument)) + // @ts-ignore case 'TypeAnnotation': + // @ts-ignore return toTs(node.typeAnnotation) case 'ObjectTypeAnnotation': @@ -270,6 +296,7 @@ export function toTsType(node: FlowType): TSType { ...node.properties.map( (_): TSTypeElement => { if (_.type === 'ObjectTypeSpreadProperty') { + // @ts-ignore return _ } let s = tsPropertySignature( @@ -283,13 +310,13 @@ export function toTsType(node: FlowType): TSType { // TODO: call properties // TODO: variance } - ) - // ...node.indexers.map(_ => tSIndexSignature()) + ), + ...(node.indexers || []).map(toTsIndexSignature) ]) case 'UnionTypeAnnotation': return tsUnionType(node.types.map(toTs)) case 'VoidTypeAnnotation': - return tsVoidKeyword() + return tsUndefinedKeyword() case 'ExistsTypeAnnotation': return tsAnyKeyword() default: @@ -297,6 +324,12 @@ export function toTsType(node: FlowType): TSType { } } +function toTsIndexSignature(indexer: ObjectTypeIndexer): TSTypeElement { + const id = indexer.id ? indexer.id : identifier(generateFreeIdentifier([])) + id.typeAnnotation = tsTypeAnnotation(toTsType(indexer.key)) + return tsIndexSignature([id], tsTypeAnnotation(toTsType(indexer.value))) +} + function getId(node: FlowType): Identifier { switch (node.type) { case 'GenericTypeAnnotation': diff --git a/src/index.ts b/src/index.ts index b3877e2..b8c5a55 100644 --- a/src/index.ts +++ b/src/index.ts @@ -71,6 +71,7 @@ export async function convert(ast: T): Promise<[Warning[], T]> { const visitor = {} all.forEach(i => { const visGen = rules.get(i)! + if (!visGen) return const vis = visGen(warnings) Object.keys(vis).forEach(k => { if (!visitor[k]) { diff --git a/src/rules/Indexer.ts b/src/rules/Indexer.ts index 6dff97c..ddcb0b7 100644 --- a/src/rules/Indexer.ts +++ b/src/rules/Indexer.ts @@ -1,9 +1,12 @@ -import { identifier, objectTypeIndexer } from '@babel/types' import { addRule } from '../' -import { generateFreeIdentifier } from '../utils' +import { toTs } from '../convert' +//import { identifier, objectTypeIndexer } from '@babel/types' +//import { generateFreeIdentifier } from '../utils' addRule('Indexer', () => ({ ObjectTypeIndexer(path) { + path.replaceWith(toTs(path.node)) + /* if (path.node.id !== null) { return } @@ -15,5 +18,6 @@ addRule('Indexer', () => ({ path.node.value ) ) + */ } })) diff --git a/src/rules/Mixed.ts b/src/rules/Mixed.ts index 55b2ad9..893953c 100644 --- a/src/rules/Mixed.ts +++ b/src/rules/Mixed.ts @@ -1,3 +1,4 @@ +/* import { objectTypeAnnotation } from '@babel/types' import { addRule } from '../' @@ -6,3 +7,5 @@ addRule('Mixed', () => ({ path.replaceWith(objectTypeAnnotation([])) } })) + +*/ diff --git a/test/rules/Indexers/output.txt b/test/rules/Indexers/output.txt index 2b709a3..2681f51 100644 --- a/test/rules/Indexers/output.txt +++ b/test/rules/Indexers/output.txt @@ -1,3 +1,3 @@ type Indexer = { - [a: string]: boolean + [a: string]: boolean; }; diff --git a/test/rules/Mixed/output.txt b/test/rules/Mixed/output.txt index d545d8a..b57a55f 100644 --- a/test/rules/Mixed/output.txt +++ b/test/rules/Mixed/output.txt @@ -1,3 +1,3 @@ -function Mixed(x: {}): string { +function Mixed(x: unknown): string { return `default string ${x}`; } diff --git a/yarn.lock b/yarn.lock index f04110e..176d894 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1302,9 +1302,10 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -flow-bin@^0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.59.0.tgz#8c151ee7f09f1deed9bf0b9d1f2e8ab9d470f1bb" +flow-bin@^0.89.0: + version "0.89.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.89.0.tgz#6bd29c2af7e0f429797f820662f33749105c32fa" + integrity sha512-DkO4PsXYrl53V6G5+t5HbRMC5ajYUQej2LEGPUZ+j9okTb41Sn5j9vfxsCpXMEAslYnQoysHhYu4GUZsQX/DrQ== for-in@^1.0.2: version "1.0.2" From 735953daab458c6821dddca4e0cd47c21a496d26 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 16:21:14 +0000 Subject: [PATCH 17/44] Tidy --- src/rules/Indexer.ts | 15 --------------- src/rules/Mixed.ts | 12 +----------- 2 files changed, 1 insertion(+), 26 deletions(-) diff --git a/src/rules/Indexer.ts b/src/rules/Indexer.ts index ddcb0b7..d90ee2d 100644 --- a/src/rules/Indexer.ts +++ b/src/rules/Indexer.ts @@ -1,23 +1,8 @@ import { addRule } from '../' import { toTs } from '../convert' -//import { identifier, objectTypeIndexer } from '@babel/types' -//import { generateFreeIdentifier } from '../utils' addRule('Indexer', () => ({ ObjectTypeIndexer(path) { path.replaceWith(toTs(path.node)) - /* - if (path.node.id !== null) { - return - } - - path.replaceWith( - objectTypeIndexer( - identifier(generateFreeIdentifier([])), - path.node.key, - path.node.value - ) - ) - */ } })) diff --git a/src/rules/Mixed.ts b/src/rules/Mixed.ts index 893953c..e89c38a 100644 --- a/src/rules/Mixed.ts +++ b/src/rules/Mixed.ts @@ -1,11 +1 @@ -/* -import { objectTypeAnnotation } from '@babel/types' -import { addRule } from '../' - -addRule('Mixed', () => ({ - MixedTypeAnnotation(path) { - path.replaceWith(objectTypeAnnotation([])) - } -})) - -*/ +// no-op From 1d79f262354b23ff359ba4d38aa7212baac16a5b Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 16:39:39 +0000 Subject: [PATCH 18/44] Fix exact --- src/convert.ts | 16 +++++++++++++--- src/rules/$Exact.ts | 19 +------------------ test/rules/Exact/output.txt | 5 +++-- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 77242c4..8625abd 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -248,7 +248,17 @@ export function toTsType(node: FlowType): TSType { case 'FunctionTypeAnnotation': return functionToTsType(node) case 'GenericTypeAnnotation': { - if (node.typeParameters && node.typeParameters.params.length) { + if (node.id.name === 'Exact') { + /* + warnings.push([ + `$Exact types can't be expressed in TypeScript`, + 'https://github.com/Microsoft/TypeScript/issues/12936', + path.node.loc.start.line, + path.node.loc.start.column + ]) + */ + return toTsType(node.typeParameters!.params[0]) + } else if (node.typeParameters && node.typeParameters.params.length) { return tsTypeReference( toTsTypeName(node.id), tsTypeParameterInstantiation( @@ -301,9 +311,9 @@ export function toTsType(node: FlowType): TSType { } let s = tsPropertySignature( _.key, - tsTypeAnnotation(toTsType((_ as any).typeAnnotation)) + tsTypeAnnotation(toTsType(_.value)) ) - s.optional = (_ as any).optional + s.optional = _.optional return s // TODO: anonymous indexers // TODO: named indexers diff --git a/src/rules/$Exact.ts b/src/rules/$Exact.ts index a84c129..e89c38a 100644 --- a/src/rules/$Exact.ts +++ b/src/rules/$Exact.ts @@ -1,18 +1 @@ -import { addRule } from '../' - -addRule('$Exact', warnings => ({ - GenericTypeAnnotation(path) { - if (path.node.id.name !== '$Exact') { - return - } - - warnings.push([ - `$Exact types can't be expressed in TypeScript`, - 'https://github.com/Microsoft/TypeScript/issues/12936', - path.node.loc.start.line, - path.node.loc.start.column - ]) - - path.replaceWith(path.node.typeParameters.params[0]) - } -})) +// no-op diff --git a/test/rules/Exact/output.txt b/test/rules/Exact/output.txt index fbf2dfd..f4691de 100644 --- a/test/rules/Exact/output.txt +++ b/test/rules/Exact/output.txt @@ -1,3 +1,4 @@ -type Exact = { a: number;, - b: string;, +type Exact = { + a: number; + b: string; }; From 9797737ddc2fd504c44e9425a9aee72a61120ddc Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 16:59:41 +0000 Subject: [PATCH 19/44] Fix --- src/convert.ts | 54 +++++++++++++++++++++++++++--------------- src/rules/TypeAlias.ts | 4 ++-- 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 8625abd..e4d2294 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -44,13 +44,30 @@ import { TypeAnnotation, TypeParameter, ObjectTypeIndexer, - tsIndexSignature + tsIndexSignature, + TSTypeParameterDeclaration, + TSTypeParameter, + TSTypeAliasDeclaration, + TypeAlias } from '@babel/types' import { generateFreeIdentifier } from './utils' +export function typeAliasToTsTypeAliasDeclaration( + node: TypeAlias +): TSTypeAliasDeclaration { + if (node.type !== 'TypeAlias') { + throw new Error('Expected TypeAlias!') + } + const typeParameters: TSTypeParameterDeclaration | null = node.typeParameters + ? tsTypeParameterDeclaration( + node.typeParameters.params.map(toTsTypeParameter) + ) + : null + return tsTypeAliasDeclaration(node.id, typeParameters, toTs(node.right)) +} + let depth = 0 let stack: string[] = [] -// TODO: Add overloads export function toTs(node: Flow | TSType): TSType { try { depth++ @@ -73,6 +90,8 @@ export function toTs(node: Flow | TSType): TSType { } } } + +// TODO: Add overloads export function _toTs(node: Flow | TSType): TSType { switch (node.type) { // TS types @@ -177,10 +196,6 @@ export function _toTs(node: Flow | TSType): TSType { // @ts-ignore return tsQualifiedName(toTsTypeName(node.qualification), node.id) - case 'TypeAlias': - // @ts-ignore - return tsTypeAliasDeclaration(node.id, null, toTs(node.right)) - case 'TypeAnnotation': //return tsTypeAnnotation(toTsType(node)) case 'ClassImplements': @@ -248,7 +263,7 @@ export function toTsType(node: FlowType): TSType { case 'FunctionTypeAnnotation': return functionToTsType(node) case 'GenericTypeAnnotation': { - if (node.id.name === 'Exact') { + if (node.id.name === '$Exact') { /* warnings.push([ `$Exact types can't be expressed in TypeScript`, @@ -339,6 +354,18 @@ function toTsIndexSignature(indexer: ObjectTypeIndexer): TSTypeElement { id.typeAnnotation = tsTypeAnnotation(toTsType(indexer.key)) return tsIndexSignature([id], tsTypeAnnotation(toTsType(indexer.value))) } +function toTsTypeParameter(_: TypeParameter): TSTypeParameter { + // TODO: How is this possible? + if (isTSTypeParameter(_)) { + return _ + } + + let constraint = _.bound ? toTs(_.bound) : undefined + let default_ = _.default ? toTs(_.default) : undefined + let param = tsTypeParameter(constraint, default_) + param.name = _.name + return param +} function getId(node: FlowType): Identifier { switch (node.type) { @@ -354,18 +381,7 @@ function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { if (node.typeParameters) { typeParams = tsTypeParameterDeclaration( - node.typeParameters.params.map(_ => { - // TODO: How is this possible? - if (isTSTypeParameter(_)) { - return _ - } - - let constraint = _.bound ? toTs(_.bound) : undefined - let default_ = _.default ? toTs(_.default) : undefined - let param = tsTypeParameter(constraint, default_) - param.name = _.name - return param - }) + node.typeParameters.params.map(toTsTypeParameter) ) } diff --git a/src/rules/TypeAlias.ts b/src/rules/TypeAlias.ts index 5ef78a9..237ed7a 100644 --- a/src/rules/TypeAlias.ts +++ b/src/rules/TypeAlias.ts @@ -1,8 +1,8 @@ import { addRule } from '..' -import { toTs } from '../convert' +import { typeAliasToTsTypeAliasDeclaration } from '../convert' addRule('TypeAlias', () => ({ TypeAlias(path) { - path.replaceWith(toTs(path.node)) + path.replaceWith(typeAliasToTsTypeAliasDeclaration(path.node)) } })) From f2f8f8cb67d9508527d16ec84b6fdb375dbe7cb3 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 16:59:56 +0000 Subject: [PATCH 20/44] Disable ordered imports temporarily --- tslint.json | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/tslint.json b/tslint.json index 41c1aba..e7ca0a1 100644 --- a/tslint.json +++ b/tslint.json @@ -22,14 +22,28 @@ "object-literal-key-quotes": [true, "as-needed"], "object-literal-shorthand": true, "object-literal-sort-keys": true, - "one-line": [true, "check-catch", "check-finally", "check-else", "check-open-brace"], + "one-line": [ + true, + "check-catch", + "check-finally", + "check-else", + "check-open-brace" + ], "one-variable-per-declaration": [true, "ignore-for-loop"], - "ordered-imports": [true], + "ordered-imports": [false], "quotemark": [true, "single"], "semicolon": [true, "never"], - "trailing-comma": [true, {"multiline": "never", "singleline": "never"}], + "trailing-comma": [true, { "multiline": "never", "singleline": "never" }], "triple-equals": [true, "allow-null-check"], "use-isnan": true, - "whitespace": [true, "check-branch", "check-decl", "check-module", "check-operator", "check-separator", "check-type"] + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-module", + "check-operator", + "check-separator", + "check-type" + ] } -} \ No newline at end of file +} From f2959c7df4e72eb3d5f2ae030202914c48bc28c9 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 17:03:55 +0000 Subject: [PATCH 21/44] Fix --- src/convert.ts | 4 ++++ src/rules/$ReadOnly.ts | 15 +-------------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index e4d2294..2290e2c 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -273,6 +273,10 @@ export function toTsType(node: FlowType): TSType { ]) */ return toTsType(node.typeParameters!.params[0]) + } else if (node.id.name === '$ReadOnly') { + // Rename to 'Readonly' + node.id.name = 'Readonly' + return toTsType(node) } else if (node.typeParameters && node.typeParameters.params.length) { return tsTypeReference( toTsTypeName(node.id), diff --git a/src/rules/$ReadOnly.ts b/src/rules/$ReadOnly.ts index 5cd92fd..e89c38a 100644 --- a/src/rules/$ReadOnly.ts +++ b/src/rules/$ReadOnly.ts @@ -1,14 +1 @@ -import { genericTypeAnnotation, identifier } from '@babel/types' -import { addRule } from '../' - -addRule('$ReadOnly', () => ({ - GenericTypeAnnotation(path) { - if (path.node.id.name !== '$ReadOnly') { - return - } - - path.replaceWith( - genericTypeAnnotation(identifier('Readonly'), path.node.typeParameters) - ) - } -})) +// no-op From 131c5dd1052972982be93c800ced49f57df469d7 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 17:17:27 +0000 Subject: [PATCH 22/44] Fix types --- src/convert.ts | 31 ++++++++++++++++++------------- test/unit/Types/output.txt | 11 +++++++---- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 2290e2c..bcc9733 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -48,7 +48,8 @@ import { TSTypeParameterDeclaration, TSTypeParameter, TSTypeAliasDeclaration, - TypeAlias + TypeAlias, + TSTypeAnnotation } from '@babel/types' import { generateFreeIdentifier } from './utils' @@ -66,6 +67,7 @@ export function typeAliasToTsTypeAliasDeclaration( return tsTypeAliasDeclaration(node.id, typeParameters, toTs(node.right)) } +/* let depth = 0 let stack: string[] = [] export function toTs(node: Flow | TSType): TSType { @@ -90,9 +92,12 @@ export function toTs(node: Flow | TSType): TSType { } } } +*/ -// TODO: Add overloads -export function _toTs(node: Flow | TSType): TSType { +// TODO: Add more overloads +export function toTs(node: TypeAnnotation): TSTypeAnnotation +export function toTs(node: Flow): TSType +export function toTs(node: Flow | TSType): TSType | TSTypeAnnotation { switch (node.type) { // TS types // TODO: Why does tsTs get called with TSTypes? It should only get called with Flow types. @@ -133,6 +138,9 @@ export function _toTs(node: Flow | TSType): TSType { case 'TSPropertySignature': return node + case 'TypeAnnotation': + return tsTypeAnnotation(toTsType(node)) + // Flow types case 'AnyTypeAnnotation': case 'ArrayTypeAnnotation': @@ -196,8 +204,6 @@ export function _toTs(node: Flow | TSType): TSType { // @ts-ignore return tsQualifiedName(toTsTypeName(node.qualification), node.id) - case 'TypeAnnotation': - //return tsTypeAnnotation(toTsType(node)) case 'ClassImplements': case 'DeclareClass': case 'DeclareFunction': @@ -218,7 +224,7 @@ export function _toTs(node: Flow | TSType): TSType { case 'ExistentialTypeParam': console.log('WUT') console.dir(node) - throw 'wut' + throw new Error('Not implemented') } throw new Error(`Note type not understood: '${node.type}'`) } @@ -235,7 +241,7 @@ export function toTsTypeName( throw new Error('Could not convert to TS identifier') } -export function toTsType(node: FlowType): TSType { +export function toTsType(node: FlowType | TypeAnnotation): TSType { if (node.type.match(/^TS[A-Z]/)) { // @ts-ignore return node @@ -252,6 +258,9 @@ export function toTsType(node: FlowType): TSType { }' passed to toTsType, instead use \`tsTypeReference(toTsTypeName(node))\`` ) + case 'TypeAnnotation': + return toTsType(node.typeAnnotation) + case 'AnyTypeAnnotation': return tsAnyKeyword() case 'ArrayTypeAnnotation': @@ -315,11 +324,6 @@ export function toTsType(node: FlowType): TSType { case 'TypeofTypeAnnotation': return tsTypeQuery(getId(node.argument)) - // @ts-ignore - case 'TypeAnnotation': - // @ts-ignore - return toTs(node.typeAnnotation) - case 'ObjectTypeAnnotation': return tsTypeLiteral([ ...node.properties.map( @@ -358,13 +362,14 @@ function toTsIndexSignature(indexer: ObjectTypeIndexer): TSTypeElement { id.typeAnnotation = tsTypeAnnotation(toTsType(indexer.key)) return tsIndexSignature([id], tsTypeAnnotation(toTsType(indexer.value))) } + function toTsTypeParameter(_: TypeParameter): TSTypeParameter { // TODO: How is this possible? if (isTSTypeParameter(_)) { return _ } - let constraint = _.bound ? toTs(_.bound) : undefined + let constraint = _.bound ? toTsType(_.bound) : undefined let default_ = _.default ? toTs(_.default) : undefined let param = tsTypeParameter(constraint, default_) param.name = _.name diff --git a/test/unit/Types/output.txt b/test/unit/Types/output.txt index e750517..c4adc0a 100644 --- a/test/unit/Types/output.txt +++ b/test/unit/Types/output.txt @@ -4,10 +4,13 @@ type C = boolean; type D = number; type E = string; type F = string | null | undefined; -type G = { a: number; +type G = { + a: number; }; -type H = { a: number;, - b: string | null | undefined;, +type H = { + a: number; + b: string | null | undefined; }; -type I = { a: (b: T, c: U | number) => T; +type I = { + a: (b: T, c: U | number) => T; }; From ba238aee41e6fbb8d4aca123a52c3ef51b6c27d5 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 17:39:01 +0000 Subject: [PATCH 23/44] InterfaceDeclaration --- src/convert.ts | 83 ++++++++++++++++++++++--------- src/rules/InterfaceDeclaration.ts | 8 +++ test/rules/Variance/output.txt | 5 +- 3 files changed, 70 insertions(+), 26 deletions(-) create mode 100644 src/rules/InterfaceDeclaration.ts diff --git a/src/convert.ts b/src/convert.ts index bcc9733..e03d96c 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -49,7 +49,16 @@ import { TSTypeParameter, TSTypeAliasDeclaration, TypeAlias, - TSTypeAnnotation + TSTypeAnnotation, + InterfaceDeclaration, + TSInterfaceDeclaration, + tsInterfaceDeclaration, + InterfaceExtends, + TSExpressionWithTypeArguments, + tsInterfaceBody, + ObjectTypeAnnotation, + ObjectTypeProperty, + TSPropertySignature } from '@babel/types' import { generateFreeIdentifier } from './utils' @@ -96,8 +105,18 @@ export function toTs(node: Flow | TSType): TSType { // TODO: Add more overloads export function toTs(node: TypeAnnotation): TSTypeAnnotation +export function toTs(node: InterfaceDeclaration): TSInterfaceDeclaration +export function toTs(node: InterfaceExtends): TSExpressionWithTypeArguments +export function toTs(node: ObjectTypeProperty): TSPropertySignature export function toTs(node: Flow): TSType -export function toTs(node: Flow | TSType): TSType | TSTypeAnnotation { +export function toTs( + node: Flow | TSType | InterfaceDeclaration | InterfaceExtends +): + | TSType + | TSTypeAnnotation + | TSInterfaceDeclaration + | TSExpressionWithTypeArguments + | TSPropertySignature { switch (node.type) { // TS types // TODO: Why does tsTs get called with TSTypes? It should only get called with Flow types. @@ -141,6 +160,22 @@ export function toTs(node: Flow | TSType): TSType | TSTypeAnnotation { case 'TypeAnnotation': return tsTypeAnnotation(toTsType(node)) + case 'InterfaceDeclaration': + return tsInterfaceDeclaration( + node.id, + node.typeParameters + ? tsTypeParameterDeclaration( + node.typeParameters.params.map(toTsTypeParameter) + ) + : null, + node.extends && node.extends.length + ? node.extends.map( + (_: InterfaceExtends): TSExpressionWithTypeArguments => toTs(_) + ) + : null, + tsInterfaceBody(objectTypeAnnotationProperties(node.body)) + ) + // Flow types case 'AnyTypeAnnotation': case 'ArrayTypeAnnotation': @@ -179,7 +214,10 @@ export function toTs(node: Flow | TSType): TSType | TSTypeAnnotation { let _ = tsPropertySignature(node.key, tsTypeAnnotation(toTs(node.value))) _.optional = node.optional _.readonly = node.variance && node.variance.kind === 'minus' - // @ts-ignore + // TODO: anonymous indexers + // TODO: named indexers + // TODO: call properties + // TODO: variance return _ case 'TypeCastExpression': @@ -325,27 +363,7 @@ export function toTsType(node: FlowType | TypeAnnotation): TSType { return tsTypeQuery(getId(node.argument)) case 'ObjectTypeAnnotation': - return tsTypeLiteral([ - ...node.properties.map( - (_): TSTypeElement => { - if (_.type === 'ObjectTypeSpreadProperty') { - // @ts-ignore - return _ - } - let s = tsPropertySignature( - _.key, - tsTypeAnnotation(toTsType(_.value)) - ) - s.optional = _.optional - return s - // TODO: anonymous indexers - // TODO: named indexers - // TODO: call properties - // TODO: variance - } - ), - ...(node.indexers || []).map(toTsIndexSignature) - ]) + return tsTypeLiteral(objectTypeAnnotationProperties(node)) case 'UnionTypeAnnotation': return tsUnionType(node.types.map(toTs)) case 'VoidTypeAnnotation': @@ -439,3 +457,20 @@ function hasBound(node: Node): node is BoundedTypeParameter { interface BoundedTypeParameter extends TypeParameter { bound: TypeAnnotation } + +function objectTypeAnnotationProperties( + node: ObjectTypeAnnotation +): Array { + return [ + ...node.properties.map( + (_): TSTypeElement => { + if (_.type === 'ObjectTypeSpreadProperty') { + // @ts-ignore + return _ + } + return toTs(_) + } + ), + ...(node.indexers || []).map(toTsIndexSignature) + ] +} diff --git a/src/rules/InterfaceDeclaration.ts b/src/rules/InterfaceDeclaration.ts new file mode 100644 index 0000000..a828225 --- /dev/null +++ b/src/rules/InterfaceDeclaration.ts @@ -0,0 +1,8 @@ +import { addRule } from '..' +import { toTs } from '../convert' + +addRule('InterfaceDeclaration', () => ({ + InterfaceDeclaration(path) { + path.replaceWith(toTs(path.node)) + } +})) diff --git a/test/rules/Variance/output.txt b/test/rules/Variance/output.txt index e542e4f..8bd29f2 100644 --- a/test/rules/Variance/output.txt +++ b/test/rules/Variance/output.txt @@ -1,3 +1,4 @@ -interface Variance { a: string;, - readonly b: number;, +interface Variance { + a: string; + readonly b: number; } From 61385d3094d86c365e9ac530d98580ae57de4916 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 17:40:20 +0000 Subject: [PATCH 24/44] Reduce logging --- src/index.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/index.ts b/src/index.ts index b8c5a55..a8662bb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,15 +20,12 @@ export function addRule(ruleName: string, rule: Rule) { } export async function compile(code: string, filename: string) { - console.log('Parse...') const parsed = parse(code, { plugins: ['classProperties', 'flow', 'objectRestSpread'], sourceType: 'module' }) - console.log('Convert...') let [warnings, ast] = await convert(parsed) - console.log('Warnings...') warnings.forEach(([message, issueURL, line, column]) => { console.log( `Warning: ${message} (at ${relative( @@ -38,7 +35,6 @@ export async function compile(code: string, filename: string) { ) }) - console.log('Strip flow annotations...') return addTrailingSpace( trimLeadingNewlines(generate(stripAtFlowAnnotation(ast)).code) ) @@ -48,7 +44,6 @@ export async function compile(code: string, filename: string) { * @internal */ export async function convert(ast: T): Promise<[Warning[], T]> { - console.log('Loading rules...') // load rules directory await Promise.all( sync(resolve(__dirname, './rules/*.js')).map(_ => import(_)) @@ -85,9 +80,7 @@ export async function convert(ast: T): Promise<[Warning[], T]> { } }) }) - console.log(`Traversing...`) traverse(ast, visitor) - console.log('Done') return [warnings, ast] } From 186cfb8e5b899c83dd879c8657ae95b854295f5a Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 17:42:25 +0000 Subject: [PATCH 25/44] Reduce logging --- src/cli.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index cbe1aae..d07cdad 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -26,11 +26,8 @@ async function main(argv: minimist.ParsedArgs) { const argOut: string = argv._[1] || argv.output try { - console.log('Flow') const flow = await readInput(argIn) - console.log('TypeScript') const ts = await compile(flow, argIn) - console.log('Write') await writeOutput(ts, argOut) } catch (e) { console.error(e) From 9b565d39f3d7a4a7d90bff9723986db32550cbcc Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 21:13:00 +0000 Subject: [PATCH 26/44] Add support for type spreads via intersections --- src/convert.ts | 56 ++++++++++++++++++++++++++------------ test/unit/Types/input.txt | 5 ++++ test/unit/Types/output.txt | 5 ++++ 3 files changed, 49 insertions(+), 17 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index e03d96c..8b39032 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -161,6 +161,12 @@ export function toTs( return tsTypeAnnotation(toTsType(node)) case 'InterfaceDeclaration': + const { properties, spreads } = objectTypeAnnotationPropertiesAndSpreads( + node.body + ) + if (spreads.length) { + throw new Error('Spreads in interfaces unsupported') + } return tsInterfaceDeclaration( node.id, node.typeParameters @@ -173,7 +179,7 @@ export function toTs( (_: InterfaceExtends): TSExpressionWithTypeArguments => toTs(_) ) : null, - tsInterfaceBody(objectTypeAnnotationProperties(node.body)) + tsInterfaceBody(properties) ) // Flow types @@ -362,8 +368,15 @@ export function toTsType(node: FlowType | TypeAnnotation): TSType { case 'TypeofTypeAnnotation': return tsTypeQuery(getId(node.argument)) - case 'ObjectTypeAnnotation': - return tsTypeLiteral(objectTypeAnnotationProperties(node)) + case 'ObjectTypeAnnotation': { + const { properties, spreads } = objectTypeAnnotationPropertiesAndSpreads( + node + ) + const propertyType = tsTypeLiteral(properties) + return spreads.length + ? tsIntersectionType([propertyType, ...spreads]) + : propertyType + } case 'UnionTypeAnnotation': return tsUnionType(node.types.map(toTs)) case 'VoidTypeAnnotation': @@ -458,19 +471,28 @@ interface BoundedTypeParameter extends TypeParameter { bound: TypeAnnotation } -function objectTypeAnnotationProperties( +function objectTypeAnnotationPropertiesAndSpreads( node: ObjectTypeAnnotation -): Array { - return [ - ...node.properties.map( - (_): TSTypeElement => { - if (_.type === 'ObjectTypeSpreadProperty') { - // @ts-ignore - return _ - } - return toTs(_) - } - ), - ...(node.indexers || []).map(toTsIndexSignature) - ] +): { properties: TSTypeElement[]; spreads: TSType[] } { + const spreads: TSType[] = [] + const properties: TSTypeElement[] = [] + + node.properties.forEach(_ => { + if (_.type === 'ObjectTypeSpreadProperty') { + spreads.push(toTs(_.argument)) + } else { + properties.push(toTs(_)) + } + }) + + if (node.indexers) { + node.indexers.forEach(_ => { + properties.push(toTsIndexSignature(_)) + }) + } + + return { + properties, + spreads + } } diff --git a/test/unit/Types/input.txt b/test/unit/Types/input.txt index 1079a44..d379f4a 100644 --- a/test/unit/Types/input.txt +++ b/test/unit/Types/input.txt @@ -15,4 +15,9 @@ type H = { } type I = { a(b: T, c: U | number): T; +} +type J = { + a: string, + ...H, + ...{c: string} } \ No newline at end of file diff --git a/test/unit/Types/output.txt b/test/unit/Types/output.txt index c4adc0a..be4e50b 100644 --- a/test/unit/Types/output.txt +++ b/test/unit/Types/output.txt @@ -14,3 +14,8 @@ type H = { type I = { a: (b: T, c: U | number) => T; }; +type J = { + a: string; +} & H & { + c: string; +}; From 960d75d82ab5d94394dff6abafe1d89530d10878 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 21:19:31 +0000 Subject: [PATCH 27/44] Shorthand for object types that are only spreads --- src/convert.ts | 5 ++++- test/rules/Functions/input.txt | 2 ++ test/rules/Functions/output.txt | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/convert.ts b/src/convert.ts index 8b39032..9731f9a 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -374,7 +374,10 @@ export function toTsType(node: FlowType | TypeAnnotation): TSType { ) const propertyType = tsTypeLiteral(properties) return spreads.length - ? tsIntersectionType([propertyType, ...spreads]) + ? tsIntersectionType([ + ...(properties.length ? [propertyType] : []), + ...spreads + ]) : propertyType } case 'UnionTypeAnnotation': diff --git a/test/rules/Functions/input.txt b/test/rules/Functions/input.txt index 7545362..fd36d99 100644 --- a/test/rules/Functions/input.txt +++ b/test/rules/Functions/input.txt @@ -3,3 +3,5 @@ type Functions1 = (number, string) => string type Functions2 = (a: number, string) => string + +type Functions3 = (a: number, b: {...A, ...B}) => string diff --git a/test/rules/Functions/output.txt b/test/rules/Functions/output.txt index a0b7b02..45b9c37 100644 --- a/test/rules/Functions/output.txt +++ b/test/rules/Functions/output.txt @@ -1,2 +1,3 @@ type Functions1 = (a: number, b: string) => string; type Functions2 = (a: number, b: string) => string; +type Functions3 = (a: number, b: A & B) => string; From 63e9bf79d77b9d3d24890edd11be7f741cc6a1b3 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 21:28:08 +0000 Subject: [PATCH 28/44] More complex function --- test/rules/Functions/input.txt | 16 +++++++++++++++- test/rules/Functions/output.txt | 12 +++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/test/rules/Functions/input.txt b/test/rules/Functions/input.txt index fd36d99..4ffab52 100644 --- a/test/rules/Functions/input.txt +++ b/test/rules/Functions/input.txt @@ -4,4 +4,18 @@ type Functions1 = (number, string) => string type Functions2 = (a: number, string) => string -type Functions3 = (a: number, b: {...A, ...B}) => string +export default function Functions3( + a: number, + b: {| ...A, ...B |}, + { + c, + d, + e + }: { + c: number, + d: string, + e: boolean + } +) { + return ""; +} diff --git a/test/rules/Functions/output.txt b/test/rules/Functions/output.txt index 45b9c37..a1a39cd 100644 --- a/test/rules/Functions/output.txt +++ b/test/rules/Functions/output.txt @@ -1,3 +1,13 @@ type Functions1 = (a: number, b: string) => string; type Functions2 = (a: number, b: string) => string; -type Functions3 = (a: number, b: A & B) => string; +export default function Functions3(a: number, b: A & B, { + c, + d, + e +}: { + c: number; + d: string; + e: boolean; +}) { + return ""; +} From 2cae9566196d4689b86f869852a04c5d1f973caf Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 21:47:13 +0000 Subject: [PATCH 29/44] Remove 'type' from exports --- src/rules/TypeImport.ts | 14 +++++++++++++- test/rules/TypeImport/input.txt | 2 ++ test/rules/TypeImport/output.txt | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/rules/TypeImport.ts b/src/rules/TypeImport.ts index f477fa3..d7c31b7 100644 --- a/src/rules/TypeImport.ts +++ b/src/rules/TypeImport.ts @@ -1,4 +1,8 @@ -import { importDeclaration } from '@babel/types' +import { + importDeclaration, + ExportNamedDeclaration, + exportNamedDeclaration +} from '@babel/types' import { addRule } from '../' addRule('TypeImport', () => ({ @@ -8,5 +12,13 @@ addRule('TypeImport', () => ({ importDeclaration(path.node.specifiers, path.node.source) ) } + }, + ExportNamedDeclaration(path) { + const node = path.node as ExportNamedDeclaration + if ((node as any).exportKind === 'type') { + path.replaceWith( + exportNamedDeclaration(node.declaration, node.specifiers) + ) + } } })) diff --git a/test/rules/TypeImport/input.txt b/test/rules/TypeImport/input.txt index 4c80c12..6b595bd 100644 --- a/test/rules/TypeImport/input.txt +++ b/test/rules/TypeImport/input.txt @@ -4,3 +4,5 @@ import type A from "./a" import type { B } from "./b" import type { C, D } from "./c" import type E, { F, G } from "./d" + +export type { E as F } diff --git a/test/rules/TypeImport/output.txt b/test/rules/TypeImport/output.txt index 668883b..2d7a73d 100644 --- a/test/rules/TypeImport/output.txt +++ b/test/rules/TypeImport/output.txt @@ -2,3 +2,4 @@ import A from "./a"; import { B } from "./b"; import { C, D } from "./c"; import E, { F, G } from "./d"; +export { E as F }; From 77de757180737ffd2d61aa28544d34f24ca9bd26 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 5 Jan 2019 22:00:12 +0000 Subject: [PATCH 30/44] Reproduce issue with missing parenthesis --- test/rules/Functions/input.txt | 4 ++++ test/rules/Functions/output.txt | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/test/rules/Functions/input.txt b/test/rules/Functions/input.txt index 4ffab52..be9e648 100644 --- a/test/rules/Functions/input.txt +++ b/test/rules/Functions/input.txt @@ -19,3 +19,7 @@ export default function Functions3( ) { return ""; } + +function Functions4(a: string, b: C | (d: E) => F, g: G) { + return '' +} \ No newline at end of file diff --git a/test/rules/Functions/output.txt b/test/rules/Functions/output.txt index a1a39cd..bcd906e 100644 --- a/test/rules/Functions/output.txt +++ b/test/rules/Functions/output.txt @@ -11,3 +11,7 @@ export default function Functions3(a: number, b: A & B, { }) { return ""; } + +function Functions4(a: string, b: C | ((d: E) => F), g: G) { + return ''; +} From 5278ef8ea13274e922b81c0ca1ded4c18fffa222 Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 11:31:42 +0000 Subject: [PATCH 31/44] Revert error logging --- src/cli.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index d07cdad..66a5921 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -30,8 +30,7 @@ async function main(argv: minimist.ParsedArgs) { const ts = await compile(flow, argIn) await writeOutput(ts, argOut) } catch (e) { - console.error(e) - //process.stderr.write(e.message) + process.stderr.write(e.message) process.exit(1) } } From 04b9ef9af8fbbf4636786ae758a91f33f9db9fac Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 11:32:24 +0000 Subject: [PATCH 32/44] Remove explicit annotation --- src/convert.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 9731f9a..3aefd5d 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -45,7 +45,6 @@ import { TypeParameter, ObjectTypeIndexer, tsIndexSignature, - TSTypeParameterDeclaration, TSTypeParameter, TSTypeAliasDeclaration, TypeAlias, @@ -68,7 +67,7 @@ export function typeAliasToTsTypeAliasDeclaration( if (node.type !== 'TypeAlias') { throw new Error('Expected TypeAlias!') } - const typeParameters: TSTypeParameterDeclaration | null = node.typeParameters + const typeParameters = node.typeParameters ? tsTypeParameterDeclaration( node.typeParameters.params.map(toTsTypeParameter) ) From 6be3f42395a0626259fbb87dbfcd387a1c5739e1 Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 11:33:30 +0000 Subject: [PATCH 33/44] Remove redundant type check --- src/convert.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 3aefd5d..c1247db 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -64,9 +64,6 @@ import { generateFreeIdentifier } from './utils' export function typeAliasToTsTypeAliasDeclaration( node: TypeAlias ): TSTypeAliasDeclaration { - if (node.type !== 'TypeAlias') { - throw new Error('Expected TypeAlias!') - } const typeParameters = node.typeParameters ? tsTypeParameterDeclaration( node.typeParameters.params.map(toTsTypeParameter) From 7015b2712b3ad91073365f74373c4a84f24a7e2d Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 11:34:03 +0000 Subject: [PATCH 34/44] Remove unused code --- src/convert.ts | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index c1247db..de55e24 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -72,33 +72,6 @@ export function typeAliasToTsTypeAliasDeclaration( return tsTypeAliasDeclaration(node.id, typeParameters, toTs(node.right)) } -/* -let depth = 0 -let stack: string[] = [] -export function toTs(node: Flow | TSType): TSType { - try { - depth++ - stack.push(' '.repeat(depth) + ` >${node.type}`) - return _toTs(node) - } catch (e) { - if (!e.logged) { - e.logged = true - stack.push(' '.repeat(depth) + ` !${node.type}`) - console.error(stack.join('\n')) - console.error(e) - console.dir(node, { depth: 8 }) - } - throw e - } finally { - stack.push(' '.repeat(depth) + ` <${node.type}`) - depth-- - if (depth === 0) { - stack = [] - } - } -} -*/ - // TODO: Add more overloads export function toTs(node: TypeAnnotation): TSTypeAnnotation export function toTs(node: InterfaceDeclaration): TSInterfaceDeclaration From 9e2b0c4b6a420247d85d1883abdbcf503adf101d Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 11:36:39 +0000 Subject: [PATCH 35/44] Remove redundant types --- src/convert.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/convert.ts b/src/convert.ts index de55e24..6d09354 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -145,7 +145,7 @@ export function toTs( : null, node.extends && node.extends.length ? node.extends.map( - (_: InterfaceExtends): TSExpressionWithTypeArguments => toTs(_) + (_) => toTs(_) ) : null, tsInterfaceBody(properties) From ff604e20200f1ec5125b8bfcf377eb57962ee80d Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 11:38:10 +0000 Subject: [PATCH 36/44] Remove debug logging --- src/convert.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 6d09354..98830f0 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -235,8 +235,6 @@ export function toTs( case 'ClassProperty': // @ts-ignore case 'ExistentialTypeParam': - console.log('WUT') - console.dir(node) throw new Error('Not implemented') } throw new Error(`Note type not understood: '${node.type}'`) From 3dfde69dfe9674ea67a89641d2d2454d6a93c986 Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 13:35:31 +0000 Subject: [PATCH 37/44] Collect warnings --- src/convert.ts | 99 ++++++++++++++++--------------- src/index.ts | 2 +- src/rules/Bounds.ts | 4 +- src/rules/Casting.ts | 4 +- src/rules/Functions.ts | 4 +- src/rules/Indexer.ts | 4 +- src/rules/InterfaceDeclaration.ts | 4 +- src/rules/ObjectType.ts | 4 +- src/rules/TypeAlias.ts | 4 +- src/rules/TypeAnnotation.ts | 4 +- src/rules/Variance.ts | 2 +- 11 files changed, 70 insertions(+), 65 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 98830f0..1a869d1 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -60,26 +60,30 @@ import { TSPropertySignature } from '@babel/types' import { generateFreeIdentifier } from './utils' +import { Warning } from '.'; + export function typeAliasToTsTypeAliasDeclaration( - node: TypeAlias + node: TypeAlias, + warnings: Warning[] ): TSTypeAliasDeclaration { const typeParameters = node.typeParameters ? tsTypeParameterDeclaration( - node.typeParameters.params.map(toTsTypeParameter) + node.typeParameters.params.map((_) => toTsTypeParameter(_, warnings)) ) : null - return tsTypeAliasDeclaration(node.id, typeParameters, toTs(node.right)) + return tsTypeAliasDeclaration(node.id, typeParameters, toTs(node.right, warnings)) } // TODO: Add more overloads -export function toTs(node: TypeAnnotation): TSTypeAnnotation -export function toTs(node: InterfaceDeclaration): TSInterfaceDeclaration -export function toTs(node: InterfaceExtends): TSExpressionWithTypeArguments -export function toTs(node: ObjectTypeProperty): TSPropertySignature -export function toTs(node: Flow): TSType +export function toTs(node: TypeAnnotation, warnings: Warning[]): TSTypeAnnotation +export function toTs(node: InterfaceDeclaration, warnings: Warning[]): TSInterfaceDeclaration +export function toTs(node: InterfaceExtends, warnings: Warning[]): TSExpressionWithTypeArguments +export function toTs(node: ObjectTypeProperty, warnings: Warning[]): TSPropertySignature +export function toTs(node: Flow, warnings: Warning[]): TSType export function toTs( - node: Flow | TSType | InterfaceDeclaration | InterfaceExtends + node: Flow | TSType | InterfaceDeclaration | InterfaceExtends, + warnings: Warning[] ): | TSType | TSTypeAnnotation @@ -127,11 +131,12 @@ export function toTs( return node case 'TypeAnnotation': - return tsTypeAnnotation(toTsType(node)) + return tsTypeAnnotation(toTsType(node, warnings)) case 'InterfaceDeclaration': const { properties, spreads } = objectTypeAnnotationPropertiesAndSpreads( - node.body + node.body, + warnings ) if (spreads.length) { throw new Error('Spreads in interfaces unsupported') @@ -140,12 +145,12 @@ export function toTs( node.id, node.typeParameters ? tsTypeParameterDeclaration( - node.typeParameters.params.map(toTsTypeParameter) + node.typeParameters.params.map((_) => toTsTypeParameter(_, warnings)) ) : null, node.extends && node.extends.length ? node.extends.map( - (_) => toTs(_) + (_) => toTs(_, warnings) ) : null, tsInterfaceBody(properties) @@ -174,7 +179,7 @@ export function toTs( case 'VoidTypeAnnotation': // @ts-ignore case 'NumericLiteralTypeAnnotation': - return toTsType(node) + return toTsType(node, warnings) case 'ObjectTypeIndexer': //return tsTypeLiteral([tsIndexSignature(node.parameters)]) @@ -186,7 +191,7 @@ export function toTs( ) case 'ObjectTypeProperty': - let _ = tsPropertySignature(node.key, tsTypeAnnotation(toTs(node.value))) + let _ = tsPropertySignature(node.key, tsTypeAnnotation(toTs(node.value, warnings))) _.optional = node.optional _.readonly = node.variance && node.variance.kind === 'minus' // TODO: anonymous indexers @@ -203,8 +208,8 @@ export function toTs( let params = node.params.map(_ => { let d = ((_ as any) as TypeParameter).default let p = tsTypeParameter( - hasBound(_) ? toTsType(_.bound.typeAnnotation) : undefined, - d ? toTs(d) : undefined + hasBound(_) ? toTsType(_.bound.typeAnnotation, warnings) : undefined, + d ? toTs(d, warnings) : undefined ) p.name = _.name return p @@ -252,7 +257,7 @@ export function toTsTypeName( throw new Error('Could not convert to TS identifier') } -export function toTsType(node: FlowType | TypeAnnotation): TSType { +export function toTsType(node: FlowType | TypeAnnotation, warnings: Warning[]): TSType { if (node.type.match(/^TS[A-Z]/)) { // @ts-ignore return node @@ -270,38 +275,36 @@ export function toTsType(node: FlowType | TypeAnnotation): TSType { ) case 'TypeAnnotation': - return toTsType(node.typeAnnotation) + return toTsType(node.typeAnnotation, warnings) case 'AnyTypeAnnotation': return tsAnyKeyword() case 'ArrayTypeAnnotation': - return tsArrayType(toTsType(node.elementType)) + return tsArrayType(toTsType(node.elementType, warnings)) case 'BooleanTypeAnnotation': return tsBooleanKeyword() case 'BooleanLiteralTypeAnnotation': return tsLiteralType(booleanLiteral(node.value!)) case 'FunctionTypeAnnotation': - return functionToTsType(node) + return functionToTsType(node, warnings) case 'GenericTypeAnnotation': { if (node.id.name === '$Exact') { - /* warnings.push([ `$Exact types can't be expressed in TypeScript`, 'https://github.com/Microsoft/TypeScript/issues/12936', - path.node.loc.start.line, - path.node.loc.start.column + node.loc ? node.loc.start.line : -1, + node.loc ? node.loc.start.column : -1 ]) - */ - return toTsType(node.typeParameters!.params[0]) + return toTsType(node.typeParameters!.params[0], warnings) } else if (node.id.name === '$ReadOnly') { // Rename to 'Readonly' node.id.name = 'Readonly' - return toTsType(node) + return toTsType(node, warnings) } else if (node.typeParameters && node.typeParameters.params.length) { return tsTypeReference( toTsTypeName(node.id), tsTypeParameterInstantiation( - node.typeParameters.params.map(p => toTsType(p)) + node.typeParameters.params.map(p => toTsType(p, warnings)) ) ) } else { @@ -309,14 +312,14 @@ export function toTsType(node: FlowType | TypeAnnotation): TSType { } } case 'IntersectionTypeAnnotation': - return tsIntersectionType(node.types.map(toTsType)) + return tsIntersectionType(node.types.map((_) => toTsType(_, warnings))) case 'MixedTypeAnnotation': return tsUnknownKeyword() case 'NullLiteralTypeAnnotation': return tsNullKeyword() case 'NullableTypeAnnotation': return tsUnionType([ - toTsType(node.typeAnnotation), + toTsType(node.typeAnnotation, warnings), tsNullKeyword(), tsUndefinedKeyword() ]) @@ -331,13 +334,14 @@ export function toTsType(node: FlowType | TypeAnnotation): TSType { case 'ThisTypeAnnotation': return tsThisType() case 'TupleTypeAnnotation': - return tsTupleType(node.types.map(toTsType)) + return tsTupleType(node.types.map((_) => toTsType(_, warnings))) case 'TypeofTypeAnnotation': return tsTypeQuery(getId(node.argument)) case 'ObjectTypeAnnotation': { const { properties, spreads } = objectTypeAnnotationPropertiesAndSpreads( - node + node, + warnings ) const propertyType = tsTypeLiteral(properties) return spreads.length @@ -348,7 +352,7 @@ export function toTsType(node: FlowType | TypeAnnotation): TSType { : propertyType } case 'UnionTypeAnnotation': - return tsUnionType(node.types.map(toTs)) + return tsUnionType(node.types.map((_) => toTs(_, warnings))) case 'VoidTypeAnnotation': return tsUndefinedKeyword() case 'ExistsTypeAnnotation': @@ -358,20 +362,20 @@ export function toTsType(node: FlowType | TypeAnnotation): TSType { } } -function toTsIndexSignature(indexer: ObjectTypeIndexer): TSTypeElement { +function toTsIndexSignature(indexer: ObjectTypeIndexer, warnings: Warning[]): TSTypeElement { const id = indexer.id ? indexer.id : identifier(generateFreeIdentifier([])) - id.typeAnnotation = tsTypeAnnotation(toTsType(indexer.key)) - return tsIndexSignature([id], tsTypeAnnotation(toTsType(indexer.value))) + id.typeAnnotation = tsTypeAnnotation(toTsType(indexer.key, warnings)) + return tsIndexSignature([id], tsTypeAnnotation(toTsType(indexer.value, warnings))) } -function toTsTypeParameter(_: TypeParameter): TSTypeParameter { +function toTsTypeParameter(_: TypeParameter, warnings: Warning[]): TSTypeParameter { // TODO: How is this possible? if (isTSTypeParameter(_)) { return _ } - let constraint = _.bound ? toTsType(_.bound) : undefined - let default_ = _.default ? toTs(_.default) : undefined + let constraint = _.bound ? toTsType(_.bound, warnings) : undefined + let default_ = _.default ? toTs(_.default, warnings) : undefined let param = tsTypeParameter(constraint, default_) param.name = _.name return param @@ -386,16 +390,16 @@ function getId(node: FlowType): Identifier { } } -function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { +function functionToTsType(node: FunctionTypeAnnotation, warnings: Warning[]): TSFunctionType { let typeParams if (node.typeParameters) { typeParams = tsTypeParameterDeclaration( - node.typeParameters.params.map(toTsTypeParameter) + node.typeParameters.params.map((_) => toTsTypeParameter(_, warnings)) ) } - const returnTypeType = node.returnType ? toTs(node.returnType) : null + const returnTypeType = node.returnType ? toTs(node.returnType, warnings) : null if (node.returnType && !returnTypeType) { console.dir(node.returnType) throw new Error(`Could not convert return type '${node.returnType.type}'`) @@ -423,7 +427,7 @@ function functionToTsType(node: FunctionTypeAnnotation): TSFunctionType { let id = identifier(name) if (_.typeAnnotation) { - id.typeAnnotation = tsTypeAnnotation(toTsType(_.typeAnnotation)) + id.typeAnnotation = tsTypeAnnotation(toTsType(_.typeAnnotation, warnings)) } return id @@ -442,22 +446,23 @@ interface BoundedTypeParameter extends TypeParameter { } function objectTypeAnnotationPropertiesAndSpreads( - node: ObjectTypeAnnotation + node: ObjectTypeAnnotation, + warnings: Warning[] ): { properties: TSTypeElement[]; spreads: TSType[] } { const spreads: TSType[] = [] const properties: TSTypeElement[] = [] node.properties.forEach(_ => { if (_.type === 'ObjectTypeSpreadProperty') { - spreads.push(toTs(_.argument)) + spreads.push(toTs(_.argument, warnings)) } else { - properties.push(toTs(_)) + properties.push(toTs(_, warnings)) } }) if (node.indexers) { node.indexers.forEach(_ => { - properties.push(toTsIndexSignature(_)) + properties.push(toTsIndexSignature(_, warnings)) }) } diff --git a/src/index.ts b/src/index.ts index a8662bb..f78d42f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,7 +7,7 @@ import { dropWhile, pullAt } from 'lodash' import { EOL } from 'os' import { relative, resolve } from 'path' -type Warning = [string, string, number, number] +export type Warning = [string, string, number, number] type Rule = (warnings: Warning[]) => Visitor let rules = new Map() diff --git a/src/rules/Bounds.ts b/src/rules/Bounds.ts index 22bf009..4053059 100644 --- a/src/rules/Bounds.ts +++ b/src/rules/Bounds.ts @@ -7,13 +7,13 @@ import { import { addRule } from '../' import { toTs } from '../convert' -addRule('Bounds', () => ({ +addRule('Bounds', (warnings) => ({ TypeParameterDeclaration(path) { if (path.node.params.every(_ => !hasBound(_))) { return } - path.replaceWith(toTs(path.node)) + path.replaceWith(toTs(path.node, warnings)) } })) diff --git a/src/rules/Casting.ts b/src/rules/Casting.ts index a3a7e92..b6bb2da 100644 --- a/src/rules/Casting.ts +++ b/src/rules/Casting.ts @@ -1,8 +1,8 @@ import { addRule } from '../' import { toTs } from '../convert' -addRule('Casting', () => ({ +addRule('Casting', (warnings) => ({ TypeCastExpression(path) { - path.replaceWith(toTs(path.node)) + path.replaceWith(toTs(path.node, warnings)) } })) diff --git a/src/rules/Functions.ts b/src/rules/Functions.ts index d05ca23..c8e7a7e 100644 --- a/src/rules/Functions.ts +++ b/src/rules/Functions.ts @@ -1,8 +1,8 @@ import { addRule } from '../' import { toTs } from '../convert' -addRule('Functions', () => ({ +addRule('Functions', (warnings) => ({ FunctionTypeAnnotation(path) { - path.replaceWith(toTs(path.node)) + path.replaceWith(toTs(path.node, warnings)) } })) diff --git a/src/rules/Indexer.ts b/src/rules/Indexer.ts index d90ee2d..65ac044 100644 --- a/src/rules/Indexer.ts +++ b/src/rules/Indexer.ts @@ -1,8 +1,8 @@ import { addRule } from '../' import { toTs } from '../convert' -addRule('Indexer', () => ({ +addRule('Indexer', (warnings) => ({ ObjectTypeIndexer(path) { - path.replaceWith(toTs(path.node)) + path.replaceWith(toTs(path.node, warnings)) } })) diff --git a/src/rules/InterfaceDeclaration.ts b/src/rules/InterfaceDeclaration.ts index a828225..5bb349a 100644 --- a/src/rules/InterfaceDeclaration.ts +++ b/src/rules/InterfaceDeclaration.ts @@ -1,8 +1,8 @@ import { addRule } from '..' import { toTs } from '../convert' -addRule('InterfaceDeclaration', () => ({ +addRule('InterfaceDeclaration', (warnings) => ({ InterfaceDeclaration(path) { - path.replaceWith(toTs(path.node)) + path.replaceWith(toTs(path.node, warnings)) } })) diff --git a/src/rules/ObjectType.ts b/src/rules/ObjectType.ts index ec679a4..64bdc96 100644 --- a/src/rules/ObjectType.ts +++ b/src/rules/ObjectType.ts @@ -1,8 +1,8 @@ import { addRule } from '../' import { toTs } from '../convert' -addRule('ObjectType', () => ({ +addRule('ObjectType', (warnings) => ({ ObjectTypeAnnotation(path) { - path.replaceWith(toTs(path.node)) + path.replaceWith(toTs(path.node, warnings)) } })) diff --git a/src/rules/TypeAlias.ts b/src/rules/TypeAlias.ts index 237ed7a..a9c428f 100644 --- a/src/rules/TypeAlias.ts +++ b/src/rules/TypeAlias.ts @@ -1,8 +1,8 @@ import { addRule } from '..' import { typeAliasToTsTypeAliasDeclaration } from '../convert' -addRule('TypeAlias', () => ({ +addRule('TypeAlias', (warnings) => ({ TypeAlias(path) { - path.replaceWith(typeAliasToTsTypeAliasDeclaration(path.node)) + path.replaceWith(typeAliasToTsTypeAliasDeclaration(path.node, warnings)) } })) diff --git a/src/rules/TypeAnnotation.ts b/src/rules/TypeAnnotation.ts index fe1fadd..2e7edc5 100644 --- a/src/rules/TypeAnnotation.ts +++ b/src/rules/TypeAnnotation.ts @@ -1,8 +1,8 @@ import { addRule } from '..' import { toTs } from '../convert' -addRule('TypeAnnotation', () => ({ +addRule('TypeAnnotation', (warnings) => ({ TypeAnnotation(path) { - path.replaceWith(toTs(path.node)) + path.replaceWith(toTs(path.node, warnings)) } })) diff --git a/src/rules/Variance.ts b/src/rules/Variance.ts index 6875a3a..73329fa 100644 --- a/src/rules/Variance.ts +++ b/src/rules/Variance.ts @@ -11,6 +11,6 @@ addRule('Variance', warnings => ({ path.node.loc.start.column ]) } - path.replaceWith(toTs(path.node)) + path.replaceWith(toTs(path.node, warnings)) } })) From af8353e20ecda3f42177d9246ca261149e1a4592 Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 13:36:34 +0000 Subject: [PATCH 38/44] Remove console --- src/convert.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/convert.ts b/src/convert.ts index 1a869d1..354062b 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -401,7 +401,6 @@ function functionToTsType(node: FunctionTypeAnnotation, warnings: Warning[]): TS const returnTypeType = node.returnType ? toTs(node.returnType, warnings) : null if (node.returnType && !returnTypeType) { - console.dir(node.returnType) throw new Error(`Could not convert return type '${node.returnType.type}'`) } let f = tsFunctionType( From 49b16aaacac5d178893825e604e9fc529b8889f4 Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 13:37:19 +0000 Subject: [PATCH 39/44] Remove noops --- src/rules/$Exact.ts | 1 - src/rules/$ReadOnly.ts | 1 - src/rules/Mixed.ts | 1 - 3 files changed, 3 deletions(-) delete mode 100644 src/rules/$Exact.ts delete mode 100644 src/rules/$ReadOnly.ts delete mode 100644 src/rules/Mixed.ts diff --git a/src/rules/$Exact.ts b/src/rules/$Exact.ts deleted file mode 100644 index e89c38a..0000000 --- a/src/rules/$Exact.ts +++ /dev/null @@ -1 +0,0 @@ -// no-op diff --git a/src/rules/$ReadOnly.ts b/src/rules/$ReadOnly.ts deleted file mode 100644 index e89c38a..0000000 --- a/src/rules/$ReadOnly.ts +++ /dev/null @@ -1 +0,0 @@ -// no-op diff --git a/src/rules/Mixed.ts b/src/rules/Mixed.ts deleted file mode 100644 index e89c38a..0000000 --- a/src/rules/Mixed.ts +++ /dev/null @@ -1 +0,0 @@ -// no-op From 75631960fbeab1da4cb9947fd7815dd7d78829de Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 14:30:49 +0000 Subject: [PATCH 40/44] Allow Implicit Any --- src/convert.ts | 8 -------- src/index.ts | 4 ++-- tsconfig.json | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/convert.ts b/src/convert.ts index 354062b..2a69db1 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -120,14 +120,6 @@ export function toTs( case 'TSUndefinedKeyword': case 'TSUnionType': case 'TSVoidKeyword': - // @ts-ignore - case 'TSTypeAnnotation': - // @ts-ignore - case 'TSTypeParameterDeclaration': - // @ts-ignore - case 'TSAsExpression': - // @ts-ignore - case 'TSPropertySignature': return node case 'TypeAnnotation': diff --git a/src/index.ts b/src/index.ts index f78d42f..3f6d75f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -63,7 +63,7 @@ export async function convert(ast: T): Promise<[Warning[], T]> { ] const keys = [...rules.keys()] const all = [...order, ...keys.filter(k => order.indexOf(k) < 0)] - const visitor = {} + const visitor: { [key: string]: Visitor } = {} all.forEach(i => { const visGen = rules.get(i)! if (!visGen) return @@ -73,7 +73,7 @@ export async function convert(ast: T): Promise<[Warning[], T]> { visitor[k] = vis[k] } else { const oldVis = visitor[k] - visitor[k] = (...args) => { + visitor[k] = (...args: any[]) => { oldVis(...args) vis[k](...args) } diff --git a/tsconfig.json b/tsconfig.json index a1ac858..1e5fe78 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "module": "commonjs", "moduleResolution": "node", "noFallthroughCasesInSwitch": true, - "noImplicitAny": false, + "noImplicitAny": true, "noUnusedLocals": true, "noUnusedParameters": true, "outDir": "dist", From 0caee98fd73df7d197077ed16671968f57048109 Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 16:55:08 +0000 Subject: [PATCH 41/44] Upgrade babel, switch to babel traverse @types --- package.json | 9 +- src/convert.ts | 47 ++- src/index.ts | 21 +- src/rules/$Keys.ts | 11 +- src/rules/Exact.ts | 4 +- src/rules/ObjectType.ts | 1 + src/rules/Opaque.ts | 4 +- src/rules/Variance.ts | 4 +- src/types.d.ts | 8 +- yarn.lock | 914 ++++++++++++++++++++++++---------------- 10 files changed, 614 insertions(+), 409 deletions(-) diff --git a/package.json b/package.json index a7b9779..d3ce814 100644 --- a/package.json +++ b/package.json @@ -26,16 +26,17 @@ "test:watch": "ava -w" }, "dependencies": { - "@babel/generator": "7.2.2", - "@babel/parser": "7.2.3", - "@babel/traverse": "7.2.3", - "@babel/types": "7.2.2", + "@babel/generator": "^7.3.0", + "@babel/parser": "^7.3.0", + "@babel/traverse": "^7.3.0", + "@babel/types": "^7.3.0", "glob": "^7.1.3", "lodash": "^4.17.11", "mz": "^2.7.0", "stdin": "^0.0.1" }, "devDependencies": { + "@types/babel__traverse": "^7.0.6", "@types/glob": "^7.1.1", "@types/lodash": "^4.14.119", "@types/minimist": "^1.2.0", diff --git a/src/convert.ts b/src/convert.ts index 2a69db1..e6ee9e1 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -57,7 +57,8 @@ import { tsInterfaceBody, ObjectTypeAnnotation, ObjectTypeProperty, - TSPropertySignature + TSPropertySignature, + isIdentifier } from '@babel/types' import { generateFreeIdentifier } from './utils' import { Warning } from '.'; @@ -280,28 +281,29 @@ export function toTsType(node: FlowType | TypeAnnotation, warnings: Warning[]): case 'FunctionTypeAnnotation': return functionToTsType(node, warnings) case 'GenericTypeAnnotation': { - if (node.id.name === '$Exact') { - warnings.push([ - `$Exact types can't be expressed in TypeScript`, - 'https://github.com/Microsoft/TypeScript/issues/12936', - node.loc ? node.loc.start.line : -1, - node.loc ? node.loc.start.column : -1 - ]) - return toTsType(node.typeParameters!.params[0], warnings) - } else if (node.id.name === '$ReadOnly') { - // Rename to 'Readonly' - node.id.name = 'Readonly' - return toTsType(node, warnings) - } else if (node.typeParameters && node.typeParameters.params.length) { - return tsTypeReference( - toTsTypeName(node.id), - tsTypeParameterInstantiation( - node.typeParameters.params.map(p => toTsType(p, warnings)) + if (isIdentifier(node.id)) { + if (node.id.name === '$Exact') { + warnings.push([ + `$Exact types can't be expressed in TypeScript`, + 'https://github.com/Microsoft/TypeScript/issues/12936', + node.loc ? node.loc.start.line : -1, + node.loc ? node.loc.start.column : -1 + ]) + return toTsType(node.typeParameters!.params[0], warnings) + } else if (node.id.name === '$ReadOnly') { + // Rename to 'Readonly' + node.id.name = 'Readonly' + return toTsType(node, warnings) + } else if (node.typeParameters && node.typeParameters.params.length) { + return tsTypeReference( + toTsTypeName(node.id), + tsTypeParameterInstantiation( + node.typeParameters.params.map(p => toTsType(p, warnings)) + ) ) - ) - } else { - return tsTypeReference(toTsTypeName(node.id)) + } } + return tsTypeReference(toTsTypeName(node.id)) } case 'IntersectionTypeAnnotation': return tsIntersectionType(node.types.map((_) => toTsType(_, warnings))) @@ -376,6 +378,9 @@ function toTsTypeParameter(_: TypeParameter, warnings: Warning[]): TSTypeParamet function getId(node: FlowType): Identifier { switch (node.type) { case 'GenericTypeAnnotation': + if (!isIdentifier(node.id)) { + throw ReferenceError('typeof query must reference a an identifier') + } return node.id default: throw ReferenceError('typeof query must reference a node that has an id') diff --git a/src/index.ts b/src/index.ts index 3f6d75f..d2a9931 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,6 +8,7 @@ import { EOL } from 'os' import { relative, resolve } from 'path' export type Warning = [string, string, number, number] +type ObjVisitor = { [key: string]: Visitor[keyof Visitor] } type Rule = (warnings: Warning[]) => Visitor let rules = new Map() @@ -63,23 +64,25 @@ export async function convert(ast: T): Promise<[Warning[], T]> { ] const keys = [...rules.keys()] const all = [...order, ...keys.filter(k => order.indexOf(k) < 0)] - const visitor: { [key: string]: Visitor } = {} - all.forEach(i => { + const visitor = all.reduce>((agg, i) => { const visGen = rules.get(i)! - if (!visGen) return - const vis = visGen(warnings) + if (!visGen) return agg + const vis = visGen(warnings) as ObjVisitor Object.keys(vis).forEach(k => { - if (!visitor[k]) { - visitor[k] = vis[k] + if (!agg[k]) { + agg[k] = vis[k] } else { - const oldVis = visitor[k] - visitor[k] = (...args: any[]) => { + const oldVis = agg[k] + agg[k] = (...args: any[]) => { + // @ts-ignore: ts doesn't think this is a function because of funky Visitor type oldVis(...args) + // @ts-ignore vis[k](...args) } } }) - }) + return agg + }, {}) traverse(ast, visitor) return [warnings, ast] diff --git a/src/rules/$Keys.ts b/src/rules/$Keys.ts index 69bd057..d37fcf7 100644 --- a/src/rules/$Keys.ts +++ b/src/rules/$Keys.ts @@ -1,16 +1,23 @@ import { GenericTypeAnnotation, tsTypeOperator, - tsTypeReference + tsTypeReference, + isIdentifier } from '@babel/types' import { addRule } from '../' addRule('$Keys', () => ({ GenericTypeAnnotation(path) { - if (path.node.id.name !== '$Keys') { + if (!isIdentifier(path.node.id) || path.node.id.name !== '$Keys') { + return + } + if (!path.node.typeParameters) { return } let { id } = path.node.typeParameters.params[0] as GenericTypeAnnotation + if (!isIdentifier(id)) { + return + } let op = tsTypeOperator(tsTypeReference(id)) path.replaceWith(op) } diff --git a/src/rules/Exact.ts b/src/rules/Exact.ts index 321757e..d6afafa 100644 --- a/src/rules/Exact.ts +++ b/src/rules/Exact.ts @@ -7,8 +7,8 @@ addRule('Exact', warnings => ({ warnings.push([ `Exact types can't be expressed in TypeScript`, 'https://github.com/Microsoft/TypeScript/issues/12936', - path.node.loc.start.line, - path.node.loc.start.column + path.node.loc ? path.node.loc.start.line : -1, + path.node.loc ? path.node.loc.start.column : -1 ]) path.replaceWith( objectTypeAnnotation( diff --git a/src/rules/ObjectType.ts b/src/rules/ObjectType.ts index 64bdc96..4e46628 100644 --- a/src/rules/ObjectType.ts +++ b/src/rules/ObjectType.ts @@ -3,6 +3,7 @@ import { toTs } from '../convert' addRule('ObjectType', (warnings) => ({ ObjectTypeAnnotation(path) { + console.log(path.node.type) path.replaceWith(toTs(path.node, warnings)) } })) diff --git a/src/rules/Opaque.ts b/src/rules/Opaque.ts index eb0b2ea..1d69366 100644 --- a/src/rules/Opaque.ts +++ b/src/rules/Opaque.ts @@ -7,8 +7,8 @@ addRule('Opaque', warnings => ({ warnings.push([ `Opaque types can't be expressed in TypeScript`, 'https://github.com/Microsoft/TypeScript/issues/202', - path.node.loc.start.line, - path.node.loc.start.column + path.node.loc ? path.node.loc.start.line : -1, + path.node.loc ? path.node.loc.start.column : -1 ]) path.replaceWith( typeAlias( diff --git a/src/rules/Variance.ts b/src/rules/Variance.ts index 73329fa..92915e7 100644 --- a/src/rules/Variance.ts +++ b/src/rules/Variance.ts @@ -7,8 +7,8 @@ addRule('Variance', warnings => ({ warnings.push([ `Contravariance can't be expressed in TypeScript`, 'https://github.com/Microsoft/TypeScript/issues/1394', - path.node.loc.start.line, - path.node.loc.start.column + path.node.loc ? path.node.loc.start.line : -1, + path.node.loc ? path.node.loc.start.column : -1 ]) } path.replaceWith(toTs(path.node, warnings)) diff --git a/src/types.d.ts b/src/types.d.ts index f596e06..a560ebb 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -1,10 +1,4 @@ declare module 'stdin' declare module '@babel/babylon' -declare module '@babel/generator' -declare module '@babel/traverse' { - let traverse: any - export default traverse - export type Node = any - export type Visitor = any -} +declare module '@babel/generator' \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 176d894..0145531 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,17 +20,18 @@ "@babel/plugin-transform-exponentiation-operator" "^7.0.0" "@babel/plugin-transform-modules-commonjs" "^7.0.0" -"@ava/babel-preset-transform-test-files@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-4.0.0.tgz#95d426f5982f934567ae5a21e43eac0a463d6feb" - integrity sha512-V9hYHA/ZLb4I8imrrG8PT0mzgThjWWmahPV+mrQUZobVnsekBUDrf0JsfXVm4guS3binWxWn+MmQt+V81hTizA== +"@ava/babel-preset-transform-test-files@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-4.0.1.tgz#6fb6fa04dc280adc192bccf93fee092391531803" + integrity sha512-D7Z92B8Rgsj35JZveKJGwpUDuBKLiRKH6eyKpNmDHy7TJjr8y3VSDr3bUK+O456F3SkkBXrUihQuMrr39nWQhQ== dependencies: "@ava/babel-plugin-throws-helper" "^3.0.0" - babel-plugin-espower "^3.0.0" + babel-plugin-espower "^3.0.1" "@ava/write-file-atomic@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz#d625046f3495f1f5e372135f473909684b429247" + integrity sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -44,33 +45,33 @@ "@babel/highlight" "^7.0.0" "@babel/core@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" - integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b" + integrity sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" + "@babel/generator" "^7.3.4" "@babel/helpers" "^7.2.0" - "@babel/parser" "^7.2.2" + "@babel/parser" "^7.3.4" "@babel/template" "^7.2.2" - "@babel/traverse" "^7.2.2" - "@babel/types" "^7.2.2" + "@babel/traverse" "^7.3.4" + "@babel/types" "^7.3.4" convert-source-map "^1.1.0" debug "^4.1.0" json5 "^2.1.0" - lodash "^4.17.10" + lodash "^4.17.11" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.2.2", "@babel/generator@^7.0.0", "@babel/generator@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc" - integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg== +"@babel/generator@^7.0.0", "@babel/generator@^7.3.0", "@babel/generator@^7.3.4": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e" + integrity sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg== dependencies: - "@babel/types" "^7.2.2" + "@babel/types" "^7.3.4" jsesc "^2.5.1" - lodash "^4.17.10" + lodash "^4.17.11" source-map "^0.5.0" trim-right "^1.0.1" @@ -181,13 +182,13 @@ "@babel/types" "^7.2.0" "@babel/helpers@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21" - integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A== + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9" + integrity sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA== dependencies: "@babel/template" "^7.1.2" "@babel/traverse" "^7.1.5" - "@babel/types" "^7.2.0" + "@babel/types" "^7.3.0" "@babel/highlight@^7.0.0": version "7.0.0" @@ -198,10 +199,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@7.2.3", "@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" - integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== +"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.3.0", "@babel/parser@^7.3.4": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c" + integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ== "@babel/plugin-proposal-async-generator-functions@^7.0.0": version "7.2.0" @@ -213,9 +214,9 @@ "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8" - integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg== + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.4.tgz#47f73cf7f2a721aad5c0261205405c642e424654" + integrity sha512-j7VQmbbkA+qrzNqbKHrBsW3ddFnOeva6wzSe/zB7T+xaxGc+RCpwo44wCmRixAIGRoIpmVgvzFzNJqQcO3/9RA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" @@ -250,9 +251,9 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-async-to-generator@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff" - integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ== + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz#4e45408d3c3da231c0e7b823f407a53a7eb3048c" + integrity sha512-Y7nCzv2fw/jEZ9f678MuKdMo99MFDJMT/PvD9LisrR5JDFcJH6vYeH6RnjVt3p5tceyGRvTtEN0VOlU+rgHZjA== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" @@ -293,28 +294,28 @@ "@babel/parser" "^7.2.2" "@babel/types" "^7.2.2" -"@babel/traverse@7.2.3", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" - integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.3.0", "@babel/traverse@^7.3.4": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06" + integrity sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" + "@babel/generator" "^7.3.4" "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.2.3" - "@babel/types" "^7.2.2" + "@babel/parser" "^7.3.4" + "@babel/types" "^7.3.4" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.10" + lodash "^4.17.11" -"@babel/types@7.2.2", "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e" - integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg== +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.4": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed" + integrity sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ== dependencies: esutils "^2.0.2" - lodash "^4.17.10" + lodash "^4.17.11" to-fast-properties "^2.0.0" "@concordance/react@^2.0.0": @@ -324,9 +325,17 @@ dependencies: arrify "^1.0.1" +"@types/babel__traverse@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" + integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== + dependencies: + "@babel/types" "^7.3.0" + "@types/events@*": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-1.1.0.tgz#93b1be91f63c184450385272c47b6496fd028e02" + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== "@types/glob@^7.1.1": version "7.1.1" @@ -338,50 +347,58 @@ "@types/node" "*" "@types/lodash@^4.14.119": - version "4.14.119" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.119.tgz#be847e5f4bc3e35e46d041c394ead8b603ad8b39" - integrity sha512-Z3TNyBL8Vd/M9D9Ms2S3LmFq2sSMzahodD6rCS9V2N44HUMINb75jNkSuwAx7eo2ufqTdfOdtGQpNbieUjPQmw== + version "4.14.121" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.121.tgz#9327e20d49b95fc2bf983fc2f045b2c6effc80b9" + integrity sha512-ORj7IBWj13iYufXt/VXrCNMbUuCTJfhzme5kx9U/UtcIPdJYuvPDUAlHlbNhz/8lKCLy9XGIZnGrqXOtQbPGoQ== "@types/minimatch@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.2.tgz#09c06877e478a5d5f32ce5017c2eb2b33006f6f5" + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/minimist@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= "@types/mz@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@types/mz/-/mz-0.0.32.tgz#e8248b4e41424c052edc1725dd33650c313a3659" + integrity sha512-cy3yebKhrHuOcrJGkfwNHhpTXQLgmXSv1BX+4p32j+VUQ6aP2eJ5cL7OvGcAQx75fCTFaAIIAKewvqL+iwSd4g== dependencies: "@types/node" "*" "@types/node@*": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.1.tgz#4ec3020bcdfe2abffeef9ba3fbf26fca097514b5" + version "11.9.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.5.tgz#011eece9d3f839a806b63973e228f85967b79ed3" + integrity sha512-vVjM0SVzgaOUpflq4GYBvCpozes8OgIIS5gVXVka+OfK3hvnkC1i93U8WiY2OtNE4XUWyyy/86Kf6e0IHTQw1Q== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= dependencies: string-width "^2.0.0" ansi-escapes@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" - integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^4.0.0: version "4.0.0" @@ -391,12 +408,7 @@ ansi-regex@^4.0.0: ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= ansi-styles@^3.2.1: version "3.2.1" @@ -408,6 +420,7 @@ ansi-styles@^3.2.1: any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= anymatch@^2.0.0: version "2.0.0" @@ -420,17 +433,20 @@ anymatch@^2.0.0: aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" @@ -449,23 +465,27 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" +array-differ@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.0.3.tgz#0195bb00ccccf271106efee4a4786488b7180712" + integrity sha1-AZW7AMzM8nEQbv7kpHhkiLcYBxI= array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-uniq@^2.0.0: version "2.0.0" @@ -480,15 +500,17 @@ array-unique@^0.3.2: arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -async-each@^1.0.0: +async-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= atob@^2.1.1: version "2.1.2" @@ -496,15 +518,15 @@ atob@^2.1.1: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== ava@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ava/-/ava-1.0.1.tgz#04be9a12ba60c55cfc869350ec04520ba3c94698" - integrity sha512-wTb9D14fytTeSOyNu+if6nzSni+MyEn9xgpJki2V5MiTbwMVtt4Svh40gCIos3k5Jqp1wXPCTZLIGKLpI965fQ== + version "1.2.1" + resolved "https://registry.yarnpkg.com/ava/-/ava-1.2.1.tgz#c9b55fda5663fbfad88df37d5cdac56f29347c1b" + integrity sha512-EHqbPGdd8aNvlvRNL7liD1J9Auf9kByHj5Zi7zF7Z5ukn2ZStZgVBf7LSqirKIOWScB3XZzFQbO59SnTvzD5kA== dependencies: "@ava/babel-preset-stage-4" "^2.0.0" - "@ava/babel-preset-transform-test-files" "^4.0.0" + "@ava/babel-preset-transform-test-files" "^4.0.1" "@ava/write-file-atomic" "^2.2.0" "@babel/core" "^7.2.2" - "@babel/generator" "^7.2.2" + "@babel/generator" "^7.3.0" "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" @@ -516,7 +538,7 @@ ava@^1.0.1: array-uniq "^2.0.0" arrify "^1.0.0" bluebird "^3.5.3" - chalk "^2.4.1" + chalk "^2.4.2" chokidar "^2.0.4" chunkd "^1.0.0" ci-parallel-vars "^1.0.0" @@ -529,17 +551,17 @@ ava@^1.0.1: concordance "^4.0.0" convert-source-map "^1.6.0" currently-unhandled "^0.4.1" - debug "^4.1.0" + debug "^4.1.1" del "^3.0.0" dot-prop "^4.2.0" emittery "^0.4.1" empower-core "^1.2.0" equal-length "^1.0.0" escape-string-regexp "^1.0.5" - esm "^3.0.84" + esm "^3.1.3" figures "^2.0.0" find-up "^3.0.0" - get-port "^4.0.0" + get-port "^4.1.0" globby "^7.1.1" ignore-by-default "^1.0.0" import-local "^2.0.0" @@ -561,22 +583,22 @@ ava@^1.0.1: md5-hex "^2.0.0" meow "^5.0.0" ms "^2.1.1" - multimatch "^2.1.0" + multimatch "^3.0.0" observable-to-promise "^0.5.0" ora "^3.0.0" - package-hash "^2.0.0" + package-hash "^3.0.0" pkg-conf "^2.1.0" plur "^3.0.1" pretty-ms "^4.0.0" require-precompiled "^0.1.0" resolve-cwd "^2.0.0" slash "^2.0.0" - source-map-support "^0.5.9" + source-map-support "^0.5.10" stack-utils "^1.0.2" strip-ansi "^5.0.0" strip-bom-buf "^1.0.0" supertap "^1.0.0" - supports-color "^5.5.0" + supports-color "^6.1.0" trim-off-newlines "^1.0.1" trim-right "^1.0.1" unique-temp-dir "^1.0.0" @@ -585,15 +607,16 @@ ava@^1.0.1: babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= dependencies: chalk "^1.1.3" esutils "^2.0.2" js-tokens "^3.0.2" -babel-plugin-espower@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.0.tgz#8dadfa5ec2b9c82e3c4aa0a2d14fbd3ff6d40061" - integrity sha512-f2IUz5kQyrwXnShcv7tvGxf76QkrEl00ENYgd6R0VMrz4xqlwBLZXFs5vse2vehs1Z+T2sXTP3UWX2QxMorzzw== +babel-plugin-espower@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz#180db17126f88e754105b8b5216d21e520a6bd4e" + integrity sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A== dependencies: "@babel/generator" "^7.0.0" "@babel/parser" "^7.0.0" @@ -606,6 +629,7 @@ babel-plugin-espower@^3.0.0: balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base@^0.11.1: version "0.11.2" @@ -621,8 +645,9 @@ base@^0.11.1: pascalcase "^0.1.1" binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + version "1.13.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1" + integrity sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw== bluebird@^3.5.3: version "3.5.3" @@ -632,6 +657,7 @@ bluebird@^3.5.3: boxen@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" @@ -642,13 +668,14 @@ boxen@^1.2.1: widest-line "^2.0.0" brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.0, braces@^2.3.1: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -669,9 +696,10 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -builtin-modules@^1.0.0, builtin-modules@^1.1.1: +builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= cache-base@^1.0.1: version "1.0.1" @@ -689,8 +717,9 @@ cache-base@^1.0.1: unset-value "^1.0.0" call-matcher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.0.1.tgz#5134d077984f712a54dad3cbf62de28dce416ca8" + version "1.1.0" + resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432" + integrity sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw== dependencies: core-js "^2.0.0" deep-equal "^1.0.0" @@ -700,6 +729,7 @@ call-matcher@^1.0.0: call-signature@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" + integrity sha1-qEq8glpV70yysCi9dOIFpluaSZY= camelcase-keys@^4.0.0: version "4.2.0" @@ -713,6 +743,7 @@ camelcase-keys@^4.0.0: camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= camelcase@^5.0.0: version "5.0.0" @@ -720,12 +751,14 @@ camelcase@^5.0.0: integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + version "1.0.1" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -733,42 +766,33 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" chokidar@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058" + integrity sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg== dependencies: anymatch "^2.0.0" - async-each "^1.0.0" - braces "^2.3.0" + async-each "^1.0.1" + braces "^2.3.2" glob-parent "^3.1.0" - inherits "^2.0.1" + inherits "^2.0.3" is-binary-path "^1.0.0" is-glob "^4.0.0" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" + normalize-path "^3.0.0" path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" + readdirp "^2.2.1" + upath "^1.1.0" optionalDependencies: - fsevents "^1.2.2" + fsevents "^1.2.7" chownr@^1.1.1: version "1.1.1" @@ -813,18 +837,21 @@ clean-stack@^2.0.0: clean-yaml-object@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" + integrity sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g= cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" -cli-spinners@^1.1.0: +cli-spinners@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== @@ -861,6 +888,7 @@ code-excerpt@^2.1.1: code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= collection-visit@^1.0.0: version "1.0.0" @@ -871,14 +899,16 @@ collection-visit@^1.0.0: object-visit "^1.0.0" color-convert@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: - color-name "^1.1.1" + color-name "1.1.3" -color-name@^1.1.1: +color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= commander@^2.12.1: version "2.19.0" @@ -888,6 +918,7 @@ commander@^2.12.1: common-path-prefix@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-1.0.0.tgz#cd52f6f0712e0baab97d6f9732874f22f47752c0" + integrity sha1-zVL28HEuC6q5fW+XModPIvR3UsA= component-emitter@^1.2.1: version "1.2.1" @@ -897,6 +928,7 @@ component-emitter@^1.2.1: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concordance@^4.0.0: version "4.0.0" @@ -931,8 +963,9 @@ concurrently@^4.1.0: yargs "^12.0.1" configstore@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== dependencies: dot-prop "^4.1.0" graceful-fs "^4.1.2" @@ -944,6 +977,7 @@ configstore@^3.0.0: console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= convert-source-map@^1.1.0, convert-source-map@^1.6.0: version "1.6.0" @@ -955,6 +989,7 @@ convert-source-map@^1.1.0, convert-source-map@^1.6.0: convert-to-spaces@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" + integrity sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU= copy-descriptor@^0.1.0: version "0.1.1" @@ -962,22 +997,26 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js@^2.0.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + version "2.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" + integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= dependencies: capture-stack-trace "^1.0.0" cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" @@ -997,30 +1036,35 @@ cross-spawn@^6.0.0: crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= dependencies: array-find-index "^1.0.1" date-fns@^1.23.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== date-time@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/date-time/-/date-time-2.1.0.tgz#0286d1b4c769633b3ca13e1e62558d2dbdc2eba2" + integrity sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g== dependencies: time-zone "^1.0.0" debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@^4.1.0: +debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -1048,16 +1092,13 @@ decode-uri-component@^0.2.0: deep-equal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -1102,21 +1143,23 @@ del@^3.0.0: delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= diff@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== dir-glob@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== dependencies: - arrify "^1.0.1" path-type "^3.0.0" dot-prop@^4.1.0, dot-prop@^4.2.0: @@ -1129,6 +1172,7 @@ dot-prop@^4.1.0, dot-prop@^4.2.0: duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= emittery@^0.4.1: version "0.4.1" @@ -1153,6 +1197,7 @@ end-of-stream@^1.1.0: equal-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" + integrity sha1-IcoRLUirJLTh5//A5TOdMf38J0w= error-ex@^1.3.1: version "1.3.2" @@ -1162,21 +1207,24 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es6-error@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98" + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -esm@^3.0.84: - version "3.0.84" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63" - integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw== +esm@^3.1.3: + version "3.2.7" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.7.tgz#5fcb7649cce55323bce9ac02496e89339df86f9f" + integrity sha512-zsyD5gO8CY9dpK3IrdC4WHtvtHGXEFOpYA4zB+6p+Kygf3vv/6kF3YMEQLOArwKPPNvKt8gjI8UYhQW8bXM/YQ== espower-location-detector@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5" + integrity sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU= dependencies: is-url "^1.2.1" path-is-absolute "^1.0.0" @@ -1184,26 +1232,31 @@ espower-location-detector@^1.0.0: xtend "^4.0.0" esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== espurify@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.7.0.tgz#1c5cf6cbccc32e6f639380bd4f991fab9ba9d226" + version "1.8.1" + resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056" + integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg== dependencies: core-js "^2.0.0" estraverse@^4.0.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -1276,6 +1329,7 @@ fast-diff@^1.1.2: figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" @@ -1292,6 +1346,7 @@ fill-range@^4.0.0: find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" @@ -1329,11 +1384,12 @@ fs-minipass@^1.2.5: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== +fsevents@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" @@ -1341,6 +1397,7 @@ fsevents@^1.2.2: gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -1356,7 +1413,7 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-port@^4.0.0: +get-port@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.1.0.tgz#93eb3d5552c197497d76e9c389a6ac9920e20192" integrity sha512-4/fqAYrzrzOiqDrdeZRKXGdTGgbkfTEumGlNQPeP6Jy8w0PzN9mzeNQ3XgHaTNie8pQ3hOUkrwlZt2Fzk5H9mA== @@ -1364,6 +1421,7 @@ get-port@^4.0.0: get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= get-stream@^4.0.0: version "4.1.0" @@ -1385,18 +1443,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -1411,12 +1458,14 @@ glob@^7.1.3: global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= dependencies: ini "^1.3.4" globals@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4" + version "11.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" + integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== globby@^6.1.0: version "6.1.0" @@ -1444,6 +1493,7 @@ globby@^7.1.1: got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= dependencies: create-error-class "^3.0.0" duplexer3 "^0.1.4" @@ -1457,19 +1507,22 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= has-flag@^3.0.0: version "3.0.0" @@ -1479,6 +1532,7 @@ has-flag@^3.0.0: has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" @@ -1511,9 +1565,17 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +hasha@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" + integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk= + dependencies: + is-stream "^1.0.1" + hosted-git-info@^2.1.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== iconv-lite@^0.4.4: version "0.4.24" @@ -1525,6 +1587,7 @@ iconv-lite@^0.4.4: ignore-by-default@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= ignore-walk@^3.0.1: version "3.0.1" @@ -1541,6 +1604,7 @@ ignore@^3.3.5: import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= import-local@^2.0.0: version "2.0.0" @@ -1553,6 +1617,7 @@ import-local@^2.0.0: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indent-string@^3.0.0, indent-string@^3.2.0: version "3.2.0" @@ -1562,17 +1627,20 @@ indent-string@^3.0.0, indent-string@^3.2.0: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== invert-kv@^2.0.0: version "2.0.0" @@ -1601,22 +1669,19 @@ is-accessor-descriptor@^1.0.0: is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-ci@^1.0.10: version "1.2.1" @@ -1689,12 +1754,14 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-glob@^3.1.0: version "3.1.0" @@ -1713,6 +1780,7 @@ is-glob@^4.0.0: is-installed-globally@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= dependencies: global-dirs "^0.1.0" is-path-inside "^1.0.0" @@ -1720,20 +1788,24 @@ is-installed-globally@^0.1.0: is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-observable@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" + integrity sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI= dependencies: symbol-observable "^0.2.2" @@ -1759,6 +1831,7 @@ is-path-in-cwd@^1.0.0: is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= dependencies: path-is-inside "^1.0.1" @@ -1777,26 +1850,32 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-url@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.2.tgz#498905a593bf47cc2d9e7f738372bbf7696c7f26" + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-windows@^1.0.2: version "1.0.2" @@ -1806,14 +1885,17 @@ is-windows@^1.0.2: isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" @@ -1825,10 +1907,12 @@ isobject@^3.0.0, isobject@^3.0.1: js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" + integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= js-tokens@^4.0.0: version "4.0.0" @@ -1836,20 +1920,22 @@ js-tokens@^4.0.0: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.10.0, js-yaml@^3.7.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" - integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== + version "3.12.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.2.tgz#ef1d067c5a9d9cb65bd72f285b5d8105c77f14fc" + integrity sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q== dependencies: argparse "^1.0.7" esprima "^4.0.0" jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-parse-better-errors@^1.0.1: version "1.0.2" @@ -1866,12 +1952,14 @@ json5@^2.1.0: kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" @@ -1888,6 +1976,7 @@ kind-of@^6.0.0, kind-of@^6.0.2: latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= dependencies: package-json "^4.0.0" @@ -1911,6 +2000,7 @@ load-json-file@^4.0.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -1931,26 +2021,32 @@ lodash.clone@^4.5.0: lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.clonedeepwith@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" + integrity sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ= -lodash.debounce@^4.0.3, lodash.debounce@^4.0.8: +lodash.debounce@^4.0.3: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= lodash.difference@^4.3.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= lodash.flatten@^4.2.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= lodash.islength@^4.0.1: version "4.0.1" @@ -1977,28 +2073,25 @@ log-symbols@^2.2.0: loud-rejection@^1.0.0, loud-rejection@^1.2.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= dependencies: currently-unhandled "^0.4.1" signal-exit "^3.0.0" lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lru-cache@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" -make-dir@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" - dependencies: - pify "^3.0.0" - -make-dir@^1.3.0: +make-dir@^1.0.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== @@ -2020,6 +2113,7 @@ map-cache@^0.2.2: map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-obj@^2.0.0: version "2.0.0" @@ -2043,21 +2137,23 @@ matcher@^1.1.1: md5-hex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-2.0.0.tgz#d0588e9f1c74954492ecd24ac0ac6ce997d92e33" + integrity sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM= dependencies: md5-o-matic "^0.1.1" md5-o-matic@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/md5-o-matic/-/md5-o-matic-0.1.1.tgz#822bccd65e117c514fab176b25945d54100a03c3" + integrity sha1-givM1l4RfFFPqxdrJZRdVBAKA8M= mem@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" - integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== + version "4.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a" + integrity sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg== dependencies: map-age-cleaner "^0.1.1" mimic-fn "^1.0.0" - p-is-promise "^1.1.0" + p-is-promise "^2.0.0" meow@^5.0.0: version "5.0.0" @@ -2074,7 +2170,7 @@ meow@^5.0.0: trim-newlines "^2.0.0" yargs-parser "^10.0.0" -micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -2094,12 +2190,14 @@ micromatch@^3.1.4: to-regex "^3.0.2" mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" @@ -2114,10 +2212,12 @@ minimist-options@^3.0.1: minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minipass@^2.2.1, minipass@^2.3.4: version "2.3.5" @@ -2145,30 +2245,34 @@ mixin-deep@^1.2.0: mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -multimatch@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" +multimatch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" + integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" + array-differ "^2.0.3" + array-union "^1.0.2" + arrify "^1.0.1" + minimatch "^3.0.4" mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: any-promise "^1.0.0" object-assign "^4.0.1" @@ -2229,16 +2333,18 @@ node-pre-gyp@^0.10.0: nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" + resolve "^1.10.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" @@ -2249,15 +2355,20 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" - integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== npm-packlist@^1.1.6: - version "1.1.12" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" - integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== + version "1.4.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" + integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -2265,12 +2376,14 @@ npm-packlist@^1.1.6: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -2280,10 +2393,12 @@ npmlog@^4.0.2: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-copy@^0.1.0: version "0.1.0" @@ -2311,6 +2426,7 @@ object.pick@^1.3.0: observable-to-promise@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f" + integrity sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8= dependencies: is-observable "^0.2.0" symbol-observable "^1.0.4" @@ -2318,30 +2434,33 @@ observable-to-promise@^0.5.0: once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" ora@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.0.0.tgz#8179e3525b9aafd99242d63cc206fd64732741d0" - integrity sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.1.0.tgz#dbedd8c03b5d017fb67083e87ee52f5ec89823ed" + integrity sha512-vRBPaNCclUi8pUxRF/G8+5qEQkc6EgzKK1G2ZNJUIGu088Un5qIxFXeDgymvPRM9nmrcUOGzQgS1Vmtz+NtlMw== dependencies: - chalk "^2.3.1" + chalk "^2.4.2" cli-cursor "^2.1.0" - cli-spinners "^1.1.0" + cli-spinners "^1.3.1" log-symbols "^2.2.0" - strip-ansi "^4.0.0" + strip-ansi "^5.0.0" wcwidth "^1.0.1" os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-locale@^3.0.0: version "3.1.0" @@ -2355,10 +2474,12 @@ os-locale@^3.0.0: os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" @@ -2371,15 +2492,19 @@ p-defer@^1.0.0: p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= +p-is-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" + integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" p-limit@^2.0.0: version "2.1.0" @@ -2391,6 +2516,7 @@ p-limit@^2.0.0: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" @@ -2406,23 +2532,30 @@ p-map@^1.1.1: resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== -package-hash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-2.0.0.tgz#78ae326c89e05a4d813b68601977af05c00d2a0d" +package-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" + integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== dependencies: - graceful-fs "^4.1.11" + graceful-fs "^4.1.15" + hasha "^3.0.0" lodash.flattendeep "^4.4.0" - md5-hex "^2.0.0" release-zalgo "^1.0.0" package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= dependencies: got "^6.7.1" registry-auth-token "^3.0.1" @@ -2455,22 +2588,27 @@ path-dirname@^1.0.0: path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-type@^3.0.0: version "3.0.0" @@ -2482,20 +2620,24 @@ path-type@^3.0.0: pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pkg-conf@^2.1.0: version "2.1.0" @@ -2527,11 +2669,12 @@ posix-character-classes@^0.1.0: prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= prettier@^1.15.3: - version "1.15.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a" - integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg== + version "1.16.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" + integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== pretty-ms@^4.0.0: version "4.0.0" @@ -2540,13 +2683,15 @@ pretty-ms@^4.0.0: dependencies: parse-ms "^2.0.0" -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= pump@^3.0.0: version "3.0.0" @@ -2561,16 +2706,7 @@ quick-lru@^1.0.0: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= -rc@^1.0.1, rc@^1.1.6: - version "1.2.2" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -rc@^1.2.7: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -2607,25 +2743,26 @@ read-pkg@^4.0.1: pify "^3.0.0" readable-stream@^2.0.2, readable-stream@^2.0.6: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" - process-nextick-args "~1.0.6" + process-nextick-args "~2.0.0" safe-buffer "~5.1.1" - string_decoder "~1.0.3" + string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" + graceful-fs "^4.1.11" + micromatch "^3.1.10" readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" redent@^2.0.0: version "2.0.0" @@ -2668,8 +2805,9 @@ regexpu-core@^4.1.3: unicode-match-property-value-ecmascript "^1.0.2" registry-auth-token@^3.0.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + version "3.3.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== dependencies: rc "^1.1.6" safe-buffer "^5.0.1" @@ -2677,6 +2815,7 @@ registry-auth-token@^3.0.1: registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= dependencies: rc "^1.0.1" @@ -2695,16 +2834,19 @@ regjsparser@^0.6.0: release-zalgo@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= dependencies: es6-error "^4.0.1" remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.6.1: version "1.6.1" @@ -2724,31 +2866,36 @@ require-main-filename@^1.0.1: require-precompiled@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa" + integrity sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo= resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= dependencies: resolve-from "^3.0.0" resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.3.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" +resolve@^1.10.0, resolve@^1.3.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== dependencies: - path-parse "^1.0.5" + path-parse "^1.0.6" restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -2758,31 +2905,21 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@^2.2.8: +rimraf@^2.2.8, rimraf@^2.6.1: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" -rimraf@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - rxjs@^6.3.3: - version "6.3.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" - integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== + version "6.4.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" + integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -safe-buffer@^5.1.2: +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -2807,14 +2944,11 @@ sax@^1.2.4: semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - -semver@^5.5.0, semver@^5.5.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -2827,10 +2961,7 @@ serialize-error@^2.1.0: set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^0.4.3: version "0.4.3" @@ -2855,20 +2986,24 @@ set-value@^2.0.0: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= slash@^2.0.0: version "2.0.0" @@ -2878,12 +3013,14 @@ slash@^2.0.0: slice-ansi@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== dependencies: is-fullwidth-code-point "^2.0.0" slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= snapdragon-node@^2.0.1: version "2.1.1" @@ -2926,10 +3063,10 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== +source-map-support@^0.5.10: + version "0.5.10" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" + integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -2942,28 +3079,43 @@ source-map-url@^0.4.0: source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spawn-command@^0.0.2-1: version "0.0.2-1" resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: - spdx-license-ids "^1.0.2" + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +spdx-license-ids@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" + integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -2975,6 +3127,7 @@ split-string@^3.0.1, split-string@^3.0.2: sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= stack-utils@^1.0.2: version "1.0.2" @@ -2994,36 +3147,41 @@ stdin@^0.0.1: resolved "https://registry.yarnpkg.com/stdin/-/stdin-0.0.1.tgz#d3041981aaec3dfdbc77a1b38d6372e38f5fb71e" integrity sha1-0wQZgarsPf28d6GzjWNy449ftx4= -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" @@ -3037,16 +3195,19 @@ strip-ansi@^5.0.0: strip-bom-buf@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" + integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI= dependencies: is-utf8 "^0.2.1" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-indent@^2.0.0: version "2.0.0" @@ -3056,6 +3217,7 @@ strip-indent@^2.0.0: strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= supertap@^1.0.0: version "1.0.0" @@ -3071,27 +3233,38 @@ supertap@^1.0.0: supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^4.0.0, supports-color@^4.5.0: +supports-color@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= dependencies: has-flag "^2.0.0" -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + symbol-observable@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" + integrity sha1-lag9smGG1q9+ehjb2XYKL4bQj0A= symbol-observable@^1.0.4, symbol-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32" + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== tar@^4: version "4.4.8" @@ -3109,32 +3282,38 @@ tar@^4: term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= dependencies: execa "^0.7.0" thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= dependencies: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": version "3.3.0" resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= dependencies: any-promise "^1.0.0" time-zone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" + integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0= timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" @@ -3162,8 +3341,9 @@ to-regex@^3.0.1, to-regex@^3.0.2: safe-regex "^1.1.0" tree-kill@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + version "1.2.1" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" + integrity sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q== trim-newlines@^2.0.0: version "2.0.0" @@ -3173,24 +3353,22 @@ trim-newlines@^2.0.0: trim-off-newlines@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -tslib@^1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.1.tgz#6946af2d1d651a7b1863b531d6e5afa41aa44eac" - -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tslint@^5.12.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.12.0.tgz#47f2dba291ed3d580752d109866fb640768fca36" - integrity sha512-CKEcH1MHUBhoV43SA/Jmy1l24HJJgI0eyLbBNSRyFlsQvb9v6Zdq+Nz2vEOH00nC5SUx4SneJ59PZUS/ARcokQ== + version "5.13.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.13.0.tgz#239a2357c36b620d72d86744754b6fc088a25359" + integrity sha512-ECOOQRxXCYnUUePG5h/+Z1Zouobk3KFpIHA9aKBB/nnMxs97S1JJPDGt5J4cGm1y9U9VmVlfboOxA8n1kSNzGw== dependencies: babel-code-frame "^6.22.0" builtin-modules "^1.1.1" @@ -3200,6 +3378,7 @@ tslint@^5.12.0: glob "^7.1.1" js-yaml "^3.7.0" minimatch "^3.0.4" + mkdirp "^0.5.1" resolve "^1.3.2" semver "^5.3.0" tslib "^1.8.0" @@ -3213,13 +3392,14 @@ tsutils@^2.27.2: tslib "^1.8.1" typescript@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" - integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg== + version "3.3.3333" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz#171b2c5af66c59e9431199117a3bcadc66fdcfd6" + integrity sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw== uid2@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" + integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" @@ -3257,12 +3437,14 @@ union-value@^1.0.0: unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= dependencies: crypto-random-string "^1.0.0" unique-temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz#6dce95b2681ca003eebfb304a415f9cbabcc5385" + integrity sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U= dependencies: mkdirp "^0.5.1" os-tmpdir "^1.0.1" @@ -3279,8 +3461,9 @@ unset-value@^1.0.0: unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -upath@^1.0.5: +upath@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== @@ -3309,6 +3492,7 @@ urix@^0.1.0: url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= dependencies: prepend-http "^1.0.1" @@ -3320,13 +3504,15 @@ use@^3.1.0: util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" wcwidth@^1.0.1: version "1.0.1" @@ -3346,20 +3532,23 @@ which-module@^2.0.0: integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which@^1.2.9: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: - string-width "^1.0.2" + string-width "^1.0.2 || 2" widest-line@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + version "2.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== dependencies: string-width "^2.1.1" @@ -3374,10 +3563,12 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + version "2.4.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" + integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -3386,10 +3577,12 @@ write-file-atomic@^2.0.0: xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= "y18n@^3.2.1 || ^4.0.0": version "4.0.0" @@ -3399,6 +3592,7 @@ xtend@^4.0.0: yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" From 144955634c1953f01bb4df3277546a2e440994e1 Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 17:14:27 +0000 Subject: [PATCH 42/44] Remove parens --- test/rules/Functions/output.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/rules/Functions/output.txt b/test/rules/Functions/output.txt index bcd906e..7cacd8f 100644 --- a/test/rules/Functions/output.txt +++ b/test/rules/Functions/output.txt @@ -12,6 +12,6 @@ export default function Functions3(a: number, b: A & B, { return ""; } -function Functions4(a: string, b: C | ((d: E) => F), g: G) { +function Functions4(a: string, b: C | (d: E) => F, g: G) { return ''; } From 795dc38388c5e6a0eee5bdb3b2fab524ebac11eb Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 17:45:07 +0000 Subject: [PATCH 43/44] Remove unecessary type --- src/convert.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/convert.ts b/src/convert.ts index e6ee9e1..213a7e0 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -444,7 +444,7 @@ interface BoundedTypeParameter extends TypeParameter { function objectTypeAnnotationPropertiesAndSpreads( node: ObjectTypeAnnotation, warnings: Warning[] -): { properties: TSTypeElement[]; spreads: TSType[] } { +) { const spreads: TSType[] = [] const properties: TSTypeElement[] = [] From 5d00d66b315606e136ea88baf453667a80187ea4 Mon Sep 17 00:00:00 2001 From: Ollie Relph Date: Thu, 28 Feb 2019 17:45:25 +0000 Subject: [PATCH 44/44] Remove unhandled test case --- test/unit/Types/input.txt | 1 - test/unit/Types/output.txt | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/test/unit/Types/input.txt b/test/unit/Types/input.txt index d379f4a..a4dcba4 100644 --- a/test/unit/Types/input.txt +++ b/test/unit/Types/input.txt @@ -19,5 +19,4 @@ type I = { type J = { a: string, ...H, - ...{c: string} } \ No newline at end of file diff --git a/test/unit/Types/output.txt b/test/unit/Types/output.txt index be4e50b..8feb73b 100644 --- a/test/unit/Types/output.txt +++ b/test/unit/Types/output.txt @@ -16,6 +16,4 @@ type I = { }; type J = { a: string; -} & H & { - c: string; -}; +} & H;