diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..fc84a655 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +/src/types/** +/lib/** diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..a609a445 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,31 @@ +module.exports = { + parser: '@typescript-eslint/parser', + extends: ['plugin:node/recommended', 'plugin:prettier/recommended'], + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module' + }, + settings: { + node: { + tryExtensions: ['.js', '.json', '.ts', '.d.ts'] + } + }, + rules: { + 'no-process-exit': 'off', // to investigate if we should throw an error instead of process.exit() + 'node/no-unsupported-features/es-builtins': 'off', + 'node/no-unsupported-features/es-syntax': 'off' + }, + overrides: [ + { + files: ['*.ts'], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'prettier/@typescript-eslint' + ], + rules: { + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-namespace': 'off' // maybe we should consider enabling it in the future + } + } + ] +}; diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fc50df2f..1df6f379 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,17 +42,18 @@ jobs: os: - ubuntu-latest - macos-latest - # - windows-latest # to be uncommented when we drop multi-process mode - node: + - windows-latest + node: + - '6' - '8' - '10' - '12' packages: - - webpack@^5.0.0-alpha.5 ts-loader@^5.0.0 vue-loader@^15.2.4 + - webpack@5.0.0-alpha.5 ts-loader@^5.0.0 vue-loader@^15.2.4 - webpack@^4.0.0 ts-loader@^5.0.0 vue-loader@^15.2.4 - - webpack@^3.10.0 ts-loader@^3.4.0 vue-loader@^13.5.0 - - webpack@^2.7.0 ts-loader@^3.4.0 vue-loader@^13.5.0 - + exclude: + - node: '6' + packages: 'webpack@5.0.0-alpha.5 ts-loader@^5.0.0 vue-loader@^15.2.4' steps: - uses: actions/checkout@v1 @@ -73,10 +74,10 @@ jobs: ${{ runner.os }}-node-${{ matrix.node }}-yarn- - name: Install dependencies - run: yarn install --frozen-lockfile - + run: yarn install --frozen-lockfile --ignore-engines + - name: Replace dependencies - run: yarn add ${{ matrix.packages }} -D + run: yarn add ${{ matrix.packages }} -D --ignore-engines - name: Download build artifact uses: actions/download-artifact@v1 @@ -104,24 +105,10 @@ jobs: with: node-version: 12 - - name: Get yarn cache - id: yarn-cache - run: echo "::set-output name=dir::$(yarn cache dir)" - - - uses: actions/cache@v1 - with: - path: ${{ steps.yarn-cache.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - name: Install dependencies - run: yarn install --frozen-lockfile - - name: Download build artifact uses: actions/download-artifact@v1 with: name: lib - name: Release - run: yarn exec semantic-release + run: npx semantic-release@16.0.2 diff --git a/README.md b/README.md index eb81c03b..c3dc03ee 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,9 @@ ## Installation -This plugin requires minimum **webpack 2.3**, **TypeScript 2.1** and optionally **ESLint 6.0.0** or **TSLint 4.0** +This plugin requires minimum **Node.js 6.11.5**, **webpack 4**, **TypeScript 2.1** and optionally **ESLint 6** (which itself requires minimum **Node.js 8.10.0**) + +If you depend on **webpack 2**, **webpack 3**, or **tslint 4**, please use [older version](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/tree/v3.1.1) of the plugin. ```sh # with npm @@ -56,7 +58,7 @@ add `CheckerPlugin` and delegate checker to the separate process. The problem wi it was a lot slower than [ts-loader](https://github.com/TypeStrong/ts-loader) on an incremental build (~20s vs ~3s). Secondly, we used [tslint](https://palantir.github.io/tslint) and we wanted to run this, along with type checker, in a separate process. This is why this plugin was created. To provide better performance, the plugin reuses Abstract Syntax Trees between compilations and shares -these trees with TSLint. It can be scaled with a multi-process mode to utilize maximum CPU power. +these trees with TSLint. ## Modules resolution @@ -98,17 +100,6 @@ module.exports = { There's a good explanation on setting up TypeScript ESLint support by Robert Cooper [here](https://dev.to/robertcoopercode/using-eslint-and-prettier-in-a-typescript-project-53jb). -## TSLint - -*[TSLint is being replaced by ESLint](https://medium.com/palantir/tslint-in-2019-1a144c2317a9). -https://eslint.org/blog/2019/01/future-typescript-eslint. As a consequence, support for TSLint in fork-ts-checker-webpack-plugin will be deprecated and removed in future versions of the plugin.* - -If you have installed [tslint](https://palantir.github.io/tslint), you can enable it by setting `tslint: true` or -`tslint: './path/to/tslint.json'`. We recommend changing `defaultSeverity` to a `"warning"` in `tslint.json` file. -It helps to distinguish lints from TypeScript's diagnostics. - - - ## Options - **tsconfig** `string`: @@ -124,37 +115,7 @@ It helps to distinguish lints from TypeScript's diagnostics. - **eslintOptions** `object`: - Options that can be used to initialise ESLint. See https://eslint.org/docs/1.0.0/developer-guide/nodejs-api#cliengine - -- **tslint** `string | true | undefined`: - - - If `string`, path to _tslint.json_ file to check source files against. - - If `true`, path to `tslint.json` file will be computed with respect to currently checked file, just like TSLint - CLI would do. Suppose you have a project: - - ``` - ./ - tslint.json - - src/ - file.ts - anotherFile.ts - - lib/ - tslint.json - someHelperFile.ts - ``` - - In such a case `src/file.ts` and `src/anotherFile.ts` would be checked against root `tslint.json`, and - `src/lib/someHelperFile.ts` would be checked against `src/lib/tslint.json`. - - Default: `undefined`. - -- **tslintAutoFix** `boolean`: - Passes on `--fix` flag while running `tslint` to auto fix linting errors. Default: false. - -- **watch** `string | string[]`: - Directories or files to watch by service. Not necessary but improves performance (reduces number of `fs.stat` calls). Not applicable when `useTypescriptIncrementalApi` is `true`, in which case watching is handled automatically. - + - **async** `boolean`: True by default - `async: false` can block webpack's emit to wait for type checker/linter and to add errors to the webpack's compilation. We recommend to set this to `false` in projects where type checking is faster than webpack's build - it's better for integration with other plugins. Another scenario where you might want to set this to `false` is if you use the `overlay` functionality of `webpack-dev-server`. @@ -163,7 +124,7 @@ It helps to distinguish lints from TypeScript's diagnostics. List of TypeScript diagnostic codes to ignore. - **ignoreLints** `string[]`: - List of tslint rule names to ignore. + List of eslint rule names to ignore. - **ignoreLintWarnings** `boolean`: If true, will ignore all lint warnings. @@ -178,15 +139,12 @@ new ForkTsCheckerWebpackPlugin({ }); ``` -- **colors** `boolean`: - If `false`, disables built-in colors in logger messages. Default: `true`. - - **logger** `object`: Logger instance. It should be object that implements method: `error`, `warn`, `info`. Default: `console`. -- **formatter** `'default' | 'codeframe' | ((message: NormalizedMessage, useColors: boolean) => string)`: - Formatter for diagnostics and lints. By default uses `default` formatter. You can also pass your own formatter as a function - (see `src/NormalizedMessage.js` and `src/formatter/` for api reference). +- **formatter** `'default' | 'codeframe' | (issue: Issue) => string)`: + Formatter for issues and lints. By default uses `default` formatter. You can also pass your own formatter as a function + (see `src/issue/` and `src/formatter/` for API reference). - **formatterOptions** `object`: Options passed to formatters (currently only `codeframe` - see [available options](https://www.npmjs.com/package/babel-code-frame#options)) @@ -200,24 +158,17 @@ new ForkTsCheckerWebpackPlugin({ - **memoryLimit** `number`: Memory limit for service process in MB. If service exits with allocation failed error, increase this number. Default: `2048`. -- **workers** `number`: - You can split type checking to a few workers to speed-up increment build. **Be careful** - if you don't want to increase build time, you - should keep free 1 core for _build_ and 1 core for a _system_ _(for example system with 4 CPUs should use max 2 workers)_. Second thing - - node doesn't share memory between workers - keep in mind that memory usage will increase. Be aware that in some scenarios increasing workers - number **can increase checking time**. Default: `ForkTsCheckerWebpackPlugin.ONE_CPU`. - - **vue** `boolean | { enabled: boolean, compiler: string }`: If `true` or `enabled: true`, the linter and compiler will process VueJs single-file-component (.vue) files. See the [Vue section](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin#vue) further down for information on how to correctly setup your project. - **useTypescriptIncrementalApi** `boolean`: - If true, the plugin will use incremental compilation API introduced in TypeScript 2.7. In this mode you can only have 1 - worker, but if the changes in your code are small (like you normally have when you work in 'watch' mode), the compilation - may be much faster, even compared to multi-threaded compilation. Defaults to `true` when working with TypeScript 3+ and `false` when below 3. The default can be overridden by directly specifying a value. + If true, the plugin will use incremental compilation API introduced in TypeScript 2.7. Defaults to `true` when working with TypeScript 3+ and `false` when below 3. The default can be overridden by directly specifying a value. + Don't use it together with VueJs enabled - it's not supported yet. - **measureCompilationTime** `boolean`: If true, the plugin will measure the time spent inside the compilation code. This may be useful to compare modes, - especially if there are other loaders/plugins involved in the compilation. **requires node 8+** + especially if there are other loaders/plugins involved in the compilation. **requires Node.js >= 8.5.0** - **typescript** `string`: If supplied this is a custom path where `typescript` can be found. Defaults to `require.resolve('typescript')`. @@ -266,13 +217,6 @@ new ForkTsCheckerWebpackPlugin({ -### Pre-computed consts: - -- `ForkTsCheckerWebpackPlugin.ONE_CPU` - always use one CPU -- `ForkTsCheckerWebpackPlugin.ALL_CPUS` - always use all CPUs (will increase build time) -- `ForkTsCheckerWebpackPlugin.ONE_CPU_FREE` - leave only one CPU for build (probably will increase build time) -- `ForkTsCheckerWebpackPlugin.TWO_CPUS_FREE` - **recommended** - leave two CPUs free (one for build, one for system) - ## Different behaviour in watch mode If you turn on [webpacks watch mode](https://webpack.js.org/configuration/watch/#watch) the `fork-ts-checker-notifier-webpack-plugin` will take care of logging type errors, _not_ webpack itself. That means if you set `silent: true` you won't see type errors in your console in watch mode. @@ -293,26 +237,21 @@ We hope this will be resolved in future; the issue can be tracked [here](https:/ This plugin provides some custom webpack hooks (all are sync): -| Event name | Hook Access Key | Description | Params | -| --------------------------------------- | -------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | -| `fork-ts-checker-cancel` | `cancel` | Cancellation has been requested | `cancellationToken` | -| `fork-ts-checker-waiting` | `waiting` | Waiting for results | `hasTsLint` | -| `fork-ts-checker-service-before-start` | `serviceBeforeStart` | Async plugin that can be used for delaying `fork-ts-checker-service-start` | - | -| `fork-ts-checker-service-start` | `serviceStart` | Service will be started | `tsconfigPath`, `tslintPath`, `watchPaths`, `workersNumber`, `memoryLimit` | -| `fork-ts-checker-service-start-error` | `serviceStartError` | Cannot start service | `error` | -| `fork-ts-checker-service-out-of-memory` | `serviceOutOfMemory` | Service is out of memory | - | -| `fork-ts-checker-receive` | `receive` | Plugin receives diagnostics and lints from service | `diagnostics`, `lints` | -| `fork-ts-checker-emit` | `emit` | Service will add errors and warnings to webpack compilation ('build' mode) | `diagnostics`, `lints`, `elapsed` | -| `fork-ts-checker-done` | `done` | Service finished type checking and webpack finished compilation ('watch' mode) | `diagnostics`, `lints`, `elapsed` | - -The **Event name** is there for backward compatibility with webpack 2/3. Regardless -of the version of webpack (2, 3 or 4) you are using, we will always access plugin hooks with **Hook Access Keys** as -described below. +| Hook Access Key | Description | Params | +| -------------------- | ------------------------------------------------------------------------------ | --------------------------------- | +| `cancel` | Cancellation has been requested | `cancellationToken` | +| `waiting` | Waiting for results | - | +| `serviceBeforeStart` | Async plugin that can be used for delaying `fork-ts-checker-service-start` | - | +| `serviceStart` | Service will be started | `tsconfigPath`, `memoryLimit` | +| `serviceStartError` | Cannot start service | `error` | +| `serviceOutOfMemory` | Service is out of memory | - | +| `receive` | Plugin receives diagnostics and lints from service | `diagnostics`, `lints` | +| `emit` | Service will add errors and warnings to webpack compilation ('build' mode) | `diagnostics`, `lints`, `elapsed` | +| `done` | Service finished type checking and webpack finished compilation ('watch' mode) | `diagnostics`, `lints`, `elapsed` | ### Accessing plugin hooks -All plugin hooks are compatible with both [webpack](https://webpack.js.org) version -4 and version 2. To access plugin hooks and tap into the event, we need to use +To access plugin hooks and tap into the event, we need to use the `getCompilerHooks` static method. When we call this method with a [webpack compiler instance](https://webpack.js.org/api/node/), it returns the series of [tapable](https://github.com/webpack/tapable) hooks where you can pass in your callbacks. @@ -404,14 +343,12 @@ if ('compilers' in compiler) { ```js new ForkTsCheckerWebpackPlugin({ - tslint: true, vue: true }); ``` Optionally change default [vue-template-compiler](https://github.com/vuejs/vue/tree/dev/packages/vue-template-compiler) to [nativescript-vue-template-compiler](https://github.com/nativescript-vue/nativescript-vue/tree/master/packages/nativescript-vue-template-compiler) if you use [nativescript-vue](https://github.com/nativescript-vue/nativescript-vue) ``` new ForkTsCheckerWebpackPlugin({ - tslint: true, vue: { enabled: true, compiler: 'nativescript-vue-template-compiler' } }); ``` @@ -446,16 +383,7 @@ new ForkTsCheckerWebpackPlugin({ }, ``` -4. Add rules to your `tslint.json` and they will be applied to Vue files. For example, you could apply the Standard JS rules [tslint-config-standard](https://github.com/blakeembrey/tslint-config-standard) like this: - -```json -{ - "defaultSeverity": "error", - "extends": ["tslint-config-standard"] -} -``` - -5. Ensure your `tsconfig.json` includes .vue files: +4. Ensure your `tsconfig.json` includes .vue files: ```js // tsconfig.json @@ -470,7 +398,7 @@ new ForkTsCheckerWebpackPlugin({ } ``` -6. It accepts any wildcard in your TypeScript configuration: +5. It accepts any wildcard in your TypeScript configuration: ```js // tsconfig.json @@ -495,7 +423,7 @@ new ForkTsCheckerWebpackPlugin({ import Hello from '@/components/hello.vue' ``` -7. If you are working in **VSCode**, you can get extensions [Vetur](https://marketplace.visualstudio.com/items?itemName=octref.vetur) and [TSLint Vue](https://marketplace.visualstudio.com/items?itemName=prograhammer.tslint-vue) to complete the developer workflow. +6. If you are working in **VSCode**, you can get the [Vetur](https://marketplace.visualstudio.com/items?itemName=octref.vetur) extension to complete the developer workflow. ## Credits diff --git a/jest.config.js b/jest.config.js index 72abaabe..83d20440 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,188 +1,5 @@ -// For a detailed explanation regarding each configuration property, visit: -// https://jestjs.io/docs/en/configuration.html - -const path = require('path'); - module.exports = { - // All imported modules in your tests should be mocked automatically - // automock: false, - - // Stop running tests after `n` failures - // bail: 0, - - // Respect "browser" field in package.json when resolving modules - // browser: false, - - // The directory where Jest should store its cached dependency information - // cacheDirectory: "/tmp/jest_rs", - - // Automatically clear mock calls and instances between every test - clearMocks: true, - - // Indicates whether the coverage information should be collected while executing the test - // collectCoverage: false, - - // An array of glob patterns indicating a set of files for which coverage information should be collected - // collectCoverageFrom: null, - - // The directory where Jest should output its coverage files - coverageDirectory: 'coverage', - - // An array of regexp pattern strings used to skip coverage collection - // coveragePathIgnorePatterns: [ - // "/node_modules/" - // ], - - // A list of reporter names that Jest uses when writing coverage reports - // coverageReporters: [ - // "json", - // "text", - // "lcov", - // "clover" - // ], - - // An object that configures minimum threshold enforcement for coverage results - // coverageThreshold: null, - - // A path to a custom dependency extractor - // dependencyExtractor: null, - - // Make calling deprecated APIs throw helpful error messages - // errorOnDeprecated: false, - - // Force coverage collection from ignored files using an array of glob patterns - // forceCoverageMatch: [], - - // A path to a module which exports an async function that is triggered once before all test suites - // globalSetup: null, - - // A path to a module which exports an async function that is triggered once after all test suites - // globalTeardown: null, - - // A set of global variables that need to be available in all test environments - // globals: {}, - - // An array of directory names to be searched recursively up from the requiring module's location - // moduleDirectories: [ - // "node_modules" - // ], - - // An array of file extensions your modules use - // moduleFileExtensions: [ - // "js", - // "json", - // "jsx", - // "ts", - // "tsx", - // "node" - // ], - - // A map from regular expressions to module names that allow to stub out resources with a single module - // moduleNameMapper: {}, - - // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader - // modulePathIgnorePatterns: [], - - // Activates notifications for test results - // notify: false, - - // An enum that specifies notification mode. Requires { notify: true } - // notifyMode: "failure-change", - - // A preset that is used as a base for Jest's configuration - // preset: 'ts-jest', - - // Run tests from one or more projects - // projects: null, - - // Use this configuration option to add custom reporters to Jest - // reporters: undefined, - - // Automatically reset mock state between every test - // resetMocks: false, - - // Reset the module registry before running each individual test - // resetModules: false, - - // A path to a custom resolver - // resolver: null, - - // Automatically restore mock state between every test - // restoreMocks: false, - - // The root directory that Jest should scan for tests and modules within - // rootDir: null, - - // A list of paths to directories that Jest should use to search for files in - // roots: [ - // "" - // ], - - // Allows you to use a custom runner instead of Jest's default test runner - // runner: "jest-runner", - - // The paths to modules that run some code to configure or set up the testing environment before each test - // setupFiles: [], - - // A list of paths to modules that run some code to configure or set up the testing framework before each test - setupFilesAfterEnv: ['./test/setupTestFramework.ts'], - - // A list of paths to snapshot serializer modules Jest should use for snapshot testing - // snapshotSerializers: [], - - // The test environment that will be used for testing + preset: 'ts-jest', testEnvironment: 'node', - - // Options that will be passed to the testEnvironment - // testEnvironmentOptions: {}, - - // Adds a location field to test results - // testLocationInResults: false, - - // The glob patterns Jest uses to detect test files - // testMatch: [ - // "**/__tests__/**/*.[jt]s?(x)", - // "**/?(*.)+(spec|test).[tj]s?(x)" - // ], - testMatch: ['**/?(*.)+(spec).[tj]s?(x)'] - - // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped - // testPathIgnorePatterns: [ - // "/node_modules/" - // ], - - // The regexp pattern or array of patterns that Jest uses to detect test files - // testRegex: [], - - // This option allows the use of a custom results processor - // testResultsProcessor: null, - - // This option allows use of a custom test runner - // testRunner: "jasmine2", - - // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href - // testURL: "http://localhost", - - // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" - // timers: "real", - - // A map from regular expressions to paths to transformers - // transform: null, - - // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - // transformIgnorePatterns: [ - // "/node_modules/" - // ], - - // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them - // unmockedModulePathPatterns: undefined, - - // Indicates whether each individual test should be reported during the run - // verbose: null, - - // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode - // watchPathIgnorePatterns: [], - - // Whether to use watchman for file crawling - // watchman: true, + setupFilesAfterEnv: ['./test/setup.ts'] }; diff --git a/package.json b/package.json index b911f9b5..06928326 100644 --- a/package.json +++ b/package.json @@ -37,20 +37,16 @@ "types": "lib/index.d.ts", "scripts": { "build": "rimraf lib && tsc --version && tsc --project \"./src\"", - "lint": "tslint --project src/tsconfig.json && eslint ./test", - "lint:fix": "tslint --project src/tsconfig.json --fix && eslint ./test --fix", + "lint": "eslint ./src ./test --ext .ts --ext .js --ignore-pattern '/test/fixtures/**' --ignore-pattern '/test/tmp/**'", "test": "yarn build && yarn test:unit && yarn test:integration", - "test:coverage": "rimraf coverage && jest --coverage && rimraf tmp", - "test:integration": "jest integration && rimraf tmp", "test:unit": "jest unit", - "test:watch": "jest unit --watch", - "watch": "tsc --version && tsc --project \"./src\" --watch", - "precommit": "lint-staged && yarn build", + "test:integration": "jest integration && rimraf tmp", + "precommit": "lint-staged && yarn build && yarn test:unit", "commit": "./node_modules/.bin/git-cz" }, "husky": { "hooks": { - "pre-commit": "lint-staged && yarn build", + "pre-commit": "lint-staged && yarn build && yarn test:unit", "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } }, @@ -77,25 +73,9 @@ "path": "cz-conventional-changelog" } }, - "release": { - "branches": [ - "master", - { - "name": "beta", - "prerelease": true - } - ], - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - "@semantic-release/npm", - "@semantic-release/github" - ] - }, "dependencies": { "babel-code-frame": "^6.22.0", "chalk": "^2.4.1", - "chokidar": "^3.3.0", "micromatch": "^3.1.10", "minimatch": "^3.0.4", "semver": "^5.6.0", @@ -103,31 +83,30 @@ "worker-rpc": "^0.1.0" }, "devDependencies": { - "@babel/core": "^7.7.4", - "@babel/preset-env": "^7.4.4", - "@babel/preset-typescript": "^7.3.3", "@commitlint/config-conventional": "^7.5.0", "@types/babel-code-frame": "^6.20.1", - "@types/chokidar": "^2.1.3", "@types/eslint": "^4.16.6", "@types/jest": "^24.0.11", "@types/lodash": "^4.14.134", "@types/micromatch": "^3.1.0", "@types/minimatch": "^3.0.1", + "@types/mock-fs": "^4.10.0", "@types/mock-require": "^2.0.0", "@types/node": "^11.0.0", "@types/rimraf": "^2.0.2", "@types/semver": "^5.5.0", "@types/webpack": "^4.4.19", - "@typescript-eslint/eslint-plugin": "^1.11.0", - "@typescript-eslint/parser": "^1.11.0", + "@typescript-eslint/eslint-plugin": "^2.12.0", + "@typescript-eslint/parser": "^2.12.0", "commitlint": "^7.5.2", "copy-dir": "^0.4.0", "css-loader": "0.28.11", - "eslint": "^6.0.0", + "eslint": "^6.8.0", + "eslint-config-prettier": "^6.7.0", + "eslint-plugin-node": "^10.0.0", + "eslint-plugin-prettier": "^3.1.2", "git-cz": "^3.0.1", "husky": "^1.1.4", - "istanbul": "^0.4.5", "jest": "^24.7.1", "lint-staged": "^8.0.5", "lodash": "^4.17.11", @@ -135,18 +114,16 @@ "mock-require": "^3.0.2", "nativescript-vue-template-compiler": "^2.4.0", "prettier": "^1.14.3", - "rimraf": "^2.5.4", - "semantic-release": "^16.0.0-beta.18", + "rimraf": "^3.0.0", + "ts-jest": "^24.2.0", "ts-loader": "^5.0.0", - "tslint": "^5.11.0", - "tslint-config-prettier": "^1.16.0", "typescript": "^3.0.1", "unixify": "^1.0.0", "vue": "^2.5.16", "vue-class-component": "^6.1.1", "vue-loader": "^15.2.4", "vue-template-compiler": "^2.5.16", - "webpack": "^5.0.0-alpha.5" + "webpack": "^4.0.0" }, "engines": { "node": ">=6.11.5", diff --git a/release.config.js b/release.config.js new file mode 100644 index 00000000..b65123d8 --- /dev/null +++ b/release.config.js @@ -0,0 +1,15 @@ +module.exports = { + branches: [ + 'master', + { + name: 'beta', + prerelease: true + } + ], + plugins: [ + '@semantic-release/commit-analyzer', + '@semantic-release/release-notes-generator', + '@semantic-release/npm', + '@semantic-release/github' + ] +}; diff --git a/src/.eslintrc.js b/src/.eslintrc.js deleted file mode 100644 index 081feb2b..00000000 --- a/src/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - parserOptions: { - project: './tsconfig.json', - tsconfigRootDir: __dirname, - sourceType: 'module' - } -}; diff --git a/src/ApiIncrementalChecker.ts b/src/ApiIncrementalChecker.ts index d9fc113d..88036185 100644 --- a/src/ApiIncrementalChecker.ts +++ b/src/ApiIncrementalChecker.ts @@ -1,80 +1,38 @@ -// tslint:disable-next-line:no-implicit-dependencies -import * as ts from 'typescript'; // Imported for types alone -// tslint:disable-next-line:no-implicit-dependencies -import { Linter, LintResult, RuleFailure } from 'tslint'; // Imported for types alone -// tslint:disable-next-line:no-implicit-dependencies -import * as eslinttypes from 'eslint'; // Imported for types alone -import * as minimatch from 'minimatch'; -import * as path from 'path'; +import * as eslint from 'eslint'; // Imported for types alone + import { IncrementalCheckerInterface, - ApiIncrementalCheckerParams + IncrementalCheckerParams } from './IncrementalCheckerInterface'; import { CancellationToken } from './CancellationToken'; -import { - ConfigurationFile, - loadLinterConfig, - makeGetLinterConfig -} from './linterConfigHelpers'; -import { NormalizedMessage } from './NormalizedMessage'; import { CompilerHost } from './CompilerHost'; -import { fileExistsSync } from './FsHelper'; import { createEslinter } from './createEslinter'; +import { + createIssuesFromTsDiagnostics, + createIssuesFromEsLintReports +} from './issue'; export class ApiIncrementalChecker implements IncrementalCheckerInterface { - private linterConfig?: ConfigurationFile; - private linterConfigs: Record = {}; - protected readonly tsIncrementalCompiler: CompilerHost; - private linterExclusions: minimatch.IMinimatch[] = []; - private currentLintErrors = new Map(); - private currentEsLintErrors = new Map< - string, - eslinttypes.CLIEngine.LintReport - >(); + private currentEsLintErrors = new Map(); private lastUpdatedFiles: string[] = []; private lastRemovedFiles: string[] = []; - private readonly hasFixedConfig: boolean; - - private readonly context: string; - private readonly createNormalizedMessageFromDiagnostic: ( - diagnostic: ts.Diagnostic - ) => NormalizedMessage; - private readonly linterConfigFile: string | boolean; - private readonly linterAutoFix: boolean; - private readonly createNormalizedMessageFromRuleFailure: ( - ruleFailure: RuleFailure - ) => NormalizedMessage; private readonly eslinter: ReturnType | undefined; constructor({ typescript, - context, programConfigFile, compilerOptions, - createNormalizedMessageFromDiagnostic, - linterConfigFile, - linterAutoFix, - createNormalizedMessageFromRuleFailure, eslinter, vue, checkSyntacticErrors = false, resolveModuleName, resolveTypeReferenceDirective - }: ApiIncrementalCheckerParams) { - this.context = context; - this.createNormalizedMessageFromDiagnostic = createNormalizedMessageFromDiagnostic; - this.linterConfigFile = linterConfigFile; - this.linterAutoFix = linterAutoFix; - this.createNormalizedMessageFromRuleFailure = createNormalizedMessageFromRuleFailure; + }: IncrementalCheckerParams) { this.eslinter = eslinter; - this.hasFixedConfig = typeof this.linterConfigFile === 'string'; - - this.initLinterConfig(); - this.tsIncrementalCompiler = new CompilerHost( typescript, vue, @@ -86,117 +44,31 @@ export class ApiIncrementalChecker implements IncrementalCheckerInterface { ); } - private initLinterConfig() { - if (!this.linterConfig && this.hasFixedConfig) { - this.linterConfig = loadLinterConfig(this.linterConfigFile as string); - - if ( - this.linterConfig.linterOptions && - this.linterConfig.linterOptions.exclude - ) { - // Pre-build minimatch patterns to avoid additional overhead later on. - // Note: Resolving the path is required to properly match against the full file paths, - // and also deals with potential cross-platform problems regarding path separators. - this.linterExclusions = this.linterConfig.linterOptions.exclude.map( - pattern => new minimatch.Minimatch(path.resolve(pattern)) - ); - } - } - } - - private getLinterConfig: ( - file: string - ) => ConfigurationFile | undefined = makeGetLinterConfig( - this.linterConfigs, - this.linterExclusions, - this.context - ); - - private createLinter(program: ts.Program): Linter { - // tslint:disable-next-line:no-implicit-dependencies - const tslint = require('tslint'); - - return new tslint.Linter({ fix: this.linterAutoFix }, program); - } - - public hasLinter(): boolean { - return !!this.linterConfigFile; - } - public hasEsLinter(): boolean { return this.eslinter !== undefined; } public isFileExcluded(filePath: string): boolean { - return ( - filePath.endsWith('.d.ts') || - this.linterExclusions.some(matcher => matcher.match(filePath)) - ); + return filePath.endsWith('.d.ts'); } public nextIteration() { // do nothing } - public async getDiagnostics(_cancellationToken: CancellationToken) { - const diagnostics = await this.tsIncrementalCompiler.processChanges(); - this.lastUpdatedFiles = diagnostics.updatedFiles; - this.lastRemovedFiles = diagnostics.removedFiles; + public async getTypeScriptIssues() { + const tsDiagnostics = await this.tsIncrementalCompiler.processChanges(); + this.lastUpdatedFiles = tsDiagnostics.updatedFiles; + this.lastRemovedFiles = tsDiagnostics.removedFiles; - return NormalizedMessage.deduplicate( - diagnostics.results.map(this.createNormalizedMessageFromDiagnostic) - ); + return createIssuesFromTsDiagnostics(tsDiagnostics.results); } - public getLints(_cancellationToken: CancellationToken) { - for (const updatedFile of this.lastUpdatedFiles) { - if (this.isFileExcluded(updatedFile)) { - continue; - } - - try { - const linter = this.createLinter( - this.tsIncrementalCompiler.getProgram() - ); - const config = this.hasFixedConfig - ? this.linterConfig - : this.getLinterConfig(updatedFile); - if (!config) { - continue; - } - // const source = fs.readFileSync(updatedFile, 'utf-8'); - linter.lint(updatedFile, undefined!, config); - const lints = linter.getResult(); - this.currentLintErrors.set(updatedFile, lints); - } catch (e) { - if ( - fileExistsSync(updatedFile) && - // check the error type due to file system lag - !(e instanceof Error) && - !(e.constructor.name === 'FatalError') && - !(e.message && e.message.trim().startsWith('Invalid source file')) - ) { - // it's not because file doesn't exist - throw error - throw e; - } - } - - for (const removedFile of this.lastRemovedFiles) { - this.currentLintErrors.delete(removedFile); - } - } - - const allLints = []; - for (const [, value] of this.currentLintErrors) { - allLints.push(...value.failures); + public async getEsLintIssues(cancellationToken: CancellationToken) { + if (!this.eslinter) { + throw new Error('EsLint is not enabled in the plugin.'); } - return NormalizedMessage.deduplicate( - allLints.map(this.createNormalizedMessageFromRuleFailure) - ); - } - - public getEsLints(cancellationToken: CancellationToken) { for (const removedFile of this.lastRemovedFiles) { this.currentEsLintErrors.delete(removedFile); } @@ -207,14 +79,16 @@ export class ApiIncrementalChecker implements IncrementalCheckerInterface { continue; } - const lints = this.eslinter!.getLints(updatedFile); - if (lints !== undefined) { - this.currentEsLintErrors.set(updatedFile, lints); + const report = this.eslinter.getReport(updatedFile); + + if (report !== undefined) { + this.currentEsLintErrors.set(updatedFile, report); } else if (this.currentEsLintErrors.has(updatedFile)) { this.currentEsLintErrors.delete(updatedFile); } } - return this.eslinter!.getFormattedLints(this.currentEsLintErrors.values()); + const reports = Array.from(this.currentEsLintErrors.values()); + return createIssuesFromEsLintReports(reports); } } diff --git a/src/CancellationToken.ts b/src/CancellationToken.ts index 47c17d44..5396bd65 100644 --- a/src/CancellationToken.ts +++ b/src/CancellationToken.ts @@ -2,7 +2,6 @@ import * as crypto from 'crypto'; import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; // Imported for types alone import { fileExistsSync } from './FsHelper'; diff --git a/src/CompilerHost.ts b/src/CompilerHost.ts index 1c89e8c3..1ddaff55 100644 --- a/src/CompilerHost.ts +++ b/src/CompilerHost.ts @@ -1,5 +1,5 @@ -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; // Imported for types alone + import { LinkedList } from './LinkedList'; import { VueProgram } from './VueProgram'; import { ResolveModuleName, ResolveTypeReferenceDirective } from './resolution'; @@ -25,7 +25,11 @@ export class CompilerHost >; public getProgram(): ts.Program { - return this.program!.getProgram().getProgram(); + if (!this.program) { + throw new Error('Program is not created yet.'); + } + + return this.program.getProgram().getProgram(); } public getAllKnownFiles() { @@ -226,10 +230,12 @@ export class CompilerHost } public setTimeout( + // eslint-disable-next-line @typescript-eslint/no-explicit-any callback: (...args: any[]) => void, - _ms: number, + ms: number, + // eslint-disable-next-line @typescript-eslint/no-explicit-any ...args: any[] - ): any { + ) { // There are 2 things we are hacking here: // 1. This method only called from watch program to wait until all files // are written to filesystem (for example, when doing 'save all') @@ -250,18 +256,16 @@ export class CompilerHost // dramatic compilation time increase), so we have to stick with these // hacks for now. this.compilationStarted = true; - return this.typescript.sys.setTimeout!(callback, 1, args); + + return (this.typescript.sys.setTimeout || setTimeout)(callback, 1, args); } + // eslint-disable-next-line @typescript-eslint/no-explicit-any public clearTimeout(timeoutId: any): void { - this.typescript.sys.clearTimeout!(timeoutId); + (this.typescript.sys.clearTimeout || clearTimeout)(timeoutId); } - public onWatchStatusChange( - _diagnostic: ts.Diagnostic, - _newLine: string, - _options: ts.CompilerOptions - ): void { + public onWatchStatusChange(): void { // do nothing } @@ -289,7 +293,7 @@ export class CompilerHost public watchFile( path: string, callback: ts.FileWatcherCallback, - _pollingInterval?: number + pollingInterval?: number ): ts.FileWatcher { const slot: FileWatchDelaySlot = { callback, events: [] }; const node = this.fileWatchers.add(slot); @@ -304,7 +308,7 @@ export class CompilerHost } slot.events.push({ fileName, eventKind }); }, - _pollingInterval + pollingInterval ); return { close: () => { @@ -385,7 +389,13 @@ export class CompilerHost } public realpath(path: string): string { - return this.tsHost.realpath!(path); + if (!this.tsHost.realpath) { + throw new Error( + 'The realpath function is not supported by the CompilerHost.' + ); + } + + return this.tsHost.realpath(path); } public trace(s: string): void { @@ -398,7 +408,7 @@ export class CompilerHost return this.tsHost.useCaseSensitiveFileNames(); } - public onUnRecoverableConfigFileDiagnostic(_diag: ts.Diagnostic) { + public onUnRecoverableConfigFileDiagnostic() { // do nothing } @@ -406,7 +416,10 @@ export class CompilerHost program: ts.EmitAndSemanticDiagnosticsBuilderProgram ): void { // all actual diagnostics happens here - this.tsHost.afterProgramCreate!(program); + if (this.tsHost.afterProgramCreate) { + this.tsHost.afterProgramCreate(program); + } + this.afterCompile(); } @@ -415,19 +428,15 @@ export class CompilerHost // - much slower for some reason, // - writes files anyway (o_O) // - has different way of providing diagnostics. (with this version we can at least reliably get it from afterProgramCreate) - public createDirectory(_path: string): void { + public createDirectory(): void { // pretend everything was ok } - public writeFile( - _path: string, - _data: string, - _writeByteOrderMark?: boolean - ): void { + public writeFile(): void { // pretend everything was ok } - public onCachedDirectoryStructureHostCreate?(_host: any): void { + public onCachedDirectoryStructureHostCreate?(): void { // pretend everything was ok } } diff --git a/src/FilesRegister.ts b/src/FilesRegister.ts index b7ec4b66..a566b566 100644 --- a/src/FilesRegister.ts +++ b/src/FilesRegister.ts @@ -1,14 +1,10 @@ -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; // import for types alone -// tslint:disable-next-line:no-implicit-dependencies -import { RuleFailure } from 'tslint'; // import for types alone -import { CLIEngine } from 'eslint'; // import for types alone +import * as eslint from 'eslint'; // import for types alone export interface DataShape { source?: ts.SourceFile; linted: boolean; - tslints: RuleFailure[]; - eslints: CLIEngine.LintReport[]; + eslints: eslint.CLIEngine.LintReport[]; } export class FilesRegister { diff --git a/src/FilesWatcher.ts b/src/FilesWatcher.ts deleted file mode 100644 index ea1f6348..00000000 --- a/src/FilesWatcher.ts +++ /dev/null @@ -1,69 +0,0 @@ -import * as chokidar from 'chokidar'; -import * as path from 'path'; - -export class FilesWatcher { - private watchers: chokidar.FSWatcher[]; - private listeners: { [eventName: string]: Function[] }; - constructor(private watchPaths: string[], private watchExtensions: string[]) { - this.watchExtensions = watchExtensions; - this.watchers = []; - this.listeners = {}; - } - - public isFileSupported(filePath: string) { - return this.watchExtensions.indexOf(path.extname(filePath)) !== -1; - } - - public watch() { - if (this.isWatching()) { - throw new Error('Cannot watch again - already watching.'); - } - - this.watchers = this.watchPaths.map((watchPath: string) => { - return chokidar - .watch(watchPath, { persistent: true, alwaysStat: true }) - .on('change', (filePath: string, stats: any) => { - if (this.isFileSupported(filePath)) { - (this.listeners['change'] || []).forEach(changeListener => { - changeListener(filePath, stats); - }); - } - }) - .on('unlink', (filePath: string) => { - if (this.isFileSupported(filePath)) { - (this.listeners['unlink'] || []).forEach(unlinkListener => { - unlinkListener(filePath); - }); - } - }); - }); - } - - public isWatchingFile(filePath: string) { - return ( - this.isWatching() && - this.isFileSupported(filePath) && - this.watchPaths.some(watchPath => filePath.startsWith(watchPath)) - ); - } - - public isWatching() { - return this.watchers.length > 0; - } - - public on(event: string, listener: Function) { - if (!this.listeners[event]) { - this.listeners[event] = []; - } - - this.listeners[event].push(listener); - } - - public off(event: string, listener: Function) { - if (this.listeners[event]) { - this.listeners[event] = this.listeners[event].filter( - oldListener => oldListener !== listener - ); - } - } -} diff --git a/src/FsHelper.ts b/src/FsHelper.ts index cbd51243..9edb2281 100644 --- a/src/FsHelper.ts +++ b/src/FsHelper.ts @@ -13,6 +13,7 @@ export function fileExistsSync(filePath: fs.PathLike) { return true; } +// eslint-disable-next-line @typescript-eslint/no-explicit-any export function throwIfIsInvalidSourceFileError(filepath: string, error: any) { if ( fileExistsSync(filepath) && diff --git a/src/IncrementalChecker.ts b/src/IncrementalChecker.ts index d552f7b7..60732967 100644 --- a/src/IncrementalChecker.ts +++ b/src/IncrementalChecker.ts @@ -1,76 +1,43 @@ import * as fs from 'fs'; import * as path from 'path'; -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; // Imported for types alone; actual requires take place in methods below -// tslint:disable-next-line:no-implicit-dependencies -import { Linter, RuleFailure } from 'tslint'; // Imported for types alone; actual requires take place in methods below -// tslint:disable-next-line:no-implicit-dependencies -import * as eslinttypes from 'eslint'; +import * as eslint from 'eslint'; + import { FilesRegister } from './FilesRegister'; -import { FilesWatcher } from './FilesWatcher'; -import { - ConfigurationFile, - loadLinterConfig, - makeGetLinterConfig -} from './linterConfigHelpers'; -import { WorkSet } from './WorkSet'; -import { NormalizedMessage } from './NormalizedMessage'; import { CancellationToken } from './CancellationToken'; import { ResolveModuleName, ResolveTypeReferenceDirective, makeResolutionFunctions } from './resolution'; -import * as minimatch from 'minimatch'; import { VueProgram } from './VueProgram'; -import { throwIfIsInvalidSourceFileError } from './FsHelper'; import { IncrementalCheckerInterface, IncrementalCheckerParams } from './IncrementalCheckerInterface'; import { createEslinter } from './createEslinter'; import { VueOptions } from './types/vue-options'; +import { + Issue, + createIssuesFromEsLintReports, + createIssuesFromTsDiagnostics +} from './issue'; export class IncrementalChecker implements IncrementalCheckerInterface { - // it's shared between compilations - private linterConfigs: Record = {}; private files = new FilesRegister(() => ({ // data shape source: undefined, linted: false, - tslints: [], eslints: [] })); - private linter?: Linter; - private linterConfig?: ConfigurationFile; - - // Use empty array of exclusions in general to avoid having - // to check of its existence later on. - private linterExclusions: minimatch.IMinimatch[] = []; - protected program?: ts.Program; protected programConfig?: ts.ParsedCommandLine; - private watcher?: FilesWatcher; - - private readonly hasFixedConfig: boolean; private readonly typescript: typeof ts; - private readonly context: string; private readonly programConfigFile: string; private readonly compilerOptions: object; - private readonly createNormalizedMessageFromDiagnostic: ( - diagnostic: ts.Diagnostic - ) => NormalizedMessage; - private readonly linterConfigFile: string | boolean; - private readonly linterAutoFix: boolean; - private readonly createNormalizedMessageFromRuleFailure: ( - ruleFailure: RuleFailure - ) => NormalizedMessage; private readonly eslinter: ReturnType | undefined; - private readonly watchPaths: string[]; - private readonly workNumber: number; - private readonly workDivision: number; private readonly vue: VueOptions; private readonly checkSyntacticErrors: boolean; private readonly resolveModuleName: ResolveModuleName | undefined; @@ -80,40 +47,22 @@ export class IncrementalChecker implements IncrementalCheckerInterface { constructor({ typescript, - context, programConfigFile, compilerOptions, - createNormalizedMessageFromDiagnostic, - linterConfigFile, - linterAutoFix, - createNormalizedMessageFromRuleFailure, eslinter, - watchPaths, - workNumber = 0, - workDivision = 1, vue, checkSyntacticErrors = false, resolveModuleName, resolveTypeReferenceDirective }: IncrementalCheckerParams) { this.typescript = typescript; - this.context = context; this.programConfigFile = programConfigFile; this.compilerOptions = compilerOptions; - this.createNormalizedMessageFromDiagnostic = createNormalizedMessageFromDiagnostic; - this.linterConfigFile = linterConfigFile; - this.linterAutoFix = linterAutoFix; - this.createNormalizedMessageFromRuleFailure = createNormalizedMessageFromRuleFailure; this.eslinter = eslinter; - this.watchPaths = watchPaths; - this.workNumber = workNumber; - this.workDivision = workDivision; this.vue = vue; this.checkSyntacticErrors = checkSyntacticErrors; this.resolveModuleName = resolveModuleName; this.resolveTypeReferenceDirective = resolveTypeReferenceDirective; - - this.hasFixedConfig = typeof this.linterConfigFile === 'string'; } public static loadProgramConfig( @@ -141,20 +90,11 @@ export class IncrementalChecker implements IncrementalCheckerInterface { return parsed; } - private getLinterConfig: ( - file: string - ) => ConfigurationFile | undefined = makeGetLinterConfig( - this.linterConfigs, - this.linterExclusions, - this.context - ); - private static createProgram( typescript: typeof ts, programConfig: ts.ParsedCommandLine, files: FilesRegister, - watcher: FilesWatcher, - oldProgram: ts.Program, + oldProgram: ts.Program | undefined, userResolveModuleName: ResolveModuleName | undefined, userResolveTypeReferenceDirective: ResolveTypeReferenceDirective | undefined ) { @@ -197,16 +137,13 @@ export class IncrementalChecker implements IncrementalCheckerInterface { }; host.getSourceFile = (filePath, languageVersion, onError) => { - // first check if watcher is watching file - if not - check it's mtime - if (!watcher.isWatchingFile(filePath)) { - try { - const stats = fs.statSync(filePath); - - files.setMtime(filePath, stats.mtime.valueOf()); - } catch (e) { - // probably file does not exists - files.remove(filePath); - } + try { + const stats = fs.statSync(filePath); + + files.setMtime(filePath, stats.mtime.valueOf()); + } catch (e) { + // probably file does not exists + files.remove(filePath); } // get source file only if there is no source in files register @@ -227,72 +164,18 @@ export class IncrementalChecker implements IncrementalCheckerInterface { ); } - private createLinter(program: ts.Program) { - // tslint:disable-next-line:no-implicit-dependencies - const tslint = require('tslint'); - - return new tslint.Linter({ fix: this.linterAutoFix }, program); - } - - public hasLinter(): boolean { - return !!this.linter; - } - public hasEsLinter(): boolean { return this.eslinter !== undefined; } - public static isFileExcluded( - filePath: string, - linterExclusions: minimatch.IMinimatch[] - ): boolean { - return ( - filePath.endsWith('.d.ts') || - linterExclusions.some(matcher => matcher.match(filePath)) - ); + public static isFileExcluded(filePath: string): boolean { + return filePath.endsWith('.d.ts'); } public nextIteration() { - if (!this.watcher) { - const watchExtensions = this.vue.enabled - ? ['.ts', '.tsx', '.vue'] - : ['.ts', '.tsx']; - this.watcher = new FilesWatcher(this.watchPaths, watchExtensions); - - // connect watcher with register - this.watcher.on('change', (filePath: string, stats: fs.Stats) => { - this.files.setMtime(filePath, stats.mtime.valueOf()); - }); - this.watcher.on('unlink', (filePath: string) => { - this.files.remove(filePath); - }); - - this.watcher.watch(); - } - - if (!this.linterConfig && this.hasFixedConfig) { - this.linterConfig = loadLinterConfig(this.linterConfigFile as string); - - if ( - this.linterConfig.linterOptions && - this.linterConfig.linterOptions.exclude - ) { - // Pre-build minimatch patterns to avoid additional overhead later on. - // Note: Resolving the path is required to properly match against the full file paths, - // and also deals with potential cross-platform problems regarding path separators. - this.linterExclusions = this.linterConfig.linterOptions.exclude.map( - pattern => new minimatch.Minimatch(path.resolve(pattern)) - ); - } - } - this.program = this.vue.enabled ? this.loadVueProgram(this.vue) : this.loadDefaultProgram(); - - if (this.linterConfigFile) { - this.linter = this.createLinter(this.program!); - } } private loadVueProgram(vueOptions: VueOptions) { @@ -309,8 +192,7 @@ export class IncrementalChecker implements IncrementalCheckerInterface { this.programConfig, path.dirname(this.programConfigFile), this.files, - this.watcher!, - this.program!, + this.program, this.resolveModuleName, this.resolveTypeReferenceDirective, vueOptions @@ -330,36 +212,29 @@ export class IncrementalChecker implements IncrementalCheckerInterface { this.typescript, this.programConfig, this.files, - this.watcher!, - this.program!, + this.program, this.resolveModuleName, this.resolveTypeReferenceDirective ); } - public getDiagnostics(cancellationToken: CancellationToken) { + public async getTypeScriptIssues( + cancellationToken: CancellationToken + ): Promise { const { program } = this; if (!program) { throw new Error('Invoked called before program initialized'); } - const diagnostics: ts.Diagnostic[] = []; + const tsDiagnostics: ts.Diagnostic[] = []; // select files to check (it's semantic check - we have to include all files :/) const filesToCheck = program.getSourceFiles(); - // calculate subset of work to do - const workSet = new WorkSet( - filesToCheck, - this.workNumber, - this.workDivision - ); - - // check given work set - workSet.forEach(sourceFile => { + filesToCheck.forEach(sourceFile => { if (cancellationToken) { cancellationToken.throwIfCancellationRequested(); } - const diagnosticsToRegister: ReadonlyArray = this + const tsDiagnosticsToRegister: ReadonlyArray = this .checkSyntacticErrors ? program .getSemanticDiagnostics(sourceFile, cancellationToken) @@ -368,127 +243,42 @@ export class IncrementalChecker implements IncrementalCheckerInterface { ) : program.getSemanticDiagnostics(sourceFile, cancellationToken); - diagnostics.push(...diagnosticsToRegister); + tsDiagnostics.push(...tsDiagnosticsToRegister); }); - // normalize and deduplicate diagnostics - return Promise.resolve( - NormalizedMessage.deduplicate( - diagnostics.map(this.createNormalizedMessageFromDiagnostic) - ) - ); + return createIssuesFromTsDiagnostics(tsDiagnostics); } - public getLints(cancellationToken: CancellationToken) { - const { linter } = this; - if (!linter) { - throw new Error('Cannot get lints - checker has no linter.'); - } - + public async getEsLintIssues( + cancellationToken: CancellationToken + ): Promise { // select files to lint const filesToLint = this.files .keys() .filter( filePath => !this.files.getData(filePath).linted && - !IncrementalChecker.isFileExcluded(filePath, this.linterExclusions) + !IncrementalChecker.isFileExcluded(filePath) ); - // calculate subset of work to do - const workSet = new WorkSet( - filesToLint, - this.workNumber, - this.workDivision - ); - - // lint given work set - workSet.forEach(fileName => { + const currentEsLintErrors = new Map(); + filesToLint.forEach(fileName => { cancellationToken.throwIfCancellationRequested(); - const config = this.hasFixedConfig - ? this.linterConfig - : this.getLinterConfig(fileName); - if (!config) { - return; - } - try { - // Assertion: `.lint` second parameter can be undefined - linter.lint(fileName, undefined!, config); - } catch (e) { - throwIfIsInvalidSourceFileError(fileName, e); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const report = this.eslinter!.getReport(fileName); + if (report !== undefined) { + currentEsLintErrors.set(fileName, report); } }); // set lints in files register - linter.getResult().failures.forEach(lint => { - const filePath = lint.getFileName(); - - this.files.mutateData(filePath, data => { - data.linted = true; - data.tslints.push(lint); - }); - }); - - // set all files as linted - this.files.keys().forEach(filePath => { - this.files.mutateData(filePath, data => { - data.linted = true; - }); - }); - - // get all lints - const lints = this.files - .keys() - .reduce( - (innerLints, filePath) => - innerLints.concat(this.files.getData(filePath).tslints), - [] as RuleFailure[] - ); - - // normalize and deduplicate lints - return NormalizedMessage.deduplicate( - lints.map(this.createNormalizedMessageFromRuleFailure) - ); - } - - public getEsLints(cancellationToken: CancellationToken) { - // select files to lint - const filesToLint = this.files - .keys() - .filter( - filePath => - !this.files.getData(filePath).linted && - !IncrementalChecker.isFileExcluded(filePath, this.linterExclusions) - ); - - // calculate subset of work to do - const workSet = new WorkSet( - filesToLint, - this.workNumber, - this.workDivision - ); - - // lint given work set - const currentEsLintErrors = new Map< - string, - eslinttypes.CLIEngine.LintReport - >(); - workSet.forEach(fileName => { - cancellationToken.throwIfCancellationRequested(); - - const lints = this.eslinter!.getLints(fileName); - if (lints !== undefined) { - currentEsLintErrors.set(fileName, lints); - } - }); - - // set lints in files register - for (const [filePath, lint] of currentEsLintErrors) { + currentEsLintErrors.forEach((lint, filePath) => { this.files.mutateData(filePath, data => { data.linted = true; data.eslints.push(lint); }); - } + }); // set all files as linted this.files.keys().forEach(filePath => { @@ -497,15 +287,14 @@ export class IncrementalChecker implements IncrementalCheckerInterface { }); }); - // get all lints - const allEsLintReports = this.files + const reports = this.files .keys() - .reduce( + .reduce( (innerLints, filePath) => innerLints.concat(this.files.getData(filePath).eslints), - [] as eslinttypes.CLIEngine.LintReport[] + [] ); - return this.eslinter!.getFormattedLints(allEsLintReports); + return createIssuesFromEsLintReports(reports); } } diff --git a/src/IncrementalCheckerInterface.ts b/src/IncrementalCheckerInterface.ts index 88aa620e..09f095d2 100644 --- a/src/IncrementalCheckerInterface.ts +++ b/src/IncrementalCheckerInterface.ts @@ -1,51 +1,28 @@ -// tslint:disable-next-line:no-implicit-dependencies -import * as ts from 'typescript'; // import for types alone -// tslint:disable-next-line:no-implicit-dependencies -import { RuleFailure } from 'tslint'; // import for types alone +import * as ts from 'typescript'; // imported for types alone + import { CancellationToken } from './CancellationToken'; -import { NormalizedMessage } from './NormalizedMessage'; import { ResolveTypeReferenceDirective, ResolveModuleName } from './resolution'; import { createEslinter } from './createEslinter'; +import { Issue } from './issue'; import { VueOptions } from './types/vue-options'; export interface IncrementalCheckerInterface { nextIteration(): void; - getDiagnostics( - cancellationToken: CancellationToken - ): Promise; - - hasLinter(): boolean; - - getLints(cancellationToken: CancellationToken): NormalizedMessage[]; - hasEsLinter(): boolean; - getEsLints(cancellationToken: CancellationToken): NormalizedMessage[]; + getTypeScriptIssues(cancellationToken: CancellationToken): Promise; + getEsLintIssues(cancellationToken: CancellationToken): Promise; } -export interface ApiIncrementalCheckerParams { +export interface IncrementalCheckerParams { typescript: typeof ts; context: string; programConfigFile: string; compilerOptions: ts.CompilerOptions; - createNormalizedMessageFromDiagnostic: ( - diagnostic: ts.Diagnostic - ) => NormalizedMessage; - linterConfigFile: string | boolean; - linterAutoFix: boolean; - createNormalizedMessageFromRuleFailure: ( - ruleFailure: RuleFailure - ) => NormalizedMessage; eslinter: ReturnType | undefined; checkSyntacticErrors: boolean; resolveModuleName: ResolveModuleName | undefined; resolveTypeReferenceDirective: ResolveTypeReferenceDirective | undefined; vue: VueOptions; } - -export interface IncrementalCheckerParams extends ApiIncrementalCheckerParams { - watchPaths: string[]; - workNumber: number; - workDivision: number; -} diff --git a/src/LinkedList.ts b/src/LinkedList.ts index e3206e30..356b83f4 100644 --- a/src/LinkedList.ts +++ b/src/LinkedList.ts @@ -2,11 +2,11 @@ export class HeadNode { public next: LinkedListNode | TailNode; constructor() { + // eslint-disable-next-line @typescript-eslint/no-use-before-define this.next = new TailNode(this); } } -// tslint:disable-next-line:max-classes-per-file export class TailNode { public previous: LinkedListNode | HeadNode; @@ -14,7 +14,6 @@ export class TailNode { this.previous = head; } } -// tslint:disable-next-line:max-classes-per-file export class LinkedListNode { public next: LinkedListNode | TailNode | null = null; public previous: LinkedListNode | HeadNode | null = null; @@ -59,7 +58,6 @@ export class LinkedListNode { this.attachAfter(node.previous); } } -// tslint:disable-next-line:max-classes-per-file export class LinkedList { public head: HeadNode; public tail: TailNode; diff --git a/src/Message.ts b/src/Message.ts index c81a4566..80992233 100644 --- a/src/Message.ts +++ b/src/Message.ts @@ -1,6 +1,6 @@ -import { NormalizedMessage } from './NormalizedMessage'; +import { Issue } from './issue'; export interface Message { - diagnostics: NormalizedMessage[]; - lints: NormalizedMessage[]; + diagnostics: Issue[]; + lints: Issue[]; } diff --git a/src/NormalizedMessage.ts b/src/NormalizedMessage.ts deleted file mode 100644 index df6844c8..00000000 --- a/src/NormalizedMessage.ts +++ /dev/null @@ -1,185 +0,0 @@ -export type ErrorType = 'diagnostic' | 'lint'; -export type Severity = 'error' | 'warning'; - -interface NormalizedMessageJson { - type: ErrorType; - code: string | number; - severity: Severity; - content: string; - file?: string; - line?: number; - character?: number; - stack?: string; -} - -export class NormalizedMessage { - public static readonly TYPE_DIAGNOSTIC: ErrorType = 'diagnostic'; - public static readonly TYPE_LINT: ErrorType = 'lint'; - - // severity types - public static readonly SEVERITY_ERROR: Severity = 'error'; - public static readonly SEVERITY_WARNING: Severity = 'warning'; - - public static readonly ERROR_CODE_INTERNAL = 'INTERNAL_ERROR'; - - public readonly type: ErrorType; - public readonly code: string | number; - public readonly severity: Severity; - public readonly content: string; - public readonly file?: string; - public readonly line?: number; - public readonly character?: number; - public readonly stack?: string; - - constructor(data: NormalizedMessageJson) { - this.type = data.type; - this.code = data.code; - this.severity = data.severity; - this.content = data.content; - this.file = data.file; - this.line = data.line; - this.character = data.character; - this.stack = data.stack; - } - - public static createFromJSON(json: NormalizedMessageJson) { - return new NormalizedMessage(json); - } - - public static compare( - messageA: NormalizedMessage, - messageB: NormalizedMessage - ) { - if (!(messageA instanceof NormalizedMessage)) { - return -1; - } - if (!(messageB instanceof NormalizedMessage)) { - return 1; - } - - return ( - NormalizedMessage.compareTypes(messageA.type, messageB.type) || - NormalizedMessage.compareOptionalStrings(messageA.file, messageB.file) || - NormalizedMessage.compareSeverities( - messageA.severity, - messageB.severity - ) || - NormalizedMessage.compareNumbers(messageA.line, messageB.line) || - NormalizedMessage.compareNumbers( - messageA.character, - messageB.character - ) || - // code can be string (lint failure) or number (typescript error) - should the following line cater for this in some way? - NormalizedMessage.compareOptionalStrings( - messageA.code as string, - messageB.code as string - ) || - NormalizedMessage.compareOptionalStrings( - messageA.content, - messageB.content - ) || - NormalizedMessage.compareOptionalStrings( - messageA.stack, - messageB.stack - ) || - 0 /* EqualTo */ - ); - } - - public static equals( - messageA: NormalizedMessage, - messageB: NormalizedMessage - ) { - return this.compare(messageA, messageB) === 0; - } - - public static deduplicate(messages: NormalizedMessage[]) { - return messages.sort(NormalizedMessage.compare).filter((message, index) => { - return ( - index === 0 || !NormalizedMessage.equals(message, messages[index - 1]) - ); - }); - } - - public static compareTypes(typeA: ErrorType, typeB: ErrorType) { - const priorities = [typeA, typeB].map(type => { - return [ - NormalizedMessage.TYPE_LINT /* 0 */, - NormalizedMessage.TYPE_DIAGNOSTIC /* 1 */ - ].indexOf(type); - }); - - return priorities[0] - priorities[1]; - } - - public static compareSeverities(severityA: Severity, severityB: Severity) { - const priorities = [severityA, severityB].map(type => { - return [ - NormalizedMessage.SEVERITY_WARNING /* 0 */, - NormalizedMessage.SEVERITY_ERROR /* 1 */ - ].indexOf(type); - }); - - return priorities[0] - priorities[1]; - } - - public static compareOptionalStrings(stringA?: string, stringB?: string) { - if (stringA === stringB) { - return 0; - } - if (stringA === undefined || stringA === null) { - return -1; - } - if (stringB === undefined || stringB === null) { - return 1; - } - - return stringA.toString().localeCompare(stringB.toString()); - } - - public static compareNumbers(numberA?: number, numberB?: number) { - if (numberA === numberB) { - return 0; - } - if (numberA === undefined || numberA === null) { - return -1; - } - if (numberB === undefined || numberB === null) { - return 1; - } - return numberA - numberB; - } - - public toJSON() { - return { - type: this.type, - code: this.code, - severity: this.severity, - content: this.content, - file: this.file, - line: this.line, - character: this.character, - stack: this.stack - } as NormalizedMessageJson; - } - - public isDiagnosticType() { - return NormalizedMessage.TYPE_DIAGNOSTIC === this.type; - } - - public isLintType() { - return NormalizedMessage.TYPE_LINT === this.type; - } - - public getFormattedCode() { - return this.isDiagnosticType() ? 'TS' + this.code : this.code; - } - - public isErrorSeverity() { - return this.severity === NormalizedMessage.SEVERITY_ERROR; - } - - public isWarningSeverity() { - return this.severity === NormalizedMessage.SEVERITY_WARNING; - } -} diff --git a/src/NormalizedMessageFactories.ts b/src/NormalizedMessageFactories.ts deleted file mode 100644 index cb98ffb2..00000000 --- a/src/NormalizedMessageFactories.ts +++ /dev/null @@ -1,97 +0,0 @@ -// tslint:disable-next-line:no-implicit-dependencies -import * as ts from 'typescript'; // import for types alone -// tslint:disable-next-line:no-implicit-dependencies -import * as tslint from 'tslint'; // import for types alone -import { NormalizedMessage, Severity } from './NormalizedMessage'; -import * as eslint from 'eslint'; // import for types alone - -export const makeCreateNormalizedMessageFromDiagnostic = ( - typescript: typeof ts -) => { - const createNormalizedMessageFromDiagnostic = (diagnostic: ts.Diagnostic) => { - let file: string | undefined; - let line: number | undefined; - let character: number | undefined; - if (diagnostic.file) { - file = diagnostic.file.fileName; - if (diagnostic.start === undefined) { - throw new Error('Expected diagnostics to have start'); - } - const position = diagnostic.file.getLineAndCharacterOfPosition( - diagnostic.start - ); - line = position.line + 1; - character = position.character + 1; - } - - return new NormalizedMessage({ - type: NormalizedMessage.TYPE_DIAGNOSTIC, - code: diagnostic.code, - severity: typescript.DiagnosticCategory[ - diagnostic.category - ].toLowerCase() as Severity, - content: typescript.flattenDiagnosticMessageText( - diagnostic.messageText, - '\n' - ), - file, - line, - character - }); - }; - - return createNormalizedMessageFromDiagnostic; -}; - -export const makeCreateNormalizedMessageFromRuleFailure = () => { - const createNormalizedMessageFromRuleFailure = (lint: tslint.RuleFailure) => { - const position = lint.getStartPosition().getLineAndCharacter(); - - return new NormalizedMessage({ - type: NormalizedMessage.TYPE_LINT, - code: lint.getRuleName(), - severity: lint.getRuleSeverity() as Severity, - content: lint.getFailure(), - file: lint.getFileName(), - line: position.line + 1, - character: position.character + 1 - }); - }; - return createNormalizedMessageFromRuleFailure; -}; - -export const makeCreateNormalizedMessageFromEsLintFailure = () => { - const createNormalizedMessageFromEsLintFailure = ( - lint: eslint.Linter.LintMessage, - filePath: string - ) => { - return new NormalizedMessage({ - type: NormalizedMessage.TYPE_LINT, - code: lint.ruleId!, - severity: - lint.severity === 1 - ? NormalizedMessage.SEVERITY_WARNING - : NormalizedMessage.SEVERITY_ERROR, - content: lint.message, - file: filePath, - line: lint.line, - character: lint.column - }); - }; - return createNormalizedMessageFromEsLintFailure; -}; - -export const makeCreateNormalizedMessageFromInternalError = () => { - const createNormalizedMessageFromInternalError = (error: any) => { - return new NormalizedMessage({ - type: NormalizedMessage.TYPE_DIAGNOSTIC, - severity: NormalizedMessage.SEVERITY_ERROR, - code: NormalizedMessage.ERROR_CODE_INTERNAL, - content: - typeof error.message === 'string' ? error.message : error.toString(), - stack: typeof error.stack === 'string' ? error.stack : undefined, - file: '[internal]' - }); - }; - return createNormalizedMessageFromInternalError; -}; diff --git a/src/VueProgram.ts b/src/VueProgram.ts index d4c56b38..6cce2aaf 100644 --- a/src/VueProgram.ts +++ b/src/VueProgram.ts @@ -1,15 +1,12 @@ import * as fs from 'fs'; import * as path from 'path'; -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; // import for types alone import { FilesRegister } from './FilesRegister'; -import { FilesWatcher } from './FilesWatcher'; import { ResolveModuleName, ResolveTypeReferenceDirective, makeResolutionFunctions } from './resolution'; -// tslint:disable-next-line:no-implicit-dependencies import * as vueCompiler from 'vue-template-compiler'; import { VueOptions } from './types/vue-options'; @@ -107,7 +104,8 @@ export class VueProgram { ? options.paths[`${correctWildcard}/*`] : undefined; const substitution = pattern - ? options.paths![`${correctWildcard}/*`][0].replace('*', '') + ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + options.paths![`${correctWildcard}/*`][0].replace('*', '') : 'src'; moduleName = path.resolve(baseUrl, substitution, moduleName.substr(2)); } else if (isRelative) { @@ -125,8 +123,7 @@ export class VueProgram { programConfig: ts.ParsedCommandLine, basedir: string, files: FilesRegister, - watcher: FilesWatcher, - oldProgram: ts.Program, + oldProgram: ts.Program | undefined, userResolveModuleName: ResolveModuleName | undefined, userResolveTypeReferenceDirective: | ResolveTypeReferenceDirective @@ -173,16 +170,13 @@ export class VueProgram { // We need a host that can parse Vue SFCs (single file components). host.getSourceFile = (filePath, languageVersion, onError) => { - // first check if watcher is watching file - if not - check it's mtime - if (!watcher.isWatchingFile(filePath)) { - try { - const stats = fs.statSync(filePath); - - files.setMtime(filePath, stats.mtime.valueOf()); - } catch (e) { - // probably file does not exists - files.remove(filePath); - } + try { + const stats = fs.statSync(filePath); + + files.setMtime(filePath, stats.mtime.valueOf()); + } catch (e) { + // probably file does not exists + files.remove(filePath); } // get source file only if there is no source in files register @@ -317,7 +311,6 @@ export class VueProgram { // we should let the users install template compiler for vue by themselves. let parser: typeof vueCompiler; try { - // tslint:disable-next-line parser = require(compiler); } catch (err) { throw new Error( @@ -333,7 +326,7 @@ export class VueProgram { if (!script) { return { scriptKind: typescript.ScriptKind.JS, - content: '/* tslint:disable */\nexport default {};\n' + content: 'export default {};\n' }; } @@ -350,7 +343,6 @@ export class VueProgram { // since it will produce incorrect code location. // It's not a large problem since it's handled on webpack side. content: - '/* tslint:disable */\n' + '// @ts-ignore\n' + `export { default } from '${src}';\n` + '// @ts-ignore\n' + diff --git a/src/WorkSet.ts b/src/WorkSet.ts deleted file mode 100644 index 76934e47..00000000 --- a/src/WorkSet.ts +++ /dev/null @@ -1,26 +0,0 @@ -export class WorkSet { - private workSize: number; - private workBegin: number; - private workEnd: number; - - constructor( - private workDomain: ReadonlyArray, - private workNumber: number, - private workDivision: number - ) { - this.workSize = Math.floor(this.workDomain.length / this.workDivision); - this.workBegin = this.workNumber * this.workSize; - this.workEnd = this.workBegin + this.workSize; - - // be sure that we will process all work for odd workSize. - if (this.workNumber === this.workDivision - 1) { - this.workEnd = this.workDomain.length; - } - } - - public forEach(callback: (workDomainItem: T, index: number) => void) { - for (let i = this.workBegin; i < this.workEnd; ++i) { - callback(this.workDomain[i], i); - } - } -} diff --git a/src/cluster.ts b/src/cluster.ts deleted file mode 100644 index 46c2f1cf..00000000 --- a/src/cluster.ts +++ /dev/null @@ -1,96 +0,0 @@ -import * as childProcess from 'child_process'; -import * as path from 'path'; -import * as process from 'process'; -import { RpcProvider } from 'worker-rpc'; - -import { NormalizedMessage } from './NormalizedMessage'; -import { Message } from './Message'; -import { RunPayload, RunResult, RUN } from './RpcTypes'; - -// fork workers... -const division = parseInt(process.env.WORK_DIVISION || '', 10); -const workers: childProcess.ChildProcess[] = []; - -for (let num = 0; num < division; num++) { - workers.push( - childProcess.fork(path.resolve(__dirname, './service.js'), [], { - execArgv: ['--max-old-space-size=' + process.env.MEMORY_LIMIT], - env: { ...process.env, WORK_NUMBER: num.toString() }, - stdio: ['inherit', 'inherit', 'inherit', 'ipc'] - }) - ); -} - -// communication with parent process -const parentRpc = new RpcProvider(message => { - try { - process.send!(message); - } catch (e) { - // channel closed... - process.exit(); - } -}); -process.on('message', message => parentRpc.dispatch(message)); - -// communication with worker processes -const workerRpcs = workers.map(worker => { - const rpc = new RpcProvider(message => { - try { - worker.send(message); - } catch (e) { - // channel closed - something went wrong - close cluster... - process.exit(); - } - }); - worker.on('message', message => rpc.dispatch(message)); - return rpc; -}); - -parentRpc.registerRpcHandler(RUN, async message => { - const workerResults = await Promise.all( - workerRpcs.map(workerRpc => - workerRpc.rpc(RUN, message) - ) - ); - - function workerFinished( - workerResult: (Message | undefined)[] - ): workerResult is Message[] { - return workerResult.every(result => typeof result !== 'undefined'); - } - - if (!workerFinished(workerResults)) { - return undefined; - } - - const merged: Message = workerResults.reduce( - (innerMerged: Message, innerResult: Message) => ({ - diagnostics: innerMerged.diagnostics.concat( - innerResult.diagnostics.map(NormalizedMessage.createFromJSON) - ), - lints: innerMerged.lints.concat( - innerResult.lints.map(NormalizedMessage.createFromJSON) - ) - }), - { diagnostics: [], lints: [] } - ); - - merged.diagnostics = NormalizedMessage.deduplicate(merged.diagnostics); - merged.lints = NormalizedMessage.deduplicate(merged.lints); - - return merged; -}); - -process.on('SIGINT', () => { - process.exit(); -}); - -process.on('exit', () => { - workers.forEach(worker => { - try { - worker.kill(); - } catch (e) { - // do nothing... - } - }); -}); diff --git a/src/createEslinter.ts b/src/createEslinter.ts index 099b3176..e3a97d39 100644 --- a/src/createEslinter.ts +++ b/src/createEslinter.ts @@ -1,19 +1,16 @@ -// tslint:disable-next-line:no-implicit-dependencies -import * as eslinttypes from 'eslint'; // import for types alone -import { NormalizedMessage } from './NormalizedMessage'; -import { throwIfIsInvalidSourceFileError } from './FsHelper'; -import { makeCreateNormalizedMessageFromEsLintFailure } from './NormalizedMessageFactories'; +import * as eslint from 'eslint'; // import for types alone import * as path from 'path'; +import { throwIfIsInvalidSourceFileError } from './FsHelper'; + export function createEslinter(eslintOptions: object) { - // tslint:disable-next-line:no-implicit-dependencies - const eslint: typeof eslinttypes = require('eslint'); + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { CLIEngine }: typeof eslint = require('eslint'); // See https://eslint.org/docs/1.0.0/developer-guide/nodejs-api#cliengine - const eslinter = new eslint.CLIEngine(eslintOptions); - const createNormalizedMessageFromEsLintFailure = makeCreateNormalizedMessageFromEsLintFailure(); + const eslinter = new CLIEngine(eslintOptions); - function getLintsForFile(filepath: string) { + function getReport(filepath: string) { try { if ( eslinter.isPathIgnored(filepath) || @@ -24,31 +21,12 @@ export function createEslinter(eslintOptions: object) { return undefined; } - const lints = eslinter.executeOnFiles([filepath]); - return lints; + return eslinter.executeOnFiles([filepath]); } catch (e) { throwIfIsInvalidSourceFileError(filepath, e); } return undefined; } - function getFormattedLints( - lintReports: - | IterableIterator - | eslinttypes.CLIEngine.LintReport[] - ) { - const allEsLints = []; - for (const value of lintReports) { - for (const lint of value.results) { - allEsLints.push( - ...lint.messages.map(message => - createNormalizedMessageFromEsLintFailure(message, lint.filePath) - ) - ); - } - } - return NormalizedMessage.deduplicate(allEsLints); - } - - return { getLints: getLintsForFile, getFormattedLints }; + return { getReport }; } diff --git a/src/formatter/CodeframeFormatter.ts b/src/formatter/CodeframeFormatter.ts new file mode 100644 index 00000000..98e2a14e --- /dev/null +++ b/src/formatter/CodeframeFormatter.ts @@ -0,0 +1,80 @@ +import * as os from 'os'; +import * as fs from 'fs'; +import chalk from 'chalk'; + +import { fileExistsSync } from '../FsHelper'; +import { IssueSeverity, IssueOrigin } from '../issue'; +import { Formatter } from './Formatter'; +import { createInternalFormatter } from './InternalFormatter'; +import codeFrame from 'babel-code-frame'; + +interface CodeFrameFormatterOptions { + /** Syntax highlight the code as JavaScript for terminals. default: false */ + highlightCode?: boolean; + /** The number of lines to show above the error. default: 2 */ + linesBelow?: number; + /** The number of lines to show below the error. default: 3 */ + linesAbove?: number; + /** + * Forcibly syntax highlight the code as JavaScript (for non-terminals); + * overrides highlightCode. + * default: false + */ + forceColor?: boolean; +} + +function createCodeframeFormatter( + options?: CodeFrameFormatterOptions +): Formatter { + return function codeframeFormatter(issue) { + const color = { + message: + issue.severity === IssueSeverity.WARNING + ? chalk.bold.yellow + : chalk.bold.red, + position: chalk.dim + }; + + if (issue.origin === IssueOrigin.INTERNAL) { + return createInternalFormatter()(issue); + } + + const file = issue.file; + const source = + file && fileExistsSync(file) && fs.readFileSync(file, 'utf-8'); + let frame = ''; + + if (source) { + frame = codeFrame( + source, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + issue.line!, // Assertion: `codeFrame` allows passing undefined, typings are incorrect + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + issue.character!, + { + highlightCode: true, + ...(options || {}) + } + ) + .split('\n') + .map((line: string) => ' ' + line) + .join(os.EOL); + } + + const lines = [ + color.message( + `${issue.severity.toUpperCase()} in ${issue.file}(${issue.line},${ + issue.character + }):` + ), + color.position(`${issue.line}:${issue.character} ${issue.message}`) + ]; + if (frame) { + lines.push(frame); + } + + return lines.join(os.EOL); + }; +} + +export { createCodeframeFormatter, CodeFrameFormatterOptions }; diff --git a/src/formatter/DefaultFormatter.ts b/src/formatter/DefaultFormatter.ts new file mode 100644 index 00000000..c1f91771 --- /dev/null +++ b/src/formatter/DefaultFormatter.ts @@ -0,0 +1,35 @@ +import * as os from 'os'; +import chalk from 'chalk'; + +import { IssueSeverity, IssueOrigin } from '../issue'; +import { Formatter } from './Formatter'; +import { createInternalFormatter } from './InternalFormatter'; + +function createDefaultFormatter(): Formatter { + return function defaultFormatter(issue) { + const color = { + message: + issue.severity === IssueSeverity.WARNING + ? chalk.bold.yellow + : chalk.bold.red, + position: chalk.bold.cyan, + code: chalk.grey + }; + + if (issue.origin === IssueOrigin.INTERNAL) { + return createInternalFormatter()(issue); + } + + const code = + issue.origin === IssueOrigin.TYPESCRIPT ? `TS${issue.code}` : issue.code; + + return [ + color.message(`${issue.severity.toUpperCase()} in `) + + color.position(`${issue.file}(${issue.line},${issue.character})`) + + color.message(':'), + color.code(code + ': ') + issue.message + ].join(os.EOL); + }; +} + +export { createDefaultFormatter }; diff --git a/src/formatter/Formatter.ts b/src/formatter/Formatter.ts new file mode 100644 index 00000000..322be4ad --- /dev/null +++ b/src/formatter/Formatter.ts @@ -0,0 +1,5 @@ +import { Issue } from '../issue'; + +type Formatter = (issue: Issue) => string; + +export { Formatter }; diff --git a/src/formatter/FormatterFactory.ts b/src/formatter/FormatterFactory.ts new file mode 100644 index 00000000..5608a793 --- /dev/null +++ b/src/formatter/FormatterFactory.ts @@ -0,0 +1,36 @@ +import { Formatter } from './Formatter'; +import { + CodeFrameFormatterOptions, + createCodeframeFormatter +} from './CodeframeFormatter'; +import { createDefaultFormatter } from './DefaultFormatter'; + +type FormatterType = undefined | 'default' | 'codeframe' | Formatter; +type FormatterOptions = CodeFrameFormatterOptions; + +function createFormatter( + type?: FormatterType, + options?: FormatterOptions +): Formatter { + if (typeof type === 'function') { + return type; + } + + switch (type) { + case 'codeframe': + return createCodeframeFormatter(options); + + case 'default': + case undefined: + return createDefaultFormatter(); + + default: + throw new Error( + 'Unknown "' + + type + + '" formatter. Available types are: default, codeframe.' + ); + } +} + +export { createFormatter, FormatterType, FormatterOptions }; diff --git a/src/formatter/InternalFormatter.ts b/src/formatter/InternalFormatter.ts new file mode 100644 index 00000000..b1b0518f --- /dev/null +++ b/src/formatter/InternalFormatter.ts @@ -0,0 +1,34 @@ +import chalk from 'chalk'; +import * as os from 'os'; + +import { IssueOrigin } from '../issue'; +import { Formatter } from './Formatter'; + +/** + * TODO: maybe we should not treat internal errors as issues + */ +function createInternalFormatter(): Formatter { + return function internalFormatter(issue) { + const color = { + message: chalk.bold.red, + stack: chalk.grey + }; + + if (issue.origin === IssueOrigin.INTERNAL) { + const lines = [ + `${color.message('INTERNAL ' + issue.severity.toUpperCase())}: ${ + issue.message + }` + ]; + if (issue.stack) { + lines.push('stack trace:', color.stack(issue.stack)); + } + + return lines.join(os.EOL); + } else { + throw new Error(`Not supported "${issue.origin}" issue origin.`); + } + }; +} + +export { createInternalFormatter }; diff --git a/src/formatter/RawFormatter.ts b/src/formatter/RawFormatter.ts new file mode 100644 index 00000000..720f8386 --- /dev/null +++ b/src/formatter/RawFormatter.ts @@ -0,0 +1,13 @@ +import { Formatter } from './Formatter'; +import { IssueOrigin } from '../issue'; + +function createRawFormatter(): Formatter { + return function rawFormatter(issue) { + const code = + issue.origin === IssueOrigin.TYPESCRIPT ? `TS${issue.code}` : issue.code; + + return `${issue.severity.toUpperCase()} ${code}: ${issue.message}`; + }; +} + +export { createRawFormatter }; diff --git a/src/formatter/codeframeFormatter.ts b/src/formatter/codeframeFormatter.ts deleted file mode 100644 index 44530213..00000000 --- a/src/formatter/codeframeFormatter.ts +++ /dev/null @@ -1,72 +0,0 @@ -import * as os from 'os'; -import codeFrame = require('babel-code-frame'); -import chalk from 'chalk'; -import * as fs from 'fs'; -import { NormalizedMessage } from '../NormalizedMessage'; -import { fileExistsSync } from '../FsHelper'; - -/** - * Create new code frame formatter. - * - * @param options Options for babel-code-frame - see https://www.npmjs.com/package/babel-code-frame - * @returns {codeframeFormatter} - */ -export function createCodeframeFormatter(options: any) { - return function codeframeFormatter( - message: NormalizedMessage, - useColors: boolean - ) { - const colors = new chalk.constructor({ enabled: useColors }); - const messageColor = message.isWarningSeverity() - ? colors.bold.yellow - : colors.bold.red; - const positionColor = colors.dim; - - if (message.code === NormalizedMessage.ERROR_CODE_INTERNAL) { - return ( - messageColor( - `INTERNAL ${message.severity.toUpperCase()}(${message.line},${ - message.character - }) ` - ) + - message.content + - (message.stack - ? os.EOL + 'stack trace:' + os.EOL + colors.gray(message.stack) - : '') - ); - } - - const file = message.file; - const source = - file && fileExistsSync(file) && fs.readFileSync(file, 'utf-8'); - let frame = ''; - - if (source) { - frame = codeFrame( - source, - message.line!, // Assertion: `codeFrame` allows passing undefined, typings are incorrect - message.character!, - { - ...(options || {}), - highlightCode: useColors - } - ) - .split('\n') - .map(str => ' ' + str) - .join(os.EOL); - } - - return ( - messageColor( - message.severity.toUpperCase() + - ' in ' + - `${message.file}(${message.line},${message.character}):` - ) + - os.EOL + - positionColor(message.line + ':' + message.character) + - ' ' + - message.content + - (frame ? os.EOL + frame : '') - ); - }; -} diff --git a/src/formatter/defaultFormatter.ts b/src/formatter/defaultFormatter.ts deleted file mode 100644 index f6ce1de6..00000000 --- a/src/formatter/defaultFormatter.ts +++ /dev/null @@ -1,41 +0,0 @@ -import chalk from 'chalk'; -import * as os from 'os'; -import { NormalizedMessage } from '../NormalizedMessage'; - -/** - * Creates new default formatter. - * - * @returns {defaultFormatter} - */ -export function createDefaultFormatter() { - return function defaultFormatter( - message: NormalizedMessage, - useColors: boolean - ) { - const colors = new chalk.constructor({ enabled: useColors }); - const messageColor = message.isWarningSeverity() - ? colors.bold.yellow - : colors.bold.red; - const fileAndNumberColor = colors.bold.cyan; - const codeColor = colors.grey; - - if (message.code === NormalizedMessage.ERROR_CODE_INTERNAL) { - return ( - messageColor(`INTERNAL ${message.severity.toUpperCase()}: `) + - message.content + - (message.stack - ? os.EOL + 'stack trace:' + os.EOL + colors.gray(message.stack) - : '') - ); - } - - return [ - messageColor(`${message.severity.toUpperCase()} in `) + - fileAndNumberColor( - `${message.file}(${message.line},${message.character})` - ) + - messageColor(':'), - codeColor(message.getFormattedCode() + ': ') + message.content - ].join(os.EOL); - }; -} diff --git a/src/formatter/index.ts b/src/formatter/index.ts new file mode 100644 index 00000000..b997b5e1 --- /dev/null +++ b/src/formatter/index.ts @@ -0,0 +1,6 @@ +export * from './Formatter'; +export * from './DefaultFormatter'; +export * from './CodeframeFormatter'; +export * from './FormatterFactory'; +export * from './InternalFormatter'; +export * from './RawFormatter'; diff --git a/src/hooks.ts b/src/hooks.ts index 3948f2fa..42be5669 100644 --- a/src/hooks.ts +++ b/src/hooks.ts @@ -1,4 +1,3 @@ -// tslint:disable-next-line:no-implicit-dependencies import * as webpack from 'webpack'; import { AsyncSeriesHook, SyncHook } from 'tapable'; @@ -16,35 +15,16 @@ type ForkTsCheckerHookMap = Record< ForkTsCheckerHooks, SyncHook | AsyncSeriesHook >; -type ForkTsCheckerLegacyHookMap = Record; const compilerHookMap = new WeakMap(); -export const legacyHookMap: ForkTsCheckerLegacyHookMap = { - serviceBeforeStart: 'fork-ts-checker-service-before-start', - cancel: 'fork-ts-checker-cancel', - serviceStartError: 'fork-ts-checker-service-start-error', - waiting: 'fork-ts-checker-waiting', - serviceStart: 'fork-ts-checker-service-start', - receive: 'fork-ts-checker-receive', - serviceOutOfMemory: 'fork-ts-checker-service-out-of-memory', - emit: 'fork-ts-checker-emit', - done: 'fork-ts-checker-done' -}; - function createForkTsCheckerWebpackPluginHooks(): ForkTsCheckerHookMap { return { serviceBeforeStart: new AsyncSeriesHook([]), cancel: new SyncHook(['cancellationToken']), serviceStartError: new SyncHook(['error']), - waiting: new SyncHook(['hasTsLint']), - serviceStart: new SyncHook([ - 'tsconfigPath', - 'tslintPath', - 'watchPaths', - 'workersNumber', - 'memoryLimit' - ]), + waiting: new SyncHook([]), + serviceStart: new SyncHook(['tsconfigPath', 'memoryLimit']), receive: new SyncHook(['diagnostics', 'lints']), serviceOutOfMemory: new SyncHook([]), emit: new SyncHook(['diagnostics', 'lints', 'elapsed']), diff --git a/src/index.ts b/src/index.ts index b1c9f8e2..a049f7a0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,41 +1,36 @@ import * as path from 'path'; -import * as process from 'process'; import * as childProcess from 'child_process'; -import { RpcProvider } from 'worker-rpc'; -import * as semver from 'semver'; -import chalk, { Chalk } from 'chalk'; -import * as micromatch from 'micromatch'; -import * as os from 'os'; -// tslint:disable-next-line:no-implicit-dependencies import * as webpack from 'webpack'; -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; +import * as semver from 'semver'; +import micromatch from 'micromatch'; +import chalk from 'chalk'; +import { RpcProvider } from 'worker-rpc'; + import { CancellationToken } from './CancellationToken'; -import { NormalizedMessage } from './NormalizedMessage'; -import { createDefaultFormatter } from './formatter/defaultFormatter'; -import { createCodeframeFormatter } from './formatter/codeframeFormatter'; +import { + Formatter, + createFormatter, + createRawFormatter, + FormatterType, + FormatterOptions +} from './formatter'; import { fileExistsSync } from './FsHelper'; import { Message } from './Message'; - -import { - getForkTsCheckerWebpackPluginHooks, - legacyHookMap, - ForkTsCheckerHooks -} from './hooks'; -import { RunPayload, RunResult, RUN } from './RpcTypes'; +import { getForkTsCheckerWebpackPluginHooks } from './hooks'; +import { RUN, RunPayload, RunResult } from './RpcTypes'; +import { Issue, IssueSeverity } from './issue'; import { VueOptions } from './types/vue-options'; const checkerPluginName = 'fork-ts-checker-webpack-plugin'; namespace ForkTsCheckerWebpackPlugin { - export type Formatter = ( - message: NormalizedMessage, - useColors: boolean - ) => string; - export interface Logger { + // eslint-disable-next-line @typescript-eslint/no-explicit-any error(message?: any): void; + // eslint-disable-next-line @typescript-eslint/no-explicit-any warn(message?: any): void; + // eslint-disable-next-line @typescript-eslint/no-explicit-any info(message?: any): void; } @@ -43,25 +38,20 @@ namespace ForkTsCheckerWebpackPlugin { typescript: string; tsconfig: string; compilerOptions: object; - tslint: string | true | undefined; - tslintAutoFix: boolean; eslint: boolean; /** Options to supply to eslint https://eslint.org/docs/1.0.0/developer-guide/nodejs-api#cliengine */ eslintOptions: object; - watch: string | string[]; async: boolean; ignoreDiagnostics: number[]; ignoreLints: string[]; ignoreLintWarnings: boolean; reportFiles: string[]; - colors: boolean; logger: Logger; - formatter: 'default' | 'codeframe' | Formatter; - formatterOptions: any; + formatter: FormatterType; + formatterOptions: FormatterOptions; silent: boolean; checkSyntacticErrors: boolean; memoryLimit: number; - workers: number; vue: boolean | Partial; useTypescriptIncrementalApi: boolean; measureCompilationTime: boolean; @@ -72,38 +62,24 @@ namespace ForkTsCheckerWebpackPlugin { /** * ForkTsCheckerWebpackPlugin - * Runs typescript type checker and linter (tslint) on separate process. + * Runs typescript type checker and linter on separate process. * This speed-ups build a lot. * * Options description in README.md */ class ForkTsCheckerWebpackPlugin { public static readonly DEFAULT_MEMORY_LIMIT = 2048; - public static readonly ONE_CPU = 1; - public static readonly ALL_CPUS = os.cpus && os.cpus() ? os.cpus().length : 1; - public static readonly ONE_CPU_FREE = Math.max( - 1, - ForkTsCheckerWebpackPlugin.ALL_CPUS - 1 - ); - public static readonly TWO_CPUS_FREE = Math.max( - 1, - ForkTsCheckerWebpackPlugin.ALL_CPUS - 2 - ); - - public static getCompilerHooks( - compiler: any - ): Record { + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + public static getCompilerHooks(compiler: any) { return getForkTsCheckerWebpackPluginHooks(compiler); } public readonly options: Partial; private tsconfig: string; private compilerOptions: object; - private tslint: string | boolean | undefined = false; - private eslint: boolean = false; + private eslint = false; private eslintOptions: object = {}; - private tslintAutoFix: boolean = false; - private watch: string[]; private ignoreDiagnostics: number[]; private ignoreLints: string[]; private ignoreLintWarnings: boolean; @@ -112,36 +88,32 @@ class ForkTsCheckerWebpackPlugin { private silent: boolean; private async: boolean; private checkSyntacticErrors: boolean; - private workersNumber: number; private memoryLimit: number; - private useColors: boolean; - private colors: Chalk; - private formatter: ForkTsCheckerWebpackPlugin.Formatter; + private formatter: Formatter; + private rawFormatter: Formatter; private useTypescriptIncrementalApi: boolean; private resolveModuleNameModule: string | undefined; private resolveTypeReferenceDirectiveModule: string | undefined; private tsconfigPath: string | undefined = undefined; - private tslintPath: string | undefined = undefined; - private watchPaths: string[] = []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any private compiler: any = undefined; private started: [number, number] | undefined = undefined; private elapsed: [number, number] | undefined = undefined; private cancellationToken: CancellationToken | undefined = undefined; - private isWatching: boolean = false; - private checkDone: boolean = false; - private compilationDone: boolean = false; - private diagnostics: NormalizedMessage[] = []; - private lints: NormalizedMessage[] = []; + private isWatching = false; + private checkDone = false; + private compilationDone = false; + private diagnostics: Issue[] = []; + private lints: Issue[] = []; private emitCallback: () => void; private doneCallback: () => void; private typescriptPath: string; private typescript: typeof ts; private typescriptVersion: string; - private tslintVersion: string | undefined; private eslintVersion: string | undefined = undefined; private service?: childProcess.ChildProcess; @@ -150,8 +122,9 @@ class ForkTsCheckerWebpackPlugin { private vue: VueOptions; private measureTime: boolean; + // eslint-disable-next-line @typescript-eslint/no-explicit-any private performance: any; - private startAt: number = 0; + private startAt = 0; protected nodeArgs: string[] = []; @@ -159,8 +132,6 @@ class ForkTsCheckerWebpackPlugin { options = options || ({} as ForkTsCheckerWebpackPlugin.Options); this.options = { ...options }; - this.watch = - typeof options.watch === 'string' ? [options.watch] : options.watch || []; this.ignoreDiagnostics = options.ignoreDiagnostics || []; this.ignoreLints = options.ignoreLints || []; this.ignoreLintWarnings = options.ignoreLintWarnings === true; @@ -172,18 +143,13 @@ class ForkTsCheckerWebpackPlugin { this.resolveModuleNameModule = options.resolveModuleNameModule; this.resolveTypeReferenceDirectiveModule = options.resolveTypeReferenceDirectiveModule; - this.workersNumber = options.workers || ForkTsCheckerWebpackPlugin.ONE_CPU; this.memoryLimit = options.memoryLimit || ForkTsCheckerWebpackPlugin.DEFAULT_MEMORY_LIMIT; - this.useColors = options.colors !== false; // default true - this.colors = new chalk.constructor({ enabled: this.useColors }); - this.formatter = - options.formatter && typeof options.formatter === 'function' - ? options.formatter - : ForkTsCheckerWebpackPlugin.createFormatter( - (options.formatter as 'default' | 'codeframe') || 'default', - options.formatterOptions || {} - ); + this.formatter = createFormatter( + options.formatter, + options.formatterOptions + ); + this.rawFormatter = createRawFormatter(); this.emitCallback = this.createNoopEmitCallback(); this.doneCallback = this.createDoneCallback(); @@ -207,14 +173,6 @@ class ForkTsCheckerWebpackPlugin { this.eslint = true; this.eslintVersion = eslintVersion; this.eslintOptions = eslintOptions; - } else { - const { tslint, tslintVersion, tslintAutoFix } = this.validateTslint( - options - ); - - this.tslint = tslint; - this.tslintVersion = tslintVersion; - this.tslintAutoFix = tslintAutoFix; } this.vue = ForkTsCheckerWebpackPlugin.prepareVueOptions(options.vue); @@ -226,7 +184,14 @@ class ForkTsCheckerWebpackPlugin { this.measureTime = options.measureCompilationTime === true; if (this.measureTime) { + if (semver.lt(process.version, '8.5.0')) { + throw new Error( + `To use 'measureCompilationTime' option, please update to Node.js >= v8.5.0 ` + + `(current version is ${process.version})` + ); + } // Node 8+ only + // eslint-disable-next-line node/no-unsupported-features/node-builtins this.performance = require('perf_hooks').performance; } } @@ -267,45 +232,23 @@ class ForkTsCheckerWebpackPlugin { }; } - private validateTslint(options: Partial) { - const tslint = options.tslint - ? options.tslint === true - ? true - : options.tslint - : undefined; - let tslintAutoFix, tslintVersion; - - try { - tslintAutoFix = options.tslintAutoFix || false; - tslintVersion = tslint - ? // tslint:disable-next-line:no-implicit-dependencies - require('tslint').Linter.VERSION - : undefined; - } catch (_ignored) { - throw new Error( - 'When you use `tslint` option, make sure to install `tslint`.' - ); - } - - if (tslintVersion && semver.lt(tslintVersion, '4.0.0')) { - throw new Error( - `Cannot use current tslint version of ${tslintVersion}, the minimum required version is 4.0.0` - ); - } - - return { tslint, tslintAutoFix, tslintVersion }; - } - private validateEslint(options: Partial) { let eslintVersion: string; const eslintOptions = typeof options.eslintOptions === 'object' ? options.eslintOptions : {}; + if (semver.lt(process.version, '8.10.0')) { + throw new Error( + `To use 'eslint' option, please update to Node.js >= v8.10.0 ` + + `(current version is ${process.version})` + ); + } + try { eslintVersion = require('eslint').Linter.version; - } catch (_ignored) { + } catch (error) { throw new Error( - 'When you use `eslint` option, make sure to install `eslint`.' + `When you use 'eslint' option, make sure to install 'eslint'.` ); } @@ -329,39 +272,14 @@ class ForkTsCheckerWebpackPlugin { } } - private static createFormatter(type: 'default' | 'codeframe', options: any) { - switch (type) { - case 'default': - return createDefaultFormatter(); - case 'codeframe': - return createCodeframeFormatter(options); - default: - throw new Error( - 'Unknown "' + type + '" formatter. Available are: default, codeframe.' - ); - } - } - + // eslint-disable-next-line @typescript-eslint/no-explicit-any public apply(compiler: any) { this.compiler = compiler; this.tsconfigPath = this.computeContextPath(this.tsconfig); - this.tslintPath = - typeof this.tslint === 'string' - ? this.computeContextPath(this.tslint as string) - : undefined; - this.watchPaths = this.watch.map(this.computeContextPath.bind(this)); // validate config const tsconfigOk = fileExistsSync(this.tsconfigPath); - const tslintOk = !this.tslintPath || fileExistsSync(this.tslintPath); - - if (this.useTypescriptIncrementalApi && this.workersNumber !== 1) { - throw new Error( - 'Using typescript incremental compilation API ' + - 'is currently only allowed with a single worker.' - ); - } // validate logger if (this.logger) { @@ -372,40 +290,24 @@ class ForkTsCheckerWebpackPlugin { } } - if (tsconfigOk && tslintOk) { - this.pluginStart(); - this.pluginStop(); - this.pluginCompile(); - this.pluginEmit(); - this.pluginDone(); - } else { - if (!tsconfigOk) { - throw new Error( - 'Cannot find "' + - this.tsconfigPath + - '" file. Please check webpack and ForkTsCheckerWebpackPlugin configuration. \n' + - 'Possible errors: \n' + - ' - wrong `context` directory in webpack configuration' + - ' (if `tsconfig` is not set or is a relative path in fork plugin configuration)\n' + - ' - wrong `tsconfig` path in fork plugin configuration' + - ' (should be a relative or absolute path)' - ); - } - if (!tslintOk) { - throw new Error( - 'Cannot find "' + - this.tslintPath + - '" file. Please check webpack and ForkTsCheckerWebpackPlugin configuration. \n' + - 'Possible errors: \n' + - ' - wrong `context` directory in webpack configuration' + - ' (if `tslint` is not set or is a relative path in fork plugin configuration)\n' + - ' - wrong `tslint` path in fork plugin configuration' + - ' (should be a relative or absolute path)\n' + - ' - `tslint` path is not set to false in fork plugin configuration' + - ' (if you want to disable tslint support)' - ); - } + if (!tsconfigOk) { + throw new Error( + 'Cannot find "' + + this.tsconfigPath + + '" file. Please check webpack and ForkTsCheckerWebpackPlugin configuration. \n' + + 'Possible errors: \n' + + ' - wrong `context` directory in webpack configuration' + + ' (if `tsconfig` is not set or is a relative path in fork plugin configuration)\n' + + ' - wrong `tsconfig` path in fork plugin configuration' + + ' (should be a relative or absolute path)' + ); } + + this.pluginStart(); + this.pluginStop(); + this.pluginCompile(); + this.pluginEmit(); + this.pluginDone(); } private computeContextPath(filePath: string) { @@ -415,25 +317,21 @@ class ForkTsCheckerWebpackPlugin { } private pluginStart() { - const run = (_compiler: webpack.Compiler, callback: () => void) => { + const run = ( + compilation: webpack.compilation.Compilation, + callback: () => void + ) => { this.isWatching = false; callback(); }; - const watchRun = (_compiler: webpack.Compiler, callback: () => void) => { + const watchRun = (compiler: webpack.Compiler, callback: () => void) => { this.isWatching = true; callback(); }; - if ('hooks' in this.compiler) { - // webpack 4+ - this.compiler.hooks.run.tapAsync(checkerPluginName, run); - this.compiler.hooks.watchRun.tapAsync(checkerPluginName, watchRun); - } else { - // webpack 2 / 3 - this.compiler.plugin('run', run); - this.compiler.plugin('watch-run', watchRun); - } + this.compiler.hooks.run.tapAsync(checkerPluginName, run); + this.compiler.hooks.watchRun.tapAsync(checkerPluginName, watchRun); } private pluginStop() { @@ -441,21 +339,14 @@ class ForkTsCheckerWebpackPlugin { this.killService(); }; - const done = (_stats: webpack.Stats) => { + const done = () => { if (!this.isWatching) { this.killService(); } }; - if ('hooks' in this.compiler) { - // webpack 4+ - this.compiler.hooks.watchClose.tap(checkerPluginName, watchClose); - this.compiler.hooks.done.tap(checkerPluginName, done); - } else { - // webpack 2 / 3 - this.compiler.plugin('watch-close', watchClose); - this.compiler.plugin('done', done); - } + this.compiler.hooks.watchClose.tap(checkerPluginName, watchClose); + this.compiler.hooks.done.tap(checkerPluginName, done); process.on('exit', () => { this.killService(); @@ -463,115 +354,58 @@ class ForkTsCheckerWebpackPlugin { } private pluginCompile() { - if ('hooks' in this.compiler) { - // webpack 4+ - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - this.compiler - ); - this.compiler.hooks.compile.tap(checkerPluginName, () => { - this.compilationDone = false; - forkTsCheckerHooks.serviceBeforeStart.callAsync(() => { - if (this.cancellationToken) { - // request cancellation if there is not finished job - this.cancellationToken.requestCancellation(); - forkTsCheckerHooks.cancel.call(this.cancellationToken); - } - this.checkDone = false; - - this.started = process.hrtime(); + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + this.compiler + ); + this.compiler.hooks.compile.tap(checkerPluginName, () => { + this.compilationDone = false; + forkTsCheckerHooks.serviceBeforeStart.callAsync(() => { + if (this.cancellationToken) { + // request cancellation if there is not finished job + this.cancellationToken.requestCancellation(); + forkTsCheckerHooks.cancel.call(this.cancellationToken); + } + this.checkDone = false; - // create new token for current job - this.cancellationToken = new CancellationToken(this.typescript); - if (!this.service || !this.service.connected) { - this.spawnService(); - } + this.started = process.hrtime(); - try { - if (this.measureTime) { - this.startAt = this.performance.now(); - } - this.serviceRpc!.rpc( - RUN, - this.cancellationToken.toJSON() - ).then(result => { - if (result) { - this.handleServiceMessage(result); - } - }); - } catch (error) { - if (!this.silent && this.logger) { - this.logger.error( - this.colors.red( - 'Cannot start checker service: ' + - (error ? error.toString() : 'Unknown error') - ) - ); - } + // create new token for current job + this.cancellationToken = new CancellationToken(this.typescript); + if (!this.service || !this.service.connected) { + this.spawnService(); + } - forkTsCheckerHooks.serviceStartError.call(error); + try { + if (this.measureTime) { + this.startAt = this.performance.now(); } - }); - }); - } else { - // webpack 2 / 3 - this.compiler.plugin('compile', () => { - this.compilationDone = false; - this.compiler.applyPluginsAsync( - legacyHookMap.serviceBeforeStart, - () => { - if (this.cancellationToken) { - // request cancellation if there is not finished job - this.cancellationToken.requestCancellation(); - this.compiler.applyPlugins( - legacyHookMap.cancel, - this.cancellationToken - ); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.serviceRpc!.rpc( + RUN, + this.cancellationToken.toJSON() + ).then(result => { + if (result) { + this.handleServiceMessage(result); } - this.checkDone = false; - - this.started = process.hrtime(); - - // create new token for current job - this.cancellationToken = new CancellationToken( - this.typescript, - undefined, - undefined + }); + } catch (error) { + if (!this.silent && this.logger) { + this.logger.error( + chalk.red( + 'Cannot start checker service: ' + + (error ? error.toString() : 'Unknown error') + ) ); - if (!this.service || !this.service.connected) { - this.spawnService(); - } - - try { - this.serviceRpc!.rpc( - RUN, - this.cancellationToken.toJSON() - ).then(result => { - if (result) { - this.handleServiceMessage(result); - } - }); - } catch (error) { - if (!this.silent && this.logger) { - this.logger.error( - this.colors.red( - 'Cannot start checker service: ' + - (error ? error.toString() : 'Unknown error') - ) - ); - } - - this.compiler.applyPlugins( - legacyHookMap.serviceStartError, - error - ); - } } - ); + + forkTsCheckerHooks.serviceStartError.call(error); + } }); - } + }); } private pluginEmit() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any const emit = (compilation: any, callback: () => void) => { if (this.isWatching && this.async) { callback(); @@ -587,74 +421,31 @@ class ForkTsCheckerWebpackPlugin { this.compilationDone = true; }; - if ('hooks' in this.compiler) { - // webpack 4+ - this.compiler.hooks.emit.tapAsync(checkerPluginName, emit); - } else { - // webpack 2 / 3 - this.compiler.plugin('emit', emit); - } + this.compiler.hooks.emit.tapAsync(checkerPluginName, emit); } private pluginDone() { - if ('hooks' in this.compiler) { - // webpack 4+ - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - this.compiler - ); - this.compiler.hooks.done.tap( - checkerPluginName, - (_stats: webpack.Stats) => { - if (!this.isWatching || !this.async) { - return; - } - - if (this.checkDone) { - this.doneCallback(); - } else { - if (this.compiler) { - forkTsCheckerHooks.waiting.call(this.tslint !== undefined); - } - if (!this.silent && this.logger) { - this.logger.info( - this.tslint - ? 'Type checking and linting in progress...' - : 'Type checking in progress...' - ); - } - } + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + this.compiler + ); + this.compiler.hooks.done.tap(checkerPluginName, () => { + if (!this.isWatching || !this.async) { + return; + } - this.compilationDone = true; - } - ); - } else { - // webpack 2 / 3 - this.compiler.plugin('done', () => { - if (!this.isWatching || !this.async) { - return; + if (this.checkDone) { + this.doneCallback(); + } else { + if (this.compiler) { + forkTsCheckerHooks.waiting.call(); } - - if (this.checkDone) { - this.doneCallback(); - } else { - if (this.compiler) { - this.compiler.applyPlugins( - legacyHookMap.waiting, - this.tslint !== undefined - ); - } - if (!this.silent && this.logger) { - this.logger.info( - this.tslint - ? 'Type checking and linting in progress...' - : 'Type checking in progress...' - ); - } + if (!this.silent && this.logger) { + this.logger.info('Type checking in progress...'); } + } - this.compilationDone = true; - }); - } + this.compilationDone = true; + }); } private spawnService() { @@ -663,13 +454,9 @@ class ForkTsCheckerWebpackPlugin { TYPESCRIPT_PATH: this.typescriptPath, TSCONFIG: this.tsconfigPath, COMPILER_OPTIONS: JSON.stringify(this.compilerOptions), - TSLINT: this.tslintPath || (this.tslint ? 'true' : ''), CONTEXT: this.compiler.options.context, - TSLINTAUTOFIX: String(this.tslintAutoFix), ESLINT: String(this.eslint), ESLINT_OPTIONS: JSON.stringify(this.eslintOptions), - WATCH: this.isWatching ? this.watchPaths.join('|') : '', - WORK_DIVISION: String(Math.max(1, this.workersNumber)), MEMORY_LIMIT: String(this.memoryLimit), CHECK_SYNTACTIC_ERRORS: String(this.checkSyntacticErrors), USE_INCREMENTAL_API: String(this.useTypescriptIncrementalApi === true), @@ -689,73 +476,29 @@ class ForkTsCheckerWebpackPlugin { } this.service = childProcess.fork( - path.resolve( - __dirname, - this.workersNumber > 1 ? './cluster.js' : './service.js' - ), + path.resolve(__dirname, './service.js'), [], { env, - execArgv: (this.workersNumber > 1 - ? [] - : ['--max-old-space-size=' + this.memoryLimit] - ).concat(this.nodeArgs), + execArgv: ['--max-old-space-size=' + this.memoryLimit].concat( + this.nodeArgs + ), stdio: ['inherit', 'inherit', 'inherit', 'ipc'] } ); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.serviceRpc = new RpcProvider(message => this.service!.send(message)); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.service.on('message', message => this.serviceRpc!.dispatch(message)); - if ('hooks' in this.compiler) { - // webpack 4+ - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - this.compiler - ); - forkTsCheckerHooks.serviceStart.call( - this.tsconfigPath, - this.tslintPath, - this.watchPaths, - this.workersNumber, - this.memoryLimit - ); - } else { - // webpack 2 / 3 - this.compiler.applyPlugins( - legacyHookMap.serviceStart, - this.tsconfigPath, - this.tslintPath, - this.watchPaths, - this.workersNumber, - this.memoryLimit - ); - } + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + this.compiler + ); + forkTsCheckerHooks.serviceStart.call(this.tsconfigPath, this.memoryLimit); if (!this.silent && this.logger) { - this.logger.info( - 'Starting type checking' + - (this.tslint ? ' and linting' : '') + - ' service...' - ); - this.logger.info( - 'Using ' + - this.colors.bold( - this.workersNumber === 1 - ? '1 worker' - : this.workersNumber + ' workers' - ) + - ' with ' + - this.colors.bold(this.memoryLimit + 'MB') + - ' memory limit' - ); - - if (this.watchPaths.length && this.isWatching) { - this.logger.info( - 'Watching:' + - (this.watchPaths.length > 1 ? '\n' : ' ') + - this.watchPaths.map(wpath => this.colors.grey(wpath)).join('\n') - ); - } + this.logger.info('Starting type checking service...'); } this.service.on('exit', (code: string | number, signal: string) => @@ -796,10 +539,8 @@ class ForkTsCheckerWebpackPlugin { this.checkDone = true; this.elapsed = process.hrtime(this.started); - this.diagnostics = message.diagnostics.map( - NormalizedMessage.createFromJSON - ); - this.lints = message.lints.map(NormalizedMessage.createFromJSON); + this.diagnostics = message.diagnostics; + this.lints = message.lints; if (this.ignoreDiagnostics.length) { this.diagnostics = this.diagnostics.filter( @@ -817,11 +558,11 @@ class ForkTsCheckerWebpackPlugin { } if (this.reportFiles.length) { - const reportFilesPredicate = (diagnostic: NormalizedMessage): boolean => { - if (diagnostic.file) { + const reportFilesPredicate = (issue: Issue): boolean => { + if (issue.file) { const relativeFileName = path.relative( this.compiler.options.context, - diagnostic.file + issue.file ); const matchResult = micromatch([relativeFileName], this.reportFiles); @@ -836,20 +577,10 @@ class ForkTsCheckerWebpackPlugin { this.lints = this.lints.filter(reportFilesPredicate); } - if ('hooks' in this.compiler) { - // webpack 4+ - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - this.compiler - ); - forkTsCheckerHooks.receive.call(this.diagnostics, this.lints); - } else { - // webpack 2 / 3 - this.compiler.applyPlugins( - legacyHookMap.receive, - this.diagnostics, - this.lints - ); - } + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + this.compiler + ); + forkTsCheckerHooks.receive.call(this.diagnostics, this.lints); if (this.compilationDone) { this.isWatching && this.async ? this.doneCallback() : this.emitCallback(); @@ -862,20 +593,14 @@ class ForkTsCheckerWebpackPlugin { } // probably out of memory :/ if (this.compiler) { - if ('hooks' in this.compiler) { - // webpack 4+ - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - this.compiler - ); - forkTsCheckerHooks.serviceOutOfMemory.call(); - } else { - // webpack 2 / 3 - this.compiler.applyPlugins(legacyHookMap.serviceOutOfMemory); - } + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + this.compiler + ); + forkTsCheckerHooks.serviceOutOfMemory.call(); } if (!this.silent && this.logger) { this.logger.error( - this.colors.red( + chalk.red( 'Type checking and linting aborted - probably out of memory. ' + 'Check `memoryLimit` option in ForkTsCheckerWebpackPlugin configuration.' ) @@ -893,40 +618,24 @@ class ForkTsCheckerWebpackPlugin { } const elapsed = Math.round(this.elapsed[0] * 1e9 + this.elapsed[1]); - if ('hooks' in this.compiler) { - // webpack 4+ - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - this.compiler - ); - forkTsCheckerHooks.emit.call(this.diagnostics, this.lints, elapsed); - } else { - // webpack 2 / 3 - this.compiler.applyPlugins( - legacyHookMap.emit, - this.diagnostics, - this.lints, - elapsed - ); - } + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + this.compiler + ); + forkTsCheckerHooks.emit.call(this.diagnostics, this.lints, elapsed); - this.diagnostics.concat(this.lints).forEach(message => { + this.diagnostics.concat(this.lints).forEach(issue => { // webpack message format const formatted = { - rawMessage: - message.severity.toUpperCase() + - ' ' + - message.getFormattedCode() + - ': ' + - message.content, - message: this.formatter(message, this.useColors), + rawMessage: this.rawFormatter(issue), + message: this.formatter(issue), location: { - line: message.line, - character: message.character + line: issue.line, + character: issue.character }, - file: message.file + file: issue.file }; - if (message.isWarningSeverity()) { + if (issue.severity === IssueSeverity.WARNING) { if (!this.ignoreLintWarnings) { compilation.warnings.push(formatted); } @@ -940,21 +649,19 @@ class ForkTsCheckerWebpackPlugin { } private createNoopEmitCallback() { - // tslint:disable-next-line:no-empty + // this function is empty intentionally + // eslint-disable-next-line @typescript-eslint/no-empty-function return function noopEmitCallback() {}; } - private printLoggerMessage( - message: NormalizedMessage, - formattedMessage: string - ): void { - if (message.isWarningSeverity()) { + private printLoggerMessage(issue: Issue, formattedIssue: string): void { + if (issue.severity === IssueSeverity.WARNING) { if (this.ignoreLintWarnings) { return; } - this.logger.warn(formattedMessage); + this.logger.warn(formattedIssue); } else { - this.logger.error(formattedMessage); + this.logger.error(formattedIssue); } } @@ -966,50 +673,32 @@ class ForkTsCheckerWebpackPlugin { const elapsed = Math.round(this.elapsed[0] * 1e9 + this.elapsed[1]); if (this.compiler) { - if ('hooks' in this.compiler) { - // webpack 4+ - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - this.compiler - ); - forkTsCheckerHooks.done.call(this.diagnostics, this.lints, elapsed); - } else { - // webpack 2 / 3 - this.compiler.applyPlugins( - legacyHookMap.done, - this.diagnostics, - this.lints, - elapsed - ); - } + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + this.compiler + ); + forkTsCheckerHooks.done.call(this.diagnostics, this.lints, elapsed); } if (!this.silent && this.logger) { if (this.diagnostics.length || this.lints.length) { - (this.lints || []).concat(this.diagnostics).forEach(message => { - const formattedMessage = this.formatter(message, this.useColors); + (this.lints || []).concat(this.diagnostics).forEach(diagnostic => { + const formattedDiagnostic = this.formatter(diagnostic); - this.printLoggerMessage(message, formattedMessage); + this.printLoggerMessage(diagnostic, formattedDiagnostic); }); } if (!this.diagnostics.length) { - this.logger.info(this.colors.green('No type errors found')); - } - if (this.tslint && !this.lints.length) { - this.logger.info(this.colors.green('No lint errors found')); + this.logger.info(chalk.green('No type errors found')); } this.logger.info( 'Version: typescript ' + - this.colors.bold(this.typescriptVersion) + + chalk.bold(this.typescriptVersion) + (this.eslint - ? ', eslint ' + this.colors.bold(this.eslintVersion as string) - : this.tslint - ? ', tslint ' + this.colors.bold(this.tslintVersion as string) + ? ', eslint ' + chalk.bold(this.eslintVersion as string) : '') ); this.logger.info( - 'Time: ' + - this.colors.bold(Math.round(elapsed / 1e6).toString()) + - 'ms' + 'Time: ' + chalk.bold(Math.round(elapsed / 1e6).toString()) + 'ms' ); } }; diff --git a/src/issue/Issue.ts b/src/issue/Issue.ts new file mode 100644 index 00000000..d15bca7c --- /dev/null +++ b/src/issue/Issue.ts @@ -0,0 +1,87 @@ +import { + IssueSeverity, + compareIssueSeverities, + isIssueSeverity +} from './IssueSeverity'; +import { IssueOrigin, compareIssueOrigins, isIssueOrigin } from './IssueOrigin'; + +interface Issue { + origin: IssueOrigin; + severity: IssueSeverity; + code: string; + message: string; + file?: string; + line?: number; + character?: number; + stack?: string; +} + +function isIssue(value: unknown): value is Issue { + return ( + !!value && + typeof value === 'object' && + isIssueOrigin((value as Issue).origin) && + isIssueSeverity((value as Issue).severity) && + !!(value as Issue).code && + !!(value as Issue).message + ); +} + +function compareOptionalStrings(stringA?: string, stringB?: string) { + if (stringA === stringB) { + return 0; + } + + if (stringA === undefined || stringA === null) { + return -1; + } + if (stringB === undefined || stringB === null) { + return 1; + } + + return stringA.toString().localeCompare(stringB.toString()); +} + +function compareNumbers(numberA?: number, numberB?: number) { + if (numberA === numberB) { + return 0; + } + + if (numberA === undefined || numberA === null) { + return -1; + } + if (numberB === undefined || numberB === null) { + return 1; + } + + return Math.sign(numberA - numberB); +} + +function compareIssues(issueA: Issue, issueB: Issue) { + return ( + compareIssueOrigins(issueA.origin, issueB.origin) || + compareOptionalStrings(issueA.file, issueB.file) || + compareIssueSeverities(issueA.severity, issueB.severity) || + compareNumbers(issueA.line, issueB.line) || + compareNumbers(issueA.character, issueB.character) || + compareOptionalStrings(issueA.code, issueB.code) || + compareOptionalStrings(issueA.message, issueB.message) || + compareOptionalStrings(issueA.stack, issueB.stack) || + 0 /* EqualTo */ + ); +} + +function equalsIssues(issueA: Issue, issueB: Issue) { + return compareIssues(issueA, issueB) === 0; +} + +function deduplicateAndSortIssues(issues: Issue[]) { + const sortedIssues = issues.filter(isIssue).sort(compareIssues); + + return sortedIssues.filter( + (issue, index) => + index === 0 || !equalsIssues(issue, sortedIssues[index - 1]) + ); +} + +export { Issue, isIssue, deduplicateAndSortIssues }; diff --git a/src/issue/IssueOrigin.ts b/src/issue/IssueOrigin.ts new file mode 100644 index 00000000..01e81ed9 --- /dev/null +++ b/src/issue/IssueOrigin.ts @@ -0,0 +1,28 @@ +const IssueOrigin = { + TYPESCRIPT: 'typescript', + ESLINT: 'eslint', + INTERNAL: 'internal' +} as const; +type IssueOrigin = typeof IssueOrigin[keyof typeof IssueOrigin]; + +function isIssueOrigin(value: unknown): value is IssueOrigin { + return [ + IssueOrigin.TYPESCRIPT, + IssueOrigin.ESLINT, + IssueOrigin.INTERNAL + ].includes(value as IssueOrigin); +} + +function compareIssueOrigins(originA: IssueOrigin, originB: IssueOrigin) { + const [priorityA, priorityB] = [originA, originB].map(origin => + [ + IssueOrigin.ESLINT /* 0 */, + IssueOrigin.TYPESCRIPT /* 1 */, + IssueOrigin.INTERNAL /* 2 */ + ].indexOf(origin) + ); + + return Math.sign(priorityB - priorityA); +} + +export { IssueOrigin, isIssueOrigin, compareIssueOrigins }; diff --git a/src/issue/IssueSeverity.ts b/src/issue/IssueSeverity.ts new file mode 100644 index 00000000..bc0973f1 --- /dev/null +++ b/src/issue/IssueSeverity.ts @@ -0,0 +1,26 @@ +const IssueSeverity = { + ERROR: 'error', + WARNING: 'warning' +} as const; +type IssueSeverity = typeof IssueSeverity[keyof typeof IssueSeverity]; + +function isIssueSeverity(value: unknown): value is IssueSeverity { + return [IssueSeverity.ERROR, IssueSeverity.WARNING].includes( + value as IssueSeverity + ); +} + +function compareIssueSeverities( + severityA: IssueSeverity, + severityB: IssueSeverity +) { + const [priorityA, priorityB] = [severityA, severityB].map(severity => + [IssueSeverity.WARNING /* 0 */, IssueSeverity.ERROR /* 1 */].indexOf( + severity + ) + ); + + return Math.sign(priorityB - priorityA); +} + +export { IssueSeverity, isIssueSeverity, compareIssueSeverities }; diff --git a/src/issue/eslint/EsLintIssueFactory.ts b/src/issue/eslint/EsLintIssueFactory.ts new file mode 100644 index 00000000..96bc6f83 --- /dev/null +++ b/src/issue/eslint/EsLintIssueFactory.ts @@ -0,0 +1,67 @@ +import * as eslint from 'eslint'; +import { FileAwareEsLintMessage } from './FileAwareEsLintMessage'; +import { deduplicateAndSortIssues, Issue } from '../Issue'; +import { IssueOrigin } from '../IssueOrigin'; +import { IssueSeverity } from '../IssueSeverity'; + +function createIssueFromEsLintMessage(message: FileAwareEsLintMessage): Issue { + return { + origin: IssueOrigin.ESLINT, + code: message.ruleId ? String(message.ruleId) : '[unknown]', + severity: + message.severity === 1 ? IssueSeverity.WARNING : IssueSeverity.ERROR, + message: message.message, + file: message.filePath, + line: message.line, + character: message.column + }; +} + +function createFileAwareEsLintMessagesFromEsLintResult( + result: eslint.CLIEngine.LintResult +): FileAwareEsLintMessage[] { + return result.messages.map(message => ({ + ...message, + filePath: result.filePath + })); +} + +function createFileAwareEsLintMessagesFromEsLintReport( + report: eslint.CLIEngine.LintReport +): FileAwareEsLintMessage[] { + return report.results.reduce( + (messages, result) => [ + ...messages, + ...createFileAwareEsLintMessagesFromEsLintResult(result) + ], + [] + ); +} + +function createFileAwareEsLintMessagesFromEsLintReports( + reports: eslint.CLIEngine.LintReport[] +): FileAwareEsLintMessage[] { + return reports.reduce( + (messages, report) => [ + ...messages, + ...createFileAwareEsLintMessagesFromEsLintReport(report) + ], + [] + ); +} + +function createIssuesFromEsLintMessages( + messages: FileAwareEsLintMessage[] +): Issue[] { + return deduplicateAndSortIssues(messages.map(createIssueFromEsLintMessage)); +} + +function createIssuesFromEsLintReports( + reports: eslint.CLIEngine.LintReport[] +): Issue[] { + return createIssuesFromEsLintMessages( + createFileAwareEsLintMessagesFromEsLintReports(reports) + ); +} + +export { createIssuesFromEsLintReports }; diff --git a/src/issue/eslint/FileAwareEsLintMessage.ts b/src/issue/eslint/FileAwareEsLintMessage.ts new file mode 100644 index 00000000..6a9ec6c2 --- /dev/null +++ b/src/issue/eslint/FileAwareEsLintMessage.ts @@ -0,0 +1,11 @@ +import * as eslint from 'eslint'; + +/** + * We need to define custom interface because of eslint architecture which + * groups lint messages per file + */ +interface FileAwareEsLintMessage extends eslint.Linter.LintMessage { + filePath?: string; +} + +export { FileAwareEsLintMessage }; diff --git a/src/issue/eslint/index.ts b/src/issue/eslint/index.ts new file mode 100644 index 00000000..a2b99197 --- /dev/null +++ b/src/issue/eslint/index.ts @@ -0,0 +1,2 @@ +export * from './FileAwareEsLintMessage'; +export * from './EsLintIssueFactory'; diff --git a/src/issue/index.ts b/src/issue/index.ts new file mode 100644 index 00000000..071fc54e --- /dev/null +++ b/src/issue/index.ts @@ -0,0 +1,7 @@ +export * from './Issue'; +export * from './IssueOrigin'; +export * from './IssueSeverity'; + +export * from './typescript'; +export * from './eslint'; +export * from './internal'; diff --git a/src/issue/internal/InternalIssueFactory.ts b/src/issue/internal/InternalIssueFactory.ts new file mode 100644 index 00000000..1ecacfe6 --- /dev/null +++ b/src/issue/internal/InternalIssueFactory.ts @@ -0,0 +1,24 @@ +import { Issue } from '../Issue'; +import { IssueOrigin } from '../IssueOrigin'; +import { IssueSeverity } from '../IssueSeverity'; + +interface ErrorLike { + message?: string; + stack?: string; + toString?: () => string; +} + +function createIssueFromInternalError(error: ErrorLike): Issue { + return { + origin: IssueOrigin.INTERNAL, + severity: IssueSeverity.ERROR, + code: 'INTERNAL', + message: + typeof error.message === 'string' + ? error.message + : (error.toString && error.toString()) || '', + stack: typeof error.stack === 'string' ? error.stack : undefined + }; +} + +export { createIssueFromInternalError }; diff --git a/src/issue/internal/index.ts b/src/issue/internal/index.ts new file mode 100644 index 00000000..bb225ce3 --- /dev/null +++ b/src/issue/internal/index.ts @@ -0,0 +1 @@ +export * from './InternalIssueFactory'; diff --git a/src/issue/typescript/TypeScriptIssueFactory.ts b/src/issue/typescript/TypeScriptIssueFactory.ts new file mode 100644 index 00000000..5af27b0f --- /dev/null +++ b/src/issue/typescript/TypeScriptIssueFactory.ts @@ -0,0 +1,71 @@ +import * as ts from 'typescript'; // import for types alone +import { deduplicateAndSortIssues, Issue } from '../Issue'; +import { IssueOrigin } from '../IssueOrigin'; +import { IssueSeverity } from '../IssueSeverity'; + +/** + * Based on the TypeScript source - not used directly from the `typescript` + * package as there is an option to pass a custom TypeScript instance. + */ +function flattenDiagnosticMessageText( + messageText: string | ts.DiagnosticMessageChain +) { + if (typeof messageText === 'string') { + return messageText; + } else { + let diagnosticChain: ts.DiagnosticMessageChain | undefined = messageText; + let flattenMessageText = ''; + let indent = 0; + + while (diagnosticChain) { + if (indent) { + flattenMessageText += '\n'; + for (let i = 0; i < indent; i++) { + flattenMessageText += ' '; + } + } + + flattenMessageText += diagnosticChain.messageText; + indent++; + diagnosticChain = diagnosticChain.next; + } + + return flattenMessageText; + } +} + +function createIssueFromTsDiagnostic(diagnostic: ts.Diagnostic): Issue { + let file: string | undefined; + let line: number | undefined; + let character: number | undefined; + + if (diagnostic.file) { + file = diagnostic.file.fileName; + + if (diagnostic.start) { + const position = diagnostic.file.getLineAndCharacterOfPosition( + diagnostic.start + ); + line = position.line + 1; + character = position.character + 1; + } + } + + return { + origin: IssueOrigin.TYPESCRIPT, + code: String(diagnostic.code), + // we don't handle Suggestion and Message diagnostics + severity: + diagnostic.category === 0 ? IssueSeverity.WARNING : IssueSeverity.ERROR, + message: flattenDiagnosticMessageText(diagnostic.messageText), + file, + line, + character + }; +} + +function createIssuesFromTsDiagnostics(diagnostic: ts.Diagnostic[]): Issue[] { + return deduplicateAndSortIssues(diagnostic.map(createIssueFromTsDiagnostic)); +} + +export { createIssueFromTsDiagnostic, createIssuesFromTsDiagnostics }; diff --git a/src/issue/typescript/index.ts b/src/issue/typescript/index.ts new file mode 100644 index 00000000..1de7d0a9 --- /dev/null +++ b/src/issue/typescript/index.ts @@ -0,0 +1 @@ +export * from './TypeScriptIssueFactory'; diff --git a/src/linterConfigHelpers.ts b/src/linterConfigHelpers.ts deleted file mode 100644 index 9ef5a890..00000000 --- a/src/linterConfigHelpers.ts +++ /dev/null @@ -1,56 +0,0 @@ -import * as path from 'path'; -// tslint:disable-next-line:no-implicit-dependencies -import { Configuration } from 'tslint'; -import * as minimatch from 'minimatch'; -import { fileExistsSync } from './FsHelper'; - -// Need some augmentation here - linterOptions.exclude is not (yet) part of the official -// types for tslint. -export interface ConfigurationFile extends Configuration.IConfigurationFile { - linterOptions?: { - typeCheck?: boolean; - exclude?: string[]; - }; -} - -export function loadLinterConfig(configFile: string): ConfigurationFile { - // tslint:disable-next-line:no-implicit-dependencies - const tslint = require('tslint'); - - return tslint.Configuration.loadConfigurationFromPath( - configFile - ) as ConfigurationFile; -} - -export function makeGetLinterConfig( - linterConfigs: Record, - linterExclusions: minimatch.IMinimatch[], - context: string -): (file: string) => ConfigurationFile | undefined { - const getLinterConfig = (file: string): ConfigurationFile | undefined => { - const dirname = path.dirname(file); - if (dirname in linterConfigs) { - return linterConfigs[dirname]; - } - - if (fileExistsSync(path.join(dirname, 'tslint.json'))) { - const config = loadLinterConfig(path.join(dirname, 'tslint.json')); - - if (config.linterOptions && config.linterOptions.exclude) { - linterExclusions.concat( - config.linterOptions.exclude.map( - pattern => new minimatch.Minimatch(path.resolve(pattern)) - ) - ); - } - linterConfigs[dirname] = config; - } else { - if (dirname !== context && dirname !== file) { - linterConfigs[dirname] = getLinterConfig(dirname); - } - } - return linterConfigs[dirname]; - }; - - return getLinterConfig; -} diff --git a/src/patchTypescript.ts b/src/patchTypescript.ts index 6b0868c3..f3b166a6 100644 --- a/src/patchTypescript.ts +++ b/src/patchTypescript.ts @@ -1,4 +1,3 @@ -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; // Imported for types alone export interface TypeScriptPatchConfig { @@ -12,24 +11,6 @@ export interface TypeScriptPatchConfig { skipGetSyntacticDiagnostics: boolean; } -/** - * While it is often possible to pass a wrapped or modified copy of `typescript` or `typescript.sys` as a function argument to override/extend some typescript-internal behavior, - * sometimes the typescript-internal code ignores these passed objects and directly references the internal `typescript` object reference. - * In these situations, the only way of consistently overriding some behavior is to directly replace methods on the `typescript` object. - * - * So beware, this method directly modifies the passed `typescript` object! - * @param typescript TypeScript instance to patch - * @param config - */ -export function patchTypescript( - typescript: typeof ts, - config: TypeScriptPatchConfig -) { - if (config.skipGetSyntacticDiagnostics) { - patchSkipGetSyntacticDiagnostics(typescript); - } -} - /** * Overrides the [`typescript.createEmitAndSemanticDiagnosticsBuilderProgram`](https://github.com/Microsoft/TypeScript/blob/89386ddda7dafc63cb35560e05412487f47cc267/src/compiler/builder.ts#L1176) * method to return a `ts.Program` instance that does not emit syntactic errors, @@ -49,9 +30,11 @@ function patchSkipGetSyntacticDiagnostics(typescript: typeof ts) { typeof ts, 'createEmitAndSemanticDiagnosticsBuilderProgram' > = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any createEmitAndSemanticDiagnosticsBuilderProgram(...args: any[]) { const program = originalCreateEmitAndSemanticDiagnosticsBuilderProgram.apply( typescript, + // eslint-disable-next-line @typescript-eslint/no-explicit-any args as any ); program.getSyntacticDiagnostics = () => []; @@ -62,3 +45,21 @@ function patchSkipGetSyntacticDiagnostics(typescript: typeof ts) { // directly patch the typescript object! Object.assign(typescript, patchedMethods); } + +/** + * While it is often possible to pass a wrapped or modified copy of `typescript` or `typescript.sys` as a function argument to override/extend some typescript-internal behavior, + * sometimes the typescript-internal code ignores these passed objects and directly references the internal `typescript` object reference. + * In these situations, the only way of consistently overriding some behavior is to directly replace methods on the `typescript` object. + * + * So beware, this method directly modifies the passed `typescript` object! + * @param typescript TypeScript instance to patch + * @param config + */ +export function patchTypescript( + typescript: typeof ts, + config: TypeScriptPatchConfig +) { + if (config.skipGetSyntacticDiagnostics) { + patchSkipGetSyntacticDiagnostics(typescript); + } +} diff --git a/src/resolution.ts b/src/resolution.ts index ef67408a..2fe38965 100644 --- a/src/resolution.ts +++ b/src/resolution.ts @@ -1,4 +1,3 @@ -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; // Imported for types alone export type ResolveModuleName = ( @@ -24,11 +23,9 @@ export function makeResolutionFunctions( resolveModuleName = resolveModuleName || (( - // tslint:disable-next-line:no-shadowed-variable typescript, moduleName, containingFile, - // tslint:disable-next-line:no-shadowed-variable compilerOptions, moduleResolutionHost ) => { @@ -43,11 +40,9 @@ export function makeResolutionFunctions( resolveTypeReferenceDirective = resolveTypeReferenceDirective || (( - // tslint:disable-next-line:no-shadowed-variable typescript, typeDirectiveName, containingFile, - // tslint:disable-next-line:no-shadowed-variable compilerOptions, moduleResolutionHost ) => { diff --git a/src/service.ts b/src/service.ts index a0f04d67..d979e221 100644 --- a/src/service.ts +++ b/src/service.ts @@ -1,33 +1,27 @@ -import * as process from 'process'; -// tslint:disable-next-line:no-implicit-dependencies import * as ts from 'typescript'; // import for types alone import { IncrementalChecker } from './IncrementalChecker'; import { CancellationToken } from './CancellationToken'; -import { NormalizedMessage } from './NormalizedMessage'; import { IncrementalCheckerInterface, - ApiIncrementalCheckerParams, IncrementalCheckerParams } from './IncrementalCheckerInterface'; import { ApiIncrementalChecker } from './ApiIncrementalChecker'; -import { - makeCreateNormalizedMessageFromDiagnostic, - makeCreateNormalizedMessageFromRuleFailure, - makeCreateNormalizedMessageFromInternalError -} from './NormalizedMessageFactories'; import { RpcProvider } from 'worker-rpc'; import { RunPayload, RunResult, RUN } from './RpcTypes'; import { TypeScriptPatchConfig, patchTypescript } from './patchTypescript'; import { createEslinter } from './createEslinter'; +import { createIssueFromInternalError, Issue } from './issue'; const rpc = new RpcProvider(message => { try { - process.send!(message, undefined, undefined, error => { - if (error) { - process.exit(); - } - }); + if (process.send) { + process.send(message, undefined, undefined, error => { + if (error) { + process.exit(); + } + }); + } } catch (e) { // channel closed... process.exit(); @@ -35,7 +29,8 @@ const rpc = new RpcProvider(message => { }); process.on('message', message => rpc.dispatch(message)); -const typescript: typeof ts = require(process.env.TYPESCRIPT_PATH!); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const typescript: typeof ts = require(String(process.env.TYPESCRIPT_PATH)); const patchConfig: TypeScriptPatchConfig = { skipGetSyntacticDiagnostics: process.env.USE_INCREMENTAL_API === 'true' && @@ -44,85 +39,59 @@ const patchConfig: TypeScriptPatchConfig = { patchTypescript(typescript, patchConfig); -// message factories -export const createNormalizedMessageFromDiagnostic = makeCreateNormalizedMessageFromDiagnostic( - typescript -); -export const createNormalizedMessageFromRuleFailure = makeCreateNormalizedMessageFromRuleFailure(); -export const createNormalizedMessageFromInternalError = makeCreateNormalizedMessageFromInternalError(); - const resolveModuleName = process.env.RESOLVE_MODULE_NAME - ? require(process.env.RESOLVE_MODULE_NAME!).resolveModuleName + ? require(process.env.RESOLVE_MODULE_NAME).resolveModuleName : undefined; const resolveTypeReferenceDirective = process.env .RESOLVE_TYPE_REFERENCE_DIRECTIVE - ? require(process.env.RESOLVE_TYPE_REFERENCE_DIRECTIVE!) + ? require(process.env.RESOLVE_TYPE_REFERENCE_DIRECTIVE) .resolveTypeReferenceDirective : undefined; const eslinter = process.env.ESLINT === 'true' - ? createEslinter(JSON.parse(process.env.ESLINT_OPTIONS!)) + ? createEslinter(JSON.parse(String(process.env.ESLINT_OPTIONS))) : undefined; function createChecker( useIncrementalApi: boolean ): IncrementalCheckerInterface { - const apiIncrementalCheckerParams: ApiIncrementalCheckerParams = { + const incrementalCheckerParams: IncrementalCheckerParams = { typescript, - context: process.env.CONTEXT!, - programConfigFile: process.env.TSCONFIG!, - compilerOptions: JSON.parse(process.env.COMPILER_OPTIONS!), - createNormalizedMessageFromDiagnostic, - linterConfigFile: - process.env.TSLINT === 'true' ? true : process.env.TSLINT! || false, - linterAutoFix: process.env.TSLINTAUTOFIX === 'true', - createNormalizedMessageFromRuleFailure, + context: String(process.env.CONTEXT), + programConfigFile: String(process.env.TSCONFIG), + compilerOptions: JSON.parse(String(process.env.COMPILER_OPTIONS)), eslinter, checkSyntacticErrors: process.env.CHECK_SYNTACTIC_ERRORS === 'true', resolveModuleName, resolveTypeReferenceDirective, - vue: JSON.parse(process.env.VUE!) + vue: JSON.parse(String(process.env.VUE)) }; - if (useIncrementalApi) { - return new ApiIncrementalChecker(apiIncrementalCheckerParams); - } - - const incrementalCheckerParams: IncrementalCheckerParams = Object.assign( - {}, - apiIncrementalCheckerParams, - { - watchPaths: process.env.WATCH === '' ? [] : process.env.WATCH!.split('|'), - workNumber: parseInt(process.env.WORK_NUMBER!, 10) || 0, - workDivision: parseInt(process.env.WORK_DIVISION!, 10) || 1 - } - ); - - return new IncrementalChecker(incrementalCheckerParams); + return useIncrementalApi + ? new ApiIncrementalChecker(incrementalCheckerParams) + : new IncrementalChecker(incrementalCheckerParams); } const checker = createChecker(process.env.USE_INCREMENTAL_API === 'true'); async function run(cancellationToken: CancellationToken) { - let diagnostics: NormalizedMessage[] = []; - let lints: NormalizedMessage[] = []; + const diagnostics: Issue[] = []; + const lints: Issue[] = []; try { checker.nextIteration(); - diagnostics = await checker.getDiagnostics(cancellationToken); + diagnostics.push(...(await checker.getTypeScriptIssues(cancellationToken))); if (checker.hasEsLinter()) { - lints = checker.getEsLints(cancellationToken); - } else if (checker.hasLinter()) { - lints = checker.getLints(cancellationToken); + lints.push(...(await checker.getEsLintIssues(cancellationToken))); } } catch (error) { if (error instanceof typescript.OperationCanceledException) { return undefined; } - diagnostics.push(createNormalizedMessageFromInternalError(error)); + diagnostics.push(createIssueFromInternalError(error)); } if (cancellationToken.isCancellationRequested()) { @@ -137,7 +106,7 @@ async function run(cancellationToken: CancellationToken) { rpc.registerRpcHandler(RUN, message => typeof message !== 'undefined' - ? run(CancellationToken.createFromJSON(typescript, message!)) + ? run(CancellationToken.createFromJSON(typescript, message)) : undefined ); diff --git a/src/tsconfig.json b/src/tsconfig.json index 661074d9..124a34d3 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -1,17 +1,9 @@ { + "extends": "../tsconfig", "compilerOptions": { - "target": "es6", - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "skipLibCheck": true, - "suppressImplicitAnyIndexErrors": true, - "strict": true, - "lib": ["es2015", "es2016.array.include"], - "module": "commonjs", - "moduleResolution": "node", "declaration": true, "outDir": "../lib", - "sourceMap": true + "rootDir": "./", + "sourceRoot": "./" } } diff --git a/src/tslint.json b/src/tslint.json deleted file mode 100644 index 6c112cb5..00000000 --- a/src/tslint.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "extends": ["tslint:latest", "tslint-config-prettier"], - "rules": { - "object-literal-sort-keys": false, - "interface-name": [true, "never-prefix"], - "no-this-assignment": [true, { "allow-destructuring": true }], - "member-ordering": [false], - "no-object-literal-type-assertion": false, - "no-var-requires": false, - "no-string-literal": false, - "ordered-imports": false, - "prefer-object-spread": false, - "ban-types": false, - "arrow-parens": false, - "member-access": [true], - "trailing-comma": [false], - "triple-equals": [true], - "variable-name": [ - true, - "ban-keywords", - "check-format", - "allow-leading-underscore", - "allow-pascal-case" - ], - "no-namespace": false, - "array-type": [true, "array"] - } -} diff --git a/test/.eslintrc.js b/test/.eslintrc.js deleted file mode 100644 index 92fcbbe0..00000000 --- a/test/.eslintrc.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - parserOptions: { - sourceType: 'module', - ecmaVersion: 2018 - }, - env: { - node: true, - jest: true, - es6: true - }, - extends: [ - 'plugin:@typescript-eslint/recommended' // Uses the recommended rules from the @typescript-eslint/eslint-plugin - ], - rules: { - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/indent': 'off', - '@typescript-eslint/no-non-null-assertion': 'off', - '@typescript-eslint/no-var-requires': 'off' - } -}; diff --git a/test/fixtures/project_hierarchical_tslint/index.ts b/test/fixtures/project_hierarchical_tslint/index.ts deleted file mode 100644 index 02722db2..00000000 --- a/test/fixtures/project_hierarchical_tslint/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { func as anotherFunc } from './lib/func'; -import { func as yetAnotherFunc } from './lib/utils/func'; - -export const func = a => a; // no tslint config here = no errors diff --git a/test/fixtures/project_hierarchical_tslint/lib/func.ts b/test/fixtures/project_hierarchical_tslint/lib/func.ts deleted file mode 100644 index 65495be9..00000000 --- a/test/fixtures/project_hierarchical_tslint/lib/func.ts +++ /dev/null @@ -1 +0,0 @@ -export const func = a => a; // one error here diff --git a/test/fixtures/project_hierarchical_tslint/lib/tslint.json b/test/fixtures/project_hierarchical_tslint/lib/tslint.json deleted file mode 100644 index a2a6ee63..00000000 --- a/test/fixtures/project_hierarchical_tslint/lib/tslint.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "defaultSeverity": "warning", - "extends": [ - "tslint:recommended" - ], - "jsRules": {}, - "rules": { - "typedef": [true, "arrow-call-signature"], - "arrow-parens": false - }, - "rulesDirectory": [] -} diff --git a/test/fixtures/project_hierarchical_tslint/lib/utils/func.ts b/test/fixtures/project_hierarchical_tslint/lib/utils/func.ts deleted file mode 100644 index 54292e1d..00000000 --- a/test/fixtures/project_hierarchical_tslint/lib/utils/func.ts +++ /dev/null @@ -1 +0,0 @@ -export const func = a => a; // two errors here diff --git a/test/fixtures/project_hierarchical_tslint/lib/utils/tslint.json b/test/fixtures/project_hierarchical_tslint/lib/utils/tslint.json deleted file mode 100644 index 07e8d4c6..00000000 --- a/test/fixtures/project_hierarchical_tslint/lib/utils/tslint.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": [ - "../tslint.json" - ], - "jsRules": {}, - "rules": { - "typedef": [true, "arrow-call-signature", "arrow-parameter"] - } -} diff --git a/test/fixtures/project_hierarchical_tslint/tsconfig.json b/test/fixtures/project_hierarchical_tslint/tsconfig.json deleted file mode 100644 index 2d1a0848..00000000 --- a/test/fixtures/project_hierarchical_tslint/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "compilerOptions": { - "lib": ["es2016"] - } -} diff --git a/test/fixtures/vue/src/langs/index.ts b/test/fixtures/vue/src/langs/index.ts index a5001e1c..70eec88f 100644 --- a/test/fixtures/vue/src/langs/index.ts +++ b/test/fixtures/vue/src/langs/index.ts @@ -1,6 +1,6 @@ -import Vue from "vue"; -import ExampleTsx from "./example-tsx.vue"; +import Vue from 'vue'; +import ExampleTsx from './example-tsx.vue'; new Vue({ - components: { ExampleTsx } + components: { ExampleTsx } }); diff --git a/test/fixtures/vue/tslint.json b/test/fixtures/vue/tslint.json deleted file mode 100644 index dfff889c..00000000 --- a/test/fixtures/vue/tslint.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "defaultSeverity": "warning", - "extends": [ - "tslint:recommended" - ], - "jsRules": {}, - "rules": {}, - "rulesDirectory": [] -} \ No newline at end of file diff --git a/test/integration/general.spec.ts b/test/integration/general.spec.ts index 03b6b050..f9688006 100644 --- a/test/integration/general.spec.ts +++ b/test/integration/general.spec.ts @@ -1,10 +1,9 @@ -// tslint:disable: no-implicit-dependencies - tests might also use devDependencies -import fs from 'fs'; import path from 'path'; import ForkTsCheckerWebpackPlugin from '../../lib/index'; import * as helpers from './helpers'; import { cloneDeep } from 'lodash'; import unixify from 'unixify'; +import * as semver from 'semver'; describe.each([[true], [false]])( '[INTEGRATION] common tests - useTypescriptIncrementalApi: %s', @@ -24,7 +23,9 @@ describe.each([[true], [false]])( return compiler.compiler; } - const skipIfIncremental = useTypescriptIncrementalApi ? it.skip : it; + const ifNotIncrementalIt = useTypescriptIncrementalApi ? it.skip : it; + const ifNodeGte8It = semver.lt(process.version, '8.10.0') ? it.skip : it; + const ifNodeLt8It = semver.lt(process.version, '8.10.0') ? it : it.skip; /** * Implicitly check whether killService was called by checking that @@ -37,16 +38,14 @@ describe.each([[true], [false]])( it('should allow to pass no options', () => { expect(() => { - // tslint:disable-next-line: no-unused-expression new ForkTsCheckerWebpackPlugin(); }).not.toThrowError(); }); it('should detect paths', () => { - const plugin = new ForkTsCheckerWebpackPlugin({ tslint: true }); + const plugin = new ForkTsCheckerWebpackPlugin({}); expect(plugin['tsconfig']).toBe('./tsconfig.json'); - expect(plugin['tslint']).toBe(true); }); it('should set logger to console by default', () => { @@ -55,82 +54,6 @@ describe.each([[true], [false]])( expect(plugin['logger']).toBe(console); }); - it('should set watch to empty array by default', () => { - const plugin = new ForkTsCheckerWebpackPlugin({}); - - expect(plugin['watch']).toEqual([]); - }); - - it('should set watch to one element array for string', () => { - const plugin = new ForkTsCheckerWebpackPlugin({ - useTypescriptIncrementalApi: false, - watch: '/test' - }); - - expect(plugin['watch']).toEqual(['/test']); - }); - - it('should find lint warnings', callback => { - const fileName = 'lintingError2'; - const { compiler } = helpers.testLintAutoFixTest({ - pluginOptions: { - tslint: './tslint.json', - ignoreLintWarnings: false, - ...overrideOptions - }, - fileName - }); - - compiler.run((err, stats) => { - expect( - stats.compilation.warnings.filter(warning => - warning.message.includes('missing whitespace') - ).length - ).toBeGreaterThan(0); - callback(); - }); - }); - - it('should not print warnings when ignoreLintWarnings passed as option', callback => { - const fileName = 'lintingError2'; - const { compiler } = helpers.testLintAutoFixTest({ - fileName, - pluginOptions: { - tslint: './tslint.json', - ignoreLintWarnings: true, - ...overrideOptions - } - }); - compiler.run((err, stats) => { - expect( - stats.compilation.warnings.filter(warning => - warning.message.includes('missing whitespace') - ).length - ).toBe(0); - callback(); - }); - }); - - it('should not mark warnings as errors when ignoreLintWarnings passed as option', callback => { - const fileName = 'lintingError2'; - const { compiler } = helpers.testLintAutoFixTest({ - fileName, - pluginOptions: { - tslint: './tslint.json', - ignoreLintWarnings: true, - ...overrideOptions - } - }); - compiler.run((err, stats) => { - expect( - stats.compilation.errors.filter(error => - error.message.includes('missing whitespace') - ).length - ).toBe(0); - callback(); - }); - }); - it('should find semantic errors', callback => { const compiler = createCompiler({ pluginOptions: { @@ -167,7 +90,7 @@ describe.each([[true], [false]])( }); }); - skipIfIncremental( + ifNotIncrementalIt( 'should support custom resolution w/ "paths"', callback => { const compiler = createCompiler({ @@ -193,48 +116,7 @@ describe.each([[true], [false]])( } ); - it('should fix linting errors with tslintAutofix flag set to true', callback => { - const fileName = 'lintingError1'; - const { - compiler, - formattedFileContents, - targetFileName - } = helpers.testLintAutoFixTest({ - fileName, - pluginOptions: { - tslintAutoFix: true, - tslint: './tslint.autofix.json', - tsconfig: undefined, - ...overrideOptions - } - }); - compiler.run((err, stats) => { - expect(stats.compilation.warnings.length).toBe(0); - - const fileContents = fs.readFileSync(targetFileName, { - encoding: 'utf-8' - }); - expect(fileContents).toBe(formattedFileContents); - callback(); - }); - }); - - it('should not fix linting by default', callback => { - const fileName = 'lintingError2'; - const { compiler } = helpers.testLintAutoFixTest({ - fileName, - pluginOptions: { - tslint: true, - ...overrideOptions - } - }); - compiler.run((err, stats) => { - expect(stats.compilation.warnings.length).toBe(7); - callback(); - }); - }); - - it('should detect eslints', callback => { + ifNodeGte8It('should detect eslints', callback => { const compiler = createCompiler({ context: './project_eslint', entryPoint: './src/index.ts', @@ -294,23 +176,32 @@ describe.each([[true], [false]])( }); }); + ifNodeLt8It( + 'throws an error about Node.js version required for `eslint` option', + () => { + expect(() => { + createCompiler({ + context: './project_eslint', + entryPoint: './src/index.ts', + pluginOptions: { eslint: true } + }); + }).toThrowError( + `To use 'eslint' option, please update to Node.js >= v8.10.0 ` + + `(current version is ${process.version})` + ); + } + ); + it('should block emit on build mode', callback => { const compiler = createCompiler(); - if ('hooks' in compiler) { - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - compiler - ); - forkTsCheckerHooks.emit.tap('should block emit on build mode', () => { - expect(true).toBe(true); - callback(); - }); - } else { - (compiler as any).plugin('fork-ts-checker-emit', () => { - expect(true).toBe(true); - callback(); - }); - } + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + compiler + ); + forkTsCheckerHooks.emit.tap('should block emit on build mode', () => { + expect(true).toBe(true); + callback(); + }); compiler.run(() => { /**/ @@ -323,27 +214,15 @@ describe.each([[true], [false]])( /**/ }); - if ('hooks' in compiler) { - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - compiler - ); - forkTsCheckerHooks.done.tap( - 'should not block emit on watch mode', - () => { - watching.close(() => { - expect(true).toBe(true); - callback(); - }); - } - ); - } else { - (compiler as any).plugin('fork-ts-checker-done', () => { - watching.close(() => { - expect(true).toBe(true); - callback(); - }); + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + compiler + ); + forkTsCheckerHooks.done.tap('should not block emit on watch mode', () => { + watching.close(() => { + expect(true).toBe(true); + callback(); }); - } + }); }); it('should block emit if async flag is false', callback => { @@ -352,27 +231,18 @@ describe.each([[true], [false]])( /**/ }); - if ('hooks' in compiler) { - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - compiler - ); - forkTsCheckerHooks.emit.tap( - 'should block emit if async flag is false', - () => { - watching.close(() => { - expect(true).toBe(true); - callback(); - }); - } - ); - } else { - (compiler as any).plugin('fork-ts-checker-emit', () => { + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + compiler + ); + forkTsCheckerHooks.emit.tap( + 'should block emit if async flag is false', + () => { watching.close(() => { expect(true).toBe(true); callback(); }); - }); - } + } + ); }); it('kills the service when the watch is done', done => { @@ -381,27 +251,18 @@ describe.each([[true], [false]])( /**/ }); - if ('hooks' in compiler) { - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - compiler - ); - forkTsCheckerHooks.done.tap( - 'kills the service when the watch is done', - () => { - watching.close(() => { - expect(killServiceWasCalled()).toBe(true); - done(); - }); - } - ); - } else { - (compiler as any).plugin('fork-ts-checker-done', () => { + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + compiler + ); + forkTsCheckerHooks.done.tap( + 'kills the service when the watch is done', + () => { watching.close(() => { expect(killServiceWasCalled()).toBe(true); done(); }); - }); - } + } + ); }); it('should throw error if config container wrong tsconfig.json path', () => { @@ -414,93 +275,37 @@ describe.each([[true], [false]])( }).toThrowError(); }); - it('should throw error if config container wrong tslint.json path', () => { - expect(() => { - createCompiler({ - pluginOptions: { - tslint: '/some/path/that/not/exists/tslint.json' - } - }); - }).toThrowError(); - }); - - it('should detect tslint path for true option', () => { - expect(() => { - createCompiler({ pluginOptions: { tslint: true } }); - }).not.toThrowError(); - }); - it('should allow delaying service-start', callback => { const compiler = createCompiler(); let delayed = false; - if ('hooks' in compiler) { - const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( - compiler - ); - forkTsCheckerHooks.serviceBeforeStart.tapAsync( - 'should allow delaying service-start', - (cb: () => void) => { - setTimeout(() => { - delayed = true; - - cb(); - }, 0); - } - ); - - forkTsCheckerHooks.serviceBeforeStart.tap( - 'should allow delaying service-start', - () => { - expect(delayed).toBe(true); - callback(); - } - ); - } else { - (compiler as any).plugin( - 'fork-ts-checker-service-before-start', - (cb: Function) => { - setTimeout(() => { - delayed = true; - - cb(); - }, 0); - } - ); + const forkTsCheckerHooks = ForkTsCheckerWebpackPlugin.getCompilerHooks( + compiler + ); + forkTsCheckerHooks.serviceBeforeStart.tapAsync( + 'should allow delaying service-start', + (cb: () => void) => { + setTimeout(() => { + delayed = true; + + cb(); + }, 0); + } + ); - (compiler as any).plugin('fork-ts-checker-service-start', () => { + forkTsCheckerHooks.serviceBeforeStart.tap( + 'should allow delaying service-start', + () => { expect(delayed).toBe(true); callback(); - }); - } + } + ); compiler.run(() => { /** */ }); }); - it('should respect "tslint.json"s hierarchy when config-file not specified', callback => { - const { compiler } = helpers.createCompiler({ - pluginOptions: { - tslint: true, - ...overrideOptions - }, - entryPoint: './index.ts', - context: './project_hierarchical_tslint' - }); - compiler.run((err, stats) => { - /* - * there are three identical arrow functions - * in index.ts, lib/func.ts and lib/utils/func.ts - * and plugin should warn three times on typedef-rule - * twice on "arrow-call-signature" and once on "arrow-parameter" - * because this rule is overriden inside lib/tslint.json - * */ - expect(stats.compilation.warnings.length).toBe(3); - callback(); - }); - }); - it('should not find syntactic errors when checkSyntacticErrors is false', callback => { const compiler = createCompiler({ pluginOptions: { checkSyntacticErrors: false }, @@ -559,26 +364,5 @@ describe.each([[true], [false]])( callback(); }); }); - - /** - * regression test for #300 - */ - it('should work when `path` is set with relative paths', callback => { - const compiler = createCompiler({ - pluginOptions: { - tsconfig: 'tsconfig-semantic-error-only.json', - watch: ['./test1', './test2'] - } - }); - - compiler.run((err, stats) => { - expect(stats.compilation.errors).toEqual([ - expect.objectContaining({ - message: expect.stringContaining('TS2322') - }) - ]); - callback(); - }); - }); } ); diff --git a/test/integration/helpers/createCompiler.ts b/test/integration/helpers/createCompiler.ts index 8921eecd..774d6787 100644 --- a/test/integration/helpers/createCompiler.ts +++ b/test/integration/helpers/createCompiler.ts @@ -1,10 +1,9 @@ -// tslint:disable:no-implicit-dependencies import webpack from 'webpack'; import * as path from 'path'; import * as fs from 'fs'; import * as copyDir from 'copy-dir'; import * as rimraf from 'rimraf'; -import { ForkTsCheckerWebpackPlugin, webpackMajorVersion } from './'; +import { ForkTsCheckerWebpackPlugin } from './'; if (!beforeAll || !afterAll) { throw new Error('file should not be included outside of jest!'); @@ -89,7 +88,6 @@ function normalizeDiagnosticsPaths( rawMessage: string; message: string; file: string; - location: any[]; }[], contextDir: string ) { @@ -132,7 +130,7 @@ export function createCompiler({ : { transpileOnly: true, silent: true }; const compilerConfig = prepareWebpackConfig({ - ...(webpackMajorVersion >= 4 ? { mode: 'development' } : {}), + mode: 'development', context: contextDir, entry: entryPoint, output: { diff --git a/test/integration/helpers/createVueCompiler.ts b/test/integration/helpers/createVueCompiler.ts index 91e97600..0ace739f 100644 --- a/test/integration/helpers/createVueCompiler.ts +++ b/test/integration/helpers/createVueCompiler.ts @@ -1,13 +1,14 @@ -// tslint:disable:no-implicit-dependencies -// @ts-ignore -import { rpcMethods } from './rpc'; +import * as VueLoader from 'vue-loader'; // import for types alone import * as path from 'path'; -import { CreateCompilerOptions, createCompiler, webpackMajorVersion } from '.'; import { RpcProvider } from 'worker-rpc'; -let VueLoaderPlugin: any; +// eslint-disable-next-line @typescript-eslint/ban-ts-ignore +// @ts-ignore +import { rpcMethods } from './rpc'; +import { CreateCompilerOptions, createCompiler } from '.'; + +let VueLoaderPlugin: typeof VueLoader.VueLoaderPlugin; try { - // tslint:disable-next-line: no-submodule-imports VueLoaderPlugin = require('vue-loader/lib/plugin'); } catch { /** older versions of vue-loader come without that import - that's fine. */ @@ -33,6 +34,7 @@ export async function createVueCompiler({ resolve: { extensions: ['.ts', '.js', '.vue', '.json'], alias: { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion '@': path.resolve(config.context!, './src'), surprise: './src/index.ts' } @@ -69,31 +71,34 @@ export async function createVueCompiler({ const { compilerConfig, plugin } = results; const files = { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion 'example.vue': path.resolve(compilerConfig.context!, 'src/example.vue'), 'syntacticError.ts': path.resolve( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion compilerConfig.context!, 'src/syntacticError.ts' ) }; plugin['spawnService'](); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const rpcProvider: RpcProvider = plugin['serviceRpc']!; - await rpcProvider.rpc(rpcMethods.checker_nextIteration); + await rpcProvider.rpc(rpcMethods.nextIteration); return { ...results, files, rpcProvider, getKnownFileNames(): Promise { - return rpcProvider.rpc(rpcMethods.checker_getKnownFileNames); + return rpcProvider.rpc(rpcMethods.getKnownFileNames); }, getSourceFile(fileName: string): Promise<{ text: string } | undefined> { - return rpcProvider.rpc(rpcMethods.checker_getSourceFile, fileName); + return rpcProvider.rpc(rpcMethods.getSourceFile, fileName); }, getSyntacticDiagnostics(): Promise< { start: number; length: number; file: { text: string } }[] | undefined > { - return rpcProvider.rpc(rpcMethods.checker_getSyntacticDiagnostics); + return rpcProvider.rpc(rpcMethods.getSyntacticDiagnostics); } }; } diff --git a/test/integration/helpers/index.ts b/test/integration/helpers/index.ts index ebaabcbe..769823fd 100644 --- a/test/integration/helpers/index.ts +++ b/test/integration/helpers/index.ts @@ -2,9 +2,9 @@ import ForkTsCheckerWebpackPlugin from '../../../lib'; export { ForkTsCheckerWebpackPlugin }; export { createCompiler, CreateCompilerOptions } from './createCompiler'; export { createVueCompiler } from './createVueCompiler'; +// eslint-disable-next-line @typescript-eslint/ban-ts-ignore +// @ts-ignore export { getRpcProvider, rpcMethods } from './rpc'; -export { testLintAutoFixTest } from './testLintAutoFixTest'; -export { webpackMajorVersion } from './webpackVersion'; export const expectedErrorCodes = { expectedSyntacticErrorCode: 'TS1005', diff --git a/test/integration/helpers/rpc.js b/test/integration/helpers/rpc.js index 6bff1d41..582e7750 100644 --- a/test/integration/helpers/rpc.js +++ b/test/integration/helpers/rpc.js @@ -1,25 +1,29 @@ const RpcProvider = require('worker-rpc').RpcProvider; /** - * this file needs to be JavaScript because it is direcly required from files that are injected into node using --require + * this file needs to be JavaScript because it is directly required from files + * that are injected into node using --require */ exports.rpcMethods = { - checker_nextIteration: 'checker_nextIteration', - checker_getKnownFileNames: 'checker_getKnownFileNames', - checker_getSourceFile: 'checker_getSourceFile', - checker_getSyntacticDiagnostics: 'checker_getSyntacticDiagnostics' + nextIteration: 'checker_nextIteration', + getKnownFileNames: 'checker_getKnownFileNames', + getSourceFile: 'checker_getSourceFile', + getSyntacticDiagnostics: 'checker_getSyntacticDiagnostics' }; /** @type {RpcProvider} */ let rpc; + exports.getRpcProvider = () => { if (!rpc) { - rpc = new RpcProvider(message => - // @ts-ignore - process.send(message) - ); + rpc = new RpcProvider(message => { + if (process && process.send) { + return process.send(message); + } + }); process.on('message', message => rpc.dispatch(message)); } + return rpc; }; diff --git a/test/integration/helpers/testLintAutoFixTest.ts b/test/integration/helpers/testLintAutoFixTest.ts deleted file mode 100644 index aaab08ba..00000000 --- a/test/integration/helpers/testLintAutoFixTest.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { createCompiler } from './createCompiler'; -import { ForkTsCheckerWebpackPlugin } from '.'; -import fs from 'fs'; -import path from 'path'; - -export function testLintAutoFixTest({ - fileName, - pluginOptions -}: { - fileName: string; - pluginOptions: Partial; -}) { - const lintErrorFileContents = `function someFunctionName(param1,param2){return param1+param2}; -`; - const formattedFileContents = `function someFunctionName(param1, param2) {return param1 + param2; } -`; - - const results = createCompiler({ - pluginOptions, - entryPoint: `./src/${fileName}.ts` - }); - - const targetFileName = path.resolve( - results.contextDir, - `./src/${fileName}.ts` - ); - - fs.writeFileSync(targetFileName, lintErrorFileContents, { flag: 'w' }); - - return { ...results, targetFileName, formattedFileContents }; -} diff --git a/test/integration/helpers/webpackVersion.ts b/test/integration/helpers/webpackVersion.ts deleted file mode 100644 index c513839b..00000000 --- a/test/integration/helpers/webpackVersion.ts +++ /dev/null @@ -1,11 +0,0 @@ -// tslint:disable:no-implicit-dependencies -function getWebpackMajorVersion() { - // Determine major webpack version from package.json or webpack itself - const rawWebpackVersion = - require('webpack').version || - require('../../../package.json').devDependencies.webpack; - const webpackVersion = rawWebpackVersion.replace(/[^0-9.]/g, ''); - return parseInt(webpackVersion.split('.')[0], 10); -} - -export const webpackMajorVersion = getWebpackMajorVersion(); diff --git a/test/integration/incrementalApi.spec.ts b/test/integration/incrementalApi.spec.ts index e14d7400..6c2f7235 100644 --- a/test/integration/incrementalApi.spec.ts +++ b/test/integration/incrementalApi.spec.ts @@ -31,29 +31,6 @@ describe('[INTEGRATION] specific tests for useTypescriptIncrementalApi: true', ( }); } - it('should not allow multiple workers with incremental API', () => { - expect(() => { - createCompiler({ - pluginOptions: { workers: 5 } - }); - }).toThrowError(); - }); - - it('should not fix linting by default', callback => { - const fileName = 'lintingError2'; - const { compiler } = helpers.testLintAutoFixTest({ - fileName, - pluginOptions: { - useTypescriptIncrementalApi: true, - tslint: true - } - }); - compiler.run((err, stats) => { - expect(stats.compilation.warnings.length).toBe(7); - callback(); - }); - }); - it('should get syntactic diagnostics from Vue program', callback => { createVueCompiler({ pluginOptions: { checkSyntacticErrors: true } }).then( ({ compiler }) => diff --git a/test/integration/mocks/ApiIncrementalCheckerWithRpc.js b/test/integration/mocks/ApiIncrementalCheckerWithRpc.js index 004eeb86..886f7fa6 100644 --- a/test/integration/mocks/ApiIncrementalCheckerWithRpc.js +++ b/test/integration/mocks/ApiIncrementalCheckerWithRpc.js @@ -1,5 +1,4 @@ const mock = require('mock-require'); - const origImport = require('../../../lib/ApiIncrementalChecker'); const { rpcMethods, getRpcProvider } = require('../helpers/rpc'); @@ -10,38 +9,35 @@ mock('../../../lib/ApiIncrementalChecker', { const rpc = getRpcProvider(); - const awaitInit = async () => { - if (!this.tsIncrementalCompiler.lastProcessing) { - await this.tsIncrementalCompiler.processChanges(); - } else { - await this.tsIncrementalCompiler.lastProcessing; - } + const init = () => { + return ( + this.tsIncrementalCompiler.lastProcessing || + this.tsIncrementalCompiler.processChanges() + ); }; - rpc.registerRpcHandler(rpcMethods.checker_nextIteration, () => { + rpc.registerRpcHandler(rpcMethods.nextIteration, () => { return this.nextIteration(); }); - rpc.registerRpcHandler(rpcMethods.checker_getKnownFileNames, async () => { - await awaitInit(); - return Array.from(this.tsIncrementalCompiler.getAllKnownFiles()); + rpc.registerRpcHandler(rpcMethods.getKnownFileNames, () => { + return init().then(() => + Array.from(this.tsIncrementalCompiler.getAllKnownFiles()) + ); }); - rpc.registerRpcHandler( - rpcMethods.checker_getSourceFile, - async fileName => { - await awaitInit(); + rpc.registerRpcHandler(rpcMethods.getSourceFile, fileName => { + return init().then(() => { const result = this.tsIncrementalCompiler .getProgram() .getSourceFile(fileName); + return !result ? undefined : { text: result.text }; - } - ); + }); + }); - rpc.registerRpcHandler( - rpcMethods.checker_getSyntacticDiagnostics, - async () => { - await awaitInit(); + rpc.registerRpcHandler(rpcMethods.getSyntacticDiagnostics, () => { + return init().then(() => { const result = this.tsIncrementalCompiler .getProgram() .getSyntacticDiagnostics(); @@ -50,8 +46,8 @@ mock('../../../lib/ApiIncrementalChecker', { length, file: { text: file.text } })); - } - ); + }); + }); } } }); diff --git a/test/integration/mocks/IncrementalCheckerWithRpc.js b/test/integration/mocks/IncrementalCheckerWithRpc.js index 43933547..039c963e 100644 --- a/test/integration/mocks/IncrementalCheckerWithRpc.js +++ b/test/integration/mocks/IncrementalCheckerWithRpc.js @@ -1,7 +1,5 @@ const mock = require('mock-require'); - const origImport = require('../../../lib/IncrementalChecker'); - const { rpcMethods, getRpcProvider } = require('../helpers/rpc'); mock('../../../lib/IncrementalChecker', { @@ -11,20 +9,20 @@ mock('../../../lib/IncrementalChecker', { const rpc = getRpcProvider(); - rpc.registerRpcHandler(rpcMethods.checker_nextIteration, () => { + rpc.registerRpcHandler(rpcMethods.nextIteration, () => { return this.nextIteration(); }); - rpc.registerRpcHandler(rpcMethods.checker_getKnownFileNames, () => { + rpc.registerRpcHandler(rpcMethods.getKnownFileNames, () => { return this.programConfig.fileNames; }); - rpc.registerRpcHandler(rpcMethods.checker_getSourceFile, fileName => { + rpc.registerRpcHandler(rpcMethods.getSourceFile, fileName => { const result = this.program.getSourceFile(fileName); return !result ? undefined : { text: result.text }; }); - rpc.registerRpcHandler(rpcMethods.checker_getSyntacticDiagnostics, () => { + rpc.registerRpcHandler(rpcMethods.getSyntacticDiagnostics, () => { const result = this.program.getSyntacticDiagnostics(); return result.map(({ start, length, file }) => ({ start, diff --git a/test/integration/nonIncrementalApi.spec.ts b/test/integration/nonIncrementalApi.spec.ts index 0cd2c62d..a2436ad8 100644 --- a/test/integration/nonIncrementalApi.spec.ts +++ b/test/integration/nonIncrementalApi.spec.ts @@ -1,7 +1,5 @@ -// tslint:disable:no-implicit-dependencies import path from 'path'; import * as helpers from './helpers'; -import webpack from 'webpack'; describe('[INTEGRATION] specific tests for useTypescriptIncrementalApi: false', () => { let plugin: helpers.ForkTsCheckerWebpackPlugin; @@ -29,37 +27,6 @@ describe('[INTEGRATION] specific tests for useTypescriptIncrementalApi: false', }); }); - it('should find the same errors on multi-process mode', async () => { - const compilerA = createCompiler({ - pluginOptions: { - workers: 1, - tslint: true - } - }); - const compilerB = createCompiler({ - pluginOptions: { - workers: 4, - tslint: true - } - }); - - const [a, b] = await Promise.all([ - new Promise(resolve => - compilerA.run((error, stats) => { - resolve(stats.compilation); - }) - ), - new Promise(resolve => - compilerB.run((error, stats) => { - resolve(stats.compilation); - }) - ) - ]); - - expect(a.errors).toEqual(b.errors); - expect(a.warnings).toEqual(b.warnings); - }); - it('should only show errors matching paths specified in reportFiles when provided', callback => { const compiler = createCompiler({ pluginOptions: { diff --git a/test/integration/tslint.json b/test/integration/tslint.json deleted file mode 100644 index 2e1d3268..00000000 --- a/test/integration/tslint.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": ["../../src/tslint.json"] -} diff --git a/test/integration/vue.spec.ts b/test/integration/vue.spec.ts index d6db9030..cebb8318 100644 --- a/test/integration/vue.spec.ts +++ b/test/integration/vue.spec.ts @@ -1,4 +1,3 @@ -// tslint:disable:no-implicit-dependencies import path from 'path'; import unixify from 'unixify'; import { @@ -24,14 +23,18 @@ const useTypescriptIncrementalApiOptions = [ // eslint-disable-next-line @typescript-eslint/array-type function mixLists(list1: ReadonlyArray, list2: ReadonlyArray) { - return list1.reduce((acc, item1) => acc.concat(list2.map(item2 => [item1, item2])), [] as [T1, T2][]); + return list1.reduce( + (acc, item1) => acc.concat(list2.map(item2 => [item1, item2])), + [] as [T1, T2][] + ); } describe.each(mixLists(useTypescriptIncrementalApiOptions, vueTplCompilers))( '[INTEGRATION] vue tests - useTypescriptIncrementalApi: %s, vue tpl compiler: %s', (useTypescriptIncrementalApi, vueTplCompiler) => { const vueEnabledOption = { enabled: true, compiler: vueTplCompiler }; - const testOnlyFirstVueTplCompiler = vueEnabledOption.compiler !== vueTplCompilers[0] ? it.skip : it; + const testOnlyFirstVueTplCompiler = + vueEnabledOption.compiler !== vueTplCompilers[0] ? it.skip : it; const createCompiler = (options: Partial = {}) => createVueCompiler({ @@ -80,21 +83,28 @@ describe.each(mixLists(useTypescriptIncrementalApiOptions, vueTplCompilers))( expect(fileFound).toBe(true); }); - testOnlyFirstVueTplCompiler('should not create a Vue program config if vue is disabled', async () => { - const { getKnownFileNames, files } = await createCompiler(); + testOnlyFirstVueTplCompiler( + 'should not create a Vue program config if vue is disabled', + async () => { + const { getKnownFileNames, files } = await createCompiler(); - const fileNames = await getKnownFileNames(); + const fileNames = await getKnownFileNames(); - let fileFound; - let fileWeWant = unixify(files['example.vue']); + let fileFound; + let fileWeWant = unixify(files['example.vue']); - fileFound = fileNames.some(filename => unixify(filename) === fileWeWant); - expect(fileFound).toBe(false); + fileFound = fileNames.some( + filename => unixify(filename) === fileWeWant + ); + expect(fileFound).toBe(false); - fileWeWant = unixify(files['syntacticError.ts']); - fileFound = fileNames.some(filename => unixify(filename) === fileWeWant); - expect(fileFound).toBe(true); - }); + fileWeWant = unixify(files['syntacticError.ts']); + fileFound = fileNames.some( + filename => unixify(filename) === fileWeWant + ); + expect(fileFound).toBe(true); + } + ); it('should create a Vue program if vue is enabled', async () => { const { getSourceFile, files } = await createCompiler({ @@ -110,48 +120,50 @@ describe.each(mixLists(useTypescriptIncrementalApiOptions, vueTplCompilers))( expect(source).toBeDefined(); }); - testOnlyFirstVueTplCompiler('should not create a Vue program if vue is disabled', async () => { - const { getSourceFile, files } = await createCompiler(); + testOnlyFirstVueTplCompiler( + 'should not create a Vue program if vue is disabled', + async () => { + const { getSourceFile, files } = await createCompiler(); - let source; + let source; - source = await getSourceFile(files['example.vue']); - expect(source).toBeUndefined(); + source = await getSourceFile(files['example.vue']); + expect(source).toBeUndefined(); - source = await getSourceFile(files['syntacticError.ts']); - expect(source).toBeDefined(); - }); + source = await getSourceFile(files['syntacticError.ts']); + expect(source).toBeDefined(); + } + ); it('should get syntactic diagnostics from Vue program', async () => { const { getSyntacticDiagnostics } = await createCompiler({ - pluginOptions: { tslint: true, vue: vueEnabledOption } + pluginOptions: { vue: vueEnabledOption } }); const diagnostics = await getSyntacticDiagnostics(); expect(diagnostics).toBeDefined(); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion expect(diagnostics!.length).toBe(1); }); it('should not find syntactic errors when checkSyntacticErrors is false', callback => { - createCompiler({ pluginOptions: { tslint: true, vue: true } }).then( - ({ compiler }) => - compiler.run((_error, stats) => { - const syntacticErrorNotFoundInStats = stats.compilation.errors.every( - error => - !error.rawMessage.includes( - expectedErrorCodes.expectedSyntacticErrorCode - ) - ); - expect(syntacticErrorNotFoundInStats).toBe(true); - callback(); - }) + createCompiler({ pluginOptions: { vue: true } }).then(({ compiler }) => + compiler.run((_error, stats) => { + const syntacticErrorNotFoundInStats = stats.compilation.errors.every( + error => + !error.rawMessage.includes( + expectedErrorCodes.expectedSyntacticErrorCode + ) + ); + expect(syntacticErrorNotFoundInStats).toBe(true); + callback(); + }) ); }); it('should find syntactic errors when checkSyntacticErrors is true', callback => { createCompiler({ pluginOptions: { - tslint: true, vue: true, checkSyntacticErrors: true } @@ -169,23 +181,12 @@ describe.each(mixLists(useTypescriptIncrementalApiOptions, vueTplCompilers))( ); }); - it('should not report no-consecutive-blank-lines tslint rule', callback => { - createCompiler({ pluginOptions: { tslint: true, vue: vueEnabledOption } }).then( - ({ compiler }) => - compiler.run((error, stats) => { - stats.compilation.warnings.forEach(warning => { - expect(warning.rawMessage).not.toMatch( - /no-consecutive-blank-lines/ - ); - }); - callback(); - }) - ); - }); - it('should resolve src attribute but not report not found error', callback => { createCompiler({ - pluginOptions: { vue: vueEnabledOption, tsconfig: 'tsconfig-attrs.json' } + pluginOptions: { + vue: vueEnabledOption, + tsconfig: 'tsconfig-attrs.json' + } }).then(({ compiler }) => compiler.run((error, stats) => { const errors = stats.compilation.errors; @@ -202,20 +203,20 @@ describe.each(mixLists(useTypescriptIncrementalApiOptions, vueTplCompilers))( 'example-js.vue', 'example-jsx.vue', 'example-nolang.vue' - ])('should be able to extract script from %s', - async fileName => { - const { getSourceFile, contextDir } = await createCompiler({ - pluginOptions: { vue: vueEnabledOption, tsconfig: 'tsconfig-langs.json' } - }); - const sourceFilePath = path.resolve( - contextDir, - 'src/langs/' + fileName - ); - const source = await getSourceFile(sourceFilePath); - expect(source).toBeDefined(); - // remove padding lines - const text = source!.text.replace(/^\s*\/\/.*$\r*\n/gm, '').trim(); - expect(text.startsWith('/* OK */')).toBe(true); + ])('should be able to extract script from %s', async fileName => { + const { getSourceFile, contextDir } = await createCompiler({ + pluginOptions: { + vue: vueEnabledOption, + tsconfig: 'tsconfig-langs.json' + } + }); + const sourceFilePath = path.resolve(contextDir, 'src/langs/' + fileName); + const source = await getSourceFile(sourceFilePath); + expect(source).toBeDefined(); + // remove padding lines + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const text = source!.text.replace(/^\s*\/\/.*$\r*\n/gm, '').trim(); + expect(text.startsWith('/* OK */')).toBe(true); }); function groupByFileName(errors: Error[]) { @@ -235,7 +236,7 @@ describe.each(mixLists(useTypescriptIncrementalApiOptions, vueTplCompilers))( } describe('should be able to compile *.vue with each lang', () => { - let errors: { [key: string]: Error[] }; + let errors: { [key: string]: Error[] } = {}; beforeAll(callback => { createCompiler({ pluginOptions: { @@ -270,7 +271,7 @@ describe.each(mixLists(useTypescriptIncrementalApiOptions, vueTplCompilers))( }); describe('should be able to detect errors in *.vue', () => { - let errors: { [key: string]: Error[] }; + let errors: { [key: string]: Error[] } = {}; beforeAll(callback => { // tsconfig-langs-strict.json === tsconfig-langs.json + noUnusedLocals createCompiler({ @@ -309,7 +310,7 @@ describe.each(mixLists(useTypescriptIncrementalApiOptions, vueTplCompilers))( }); describe('should resolve *.vue in the same way as TypeScript', () => { - let errors: Error[]; + let errors: Error[] = []; beforeAll(callback => { createCompiler({ pluginOptions: { diff --git a/test/setupTestFramework.ts b/test/setup.ts similarity index 100% rename from test/setupTestFramework.ts rename to test/setup.ts diff --git a/test/unit/CancellationToken.spec.js b/test/unit/CancellationToken.spec.ts similarity index 70% rename from test/unit/CancellationToken.spec.js rename to test/unit/CancellationToken.spec.ts index b83aa602..a7daffc6 100644 --- a/test/unit/CancellationToken.spec.js +++ b/test/unit/CancellationToken.spec.ts @@ -1,16 +1,14 @@ -var os = require('os'); -var ts = require('typescript'); -var mockFs = require('mock-fs'); -var CancellationToken = require('../../lib/CancellationToken') - .CancellationToken; -var fileExistsSync = require('../../lib/FsHelper').fileExistsSync; +import * as os from 'os'; +import * as ts from 'typescript'; +import mockFs from 'mock-fs'; +import { CancellationToken } from '../../lib/CancellationToken'; +import { fileExistsSync } from '../../lib/FsHelper'; describe('[UNIT] CancellationToken', () => { beforeEach(() => { - var fsTree = {}; - fsTree[os.tmpdir()] = mockFs.directory(); - - mockFs(fsTree); + mockFs({ + [os.tmpdir()]: mockFs.directory() + }); }); afterEach(() => { @@ -18,23 +16,23 @@ describe('[UNIT] CancellationToken', () => { }); it('should create valid cancellation token', () => { - var tokenA = new CancellationToken(require('typescript')); + const tokenA = new CancellationToken(require('typescript')); expect(tokenA.isCancellationRequested()).toBe(false); - var tokenB = new CancellationToken( + const tokenB = new CancellationToken( require('typescript'), 'FA#FERgSERgRT$rA$#rA#Ea@RweFRgERG' ); expect(tokenB.isCancellationRequested()).toBe(false); - var tokenC = new CancellationToken( + const tokenC = new CancellationToken( require('typescript'), 'GFERWgEgeF#R2erwreWrweWER', false ); expect(tokenC.isCancellationRequested()).toBe(false); - var tokenD = new CancellationToken( + const tokenD = new CancellationToken( require('typescript'), 'REGg$#R2$#@r@#R$#T43T$#t43t', true @@ -43,8 +41,8 @@ describe('[UNIT] CancellationToken', () => { }); it('should serialize to JSON', () => { - var tokenA = new CancellationToken(require('typescript')); - var json = JSON.stringify(tokenA); + const tokenA = new CancellationToken(require('typescript')); + const json = JSON.stringify(tokenA); expect(typeof json).toBe('string'); expect(function() { @@ -52,7 +50,8 @@ describe('[UNIT] CancellationToken', () => { }).not.toThrowError(Error); expect(typeof JSON.parse(json)).toBe('object'); - var tokenB = CancellationToken.createFromJSON( + const tokenB = CancellationToken.createFromJSON( + // eslint-disable-next-line @typescript-eslint/no-var-requires require('typescript'), JSON.parse(json) ); @@ -65,18 +64,18 @@ describe('[UNIT] CancellationToken', () => { }); it('should generate path in os.tmpdir() directory', () => { - var tokenA = new CancellationToken(require('typescript')); + const tokenA = new CancellationToken(require('typescript')); expect(tokenA.getCancellationFilePath().indexOf(os.tmpdir())).toBe(0); }); it('should throw ts.OperationCanceledException error on cancelled', () => { - var tokenA = new CancellationToken(require('typescript')); + const tokenA = new CancellationToken(require('typescript')); expect(function() { tokenA.throwIfCancellationRequested(); }).not.toThrowError(); - var tokenB = new CancellationToken( + const tokenB = new CancellationToken( require('typescript'), 'rgeer#R23r$#T$3t#$t43', true @@ -87,7 +86,7 @@ describe('[UNIT] CancellationToken', () => { }); it('should write file in filesystem on requestCancellation', () => { - var tokenA = new CancellationToken(require('typescript')); + const tokenA = new CancellationToken(require('typescript')); tokenA.requestCancellation(); expect(tokenA.isCancellationRequested()).toBe(true); @@ -95,7 +94,7 @@ describe('[UNIT] CancellationToken', () => { }); it('should cleanup file on cleanupCancellation', () => { - var tokenA = new CancellationToken(require('typescript')); + const tokenA = new CancellationToken(require('typescript')); tokenA.requestCancellation(); tokenA.cleanupCancellation(); @@ -110,7 +109,7 @@ describe('[UNIT] CancellationToken', () => { }); it('should not throw error on cleanupCancellation with no file exists', () => { - var tokenA = new CancellationToken( + const tokenA = new CancellationToken( require('typescript'), 'some_file_that_doesnt_exists', true @@ -125,12 +124,12 @@ describe('[UNIT] CancellationToken', () => { }); it('should throttle check for 10ms', done => { - var tokenA = new CancellationToken(require('typescript')); - var tokenB = CancellationToken.createFromJSON( + const tokenA = new CancellationToken(require('typescript')); + const tokenB = CancellationToken.createFromJSON( + // eslint-disable-next-line @typescript-eslint/no-var-requires require('typescript'), tokenA.toJSON() ); - var start = Date.now(); expect(tokenA.isCancellationRequested()).toBe(false); expect(tokenB.isCancellationRequested()).toBe(false); @@ -138,15 +137,9 @@ describe('[UNIT] CancellationToken', () => { tokenA.requestCancellation(); expect(tokenA.isCancellationRequested()).toBe(true); - var duration = Math.abs(Date.now() - start); - if (duration < 10) { - // we should throttle check - expect(tokenB.isCancellationRequested()).toBe(false); - } - setTimeout(function() { expect(tokenB.isCancellationRequested()).toBe(true); done(); - }, 11); + }, 20); }); }); diff --git a/test/unit/FileRegister.spec.js b/test/unit/FileRegister.spec.ts similarity index 78% rename from test/unit/FileRegister.spec.js rename to test/unit/FileRegister.spec.ts index 6b4e3400..6a081bf3 100644 --- a/test/unit/FileRegister.spec.js +++ b/test/unit/FileRegister.spec.ts @@ -1,13 +1,16 @@ -var FilesRegister = require('../../lib/FilesRegister').FilesRegister; +import { FilesRegister } from '../../lib/FilesRegister'; describe('[UNIT] FilesRegister', () => { - var register; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let register: any; beforeEach(() => { - register = new FilesRegister(function() { - return { - test: true - }; - }); + register = new FilesRegister( + () => + ({ + test: true + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any) + ); }); it('should add and remove files', () => { @@ -62,16 +65,17 @@ describe('[UNIT] FilesRegister', () => { register.ensure('/test'); expect(register.has('/test')).toBe(true); - var reference = register.get('/test'); + const reference = register.get('/test'); register.ensure('/test'); expect(reference).toBe(register.get('/test')); }); it('should mutate existing data', () => { register.add('/test'); - var dataReference = register.getData('/test'); + const dataReference = register.getData('/test'); expect(dataReference.test).toBe(true); - register.mutateData('/test', function(data) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + register.mutateData('/test', function(data: any) { data.test = false; }); expect(dataReference).toBe(register.getData('/test')); @@ -80,7 +84,8 @@ describe('[UNIT] FilesRegister', () => { it('should set mtime and reset data if mtime changes', () => { register.add('/test'); - register.mutateData('/test', function(data) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + register.mutateData('/test', function(data: any) { data.test = false; }); expect(register.getData('/test').test).toBe(false); @@ -89,7 +94,8 @@ describe('[UNIT] FilesRegister', () => { register.setMtime('/test', 1000); expect(register.getMtime('/test')).toBe(1000); expect(register.getData('/test').test).toBe(true); - register.mutateData('/test', function(data) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + register.mutateData('/test', function(data: any) { data.test = false; }); expect(register.getData('/test').test).toBe(false); diff --git a/test/unit/FilesWatcher.spec.js b/test/unit/FilesWatcher.spec.js deleted file mode 100644 index abd7d7ae..00000000 --- a/test/unit/FilesWatcher.spec.js +++ /dev/null @@ -1,155 +0,0 @@ -var mockRequire = require('mock-require'); - -describe('[UNIT] FilesWatcher', () => { - var FilesWatcher; - var watcher; - var watchStub; - var watcherStub; - - beforeEach(() => { - jest.resetModules(); - - watcherStub = { - on: jest.fn(function() { - return this; - }) - }; - watchStub = jest.fn(function() { - return watcherStub; - }); - - jest.setMock('chokidar', { watch: watchStub }); - FilesWatcher = require('../../lib/FilesWatcher').FilesWatcher; - - watcher = new FilesWatcher(['/test', '/bar'], ['.ext1', '.ext2']); - }); - - afterEach(() => { - mockRequire.stopAll(); - }); - - it('should check if file is supported', () => { - expect(watcher.isFileSupported('/foo.ext1')).toBe(true); - expect(watcher.isFileSupported('/foo.ext2')).toBe(true); - expect(watcher.isFileSupported('/foo.txt')).toBe(false); - expect(watcher.isFileSupported('/foo.ext1.txt')).toBe(false); - }); - - it('should check if is watching file', () => { - expect(watcher.isWatchingFile('/test/a.ext1')).toBe(false); - expect(watcher.isWatchingFile('/test/a.txt')).toBe(false); - expect(watcher.isWatchingFile('/test')).toBe(false); - expect(watcher.isWatchingFile('/foo/a.ext1')).toBe(false); - - watcher.watch(); - - expect(watcher.isWatchingFile('/test/a.ext1')).toBe(true); - expect(watcher.isWatchingFile('/test/a.txt')).toBe(false); - expect(watcher.isWatchingFile('/test')).toBe(false); - expect(watcher.isWatchingFile('/foo/a.ext1')).toBe(false); - }); - - it('should check if watcher is watching', () => { - expect(watcher.isWatching()).toBe(false); - watcher.watch(); - expect(watcher.isWatching()).toBe(true); - expect(function() { - watcher.watch(); - }).toThrowError(Error); - }); - - it('should add and remove listeners', () => { - var listenerA = function() {}; - var listenerB = function() {}; - - expect(typeof watcher.listeners).toBe('object'); - watcher.on('event', listenerA); - watcher.on('event', listenerB); - expect(Array.isArray(watcher.listeners['event'])).toBe(true); - expect(watcher.listeners['event']).toEqual([listenerA, listenerB]); - - watcher.off('event', listenerA); - expect(watcher.listeners['event']).toEqual([listenerB]); - - expect(function() { - watcher.off('event', listenerA); - }).not.toThrowError(); - expect(watcher.listeners['event']).toEqual([listenerB]); - - watcher.off('event', listenerB); - expect(watcher.listeners['event']).toEqual([]); - - expect(watcher.listeners['foo']).toBeUndefined(); - expect(function() { - watcher.off('foo', listenerA); - }).not.toThrowError(); - - expect(watcher.listeners['foo']).toBeUndefined(); - }); - - it('should watch filesystem using chokidar', () => { - expect(watchStub).not.toHaveBeenCalled(); - - var changeListenerA = jest.fn(); - var changeListenerB = jest.fn(); - var unlinkListenerA = jest.fn(); - var unlinkListenerB = jest.fn(); - - watcher.watch(); - - expect(watcherStub.on.mock.calls[0][0]).toBe('change'); - expect(watcherStub.on.mock.calls[1][0]).toBe('unlink'); - - var triggerChange = watcherStub.on.mock.calls[0][1]; - var triggerUnlink = watcherStub.on.mock.calls[1][1]; - - expect(typeof triggerChange).toBe('function'); - expect(typeof triggerUnlink).toBe('function'); - - expect(function() { - triggerChange('/test/test.ext1', {}); - }).not.toThrowError(); - expect(function() { - triggerUnlink('/test/test.ext1', {}); - }).not.toThrowError(); - - watcher.on('change', changeListenerA); - watcher.on('change', changeListenerB); - watcher.on('unlink', unlinkListenerA); - watcher.on('unlink', unlinkListenerB); - - expect(watchStub).toHaveBeenCalled(); - expect(watchStub.mock.calls[0][0]).toBe('/test'); - expect(watchStub.mock.calls[1][0]).toBe('/bar'); - - // manually trigger change listeners - triggerChange('/test/test.txt', {}); - expect(changeListenerA).not.toHaveBeenCalled(); - expect(changeListenerB).not.toHaveBeenCalled(); - - triggerChange('/test/test.ext1', {}); - expect(changeListenerB).toHaveBeenCalled(); - expect(changeListenerB).toHaveBeenCalled(); - - // manually trigger unlink listeners - triggerUnlink('/test/test.txt'); - expect(unlinkListenerA).not.toHaveBeenCalled(); - expect(unlinkListenerB).not.toHaveBeenCalled(); - - triggerUnlink('/test/test.ext1'); - expect(unlinkListenerA).toHaveBeenCalled(); - expect(unlinkListenerB).toHaveBeenCalled(); - - // check if off is working properly - watcher.off('change', changeListenerA); - watcher.off('unlink', unlinkListenerB); - - triggerChange('/test/test.ext1', {}); - triggerUnlink('/test/test.ext1'); - - expect(changeListenerA).toHaveBeenCalledTimes(1); - expect(changeListenerB).toHaveBeenCalledTimes(2); - expect(unlinkListenerA).toHaveBeenCalledTimes(2); - expect(unlinkListenerB).toHaveBeenCalledTimes(1); - }); -}); diff --git a/test/unit/IncrementalChecker.spec.js b/test/unit/IncrementalChecker.spec.js deleted file mode 100644 index e7ad4759..00000000 --- a/test/unit/IncrementalChecker.spec.js +++ /dev/null @@ -1,84 +0,0 @@ -var path = require('path'); -var minimatch = require('minimatch'); -var typescript = require('typescript'); -var IncrementalChecker = require('../../lib/IncrementalChecker') - .IncrementalChecker; - -jest.mock('typescript', () => ({ - parseJsonConfigFileContent: jest.fn(function(tsconfig) { - return { - options: tsconfig.compilerOptions - }; - }), - readConfigFile() { - return { - config: { - compilerOptions: { - foo: true - } - } - }; - }, - - sys: {} -})); - -describe('[UNIT] IncrementalChecker', () => { - describe('isFileExcluded', () => { - it('should properly filter definition files and listed exclusions', () => { - var linterConfig = { - linterOptions: { - exclude: ['src/formatter/**/*.ts'] - } - }; - - var exclusions = linterConfig.linterOptions.exclude.map(function( - pattern - ) { - return new minimatch.Minimatch(path.resolve(pattern)); - }); - - var testPaths = [ - 'src/formatter/codeframeFormatter.ts', - 'src/formatter/defaultFormatter.ts', - 'src/service.ts', - 'node_modules/tslint/lib/configuration.d.ts' - ].map(function(p) { - return path.resolve(p); - }); - - var pathsAreExcluded = testPaths.map(function(p) { - return IncrementalChecker.isFileExcluded(p, exclusions); - }); - - expect(pathsAreExcluded[0]).toBe(true); - expect(pathsAreExcluded[1]).toBe(true); - expect(pathsAreExcluded[2]).toBe(false); - expect(pathsAreExcluded[3]).toBe(true); - }); - }); - - describe('loadProgramConfig', () => { - it('merges compilerOptions into config file options', () => { - IncrementalChecker.loadProgramConfig( - require('typescript'), - 'tsconfig.foo.json', - { - bar: false - } - ); - - expect(typescript.parseJsonConfigFileContent).toHaveBeenCalledTimes(1); - expect(typescript.parseJsonConfigFileContent).toHaveBeenLastCalledWith( - { - compilerOptions: { - foo: true, - bar: false - } - }, - expect.anything(), - expect.anything() - ); - }); - }); -}); diff --git a/test/unit/IncrementalChecker.spec.ts b/test/unit/IncrementalChecker.spec.ts new file mode 100644 index 00000000..d426fafc --- /dev/null +++ b/test/unit/IncrementalChecker.spec.ts @@ -0,0 +1,48 @@ +import * as typescript from 'typescript'; +import { IncrementalChecker } from '../../lib/IncrementalChecker'; + +jest.mock('typescript', () => ({ + parseJsonConfigFileContent: jest.fn(function(tsconfig) { + return { + options: tsconfig.compilerOptions + }; + }), + readConfigFile() { + return { + config: { + compilerOptions: { + foo: true + } + } + }; + }, + + sys: {} +})); + +describe('[UNIT] IncrementalChecker', () => { + describe('loadProgramConfig', () => { + it('merges compilerOptions into config file options', () => { + IncrementalChecker.loadProgramConfig( + // eslint-disable-next-line @typescript-eslint/no-var-requires + require('typescript'), + 'tsconfig.foo.json', + { + bar: false + } + ); + + expect(typescript.parseJsonConfigFileContent).toHaveBeenCalledTimes(1); + expect(typescript.parseJsonConfigFileContent).toHaveBeenLastCalledWith( + { + compilerOptions: { + foo: true, + bar: false + } + }, + expect.anything(), + expect.anything() + ); + }); + }); +}); diff --git a/test/unit/NormalizedMessage.spec.js b/test/unit/NormalizedMessage.spec.js deleted file mode 100644 index c9cadb23..00000000 --- a/test/unit/NormalizedMessage.spec.js +++ /dev/null @@ -1,226 +0,0 @@ -var NormalizedMessage = require('../../lib/NormalizedMessage') - .NormalizedMessage; - -describe('[UNIT] NormalizedMessage', () => { - var diagnosticMessage; - var lintMessage; - - beforeEach(() => { - diagnosticMessage = new NormalizedMessage({ - type: 'diagnostic', - code: 123, - severity: 'error', - content: 'foo', - file: '/foo/bar.ts', - line: 532, - character: 12 - }); - - lintMessage = new NormalizedMessage({ - type: 'lint', - code: 321, - severity: 'warning', - content: 'bar', - file: '/bar/foo.tsx', - line: 890, - character: 11 - }); - }); - - it('should create new message', () => { - expect(diagnosticMessage.type).toBe('diagnostic'); - expect(diagnosticMessage.code).toBe(123); - expect(diagnosticMessage.severity).toBe('error'); - expect(diagnosticMessage.content).toBe('foo'); - expect(diagnosticMessage.file).toBe('/foo/bar.ts'); - expect(diagnosticMessage.line).toBe(532); - expect(diagnosticMessage.character).toBe(12); - }); - - it('should serialize and create from json', () => { - var json = diagnosticMessage.toJSON(); - - expect(typeof json).toBe('object'); - - var jsonMessage = NormalizedMessage.createFromJSON(json); - - expect(jsonMessage).toBeInstanceOf(NormalizedMessage); - expect(jsonMessage.type).toBe(diagnosticMessage.type); - expect(jsonMessage.code).toBe(diagnosticMessage.code); - expect(jsonMessage.severity).toBe(diagnosticMessage.severity); - expect(jsonMessage.content).toBe(diagnosticMessage.content); - expect(jsonMessage.file).toBe(diagnosticMessage.file); - expect(jsonMessage.line).toBe(diagnosticMessage.line); - expect(jsonMessage.character).toBe(diagnosticMessage.character); - }); - - it('should check type', () => { - expect(diagnosticMessage.isDiagnosticType()).toBe(true); - expect(diagnosticMessage.isLintType()).toBe(false); - expect(lintMessage.isDiagnosticType()).toBe(false); - expect(lintMessage.isLintType()).toBe(true); - }); - - it('should return formatted code', () => { - expect(diagnosticMessage.getFormattedCode()).toBe( - 'TS' + diagnosticMessage.code - ); - expect(lintMessage.getFormattedCode()).toBe(lintMessage.code); - }); - - it('should check severity', () => { - expect(diagnosticMessage.isErrorSeverity()).toBe(true); - expect(diagnosticMessage.isWarningSeverity()).toBe(false); - expect(lintMessage.isErrorSeverity()).toBe(false); - expect(lintMessage.isWarningSeverity()).toBe(true); - }); - - it('should compare numbers in asc', () => { - expect(NormalizedMessage.compareNumbers(123, 126)).toBeLessThan(0); - expect(NormalizedMessage.compareNumbers(-123, 126)).toBeLessThan(0); - expect(NormalizedMessage.compareNumbers(-126, -123)).toBeLessThan(0); - expect(NormalizedMessage.compareNumbers(132, 42)).toBeGreaterThan(0); - expect(NormalizedMessage.compareNumbers(132, -42)).toBeGreaterThan(0); - expect(NormalizedMessage.compareNumbers(-42, -132)).toBeGreaterThan(0); - expect(NormalizedMessage.compareNumbers(15, 15)).toBe(0); - expect(NormalizedMessage.compareNumbers(0, 0)).toBe(0); - expect(NormalizedMessage.compareNumbers(-15, -15)).toBe(0); - }); - - it('should compare strings in asc', () => { - expect(NormalizedMessage.compareOptionalStrings('abc', 'xyz')).toBeLessThan( - 0 - ); - expect( - NormalizedMessage.compareOptionalStrings(undefined, 'xyz') - ).toBeLessThan(0); - expect(NormalizedMessage.compareOptionalStrings(null, 'xyz')).toBeLessThan( - 0 - ); - expect( - NormalizedMessage.compareOptionalStrings('xyz', 'abc') - ).toBeGreaterThan(0); - expect( - NormalizedMessage.compareOptionalStrings('xyz', undefined) - ).toBeGreaterThan(0); - expect( - NormalizedMessage.compareOptionalStrings('xyz', null) - ).toBeGreaterThan(0); - expect(NormalizedMessage.compareOptionalStrings('xyz', 'xyz')).toBe(0); - expect(NormalizedMessage.compareOptionalStrings(undefined, undefined)).toBe( - 0 - ); - expect(NormalizedMessage.compareOptionalStrings(null, null)).toBe(0); - }); - - it('should compare severities in asc', () => { - expect( - NormalizedMessage.compareSeverities('warning', 'error') - ).toBeLessThan(0); - expect( - NormalizedMessage.compareSeverities('unknown', 'warning') - ).toBeLessThan(0); - expect( - NormalizedMessage.compareSeverities('error', 'warning') - ).toBeGreaterThan(0); - expect( - NormalizedMessage.compareSeverities('warning', 'unknown') - ).toBeGreaterThan(0); - expect(NormalizedMessage.compareSeverities('error', 'error')).toBe(0); - expect(NormalizedMessage.compareSeverities('warning', 'warning')).toBe(0); - expect(NormalizedMessage.compareSeverities('unknown', 'unknown')).toBe(0); - expect( - NormalizedMessage.compareSeverities('unknown', 'another_unknown') - ).toBe(0); - }); - - it('should compare types in asc', () => { - expect(NormalizedMessage.compareTypes('lint', 'diagnostic')).toBeLessThan( - 0 - ); - expect(NormalizedMessage.compareTypes('unknown', 'lint')).toBeLessThan(0); - expect( - NormalizedMessage.compareTypes('diagnostic', 'lint') - ).toBeGreaterThan(0); - expect(NormalizedMessage.compareTypes('lint', 'unknown')).toBeGreaterThan( - 0 - ); - expect(NormalizedMessage.compareTypes('diagnostic', 'diagnostic')).toBe(0); - expect(NormalizedMessage.compareTypes('lint', 'lint')).toBe(0); - expect(NormalizedMessage.compareTypes('unknown', 'unknown')).toBe(0); - expect(NormalizedMessage.compareTypes('unknown', 'another_unknown')).toBe( - 0 - ); - }); - - it('should compare messages', () => { - var messageA = diagnosticMessage; - function buildMessage(diff) { - return NormalizedMessage.createFromJSON({ - ...messageA.toJSON(), - ...diff - }); - } - - expect(NormalizedMessage.compare(messageA, undefined)).toBeGreaterThan(0); - expect(NormalizedMessage.compare(undefined, messageA)).toBeLessThan(0); - expect(NormalizedMessage.compare(messageA, {})).toBeGreaterThan(0); - expect(NormalizedMessage.compare({}, messageA)).toBeLessThan(0); - expect( - NormalizedMessage.compare(messageA, buildMessage({ type: 'lint' })) - ).toBeGreaterThan(0); - expect( - NormalizedMessage.compare(messageA, buildMessage({ file: '/goo/bar.ts' })) - ).toBeLessThan(0); - expect( - NormalizedMessage.compare(messageA, buildMessage({ severity: 'notice' })) - ).toBeGreaterThan(0); - expect( - NormalizedMessage.compare(messageA, buildMessage({ line: 400 })) - ).toBeGreaterThan(0); - expect( - NormalizedMessage.compare(messageA, buildMessage({ character: 200 })) - ).toBeLessThan(0); - expect( - NormalizedMessage.compare(messageA, buildMessage({ code: 100 })) - ).toBeGreaterThan(0); - expect( - NormalizedMessage.compare(messageA, buildMessage({ content: 'bar' })) - ).toBeGreaterThan(0); - }); - - it('should check if messages are equal', () => { - var messageA = diagnosticMessage; - var messageB = NormalizedMessage.createFromJSON(diagnosticMessage.toJSON()); - var messageC = lintMessage; - var messageD = NormalizedMessage.createFromJSON(lintMessage.toJSON()); - - expect(NormalizedMessage.equals(messageA, messageB)).toBe(true); - expect(NormalizedMessage.equals(messageA, messageC)).toBe(false); - expect(NormalizedMessage.equals(messageA, messageD)).toBe(false); - expect(NormalizedMessage.equals(messageB, messageC)).toBe(false); - expect(NormalizedMessage.equals(messageB, messageD)).toBe(false); - expect(NormalizedMessage.equals(messageC, messageD)).toBe(true); - }); - - it('should deduplicate list of messages', () => { - var messageA = diagnosticMessage; - var messageB = NormalizedMessage.createFromJSON(diagnosticMessage.toJSON()); - var messageC = lintMessage; - var messageD = NormalizedMessage.createFromJSON(lintMessage.toJSON()); - - var messages = [ - messageA, - messageC, - messageD, - messageD, - messageB, - messageC, - messageA - ]; - var unique = NormalizedMessage.deduplicate(messages); - - expect(Array.isArray(unique)).toBe(true); - expect(unique).toEqual([messageC, messageA]); - }); -}); diff --git a/test/unit/VueProgram.spec.js b/test/unit/VueProgram.spec.ts similarity index 74% rename from test/unit/VueProgram.spec.js rename to test/unit/VueProgram.spec.ts index 2597f946..9deeaa47 100644 --- a/test/unit/VueProgram.spec.js +++ b/test/unit/VueProgram.spec.ts @@ -1,29 +1,26 @@ -var unixify = require('unixify'); -var ts = require('typescript'); -var VueProgram = require('../../lib/VueProgram').VueProgram; -var ForkTsCheckerWebpackPlugin = require('../../lib/index'); -var templateCompilers = [ +import unixify from 'unixify'; +import * as ts from 'typescript'; +import { VueProgram } from '../../lib/VueProgram'; +import ForkTsCheckerWebpackPlugin from '../../lib/index'; + +const templateCompilers = [ 'vue-template-compiler', 'nativescript-vue-template-compiler' ]; jest.mock('typescript', () => { - var originalTs = jest.requireActual('typescript'); + const originalTs = jest.requireActual('typescript'); return { - parseJsonConfigFileContent: jest.fn(function(tsconfig) { - return { - options: tsconfig.compilerOptions - }; - }), - readConfigFile() { - return { - config: { - compilerOptions: { - foo: true - } + parseJsonConfigFileContent: jest.fn(tsconfig => ({ + options: tsconfig.compilerOptions + })), + readConfigFile: () => ({ + config: { + compilerOptions: { + foo: true } - }; - }, + } + }), sys: {}, ScriptKind: originalTs.ScriptKind }; @@ -42,17 +39,17 @@ describe('[UNIT] VueProgram', () => { }); it('should properly resolve relative module names', () => { - var basedir = '/base/dir'; - var containingFile = '/con/tain/ing/main.ts'; - var options = { + const basedir = '/base/dir'; + const containingFile = '/con/tain/ing/main.ts'; + const options: ts.CompilerOptions = { baseUrl: '/baseurl', paths: { '@/*': ['src/*'] } }; - var moduleNames = ['./test.vue', '../test.vue', '../../test.vue']; + const moduleNames = ['./test.vue', '../test.vue', '../../test.vue']; - var resolvedModuleNames = moduleNames.map(function(moduleName) { + const resolvedModuleNames = moduleNames.map(function(moduleName) { return VueProgram.resolveNonTsModuleName( moduleName, containingFile, @@ -67,12 +64,12 @@ describe('[UNIT] VueProgram', () => { }); it('should properly resolve wildcard module names', () => { - var basedir = '/base/dir'; - var containingFile = '/con/tain/ing/main.ts'; - var options = {}; - var moduleName = '@/test.vue'; + const basedir = '/base/dir'; + const containingFile = '/con/tain/ing/main.ts'; + const options: ts.CompilerOptions = {}; + const moduleName = '@/test.vue'; - var resolvedModuleName = VueProgram.resolveNonTsModuleName( + let resolvedModuleName = VueProgram.resolveNonTsModuleName( moduleName, containingFile, basedir, @@ -123,7 +120,10 @@ describe('[UNIT] VueProgram', () => { it.each(vueOptionsVariants)( 'should init valid vue options with: %p', option => { - var result = ForkTsCheckerWebpackPlugin.prepareVueOptions(option); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const result = (ForkTsCheckerWebpackPlugin as any).prepareVueOptions( + option + ); expect(typeof result.enabled).toBe('boolean'); expect(typeof result.compiler).toBe('string'); } @@ -132,14 +132,18 @@ describe('[UNIT] VueProgram', () => { it.each(templateCompilers)( 'should extract script block with compiler=%s', templateCompiler => { - var content = [ + const content = [ '' ].join('\n'); - var result = VueProgram.resolveScriptBlock(ts, content, templateCompiler); + const result = VueProgram.resolveScriptBlock( + ts, + content, + templateCompiler + ); expect(result.scriptKind).toBe(ts.ScriptKind.TS); expect(result.content).toBe( @@ -154,7 +158,7 @@ describe('[UNIT] VueProgram', () => { ); it.each(templateCompilers)('should pad lines with %s', templateCompiler => { - var content = [ + const content = [ '', @@ -165,7 +169,7 @@ describe('[UNIT] VueProgram', () => { '' ].join('\n'); - var result = VueProgram.resolveScriptBlock(ts, content, templateCompiler); + const result = VueProgram.resolveScriptBlock(ts, content, templateCompiler); expect(result.content).toBe( [ '//', @@ -182,7 +186,8 @@ describe('[UNIT] VueProgram', () => { describe('loadProgramConfig', () => { it('sets allowNonTsExtensions to true on returned options', () => { - var result = VueProgram.loadProgramConfig( + const result = VueProgram.loadProgramConfig( + // eslint-disable-next-line @typescript-eslint/no-var-requires require('typescript'), 'tsconfig.foo.json', {} @@ -192,11 +197,11 @@ describe('[UNIT] VueProgram', () => { }); it('merges compilerOptions into config file options', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires VueProgram.loadProgramConfig(require('typescript'), 'tsconfig.foo.json', { bar: false }); - expect(ts.parseJsonConfigFileContent).toHaveBeenCalledTimes(1); expect(ts.parseJsonConfigFileContent).toHaveBeenLastCalledWith( { compilerOptions: { diff --git a/test/unit/WorkSet.spec.js b/test/unit/WorkSet.spec.js deleted file mode 100644 index bf85f918..00000000 --- a/test/unit/WorkSet.spec.js +++ /dev/null @@ -1,46 +0,0 @@ -var WorkSet = require('../../lib/WorkSet').WorkSet; - -describe('[UNIT] WorkSet', () => { - function testForDomainAndDivision(domain, divisions) { - divisions.forEach(function(division) { - var toProcess = []; - - for (var i = 0; i < division; ++i) { - var set = new WorkSet(domain, i, division); - set.forEach(function(work) { - toProcess.push(work); - }); - } - - expect(toProcess).toEqual(domain); - }); - } - - it('should split work and cover odd work domain', () => { - var domain = [0, 10, 20, 30, 40, 50, 60, 70, 80]; - var divisions = [1, 2, 3, 4, domain.length, 1000]; - - testForDomainAndDivision(domain, divisions); - }); - - it('should split work and cover even work domain', () => { - var domain = [0, 100, 200, 300, 400, 500, 600, 700, 800, 900]; - var divisions = [1, 2, 3, 4, domain.length, 1000]; - - testForDomainAndDivision(domain, divisions); - }); - - it('should split work and cover empty work domain', () => { - var domain = []; - var divisions = [1, 2, 3, 4, 1000]; - - testForDomainAndDivision(domain, divisions); - }); - - it('should split work and cover single work domain', () => { - var domain = [5]; - var divisions = [1, 2, 3, 4, 1000]; - - testForDomainAndDivision(domain, divisions); - }); -}); diff --git a/test/unit/codeframeFormatter.spec.js b/test/unit/codeframeFormatter.spec.js deleted file mode 100644 index 667945d7..00000000 --- a/test/unit/codeframeFormatter.spec.js +++ /dev/null @@ -1,110 +0,0 @@ -var os = require('os'); -var mockFs = require('mock-fs'); -var NormalizedMessage = require('../../lib/NormalizedMessage') - .NormalizedMessage; -var createCodeframeFormatter = require('../../lib/formatter/codeframeFormatter') - .createCodeframeFormatter; - -describe('[UNIT] formatter/codeframeFormatter', () => { - beforeEach(() => { - mockFs({ - some: { - 'file.ts': [ - 'class SomeClass {', - ' private someProperty: boolean;', - ' constructor() {', - " console.log('anything special');", - ' }', - '}' - ].join('\n') - } - }); - }); - - afterEach(() => { - mockFs.restore(); - }); - - it('should format normalized diagnostic message', () => { - var message = new NormalizedMessage({ - type: NormalizedMessage.TYPE_DIAGNOSTIC, - code: 123, - severity: NormalizedMessage.SEVERITY_ERROR, - content: 'Some diagnostic content', - file: 'some/file.ts', - line: 1, - character: 7 - }); - var formatter = createCodeframeFormatter({ - linesAbove: 1, - linesBelow: 1 - }); - var formattedMessage = formatter(message, false); - - expect(formattedMessage).toBe( - 'ERROR in some/file.ts(1,7):' + - os.EOL + - '1:7 Some diagnostic content' + - os.EOL + - ' > 1 | class SomeClass {' + - os.EOL + - ' | ^' + - os.EOL + - ' 2 | private someProperty: boolean;' - ); - }); - - it('should format normalized lint message', () => { - var message = new NormalizedMessage({ - type: NormalizedMessage.TYPE_LINT, - code: 'some-lint-rule', - severity: NormalizedMessage.SEVERITY_WARNING, - content: 'Some lint content', - file: 'some/file.ts', - line: 2, - character: 11 - }); - var formatter = createCodeframeFormatter({ - linesAbove: 1, - linesBelow: 1 - }); - var formattedMessage = formatter(message, false); - - expect(formattedMessage).toBe( - 'WARNING in some/file.ts(2,11):' + - os.EOL + - '2:11 Some lint content' + - os.EOL + - ' 1 | class SomeClass {' + - os.EOL + - ' > 2 | private someProperty: boolean;' + - os.EOL + - ' | ^' + - os.EOL + - ' 3 | constructor() {' - ); - }); - - it('should format normalized message without file', () => { - var message = new NormalizedMessage({ - type: NormalizedMessage.TYPE_LINT, - code: 'some-lint-rule', - severity: NormalizedMessage.SEVERITY_WARNING, - content: 'Some lint content', - file: 'some/unknown-file.ts', - line: 2, - character: 11 - }); - var formatter = createCodeframeFormatter({ - linesAbove: 1, - linesBelow: 1 - }); - var formattedMessage = formatter(message, false); - - expect(formattedMessage).toBe( - 'WARNING in some/unknown-file.ts(2,11):' + - os.EOL + - '2:11 Some lint content' - ); - }); -}); diff --git a/test/unit/defaultFormatter.spec.js b/test/unit/defaultFormatter.spec.js deleted file mode 100644 index dc0526ed..00000000 --- a/test/unit/defaultFormatter.spec.js +++ /dev/null @@ -1,45 +0,0 @@ -var os = require('os'); -var NormalizedMessage = require('../../lib/NormalizedMessage') - .NormalizedMessage; -var createDefaultFormatter = require('../../lib/formatter/defaultFormatter') - .createDefaultFormatter; - -describe('[UNIT] formatter/defaultFormatter', () => { - it('should format normalized diagnostic message', () => { - var message = new NormalizedMessage({ - type: NormalizedMessage.TYPE_DIAGNOSTIC, - code: 123, - severity: NormalizedMessage.SEVERITY_ERROR, - content: 'Some diagnostic content', - file: '/some/file.ts', - line: 1, - character: 5 - }); - var formatter = createDefaultFormatter(); - var formattedMessage = formatter(message, false); - - expect(formattedMessage).toBe( - 'ERROR in /some/file.ts(1,5):' + os.EOL + 'TS123: Some diagnostic content' - ); - }); - - it('should format normalized lint message', () => { - var message = new NormalizedMessage({ - type: NormalizedMessage.TYPE_LINT, - code: 'some-lint-rule', - severity: NormalizedMessage.SEVERITY_WARNING, - content: 'Some lint content', - file: '/some/file.ts', - line: 2, - character: 6 - }); - var formatter = createDefaultFormatter(); - var formattedMessage = formatter(message, false); - - expect(formattedMessage).toBe( - 'WARNING in /some/file.ts(2,6):' + - os.EOL + - 'some-lint-rule: Some lint content' - ); - }); -}); diff --git a/test/unit/formatter/CodeframeFormatter.spec.ts b/test/unit/formatter/CodeframeFormatter.spec.ts new file mode 100644 index 00000000..1616fafb --- /dev/null +++ b/test/unit/formatter/CodeframeFormatter.spec.ts @@ -0,0 +1,98 @@ +import * as os from 'os'; +import mockFs from 'mock-fs'; +import { Issue, IssueOrigin, IssueSeverity } from '../../../lib/issue'; +import { createCodeframeFormatter } from '../../../lib/formatter'; + +describe('[UNIT] formatter/CodeframeFormatter', () => { + beforeEach(() => { + mockFs({ + src: { + 'index.ts': [ + 'const y: number = "1";', + 'const x = 1;', + '', + 'function z() {', + ' console.log(y);', + '}' + ].join('\n') + } + }); + }); + + afterEach(() => { + mockFs.restore(); + }); + + it.each([ + [ + { + origin: IssueOrigin.TYPESCRIPT, + severity: IssueSeverity.ERROR, + code: '2322', + message: `Type '"1"' is not assignable to type 'number'.`, + file: 'src/index.ts', + line: 1, + character: 7 + }, + [ + `ERROR in src/index.ts(1,7):`, + `1:7 Type '"1"' is not assignable to type 'number'.`, + ' > 1 | const y: number = "1";', + ' | ^', + ' 2 | const x = 1;' + ].join(os.EOL) + ], + [ + { + origin: IssueOrigin.TYPESCRIPT, + severity: IssueSeverity.ERROR, + code: '2322', + message: `Type '"1"' is not assignable to type 'number'.`, + file: 'src/not-existing.ts', + line: 1, + character: 7 + }, + [ + `ERROR in src/not-existing.ts(1,7):`, + `1:7 Type '"1"' is not assignable to type 'number'.` + ].join(os.EOL) + ], + [ + { + origin: IssueOrigin.ESLINT, + severity: IssueSeverity.WARNING, + code: 'no-unused-vars', + message: `'x' is assigned a value but never used.`, + file: 'src/index.ts', + line: 2, + character: 7 + }, + [ + `WARNING in src/index.ts(2,7):`, + `2:7 'x' is assigned a value but never used.`, + ' 1 | const y: number = "1";', + ' > 2 | const x = 1;', + ' | ^', + ' 3 | ' + ].join(os.EOL) + ], + [ + { + origin: IssueOrigin.INTERNAL, + severity: IssueSeverity.ERROR, + code: 'INTERNAL', + message: `Stack overflow - out of memory` + }, + 'INTERNAL ERROR: Stack overflow - out of memory' + ] + ])('formats issue message "%p" to "%p"', (...args) => { + const [issue, expectedFormatted] = args as [Issue, string]; + const formatter = createCodeframeFormatter({ + linesAbove: 1, + linesBelow: 1 + }); + const formatted = formatter(issue); + + expect(formatted).toEqual(expectedFormatted); + }); +}); diff --git a/test/unit/formatter/DefaultFormatter.spec.ts b/test/unit/formatter/DefaultFormatter.spec.ts new file mode 100644 index 00000000..813d60d4 --- /dev/null +++ b/test/unit/formatter/DefaultFormatter.spec.ts @@ -0,0 +1,53 @@ +import * as os from 'os'; +import { Issue, IssueOrigin, IssueSeverity } from '../../../lib/issue'; +import { createDefaultFormatter } from '../../../lib/formatter'; + +describe('[UNIT] formatter/DefaultFormatter', () => { + it.each([ + [ + { + origin: IssueOrigin.TYPESCRIPT, + severity: IssueSeverity.ERROR, + code: '2322', + message: `Type '"1"' is not assignable to type 'number'.`, + file: 'src/index.ts', + line: 1, + character: 7 + }, + [ + `ERROR in src/index.ts(1,7):`, + `TS2322: Type '"1"' is not assignable to type 'number'.` + ].join(os.EOL) + ], + [ + { + origin: IssueOrigin.ESLINT, + severity: IssueSeverity.WARNING, + code: 'no-unused-vars', + message: `'x' is assigned a value but never used.`, + file: 'src/index.ts', + line: 2, + character: 10 + }, + [ + `WARNING in src/index.ts(2,10):`, + `no-unused-vars: 'x' is assigned a value but never used.` + ].join(os.EOL) + ], + [ + { + origin: IssueOrigin.INTERNAL, + severity: IssueSeverity.ERROR, + code: 'INTERNAL', + message: `Stack overflow - out of memory` + }, + 'INTERNAL ERROR: Stack overflow - out of memory' + ] + ])('formats issue message "%p" to "%p"', (...args) => { + const [issue, expectedFormatted] = args as [Issue, string]; + const formatter = createDefaultFormatter(); + const formatted = formatter(issue); + + expect(formatted).toEqual(expectedFormatted); + }); +}); diff --git a/test/unit/formatter/FormatterFactory.spec.ts b/test/unit/formatter/FormatterFactory.spec.ts new file mode 100644 index 00000000..2758592d --- /dev/null +++ b/test/unit/formatter/FormatterFactory.spec.ts @@ -0,0 +1,93 @@ +import * as os from 'os'; +import mockFs from 'mock-fs'; +import { createFormatter, FormatterType } from '../../../lib/formatter'; +import { Issue, IssueOrigin, IssueSeverity } from '../../../lib/issue'; + +describe('[UNIT] formatter/FormatterFactory', () => { + beforeEach(() => { + mockFs({ + some: { + 'file.ts': [ + 'class SomeClass {', + ' private someProperty: boolean;', + ' constructor() {', + " console.log('anything special');", + ' }', + '}' + ].join('\n') + } + }); + }); + + afterEach(() => { + mockFs.restore(); + }); + + const issue: Issue = { + origin: IssueOrigin.TYPESCRIPT, + severity: IssueSeverity.ERROR, + code: '123', + message: 'Some issue content', + file: 'some/file.ts', + line: 1, + character: 7 + }; + + it.each(['default', undefined])('creates default formatter', type => { + const formatter = createFormatter(type as FormatterType); + const formattedMessage = formatter(issue); + + expect(formattedMessage).toEqual( + ['ERROR in some/file.ts(1,7):', 'TS123: Some issue content'].join(os.EOL) + ); + }); + + it('creates codeframe formatter', () => { + const formatter = createFormatter('codeframe'); + const formattedMessage = formatter(issue); + + expect(formattedMessage).toEqual( + [ + 'ERROR in some/file.ts(1,7):', + '1:7 Some issue content', + ' > 1 | class SomeClass {', + ' | ^', + ' 2 | private someProperty: boolean;', + ' 3 | constructor() {', + " 4 | console.log('anything special');" + ].join(os.EOL) + ); + }); + + it('creates codeframe formatter with custom options', () => { + const formatter = createFormatter('codeframe', { + linesAbove: 1, + linesBelow: 1 + }); + const formattedMessage = formatter(issue); + + expect(formattedMessage).toEqual( + [ + 'ERROR in some/file.ts(1,7):', + '1:7 Some issue content', + ' > 1 | class SomeClass {', + ' | ^', + ' 2 | private someProperty: boolean;' + ].join(os.EOL) + ); + }); + + it('forwards already created formatter', () => { + const formatter = createFormatter(issue => issue.message); + const formattedMessage = formatter(issue); + + expect(formattedMessage).toEqual('Some issue content'); + }); + + it('throws an error on unknown formatter type', () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect(() => createFormatter('unknown-type' as any)).toThrowError( + `Unknown "unknown-type" formatter. Available types are: default, codeframe.` + ); + }); +}); diff --git a/test/unit/formatter/InternalFormatter.spec.ts b/test/unit/formatter/InternalFormatter.spec.ts new file mode 100644 index 00000000..8fd8a56d --- /dev/null +++ b/test/unit/formatter/InternalFormatter.spec.ts @@ -0,0 +1,66 @@ +import * as os from 'os'; +import { Issue, IssueSeverity, IssueOrigin } from '../../../lib/issue'; +import { createInternalFormatter } from '../../../lib/formatter'; + +describe('[UNIT] formatter/InternalFormatter', () => { + it.each([ + [ + { + origin: IssueOrigin.INTERNAL, + severity: IssueSeverity.ERROR, + code: 'INTERNAL', + message: `Stack overflow - out of memory` + }, + 'INTERNAL ERROR: Stack overflow - out of memory' + ], + [ + { + origin: IssueOrigin.INTERNAL, + severity: IssueSeverity.ERROR, + code: 'INTERNAL', + message: `Stack overflow - out of memory`, + stack: [ + `Security context: 0x35903c44a49 `, + `1: walkFunctionDeclaration [/node_modules/webpack/lib/Parser.js:~443] [pc=0xa07a14ec8ee] (this=0x59f67991119 ,statement=0x3507a80af661 )`, + `2: walkStatement [/node_modules/webpack/lib/Parser.js:~348] [pc=0xa07a06dfc10] (this=0x59f6799111...`, + ``, + `FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory`, + `Abort trap: 6` + ].join(os.EOL) + }, + [ + 'INTERNAL ERROR: Stack overflow - out of memory', + 'stack trace:', + `Security context: 0x35903c44a49 `, + `1: walkFunctionDeclaration [/node_modules/webpack/lib/Parser.js:~443] [pc=0xa07a14ec8ee] (this=0x59f67991119 ,statement=0x3507a80af661 )`, + `2: walkStatement [/node_modules/webpack/lib/Parser.js:~348] [pc=0xa07a06dfc10] (this=0x59f6799111...`, + ``, + `FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory`, + `Abort trap: 6` + ].join(os.EOL) + ] + ])('formats issue message "%p" to "%p"', (...args) => { + const [issue, expectedFormatted] = args as [Issue, string]; + const formatter = createInternalFormatter(); + const formatted = formatter(issue); + + expect(formatted).toEqual(expectedFormatted); + }); + + it('throws an error on non-internal issue format', () => { + const formatter = createInternalFormatter(); + const issue = { + origin: IssueOrigin.TYPESCRIPT, + severity: IssueSeverity.ERROR, + code: '2322', + message: `Type '"1"' is not assignable to type 'number'.`, + file: 'src/index.ts', + line: 1, + character: 7 + }; + + expect(() => formatter(issue)).toThrowError( + `Not supported "${IssueOrigin.TYPESCRIPT}" issue origin.` + ); + }); +}); diff --git a/test/unit/formatter/RawFormatter.spec.ts b/test/unit/formatter/RawFormatter.spec.ts new file mode 100644 index 00000000..df161a82 --- /dev/null +++ b/test/unit/formatter/RawFormatter.spec.ts @@ -0,0 +1,37 @@ +import { Issue, IssueOrigin, IssueSeverity } from '../../../lib/issue'; +import { createRawFormatter } from '../../../lib/formatter'; + +describe('[UNIT] formatter/RawFormatter', () => { + it.each([ + [ + { + origin: IssueOrigin.TYPESCRIPT, + severity: IssueSeverity.ERROR, + code: '2322', + message: `Type '"1"' is not assignable to type 'number'.`, + file: 'src/index.ts', + line: 1, + character: 7 + }, + `ERROR TS2322: Type '"1"' is not assignable to type 'number'.` + ], + [ + { + origin: IssueOrigin.ESLINT, + severity: IssueSeverity.WARNING, + code: 'no-unused-vars', + message: `'x' is assigned a value but never used.`, + file: 'src/index.ts', + line: 2, + character: 10 + }, + `WARNING no-unused-vars: 'x' is assigned a value but never used.` + ] + ])('formats issue message "%p" to "%p"', (...args) => { + const [issue, expectedFormatted] = args as [Issue, string]; + const formatter = createRawFormatter(); + const formatted = formatter(issue); + + expect(formatted).toEqual(expectedFormatted); + }); +}); diff --git a/test/unit/formatter/__mocks__/chalk.js b/test/unit/formatter/__mocks__/chalk.js new file mode 100644 index 00000000..fe974613 --- /dev/null +++ b/test/unit/formatter/__mocks__/chalk.js @@ -0,0 +1,107 @@ +function style(...strings) { + // by-pass styling + return strings.join(' '); +} + +const modifiers = [ + 'reset', + 'bold', + 'dim', + 'italic', + 'underline', + 'inverse', + 'hidden', + 'strikethrough', + 'visible' +]; +const colors = [ + 'black', + 'red', + 'green', + 'yellow', + 'blue', + 'magenta', + 'cyan', + 'white', + 'blackBright', + 'gray', + 'grey', + 'redBright', + 'greenBright', + 'yellowBright', + 'blueBright', + 'magentaBright', + 'cyanBright', + 'whiteBright' +]; +const bgColors = [ + 'bgBlack', + 'bgRed', + 'bgGreen', + 'bgYellow', + 'bgBlue', + 'bgMagenta', + 'bgCyan', + 'bgWhite', + 'bgBlackBright', + 'bgGray', + 'bgGrey', + 'bgRedBright', + 'bgGreenBright', + 'bgYellowBright', + 'bgBlueBright', + 'bgMagentaBright', + 'bgCyanBright', + 'bgWhiteBright' +]; +const models = [ + 'rgb', + 'hex', + 'keyword', + 'hsl', + 'hsv', + 'hwb', + 'ansi', + 'ansi256' +]; + +const styleMethods = [...modifiers, ...colors, ...bgColors]; +const modelMethods = models; + +// register all style methods as a chain methods +styleMethods.forEach(method => { + style[method] = style; +}); +// register all model methods as a chain methods +modelMethods.forEach(method => { + style[method] = () => style; +}); + +// chalk constructor +function Chalk() { + // chalk API + this.supportsColor = { + level: 0, + hasBasic: false, + has256: false, + has16m: false + }; + + // register all style methods as a chalk API + styleMethods.forEach(method => { + this[method] = style; + }); + // register all model methods as a chalk API + modelMethods.forEach(method => { + this[method] = () => style; + }); +} + +// default chalk instance +const chalk = new Chalk(); +chalk.stderr = new Chalk(); +chalk.Instance = Chalk; + +// mimic chalk export style +chalk.default = chalk; +module.exports = chalk; diff --git a/test/unit/index.spec.js b/test/unit/index.spec.ts similarity index 58% rename from test/unit/index.spec.js rename to test/unit/index.spec.ts index b15200c9..cfaea897 100644 --- a/test/unit/index.spec.js +++ b/test/unit/index.spec.ts @@ -1,4 +1,6 @@ /* eslint-disable @typescript-eslint/no-var-requires */ +import * as semver from 'semver'; + describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { beforeEach(() => { jest.resetModules(); @@ -7,7 +9,7 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { describe('typescript', () => { it('should throw if typescript not present', () => { jest.setMock('typescript', () => undefined); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect(function() { new ForkTsCheckerWebpackPlugin(); @@ -16,7 +18,7 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { it('should not throw if typescript version >= 2.1.0', () => { jest.setMock('typescript', { version: '2.1.0' }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect(function() { new ForkTsCheckerWebpackPlugin(); @@ -25,7 +27,7 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { it('should throw if typescript version < 2.1.0', () => { jest.setMock('typescript', { version: '2.0.8' }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect(function() { new ForkTsCheckerWebpackPlugin(); @@ -34,63 +36,50 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { }); describe('eslint', () => { + const ifNodeGte8It = semver.lt(process.version, '8.10.0') ? it.skip : it; + const ifNodeLt8It = semver.lt(process.version, '8.10.0') ? it : it.skip; + it('should throw if eslint not present', () => { jest.setMock('typescript', { version: '2.1.0' }); jest.setMock('eslint', undefined); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect(function() { new ForkTsCheckerWebpackPlugin({ eslint: true }); }).toThrowError(Error); }); - it('should not throw if eslint is present', () => { - jest.setMock('typescript', { version: '2.1.0' }); - jest.setMock('eslint', { Linter: { VERSION: '5.7.0' } }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); - - expect(function() { - new ForkTsCheckerWebpackPlugin({ eslint: true }); - }).not.toThrowError(); - }); - }); - - describe('tslint', () => { - it('should throw if tslint not present', () => { - jest.setMock('typescript', { version: '2.1.0' }); - jest.setMock('tslint', undefined); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); - - expect(function() { - new ForkTsCheckerWebpackPlugin({ tslint: true }); - }).toThrowError(Error); - }); - - it('should not throw if tslint version >= 4.0.0', () => { - jest.setMock('typescript', { version: '2.1.0' }); - jest.setMock('tslint', { Linter: { VERSION: '4.0.0' } }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); - - expect(function() { - new ForkTsCheckerWebpackPlugin({ tslint: true }); - }).not.toThrowError(); - }); - - it('should throw if tslint version < 4.0.0', () => { - jest.setMock('typescript', { version: '2.1.0' }); - jest.setMock('tslint', { Linter: { VERSION: '3.15.1' } }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); - - expect(function() { - new ForkTsCheckerWebpackPlugin({ tslint: true }); - }).toThrowError(Error); - }); + ifNodeGte8It( + 'should not throw if eslint is present and Node.js version >= 8.10.0', + () => { + jest.setMock('typescript', { version: '2.1.0' }); + jest.setMock('eslint', { Linter: { VERSION: '5.7.0' } }); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); + + expect(function() { + new ForkTsCheckerWebpackPlugin({ eslint: true }); + }).not.toThrowError(); + } + ); + + ifNodeLt8It( + 'should throw if eslint is present and Node.js version < 8.10.0', + () => { + jest.setMock('typescript', { version: '2.1.0' }); + jest.setMock('eslint', { Linter: { VERSION: '5.7.0' } }); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); + + expect(function() { + new ForkTsCheckerWebpackPlugin({ eslint: true }); + }).toThrowError(); + } + ); }); describe('useTypescriptIncrementalApi', () => { it('should be true if useTypescriptIncrementalApi: true supplied', () => { jest.setMock('typescript', { version: '2.1.0' }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect( new ForkTsCheckerWebpackPlugin({ useTypescriptIncrementalApi: true }) @@ -100,7 +89,7 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { it('should be true if useTypescriptIncrementalApi: false supplied', () => { jest.setMock('typescript', { version: '3.0.0' }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect( new ForkTsCheckerWebpackPlugin({ useTypescriptIncrementalApi: false }) @@ -110,7 +99,7 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { it('should be false if useTypescriptIncrementalApi not supplied and typescript version < 3.0.0', () => { jest.setMock('typescript', { version: '2.1.0' }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect(new ForkTsCheckerWebpackPlugin().useTypescriptIncrementalApi).toBe( false @@ -119,7 +108,7 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { it('should be true if useTypescriptIncrementalApi not supplied and typescript version >= 3.0.0', () => { jest.setMock('typescript', { version: '3.0.0' }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect(new ForkTsCheckerWebpackPlugin().useTypescriptIncrementalApi).toBe( true @@ -128,7 +117,7 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { it('should be false if useTypescriptIncrementalApi not supplied and typescript version < 3.0.0 and vue is true', () => { jest.setMock('typescript', { version: '2.1.0' }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect( new ForkTsCheckerWebpackPlugin({ vue: true }) @@ -138,7 +127,7 @@ describe('[UNIT] ForkTsCheckerWebpackPlugin', () => { it('should be false if useTypescriptIncrementalApi not supplied and typescript version >= 3.0.0 and vue is true', () => { jest.setMock('typescript', { version: '3.0.0' }); - var ForkTsCheckerWebpackPlugin = require('../../lib/index'); + const ForkTsCheckerWebpackPlugin = require('../../lib/index'); expect( new ForkTsCheckerWebpackPlugin({ vue: true }) diff --git a/test/unit/issue/Issue.spec.ts b/test/unit/issue/Issue.spec.ts new file mode 100644 index 00000000..09469303 --- /dev/null +++ b/test/unit/issue/Issue.spec.ts @@ -0,0 +1,353 @@ +import { + IssueSeverity, + IssueOrigin, + isIssue, + deduplicateAndSortIssues, + Issue +} from '../../../lib/issue'; + +function omit( + object: TObject, + keys: (keyof TObject)[] +) { + const omittedObject = Object.assign({}, object); + keys.forEach(key => delete omittedObject[key]); + + return omittedObject; +} + +describe('[UNIT] issue/Issue', () => { + const BASIC_INTERNAL_ISSUE = { + origin: IssueOrigin.INTERNAL, + severity: IssueSeverity.ERROR, + code: 'INTERNAL', + message: 'Out of memory' + }; + const BASIC_TYPESCRIPT_ISSUE = { + origin: IssueOrigin.TYPESCRIPT, + severity: IssueSeverity.ERROR, + code: '4221', + message: 'Cannot assign string to the number type' + }; + const BASIC_ESLINT_ISSUE = { + origin: IssueOrigin.ESLINT, + severity: IssueSeverity.ERROR, + code: 'white-space', + message: 'Missing space between function brackets' + }; + + it.each([BASIC_INTERNAL_ISSUE, BASIC_TYPESCRIPT_ISSUE, BASIC_ESLINT_ISSUE])( + "checks if '%p' is a Issue", + issue => { + expect(isIssue(issue)).toEqual(true); + } + ); + + it.each([ + null, + undefined, + '', + 'test', + 1, + {}, + new Date(), + true, + false, + omit(BASIC_INTERNAL_ISSUE, ['origin']), + omit(BASIC_TYPESCRIPT_ISSUE, ['severity']), + omit(BASIC_ESLINT_ISSUE, ['code']), + omit(BASIC_TYPESCRIPT_ISSUE, ['origin', 'message']) + ])("checks if '%p' isn't a Issue", issue => { + expect(isIssue(issue)).toEqual(false); + }); + + it.each([ + [ + // compare origin + [ + BASIC_ESLINT_ISSUE, + BASIC_TYPESCRIPT_ISSUE, + BASIC_ESLINT_ISSUE, + BASIC_INTERNAL_ISSUE, + BASIC_INTERNAL_ISSUE, + BASIC_ESLINT_ISSUE + ], + [BASIC_INTERNAL_ISSUE, BASIC_TYPESCRIPT_ISSUE, BASIC_ESLINT_ISSUE] + ], + [ + // compare file + [ + { + ...BASIC_INTERNAL_ISSUE, + file: 'src/index.ts' + }, + BASIC_INTERNAL_ISSUE, + { + ...BASIC_INTERNAL_ISSUE, + file: 'src/different.ts' + }, + { + ...BASIC_INTERNAL_ISSUE, + file: 'src/another.ts' + }, + { + ...BASIC_INTERNAL_ISSUE, + file: 'src/different.ts' + } + ], + [ + BASIC_INTERNAL_ISSUE, + { + ...BASIC_INTERNAL_ISSUE, + file: 'src/another.ts' + }, + { + ...BASIC_INTERNAL_ISSUE, + file: 'src/different.ts' + }, + { + ...BASIC_INTERNAL_ISSUE, + file: 'src/index.ts' + } + ] + ], + [ + // compare severity + [ + { + ...BASIC_ESLINT_ISSUE, + severity: IssueSeverity.WARNING + }, + { + ...BASIC_ESLINT_ISSUE, + severity: IssueSeverity.ERROR + }, + { + ...BASIC_ESLINT_ISSUE, + severity: IssueSeverity.WARNING + } + ], + [ + { + ...BASIC_ESLINT_ISSUE, + severity: IssueSeverity.ERROR + }, + { + ...BASIC_ESLINT_ISSUE, + severity: IssueSeverity.WARNING + } + ] + ], + [ + // compare line + [ + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 15 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 5 + }, + BASIC_TYPESCRIPT_ISSUE, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10 + } + ], + [ + BASIC_TYPESCRIPT_ISSUE, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 5 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 15 + } + ] + ], + [ + // compare character + [ + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10, + character: 3 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10, + character: 6 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10, + character: 1 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10, + character: 6 + } + ], + [ + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10, + character: 1 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10, + character: 3 + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + line: 10, + character: 6 + } + ] + ], + [ + // compare code + [ + { + ...BASIC_TYPESCRIPT_ISSUE, + code: '1500' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + code: '1000' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + code: '2000' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + code: '1000' + } + ], + [ + { + ...BASIC_TYPESCRIPT_ISSUE, + code: '1000' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + code: '1500' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + code: '2000' + } + ] + ], + [ + // compare message + [ + { + ...BASIC_TYPESCRIPT_ISSUE, + message: 'B' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + message: 'C' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + message: 'A' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + message: 'B' + } + ], + [ + { + ...BASIC_TYPESCRIPT_ISSUE, + message: 'A' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + message: 'B' + }, + { + ...BASIC_TYPESCRIPT_ISSUE, + message: 'C' + } + ] + ], + [ + // stack + [ + { + ...BASIC_INTERNAL_ISSUE, + stack: 'A' + }, + { + ...BASIC_INTERNAL_ISSUE, + stack: 'C' + }, + BASIC_INTERNAL_ISSUE, + { + ...BASIC_INTERNAL_ISSUE, + stack: 'A' + }, + { + ...BASIC_INTERNAL_ISSUE, + stack: 'B' + } + ], + [ + BASIC_INTERNAL_ISSUE, + { + ...BASIC_INTERNAL_ISSUE, + stack: 'A' + }, + { + ...BASIC_INTERNAL_ISSUE, + stack: 'B' + }, + { + ...BASIC_INTERNAL_ISSUE, + stack: 'C' + } + ] + ], + [ + // empty + [], + [] + ], + [ + [ + BASIC_ESLINT_ISSUE, + omit(BASIC_ESLINT_ISSUE, ['message']), + BASIC_ESLINT_ISSUE + ], + [BASIC_ESLINT_ISSUE] + ], + [[omit(BASIC_ESLINT_ISSUE, ['message'])], []] + ])('deduplicates issues %p to %p', (...args) => { + const [issues, deduplicatedIssues] = args as [Issue[], Issue[]]; + expect(deduplicateAndSortIssues(issues)).toEqual(deduplicatedIssues); + }); +}); diff --git a/test/unit/issue/IssueOrigin.spec.ts b/test/unit/issue/IssueOrigin.spec.ts new file mode 100644 index 00000000..96d06efb --- /dev/null +++ b/test/unit/issue/IssueOrigin.spec.ts @@ -0,0 +1,49 @@ +import { + IssueOrigin, + isIssueOrigin, + compareIssueOrigins +} from '../../../lib/issue'; + +describe('[UNIT] issue/IssueOrigin', () => { + it('defines issue origin enum', () => { + expect(IssueOrigin).toMatchSnapshot(); + }); + + it.each([IssueOrigin.INTERNAL, IssueOrigin.TYPESCRIPT, IssueOrigin.ESLINT])( + "checks if '%p' is a IssueOrigin", + origin => { + expect(isIssueOrigin(origin)).toEqual(true); + } + ); + + it.each([null, undefined, '', 'test', 1, {}, new Date(), true, false])( + "checks if '%p' isn't a IssueOrigin", + origin => { + expect(isIssueOrigin(origin)).toEqual(false); + } + ); + + it.each([ + // INTERNAL + [IssueOrigin.INTERNAL, IssueOrigin.INTERNAL, 0], + [IssueOrigin.INTERNAL, IssueOrigin.TYPESCRIPT, -1], + [IssueOrigin.INTERNAL, IssueOrigin.ESLINT, -1], + + // TYPESCRIPT + [IssueOrigin.TYPESCRIPT, IssueOrigin.INTERNAL, 1], + [IssueOrigin.TYPESCRIPT, IssueOrigin.TYPESCRIPT, 0], + [IssueOrigin.TYPESCRIPT, IssueOrigin.ESLINT, -1], + + // ESLINT + [IssueOrigin.ESLINT, IssueOrigin.INTERNAL, 1], + [IssueOrigin.ESLINT, IssueOrigin.TYPESCRIPT, 1], + [IssueOrigin.ESLINT, IssueOrigin.ESLINT, 0] + ])("compares issue origin '%p' with '%p' and returns '%p'", (...args) => { + const [originA, originB, result] = args as [ + IssueOrigin, + IssueOrigin, + number + ]; + expect(compareIssueOrigins(originA, originB)).toEqual(result); + }); +}); diff --git a/test/unit/issue/IssueSeverity.spec.ts b/test/unit/issue/IssueSeverity.spec.ts new file mode 100644 index 00000000..9f4ba0f8 --- /dev/null +++ b/test/unit/issue/IssueSeverity.spec.ts @@ -0,0 +1,42 @@ +import { + IssueSeverity, + isIssueSeverity, + compareIssueSeverities +} from '../../../lib/issue'; + +describe('[UNIT] issue/IssueSeverity', () => { + it('defines issue severity enum', () => { + expect(IssueSeverity).toMatchSnapshot(); + }); + + it.each([IssueSeverity.ERROR, IssueSeverity.WARNING])( + "checks if '%p' is a IssueSeverity", + severity => { + expect(isIssueSeverity(severity)).toEqual(true); + } + ); + + it.each([null, undefined, '', 'test', 1, {}, new Date(), true, false])( + "checks if '%p' isn't a IssueSeverity", + severity => { + expect(isIssueSeverity(severity)).toEqual(false); + } + ); + + it.each([ + // ERROR + [IssueSeverity.ERROR, IssueSeverity.ERROR, 0], + [IssueSeverity.ERROR, IssueSeverity.WARNING, -1], + + // WARNING + [IssueSeverity.WARNING, IssueSeverity.ERROR, 1], + [IssueSeverity.WARNING, IssueSeverity.WARNING, 0] + ])("compares issue severity '%p' with '%p' and returns '%p'", (...args) => { + const [severityA, severityB, result] = args as [ + IssueSeverity, + IssueSeverity, + number + ]; + expect(compareIssueSeverities(severityA, severityB)).toEqual(result); + }); +}); diff --git a/test/unit/issue/__snapshots__/IssueOrigin.spec.ts.snap b/test/unit/issue/__snapshots__/IssueOrigin.spec.ts.snap new file mode 100644 index 00000000..6f798fde --- /dev/null +++ b/test/unit/issue/__snapshots__/IssueOrigin.spec.ts.snap @@ -0,0 +1,9 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`[UNIT] issue/IssueOrigin defines issue origin enum 1`] = ` +Object { + "ESLINT": "eslint", + "INTERNAL": "internal", + "TYPESCRIPT": "typescript", +} +`; diff --git a/test/unit/issue/__snapshots__/IssueSeverity.spec.ts.snap b/test/unit/issue/__snapshots__/IssueSeverity.spec.ts.snap new file mode 100644 index 00000000..bbdaf90d --- /dev/null +++ b/test/unit/issue/__snapshots__/IssueSeverity.spec.ts.snap @@ -0,0 +1,8 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`[UNIT] issue/IssueSeverity defines issue severity enum 1`] = ` +Object { + "ERROR": "error", + "WARNING": "warning", +} +`; diff --git a/test/unit/issue/eslint/EsLintIssueFactory.spec.ts b/test/unit/issue/eslint/EsLintIssueFactory.spec.ts new file mode 100644 index 00000000..4fb5002f --- /dev/null +++ b/test/unit/issue/eslint/EsLintIssueFactory.spec.ts @@ -0,0 +1,77 @@ +import { createIssuesFromEsLintReports } from '../../../../lib/issue'; +import * as eslint from 'eslint'; + +describe('[UNIT] issue/eslint/EsLintIssueFactory', () => { + type LintMessage = eslint.Linter.LintMessage; + type LintResult = eslint.CLIEngine.LintResult; + type LintReport = eslint.CLIEngine.LintReport; + + const ES_LINT_MESSAGE_ERROR: LintMessage = { + column: 0, + line: 13, + endColumn: 5, + endLine: 13, + ruleId: 'no-unused-vars', + message: `'y' is assigned a value but never used.`, + nodeType: '', + severity: 0, + source: null + }; + const ES_LINT_MESSAGE_WARNING: LintMessage = { + column: 10, + line: 15, + ruleId: 'no-unused-vars', + message: `'y' is assigned a value but never used.`, + nodeType: '', + severity: 1, + source: null + }; + const ES_LINT_RESULT_INDEX: LintResult = { + filePath: 'src/index.ts', + messages: [ES_LINT_MESSAGE_ERROR], + errorCount: 1, + warningCount: 0, + fixableErrorCount: 0, + fixableWarningCount: 0 + }; + const ES_LINT_RESULT_ANOTHER: LintResult = { + filePath: 'src/another.ts', + messages: [ES_LINT_MESSAGE_WARNING], + errorCount: 0, + warningCount: 1, + fixableErrorCount: 0, + fixableWarningCount: 0 + }; + const ES_LINT_RESULT_ADDITIONAL: LintResult = { + filePath: 'src/additional.ts', + messages: [ES_LINT_MESSAGE_ERROR], + errorCount: 1, + warningCount: 0, + fixableErrorCount: 0, + fixableWarningCount: 0 + }; + const ES_LINT_REPORT_A: LintReport = { + results: [ES_LINT_RESULT_INDEX, ES_LINT_RESULT_ANOTHER], + errorCount: 1, + warningCount: 1, + fixableErrorCount: 0, + fixableWarningCount: 0 + }; + const ES_LINT_REPORT_B: LintReport = { + results: [ES_LINT_RESULT_ADDITIONAL], + errorCount: 1, + warningCount: 1, + fixableErrorCount: 0, + fixableWarningCount: 0 + }; + const ES_LINT_REPORTS = [ES_LINT_REPORT_A, ES_LINT_REPORT_B]; + + it.each([[ES_LINT_REPORTS]])( + 'creates Issues from EsLint Reports: %p', + reports => { + const issues = createIssuesFromEsLintReports(reports); + + expect(issues).toMatchSnapshot(); + } + ); +}); diff --git a/test/unit/issue/eslint/__snapshots__/EsLintIssueFactory.spec.ts.snap b/test/unit/issue/eslint/__snapshots__/EsLintIssueFactory.spec.ts.snap new file mode 100644 index 00000000..75d35833 --- /dev/null +++ b/test/unit/issue/eslint/__snapshots__/EsLintIssueFactory.spec.ts.snap @@ -0,0 +1,33 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`[UNIT] issue/eslint/EsLintIssueFactory creates Issues from EsLint Reports: [[Object], [Object]] 1`] = ` +Array [ + Object { + "character": 0, + "code": "no-unused-vars", + "file": "src/additional.ts", + "line": 13, + "message": "'y' is assigned a value but never used.", + "origin": "eslint", + "severity": "error", + }, + Object { + "character": 10, + "code": "no-unused-vars", + "file": "src/another.ts", + "line": 15, + "message": "'y' is assigned a value but never used.", + "origin": "eslint", + "severity": "warning", + }, + Object { + "character": 0, + "code": "no-unused-vars", + "file": "src/index.ts", + "line": 13, + "message": "'y' is assigned a value but never used.", + "origin": "eslint", + "severity": "error", + }, +] +`; diff --git a/test/unit/issue/internal/InternalIssueFactory.spec.ts b/test/unit/issue/internal/InternalIssueFactory.spec.ts new file mode 100644 index 00000000..99c9eec4 --- /dev/null +++ b/test/unit/issue/internal/InternalIssueFactory.spec.ts @@ -0,0 +1,29 @@ +import { createIssueFromInternalError } from '../../../../lib/issue'; + +describe('[UNIT] issue/internal/InternalIssueFactory', () => { + const ERROR_WITH_MESSAGE_AND_STACK = { + message: 'Stack overflow - out of memory', + stack: [ + `Security context: 0x35903c44a49 `, + `1: walkFunctionDeclaration [/node_modules/webpack/lib/Parser.js:~443] [pc=0xa07a14ec8ee] (this=0x59f67991119 ,statement=0x3507a80af661 )`, + `2: walkStatement [/node_modules/webpack/lib/Parser.js:~348] [pc=0xa07a06dfc10] (this=0x59f6799111...`, + ``, + `FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory`, + `Abort trap: 6` + ].join('\n') + }; + const ERROR_WITHOUT_MESSAGE_AND_STACK = { + toString() { + return 'Error: Stack overflow - out of memory'; + } + }; + + it.each([[ERROR_WITH_MESSAGE_AND_STACK], [ERROR_WITHOUT_MESSAGE_AND_STACK]])( + 'creates Issue from Internal Error: %p', + error => { + const issue = createIssueFromInternalError(error); + + expect(issue).toMatchSnapshot(); + } + ); +}); diff --git a/test/unit/issue/internal/__snapshots__/InternalIssueFactory.spec.ts.snap b/test/unit/issue/internal/__snapshots__/InternalIssueFactory.spec.ts.snap new file mode 100644 index 00000000..a146c701 --- /dev/null +++ b/test/unit/issue/internal/__snapshots__/InternalIssueFactory.spec.ts.snap @@ -0,0 +1,31 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`[UNIT] issue/internal/InternalIssueFactory creates Issue from Internal Error: {"message": "Stack overflow - out of memory", "stack": "Security context: 0x35903c44a49 +1: walkFunctionDeclaration [/node_modules/webpack/lib/Parser.js:~443] [pc=0xa07a14ec8ee] (this=0x59f67991119 ,statement=0x3507a80af661 ) +2: walkStatement [/node_modules/webpack/lib/Parser.js:~348] [pc=0xa07a06dfc10] (this=0x59f6799111... + +FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory +Abort trap: 6"} 1`] = ` +Object { + "code": "INTERNAL", + "message": "Stack overflow - out of memory", + "origin": "internal", + "severity": "error", + "stack": "Security context: 0x35903c44a49 +1: walkFunctionDeclaration [/node_modules/webpack/lib/Parser.js:~443] [pc=0xa07a14ec8ee] (this=0x59f67991119 ,statement=0x3507a80af661 ) +2: walkStatement [/node_modules/webpack/lib/Parser.js:~348] [pc=0xa07a06dfc10] (this=0x59f6799111... + +FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory +Abort trap: 6", +} +`; + +exports[`[UNIT] issue/internal/InternalIssueFactory creates Issue from Internal Error: {"toString": [Function toString]} 1`] = ` +Object { + "code": "INTERNAL", + "message": "Error: Stack overflow - out of memory", + "origin": "internal", + "severity": "error", + "stack": undefined, +} +`; diff --git a/test/unit/issue/typescript/TypeScriptIssueFactory.spec.ts b/test/unit/issue/typescript/TypeScriptIssueFactory.spec.ts new file mode 100644 index 00000000..5687375e --- /dev/null +++ b/test/unit/issue/typescript/TypeScriptIssueFactory.spec.ts @@ -0,0 +1,94 @@ +import { + createIssueFromTsDiagnostic, + createIssuesFromTsDiagnostics +} from '../../../../lib/issue'; +import { Diagnostic } from 'typescript'; + +describe('[UNIT] issue/typescript/TypeScriptIssueFactory', () => { + const TS_DIAGNOSTIC_WARNING: Diagnostic = { + start: 100, + code: 4221, + category: 1, + messageText: 'Cannot assign string to the number type', + length: 1, + file: { + fileName: 'src/test.ts', + getLineAndCharacterOfPosition: () => ({ + line: 2, + character: 2 + }) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any + }; + const TS_DIAGNOSTIC_ERROR: Diagnostic = { + start: 12, + code: 1221, + category: 0, + messageText: 'Cannot assign object to the string type', + length: 1, + file: { + fileName: 'src/index.ts', + getLineAndCharacterOfPosition: () => ({ + line: 5, + character: 10 + }) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any + }; + const TS_DIAGNOSTIC_WITHOUT_FILE: Diagnostic = { + start: 12, + code: 1221, + category: 0, + length: 1, + messageText: 'Cannot assign object to the string type', + file: undefined + }; + const TS_DIAGNOSTIC_MESSAGE_CHAIN: Diagnostic = { + start: 12, + code: 1221, + category: 0, + length: 3, + file: undefined, + messageText: { + messageText: 'Cannot assign object to the string type', + category: 0, + code: 1221, + next: { + messageText: 'Another ident message', + category: 0, + code: 1221, + next: { + messageText: 'The most ident message', + category: 0, + code: 1221 + } + } + } + }; + + it.each([ + [TS_DIAGNOSTIC_WARNING], + [TS_DIAGNOSTIC_ERROR], + [TS_DIAGNOSTIC_WITHOUT_FILE], + [TS_DIAGNOSTIC_MESSAGE_CHAIN] + ])('creates Issue from TsDiagnostic: %p', tsDiagnostic => { + const issue = createIssueFromTsDiagnostic(tsDiagnostic); + + expect(issue).toMatchSnapshot(); + }); + + it.each([ + [ + [ + TS_DIAGNOSTIC_WARNING, + TS_DIAGNOSTIC_ERROR, + TS_DIAGNOSTIC_WITHOUT_FILE, + TS_DIAGNOSTIC_MESSAGE_CHAIN + ] + ] + ])('creates Issues from TsDiagnostics: %p', tsDiagnostics => { + const issues = createIssuesFromTsDiagnostics(tsDiagnostics); + + expect(issues).toMatchSnapshot(); + }); +}); diff --git a/test/unit/issue/typescript/__snapshots__/TypeScriptIssueFactory.spec.ts.snap b/test/unit/issue/typescript/__snapshots__/TypeScriptIssueFactory.spec.ts.snap new file mode 100644 index 00000000..2b6dc3b4 --- /dev/null +++ b/test/unit/issue/typescript/__snapshots__/TypeScriptIssueFactory.spec.ts.snap @@ -0,0 +1,94 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`[UNIT] issue/typescript/TypeScriptIssueFactory creates Issue from TsDiagnostic: {"category": 0, "code": 1221, "file": [Object], "length": 1, "messageText": "Cannot assign object to the string type", "start": 12} 1`] = ` +Object { + "character": 11, + "code": "1221", + "file": "src/index.ts", + "line": 6, + "message": "Cannot assign object to the string type", + "origin": "typescript", + "severity": "warning", +} +`; + +exports[`[UNIT] issue/typescript/TypeScriptIssueFactory creates Issue from TsDiagnostic: {"category": 0, "code": 1221, "file": undefined, "length": 1, "messageText": "Cannot assign object to the string type", "start": 12} 1`] = ` +Object { + "character": undefined, + "code": "1221", + "file": undefined, + "line": undefined, + "message": "Cannot assign object to the string type", + "origin": "typescript", + "severity": "warning", +} +`; + +exports[`[UNIT] issue/typescript/TypeScriptIssueFactory creates Issue from TsDiagnostic: {"category": 0, "code": 1221, "file": undefined, "length": 3, "messageText": [Object], "start": 12} 1`] = ` +Object { + "character": undefined, + "code": "1221", + "file": undefined, + "line": undefined, + "message": "Cannot assign object to the string type + Another ident message + The most ident message", + "origin": "typescript", + "severity": "warning", +} +`; + +exports[`[UNIT] issue/typescript/TypeScriptIssueFactory creates Issue from TsDiagnostic: {"category": 1, "code": 4221, "file": [Object], "length": 1, "messageText": "Cannot assign string to the number type", "start": 100} 1`] = ` +Object { + "character": 3, + "code": "4221", + "file": "src/test.ts", + "line": 3, + "message": "Cannot assign string to the number type", + "origin": "typescript", + "severity": "error", +} +`; + +exports[`[UNIT] issue/typescript/TypeScriptIssueFactory creates Issues from TsDiagnostics: [[Object], [Object], [Object], [Object]] 1`] = ` +Array [ + Object { + "character": undefined, + "code": "1221", + "file": undefined, + "line": undefined, + "message": "Cannot assign object to the string type", + "origin": "typescript", + "severity": "warning", + }, + Object { + "character": undefined, + "code": "1221", + "file": undefined, + "line": undefined, + "message": "Cannot assign object to the string type + Another ident message + The most ident message", + "origin": "typescript", + "severity": "warning", + }, + Object { + "character": 11, + "code": "1221", + "file": "src/index.ts", + "line": 6, + "message": "Cannot assign object to the string type", + "origin": "typescript", + "severity": "warning", + }, + Object { + "character": 3, + "code": "4221", + "file": "src/test.ts", + "line": 3, + "message": "Cannot assign string to the number type", + "origin": "typescript", + "severity": "error", + }, +] +`; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..6d7ccf34 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es5", + "esModuleInterop": true, + "skipLibCheck": true, + "strict": true, + "lib": ["es2015"], + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": true + } +} diff --git a/yarn.lock b/yarn.lock index fdd116f8..de35b960 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,13 +8,6 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/code-frame@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== - dependencies: - "@babel/highlight" "^7.0.0" - "@babel/core@^7.1.0": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250" @@ -35,26 +28,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.4.tgz#37e864532200cb6b50ee9a4045f5f817840166ab" - integrity sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" - "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - "@babel/generator@^7.0.0", "@babel/generator@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" @@ -66,57 +39,6 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369" - integrity sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg== - dependencies: - "@babel/types" "^7.7.4" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@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-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/helper-define-map@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" - integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - -"@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" @@ -126,15 +48,6 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helper-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" - integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== - dependencies: - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" - "@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" @@ -142,94 +55,11 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-get-function-arity@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" - integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== - dependencies: - "@babel/types" "^7.7.4" - -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== - dependencies: - "@babel/types" "^7.4.4" - -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== - 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", "@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" - integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== - dependencies: - "@babel/types" "^7.0.0" - "@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", "@babel/helper-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" - integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== - dependencies: - lodash "^4.17.11" - -"@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-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" - integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@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.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" @@ -237,23 +67,6 @@ dependencies: "@babel/types" "^7.4.4" -"@babel/helper-split-export-declaration@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" - integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== - dependencies: - "@babel/types" "^7.7.4" - -"@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.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" @@ -263,15 +76,6 @@ "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/helpers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" - integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== - dependencies: - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -285,401 +89,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== -"@babel/parser@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.4.tgz#75ab2d7110c2cf2fa949959afb05fa346d2231bb" - integrity sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g== - -"@babel/plugin-proposal-async-generator-functions@^7.2.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-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - -"@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" - integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.2.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-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@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-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.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-syntax-typescript@^7.2.0": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991" - integrity sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" - integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== - 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-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-block-scoping@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" - integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" - -"@babel/plugin-transform-classes@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" - integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-destructuring@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" - integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" - integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-exponentiation-operator@^7.2.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-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" - integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== - dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - -"@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" - integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d" - integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA== - dependencies: - regexp-tree "^0.1.0" - -"@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" - integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - -"@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== - dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-regenerator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072" - integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g== - dependencies: - regenerator-transform "^0.13.4" - -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typescript@^7.3.2": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.4.4.tgz#93e9c3f2a546e6d3da1e9cc990e30791b807aa9f" - integrity sha512-rwDvjaMTx09WC0rXGBRlYSSkEHOKRrecY6hEr3SVIPKII8DVWXtapNAfAyMC0dovuO+zYArcAuKeu3q9DNRfzA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.2.0" - -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/preset-env@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f" - integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.4" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.4.4" - browserslist "^4.5.2" - core-js-compat "^3.0.0" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - -"@babel/preset-typescript@^7.3.3": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a" - integrity sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.3.2" - "@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" @@ -689,15 +105,6 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/template@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" - integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" - "@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" @@ -713,22 +120,7 @@ globals "^11.1.0" lodash "^4.17.11" -"@babel/traverse@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" - integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== @@ -737,15 +129,6 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" -"@babel/types@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" - integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== - dependencies: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -1051,139 +434,12 @@ mkdirp "^0.5.1" rimraf "^2.5.2" -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@octokit/endpoint@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-4.0.0.tgz#97032a6690ef1cf9576ab1b1582c0ac837e3b5b6" - integrity sha512-b8sptNUekjREtCTJFpOfSIL4SKh65WaakcyxWzRcSPOk5RxkZJ/S8884NGZFxZ+jCB2rDURU66pSHn14cVgWVg== - dependencies: - deepmerge "3.2.0" - is-plain-object "^2.0.4" - universal-user-agent "^2.0.1" - url-template "^2.0.8" - -"@octokit/request@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-3.0.0.tgz#304a279036b2dc89e7fba7cb30c9e6a9b1f4d2df" - integrity sha512-DZqmbm66tq+a9FtcKrn0sjrUpi0UaZ9QPUCxxyk/4CJ2rseTMpAWRf6gCwOSUCzZcx/4XVIsDk+kz5BVdaeenA== - dependencies: - "@octokit/endpoint" "^4.0.0" - deprecation "^1.0.1" - is-plain-object "^2.0.4" - node-fetch "^2.3.0" - once "^1.4.0" - universal-user-agent "^2.0.1" - -"@octokit/rest@^16.13.1": - version "16.24.3" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.24.3.tgz#5f844be604826b352d9683a133839341db2bed23" - integrity sha512-fBr2ziN4WT9G9sYTfnNVI/0wCb68ZI5isNU48lfWXQDyAy4ftlrh0SkIbhL7aigXUjcY0cX5J46ypyRPH0/U0g== - dependencies: - "@octokit/request" "3.0.0" - atob-lite "^2.0.0" - before-after-hook "^1.4.0" - btoa-lite "^1.0.0" - deprecation "^1.0.1" - lodash.get "^4.4.2" - lodash.set "^4.3.2" - lodash.uniq "^4.5.0" - octokit-pagination-methods "^1.1.0" - once "^1.4.0" - universal-user-agent "^2.0.0" - url-template "^2.0.8" - "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" dependencies: any-observable "^0.3.0" -"@semantic-release/commit-analyzer@^7.0.0-beta.1": - version "7.0.0-beta-.2" - resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-7.0.0-beta-.2.tgz#5f30919eabee8f876c5f80d270274dca34933f76" - integrity sha512-tburFNeooqb8WrqTfkXroUpvb1jbRP15xugOcWdvnNOlDLHL5D//8BK2Q6TOY+G3RhrL1qaZIuoQ7paqia3x1A== - dependencies: - conventional-changelog-angular "^5.0.0" - conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.0.0" - debug "^4.0.0" - import-from "^2.1.0" - lodash "^4.17.4" - micromatch "^3.1.10" - -"@semantic-release/error@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.2.0.tgz#ee9d5a09c9969eade1ec864776aeda5c5cddbbf0" - integrity sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg== - -"@semantic-release/github@^5.3.0-beta.6": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.3.1.tgz#3c792b3c774af8192d615b5d199bbdd841e8ed0a" - integrity sha512-61ZJprfabi9IQ1n7l0RSyAJN/saJQyPYyxmDBQqZqtZgoo706XkOc+++DiztuEOzSN0RBybE7d33zK4CXNsgWA== - dependencies: - "@octokit/rest" "^16.13.1" - "@semantic-release/error" "^2.2.0" - aggregate-error "^3.0.0" - bottleneck "^2.0.1" - debug "^4.0.0" - dir-glob "^2.0.0" - fs-extra "^7.0.0" - globby "^9.0.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - issue-parser "^3.0.0" - lodash "^4.17.4" - mime "^2.0.3" - p-filter "^2.0.0" - p-retry "^4.0.0" - parse-github-url "^1.0.1" - url-join "^4.0.0" - -"@semantic-release/npm@^5.2.0-beta.5": - version "5.2.0-beta.6" - resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.2.0-beta.6.tgz#5a92c766440e3225f64bb1fb0ca970b6825f023f" - integrity sha512-O6dSrgot3zpX0UqAQGvaiaqUR3YUYygYtk//iP+3TWyEqGwKYnJQUrk8zWB2r5Ul9VuNvcZT4FieoV5Wv47VrA== - dependencies: - "@semantic-release/error" "^2.2.0" - aggregate-error "^2.0.0" - execa "^1.0.0" - fs-extra "^7.0.0" - lodash "^4.17.4" - nerf-dart "^1.0.0" - normalize-url "^4.0.0" - npm "6.5.0" - rc "^1.2.8" - read-pkg "^4.0.0" - registry-auth-token "^3.3.1" - semver "^5.5.0" - -"@semantic-release/release-notes-generator@^7.1.2": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.1.4.tgz#8f4f752c5a8385abdaac1256127cef05988bc2ad" - integrity sha512-pWPouZujddgb6t61t9iA9G3yIfp3TeQ7bPbV1ixYSeP6L7gI1+Du82fY/OHfEwyifpymLUQW0XnIKgKct5IMMw== - dependencies: - conventional-changelog-angular "^5.0.0" - conventional-changelog-writer "^4.0.0" - conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.0.0" - debug "^4.0.0" - get-stream "^4.0.0" - import-from "^2.1.0" - into-stream "^4.0.0" - lodash "^4.17.4" - "@types/anymatch@*": version "1.3.0" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.0.tgz#d1d55958d1fccc5527d4aba29fc9c4b942f563ff" @@ -1229,13 +485,6 @@ version "2.3.0" resolved "https://registry.yarnpkg.com/@types/braces/-/braces-2.3.0.tgz#d00ec0a76562b2acb6f29330be33a093e33ed25c" -"@types/chokidar@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@types/chokidar/-/chokidar-2.1.3.tgz#123ab795dba6d89be04bf076e6aecaf8620db674" - integrity sha512-6qK3xoLLAhQVTucQGHTySwOVA1crHRXnJeLwqK6KIFkkKa2aoMFXh+WEi8PotxDtvN6MQJLyYN9ag9P6NLV81w== - dependencies: - chokidar "*" - "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" @@ -1258,7 +507,7 @@ version "1.2.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" -"@types/glob@*", "@types/glob@^7.1.1": +"@types/glob@*": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== @@ -1284,7 +533,7 @@ dependencies: "@types/jest-diff" "*" -"@types/json-schema@*": +"@types/json-schema@*", "@types/json-schema@^7.0.3": version "7.0.3" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== @@ -1304,6 +553,13 @@ version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" +"@types/mock-fs@^4.10.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@types/mock-fs/-/mock-fs-4.10.0.tgz#460061b186993d76856f669d5317cda8a007c24b" + integrity sha512-FQ5alSzmHMmliqcL36JqIA4Yyn9jyJKvRSGV3mvPh108VFatX7naJDzSG4fnFQNZFq9dIx0Dzoe6ddflMB2Xkg== + dependencies: + "@types/node" "*" + "@types/mock-require@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/mock-require/-/mock-require-2.0.0.tgz#57a4f0db0b4b6274f610a2d2c20beb3c842181e1" @@ -1320,11 +576,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.17.tgz#2e7efbfe5253561087812571e5e6a1e4b1d6295b" integrity sha512-7W3kSMa8diVH6s24a8Qrmvwu+vG3ahOC/flMHFdWSdnPYoQI0yPO84h5zOWYXAha2Npn3Pw3SSuQSwBUfaniyQ== -"@types/retry@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - "@types/rimraf@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.2.tgz#7f0fc3cf0ff0ad2a99bb723ae1764f30acaf8b6e" @@ -1367,42 +618,48 @@ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== -"@typescript-eslint/eslint-plugin@^1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.11.0.tgz#870f752c520db04db6d3668af7479026a6f2fb9a" - integrity sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw== +"@typescript-eslint/eslint-plugin@^2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.12.0.tgz#0da7cbca7b24f4c6919e9eb31c704bfb126f90ad" + integrity sha512-1t4r9rpLuEwl3hgt90jY18wJHSyb0E3orVL3DaqwmpiSDHmHiSspVsvsFF78BJ/3NNG3qmeso836jpuBWYziAA== dependencies: - "@typescript-eslint/experimental-utils" "1.11.0" - eslint-utils "^1.3.1" + "@typescript-eslint/experimental-utils" "2.12.0" + eslint-utils "^1.4.3" functional-red-black-tree "^1.0.1" - regexpp "^2.0.1" - tsutils "^3.7.0" + regexpp "^3.0.0" + tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.11.0.tgz#594abe47091cbeabac1d6f9cfed06d0ad99eb7e3" - integrity sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw== +"@typescript-eslint/experimental-utils@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.12.0.tgz#e0a76ffb6293e058748408a191921e453c31d40d" + integrity sha512-jv4gYpw5N5BrWF3ntROvCuLe1IjRenLy5+U57J24NbPGwZFAjhnM45qpq0nDH1y/AZMb3Br25YiNVwyPbz6RkA== dependencies: - "@typescript-eslint/typescript-estree" "1.11.0" - eslint-scope "^4.0.0" + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.12.0" + eslint-scope "^5.0.0" -"@typescript-eslint/parser@^1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.11.0.tgz#2f6d4f7e64eeb1e7c25b422f8df14d0c9e508e36" - integrity sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q== +"@typescript-eslint/parser@^2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.12.0.tgz#393f1604943a4ca570bb1a45bc8834e9b9158884" + integrity sha512-lPdkwpdzxEfjI8TyTzZqPatkrswLSVu4bqUgnB03fHSOwpC7KSerPgJRgIAf11UGNf7HKjJV6oaPZI4AghLU6g== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "1.11.0" - "@typescript-eslint/typescript-estree" "1.11.0" - eslint-visitor-keys "^1.0.0" + "@typescript-eslint/experimental-utils" "2.12.0" + "@typescript-eslint/typescript-estree" "2.12.0" + eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.11.0.tgz#b7b5782aab22e4b3b6d84633652c9f41e62d37d5" - integrity sha512-fquUHF5tAx1sM2OeRCC7wVxFd1iMELWMGCzOSmJ3pLzArj9+kRixdlC4d5MncuzXpjEqc6045p3KwM0o/3FuUA== +"@typescript-eslint/typescript-estree@2.12.0": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.12.0.tgz#bd9e547ccffd17dfab0c3ab0947c80c8e2eb914c" + integrity sha512-rGehVfjHEn8Frh9UW02ZZIfJs6SIIxIu/K1bbci8rFfDE/1lQ8krIJy5OXOV3DVnNdDPtoiPOdEANkLMrwXbiQ== dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" lodash.unescape "4.0.1" - semver "5.5.0" + semver "^6.3.0" + tsutils "^3.17.1" "@vue/component-compiler-utils@^2.4.0": version "2.5.0" @@ -1418,150 +675,150 @@ source-map "^0.7.3" vue-template-es2015-compiler "^1.6.0" -"@webassemblyjs/ast@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.3.tgz#63a741bd715a6b6783f2ea5c6ab707516aa215eb" - integrity sha512-xy3m06+Iu4D32+6soz6zLnwznigXJRuFNTovBX2M4GqVqLb0dnyWLbPnpcXvUSdEN+9DVyDeaq2jyH1eIL2LZQ== +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== dependencies: - "@webassemblyjs/helper-module-context" "1.8.3" - "@webassemblyjs/helper-wasm-bytecode" "1.8.3" - "@webassemblyjs/wast-parser" "1.8.3" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" -"@webassemblyjs/floating-point-hex-parser@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.3.tgz#f198a2d203b3c50846a064f5addd6a133ef9bc0e" - integrity sha512-vq1TISG4sts4f0lDwMUM0f3kpe0on+G3YyV5P0IySHFeaLKRYZ++n2fCFfG4TcCMYkqFeTUYFxm75L3ddlk2xA== +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== -"@webassemblyjs/helper-api-error@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.3.tgz#3b708f6926accd64dcbaa7ba5b63db5660ff4f66" - integrity sha512-BmWEynI4FnZbjk8CaYZXwcv9a6gIiu+rllRRouQUo73hglanXD3AGFJE7Q4JZCoVE0p5/jeX6kf5eKa3D4JxwQ== +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== -"@webassemblyjs/helper-buffer@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.3.tgz#f3150a23ffaba68621e1f094c8a14bebfd53dd48" - integrity sha512-iVIMhWnNHoFB94+/2l7LpswfCsXeMRnWfExKtqsZ/E2NxZyUx9nTeKK/MEMKTQNEpyfznIUX06OchBHQ+VKi/Q== +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== -"@webassemblyjs/helper-code-frame@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.3.tgz#f43ac605789b519d95784ef350fd2968aebdd3ef" - integrity sha512-K1UxoJML7GKr1QXR+BG7eXqQkvu+eEeTjlSl5wUFQ6W6vaOc5OwSxTcb3oE9x/3+w4NHhrIKD4JXXCZmLdL2cg== +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== dependencies: - "@webassemblyjs/wast-printer" "1.8.3" + "@webassemblyjs/wast-printer" "1.8.5" -"@webassemblyjs/helper-fsm@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.3.tgz#46aaa03f41082a916850ebcb97e9fc198ef36a9c" - integrity sha512-387zipfrGyO77/qm7/SDUiZBjQ5KGk4qkrVIyuoubmRNIiqn3g+6ijY8BhnlGqsCCQX5bYKOnttJobT5xoyviA== +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== -"@webassemblyjs/helper-module-context@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.3.tgz#150da405d90c8ea81ae0b0e1965b7b64e585634f" - integrity sha512-lPLFdQfaRssfnGEJit5Sk785kbBPPPK4ZS6rR5W/8hlUO/5v3F+rN8XuUcMj/Ny9iZiyKhhuinWGTUuYL4VKeQ== +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== dependencies: - "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/ast" "1.8.5" mamacro "^0.0.3" -"@webassemblyjs/helper-wasm-bytecode@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.3.tgz#12f55bbafbbc7ddf9d8059a072cb7b0c17987901" - integrity sha512-R1nJW7bjyJLjsJQR5t3K/9LJ0QWuZezl8fGa49DZq4IVaejgvkbNlKEQxLYTC579zgT4IIIVHb5JA59uBPHXyw== +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== -"@webassemblyjs/helper-wasm-section@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.3.tgz#9e79456d9719e116f4f8998ee62ab54ba69a6cf3" - integrity sha512-P6F7D61SJY73Yz+fs49Q3+OzlYAZP86OfSpaSY448KzUy65NdfzDmo2NPVte+Rw4562MxEAacvq/mnDuvRWOcg== +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== dependencies: - "@webassemblyjs/ast" "1.8.3" - "@webassemblyjs/helper-buffer" "1.8.3" - "@webassemblyjs/helper-wasm-bytecode" "1.8.3" - "@webassemblyjs/wasm-gen" "1.8.3" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" -"@webassemblyjs/ieee754@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.3.tgz#0a89355b1f6c9d08d0605c2acbc2a6fe3141f5b4" - integrity sha512-UD4HuLU99hjIvWz1pD68b52qsepWQlYCxDYVFJQfHh3BHyeAyAlBJ+QzLR1nnS5J6hAzjki3I3AoJeobNNSZlg== +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.3.tgz#b7fd9d7c039e34e375c4473bd4dc89ce8228b920" - integrity sha512-XXd3s1BmkC1gpGABuCRLqCGOD6D2L+Ma2BpwpjrQEHeQATKWAQtxAyU9Z14/z8Ryx6IG+L4/NDkIGHrccEhRUg== +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.3.tgz#75712db52cfdda868731569ddfe11046f1f1e7a2" - integrity sha512-Wv/WH9Zo5h5ZMyfCNpUrjFsLZ3X1amdfEuwdb7MLdG3cPAjRS6yc6ElULlpjLiiBTuzvmLhr3ENsuGyJ3wyCgg== - -"@webassemblyjs/wasm-edit@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.3.tgz#23c3c6206b096f9f6aa49623a5310a102ef0fb87" - integrity sha512-nB19eUx3Yhi1Vvv3yev5r+bqQixZprMtaoCs1brg9Efyl8Hto3tGaUoZ0Yb4Umn/gQCyoEGFfUxPLp1/8+Jvnw== - dependencies: - "@webassemblyjs/ast" "1.8.3" - "@webassemblyjs/helper-buffer" "1.8.3" - "@webassemblyjs/helper-wasm-bytecode" "1.8.3" - "@webassemblyjs/helper-wasm-section" "1.8.3" - "@webassemblyjs/wasm-gen" "1.8.3" - "@webassemblyjs/wasm-opt" "1.8.3" - "@webassemblyjs/wasm-parser" "1.8.3" - "@webassemblyjs/wast-printer" "1.8.3" - -"@webassemblyjs/wasm-gen@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.3.tgz#1a433b8ab97e074e6ac2e25fcbc8cb6125400813" - integrity sha512-sDNmu2nLBJZ/huSzlJvd9IK8B1EjCsOl7VeMV9VJPmxKYgTJ47lbkSP+KAXMgZWGcArxmcrznqm7FrAPQ7vVGg== - dependencies: - "@webassemblyjs/ast" "1.8.3" - "@webassemblyjs/helper-wasm-bytecode" "1.8.3" - "@webassemblyjs/ieee754" "1.8.3" - "@webassemblyjs/leb128" "1.8.3" - "@webassemblyjs/utf8" "1.8.3" - -"@webassemblyjs/wasm-opt@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.3.tgz#54754bcf88f88e92b909416a91125301cc81419c" - integrity sha512-j8lmQVFR+FR4/645VNgV4R/Jz8i50eaPAj93GZyd3EIJondVshE/D9pivpSDIXyaZt+IkCodlzOoZUE4LnQbeA== - dependencies: - "@webassemblyjs/ast" "1.8.3" - "@webassemblyjs/helper-buffer" "1.8.3" - "@webassemblyjs/wasm-gen" "1.8.3" - "@webassemblyjs/wasm-parser" "1.8.3" - -"@webassemblyjs/wasm-parser@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.3.tgz#d12ed19d1b8e8667a7bee040d2245aaaf215340b" - integrity sha512-NBI3SNNtRoy4T/KBsRZCAWUzE9lI94RH2nneLwa1KKIrt/2zzcTavWg6oY05ArCbb/PZDk3OUi63CD1RYtN65w== - dependencies: - "@webassemblyjs/ast" "1.8.3" - "@webassemblyjs/helper-api-error" "1.8.3" - "@webassemblyjs/helper-wasm-bytecode" "1.8.3" - "@webassemblyjs/ieee754" "1.8.3" - "@webassemblyjs/leb128" "1.8.3" - "@webassemblyjs/utf8" "1.8.3" - -"@webassemblyjs/wast-parser@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.3.tgz#44aa123e145503e995045dc3e5e2770069da117b" - integrity sha512-gZPst4CNcmGtKC1eYQmgCx6gwQvxk4h/nPjfPBbRoD+Raw3Hs+BS3yhrfgyRKtlYP+BJ8LcY9iFODEQofl2qbg== - dependencies: - "@webassemblyjs/ast" "1.8.3" - "@webassemblyjs/floating-point-hex-parser" "1.8.3" - "@webassemblyjs/helper-api-error" "1.8.3" - "@webassemblyjs/helper-code-frame" "1.8.3" - "@webassemblyjs/helper-fsm" "1.8.3" +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.8.3": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.3.tgz#b1177780b266b1305f2eeba87c4d6aa732352060" - integrity sha512-DTA6kpXuHK4PHu16yAD9QVuT1WZQRT7079oIFFmFSjqjLWGXS909I/7kiLTn931mcj7wGsaUNungjwNQ2lGQ3Q== +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== dependencies: - "@webassemblyjs/ast" "1.8.3" - "@webassemblyjs/wast-parser" "1.8.3" + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -1573,7 +830,7 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -JSONStream@^1.0.4, JSONStream@^1.3.4: +JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -1586,19 +843,11 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== -abbrev@1, abbrev@~1.1.1: +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== -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - acorn-globals@^4.1.0: version "4.3.2" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" @@ -1607,9 +856,10 @@ 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" +acorn-jsx@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" + integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== acorn-walk@^6.0.1: version "6.1.1" @@ -1621,45 +871,20 @@ 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.5: +acorn@^6.0.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== -acorn@^6.0.7: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3" - integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw== - -agent-base@4, agent-base@^4.1.0, agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== - dependencies: - es6-promisify "^5.0.0" - -agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== - dependencies: - humanize-ms "^1.2.1" +acorn@^6.2.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== -aggregate-error@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-2.2.0.tgz#f54b464db18cc77c907ae084451f39134707134a" - integrity sha512-E5n+IZkhh22/pFdUvHUU/o9z752lc+7tgHt+FXS/g6BjlbE9249dGmuS/SxIWMPhTljZJkFN+7OXE0+O5+WT8w== - dependencies: - clean-stack "^2.0.0" - indent-string "^3.0.0" - -aggregate-error@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.0.tgz#5b5a3c95e9095f311c9ab16c19fb4f3527cd3f79" - integrity sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA== - dependencies: - clean-stack "^2.0.0" - indent-string "^3.2.0" +acorn@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== ajv-errors@^1.0.0: version "1.0.1" @@ -1669,6 +894,11 @@ ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" +ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + ajv@^6.1.0: version "6.6.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d" @@ -1688,21 +918,20 @@ ajv@^6.10.0, ajv@^6.5.5, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.10.2: + version "6.10.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + 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" + alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -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-colors@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" @@ -1712,10 +941,12 @@ ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" -ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: - 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-escapes@^4.2.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" + integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + dependencies: + type-fest "^0.8.1" ansi-regex@^2.0.0: version "2.1.1" @@ -1736,6 +967,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1746,16 +982,6 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= - -ansistyles@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" - integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= - any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" @@ -1768,14 +994,6 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - append-transform@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" @@ -1783,21 +1001,11 @@ append-transform@^1.0.0: dependencies: default-require-extensions "^2.0.0" -aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2, aproba@~1.2.0: +aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -"aproba@^1.1.2 || 2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -archy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -1812,11 +1020,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argv-formatter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9" - integrity sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk= - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -1847,7 +1050,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-union@^1.0.1, array-union@^1.0.2: +array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" dependencies: @@ -1857,11 +1060,6 @@ array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" -array-uniq@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-2.1.0.tgz#46603d5e28e79bfd02b046fcc1d77c6820bd8e98" - integrity sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ== - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -1871,10 +1069,14 @@ arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" asn1@~0.2.3: version "0.2.4" @@ -1888,6 +1090,14 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -1897,15 +1107,16 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async@1.x: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - async@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" @@ -1918,11 +1129,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= - atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2020,6 +1226,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -2040,64 +1251,28 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -before-after-hook@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" - integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" -bin-links@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.2.tgz#fb74bd54bae6b7befc6c6221f25322ac830d9757" - integrity sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg== - dependencies: - bluebird "^3.5.0" - cmd-shim "^2.0.2" - gentle-fs "^2.0.0" - graceful-fs "^4.1.11" - write-file-atomic "^2.3.0" - -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -bluebird@^3.1.1, bluebird@^3.5.3: +bluebird@^3.1.1: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" -bluebird@^3.5.0, bluebird@^3.5.1: - version "3.5.4" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" - integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bottleneck@^2.0.1: - version "2.18.0" - resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.18.0.tgz#41fa63ae185b65435d789d1700334bc48222dacf" - integrity sha512-U1xiBRaokw4yEguzikOl0VrnZp6uekjpmfrh6rKtr1D+/jFjYCL6J83ZXlGtlBDwVdTmJJ+4Lg5FpB3xmLSiyA== - -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" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== brace-expansion@^1.1.7: version "1.1.11" @@ -2107,7 +1282,7 @@ brace-expansion@^1.1.7: 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== @@ -2123,12 +1298,10 @@ braces@^2.3.0, braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browser-process-hrtime@^0.1.2: version "0.1.3" @@ -2146,6 +1319,65 @@ browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -2153,14 +1385,12 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^4.5.2, browserslist@^4.5.4: - version "4.5.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.5.6.tgz#ea42e8581ca2513fa7f371d4dd66da763938163d" - integrity sha512-o/hPOtbU9oX507lIqon+UvPYqpx3mHc8cV3QemSBTXwkG8gSQSK6UKvXcE/DcleU3+A59XTUHyCvZ5qGy8xVAg== +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: - caniuse-lite "^1.0.30000963" - electron-to-chromium "^1.3.127" - node-releases "^1.1.17" + fast-json-stable-stringify "2.x" bser@^2.0.0: version "2.0.0" @@ -2169,68 +1399,50 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= - -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" -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" - -builtins@^1.0.3: +buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" -byte-size@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.4.tgz#29d381709f41aae0d89c631f1c81aec88cd40b23" - integrity sha512-82RPeneC6nqCdSwCX2hZUz3JPOvN5at/nTEw/CMf05Smu3Hrpo9Psb7LjN+k+XndNArG1EY8L4+BM3aTM4BCvw== +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -cacache@^11.0.1, cacache@^11.0.2, cacache@^11.2.0: - version "11.3.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" +cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== dependencies: - bluebird "^3.5.3" + bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" - glob "^7.1.3" + glob "^7.1.4" graceful-fs "^4.1.15" + infer-owner "^1.0.3" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" - rimraf "^2.6.2" + rimraf "^2.6.3" ssri "^6.0.1" unique-filename "^1.1.1" y18n "^4.0.0" @@ -2250,16 +1462,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-limit@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" - integrity sha1-b9YbA/PaQqLNDsK2DwK9DnGZH+o= - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -2289,7 +1491,7 @@ camelcase-keys@^4.0.0: map-obj "^2.0.0" quick-lru "^1.0.0" -camelcase@^4.0.0, camelcase@^4.1.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= @@ -2312,11 +1514,6 @@ caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30000928" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000928.tgz#2e83d2b14276442da239511615eb7c62fed0cfa7" -caniuse-lite@^1.0.30000963: - version "1.0.30000963" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000963.tgz#5be481d5292f22aff5ee0db4a6c049b65b5798b1" - integrity sha512-n4HUiullc7Lw0LyzpeLa2ffP8KxFBGdxqD/8G3bSL6oB758hZ2UE2CVK+tQN958tJIi0/tfpjAc67aAtoHgnrQ== - capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2324,19 +1521,6 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -capture-stack-trace@^1.0.0: - 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== - -cardinal@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" - integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= - dependencies: - ansicolors "~0.3.2" - redeyed "~2.1.0" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2361,7 +1545,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.1.0, chalk@^2.3.0, 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.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" dependencies: @@ -2373,56 +1557,48 @@ chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" -chokidar@*, chokidar@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.2.0" +chokidar@^2.0.2: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" optionalDependencies: - fsevents "~2.1.1" - -chownr@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + fsevents "^1.2.7" chownr@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== -chownr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= - -chrome-trace-event@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== dependencies: tslib "^1.9.0" -ci-info@^1.5.0, ci-info@^1.6.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" -cidr-regex@^2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d" - integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: - ip-regex "^2.1.0" + inherits "^2.0.1" + safe-buffer "^5.0.1" clap@^1.0.9: version "1.2.3" @@ -2440,46 +1616,18 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-stack@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.1.0.tgz#9e7fec7f3f8340a2ab4f127c80273085e8fbbdd0" - integrity sha512-uQWrpRm+iZZUCAp7ZZJQbd4Za9I3AjR/3YTjmcnAtkauaIm/T5CT6U8zVI6e60T6OANqBFAzuR9/HB3NzuZCRA== - -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-columns@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" - integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4= - dependencies: - string-width "^2.0.0" - strip-ansi "^3.0.1" - cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" dependencies: restore-cursor "^2.0.0" -cli-table3@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - colors "1.0.3" + restore-cursor "^3.1.0" cli-truncate@^0.2.1: version "0.2.1" @@ -2505,14 +1653,6 @@ clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" -cmd-shim@^2.0.2, cmd-shim@~2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" - integrity sha1-b8vamUg6j9FdfTChlspp1oii79s= - dependencies: - graceful-fs "^4.1.2" - mkdirp "~0.5.0" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2573,28 +1713,10 @@ colormin@^1.0.5: css-color-names "0.0.4" has "^1.0.1" -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= - -colors@^1.1.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" -columnify@~1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= - dependencies: - strip-ansi "^3.0.0" - wcwidth "^1.0.0" - combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" @@ -2602,15 +1724,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.12.1, commander@^2.14.1, commander@^2.9.0: +commander@^2.14.1, commander@^2.9.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" -commander@~2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - -commander@~2.20.3: +commander@^2.20.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -2651,7 +1769,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@^1.5.2: +concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -2660,27 +1778,12 @@ concat-stream@^1.5.0, concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" -config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^3.0.0: - 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" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.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= @@ -2691,6 +1794,11 @@ consolidate@^0.15.1: dependencies: bluebird "^3.1.1" +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + conventional-changelog-angular@^1.3.3: version "1.6.6" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" @@ -2699,38 +1807,6 @@ conventional-changelog-angular@^1.3.3: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-angular@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0" - integrity sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA== - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - -conventional-changelog-writer@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.3.tgz#916a2b302d0bb5ef18efd236a034c13fb273cde1" - integrity sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA== - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^2.0.1" - dateformat "^3.0.0" - handlebars "^4.1.0" - json-stringify-safe "^5.0.1" - lodash "^4.2.1" - meow "^4.0.0" - semver "^5.5.0" - split "^1.0.0" - through2 "^2.0.0" - -conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz#55a135de1802f6510b6758e0a6aa9e0b28618db3" - integrity sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A== - dependencies: - is-subset "^0.1.1" - modify-values "^1.0.0" - conventional-commits-parser@^2.1.0: version "2.1.7" resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" @@ -2744,19 +1820,6 @@ conventional-commits-parser@^2.1.0: through2 "^2.0.0" trim-off-newlines "^1.0.0" -conventional-commits-parser@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz#fe1c49753df3f98edb2285a5e485e11ffa7f2e4c" - integrity sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.0" - lodash "^4.2.1" - meow "^4.0.0" - split2 "^2.0.0" - through2 "^2.0.0" - trim-off-newlines "^1.0.0" - convert-source-map@^1.1.0, convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" @@ -2764,13 +1827,6 @@ convert-source-map@^1.1.0, convert-source-map@^1.4.0: dependencies: safe-buffer "~5.1.1" -convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -2795,26 +1851,6 @@ copy-dir@^0.4.0: dependencies: mkdir-p "~0.0.4" -core-js-compat@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.0.1.tgz#bff73ba31ca8687431b9c88f78d3362646fb76f0" - integrity sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g== - dependencies: - browserslist "^4.5.4" - core-js "3.0.1" - core-js-pure "3.0.1" - semver "^6.0.0" - -core-js-pure@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe" - integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g== - -core-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" - integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== - core-js@^2.4.0, core-js@^2.5.0: version "2.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" @@ -2843,16 +1879,6 @@ cosmiconfig@^4.0.0: parse-json "^4.0.0" require-from-string "^2.0.1" -cosmiconfig@^5.0.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8" - integrity sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.0" - parse-json "^4.0.0" - cosmiconfig@^5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" @@ -2862,21 +1888,36 @@ cosmiconfig@^5.0.7: js-yaml "^3.9.0" parse-json "^4.0.0" -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= +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== dependencies: - capture-stack-trace "^1.0.0" + bn.js "^4.1.0" + elliptic "^6.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= +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" @@ -2888,10 +1929,22 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -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= +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" css-color-names@0.0.4: version "0.0.4" @@ -3026,21 +2079,10 @@ date-fns@^1.27.2: version "1.30.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - de-indent@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - debug@3.2.6, debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3054,17 +2096,12 @@ debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" dependencies: ms "^2.1.1" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - decamelize-keys@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -3073,7 +2110,7 @@ decamelize-keys@^1.0.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -3095,11 +2132,6 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -deepmerge@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.2.0.tgz#58ef463a57c08d376547f8869fdc5bcee957f44e" - integrity sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow== - default-require-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" @@ -3107,13 +2139,6 @@ default-require-extensions@^2.0.0: dependencies: strip-bom "^3.0.0" -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" - define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -3168,15 +2193,13 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -deprecation@^1.0.1: +des.js@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-1.0.1.tgz#2df79b79005752180816b7b6e079cbd80490d711" - integrity sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg== - -detect-indent@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" detect-libc@^1.0.2: version "1.0.3" @@ -3188,29 +2211,23 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= -dezalgo@^1.0.0, dezalgo@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= - dependencies: - asap "^2.0.0" - wrappy "1" - diff-sequences@^24.3.0: version "24.3.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== -diff@3.5.0, diff@^3.2.0: +diff@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: - path-type "^3.0.0" + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" doctrine@^3.0.0: version "3.0.0" @@ -3224,6 +2241,11 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -3238,30 +2260,6 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" -dot-prop@^4.1.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" - -dotenv@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" - integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== - -duplexer2@~0.1.0: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - dependencies: - readable-stream "^2.0.2" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - duplexify@^3.4.2, duplexify@^3.6.0: version "3.6.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" @@ -3279,40 +2277,41 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -editor@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" - integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I= - electron-to-chromium@^1.2.7: version "1.3.102" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.102.tgz#3ac43a037c8a63bca3dfa189eb3d90f097196787" -electron-to-chromium@^1.3.127: - version "1.3.128" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.128.tgz#1f9ffa31397da2f220d583dbb2b763e365dfbbc5" - integrity sha512-1QK+KELj1mhC9iE7grSP9PP2f06F85UgTs0M9qjuvSuKwxbyifhyPB8dZ27IlYvzMBnLtO4oHNBKTQoN6Tg5mg== - elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" +elliptic@^6.0.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + 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== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - end-of-stream@^1.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" @@ -3327,19 +2326,6 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" -env-ci@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-3.2.0.tgz#982f02a0501ca8c43bf0765c5bd3d83ffb28b23a" - integrity sha512-TFjNiDlXrL8/pfHswdvJGEZzJcq3aBPb8Eka83hlGLwuNw9F9BC9S9ETlkfkItLRT9k5JgpGgeP+rL6/3cEbcw== - dependencies: - execa "^1.0.0" - java-properties "^0.2.9" - -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" @@ -3373,33 +2359,10 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-promise@^4.0.3: - version "4.2.6" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" - integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - 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" -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - escodegen@^1.9.1: version "1.11.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" @@ -3412,12 +2375,39 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-scope@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" +eslint-config-prettier@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.7.0.tgz#9a876952e12df2b284adbd3440994bf1f39dfbb9" + integrity sha512-FamQVKM3jjUVwhG4hEMnbtsq7xOIDm+SY5iBPfR8gKsJoAB2IQnNF+bk1+8Fy44Nq7PPJaLvkRxILYdJWoguKQ== dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + get-stdin "^6.0.0" + +eslint-plugin-es@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz#0f5f5da5f18aa21989feebe8a73eadefb3432976" + integrity sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ== + dependencies: + eslint-utils "^1.4.2" + regexpp "^3.0.0" + +eslint-plugin-node@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz#fd1adbc7a300cf7eb6ac55cf4b0b6fc6e577f5a6" + integrity sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ== + dependencies: + eslint-plugin-es "^2.0.0" + eslint-utils "^1.4.2" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-prettier@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" + integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== + dependencies: + prettier-linter-helpers "^1.0.0" eslint-scope@^4.0.3: version "4.0.3" @@ -3427,22 +2417,30 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.2, eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: - eslint-visitor-keys "^1.0.0" + eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.0.0: +eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.0.1.tgz#4a32181d72cb999d6f54151df7d337131f81cda7" - integrity sha512-DyQRaMmORQ+JsWShYsSg4OPTjY56u1nCjAmICrE8vLWqyLKxhFXOthwMj1SA8xwfrv0CofLNVnqbfyhwCkaO0w== +eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -3450,47 +2448,48 @@ eslint@^6.0.0: cross-spawn "^6.0.5" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^6.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" esquery "^1.0.1" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^3.1.0" - globals "^11.7.0" + glob-parent "^5.0.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" + inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.11" + lodash "^4.17.14" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6" - integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q== +espree@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" + integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^7.1.0" + acorn-jsx "^5.1.0" + eslint-visitor-keys "^1.1.0" -esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: +esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -3499,7 +2498,7 @@ esprima@^3.1.3: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -3515,10 +2514,6 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - 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" @@ -3531,24 +2526,19 @@ events@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + exec-sh@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== -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" - 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" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -3620,7 +2610,7 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^2.0.2, extglob@^2.0.4: +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== @@ -3648,23 +2638,21 @@ fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" -fast-glob@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" - integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" +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== + +fast-json-stable-stringify@2.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -3679,7 +2667,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -figgy-pudding@^3.0.0, figgy-pudding@^3.1.0, figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: +figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -3696,6 +2684,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + 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" @@ -3721,26 +2716,15 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" - make-dir "^1.0.0" + make-dir "^2.0.0" pkg-dir "^3.0.0" -find-npm-prefix@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" - integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== - find-parent-dir@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" @@ -3758,14 +2742,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-versions@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.1.0.tgz#10161f29cf3eb4350dec10a29bdde75bff0df32d" - integrity sha512-NCTfNiVzeE/xL+roNDffGuRbrWI6atI18lTJ22vKp7rs2OhYzMK3W1dIdO2TUndH/QMcacM4d1uWwgcZcHK69Q== - dependencies: - array-uniq "^2.1.0" - semver-regex "^2.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" @@ -3824,30 +2800,13 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -from2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" - integrity sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0= - dependencies: - inherits "~2.0.1" - readable-stream "~1.1.10" - -from2@^2.1.0, from2@^2.1.1: +from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" dependencies: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -3855,16 +2814,7 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" -fs-vacuum@^1.2.10, fs-vacuum@~1.2.10: - version "1.2.10" - resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" - integrity sha1-t2Kb7AekAxolSP35n17PHMizHjY= - dependencies: - graceful-fs "^4.1.2" - path-is-inside "^1.0.1" - rimraf "^2.5.2" - -fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: +fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" dependencies: @@ -3886,21 +2836,6 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" -fsevents@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -fstream@^1.0.0, fstream@^1.0.2: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3931,25 +2866,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -genfun@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== - -gentle-fs@^2.0.0, gentle-fs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.0.1.tgz#585cfd612bfc5cd52471fdb42537f016a5ce3687" - integrity sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew== - dependencies: - aproba "^1.1.2" - fs-vacuum "^1.2.10" - graceful-fs "^4.1.11" - iferr "^0.1.5" - mkdirp "^0.5.1" - path-is-inside "^1.0.2" - read-cmd-shim "^1.0.1" - slide "^1.1.6" - get-caller-file@^1.0.1, get-caller-file@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -3972,11 +2888,6 @@ get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" -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" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -4003,18 +2914,6 @@ git-cz@^3.0.1: global "^4.3.2" mocha "^6.0.2" -git-log-parser@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/git-log-parser/-/git-log-parser-1.2.0.tgz#2e6a4c1b13fc00028207ba795a7ac31667b9fd4a" - integrity sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo= - dependencies: - argv-formatter "~1.0.0" - spawn-error-forwarder "~1.0.0" - split2 "~1.0.0" - stream-combiner2 "~1.1.1" - through2 "~2.0.0" - traverse "~0.6.6" - git-raw-commits@^1.3.0: version "1.3.6" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" @@ -4034,18 +2933,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@~5.1.0: +glob-parent@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - glob@7.1.3, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -4057,17 +2951,7 @@ glob@7.1.3, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -4099,9 +2983,12 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== -globals@^11.7.0: - version "11.10.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" +globals@^12.1.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" + integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + dependencies: + type-fest "^0.8.1" globby@^6.1.0: version "6.1.0" @@ -4113,43 +3000,12 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -globby@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -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" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - graceful-fs@^4.1.11: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" @@ -4162,10 +3018,10 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -handlebars@^4.0.1, handlebars@^4.1.0: - version "4.5.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" - integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== +handlebars@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -4196,11 +3052,6 @@ 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" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4210,7 +3061,7 @@ has-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= -has-unicode@^2.0.0, has-unicode@~2.0.1: +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= @@ -4252,20 +3103,40 @@ has@^1.0.1, has@^1.0.3: dependencies: function-bind "^1.1.1" +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + hash-sum@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + he@1.2.0, he@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" -hook-std@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-1.2.0.tgz#b37d533ea5f40068fe368cb4d022ee1992588c27" - integrity sha512-yntre2dbOAjgQ5yoRykyON0D9T96BfshR8IuiL/r3celeHD8I/76w4qo8m3z99houR4Z678jakV3uXrQdSvW/w== +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: +hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -4280,19 +3151,6 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -http-cache-semantics@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4302,20 +3160,10 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= husky@^1.1.4: version "1.3.1" @@ -4332,7 +3180,7 @@ husky@^1.1.4: run-node "^1.0.0" slash "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" dependencies: @@ -4348,15 +3196,15 @@ icss-utils@^2.1.0: dependencies: postcss "^6.0.1" +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" -iferr@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" - integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== - ignore-walk@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" @@ -4364,10 +3212,15 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^4.0.3, ignore@^4.0.6: +ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" +ignore@^5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -4382,18 +3235,6 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -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" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -4406,7 +3247,7 @@ imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" -indent-string@^3.0.0, indent-string@^3.2.0: +indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -4414,7 +3255,12 @@ indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" -inflight@^1.0.4, inflight@~1.0.6: +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= @@ -4427,82 +3273,50 @@ inherits@2, inherits@^2.0.1, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -init-package-json@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" - integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== - dependencies: - glob "^7.1.1" - npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "1 || 2" - semver "2.x || 3.x || 4 || 5" - validate-npm-package-license "^3.0.1" - validate-npm-package-name "^3.0.0" - -inquirer@^6.2.2: - version "6.4.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.4.1.tgz#7bd9e5ab0567cd23b41b0180b68e0cfa82fc3c0b" - integrity sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw== +inquirer@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.1.tgz#13f7980eedc73c689feff3994b109c4e799c6ebb" + integrity sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw== dependencies: - ansi-escapes "^3.2.0" + ansi-escapes "^4.2.1" chalk "^2.4.2" - cli-cursor "^2.1.0" + cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" + rxjs "^6.5.3" + string-width "^4.1.0" strip-ansi "^5.1.0" through "^2.3.6" -into-stream@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-4.0.0.tgz#ef10ee2ffb6f78af34c93194bbdc36c35f7d8a9d" - integrity sha512-i29KNyE5r0Y/UQzcQ0IbZO1MYJ53Jn0EcFRZPj5FzWKYH17kDFEOwuA+3jroymOI06SW1dEDnly9A1CAreC5dg== - dependencies: - from2 "^2.1.1" - p-is-promise "^2.0.0" - -invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - 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== -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.4, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" @@ -4525,12 +3339,12 @@ is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== +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 "^2.0.0" + binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" @@ -4553,26 +3367,12 @@ is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== -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.5.0" - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" dependencies: ci-info "^2.0.0" -is-cidr@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-2.0.7.tgz#0fd4b863c26b2eb2d157ed21060c4f3f8dd356ce" - integrity sha512-YfOm5liUO1RoYfFh+lhiGNYtbLzem7IXzFqvfjXh+zLCEuAiznTBlQ2QcMWxsgYeOFmjzljOxJfmZID4/cRBAQ== - dependencies: - cidr-regex "^2.0.10" - 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" @@ -4643,6 +3443,11 @@ is-fullwidth-code-point@^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-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -4655,26 +3460,13 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" -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" - -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" @@ -4682,11 +3474,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4728,11 +3515,6 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" -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-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -4744,20 +3526,10 @@ is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" -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.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= - is-svg@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" @@ -4793,11 +3565,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, 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= @@ -4823,17 +3591,6 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -issue-parser@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-3.0.1.tgz#ee8dd677fdb5be64541f81fa5e7267baa271a7ee" - integrity sha512-5wdT3EE8Kq38x/hJD8QZCJ9scGoOZ5QnzwXyClkviSWTS+xOCE6hJ0qco3H5n5jCsFqpbofZCcMWqlXJzF72VQ== - dependencies: - lodash.capitalize "^4.2.1" - lodash.escaperegexp "^4.1.2" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.uniqby "^4.7.0" - istanbul-api@^2.1.1: version "2.1.5" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.5.tgz#697b95ec69856c278aacafc0f86ee7392338d5b5" @@ -4905,30 +3662,6 @@ istanbul-reports@^2.2.3: dependencies: handlebars "^4.1.0" -istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -java-properties@^0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-0.2.10.tgz#2551560c25fa1ad94d998218178f233ad9b18f60" - integrity sha512-CpKJh9VRNhS+XqZtg1UMejETGEiqwCGDC/uwPEEQwc2nfdbSm73SIE29TplG2gLYuBOOTNDqxzG6A9NtEPLt0w== - jest-changed-files@^24.7.0: version "24.7.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.7.0.tgz#39d723a11b16ed7b373ac83adc76a69464b0c4fa" @@ -5298,11 +4031,6 @@ js-base64@^2.1.9: version "2.5.0" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.0.tgz#42255ba183ab67ce59a0dee640afdc00ab5ae93e" -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5319,7 +4047,7 @@ js-yaml@3.13.1, js-yaml@^3.13.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.x, js-yaml@^3.7.0, js-yaml@^3.9.0: +js-yaml@^3.9.0: version "3.12.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" dependencies: @@ -5379,7 +4107,7 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -5396,11 +4124,18 @@ 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" -json-stringify-safe@^5.0.1, 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" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json5@2.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" + json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -5414,13 +4149,6 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -5465,25 +4193,6 @@ kleur@^3.0.2: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -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" - -lazy-property@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" - integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -5507,48 +4216,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libcipm@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-2.0.2.tgz#4f38c2b37acf2ec156936cef1cbf74636568fc7b" - integrity sha512-9uZ6/LAflVEijksTRq/RX0e+pGA4mr8tND9Cmk2JMg7j2fFUBrs8PpFX2DOAJR/XoxPzz+5h8bkWmtIYLunKAg== - dependencies: - bin-links "^1.1.2" - bluebird "^3.5.1" - find-npm-prefix "^1.0.2" - graceful-fs "^4.1.11" - lock-verify "^2.0.2" - mkdirp "^0.5.1" - npm-lifecycle "^2.0.3" - npm-logical-tree "^1.2.1" - npm-package-arg "^6.1.0" - pacote "^8.1.6" - protoduck "^5.0.0" - read-package-json "^2.0.13" - rimraf "^2.6.2" - worker-farm "^1.6.0" - -libnpmhook@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-4.0.1.tgz#63641654de772cbeb96a88527a7fd5456ec3c2d7" - integrity sha512-3qqpfqvBD1712WA6iGe0stkG40WwAeoWcujA6BlC0Be1JArQbqwabnEnZ0CRcD05Tf1fPYJYdCbSfcfedEJCOg== - dependencies: - figgy-pudding "^3.1.0" - npm-registry-fetch "^3.0.0" - -libnpx@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.0.tgz#1bf4a1c9f36081f64935eb014041da10855e3102" - integrity sha512-X28coei8/XRCt15cYStbLBph+KGhFra4VQhRBPuH/HHMkC5dxM8v24RVgUsvODKCrUZ0eTgiTqJp6zbl0sskQQ== - dependencies: - dotenv "^5.0.1" - npm-package-arg "^6.0.0" - rimraf "^2.6.2" - safe-buffer "^5.1.0" - update-notifier "^2.3.0" - which "^1.3.0" - y18n "^4.0.0" - yargs "^11.0.0" - lint-staged@^8.0.5: version "8.1.0" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.0.tgz#dbc3ae2565366d8f20efb9f9799d076da64863f2" @@ -5629,12 +4296,12 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-3.0.0.tgz#c86f303af2dacbd27eabd2ea3aaa957291562e23" - integrity sha512-BlinBEAJYOUubaKH9hMxshD1FltYLTd3FA4DoxEh/82C0Rc4cmcqI61bEUj0/osbmW9FCTXTpMAO/jHZDZC5Fw== +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" dependencies: @@ -5657,86 +4324,19 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lock-verify@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.1.0.tgz#fff4c918b8db9497af0c5fa7f6d71555de3ceb47" - integrity sha512-vcLpxnGvrqisKvLQ2C2v0/u7LVly17ak2YSgoK4PrdsYBXQIax19vhKiLfvKNFx7FRrpTnitrpzF/uuCMuorIg== - dependencies: - npm-package-arg "^6.1.0" - semver "^5.4.1" - -lockfile@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" - integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== - dependencies: - signal-exit "^3.0.2" - -lodash._baseuniq@~4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" - integrity sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg= - dependencies: - lodash._createset "~4.0.0" - lodash._root "~3.0.0" - -lodash._createset@~4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" - integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= - lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash._root@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" -lodash.capitalize@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" - integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk= - -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.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" - integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - -lodash.memoize@^4.1.2: +lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" - integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -5757,45 +4357,25 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - lodash.unescape@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= -lodash.union@~4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= - -lodash.uniq@^4.5.0, lodash.uniq@~4.5.0: +lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash.uniqby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" - integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= - -lodash.without@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" - integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= - lodash@4.17.11: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" -lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1: +lodash@^4.17.11, lodash@^4.17.5, lodash@^4.2.1: version "4.17.13" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.13.tgz#0bdc3a6adc873d2f4e0c4bac285df91b64fc7b93" integrity sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA== -lodash@^4.17.13: +lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -5835,12 +4415,7 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lowercase-keys@^1.0.0: - 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, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: +lru-cache@^4.1.2: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" dependencies: @@ -5853,18 +4428,7 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -macos-release@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.2.0.tgz#ab58d55dd4714f0a05ad4b0e90f4370fef5cdea8" - integrity sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA== - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - dependencies: - pify "^3.0.0" - -make-dir@^2.1.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -5872,39 +4436,10 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -"make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" - integrity sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ== - dependencies: - agentkeepalive "^3.4.1" - cacache "^11.0.1" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^4.1.2" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" - -make-fetch-happen@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-3.0.0.tgz#7b661d2372fc4710ab5cc8e1fa3c290eea69a961" - integrity sha512-FmWY7gC0mL6Z4N86vE14+m719JKE4H0A+pyiOH18B025gF/C113pyfb4gHDDYP5cqnRMHOz06JGdmffC/SES+w== - dependencies: - agentkeepalive "^3.4.1" - cacache "^10.0.4" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.0" - lru-cache "^4.1.2" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^3.0.1" - ssri "^5.2.4" +make-error@1.x: + version "1.3.5" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== makeerror@1.0.x: version "1.0.11" @@ -5947,23 +4482,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -marked-terminal@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.2.0.tgz#3fc91d54569332bcf096292af178d82219000474" - integrity sha512-Yr1yVS0BbDG55vx7be1D0mdv+jGs9AW563o/Tt/7FTsId2J0yqhrTeXAqq/Q0DyyXltIn6CSxzesQuFqXgafjQ== - dependencies: - ansi-escapes "^3.1.0" - cardinal "^2.1.1" - chalk "^2.4.1" - cli-table "^0.3.1" - node-emoji "^1.4.1" - supports-hyperlinks "^1.0.1" - -marked@^0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.6.2.tgz#c574be8b545a8b48641456ca1dbe0e37b6dccc1a" - integrity sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA== - matcher@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" @@ -5974,17 +4492,14 @@ math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" -meant@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" - integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: - mimic-fn "^1.0.0" + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" mem@^4.0.0: version "4.3.0" @@ -5995,7 +4510,7 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memory-fs@^0.4.0, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" dependencies: @@ -6045,34 +4560,10 @@ merge-stream@^1.0.1: dependencies: readable-stream "^2.0.1" -merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== - microevent.ts@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.0.tgz#390748b8a515083e6b63cd5112a3f18c2fe0eba8" -micromatch@3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.5.tgz#d05e168c206472dfbca985bfef4f57797b4cd4ba" - integrity sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.0" - define-property "^1.0.0" - extend-shallow "^2.0.1" - extglob "^2.0.2" - fragment-cache "^0.2.1" - kind-of "^6.0.0" - nanomatch "^1.2.5" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -6091,6 +4582,14 @@ micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: snapdragon "^0.8.1" to-regex "^3.0.2" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@~1.39.0: version "1.39.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.39.0.tgz#f95a20275742f7d2ad0429acfe40f4233543780e" @@ -6103,16 +4602,11 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "~1.39.0" -mime@^2.0.3: - version "2.4.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78" - integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg== - mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -6124,7 +4618,17 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.3, 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== @@ -6154,14 +4658,7 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.3.3: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^2.3.4, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== @@ -6169,29 +4666,13 @@ minipass@^2.3.4, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.1, minizlib@^1.2.1: +minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: minipass "^2.9.0" -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -6220,7 +4701,7 @@ mkdir-p@~0.0.4: resolved "https://registry.yarnpkg.com/mkdir-p/-/mkdir-p-0.0.7.tgz#24c5dbe26da3a99ef158a1eef9a5c2dd9de5683c" integrity sha1-JMXb4m2jqZ7xWKHu+aXC3Z3laDw= -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -6267,11 +4748,6 @@ mock-require@^3.0.2: get-caller-file "^1.0.2" normalize-path "^2.1.1" -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -6288,15 +4764,11 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1, ms@^2.0.0, ms@^2.1.1: +ms@2.1.1, ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -mute-stream@~0.0.4: +mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -6306,7 +4778,7 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== -nanomatch@^1.2.5, nanomatch@^1.2.9: +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== @@ -6344,27 +4816,15 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -nerf-dart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" - integrity sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" -node-emoji@^1.4.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== - dependencies: - lodash.toarray "^4.4.0" - node-environment-flags@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" @@ -6373,43 +4833,40 @@ node-environment-flags@1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch-npm@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" - integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== - dependencies: - encoding "^0.1.11" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" - -node-fetch@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" - integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== - -node-gyp@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" @@ -6442,36 +4899,13 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.17: - version "1.1.17" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.17.tgz#71ea4631f0a97d5cd4f65f7d04ecf9072eac711a" - integrity sha512-/SCjetyta1m7YXLgtACZGDYJdCSIBAWorDWkGCGZlydP2Ll7J48l7j/JxNYZ+xsgSPbWfdulVS/aY+GdjUsQ7Q== - dependencies: - semver "^5.3.0" - -"nopt@2 || 3", nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -nopt@^4.0.1, nopt@~4.0.1: +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.0.0, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, "normalize-package-data@~1.0.1 || ^2.0.0": - 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" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" + dependencies: + abbrev "1" + osenv "^0.1.4" normalize-package-data@^2.3.2: version "2.4.0" @@ -6482,13 +4916,13 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@~2.4.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.2.tgz#6b2abd85774e51f7936f1395e45acb905dc849b2" - integrity sha512-YcMnjqeoUckXTPKZSAsPjUPLxH85XotbpqK3w4RyCwdFQSU5FxxBys8buehkSfg0j9fKvV1hn7O0+8reEgkAiw== +normalize-package-data@^2.3.4: + 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" @@ -6499,7 +4933,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: +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== @@ -6517,73 +4951,11 @@ normalize-url@^1.4.0: query-string "^4.1.0" sort-keys "^1.0.0" -normalize-url@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" - integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== - -npm-audit-report@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.2.tgz#303bc78cd9e4c226415076a4f7e528c89fc77018" - integrity sha512-abeqS5ONyXNaZJPGAf6TOUMNdSe1Y6cpc9MLBRn+CuUoYbfdca6AxOyXVlfIv9OgKX+cacblbG5w7A6ccwoTPw== - dependencies: - cli-table3 "^0.5.0" - console-control-strings "^1.1.0" - npm-bundled@^1.0.1: 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-cache-filename@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" - integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= - -npm-install-checks@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" - integrity sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc= - dependencies: - semver "^2.3.0 || 3.x || 4 || 5" - -npm-lifecycle@^2.0.3, npm-lifecycle@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz#1eda2eedb82db929e3a0c50341ab0aad140ed569" - integrity sha512-QbBfLlGBKsktwBZLj6AviHC6Q9Y3R/AY4a2PYSIRhSKSS0/CxRyD/PfxEX6tPeOCXQgMSNdwGeECacstgptc+g== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.11" - node-gyp "^3.8.0" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-logical-tree@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" - integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== - -"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" - integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== - dependencies: - hosted-git-info "^2.6.0" - osenv "^0.1.5" - semver "^5.5.0" - validate-npm-package-name "^3.0.0" - -npm-packlist@^1.1.10, npm-packlist@^1.1.12: - 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" - npm-packlist@^1.1.6: version "1.4.6" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" @@ -6598,77 +4970,12 @@ npm-path@^2.0.2: dependencies: which "^1.2.10" -npm-pick-manifest@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" - integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - -npm-profile@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-3.0.2.tgz#58d568f1b56ef769602fd0aed8c43fa0e0de0f57" - integrity sha512-rEJOFR6PbwOvvhGa2YTNOJQKNuc6RovJ6T50xPU7pS9h/zKPNCJ+VHZY2OFXyZvEi+UQYtHRTp8O/YM3tUD20A== - dependencies: - aproba "^1.1.2 || 2" - make-fetch-happen "^2.5.0 || 3 || 4" - -npm-registry-client@^8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" - integrity sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg== - dependencies: - concat-stream "^1.5.2" - graceful-fs "^4.1.6" - normalize-package-data "~1.0.1 || ^2.0.0" - npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - once "^1.3.3" - request "^2.74.0" - retry "^0.10.0" - safe-buffer "^5.1.1" - semver "2 >=2.2.1 || 3.x || 4 || 5" - slide "^1.1.3" - ssri "^5.2.4" - optionalDependencies: - npmlog "2 || ^3.1.0 || ^4.0.0" - -npm-registry-fetch@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-1.1.1.tgz#710bc5947d9ee2c549375072dab6d5d17baf2eb2" - integrity sha512-ev+zxOXsgAqRsR8Rk+ErjgWOlbrXcqGdme94/VNdjDo1q8TSy10Pp8xgDv/ZmMk2jG/KvGtXUNG4GS3+l6xbDw== - dependencies: - bluebird "^3.5.1" - figgy-pudding "^3.0.0" - lru-cache "^4.1.2" - make-fetch-happen "^3.0.0" - npm-package-arg "^6.0.0" - safe-buffer "^5.1.1" - -npm-registry-fetch@^3.0.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz#44d841780e2833f06accb34488f8c7450d1a6856" - integrity sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw== - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^4.1.3" - make-fetch-happen "^4.0.1" - npm-package-arg "^6.1.0" - 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" dependencies: path-key "^2.0.0" -npm-user-validate@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" - integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE= - npm-which@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" @@ -6677,122 +4984,7 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" -npm@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/npm/-/npm-6.5.0.tgz#30ed48d4cd4d17d68ee04a5fcf9fa2ca9167d819" - integrity sha512-SPq8zG2Kto+Xrq55E97O14Jla13PmQT5kSnvwBj88BmJZ5Nvw++OmlWfhjkB67pcgP5UEXljEtnGFKZtOgt6MQ== - dependencies: - JSONStream "^1.3.4" - abbrev "~1.1.1" - ansicolors "~0.3.2" - ansistyles "~0.1.3" - aproba "~1.2.0" - archy "~1.0.0" - bin-links "^1.1.2" - bluebird "^3.5.3" - byte-size "^4.0.3" - cacache "^11.2.0" - call-limit "~1.1.0" - chownr "~1.0.1" - ci-info "^1.6.0" - cli-columns "^3.1.2" - cli-table3 "^0.5.0" - cmd-shim "~2.0.2" - columnify "~1.5.4" - config-chain "^1.1.12" - detect-indent "~5.0.0" - detect-newline "^2.1.0" - dezalgo "~1.0.3" - editor "~1.0.0" - figgy-pudding "^3.5.1" - find-npm-prefix "^1.0.2" - fs-vacuum "~1.2.10" - fs-write-stream-atomic "~1.0.10" - gentle-fs "^2.0.1" - glob "^7.1.3" - graceful-fs "^4.1.15" - has-unicode "~2.0.1" - hosted-git-info "^2.7.1" - iferr "^1.0.2" - inflight "~1.0.6" - inherits "~2.0.3" - ini "^1.3.5" - init-package-json "^1.10.3" - is-cidr "^2.0.6" - json-parse-better-errors "^1.0.2" - lazy-property "~1.0.0" - libcipm "^2.0.2" - libnpmhook "^4.0.1" - libnpx "^10.2.0" - lock-verify "^2.0.2" - lockfile "^1.0.4" - lodash._baseuniq "~4.6.0" - lodash.clonedeep "~4.5.0" - lodash.union "~4.6.0" - lodash.uniq "~4.5.0" - lodash.without "~4.4.0" - lru-cache "^4.1.3" - meant "~1.0.1" - mississippi "^3.0.0" - mkdirp "~0.5.1" - move-concurrently "^1.0.1" - node-gyp "^3.8.0" - nopt "~4.0.1" - normalize-package-data "~2.4.0" - npm-audit-report "^1.3.1" - npm-cache-filename "~1.0.2" - npm-install-checks "~3.0.0" - npm-lifecycle "^2.1.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.12" - npm-pick-manifest "^2.1.0" - npm-profile "^3.0.2" - npm-registry-client "^8.6.0" - npm-registry-fetch "^1.1.0" - npm-user-validate "~1.0.0" - npmlog "~4.1.2" - once "~1.4.0" - opener "^1.5.1" - osenv "^0.1.5" - pacote "^8.1.6" - path-is-inside "~1.0.2" - promise-inflight "~1.0.1" - qrcode-terminal "^0.12.0" - query-string "^6.1.0" - qw "~1.0.1" - read "~1.0.7" - read-cmd-shim "~1.0.1" - read-installed "~4.0.3" - read-package-json "^2.0.13" - read-package-tree "^5.2.1" - readable-stream "^2.3.6" - request "^2.88.0" - retry "^0.12.0" - rimraf "~2.6.2" - safe-buffer "^5.1.2" - semver "^5.5.1" - sha "~2.0.1" - slide "~1.1.6" - sorted-object "~2.0.1" - sorted-union-stream "~2.1.3" - ssri "^6.0.1" - stringify-package "^1.0.0" - tar "^4.4.8" - text-table "~0.2.0" - tiny-relative-date "^1.3.0" - uid-number "0.0.6" - umask "~1.1.0" - unique-filename "~1.1.0" - unpipe "~1.0.0" - update-notifier "^2.5.0" - uuid "^3.3.2" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "~3.0.0" - which "^1.3.1" - worker-farm "^1.6.0" - write-file-atomic "^2.3.0" - -"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.2, npmlog@~4.1.2: +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== @@ -6871,12 +5063,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -octokit-pagination-methods@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" - integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== - -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.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= @@ -6889,10 +5076,12 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opener@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" optimist@^0.6.1: version "0.6.1" @@ -6902,7 +5091,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1, optionator@^0.8.2: +optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" dependencies: @@ -6913,20 +5102,28 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + 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@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -6936,19 +5133,11 @@ os-locale@^3.0.0, os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-name@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" -osenv@0, osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -6968,13 +5157,6 @@ p-each-series@^1.0.0: dependencies: p-reduce "^1.0.0" -p-filter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" - integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== - dependencies: - p-map "^2.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" @@ -7023,14 +5205,6 @@ p-reduce@^1.0.0: resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= -p-retry@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.1.0.tgz#9ce7cef2069e84bf590df3b8ec18d740109338d6" - integrity sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA== - dependencies: - "@types/retry" "^0.12.0" - retry "^0.12.0" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -7040,46 +5214,10 @@ p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" -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" - registry-url "^3.0.3" - semver "^5.1.0" - -pacote@^8.1.6: - version "8.1.6" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-8.1.6.tgz#8e647564d38156367e7a9dc47a79ca1ab278d46e" - integrity sha512-wTOOfpaAQNEQNtPEx92x9Y9kRWVu45v583XT8x2oEV2xRB74+xdqMZIeGW4uFvAyZdmSBtye+wKdyyLaT8pcmw== - dependencies: - bluebird "^3.5.1" - cacache "^11.0.2" - get-stream "^3.0.0" - glob "^7.1.2" - lru-cache "^4.1.3" - make-fetch-happen "^4.0.1" - minimatch "^3.0.4" - minipass "^2.3.3" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.10" - npm-pick-manifest "^2.1.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.0" - rimraf "^2.6.2" - safe-buffer "^5.1.2" - semver "^5.5.0" - ssri "^6.0.0" - tar "^4.4.3" - unique-filename "^1.1.0" - which "^1.3.0" +pako@~1.0.5: + version "1.0.10" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" + integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== parallel-transform@^1.1.0: version "1.1.0" @@ -7095,10 +5233,17 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-github-url@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" - integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== +parse-asn1@^5.0.0: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" parse-json@^4.0.0: version "4.0.0" @@ -7117,6 +5262,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -7131,7 +5281,7 @@ path-is-absolute@^1.0.0: 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, path-is-inside@^1.0.2, path-is-inside@~1.0.2: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -7150,16 +5300,22 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" - integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== - pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -7190,14 +5346,6 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -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 "^4.0.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -7485,10 +5633,17 @@ prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" -prepend-http@^1.0.0, prepend-http@^1.0.1: +prepend-http@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + prettier@1.13.7: version "1.13.7" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281" @@ -7514,16 +5669,16 @@ pretty-format@^24.7.0: ansi-styles "^3.2.0" react-is "^16.8.4" -private@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" @@ -7533,18 +5688,10 @@ progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" -promise-inflight@^1.0.1, 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" -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - prompts@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.4.tgz#179f9d4db3128b9933aa35f93a800d8fce76a682" @@ -7553,25 +5700,6 @@ prompts@^2.0.1: kleur "^3.0.2" sisteransi "^1.0.0" -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= - dependencies: - read "1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -protoduck@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== - dependencies: - genfun "^5.0.0" - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -7585,7 +5713,19 @@ psl@^1.1.24, psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== -pump@^2.0.0, pump@^2.0.1: +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" dependencies: @@ -7607,7 +5747,12 @@ pumpify@^1.3.3: inherits "^2.0.3" pump "^2.0.0" -punycode@^1.4.1: +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -7620,11 +5765,6 @@ q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" -qrcode-terminal@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" - integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== - qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -7637,26 +5777,37 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^6.1.0: - version "6.4.2" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.4.2.tgz#8be1dbd105306aebf86022144f575a29d516b713" - integrity sha512-DfJqAen17LfLA3rQ+H5S4uXphrF+ANU1lT2ijds4V/Tj4gZxA3gx5/tg1bz7kYCmwna7LyJNCYqO7jNRzo3aLw== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 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= -qw@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" - integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ= +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -7671,50 +5822,6 @@ react-is@^16.8.4: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== -read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" - integrity sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs= - dependencies: - graceful-fs "^4.1.2" - -read-installed@~4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" - integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc= - dependencies: - debuglog "^1.0.1" - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - semver "2 || 3 || 4 || 5" - slide "~1.1.3" - util-extend "^1.0.1" - optionalDependencies: - graceful-fs "^4.1.2" - -"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" - integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== - dependencies: - glob "^7.1.1" - json-parse-better-errors "^1.0.1" - normalize-package-data "^2.0.0" - slash "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" - -read-package-tree@^5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.2.tgz#4b6a0ef2d943c1ea36a578214c9a7f6b7424f7a8" - integrity sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - once "^1.3.0" - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - 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" @@ -7740,7 +5847,7 @@ read-pkg@3.0.0, read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^4.0.0, read-pkg@^4.0.1: +read-pkg@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" dependencies: @@ -7748,14 +5855,7 @@ read-pkg@^4.0.0, read-pkg@^4.0.1: parse-json "^4.0.0" pify "^3.0.0" -read@1, read@~1.0.1, read@~1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -7767,32 +5867,14 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@~1.1.10: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdir-scoped-modules@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" - integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c= - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== +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: - picomatch "^2.0.4" + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" realpath-native@^1.1.0: version "1.1.0" @@ -7809,13 +5891,6 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" -redeyed@~2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" - integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= - dependencies: - esprima "~4.0.0" - reduce-css-calc@^1.2.6: version "1.3.0" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" @@ -7830,14 +5905,7 @@ reduce-function-call@^1.0.1: dependencies: balanced-match "^0.4.2" -regenerate-unicode-properties@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz#7b38faa296252376d363558cfbda90c9ce709662" - integrity sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.2.1, regenerate@^1.4.0: +regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -7851,13 +5919,6 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-transform@^0.13.4: - version "0.13.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" - integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A== - dependencies: - private "^0.1.6" - 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" @@ -7866,15 +5927,15 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.6.tgz#84900fa12fdf428a2ac25f04300382a7c0148479" - integrity sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w== - regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" @@ -7883,55 +5944,16 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" - regjsgen "^0.5.0" - regjsparser "^0.6.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" - -registry-auth-token@^3.0.1, registry-auth-token@^3.3.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== - dependencies: - rc "^1.1.6" - safe-buffer "^5.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" - 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" dependencies: jsesc "~0.5.0" -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" - 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" @@ -7963,7 +5985,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.74.0, request@^2.87.0, request@^2.88.0: +request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -8048,10 +6070,17 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7, resolve@1.1.x: +resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@1.x, resolve@^1.10.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" + integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== + dependencies: + path-parse "^1.0.6" + resolve@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" @@ -8072,34 +6101,47 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + 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== -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@~2.6.2: +rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" dependencies: glob "^7.1.3" -rimraf@^2.6.1: +rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" + integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + rsvp@^4.8.4: version "4.8.4" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" @@ -8127,10 +6169,10 @@ rxjs@^6.3.3: dependencies: tslib "^1.9.0" -rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== +rxjs@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" + integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== dependencies: tslib "^1.9.0" @@ -8139,7 +6181,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.1.2: +safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -8175,96 +6217,46 @@ sax@^1.2.4, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -semantic-release@^16.0.0-beta.18: - version "16.0.0-beta.18" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-16.0.0-beta.18.tgz#8df1562c55d5d1e6804d0e9bc4935703f2f20516" - integrity sha512-d27vHo5f5o2hyHNVMFkou4qllXRjuOxUKree5A2xz/Lr3io8ySqc0BDnr4sZxvfhUd85AC8/I0uw49UMQSPtAw== - dependencies: - "@semantic-release/commit-analyzer" "^7.0.0-beta.1" - "@semantic-release/error" "^2.2.0" - "@semantic-release/github" "^5.3.0-beta.6" - "@semantic-release/npm" "^5.2.0-beta.5" - "@semantic-release/release-notes-generator" "^7.1.2" - aggregate-error "^2.0.0" - cosmiconfig "^5.0.1" - debug "^4.0.0" - env-ci "^3.0.0" - execa "^1.0.0" - figures "^2.0.0" - find-versions "^3.0.0" - get-stream "^4.0.0" - git-log-parser "^1.2.0" - hook-std "^1.1.0" - hosted-git-info "^2.7.1" - lodash "^4.17.4" - marked "^0.6.0" - marked-terminal "^3.2.0" - micromatch "3.1.5" - p-each-series "^1.0.0" - p-reduce "^1.0.0" - read-pkg-up "^4.0.0" - resolve-from "^4.0.0" - semver "^5.4.1" - semver-diff "^2.1.0" - signale "^1.2.1" - yargs "^12.0.0" - -semver-compare@^1.0.0: +schema-utils@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - -semver-diff@^2.0.0, semver-diff@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" dependencies: - semver "^5.0.3" - -semver-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" -"semver@2 || 3 || 4 || 5", semver@5.6.0, semver@^5.0.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@5.6.0, semver@^5.0.1, semver@^5.5.0, semver@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" -semver@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== - -semver@^5.3.0: +semver@^5.3.0, semver@^5.5: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^5.4.1, semver@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + semver@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= +semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -serialize-javascript@^1.4.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -8280,13 +6272,18 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -sha@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" - integrity sha1-YDCCL70smCOUn49y7WQR7lzyWq4= +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: - graceful-fs "^4.1.2" - readable-stream "^2.0.2" + inherits "^2.0.1" + safe-buffer "^5.0.1" shebang-command@^1.2.0: version "1.2.0" @@ -8308,15 +6305,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -signale@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1" - integrity sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w== - dependencies: - chalk "^2.3.2" - figures "^2.0.0" - pkg-conf "^2.1.0" - simple-git@^1.85.0: version "1.107.0" resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.107.0.tgz#12cffaf261c14d6f450f7fdb86c21ccee968b383" @@ -8328,11 +6316,6 @@ sisteransi@^1.0.0: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== -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" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -8350,21 +6333,6 @@ slice-ansi@^2.1.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" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - -smart-buffer@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" - integrity sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw== - -smart-buffer@^1.0.13: - version "1.1.15" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" - integrity sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY= - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -8395,58 +6363,13 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" - integrity sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA== - dependencies: - agent-base "^4.1.0" - socks "^1.1.10" - -socks-proxy-agent@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== - dependencies: - agent-base "~4.2.1" - socks "~2.3.2" - -socks@^1.1.10: - version "1.1.10" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" - integrity sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o= - dependencies: - ip "^1.1.4" - smart-buffer "^1.0.13" - -socks@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" - integrity sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ== - dependencies: - ip "^1.1.5" - smart-buffer "4.0.2" - sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" dependencies: is-plain-obj "^1.0.0" -sorted-object@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" - integrity sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw= - -sorted-union-stream@~2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" - integrity sha1-x3lMfgd4gAUv9xqNSi27Sppjisc= - dependencies: - from2 "^1.3.0" - stream-iterate "^1.1.0" - -source-list-map@^2.0.0, source-list-map@^2.0.1: +source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -8469,9 +6392,10 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.6: - version "0.5.10" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" +source-map-support@~0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -8494,17 +6418,6 @@ source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - -spawn-error-forwarder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz#1afd94738e999b0346d7b9fc373be55e07577029" - integrity sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk= - spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -8527,11 +6440,6 @@ 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" -split-on-first@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.0.0.tgz#648af4ce9a28fbcaadd43274455f298b55025fc6" - integrity sha512-mjA57TQtdWztVZ9THAjGNpgbuIrNfsNrGa5IyK94NoPaT4N14M+GI4jD7t4arLjFkYRQWdETC5RxFzLWouoB3A== - 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" @@ -8546,20 +6454,6 @@ split2@^2.0.0: dependencies: through2 "^2.0.2" -split2@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-1.0.0.tgz#52e2e221d88c75f9a73f90556e263ff96772b314" - integrity sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ= - dependencies: - through2 "~2.0.0" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -8579,14 +6473,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== - dependencies: - safe-buffer "^5.1.1" - -ssri@^6.0.0, ssri@^6.0.1: +ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" dependencies: @@ -8614,12 +6501,12 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-combiner2@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: - duplexer2 "~0.1.0" + inherits "~2.0.1" readable-stream "^2.0.2" stream-each@^1.1.0: @@ -8629,13 +6516,16 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-iterate@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" - integrity sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE= +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: - readable-stream "^2.1.5" - stream-shift "^1.0.0" + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" stream-shift@^1.0.0: version "1.0.0" @@ -8645,11 +6535,6 @@ strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - string-argv@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" @@ -8671,7 +6556,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.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" dependencies: @@ -8687,10 +6572,21 @@ string-width@^3.0.0: 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" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" @@ -8707,11 +6603,6 @@ stringify-object@^3.2.2: is-obj "^1.0.1" is-regexp "^1.0.0" -stringify-package@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b" - integrity sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g== - 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" @@ -8732,13 +6623,20 @@ strip-ansi@^5.0.0: dependencies: ansi-regex "^4.0.0" -strip-ansi@^5.1.0: +strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -8753,10 +6651,15 @@ 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: +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" +strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" @@ -8768,13 +6671,13 @@ 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.1.0, supports-color@^3.2.3: +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@^5.0.0, supports-color@^5.2.0, supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.2.0, supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" dependencies: @@ -8786,14 +6689,6 @@ supports-color@^6.0.0, supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-hyperlinks@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" - integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== - dependencies: - has-flag "^2.0.0" - supports-color "^5.0.0" - svgo@^0.7.0: version "0.7.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" @@ -8825,18 +6720,14 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.0: +tapable@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" -tar@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" +tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tar@^4: version "4.4.13" @@ -8851,45 +6742,29 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -tar@^4.4.3, tar@^4.4.8: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - dependencies: - 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" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" - -terser-webpack-plugin@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz#7545da9ae5f4f9ae6a0ac961eb46f5e7c845cc26" +terser-webpack-plugin@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: - cacache "^11.0.2" - find-cache-dir "^2.0.0" + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^1.4.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" - terser "^3.8.1" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" -terser@^3.8.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.1.tgz#cc4764014af570bc79c79742358bd46926018a32" +terser@^4.1.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.2.tgz#448fffad0245f4c8a277ce89788b458bfd7706e8" + integrity sha512-Uufrsvhj9O1ikwgITGsZ5EZS6qPokUOkCegS7fYOdGTv+OA90vndUbU6PEjr5ePqHfNUbGyMO7xyIZv2MhsALQ== dependencies: - commander "~2.17.1" + commander "^2.20.0" source-map "~0.6.1" - source-map-support "~0.5.6" + source-map-support "~0.5.12" test-exclude@^5.2.2: version "5.2.2" @@ -8906,7 +6781,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" @@ -8915,26 +6790,23 @@ throat@^4.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= -through2@^2.0.0, through2@^2.0.2, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" dependencies: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.6: +"through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -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= - -tiny-relative-date@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" - integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" tmp@^0.0.33: version "0.0.33" @@ -8947,6 +6819,11 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + 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" @@ -8967,13 +6844,6 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - 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" @@ -9007,11 +6877,6 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -traverse@~0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= - trim-newlines@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" @@ -9027,6 +6892,22 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +ts-jest@^24.2.0: + version "24.2.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.2.0.tgz#7abca28c2b4b0a1fdd715cd667d65d047ea4e768" + integrity sha512-Yc+HLyldlIC9iIK8xEN7tV960Or56N49MDP7hubCZUeI7EbIOTsas6rXCMB4kQjLACJ7eDOF4xWEO5qumpKsag== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" + ts-loader@^5.0.0: version "5.3.3" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.3.3.tgz#8b4af042e773132d86b3c99ef0acf3b4d325f473" @@ -9038,43 +6919,21 @@ ts-loader@^5.0.0: micromatch "^3.1.4" semver "^5.0.1" -tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.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" -tslint-config-prettier@^1.16.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.17.0.tgz#946ed6117f98f3659a65848279156d87628c33dc" - -tslint@^5.11.0: - version "5.12.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.12.1.tgz#8cec9d454cf8a1de9b0a26d7bdbad6de362e52c1" - 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" - 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" +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== dependencies: tslib "^1.8.1" -tsutils@^3.7.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.14.0.tgz#bf8d5a7bae5369331fa0f2b0a5a10bd7f7396c77" - integrity sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== - dependencies: - tslib "^1.8.1" +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= tunnel-agent@^0.6.0: version "0.6.0" @@ -9094,6 +6953,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -9111,39 +6975,6 @@ uglify-js@^3.1.4: commander "~2.20.3" source-map "~0.6.1" -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -umask@^1.1.0, umask@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= - -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.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -9162,7 +6993,7 @@ uniqs@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" -unique-filename@^1.1.0, unique-filename@^1.1.1, unique-filename@~1.1.0: +unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" dependencies: @@ -9174,25 +7005,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -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" - -universal-user-agent@^2.0.0, universal-user-agent@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.3.tgz#9f6f09f9cc33de867bb720d84c08069b14937c6c" - integrity sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g== - dependencies: - os-name "^3.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - unixify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" @@ -9200,11 +7012,6 @@ unixify@^1.0.0: dependencies: normalize-path "^2.1.1" -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -9213,26 +7020,10 @@ unset-value@^1.0.0: 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" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - -update-notifier@^2.3.0, 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" +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== uri-js@^4.2.2: version "4.2.2" @@ -9245,22 +7036,13 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-join@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" - integrity sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo= - -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= +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: - prepend-http "^1.0.1" - -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= + punycode "1.3.2" + querystring "0.2.0" use@^3.1.0: version "3.1.1" @@ -9272,11 +7054,6 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util-extend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" - integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8= - util.promisify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -9285,25 +7062,37 @@ util.promisify@^1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - vendors@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" @@ -9317,6 +7106,11 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + vue-class-component@^6.1.1: version "6.3.2" resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-6.3.2.tgz#e6037e84d1df2af3bde4f455e50ca1b9eec02be6" @@ -9371,69 +7165,56 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@2.0.0-beta.2: - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.0-beta.2.tgz#357ed627767dd16ed80500f49c5d4029b49248cb" +watchpack@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== dependencies: + chokidar "^2.0.2" graceful-fs "^4.1.2" neo-async "^2.5.0" -wcwidth@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-sources@2.0.0-beta.1: - version "2.0.0-beta.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.0.0-beta.1.tgz#7502135a42b18e5c6e88f85d706729fef1f9aee9" - integrity sha512-crzDTpRrXVAc5E/PSs3CP4bieKaFUqcKh1fLkul5BGyh9zI/FRK0QCfD4ufmReeEgbWTP7lhmkuSASQeM/dnwQ== - dependencies: - source-list-map "^2.0.1" - source-map "~0.6.1" - -webpack-sources@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^5.0.0-alpha.5: - version "5.0.0-alpha.11" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.0.0-alpha.11.tgz#ebca9d79dce46165ddacdc99ff0b5b0388f4e62b" - integrity sha512-ZKCTHaNy7BBkczezC3fdaOGSP/IPzsXplM2xlsppvt9Jo9gtovKsWEFzvl4pCANBI5msmDYYUT7X/8YsVp4MMg== - dependencies: - "@webassemblyjs/ast" "1.8.3" - "@webassemblyjs/helper-module-context" "1.8.3" - "@webassemblyjs/wasm-edit" "1.8.3" - "@webassemblyjs/wasm-parser" "1.8.3" - acorn "^6.0.5" - acorn-dynamic-import "^4.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" +webpack@^4.0.0: + version "4.41.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.2.tgz#c34ec76daa3a8468c9b61a50336d8e3303dce74e" + integrity sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" - events "^3.0.0" + eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" - loader-runner "3.0.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.2.1" - watchpack "2.0.0-beta.2" - webpack-sources "2.0.0-beta.1" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.1" + watchpack "^1.6.0" + webpack-sources "^1.4.1" whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" @@ -9474,7 +7255,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@1.3.1, which@^1.1.1, which@^1.2.10, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1.3.1, which@^1.2.10, which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" dependencies: @@ -9486,32 +7267,24 @@ wide-align@1.1.3, wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^2.0.0: - 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" - -windows-release@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" - integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== - dependencies: - execa "^1.0.0" - -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -worker-farm@^1.5.2, worker-farm@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: errno "~0.1.7" @@ -9550,15 +7323,6 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: - 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" - signal-exit "^3.0.2" - write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -9573,25 +7337,20 @@ ws@^5.2.0: dependencies: async-limiter "~1.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= - xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -9605,6 +7364,13 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yargs-parser@10.x, 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@13.0.0, yargs-parser@^13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" @@ -9613,13 +7379,6 @@ yargs-parser@13.0.0, yargs-parser@^13.0.0: camelcase "^5.0.0" decamelize "^1.2.0" -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" @@ -9628,13 +7387,6 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - yargs-unparser@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d" @@ -9661,25 +7413,7 @@ yargs@13.2.2: y18n "^4.0.0" yargs-parser "^13.0.0" -yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.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" - yargs-parser "^9.0.2" - -yargs@^12.0.0, yargs@^12.0.2, yargs@^12.0.5: +yargs@^12.0.2, yargs@^12.0.5: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==