diff --git a/.circleci/config.yml b/.circleci/config.yml index 6cd46952..b1aea812 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -30,6 +30,23 @@ jobs: - packages/@postdfm/dfm2ast/node_modules key: v1-dependencies-{{ checksum "yarn.lock" }} + compile: + executor: node-executor + steps: + - checkout + - restore_cache: + keys: + - v1-dependencies-{{ checksum "yarn.lock" }} + - v1-dependencies- + + - run: yarn compile + + - persist_to_workspace: + root: packages + paths: + - ./postdfm/dist + - ./@postdfm/dfm2ast/dist + lint: executor: node-executor steps: @@ -39,9 +56,12 @@ jobs: - v1-dependencies-{{ checksum "yarn.lock" }} - v1-dependencies- + - attach_workspace: + at: ~/repo/packages + - run: yarn lint:check - compile: + format: executor: node-executor steps: - checkout @@ -50,13 +70,8 @@ jobs: - v1-dependencies-{{ checksum "yarn.lock" }} - v1-dependencies- - - run: yarn compile + - run: yarn format:check - - persist_to_workspace: - root: packages - paths: - - ./postdfm/dist - - ./@postdfm/dfm2ast/dist test: executor: node-executor steps: @@ -93,15 +108,18 @@ workflows: ci: jobs: - bootstrap - - lint: + - compile: requires: - bootstrap - - compile: + - lint: + requires: + - compile + - format: requires: - lint - test: requires: - - compile + - format - release: requires: - test diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..d3e19b1d --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "extends": [ + "eslint:recommended", + "plugin:node/recommended", + "plugin:jest/recommended", + "prettier" + ] +} diff --git a/.gitignore b/.gitignore index 0d43f731..61e20be9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ -dist/ - # Logs logs *.log @@ -81,6 +79,9 @@ typings/ # DynamoDB Local files .dynamodb/ +# js +dist/ + # jest-junit (custom location) test-results/ diff --git a/package.json b/package.json index 489bace3..224a4fd4 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,13 @@ "description": "Provides an API for easily transforming Delphi Forms", "scripts": { "bootstrap": "lerna bootstrap", - "prettier": "prettier --ignore-path .gitignore \"**/*.{js,json,ts}\"", - "lint:fix": "yarn run prettier --write", - "lint:check": "yarn run prettier --check", + "eslint": "eslint --ignore-path .gitignore \"**/*.js\"", + "tslint": "tslint \"**/*.ts\"", + "prettier": "prettier --ignore-path .gitignore \"**/*.{js,json,ts,yml}\"", + "lint:fix": "yarn eslint --fix && yarn tslint --fix", + "lint:check": "yarn eslint && yarn tslint", + "format:fix": "yarn prettier --write", + "format:check": "yarn prettier --check", "compile": "lerna run compile", "test": "jest", "release": "lerna exec --concurrency 1 -- semantic-release -e semantic-release-monorepo --tag-format='${LERNA_PACKAGE_NAME}-v\\${version}' --repositoryUrl ssh://git@github.com/spiltcoffee/postdfm.git" @@ -20,6 +24,10 @@ "@types/nearley": "^2.11.0", "commitlint": "^7.5.2", "cz-lerna-changelog": "^2.0.2", + "eslint": "^5.15.1", + "eslint-config-prettier": "^4.1.0", + "eslint-plugin-jest": "^22.3.0", + "eslint-plugin-node": "^8.0.1", "husky": "^1.3.1", "jest": "^24.0.0", "jest-junit": "^6.3.0", @@ -29,6 +37,8 @@ "prettier": "^1.16.4", "semantic-release": "~15.9.0", "semantic-release-monorepo": "^6.1.1", + "tslint": "^5.13.1", + "tslint-config-prettier": "^1.18.0", "typescript": "^3.3.3333" }, "greenkeeper": { @@ -45,7 +55,17 @@ } }, "lint-staged": { - "*.{js,json,ts,yml}": [ + "*.{json,yml}": [ + "prettier --ignore-path .gitignore --write", + "git add" + ], + "*.js": [ + "eslint --ignore-path .gitignore", + "prettier --ignore-path .gitignore --write", + "git add" + ], + "*.ts": [ + "tslint", "prettier --ignore-path .gitignore --write", "git add" ] diff --git a/packages/@postdfm/dfm2ast/src/ast.ts b/packages/@postdfm/dfm2ast/src/ast.ts deleted file mode 100644 index 211400a2..00000000 --- a/packages/@postdfm/dfm2ast/src/ast.ts +++ /dev/null @@ -1,153 +0,0 @@ -export enum ASTType { - String = "string", - HexString = "hexString", - Integer = "integer", - Double = "double", - Boolean = "boolean", - Qualified = "qualified", - Item = "item", - StringList = "stringList", - QualifiedList = "qualifiedList", - ItemList = "itemList", - Property = "property", - Object = "object" -} - -class ASTNode { - astType: ASTType; - constructor(astType: ASTType) { - this.astType = astType; - } -} - -class Value extends ASTNode { - value: T; - constructor(astType: ASTType, value: T) { - super(astType); - this.value = value; - } -} - -export class StringValue extends Value { - constructor(value: string) { - super(ASTType.String, value); - } -} - -export class HexStringValue extends Value { - constructor(value: string) { - super(ASTType.HexString, value); - } -} - -export class IntegerValue extends Value { - constructor(value: number) { - super(ASTType.Integer, value); - } -} - -export class DoubleValue extends Value { - constructor(value: number) { - super(ASTType.Double, value); - } -} - -export class BooleanValue extends Value { - constructor(value: boolean) { - super(ASTType.Boolean, value); - } -} - -export class QualifiedValue extends Value { - constructor(value: string) { - super(ASTType.Qualified, value); - } -} - -export class Item extends ASTNode { - properties: Property[]; - - constructor(properties: Property[]) { - super(ASTType.Item); - this.properties = properties; - } -} - -class List extends ASTNode { - values: T[]; - - constructor(astType: ASTType, values: T[]) { - super(astType); - this.values = values; - } -} - -export class QualifiedList extends List { - constructor(values: QualifiedValue[]) { - super(ASTType.QualifiedList, values); - } -} - -export class StringList extends List { - constructor(values: StringValue[]) { - super(ASTType.StringList, values); - } -} - -export class ItemList extends List { - constructor(values: Item[]) { - super(ASTType.ItemList, values); - } -} - -export class Property extends ASTNode { - name: string; - value: Value | List; - - constructor(name: string, value: Value | List) { - super(ASTType.Property); - this.name = name; - this.value = value; - } -} - -export enum ObjectKind { - Object = "object", - Inline = "inline", - Inherited = "inherited" -} - -export class FormObject extends ASTNode { - kind: ObjectKind; - name: string; - type: string; - order: number; - properties: Property[]; - children: FormObject[]; - - constructor( - kind: ObjectKind, - name: string, - type: string, - order: number, - properties?: Property[], - children?: FormObject[] - ) { - super(ASTType.Object); - this.kind = kind; - this.name = name; - this.type = type; - - if (order) { - this.order = order; - } - - if (properties) { - this.properties = properties; - } - - if (children) { - this.children = children; - } - } -} diff --git a/packages/@postdfm/dfm2ast/src/ast/astNode.ts b/packages/@postdfm/dfm2ast/src/ast/astNode.ts new file mode 100644 index 00000000..1bc42573 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/astNode.ts @@ -0,0 +1,8 @@ +import { ASTType } from "./astType"; + +export class ASTNode { + public astType: ASTType; + constructor(astType: ASTType) { + this.astType = astType; + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/astType.ts b/packages/@postdfm/dfm2ast/src/ast/astType.ts new file mode 100644 index 00000000..99074331 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/astType.ts @@ -0,0 +1,14 @@ +export enum ASTType { + String = "string", + HexString = "hexString", + Integer = "integer", + Double = "double", + Boolean = "boolean", + Qualified = "qualified", + Item = "item", + StringList = "stringList", + QualifiedList = "qualifiedList", + ItemList = "itemList", + Property = "property", + Object = "object" +} diff --git a/packages/@postdfm/dfm2ast/src/ast/formObject.ts b/packages/@postdfm/dfm2ast/src/ast/formObject.ts new file mode 100644 index 00000000..99212b86 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/formObject.ts @@ -0,0 +1,39 @@ +import { ASTNode } from "./astNode"; +import { ASTType } from "./astType"; +import { ObjectKind } from "./objectKind"; +import { Property } from "./property"; + +export class FormObject extends ASTNode { + public kind: ObjectKind; + public name: string; + public type: string; + public order: number; + public properties: Property[]; + public children: FormObject[]; + + constructor( + kind: ObjectKind, + name: string, + type: string, + order: number, + properties?: Property[], + children?: FormObject[] + ) { + super(ASTType.Object); + this.kind = kind; + this.name = name; + this.type = type; + + if (order) { + this.order = order; + } + + if (properties) { + this.properties = properties; + } + + if (children) { + this.children = children; + } + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/index.ts b/packages/@postdfm/dfm2ast/src/ast/index.ts new file mode 100644 index 00000000..ac1e120d --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/index.ts @@ -0,0 +1,23 @@ +export { ASTType } from "./astType"; +export { ASTNode } from "./astNode"; + +export { Value } from "./value/value"; +export { StringValue } from "./value/stringValue"; +export { HexStringValue } from "./value/hexStringValue"; +export { IntegerValue } from "./value/integerValue"; +export { DoubleValue } from "./value/doubleValue"; +export { BooleanValue } from "./value/booleanValue"; +export { QualifiedValue } from "./value/qualifiedValue"; + +export { Item } from "./item"; + +export { List } from "./list/list"; +export { QualifiedList } from "./list/qualifiedList"; +export { StringList } from "./list/stringList"; +export { ItemList } from "./list/itemList"; + +export { Property } from "./property"; + +export { ObjectKind } from "./objectKind"; + +export { FormObject } from "./formObject"; diff --git a/packages/@postdfm/dfm2ast/src/ast/item.ts b/packages/@postdfm/dfm2ast/src/ast/item.ts new file mode 100644 index 00000000..3fff4ffd --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/item.ts @@ -0,0 +1,12 @@ +import { ASTNode } from "./astNode"; +import { ASTType } from "./astType"; +import { Property } from "./property"; + +export class Item extends ASTNode { + public properties: Property[]; + + constructor(properties: Property[]) { + super(ASTType.Item); + this.properties = properties; + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/list/itemList.ts b/packages/@postdfm/dfm2ast/src/ast/list/itemList.ts new file mode 100644 index 00000000..4de76b30 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/list/itemList.ts @@ -0,0 +1,9 @@ +import { ASTType } from "../astType"; +import { Item } from "../item"; +import { List } from "./list"; + +export class ItemList extends List { + constructor(values: Item[]) { + super(ASTType.ItemList, values); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/list/list.ts b/packages/@postdfm/dfm2ast/src/ast/list/list.ts new file mode 100644 index 00000000..733f6ce2 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/list/list.ts @@ -0,0 +1,11 @@ +import { ASTNode } from "../astNode"; +import { ASTType } from "../astType"; + +export class List extends ASTNode { + public values: T[]; + + constructor(astType: ASTType, values: T[]) { + super(astType); + this.values = values; + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/list/qualifiedList.ts b/packages/@postdfm/dfm2ast/src/ast/list/qualifiedList.ts new file mode 100644 index 00000000..2292c0ef --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/list/qualifiedList.ts @@ -0,0 +1,9 @@ +import { ASTType } from "../astType"; +import { QualifiedValue } from "../value/qualifiedValue"; +import { List } from "./list"; + +export class QualifiedList extends List { + constructor(values: QualifiedValue[]) { + super(ASTType.QualifiedList, values); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/list/stringList.ts b/packages/@postdfm/dfm2ast/src/ast/list/stringList.ts new file mode 100644 index 00000000..1deb56d3 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/list/stringList.ts @@ -0,0 +1,9 @@ +import { ASTType } from "../astType"; +import { StringValue } from "../value/stringValue"; +import { List } from "./list"; + +export class StringList extends List { + constructor(values: StringValue[]) { + super(ASTType.StringList, values); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/objectKind.ts b/packages/@postdfm/dfm2ast/src/ast/objectKind.ts new file mode 100644 index 00000000..2b8be5be --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/objectKind.ts @@ -0,0 +1,5 @@ +export enum ObjectKind { + Object = "object", + Inline = "inline", + Inherited = "inherited" +} diff --git a/packages/@postdfm/dfm2ast/src/ast/property.ts b/packages/@postdfm/dfm2ast/src/ast/property.ts new file mode 100644 index 00000000..846dde59 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/property.ts @@ -0,0 +1,15 @@ +import { ASTNode } from "./astNode"; +import { ASTType } from "./astType"; +import { List } from "./list/list"; +import { Value } from "./value/value"; + +export class Property extends ASTNode { + public name: string; + public value: Value | List; + + constructor(name: string, value: Value | List) { + super(ASTType.Property); + this.name = name; + this.value = value; + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/value/booleanValue.ts b/packages/@postdfm/dfm2ast/src/ast/value/booleanValue.ts new file mode 100644 index 00000000..ef352d44 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/value/booleanValue.ts @@ -0,0 +1,8 @@ +import { ASTType } from "../astType"; +import { Value } from "./value"; + +export class BooleanValue extends Value { + constructor(value: boolean) { + super(ASTType.Boolean, value); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/value/doubleValue.ts b/packages/@postdfm/dfm2ast/src/ast/value/doubleValue.ts new file mode 100644 index 00000000..63b5e5cd --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/value/doubleValue.ts @@ -0,0 +1,8 @@ +import { ASTType } from "../astType"; +import { Value } from "./value"; + +export class DoubleValue extends Value { + constructor(value: number) { + super(ASTType.Double, value); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/value/hexStringValue.ts b/packages/@postdfm/dfm2ast/src/ast/value/hexStringValue.ts new file mode 100644 index 00000000..17828342 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/value/hexStringValue.ts @@ -0,0 +1,8 @@ +import { ASTType } from "../astType"; +import { Value } from "./value"; + +export class HexStringValue extends Value { + constructor(value: string) { + super(ASTType.HexString, value); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/value/integerValue.ts b/packages/@postdfm/dfm2ast/src/ast/value/integerValue.ts new file mode 100644 index 00000000..19a005ac --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/value/integerValue.ts @@ -0,0 +1,8 @@ +import { ASTType } from "../astType"; +import { Value } from "./value"; + +export class IntegerValue extends Value { + constructor(value: number) { + super(ASTType.Integer, value); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/value/qualifiedValue.ts b/packages/@postdfm/dfm2ast/src/ast/value/qualifiedValue.ts new file mode 100644 index 00000000..8538500a --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/value/qualifiedValue.ts @@ -0,0 +1,8 @@ +import { ASTType } from "../astType"; +import { Value } from "./value"; + +export class QualifiedValue extends Value { + constructor(value: string) { + super(ASTType.Qualified, value); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/value/stringValue.ts b/packages/@postdfm/dfm2ast/src/ast/value/stringValue.ts new file mode 100644 index 00000000..fff015f8 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/value/stringValue.ts @@ -0,0 +1,8 @@ +import { ASTType } from "../astType"; +import { Value } from "./value"; + +export class StringValue extends Value { + constructor(value: string) { + super(ASTType.String, value); + } +} diff --git a/packages/@postdfm/dfm2ast/src/ast/value/value.ts b/packages/@postdfm/dfm2ast/src/ast/value/value.ts new file mode 100644 index 00000000..7171d4b8 --- /dev/null +++ b/packages/@postdfm/dfm2ast/src/ast/value/value.ts @@ -0,0 +1,10 @@ +import { ASTNode } from "../astNode"; +import { ASTType } from "../astType"; + +export class Value extends ASTNode { + public value: T; + constructor(astType: ASTType, value: T) { + super(astType); + this.value = value; + } +} diff --git a/packages/@postdfm/dfm2ast/src/parser.ts b/packages/@postdfm/dfm2ast/src/parser.ts index 1940554f..ad28c0af 100644 --- a/packages/@postdfm/dfm2ast/src/parser.ts +++ b/packages/@postdfm/dfm2ast/src/parser.ts @@ -1,6 +1,6 @@ import * as nearley from "nearley"; -import * as grammar from "./grammar"; import * as AST from "./ast"; +import * as grammar from "./grammar"; export function parse(dfm: string): AST.FormObject { const parser = new nearley.Parser(nearley.Grammar.fromCompiled(grammar)); diff --git a/tslint.json b/tslint.json new file mode 100644 index 00000000..fbb40d8a --- /dev/null +++ b/tslint.json @@ -0,0 +1,10 @@ +{ + "extends": ["tslint:recommended", "tslint-config-prettier"], + "linterOptions": { + "exclude": [ + "**/node_modules/**", + "**/dist/**", + "packages/@postdfm/dfm2ast/src/grammar.ts" + ] + } +} diff --git a/yarn.lock b/yarn.lock index 0d8b8a37..6db3416e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1109,6 +1109,11 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + acorn-walk@^6.0.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" @@ -1119,7 +1124,7 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1: +acorn@^6.0.1, acorn@^6.0.7: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== @@ -1164,6 +1169,16 @@ ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.9.1: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -1196,6 +1211,11 @@ ansi-regex@^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-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1394,6 +1414,15 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +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-jest@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190" @@ -1572,7 +1601,7 @@ 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.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" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= @@ -1757,7 +1786,7 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.3.2, 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== @@ -1950,7 +1979,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.14.1, commander@^2.19.0, commander@^2.9.0: +commander@^2.12.1, commander@^2.14.1, commander@^2.19.0, commander@^2.9.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== @@ -2202,7 +2231,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2467,6 +2496,11 @@ diff-sequences@^24.0.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.0.0.tgz#cdf8e27ed20d8b8d3caccb4e0c0d8fe31a173013" integrity sha512-46OkIuVGBBnrC0soO/4LHu5LHGHx0uhP65OVz8XOrAJpqiCB2aVIuESvjI1F9oqebuvY8lekS1pt6TN7vt7qsw== +diff@^3.2.0: + 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" @@ -2487,6 +2521,13 @@ discontinuous-range@1.0.0: resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -2558,6 +2599,11 @@ elegant-spinner@^1.0.1: resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -2649,6 +2695,107 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" +eslint-config-prettier@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.1.0.tgz#181364895899fff9fd3605fecb5c4f20e7d5f395" + integrity sha512-zILwX9/Ocz4SV2vX7ox85AsrAgXV3f2o2gpIicdMIOra48WYqgUnWNH/cR/iHtmD2Vb3dLSC3LiEJnS05Gkw7w== + dependencies: + get-stdin "^6.0.0" + +eslint-plugin-es@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" + integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== + dependencies: + eslint-utils "^1.3.0" + regexpp "^2.0.1" + +eslint-plugin-jest@^22.3.0: + version "22.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.3.0.tgz#a10f10dedfc92def774ec9bb5bfbd2fb8e1c96d2" + integrity sha512-P1mYVRNlOEoO5T9yTqOfucjOYf1ktmJ26NjwjH8sxpCFQa6IhBGr5TpKl3hcAAT29hOsRJVuMWmTsHoUVo9FoA== + +eslint-plugin-node@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz#55ae3560022863d141fa7a11799532340a685964" + integrity sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w== + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^5.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + +eslint-scope@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.2.tgz#5f10cd6cabb1965bf479fa65745673439e21cb0e" + integrity sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.0, eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@^5.15.1: + version "5.15.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.15.1.tgz#8266b089fd5391e0009a047050795b1d73664524" + integrity sha512-NTcm6vQ+PTgN3UBsALw5BMhgO6i5EpIjQF/Xb5tIh3sk9QhrFafujUOczGz4J24JBlzWclSB9Vmx8d+9Z6bFCg== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.2" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.12.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -2659,7 +2806,21 @@ esprima@^4.0.0, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estraverse@^4.2.0: +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= @@ -2878,6 +3039,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + fileset@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" @@ -2943,6 +3111,20 @@ find-versions@^2.0.0: array-uniq "^1.0.0" semver-regex "^1.0.0" +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -3061,6 +3243,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + g-status@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97" @@ -3287,7 +3474,7 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" -globals@^11.1.0: +globals@^11.1.0, globals@^11.7.0: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== @@ -3545,11 +3732,16 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.3: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.0.2: + version "5.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.0.5.tgz#c663c548d6ce186fb33616a8ccb5d46e56bdbbf9" + integrity sha512-kOC8IUb8HSDMVcYrDVezCxpJkzSQWTAzf3olpKM6o9rM5zpojx23O0Fl8Wr4+qJ6ZbPEHqf1fdwev/DS7v7pmA== + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -3674,7 +3866,7 @@ inquirer@3.0.3: strip-ansi "^3.0.0" through "^2.3.6" -inquirer@^6.2.0: +inquirer@^6.2.0, inquirer@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== @@ -4491,7 +4683,12 @@ jest@^24.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.12.0, js-yaml@^3.9.0: +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-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: 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== @@ -4556,6 +4753,11 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + json-stringify-safe@^5.0.1, 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" @@ -4678,7 +4880,7 @@ leven@^2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= -levn@~0.3.0: +levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -5979,7 +6181,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1: +optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= @@ -6475,6 +6677,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1, promise-inflight@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -6846,6 +7053,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + registry-auth-token@^3.0.1, registry-auth-token@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" @@ -6986,7 +7198,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== @@ -7016,7 +7228,7 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: +rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -7284,6 +7496,15 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + slide@^1.1.3, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -7612,6 +7833,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -7659,6 +7889,13 @@ strip-ansi@^5.0.0: dependencies: ansi-regex "^4.0.0" +strip-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.1.0.tgz#55aaa54e33b4c0649a7338a43437b1887d153ec4" + integrity sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg== + dependencies: + ansi-regex "^4.1.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -7688,7 +7925,7 @@ strip-indent@^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: +strip-json-comments@^2.0.1, 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= @@ -7744,6 +7981,16 @@ synchronous-promise@^2.0.5: resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.6.tgz#de76e0ea2b3558c1e673942e47e714a930fa64aa" integrity sha512-TyOuWLwkmtPL49LHCX1caIwHjRzcVd62+GF6h8W/jHOeZUFHpnd2XJDVuUlaTaLPH1nuu2M69mfHr5XbQJnf/g== +table@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" + integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== + dependencies: + ajv "^6.9.1" + lodash "^4.17.11" + slice-ansi "^2.1.0" + string-width "^3.0.0" + tar@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -7813,7 +8060,7 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-table@~0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -7941,11 +8188,42 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -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-config-prettier@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" + integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== + +tslint@^5.13.1: + version "5.13.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.13.1.tgz#fbc0541c425647a33cd9108ce4fd4cd18d7904ed" + integrity sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ== + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + 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" + mkdirp "^0.5.1" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.27.2" + +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: + tslib "^1.8.1" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -8354,6 +8632,13 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"