diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..20f0dc9 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "env": { + "es2020": true, + "shared-node-browser": true, + "node": true + }, + "extends": "./node_modules/@wessberg/ts-config/.eslintrc.json" +} diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..bba6ddf --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: wessberg +patreon: wessberg diff --git a/LICENSE.md b/LICENSE.md index e5df0c8..fa59072 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright © 2019 [Frederik Wessberg](mailto:frederikwessberg@hotmail.com) ([@FredWessberg](https://twitter.com/FredWessberg)) ([Website](https://github.com/wessberg)) +Copyright © 2020 [Frederik Wessberg](mailto:frederikwessberg@hotmail.com) ([@FredWessberg](https://twitter.com/FredWessberg)) ([Website](https://github.com/wessberg)) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index a7bfbd2..e0419b1 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,6 @@ NPM version Dependencies Contributors -code style: prettier License: MIT Support on Patreon @@ -55,22 +54,16 @@ This has been implemented as a TypeScript Custom Transformer in order to be so l - [Features](#features) - [Table of Contents](#table-of-contents) - [Install](#install) - - [NPM](#npm) + - [npm](#npm) - [Yarn](#yarn) + - [pnpm](#pnpm) + - [Peer Dependencies](#peer-dependencies) - [Usage](#usage) - - [Usage with TypeScript's Compiler APIs](#usage-with-typescripts-compiler-apis) - - [Usage with Rollup](#usage-with-rollup) - - [Usage with rollup-plugin-ts](#usage-with-rollup-plugin-ts) - - [Usage with rollup-plugin-typescript2](#usage-with-rollup-plugin-typescript2) - - [Usage with Webpack](#usage-with-webpack) - - [Usage with awesome-typescript-loader](#usage-with-awesome-typescript-loader) - - [Usage with ts-loader](#usage-with-ts-loader) - [Contributing](#contributing) - [Maintainers](#maintainers) - [Backers](#backers) - [Patreon](#patreon) - [FAQ](#faq) - - [How does it work, exactly?](#how-does-it-work-exactly) - [License](#license) @@ -79,7 +72,7 @@ This has been implemented as a TypeScript Custom Transformer in order to be so l ## Install -### NPM +### npm ``` $ npm install @wessberg/di-compiler @@ -91,6 +84,16 @@ $ npm install @wessberg/di-compiler $ yarn add @wessberg/di-compiler ``` +### pnpm + +``` +$ pnpm add @wessberg/di-compiler +``` + +### Peer Dependencies + +`@wessberg/di-compiler` depends on `typescript`, so you need to manually install these as well. + @@ -111,7 +114,48 @@ There's several ways to do this, but here's a simple example: import { createProgram, getDefaultCompilerOptions, - createCompilerHost + createCompilerHost, +} from "typescript"; +import { di } from "@wessberg/di-compiler"; + +const compilerOptions = getDefaultCompilerOptions(); +const compilerHost = createCompilerHost(compilerOptions); + +// Create a Typescript program +const program = createProgram( + ["my-file-1.ts", "my-file-2.ts"], + compilerOptions, + compilerHost +); + +// Transform the SourceFiles within the program, and pass them through the 'di' transformer +program.emit(undefined, undefined, undefined, undefined, di({ program })); +``` + +### Usage with ts-node + +One of the simplest ways to use DI-compiler is with [`ts-node`](https://github.com/TypeStrong/ts-node): + +``` +node -r @wessberg/di-compiler/register +``` + +You can also do it programmatically. Here's an example using CommonJS: + +```typescript +const { di } = require("@wessberg/rollup-plugin-ts"); + +require("ts-node").register({ + transpileOnly: false, + transformers: (program) => di({ program }), +}); +``` + +```typescript +import { + createProgram, + getDefaultCompilerOptions, + createCompilerHost, } from "typescript"; import { di } from "@wessberg/di-compiler"; @@ -149,9 +193,9 @@ export default { ], plugins: [ ts({ - transformers: [di] - }) - ] + transformers: [di], + }), + ], }; ``` @@ -168,9 +212,9 @@ export default { ], plugins: [ ts({ - transformers: [service => di({ program: service.getProgram() })] - }) - ] + transformers: [(service) => di({ program: service.getProgram() })], + }), + ], }; ``` @@ -195,11 +239,11 @@ const config = { loader: "awesome-typescript-loader", options: { // ... - getCustomTransformers: program => di({ program }) - } - } - ] - } + getCustomTransformers: (program) => di({ program }), + }, + }, + ], + }, // ... }; ``` @@ -218,15 +262,37 @@ const config = { loader: "ts-loader", options: { // ... - getCustomTransformers: program => di({ program }) - } - } - ] - } + getCustomTransformers: (program) => di({ program }), + }, + }, + ], + }, // ... }; ``` +### Usage with ava + +You can also use DI-compiler with the [`ava`](https://github.com/avajs/ava) test runner +with the `require` property in the `ava` configuration: + +```json +{ + // Other options... + "extensions": ["ts"], + "require": ["@wessberg/di-compiler/register"] +} +``` + +## Options + +You can provide options to the `di` Custom Transformer to configure its behavior: + +| Option | Description | +| ------------------------- | ---------------------------------------------------------------------- | +| `program` | A full TypeScript program (required). | +| `typescript` _(optional)_ | If given, the TypeScript version to use internally for all operations. | + ## Contributing @@ -239,7 +305,7 @@ Do you want to contribute? Awesome! Please follow [these recommendations](./CONT ## Maintainers -| Frederik Wessberg | +| Frederik Wessberg | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [Frederik Wessberg](mailto:frederikwessberg@hotmail.com)
Twitter: [@FredWessberg](https://twitter.com/FredWessberg)
Github: [@wessberg](https://github.com/wessberg)
_Lead Developer_ | @@ -249,11 +315,13 @@ Do you want to contribute? Awesome! Please follow [these recommendations](./CONT ## Backers -### Patreon +| Bubbles | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Bubbles](https://usebubbles.com)
Twitter: [@use_bubbles](https://twitter.com/use_bubbles) | -[Become a backer](https://www.patreon.com/bePatron?u=11315442) and get your name, avatar, and Twitter handle listed here. +### Patreon -Backers on Patreon +Patrons on Patreon @@ -284,7 +352,7 @@ Will be compiled into: // ... container.registerSingleton(undefined, { identifier: "MyInterface", - implementation: MyImplementation + implementation: MyImplementation, }); ``` diff --git a/package.json b/package.json index 309c135..a91e5c4 100644 --- a/package.json +++ b/package.json @@ -3,22 +3,21 @@ "version": "2.0.5", "description": "A Custom Transformer for Typescript that enables compile-time Dependency Injection", "scripts": { - "generate:readme": "scaffold readme --yes", - "generate:license": "scaffold license --yes", - "generate:contributing": "scaffold contributing --yes", - "generate:coc": "scaffold coc --yes", + "generate:scaffold": "scaffold all --yes", "generate:changelog": "standard-changelog --first-release", - "generate:all": "npm run generate:license && npm run generate:contributing && npm run generate:coc && npm run generate:readme && npm run generate:changelog", - "clean:dist": "rm -rf dist", - "clean": "npm run clean:dist", - "lint": "tsc --noEmit && tslint -c tslint.json --project tsconfig.json", - "prettier": "prettier --write '{src,documentation}/**/*.{js,ts,json,html,xml,css,md}'", - "prebuild": "npm run clean:dist", - "build": "npm run rollup", - "watch": "npm run rollup -- --watch", + "generate:all": "pnpm run generate:scaffold && pnpm run generate:changelog", + "clean:dist": "rimraf dist", + "clean": "pnpm run clean:dist", + "lint": "tsc --noEmit && eslint \"src/**/*.ts\" --color", + "prettier": "prettier --write '{src,test,documentation}/**/*.{js,ts,json,html,xml,css,md}'", + "test": "ava", + "prebuild": "pnpm run clean:dist", + "build": "pnpm run rollup", + "prewatch": "pnpm run clean:dist", + "watch": "pnpm run rollup -- --watch", "rollup": "rollup -c rollup.config.js", - "preversion": "npm run lint && NODE_ENV=production npm run build", - "version": "npm run generate:all && git add .", + "preversion": "pnpm run lint && NODE_ENV=production pnpm run build", + "version": "pnpm run generate:all && git add .", "release": "np --no-cleanup --no-yarn" }, "keywords": [ @@ -35,7 +34,8 @@ "compiler" ], "files": [ - "dist/**/*.*" + "dist/**/*.*", + "register/*.*" ], "contributors": [ { @@ -50,20 +50,37 @@ ], "license": "MIT", "devDependencies": { - "@wessberg/scaffold": "^1.0.18", - "@wessberg/ts-config": "^0.0.41", - "@wessberg/rollup-plugin-ts": "1.1.57", - "standard-changelog": "2.0.11", - "rollup": "1.15.6", - "tslint": "5.17.0", - "prettier": "1.18.2", - "pretty-quick": "1.11.1", - "husky": "2.4.1", - "np": "5.0.3" + "@types/prettier": "^2.0.1", + "@types/node": "^14.0.5", + "@typescript-eslint/eslint-plugin": "^3.0.1", + "@typescript-eslint/parser": "^3.0.1", + "@wessberg/rollup-plugin-ts": "^1.2.24", + "@wessberg/scaffold": "^1.0.29", + "@wessberg/di": "^2.0.3", + "@wessberg/ts-config": "^1.0.10", + "ava": "^3.8.2", + "eslint": "^7.1.0", + "slash": "^3.0.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-jsdoc": "^25.4.2", + "husky": "^4.2.5", + "np": "^6.2.3", + "pnpm": "^4.14.4", + "prettier": "^2.0.5", + "pretty-quick": "^2.0.1", + "rimraf": "^3.0.2", + "rollup": "^2.10.9", + "standard-changelog": "^2.0.24", + "ts-node": "^8.10.1", + "typescript": "^3.9.3" }, "dependencies": { - "@types/node": "^12.0.8", - "typescript": "^3.5.2" + "@wessberg/ts-evaluator": "^0.0.25", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "typescript": "^3.x" }, "repository": { "type": "git", @@ -72,18 +89,34 @@ "bugs": { "url": "https://github.com/wessberg/di-compiler/issues" }, - "engines": { - "node": ">=9.0.0" - }, "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", "browser": "./dist/esm/index.js", "types": "./dist/esm/index.d.ts", "typings": "./dist/esm/index.d.ts", "es2015": "./dist/esm/index.js", + "engines": { + "node": ">=8.0.0" + }, "husky": { "hooks": { "pre-commit": "pretty-quick --staged" } + }, + "ava": { + "files": [ + "test/**.test.ts" + ], + "verbose": true, + "timeout": "40s", + "extensions": [ + "ts" + ], + "environmentVariables": { + "NODE_OPTIONS": "--max_old_space_size=4096" + }, + "require": [ + "ts-node/register/transpile-only" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..db36365 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7130 @@ +dependencies: + "@wessberg/ts-evaluator": 0.0.25_typescript@3.9.3 + tslib: 2.0.0 +devDependencies: + "@types/node": 14.0.5 + "@types/prettier": 2.0.1 + "@typescript-eslint/eslint-plugin": 3.0.1_9ab43492353d1d2184725d8d957a32a6 + "@typescript-eslint/parser": 3.0.1_eslint@7.1.0+typescript@3.9.3 + "@wessberg/di": 2.0.3 + "@wessberg/rollup-plugin-ts": 1.2.24_rollup@2.10.9+typescript@3.9.3 + "@wessberg/scaffold": 1.0.29 + "@wessberg/ts-config": 1.0.10 + ava: 3.8.2 + eslint: 7.1.0 + eslint-config-prettier: 6.11.0_eslint@7.1.0 + eslint-plugin-import: 2.20.2_eslint@7.1.0 + eslint-plugin-jsdoc: 25.4.2_eslint@7.1.0 + husky: 4.2.5 + np: 6.2.3 + pnpm: 4.14.4 + prettier: 2.0.5 + pretty-quick: 2.0.1_prettier@2.0.5 + rimraf: 3.0.2 + rollup: 2.10.9 + slash: 3.0.0 + standard-changelog: 2.0.24 + ts-node: 8.10.1_typescript@3.9.3 + typescript: 3.9.3 +lockfileVersion: 5.1 +packages: + /@babel/code-frame/7.8.3: + dependencies: + "@babel/highlight": 7.9.0 + dev: true + resolution: + integrity: sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + /@babel/compat-data/7.9.6: + dependencies: + browserslist: 4.12.0 + invariant: 2.2.4 + semver: 5.7.1 + dev: true + resolution: + integrity: sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== + /@babel/core/7.9.6: + dependencies: + "@babel/code-frame": 7.8.3 + "@babel/generator": 7.9.6 + "@babel/helper-module-transforms": 7.9.0 + "@babel/helpers": 7.9.6 + "@babel/parser": 7.9.6 + "@babel/template": 7.8.6 + "@babel/traverse": 7.9.6 + "@babel/types": 7.9.6 + convert-source-map: 1.7.0 + debug: 4.1.1 + gensync: 1.0.0-beta.1 + json5: 2.1.3 + lodash: 4.17.15 + resolve: 1.17.0 + semver: 5.7.1 + source-map: 0.5.7 + dev: true + engines: + node: ">=6.9.0" + resolution: + integrity: sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== + /@babel/generator/7.9.6: + dependencies: + "@babel/types": 7.9.6 + jsesc: 2.5.2 + lodash: 4.17.15 + source-map: 0.5.7 + dev: true + resolution: + integrity: sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== + /@babel/helper-annotate-as-pure/7.8.3: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + /@babel/helper-builder-binary-assignment-operator-visitor/7.8.3: + dependencies: + "@babel/helper-explode-assignable-expression": 7.8.3 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + /@babel/helper-compilation-targets/7.9.6_@babel+core@7.9.6: + dependencies: + "@babel/compat-data": 7.9.6 + "@babel/core": 7.9.6 + browserslist: 4.12.0 + invariant: 2.2.4 + levenary: 1.1.1 + semver: 5.7.1 + dev: true + peerDependencies: + "@babel/core": ^7.0.0 + resolution: + integrity: sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== + /@babel/helper-create-regexp-features-plugin/7.8.8_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-annotate-as-pure": 7.8.3 + "@babel/helper-regex": 7.8.3 + regexpu-core: 4.7.0 + dev: true + peerDependencies: + "@babel/core": ^7.0.0 + resolution: + integrity: sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + /@babel/helper-define-map/7.8.3: + dependencies: + "@babel/helper-function-name": 7.9.5 + "@babel/types": 7.9.6 + lodash: 4.17.15 + dev: true + resolution: + integrity: sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + /@babel/helper-explode-assignable-expression/7.8.3: + dependencies: + "@babel/traverse": 7.9.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + /@babel/helper-function-name/7.9.5: + dependencies: + "@babel/helper-get-function-arity": 7.8.3 + "@babel/template": 7.8.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + /@babel/helper-get-function-arity/7.8.3: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + /@babel/helper-hoist-variables/7.8.3: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + /@babel/helper-member-expression-to-functions/7.8.3: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + /@babel/helper-module-imports/7.8.3: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + /@babel/helper-module-transforms/7.9.0: + dependencies: + "@babel/helper-module-imports": 7.8.3 + "@babel/helper-replace-supers": 7.9.6 + "@babel/helper-simple-access": 7.8.3 + "@babel/helper-split-export-declaration": 7.8.3 + "@babel/template": 7.8.6 + "@babel/types": 7.9.6 + lodash: 4.17.15 + dev: true + resolution: + integrity: sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + /@babel/helper-optimise-call-expression/7.8.3: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + /@babel/helper-plugin-utils/7.8.3: + dev: true + resolution: + integrity: sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + /@babel/helper-regex/7.8.3: + dependencies: + lodash: 4.17.15 + dev: true + resolution: + integrity: sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + /@babel/helper-remap-async-to-generator/7.8.3: + dependencies: + "@babel/helper-annotate-as-pure": 7.8.3 + "@babel/helper-wrap-function": 7.8.3 + "@babel/template": 7.8.6 + "@babel/traverse": 7.9.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + /@babel/helper-replace-supers/7.9.6: + dependencies: + "@babel/helper-member-expression-to-functions": 7.8.3 + "@babel/helper-optimise-call-expression": 7.8.3 + "@babel/traverse": 7.9.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== + /@babel/helper-simple-access/7.8.3: + dependencies: + "@babel/template": 7.8.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + /@babel/helper-split-export-declaration/7.8.3: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + /@babel/helper-validator-identifier/7.9.5: + dev: true + resolution: + integrity: sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + /@babel/helper-wrap-function/7.8.3: + dependencies: + "@babel/helper-function-name": 7.9.5 + "@babel/template": 7.8.6 + "@babel/traverse": 7.9.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + /@babel/helpers/7.9.6: + dependencies: + "@babel/template": 7.8.6 + "@babel/traverse": 7.9.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== + /@babel/highlight/7.9.0: + dependencies: + "@babel/helper-validator-identifier": 7.9.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + resolution: + integrity: sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + /@babel/parser/7.9.6: + dev: true + engines: + node: ">=6.0.0" + hasBin: true + resolution: + integrity: sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== + /@babel/plugin-proposal-async-generator-functions/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/helper-remap-async-to-generator": 7.8.3 + "@babel/plugin-syntax-async-generators": 7.8.4_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + /@babel/plugin-proposal-dynamic-import/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-syntax-dynamic-import": 7.8.3_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + /@babel/plugin-proposal-json-strings/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-syntax-json-strings": 7.8.3_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + /@babel/plugin-proposal-nullish-coalescing-operator/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + /@babel/plugin-proposal-numeric-separator/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-syntax-numeric-separator": 7.8.3_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + /@babel/plugin-proposal-object-rest-spread/7.9.6_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-syntax-object-rest-spread": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-parameters": 7.9.5_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== + /@babel/plugin-proposal-optional-catch-binding/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-syntax-optional-catch-binding": 7.8.3_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + /@babel/plugin-proposal-optional-chaining/7.9.0_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-syntax-optional-chaining": 7.8.3_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + /@babel/plugin-proposal-unicode-property-regex/7.8.8_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-create-regexp-features-plugin": 7.8.8_@babel+core@7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + engines: + node: ">=4" + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + /@babel/plugin-syntax-numeric-separator/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + /@babel/plugin-syntax-top-level-await/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + /@babel/plugin-transform-arrow-functions/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + /@babel/plugin-transform-async-to-generator/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-module-imports": 7.8.3 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/helper-remap-async-to-generator": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + /@babel/plugin-transform-block-scoped-functions/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + /@babel/plugin-transform-block-scoping/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + lodash: 4.17.15 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + /@babel/plugin-transform-classes/7.9.5_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-annotate-as-pure": 7.8.3 + "@babel/helper-define-map": 7.8.3 + "@babel/helper-function-name": 7.9.5 + "@babel/helper-optimise-call-expression": 7.8.3 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/helper-replace-supers": 7.9.6 + "@babel/helper-split-export-declaration": 7.8.3 + globals: 11.12.0 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== + /@babel/plugin-transform-computed-properties/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + /@babel/plugin-transform-destructuring/7.9.5_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== + /@babel/plugin-transform-dotall-regex/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-create-regexp-features-plugin": 7.8.8_@babel+core@7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + /@babel/plugin-transform-duplicate-keys/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + /@babel/plugin-transform-exponentiation-operator/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-builder-binary-assignment-operator-visitor": 7.8.3 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + /@babel/plugin-transform-for-of/7.9.0_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + /@babel/plugin-transform-function-name/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-function-name": 7.9.5 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + /@babel/plugin-transform-literals/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + /@babel/plugin-transform-member-expression-literals/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + /@babel/plugin-transform-modules-amd/7.9.6_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-module-transforms": 7.9.0 + "@babel/helper-plugin-utils": 7.8.3 + babel-plugin-dynamic-import-node: 2.3.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== + /@babel/plugin-transform-modules-commonjs/7.9.6_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-module-transforms": 7.9.0 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/helper-simple-access": 7.8.3 + babel-plugin-dynamic-import-node: 2.3.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== + /@babel/plugin-transform-modules-systemjs/7.9.6_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-hoist-variables": 7.8.3 + "@babel/helper-module-transforms": 7.9.0 + "@babel/helper-plugin-utils": 7.8.3 + babel-plugin-dynamic-import-node: 2.3.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== + /@babel/plugin-transform-modules-umd/7.9.0_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-module-transforms": 7.9.0 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + /@babel/plugin-transform-named-capturing-groups-regex/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-create-regexp-features-plugin": 7.8.8_@babel+core@7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0 + resolution: + integrity: sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + /@babel/plugin-transform-new-target/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + /@babel/plugin-transform-object-super/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/helper-replace-supers": 7.9.6 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + /@babel/plugin-transform-parameters/7.9.5_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-get-function-arity": 7.8.3 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== + /@babel/plugin-transform-property-literals/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + /@babel/plugin-transform-regenerator/7.8.7_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + regenerator-transform: 0.14.4 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + /@babel/plugin-transform-reserved-words/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + /@babel/plugin-transform-runtime/7.9.6_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-module-imports": 7.8.3 + "@babel/helper-plugin-utils": 7.8.3 + resolve: 1.17.0 + semver: 5.7.1 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w== + /@babel/plugin-transform-shorthand-properties/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + /@babel/plugin-transform-spread/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + /@babel/plugin-transform-sticky-regex/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/helper-regex": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + /@babel/plugin-transform-template-literals/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-annotate-as-pure": 7.8.3 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + /@babel/plugin-transform-typeof-symbol/7.8.4_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + /@babel/plugin-transform-unicode-regex/7.8.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-create-regexp-features-plugin": 7.8.8_@babel+core@7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + /@babel/preset-env/7.9.6_@babel+core@7.9.6: + dependencies: + "@babel/compat-data": 7.9.6 + "@babel/core": 7.9.6 + "@babel/helper-compilation-targets": 7.9.6_@babel+core@7.9.6 + "@babel/helper-module-imports": 7.8.3 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-proposal-async-generator-functions": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-dynamic-import": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-json-strings": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-nullish-coalescing-operator": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-numeric-separator": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-object-rest-spread": 7.9.6_@babel+core@7.9.6 + "@babel/plugin-proposal-optional-catch-binding": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-optional-chaining": 7.9.0_@babel+core@7.9.6 + "@babel/plugin-proposal-unicode-property-regex": 7.8.8_@babel+core@7.9.6 + "@babel/plugin-syntax-async-generators": 7.8.4_@babel+core@7.9.6 + "@babel/plugin-syntax-dynamic-import": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-syntax-json-strings": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-syntax-numeric-separator": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-syntax-object-rest-spread": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-syntax-optional-catch-binding": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-syntax-optional-chaining": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-syntax-top-level-await": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-arrow-functions": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-async-to-generator": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-block-scoped-functions": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-block-scoping": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-classes": 7.9.5_@babel+core@7.9.6 + "@babel/plugin-transform-computed-properties": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-destructuring": 7.9.5_@babel+core@7.9.6 + "@babel/plugin-transform-dotall-regex": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-duplicate-keys": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-exponentiation-operator": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-for-of": 7.9.0_@babel+core@7.9.6 + "@babel/plugin-transform-function-name": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-literals": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-member-expression-literals": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-modules-amd": 7.9.6_@babel+core@7.9.6 + "@babel/plugin-transform-modules-commonjs": 7.9.6_@babel+core@7.9.6 + "@babel/plugin-transform-modules-systemjs": 7.9.6_@babel+core@7.9.6 + "@babel/plugin-transform-modules-umd": 7.9.0_@babel+core@7.9.6 + "@babel/plugin-transform-named-capturing-groups-regex": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-new-target": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-object-super": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-parameters": 7.9.5_@babel+core@7.9.6 + "@babel/plugin-transform-property-literals": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-regenerator": 7.8.7_@babel+core@7.9.6 + "@babel/plugin-transform-reserved-words": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-shorthand-properties": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-spread": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-sticky-regex": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-template-literals": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-typeof-symbol": 7.8.4_@babel+core@7.9.6 + "@babel/plugin-transform-unicode-regex": 7.8.3_@babel+core@7.9.6 + "@babel/preset-modules": 0.1.3_@babel+core@7.9.6 + "@babel/types": 7.9.6 + browserslist: 4.12.0 + core-js-compat: 3.6.5 + invariant: 2.2.4 + levenary: 1.1.1 + semver: 5.7.1 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== + /@babel/preset-modules/0.1.3_@babel+core@7.9.6: + dependencies: + "@babel/core": 7.9.6 + "@babel/helper-plugin-utils": 7.8.3 + "@babel/plugin-proposal-unicode-property-regex": 7.8.8_@babel+core@7.9.6 + "@babel/plugin-transform-dotall-regex": 7.8.3_@babel+core@7.9.6 + "@babel/types": 7.9.6 + esutils: 2.0.3 + dev: true + peerDependencies: + "@babel/core": ^7.0.0-0 + resolution: + integrity: sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + /@babel/runtime/7.9.6: + dependencies: + regenerator-runtime: 0.13.5 + dev: true + resolution: + integrity: sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + /@babel/template/7.8.6: + dependencies: + "@babel/code-frame": 7.8.3 + "@babel/parser": 7.9.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + /@babel/traverse/7.9.6: + dependencies: + "@babel/code-frame": 7.8.3 + "@babel/generator": 7.9.6 + "@babel/helper-function-name": 7.9.5 + "@babel/helper-split-export-declaration": 7.8.3 + "@babel/parser": 7.9.6 + "@babel/types": 7.9.6 + debug: 4.1.1 + globals: 11.12.0 + lodash: 4.17.15 + dev: true + resolution: + integrity: sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== + /@babel/types/7.9.6: + dependencies: + "@babel/helper-validator-identifier": 7.9.5 + lodash: 4.17.15 + to-fast-properties: 2.0.0 + dev: true + resolution: + integrity: sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== + /@concordance/react/2.0.0: + dependencies: + arrify: 1.0.1 + dev: true + engines: + node: ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + resolution: + integrity: sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA== + /@nodelib/fs.scandir/2.1.3: + dependencies: + "@nodelib/fs.stat": 2.0.3 + run-parallel: 1.1.9 + dev: true + engines: + node: ">= 8" + resolution: + integrity: sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + /@nodelib/fs.stat/2.0.3: + dev: true + engines: + node: ">= 8" + resolution: + integrity: sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + /@nodelib/fs.walk/1.2.4: + dependencies: + "@nodelib/fs.scandir": 2.1.3 + fastq: 1.8.0 + dev: true + engines: + node: ">= 8" + resolution: + integrity: sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + /@rollup/pluginutils/3.0.10_rollup@2.10.9: + dependencies: + "@types/estree": 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.2.2 + rollup: 2.10.9 + dev: true + engines: + node: ">= 8.0.0" + peerDependencies: + rollup: ^1.20.0||^2.0.0 + resolution: + integrity: sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw== + /@samverschueren/stream-to-observable/0.3.0: + dependencies: + any-observable: 0.3.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== + /@sindresorhus/is/0.14.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + /@szmarczak/http-timer/1.1.2: + dependencies: + defer-to-connect: 1.1.3 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + /@types/babel__core/7.1.7: + dependencies: + "@babel/parser": 7.9.6 + "@babel/types": 7.9.6 + "@types/babel__generator": 7.6.1 + "@types/babel__template": 7.0.2 + "@types/babel__traverse": 7.0.11 + dev: true + resolution: + integrity: sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== + /@types/babel__generator/7.6.1: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + /@types/babel__template/7.0.2: + dependencies: + "@babel/parser": 7.9.6 + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + /@types/babel__traverse/7.0.11: + dependencies: + "@babel/types": 7.9.6 + dev: true + resolution: + integrity: sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== + /@types/color-name/1.1.1: + resolution: + integrity: sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + /@types/eslint-visitor-keys/1.0.0: + dev: true + resolution: + integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + /@types/estree/0.0.39: + dev: true + resolution: + integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + /@types/events/3.0.0: + dev: true + resolution: + integrity: sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + /@types/glob/7.1.1: + dependencies: + "@types/events": 3.0.0 + "@types/minimatch": 3.0.3 + "@types/node": 14.0.5 + dev: true + resolution: + integrity: sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + /@types/jsdom/16.2.3: + dependencies: + "@types/node": 14.0.5 + "@types/parse5": 5.0.3 + "@types/tough-cookie": 4.0.0 + dev: false + optional: true + resolution: + integrity: sha512-BREatezSn74rmLIDksuqGNFUTi9HNAWWQXYpFBFLK9U6wlMCO4M0QCa8CMpDsZQuqxSO9XifVLT5Q1P0vgKLqw== + /@types/json-schema/7.0.4: + dev: true + resolution: + integrity: sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + /@types/minimatch/3.0.3: + dev: true + resolution: + integrity: sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + /@types/minimist/1.2.0: + dev: true + resolution: + integrity: sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + /@types/node/13.13.9: + dev: false + resolution: + integrity: sha512-EPZBIGed5gNnfWCiwEIwTE2Jdg4813odnG8iNPMQGrqVxrI+wL68SPtPeCX+ZxGBaA6pKAVc6jaKgP/Q0QzfdQ== + /@types/node/14.0.5: + resolution: + integrity: sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== + /@types/normalize-package-data/2.4.0: + dev: true + resolution: + integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + /@types/object-path/0.11.0: + resolution: + integrity: sha512-/tuN8jDbOXcPk+VzEVZzzAgw1Byz7s/itb2YI10qkSyy6nykJH02DuhfrflxVdAdE7AZ91h5X6Cn0dmVdFw2TQ== + /@types/parse-json/4.0.0: + dev: true + resolution: + integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + /@types/parse5/5.0.3: + dev: false + optional: true + resolution: + integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== + /@types/prettier/1.19.1: + dev: true + resolution: + integrity: sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== + /@types/prettier/2.0.1: + dev: true + resolution: + integrity: sha512-boy4xPNEtiw6N3abRhBi/e7hNvy3Tt8E9ZRAQrwAGzoCGZS/1wjo9KY7JHhnfnEsG5wSjDbymCozUM9a3ea7OQ== + /@types/semver/7.2.0: + dependencies: + "@types/node": 14.0.5 + dev: true + resolution: + integrity: sha512-TbB0A8ACUWZt3Y6bQPstW9QNbhNeebdgLX4T/ZfkrswAfUzRiXrgd9seol+X379Wa589Pu4UEx9Uok0D4RjRCQ== + /@types/tough-cookie/4.0.0: + dev: false + optional: true + resolution: + integrity: sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A== + /@types/ua-parser-js/0.7.33: + dev: true + resolution: + integrity: sha512-ngUKcHnytUodUCL7C6EZ+lVXUjTMQb+9p/e1JjV5tN9TVzS98lHozWEFRPY1QcCdwFeMsmVWfZ3DPPT/udCyIw== + /@typescript-eslint/eslint-plugin/3.0.1_9ab43492353d1d2184725d8d957a32a6: + dependencies: + "@typescript-eslint/experimental-utils": 3.0.1_eslint@7.1.0+typescript@3.9.3 + "@typescript-eslint/parser": 3.0.1_eslint@7.1.0+typescript@3.9.3 + eslint: 7.1.0 + functional-red-black-tree: 1.0.1 + regexpp: 3.1.0 + semver: 7.3.2 + tsutils: 3.17.1_typescript@3.9.3 + typescript: 3.9.3 + dev: true + engines: + node: ^10.12.0 || >=12.0.0 + peerDependencies: + "@typescript-eslint/parser": ^3.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + resolution: + integrity: sha512-RxGldRQD3hgOK2xtBfNfA5MMV3rn5gVChe+MIf14hKm51jO2urqF64xOyVrGtzThkrd4rS1Kihqx2nkSxkXHvA== + /@typescript-eslint/experimental-utils/3.0.1_eslint@7.1.0+typescript@3.9.3: + dependencies: + "@types/json-schema": 7.0.4 + "@typescript-eslint/typescript-estree": 3.0.1_typescript@3.9.3 + eslint: 7.1.0 + eslint-scope: 5.0.0 + eslint-utils: 2.0.0 + dev: true + engines: + node: ^10.12.0 || >=12.0.0 + peerDependencies: + eslint: "*" + typescript: "*" + resolution: + integrity: sha512-GdwOVz80MOWxbc/br1DC30eeqlxfpVzexHgHtf3L0hcbOu1xAs1wSCNcaBTLMOMZbh1gj/cKZt0eB207FxWfFA== + /@typescript-eslint/parser/3.0.1_eslint@7.1.0+typescript@3.9.3: + dependencies: + "@types/eslint-visitor-keys": 1.0.0 + "@typescript-eslint/experimental-utils": 3.0.1_eslint@7.1.0+typescript@3.9.3 + "@typescript-eslint/typescript-estree": 3.0.1_typescript@3.9.3 + eslint: 7.1.0 + eslint-visitor-keys: 1.1.0 + typescript: 3.9.3 + dev: true + engines: + node: ^10.12.0 || >=12.0.0 + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + resolution: + integrity: sha512-Pn2tDmOc4Ri93VQnT70W0pqQr6i/pEZqIPXfWXm4RuiIprL0t6SG13ViVXHgfScknL2Fm2G4IqXhUzxSRCWXCw== + /@typescript-eslint/typescript-estree/3.0.1_typescript@3.9.3: + dependencies: + debug: 4.1.1 + eslint-visitor-keys: 1.1.0 + glob: 7.1.6 + is-glob: 4.0.1 + lodash: 4.17.15 + semver: 7.3.2 + tsutils: 3.17.1_typescript@3.9.3 + typescript: 3.9.3 + dev: true + engines: + node: ^10.12.0 || >=12.0.0 + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + resolution: + integrity: sha512-FrbMdgVCeIGHKaP9OYTttFTlF8Ds7AkjMca2GzYCE7pVch10PAJc1mmAFt+DfQPgu/2TrLAprg2vI0PK/WTdcg== + /@wessberg/browserslist-generator/1.0.36: + dependencies: + "@types/object-path": 0.11.0 + "@types/semver": 7.2.0 + "@types/ua-parser-js": 0.7.33 + browserslist: 4.12.0 + caniuse-lite: 1.0.30001065 + mdn-browser-compat-data: 1.0.19 + object-path: 0.11.4 + semver: 7.3.2 + ua-parser-js: 0.7.21 + dev: true + engines: + node: ">=8.0.0" + resolution: + integrity: sha512-ZxC4uWO10MAUfLMyED6bpq3jR6+25sW3PRZsM28EquaUUnSZfWgx26YsKA9TWGW/3lFOfc+T8QUAG+ln9owQDA== + /@wessberg/di/2.0.3: + dependencies: + tslib: 1.13.0 + dev: true + engines: + node: ">=9.0.0" + resolution: + integrity: sha512-2mpz/Cw67DCn6Hn3bd5tTfgo3VFLSTzfcffo4DaZobHnORqx4Yxts4XyQLXbZ+ordy5oRmcnoyclcbLnC0/zhA== + /@wessberg/rollup-plugin-ts/1.2.24_rollup@2.10.9+typescript@3.9.3: + dependencies: + "@babel/core": 7.9.6 + "@babel/plugin-proposal-async-generator-functions": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-json-strings": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-object-rest-spread": 7.9.6_@babel+core@7.9.6 + "@babel/plugin-proposal-optional-catch-binding": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-proposal-unicode-property-regex": 7.8.8_@babel+core@7.9.6 + "@babel/plugin-syntax-dynamic-import": 7.8.3_@babel+core@7.9.6 + "@babel/plugin-transform-runtime": 7.9.6_@babel+core@7.9.6 + "@babel/preset-env": 7.9.6_@babel+core@7.9.6 + "@babel/runtime": 7.9.6 + "@rollup/pluginutils": 3.0.10_rollup@2.10.9 + "@types/babel__core": 7.1.7 + "@wessberg/browserslist-generator": 1.0.36 + "@wessberg/stringutil": 1.0.19 + "@wessberg/ts-clone-node": 0.3.8_typescript@3.9.3 + browserslist: 4.12.0 + chalk: 4.0.0 + magic-string: 0.25.7 + rollup: 2.10.9 + slash: 3.0.0 + tslib: 1.13.0 + typescript: 3.9.3 + dev: true + engines: + node: ">=8.0.0" + peerDependencies: + rollup: ">=1.x" + typescript: ">= 3.x" + resolution: + integrity: sha512-lOoojizZRSWt9RY4Y7GBLR4CaCdlavUidL9WKRWGg3Ods0TMYhkvQtCGqXGTzm5dp7WkSqKCQhmY56A7uqb4hw== + /@wessberg/scaffold/1.0.29: + dependencies: + "@types/prettier": 1.19.1 + chalk: 3.0.0 + commander: 4.1.1 + eslint: 6.8.0 + inquirer: 7.1.0 + json5: 2.1.3 + markdown-toc: 1.2.0 + prettier: 1.19.1 + yaml: 1.10.0 + dev: true + engines: + node: ">=8.0.0" + hasBin: true + resolution: + integrity: sha512-cUFcTjcsz9G1isObihV4WnB2mXNihcHNyLgjalyA2eZx10uzWmOfIcelqZRE07QauMaql99DlLFH782MBvihHA== + /@wessberg/stringutil/1.0.19: + dev: true + engines: + node: ">=8.0.0" + resolution: + integrity: sha512-9AZHVXWlpN8Cn9k5BC/O0Dzb9E9xfEMXzYrNunwvkUTvuK7xgQPVRZpLo+jWCOZ5r8oBa8NIrHuPEu1hzbb6bg== + /@wessberg/ts-clone-node/0.3.8_typescript@3.9.3: + dependencies: + typescript: 3.9.3 + dev: true + engines: + node: ">=8.0.0" + peerDependencies: + typescript: ^3.x + resolution: + integrity: sha512-m/+1ox7e2K/KwWFe1K7OpiqTHZnraCG6urhCt4Y5Dxw8dr1NMcV52Q8qvJd0lGfhGhZiVD/SWbUj9i2wKzdK6w== + /@wessberg/ts-config/1.0.10: + dev: true + resolution: + integrity: sha512-ZPmsUwykrpcYeAXh+Pj97hsQjK2IK4B+yFbBx+35KwmfK2y3/Dn8QDcMSiHsglUEsJ5181LdzrnlpJiECepgeg== + /@wessberg/ts-evaluator/0.0.25_typescript@3.9.3: + dependencies: + "@types/node": 13.13.9 + "@types/object-path": 0.11.0 + chalk: 3.0.0 + object-path: 0.11.4 + tslib: 1.13.0 + typescript: 3.9.3 + dev: false + engines: + node: ">=10.1.0" + optionalDependencies: + "@types/jsdom": 16.2.3 + jsdom: 16.2.2 + peerDependencies: + typescript: ^3.x + resolution: + integrity: sha512-/Bo/enrMymuoR3/hnmpOeoaciKt/ILLOrhHa5yhjQNNYDumRYhIx40gjfe/yNwAtZWrVCyB69rBoEy/YGln/+A== + /JSONStream/1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + hasBin: true + resolution: + integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + /abab/2.0.3: + dev: false + optional: true + resolution: + integrity: sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + /acorn-globals/6.0.0: + dependencies: + acorn: 7.2.0 + acorn-walk: 7.1.1 + dev: false + optional: true + resolution: + integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + /acorn-jsx/5.2.0_acorn@7.2.0: + dependencies: + acorn: 7.2.0 + dev: true + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 + resolution: + integrity: sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + /acorn-walk/7.1.1: + engines: + node: ">=0.4.0" + resolution: + integrity: sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== + /acorn/7.2.0: + engines: + node: ">=0.4.0" + hasBin: true + resolution: + integrity: sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== + /add-stream/1.0.0: + dev: true + resolution: + integrity: sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= + /aggregate-error/3.0.1: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + /ajv/6.12.2: + dependencies: + fast-deep-equal: 3.1.1 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.2.2 + resolution: + integrity: sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + /ansi-align/3.0.0: + dependencies: + string-width: 3.1.0 + dev: true + resolution: + integrity: sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + /ansi-escapes/3.2.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + /ansi-escapes/4.3.1: + dependencies: + type-fest: 0.11.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + /ansi-red/0.1.1: + dependencies: + ansi-wrap: 0.1.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + /ansi-regex/2.1.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + /ansi-regex/3.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + /ansi-regex/4.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + /ansi-regex/5.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + /ansi-styles/2.2.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + /ansi-styles/3.2.1: + dependencies: + color-convert: 1.9.3 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + /ansi-styles/4.2.1: + dependencies: + "@types/color-name": 1.1.1 + color-convert: 2.0.1 + engines: + node: ">=8" + resolution: + integrity: sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + /ansi-wrap/0.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-qCJQ3bABXponyoLoLqYDu/pF768= + /any-observable/0.3.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + /any-observable/0.5.1_rxjs@6.5.5: + dependencies: + rxjs: 6.5.5 + dev: true + engines: + node: ">=8" + peerDependencies: + rxjs: "*" + zen-observable: "*" + peerDependenciesMeta: + rxjs: + optional: true + zen-observable: + optional: true + resolution: + integrity: sha512-8zv01bgDOp9PTmRTNCAHTw64TFP2rvlX4LvtNJLachaXY+AjmIvLT47fABNPCiIe89hKiSCo2n5zmPqI9CElPA== + /anymatch/3.1.1: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.2.2 + dev: true + engines: + node: ">= 8" + resolution: + integrity: sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + /arg/4.1.3: + dev: true + resolution: + integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + /argparse/1.0.10: + dependencies: + sprintf-js: 1.0.3 + dev: true + resolution: + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + /array-differ/3.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + /array-find-index/1.0.2: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + /array-ify/1.0.0: + dev: true + resolution: + integrity: sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= + /array-includes/3.1.1: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.5 + is-string: 1.0.5 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + /array-union/1.0.2: + dependencies: + array-uniq: 1.0.3 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + /array-union/2.1.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + /array-uniq/1.0.3: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + /array.prototype.flat/1.2.3: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.5 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + /arrgv/1.0.2: + dev: true + engines: + node: ">=8.0.0" + resolution: + integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw== + /arrify/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + /arrify/2.0.1: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + /asn1/0.2.4: + dependencies: + safer-buffer: 2.1.2 + dev: false + optional: true + resolution: + integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + /assert-plus/1.0.0: + dev: false + engines: + node: ">=0.8" + optional: true + resolution: + integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + /astral-regex/1.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + /astral-regex/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + /async-exit-hook/2.0.1: + dev: true + engines: + node: ">=0.12.0" + resolution: + integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== + /asynckit/0.4.0: + dev: false + optional: true + resolution: + integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k= + /autolinker/0.28.1: + dependencies: + gulp-header: 1.8.12 + dev: true + resolution: + integrity: sha1-BlK0kYgYefB3XazgzcoyM5QqTkc= + /ava/3.8.2: + dependencies: + "@concordance/react": 2.0.0 + acorn: 7.2.0 + acorn-walk: 7.1.1 + ansi-styles: 4.2.1 + arrgv: 1.0.2 + arrify: 2.0.1 + callsites: 3.1.0 + chalk: 4.0.0 + chokidar: 3.4.0 + chunkd: 2.0.1 + ci-info: 2.0.0 + ci-parallel-vars: 1.0.0 + clean-yaml-object: 0.1.0 + cli-cursor: 3.1.0 + cli-truncate: 2.1.0 + code-excerpt: 2.1.1 + common-path-prefix: 3.0.0 + concordance: 4.0.0 + convert-source-map: 1.7.0 + currently-unhandled: 0.4.1 + debug: 4.1.1 + del: 5.1.0 + emittery: 0.6.0 + equal-length: 1.0.1 + figures: 3.2.0 + globby: 11.0.0 + ignore-by-default: 1.0.1 + import-local: 3.0.2 + indent-string: 4.0.0 + is-error: 2.2.2 + is-plain-object: 3.0.0 + is-promise: 4.0.0 + lodash: 4.17.15 + matcher: 3.0.0 + md5-hex: 3.0.1 + mem: 6.1.0 + ms: 2.1.2 + ora: 4.0.4 + p-map: 4.0.0 + picomatch: 2.2.2 + pkg-conf: 3.1.0 + plur: 4.0.0 + pretty-ms: 7.0.0 + read-pkg: 5.2.0 + resolve-cwd: 3.0.0 + slash: 3.0.0 + source-map-support: 0.5.19 + stack-utils: 2.0.2 + strip-ansi: 6.0.0 + supertap: 1.0.0 + temp-dir: 2.0.0 + trim-off-newlines: 1.0.1 + update-notifier: 4.1.0 + write-file-atomic: 3.0.3 + yargs: 15.3.1 + dev: true + engines: + node: ">=10.18.0 <11 || >=12.14.0 <12.16.0 || >=12.16.0 <13 || >=13.5.0 <14 || >=14.0.0" + hasBin: true + resolution: + integrity: sha512-sph3oUsVTGsq4qbgeWys03QKCmXjkZUO3oPnFWXEW6g1SReCY9vuONGghMgw1G6VOzkg1k+niqJsOzwfO8h9Ng== + /aws-sign2/0.7.0: + dev: false + optional: true + resolution: + integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + /aws4/1.10.0: + dev: false + optional: true + resolution: + integrity: sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + /babel-plugin-dynamic-import-node/2.3.3: + dependencies: + object.assign: 4.1.0 + dev: true + resolution: + integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + /balanced-match/1.0.0: + dev: true + resolution: + integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + /bcrypt-pbkdf/1.0.2: + dependencies: + tweetnacl: 0.14.5 + dev: false + optional: true + resolution: + integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + /binary-extensions/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + /blueimp-md5/2.16.0: + dev: true + resolution: + integrity: sha512-j4nzWIqEFpLSbdhUApHRGDwfXbV8ALhqOn+FY5L6XBdKPAXU9BpGgFSbDsgqogfqPPR9R2WooseWCsfhfEC6uQ== + /boxen/4.2.0: + dependencies: + ansi-align: 3.0.0 + camelcase: 5.3.1 + chalk: 3.0.0 + cli-boxes: 2.2.0 + string-width: 4.2.0 + term-size: 2.2.0 + type-fest: 0.8.1 + widest-line: 3.1.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + /brace-expansion/1.1.11: + dependencies: + balanced-match: 1.0.0 + concat-map: 0.0.1 + dev: true + resolution: + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + /braces/3.0.2: + dependencies: + fill-range: 7.0.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + /browser-process-hrtime/1.0.0: + dev: false + optional: true + resolution: + integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + /browserslist/4.12.0: + dependencies: + caniuse-lite: 1.0.30001065 + electron-to-chromium: 1.3.451 + node-releases: 1.1.56 + pkg-up: 2.0.0 + dev: true + hasBin: true + resolution: + integrity: sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== + /buffer-from/1.1.1: + dev: true + resolution: + integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + /builtins/1.0.3: + dev: true + resolution: + integrity: sha1-y5T662HIaWRR2zZTThQi+U8K7og= + /cacheable-request/6.1.0: + dependencies: + clone-response: 1.0.2 + get-stream: 5.1.0 + http-cache-semantics: 4.1.0 + keyv: 3.1.0 + lowercase-keys: 2.0.0 + normalize-url: 4.5.0 + responselike: 1.0.2 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + /callsites/3.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + /camelcase-keys/2.1.0: + dependencies: + camelcase: 2.1.1 + map-obj: 1.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + /camelcase-keys/4.2.0: + dependencies: + camelcase: 4.1.0 + map-obj: 2.0.0 + quick-lru: 1.1.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= + /camelcase-keys/6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.1.0 + quick-lru: 4.0.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + /camelcase/2.1.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + /camelcase/4.1.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + /camelcase/5.3.1: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + /camelcase/6.0.0: + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + /caniuse-lite/1.0.30001065: + dev: true + resolution: + integrity: sha512-DDxCLgJ266YnAHQv0jS1wdOaihRFF52Zgmlag39sQJVy2H46oROpJp4hITstqhdB8qnHSrKNoAEkQA9L/oYF9A== + /caseless/0.12.0: + dev: false + optional: true + resolution: + integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + /chalk/1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + /chalk/2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + /chalk/3.0.0: + dependencies: + ansi-styles: 4.2.1 + supports-color: 7.1.0 + engines: + node: ">=8" + resolution: + integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + /chalk/4.0.0: + dependencies: + ansi-styles: 4.2.1 + supports-color: 7.1.0 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + /chardet/0.7.0: + dev: true + resolution: + integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + /chokidar/3.4.0: + dependencies: + anymatch: 3.1.1 + braces: 3.0.2 + glob-parent: 5.1.1 + is-binary-path: 2.1.0 + is-glob: 4.0.1 + normalize-path: 3.0.0 + readdirp: 3.4.0 + dev: true + engines: + node: ">= 8.10.0" + optionalDependencies: + fsevents: 2.1.3 + resolution: + integrity: sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + /chunkd/2.0.1: + dev: true + resolution: + integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ== + /ci-info/2.0.0: + dev: true + resolution: + integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + /ci-parallel-vars/1.0.0: + dev: true + resolution: + integrity: sha512-u6dx20FBXm+apMi+5x7UVm6EH7BL1gc4XrcnQewjcB7HWRcor/V5qWc3RG2HwpgDJ26gIi2DSEu3B7sXynAw/g== + /clean-stack/2.2.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + /clean-yaml-object/0.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g= + /cli-boxes/2.2.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + /cli-cursor/2.1.0: + dependencies: + restore-cursor: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + /cli-cursor/3.1.0: + dependencies: + restore-cursor: 3.1.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + /cli-spinners/2.3.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w== + /cli-truncate/0.2.1: + dependencies: + slice-ansi: 0.0.4 + string-width: 1.0.2 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + /cli-truncate/2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + /cli-width/2.2.1: + dev: true + resolution: + integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + /cliui/6.0.0: + dependencies: + string-width: 4.2.0 + strip-ansi: 6.0.0 + wrap-ansi: 6.2.0 + dev: true + resolution: + integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + /clone-response/1.0.2: + dependencies: + mimic-response: 1.0.1 + dev: true + resolution: + integrity: sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + /clone/1.0.4: + dev: true + engines: + node: ">=0.8" + resolution: + integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + /code-excerpt/2.1.1: + dependencies: + convert-to-spaces: 1.0.2 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw== + /code-point-at/1.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + /coffee-script/1.12.7: + deprecated: CoffeeScript on NPM has moved to "coffeescript" (no hyphen) + dev: true + engines: + node: ">=0.8.0" + hasBin: true + resolution: + integrity: sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw== + /color-convert/1.9.3: + dependencies: + color-name: 1.1.3 + dev: true + resolution: + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + /color-convert/2.0.1: + dependencies: + color-name: 1.1.4 + engines: + node: ">=7.0.0" + resolution: + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + /color-name/1.1.3: + dev: true + resolution: + integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + /color-name/1.1.4: + resolution: + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + /combined-stream/1.0.8: + dependencies: + delayed-stream: 1.0.0 + dev: false + engines: + node: ">= 0.8" + optional: true + resolution: + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + /commander/2.20.3: + dev: true + optional: true + resolution: + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + /commander/4.1.1: + dev: true + engines: + node: ">= 6" + resolution: + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + /comment-parser/0.7.4: + dev: true + engines: + node: ">= 6.0.0" + resolution: + integrity: sha512-Nnl77/mt6sj1BiYSVMeMWzvD0183F2MFOJyFRmZHimUVDYS9J40AvXpiFA7RpU5pQH+HkvYc0dnsHpwW2xmbyQ== + /common-path-prefix/3.0.0: + dev: true + resolution: + integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + /compare-func/1.3.4: + dependencies: + array-ify: 1.0.0 + dot-prop: 3.0.0 + dev: true + resolution: + integrity: sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q== + /compare-versions/3.6.0: + dev: true + resolution: + integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + /concat-map/0.0.1: + dev: true + resolution: + integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + /concat-stream/1.6.2: + dependencies: + buffer-from: 1.1.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: true + engines: + "0": node >= 0.8 + resolution: + integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + /concat-with-sourcemaps/1.1.0: + dependencies: + source-map: 0.6.1 + dev: true + resolution: + integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + /concordance/4.0.0: + dependencies: + date-time: 2.1.0 + esutils: 2.0.3 + fast-diff: 1.2.0 + js-string-escape: 1.0.1 + lodash.clonedeep: 4.5.0 + lodash.flattendeep: 4.4.0 + lodash.islength: 4.0.1 + lodash.merge: 4.6.2 + md5-hex: 2.0.0 + semver: 5.7.1 + well-known-symbols: 2.0.0 + dev: true + engines: + node: ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + resolution: + integrity: sha512-l0RFuB8RLfCS0Pt2Id39/oCPykE01pyxgAFypWTlaGRgvLkZrtczZ8atEHpTeEIW+zYWXTBuA9cCSeEOScxReQ== + /configstore/5.0.1: + dependencies: + dot-prop: 5.2.0 + graceful-fs: 4.2.4 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + /contains-path/0.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + /conventional-changelog-angular/5.0.10: + dependencies: + compare-func: 1.3.4 + q: 1.5.1 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-k7RPPRs0vp8+BtPsM9uDxRl6KcgqtCJmzRD1wRtgqmhQ96g8ifBGo9O/TZBG23jqlXS/rg8BKRDELxfnQQGiaA== + /conventional-changelog-core/4.1.7: + dependencies: + add-stream: 1.0.0 + conventional-changelog-writer: 4.0.16 + conventional-commits-parser: 3.1.0 + dateformat: 3.0.3 + get-pkg-repo: 1.4.0 + git-raw-commits: 2.0.0 + git-remote-origin-url: 2.0.0 + git-semver-tags: 4.0.0 + lodash: 4.17.15 + normalize-package-data: 2.5.0 + q: 1.5.1 + read-pkg: 3.0.0 + read-pkg-up: 3.0.0 + shelljs: 0.8.4 + through2: 3.0.1 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-UBvSrQR2RdKbSQKh7RhueiiY4ZAIOW3+CSWdtKOwRv+KxIMNFKm1rOcGBFx0eA8AKhGkkmmacoTWJTqyz7Q0VA== + /conventional-changelog-writer/4.0.16: + dependencies: + compare-func: 1.3.4 + conventional-commits-filter: 2.0.6 + dateformat: 3.0.3 + handlebars: 4.7.6 + json-stringify-safe: 5.0.1 + lodash: 4.17.15 + meow: 7.0.1 + semver: 6.3.0 + split: 1.0.1 + through2: 3.0.1 + dev: true + engines: + node: ">=10" + hasBin: true + resolution: + integrity: sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ== + /conventional-commits-filter/2.0.6: + dependencies: + lodash.ismatch: 4.4.0 + modify-values: 1.0.1 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw== + /conventional-commits-parser/3.1.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + lodash: 4.17.15 + meow: 7.0.1 + split2: 2.2.0 + through2: 3.0.1 + trim-off-newlines: 1.0.1 + dev: true + engines: + node: ">=10" + hasBin: true + resolution: + integrity: sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA== + /convert-source-map/1.7.0: + dependencies: + safe-buffer: 5.1.2 + dev: true + resolution: + integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + /convert-to-spaces/1.0.2: + dev: true + engines: + node: ">= 4" + resolution: + integrity: sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU= + /core-js-compat/3.6.5: + dependencies: + browserslist: 4.12.0 + semver: 7.0.0 + dev: true + resolution: + integrity: sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + /core-util-is/1.0.2: + resolution: + integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + /cosmiconfig/6.0.0: + dependencies: + "@types/parse-json": 4.0.0 + import-fresh: 3.2.1 + parse-json: 5.0.0 + path-type: 4.0.0 + yaml: 1.10.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + /cross-spawn/6.0.5: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + engines: + node: ">=4.8" + resolution: + integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + /cross-spawn/7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + engines: + node: ">= 8" + resolution: + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + /crypto-random-string/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + /cssom/0.3.8: + dev: false + optional: true + resolution: + integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + /cssom/0.4.4: + dev: false + optional: true + resolution: + integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + /cssstyle/2.3.0: + dependencies: + cssom: 0.3.8 + dev: false + engines: + node: ">=8" + optional: true + resolution: + integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + /currently-unhandled/0.4.1: + dependencies: + array-find-index: 1.0.2 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-mI3zP+qxke95mmE2nddsF635V+o= + /dargs/4.1.0: + dependencies: + number-is-nan: 1.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= + /dashdash/1.14.1: + dependencies: + assert-plus: 1.0.0 + dev: false + engines: + node: ">=0.10" + optional: true + resolution: + integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + /data-urls/2.0.0: + dependencies: + abab: 2.0.3 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.1.0 + dev: false + engines: + node: ">=10" + optional: true + resolution: + integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + /date-fns/1.30.1: + dev: true + resolution: + integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + /date-time/2.1.0: + dependencies: + time-zone: 1.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g== + /dateformat/3.0.3: + dev: true + resolution: + integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + /debug/2.6.9: + dependencies: + ms: 2.0.0 + dev: true + resolution: + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + /debug/4.1.1: + dependencies: + ms: 2.1.2 + dev: true + resolution: + integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + /decamelize-keys/1.1.0: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + /decamelize/1.2.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + /decimal.js/10.2.0: + dev: false + optional: true + resolution: + integrity: sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== + /decompress-response/3.3.0: + dependencies: + mimic-response: 1.0.1 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + /deep-extend/0.6.0: + dev: true + engines: + node: ">=4.0.0" + resolution: + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + /deep-is/0.1.3: + resolution: + integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + /defaults/1.0.3: + dependencies: + clone: 1.0.4 + dev: true + resolution: + integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + /defer-to-connect/1.1.3: + dev: true + resolution: + integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + /define-properties/1.1.3: + dependencies: + object-keys: 1.1.1 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + /del/4.1.1: + dependencies: + "@types/glob": 7.1.1 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + /del/5.1.0: + dependencies: + globby: 10.0.2 + graceful-fs: 4.2.4 + is-glob: 4.0.1 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.2 + p-map: 3.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + /delayed-stream/1.0.0: + dev: false + engines: + node: ">=0.4.0" + optional: true + resolution: + integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + /diacritics-map/0.1.0: + dev: true + engines: + node: ">=0.8.0" + resolution: + integrity: sha1-bfwP+dAQAKLt8oZTccrDFulJd68= + /diff/4.0.2: + dev: true + engines: + node: ">=0.3.1" + resolution: + integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + /dir-glob/3.0.1: + dependencies: + path-type: 4.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + /doctrine/1.5.0: + dependencies: + esutils: 2.0.3 + isarray: 1.0.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + /doctrine/3.0.0: + dependencies: + esutils: 2.0.3 + dev: true + engines: + node: ">=6.0.0" + resolution: + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + /domexception/2.0.1: + dependencies: + webidl-conversions: 5.0.0 + dev: false + engines: + node: ">=8" + optional: true + resolution: + integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + /dot-prop/3.0.0: + dependencies: + is-obj: 1.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-G3CK8JSknJoOfbyteQq6U52sEXc= + /dot-prop/5.2.0: + dependencies: + is-obj: 2.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + /duplexer3/0.1.4: + dev: true + resolution: + integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + /ecc-jsbn/0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: false + optional: true + resolution: + integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + /electron-to-chromium/1.3.451: + dev: true + resolution: + integrity: sha512-2fvco0F2bBIgqzO8GRP0Jt/91pdrf9KfZ5FsmkYkjERmIJG585cFeFZV4+CO6oTmU3HmCTgfcZuEa7kW8VUh3A== + /elegant-spinner/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + /emittery/0.6.0: + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-6EMRGr9KzYWp8DzHFZsKVZBsMO6QhAeHMeHND8rhyBNCHKMLpgW9tZv40bwN3rAIKRS5CxcK8oLRKUJSB9h7yQ== + /emoji-regex/7.0.3: + dev: true + resolution: + integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + /emoji-regex/8.0.0: + dev: true + resolution: + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + /end-of-stream/1.4.4: + dependencies: + once: 1.4.0 + dev: true + resolution: + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + /equal-length/1.0.1: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-IcoRLUirJLTh5//A5TOdMf38J0w= + /error-ex/1.3.2: + dependencies: + is-arrayish: 0.2.1 + dev: true + resolution: + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + /es-abstract/1.17.5: + dependencies: + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.1 + is-callable: 1.1.5 + is-regex: 1.0.5 + object-inspect: 1.7.0 + object-keys: 1.1.1 + object.assign: 4.1.0 + string.prototype.trimleft: 2.1.2 + string.prototype.trimright: 2.1.2 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + /es-to-primitive/1.2.1: + dependencies: + is-callable: 1.1.5 + is-date-object: 1.0.2 + is-symbol: 1.0.3 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + /escape-goat/2.1.1: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + /escape-goat/3.0.0: + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== + /escape-string-regexp/1.0.5: + dev: true + engines: + node: ">=0.8.0" + resolution: + integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + /escape-string-regexp/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + /escape-string-regexp/4.0.0: + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + /escodegen/1.14.1: + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + dev: false + engines: + node: ">=4.0" + hasBin: true + optional: true + optionalDependencies: + source-map: 0.6.1 + resolution: + integrity: sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + /eslint-config-prettier/6.11.0_eslint@7.1.0: + dependencies: + eslint: 7.1.0 + get-stdin: 6.0.0 + dev: true + hasBin: true + peerDependencies: + eslint: ">=3.14.1" + resolution: + integrity: sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== + /eslint-import-resolver-node/0.3.3: + dependencies: + debug: 2.6.9 + resolve: 1.17.0 + dev: true + resolution: + integrity: sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== + /eslint-module-utils/2.6.0: + dependencies: + debug: 2.6.9 + pkg-dir: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + /eslint-plugin-import/2.20.2_eslint@7.1.0: + dependencies: + array-includes: 3.1.1 + array.prototype.flat: 1.2.3 + contains-path: 0.1.0 + debug: 2.6.9 + doctrine: 1.5.0 + eslint: 7.1.0 + eslint-import-resolver-node: 0.3.3 + eslint-module-utils: 2.6.0 + has: 1.0.3 + minimatch: 3.0.4 + object.values: 1.1.1 + read-pkg-up: 2.0.0 + resolve: 1.17.0 + dev: true + engines: + node: ">=4" + peerDependencies: + eslint: 2.x - 6.x + resolution: + integrity: sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== + /eslint-plugin-jsdoc/25.4.2_eslint@7.1.0: + dependencies: + comment-parser: 0.7.4 + debug: 4.1.1 + eslint: 7.1.0 + jsdoctypeparser: 6.1.0 + lodash: 4.17.15 + regextras: 0.7.1 + semver: 6.3.0 + spdx-expression-parse: 3.0.1 + dev: true + engines: + node: ">=8" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 + resolution: + integrity: sha512-IFZnxBBt2fGYZ9yaLt+KP/jHa6u8LQPwH9QzRlhbU+WKBq7ou6XTXoxG0EZVn9ohcbJ0sM8X70iRRX/J3Wu37w== + /eslint-scope/5.0.0: + dependencies: + esrecurse: 4.2.1 + estraverse: 4.3.0 + dev: true + engines: + node: ">=8.0.0" + resolution: + integrity: sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + /eslint-utils/1.4.3: + dependencies: + eslint-visitor-keys: 1.1.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + /eslint-utils/2.0.0: + dependencies: + eslint-visitor-keys: 1.1.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + /eslint-visitor-keys/1.1.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + /eslint/6.8.0: + dependencies: + "@babel/code-frame": 7.8.3 + ajv: 6.12.2 + chalk: 2.4.2 + cross-spawn: 6.0.5 + debug: 4.1.1 + doctrine: 3.0.0 + eslint-scope: 5.0.0 + eslint-utils: 1.4.3 + eslint-visitor-keys: 1.1.0 + espree: 6.2.1 + esquery: 1.3.1 + esutils: 2.0.3 + file-entry-cache: 5.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.1 + globals: 12.4.0 + ignore: 4.0.6 + import-fresh: 3.2.1 + imurmurhash: 0.1.4 + inquirer: 7.1.0 + is-glob: 4.0.1 + js-yaml: 3.14.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.3.0 + lodash: 4.17.15 + minimatch: 3.0.4 + mkdirp: 0.5.5 + natural-compare: 1.4.0 + optionator: 0.8.3 + progress: 2.0.3 + regexpp: 2.0.1 + semver: 6.3.0 + strip-ansi: 5.2.0 + strip-json-comments: 3.1.0 + table: 5.4.6 + text-table: 0.2.0 + v8-compile-cache: 2.1.0 + dev: true + engines: + node: ^8.10.0 || ^10.13.0 || >=11.10.1 + hasBin: true + resolution: + integrity: sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + /eslint/7.1.0: + dependencies: + "@babel/code-frame": 7.8.3 + ajv: 6.12.2 + chalk: 4.0.0 + cross-spawn: 7.0.3 + debug: 4.1.1 + doctrine: 3.0.0 + eslint-scope: 5.0.0 + eslint-utils: 2.0.0 + eslint-visitor-keys: 1.1.0 + espree: 7.0.0 + esquery: 1.3.1 + esutils: 2.0.3 + file-entry-cache: 5.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.1 + globals: 12.4.0 + ignore: 4.0.6 + import-fresh: 3.2.1 + imurmurhash: 0.1.4 + inquirer: 7.1.0 + is-glob: 4.0.1 + js-yaml: 3.14.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash: 4.17.15 + minimatch: 3.0.4 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.1.0 + semver: 7.3.2 + strip-ansi: 6.0.0 + strip-json-comments: 3.1.0 + table: 5.4.6 + text-table: 0.2.0 + v8-compile-cache: 2.1.0 + dev: true + engines: + node: ^10.12.0 || >=12.0.0 + hasBin: true + resolution: + integrity: sha512-DfS3b8iHMK5z/YLSme8K5cge168I8j8o1uiVmFCgnnjxZQbCGyraF8bMl7Ju4yfBmCuxD7shOF7eqGkcuIHfsA== + /espree/6.2.1: + dependencies: + acorn: 7.2.0 + acorn-jsx: 5.2.0_acorn@7.2.0 + eslint-visitor-keys: 1.1.0 + dev: true + engines: + node: ">=6.0.0" + resolution: + integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + /espree/7.0.0: + dependencies: + acorn: 7.2.0 + acorn-jsx: 5.2.0_acorn@7.2.0 + eslint-visitor-keys: 1.1.0 + dev: true + engines: + node: ^10.12.0 || >=12.0.0 + resolution: + integrity: sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw== + /esprima/4.0.1: + engines: + node: ">=4" + hasBin: true + resolution: + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + /esquery/1.3.1: + dependencies: + estraverse: 5.1.0 + dev: true + engines: + node: ">=0.10" + resolution: + integrity: sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + /esrecurse/4.2.1: + dependencies: + estraverse: 4.3.0 + dev: true + engines: + node: ">=4.0" + resolution: + integrity: sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + /estraverse/4.3.0: + engines: + node: ">=4.0" + resolution: + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + /estraverse/5.1.0: + dev: true + engines: + node: ">=4.0" + resolution: + integrity: sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + /estree-walker/1.0.1: + dev: true + resolution: + integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + /esutils/2.0.3: + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + /execa/2.1.0: + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.1.0 + is-stream: 2.0.0 + merge-stream: 2.0.0 + npm-run-path: 3.1.0 + onetime: 5.1.0 + p-finally: 2.0.1 + signal-exit: 3.0.3 + strip-final-newline: 2.0.0 + dev: true + engines: + node: ^8.12.0 || >=9.7.0 + resolution: + integrity: sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== + /execa/4.0.2: + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.1.0 + human-signals: 1.1.1 + is-stream: 2.0.0 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.0 + signal-exit: 3.0.3 + strip-final-newline: 2.0.0 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== + /expand-range/1.8.2: + dependencies: + fill-range: 2.2.4 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + /extend-shallow/2.0.1: + dependencies: + is-extendable: 0.1.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + /extend/3.0.2: + resolution: + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + /external-editor/3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + /extsprintf/1.3.0: + dev: false + engines: + "0": node >=0.6.0 + optional: true + resolution: + integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + /fast-deep-equal/3.1.1: + resolution: + integrity: sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + /fast-diff/1.2.0: + dev: true + resolution: + integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + /fast-glob/3.2.2: + dependencies: + "@nodelib/fs.stat": 2.0.3 + "@nodelib/fs.walk": 1.2.4 + glob-parent: 5.1.1 + merge2: 1.3.0 + micromatch: 4.0.2 + picomatch: 2.2.2 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== + /fast-json-stable-stringify/2.1.0: + resolution: + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + /fast-levenshtein/2.0.6: + resolution: + integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + /fastq/1.8.0: + dependencies: + reusify: 1.0.4 + dev: true + resolution: + integrity: sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + /figures/1.7.0: + dependencies: + escape-string-regexp: 1.0.5 + object-assign: 4.1.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + /figures/2.0.0: + dependencies: + escape-string-regexp: 1.0.5 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + /figures/3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + /file-entry-cache/5.0.1: + dependencies: + flat-cache: 2.0.1 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + /fill-range/2.2.4: + dependencies: + is-number: 2.1.0 + isobject: 2.1.0 + randomatic: 3.1.1 + repeat-element: 1.1.3 + repeat-string: 1.6.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + /fill-range/7.0.1: + dependencies: + to-regex-range: 5.0.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + /find-up/1.1.2: + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + /find-up/2.1.0: + dependencies: + locate-path: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + /find-up/3.0.0: + dependencies: + locate-path: 3.0.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + /find-up/4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + /find-versions/3.2.0: + dependencies: + semver-regex: 2.0.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + /flat-cache/2.0.1: + dependencies: + flatted: 2.0.2 + rimraf: 2.6.3 + write: 1.0.3 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + /flatted/2.0.2: + dev: true + resolution: + integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + /for-in/1.0.2: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + /forever-agent/0.6.1: + dev: false + optional: true + resolution: + integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + /form-data/2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.27 + dev: false + engines: + node: ">= 0.12" + optional: true + resolution: + integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + /fs-access/1.0.1: + dependencies: + null-check: 1.0.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o= + /fs.realpath/1.0.0: + dev: true + resolution: + integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + /fsevents/2.1.3: + dev: true + engines: + node: ^8.16.0 || ^10.6.0 || >=11.0.0 + optional: true + os: + - darwin + resolution: + integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + /function-bind/1.1.1: + dev: true + resolution: + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + /functional-red-black-tree/1.0.1: + dev: true + resolution: + integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + /gensync/1.0.0-beta.1: + dev: true + engines: + node: ">=6.9.0" + resolution: + integrity: sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + /get-caller-file/2.0.5: + dev: true + engines: + node: 6.* || 8.* || >= 10.* + resolution: + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + /get-pkg-repo/1.4.0: + dependencies: + hosted-git-info: 2.8.8 + meow: 3.7.0 + normalize-package-data: 2.5.0 + parse-github-repo-url: 1.4.1 + through2: 2.0.5 + dev: true + hasBin: true + resolution: + integrity: sha1-xztInAbYDMVTbCyFP54FIyBWly0= + /get-stdin/4.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + /get-stdin/6.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + /get-stream/4.1.0: + dependencies: + pump: 3.0.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + /get-stream/5.1.0: + dependencies: + pump: 3.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + /getpass/0.1.7: + dependencies: + assert-plus: 1.0.0 + dev: false + optional: true + resolution: + integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + /git-raw-commits/2.0.0: + dependencies: + dargs: 4.1.0 + lodash.template: 4.5.0 + meow: 4.0.1 + split2: 2.2.0 + through2: 2.0.5 + dev: true + engines: + node: ">=6.9.0" + hasBin: true + resolution: + integrity: sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== + /git-remote-origin-url/2.0.0: + dependencies: + gitconfiglocal: 1.0.0 + pify: 2.3.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= + /git-semver-tags/4.0.0: + dependencies: + meow: 7.0.1 + semver: 6.3.0 + dev: true + engines: + node: ">=10" + hasBin: true + resolution: + integrity: sha512-LajaAWLYVBff+1NVircURJFL8TQ3EMIcLAfHisWYX/nPoMwnTYfWAznQDmMujlLqoD12VtLmoSrF1sQ5MhimEQ== + /gitconfiglocal/1.0.0: + dependencies: + ini: 1.3.5 + dev: true + resolution: + integrity: sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= + /github-url-from-git/1.5.0: + dev: true + resolution: + integrity: sha1-+YX+3MCpqledyI16/waNVcxiUaA= + /glob-parent/5.1.1: + dependencies: + is-glob: 4.0.1 + dev: true + engines: + node: ">= 6" + resolution: + integrity: sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + /glob/7.1.6: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + resolution: + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + /global-dirs/2.0.1: + dependencies: + ini: 1.3.5 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== + /globals/11.12.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + /globals/12.4.0: + dependencies: + type-fest: 0.8.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + /globby/10.0.2: + dependencies: + "@types/glob": 7.1.1 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.2 + glob: 7.1.6 + ignore: 5.1.6 + merge2: 1.3.0 + slash: 3.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + /globby/11.0.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.2 + ignore: 5.1.6 + merge2: 1.3.0 + slash: 3.0.0 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg== + /globby/6.1.0: + dependencies: + array-union: 1.0.2 + glob: 7.1.6 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + /got/9.6.0: + dependencies: + "@sindresorhus/is": 0.14.0 + "@szmarczak/http-timer": 1.1.2 + cacheable-request: 6.1.0 + decompress-response: 3.3.0 + duplexer3: 0.1.4 + get-stream: 4.1.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 1.1.0 + to-readable-stream: 1.0.0 + url-parse-lax: 3.0.0 + dev: true + engines: + node: ">=8.6" + resolution: + integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + /graceful-fs/4.2.4: + dev: true + resolution: + integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + /gray-matter/2.1.1: + dependencies: + ansi-red: 0.1.1 + coffee-script: 1.12.7 + extend-shallow: 2.0.1 + js-yaml: 3.14.0 + toml: 2.3.6 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-MELZrewqHe1qdwep7SOA+KF6Qw4= + /gulp-header/1.8.12: + dependencies: + concat-with-sourcemaps: 1.1.0 + lodash.template: 4.5.0 + through2: 2.0.5 + deprecated: Removed event-stream from gulp-header + dev: true + resolution: + integrity: sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== + /handlebars/4.7.6: + dependencies: + minimist: 1.2.5 + neo-async: 2.6.1 + source-map: 0.6.1 + wordwrap: 1.0.0 + dev: true + engines: + node: ">=0.4.7" + hasBin: true + optionalDependencies: + uglify-js: 3.9.3 + resolution: + integrity: sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + /har-schema/2.0.0: + dev: false + engines: + node: ">=4" + optional: true + resolution: + integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + /har-validator/5.1.3: + dependencies: + ajv: 6.12.2 + har-schema: 2.0.0 + dev: false + engines: + node: ">=6" + optional: true + resolution: + integrity: sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + /hard-rejection/2.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + /has-ansi/2.0.0: + dependencies: + ansi-regex: 2.1.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + /has-flag/3.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + /has-flag/4.0.0: + engines: + node: ">=8" + resolution: + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + /has-symbols/1.0.1: + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + /has-yarn/2.1.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + /has/1.0.3: + dependencies: + function-bind: 1.1.1 + dev: true + engines: + node: ">= 0.4.0" + resolution: + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + /hosted-git-info/2.8.8: + dev: true + resolution: + integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + /hosted-git-info/3.0.4: + dependencies: + lru-cache: 5.1.1 + dev: true + resolution: + integrity: sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ== + /html-encoding-sniffer/2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + dev: false + engines: + node: ">=10" + optional: true + resolution: + integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + /http-cache-semantics/4.1.0: + dev: true + resolution: + integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + /http-signature/1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.1 + sshpk: 1.16.1 + dev: false + engines: + node: ">=0.8" + npm: ">=1.3.7" + optional: true + resolution: + integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + /human-signals/1.1.1: + dev: true + engines: + node: ">=8.12.0" + resolution: + integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + /husky/4.2.5: + dependencies: + chalk: 4.0.0 + ci-info: 2.0.0 + compare-versions: 3.6.0 + cosmiconfig: 6.0.0 + find-versions: 3.2.0 + opencollective-postinstall: 2.0.2 + pkg-dir: 4.2.0 + please-upgrade-node: 3.2.0 + slash: 3.0.0 + which-pm-runs: 1.0.0 + dev: true + engines: + node: ">=10" + hasBin: true + requiresBuild: true + resolution: + integrity: sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== + /iconv-lite/0.4.24: + dependencies: + safer-buffer: 2.1.2 + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + /ignore-by-default/1.0.1: + dev: true + resolution: + integrity: sha1-SMptcvbGo68Aqa1K5odr44ieKwk= + /ignore/4.0.6: + dev: true + engines: + node: ">= 4" + resolution: + integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + /ignore/5.1.6: + dev: true + engines: + node: ">= 4" + resolution: + integrity: sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA== + /import-fresh/3.2.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + /import-lazy/2.1.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + /import-local/3.0.2: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + engines: + node: ">=8" + hasBin: true + resolution: + integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + /imurmurhash/0.1.4: + dev: true + engines: + node: ">=0.8.19" + resolution: + integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o= + /indent-string/2.1.0: + dependencies: + repeating: 2.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + /indent-string/3.2.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + /indent-string/4.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + /inflight/1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + resolution: + integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + /inherits/2.0.4: + dev: true + resolution: + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + /ini/1.3.5: + dev: true + resolution: + integrity: sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + /inquirer-autosubmit-prompt/0.2.0: + dependencies: + chalk: 2.4.2 + inquirer: 6.5.2 + rxjs: 6.5.5 + dev: true + resolution: + integrity: sha512-mzNrusCk5L6kSzlN0Ioddn8yzrhYNLli+Sn2ZxMuLechMYAzakiFCIULxsxlQb5YKzthLGfrFACcWoAvM7p04Q== + /inquirer/6.5.2: + dependencies: + ansi-escapes: 3.2.0 + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-width: 2.2.1 + external-editor: 3.1.0 + figures: 2.0.0 + lodash: 4.17.15 + mute-stream: 0.0.7 + run-async: 2.4.1 + rxjs: 6.5.5 + string-width: 2.1.1 + strip-ansi: 5.2.0 + through: 2.3.8 + dev: true + engines: + node: ">=6.0.0" + resolution: + integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + /inquirer/7.1.0: + dependencies: + ansi-escapes: 4.3.1 + chalk: 3.0.0 + cli-cursor: 3.1.0 + cli-width: 2.2.1 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.15 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.5.5 + string-width: 4.2.0 + strip-ansi: 6.0.0 + through: 2.3.8 + dev: true + engines: + node: ">=6.0.0" + resolution: + integrity: sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + /interpret/1.2.0: + dev: true + engines: + node: ">= 0.10" + resolution: + integrity: sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + /invariant/2.2.4: + dependencies: + loose-envify: 1.4.0 + dev: true + resolution: + integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + /ip-regex/2.1.0: + dev: false + engines: + node: ">=4" + optional: true + resolution: + integrity: sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + /ip-regex/4.1.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== + /irregular-plurals/3.2.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-YqTdPLfwP7YFN0SsD3QUVCkm9ZG2VzOXv3DOrw5G5mkMbVwptTwVcFv7/C0vOpBmgTxAeTG19XpUs1E522LW9Q== + /is-arrayish/0.2.1: + dev: true + resolution: + integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + /is-binary-path/2.1.0: + dependencies: + binary-extensions: 2.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + /is-buffer/1.1.6: + dev: true + resolution: + integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + /is-callable/1.1.5: + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + /is-ci/2.0.0: + dependencies: + ci-info: 2.0.0 + dev: true + hasBin: true + resolution: + integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + /is-date-object/1.0.2: + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + /is-docker/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + /is-error/2.2.2: + dev: true + resolution: + integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg== + /is-extendable/0.1.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + /is-extendable/1.0.1: + dependencies: + is-plain-object: 2.0.4 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + /is-extglob/2.1.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + /is-finite/1.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + /is-fullwidth-code-point/1.0.0: + dependencies: + number-is-nan: 1.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + /is-fullwidth-code-point/2.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + /is-fullwidth-code-point/3.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + /is-glob/4.0.1: + dependencies: + is-extglob: 2.1.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + /is-installed-globally/0.3.2: + dependencies: + global-dirs: 2.0.1 + is-path-inside: 3.0.2 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== + /is-interactive/1.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + /is-npm/4.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== + /is-number/2.1.0: + dependencies: + kind-of: 3.2.2 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + /is-number/4.0.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + /is-number/7.0.0: + dev: true + engines: + node: ">=0.12.0" + resolution: + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + /is-obj/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + /is-obj/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + /is-observable/1.1.0: + dependencies: + symbol-observable: 1.2.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + /is-path-cwd/2.2.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + /is-path-in-cwd/2.1.0: + dependencies: + is-path-inside: 2.1.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + /is-path-inside/2.1.0: + dependencies: + path-is-inside: 1.0.2 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + /is-path-inside/3.0.2: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + /is-plain-obj/1.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + /is-plain-object/2.0.4: + dependencies: + isobject: 3.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + /is-plain-object/3.0.0: + dependencies: + isobject: 4.0.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== + /is-potential-custom-element-name/1.0.0: + dev: false + optional: true + resolution: + integrity: sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + /is-promise/2.2.2: + dev: true + resolution: + integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + /is-promise/4.0.0: + dev: true + resolution: + integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== + /is-regex/1.0.5: + dependencies: + has: 1.0.3 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + /is-scoped/2.1.0: + dependencies: + scoped-regex: 2.1.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ== + /is-stream/1.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + /is-stream/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + /is-string/1.0.5: + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + /is-symbol/1.0.3: + dependencies: + has-symbols: 1.0.1 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + /is-text-path/1.0.1: + dependencies: + text-extensions: 1.9.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= + /is-typedarray/1.0.0: + resolution: + integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + /is-url-superb/3.0.0: + dependencies: + url-regex: 5.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-3faQP+wHCGDQT1qReM5zCPx2mxoal6DzbzquFlCYJLWyy4WPTved33ea2xFbX37z4NoriEwZGIYhFtx8RUB5wQ== + /is-utf8/0.2.1: + dev: true + resolution: + integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + /is-wsl/2.2.0: + dependencies: + is-docker: 2.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + /is-yarn-global/0.3.0: + dev: true + resolution: + integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + /isarray/1.0.0: + dev: true + resolution: + integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + /isexe/2.0.0: + dev: true + resolution: + integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + /isobject/2.1.0: + dependencies: + isarray: 1.0.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + /isobject/3.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + /isobject/4.0.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + /isstream/0.1.2: + dev: false + optional: true + resolution: + integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + /issue-regex/3.1.0: + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-0RHjbtw9QXeSYnIEY5Yrp2QZrdtz21xBDV9C/GIlY2POmgoS6a7qjkYS5siRKXScnuAj5/SPv1C3YForNCHTJA== + /js-string-escape/1.0.1: + dev: true + engines: + node: ">= 0.8" + resolution: + integrity: sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= + /js-tokens/4.0.0: + dev: true + resolution: + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + /js-yaml/3.14.0: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + hasBin: true + resolution: + integrity: sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + /jsbn/0.1.1: + dev: false + optional: true + resolution: + integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + /jsdoctypeparser/6.1.0: + dev: true + engines: + node: ">=6" + hasBin: true + resolution: + integrity: sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA== + /jsdom/16.2.2: + dependencies: + abab: 2.0.3 + acorn: 7.2.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.2.0 + domexception: 2.0.1 + escodegen: 1.14.1 + html-encoding-sniffer: 2.0.1 + is-potential-custom-element-name: 1.0.0 + nwsapi: 2.2.0 + parse5: 5.1.1 + request: 2.88.2 + request-promise-native: 1.0.8_request@2.88.2 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 3.0.1 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.1.0 + ws: 7.3.0 + xml-name-validator: 3.0.0 + dev: false + engines: + node: ">=10" + optional: true + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + resolution: + integrity: sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg== + /jsesc/0.5.0: + dev: true + hasBin: true + resolution: + integrity: sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + /jsesc/2.5.2: + dev: true + engines: + node: ">=4" + hasBin: true + resolution: + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + /json-buffer/3.0.0: + dev: true + resolution: + integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + /json-parse-better-errors/1.0.2: + dev: true + resolution: + integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + /json-schema-traverse/0.4.1: + resolution: + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + /json-schema/0.2.3: + dev: false + optional: true + resolution: + integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + /json-stable-stringify-without-jsonify/1.0.1: + dev: true + resolution: + integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + /json-stringify-safe/5.0.1: + resolution: + integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + /json5/2.1.3: + dependencies: + minimist: 1.2.5 + dev: true + engines: + node: ">=6" + hasBin: true + resolution: + integrity: sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + /jsonparse/1.3.1: + dev: true + engines: + "0": node >= 0.2.0 + resolution: + integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + /jsprim/1.4.1: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.2.3 + verror: 1.10.0 + dev: false + engines: + "0": node >=0.6.0 + optional: true + resolution: + integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + /keyv/3.1.0: + dependencies: + json-buffer: 3.0.0 + dev: true + resolution: + integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + /kind-of/3.2.2: + dependencies: + is-buffer: 1.1.6 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + /kind-of/6.0.3: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + /latest-version/5.1.0: + dependencies: + package-json: 6.5.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + /lazy-cache/2.0.2: + dependencies: + set-getter: 0.1.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= + /leven/3.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + /levenary/1.1.1: + dependencies: + leven: 3.1.0 + dev: true + engines: + node: ">= 6" + resolution: + integrity: sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + /levn/0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + engines: + node: ">= 0.8.0" + resolution: + integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + /levn/0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + engines: + node: ">= 0.8.0" + resolution: + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + /lines-and-columns/1.1.6: + dev: true + resolution: + integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + /list-item/1.1.1: + dependencies: + expand-range: 1.8.2 + extend-shallow: 2.0.1 + is-number: 2.1.0 + repeat-string: 1.6.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-DGXQDih8tmPMs8s4Sad+iewmilY= + /listr-input/0.2.1: + dependencies: + inquirer: 7.1.0 + inquirer-autosubmit-prompt: 0.2.0 + rxjs: 6.5.5 + through: 2.3.8 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-oa8iVG870qJq+OuuMK3DjGqFcwsK1SDu+kULp9kEq09TY231aideIZenr3lFOQdASpAr6asuyJBbX62/a3IIhg== + /listr-silent-renderer/1.1.1: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + /listr-update-renderer/0.5.0_listr@0.14.3: + dependencies: + chalk: 1.1.3 + cli-truncate: 0.2.1 + elegant-spinner: 1.0.1 + figures: 1.7.0 + indent-string: 3.2.0 + listr: 0.14.3_listr@0.14.3 + log-symbols: 1.0.2 + log-update: 2.3.0 + strip-ansi: 3.0.1 + dev: true + engines: + node: ">=6" + peerDependencies: + listr: ^0.14.2 + resolution: + integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + /listr-verbose-renderer/0.5.0: + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + date-fns: 1.30.1 + figures: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + /listr/0.14.3_listr@0.14.3: + dependencies: + "@samverschueren/stream-to-observable": 0.3.0 + is-observable: 1.1.0 + is-promise: 2.2.2 + is-stream: 1.1.0 + listr-silent-renderer: 1.1.1 + listr-update-renderer: 0.5.0_listr@0.14.3 + listr-verbose-renderer: 0.5.0 + p-map: 2.1.0 + rxjs: 6.5.5 + dev: true + engines: + node: ">=6" + peerDependencies: + listr: "*" + resolution: + integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + /load-json-file/1.1.0: + dependencies: + graceful-fs: 4.2.4 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + /load-json-file/2.0.0: + dependencies: + graceful-fs: 4.2.4 + parse-json: 2.2.0 + pify: 2.3.0 + strip-bom: 3.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + /load-json-file/4.0.0: + dependencies: + graceful-fs: 4.2.4 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + /load-json-file/5.3.0: + dependencies: + graceful-fs: 4.2.4 + parse-json: 4.0.0 + pify: 4.0.1 + strip-bom: 3.0.0 + type-fest: 0.3.1 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== + /locate-path/2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + /locate-path/3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + /locate-path/5.0.0: + dependencies: + p-locate: 4.1.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + /lodash._reinterpolate/3.0.0: + dev: true + resolution: + integrity: sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + /lodash.clonedeep/4.5.0: + dev: true + resolution: + integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + /lodash.flattendeep/4.4.0: + dev: true + resolution: + integrity: sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + /lodash.islength/4.0.1: + dev: true + resolution: + integrity: sha1-Tpho1FJXXXUK/9NYyXlUPcIO1Xc= + /lodash.ismatch/4.4.0: + dev: true + resolution: + integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + /lodash.merge/4.6.2: + dev: true + resolution: + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + /lodash.sortby/4.7.0: + dev: false + optional: true + resolution: + integrity: sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + /lodash.template/4.5.0: + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 + dev: true + resolution: + integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + /lodash.templatesettings/4.2.0: + dependencies: + lodash._reinterpolate: 3.0.0 + dev: true + resolution: + integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + /lodash.zip/4.2.0: + dev: true + resolution: + integrity: sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= + /lodash/4.17.15: + resolution: + integrity: sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + /log-symbols/1.0.2: + dependencies: + chalk: 1.1.3 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + /log-symbols/3.0.0: + dependencies: + chalk: 2.4.2 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + /log-update/2.3.0: + dependencies: + ansi-escapes: 3.2.0 + cli-cursor: 2.1.0 + wrap-ansi: 3.0.1 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + /loose-envify/1.4.0: + dependencies: + js-tokens: 4.0.0 + dev: true + hasBin: true + resolution: + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + /loud-rejection/1.6.0: + dependencies: + currently-unhandled: 0.4.1 + signal-exit: 3.0.3 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + /lowercase-keys/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + /lowercase-keys/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + /lru-cache/5.1.1: + dependencies: + yallist: 3.1.1 + dev: true + resolution: + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + /magic-string/0.25.7: + dependencies: + sourcemap-codec: 1.4.8 + dev: true + resolution: + integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + /make-dir/3.1.0: + dependencies: + semver: 6.3.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + /make-error/1.3.6: + dev: true + resolution: + integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + /map-age-cleaner/0.1.3: + dependencies: + p-defer: 1.0.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + /map-obj/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + /map-obj/2.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + /map-obj/4.1.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== + /markdown-link/0.1.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-MsXGUZmmRXMWMi0eQinRNAfIx88= + /markdown-toc/1.2.0: + dependencies: + concat-stream: 1.6.2 + diacritics-map: 0.1.0 + gray-matter: 2.1.1 + lazy-cache: 2.0.2 + list-item: 1.1.1 + markdown-link: 0.1.1 + minimist: 1.2.5 + mixin-deep: 1.3.2 + object.pick: 1.3.0 + remarkable: 1.7.4 + repeat-string: 1.6.1 + strip-color: 0.1.0 + dev: true + engines: + node: ">=0.10.0" + hasBin: true + resolution: + integrity: sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg== + /matcher/3.0.0: + dependencies: + escape-string-regexp: 4.0.0 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== + /math-random/1.0.4: + dev: true + resolution: + integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + /md5-hex/2.0.0: + dependencies: + md5-o-matic: 0.1.1 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM= + /md5-hex/3.0.1: + dependencies: + blueimp-md5: 2.16.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw== + /md5-o-matic/0.1.1: + dev: true + resolution: + integrity: sha1-givM1l4RfFFPqxdrJZRdVBAKA8M= + /mdn-browser-compat-data/1.0.19: + dependencies: + extend: 3.0.2 + dev: true + engines: + node: ">=8.0.0" + resolution: + integrity: sha512-S1i9iILAsFi/C17NADg2cBT6D6Xcd5Ub+GSMQa5ScLhuVyUrRKjCNmFEED9mQ2G/lrKtvU9SGUrpPpXB8SXhCg== + /mem/4.3.0: + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 2.1.0 + p-is-promise: 2.1.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + /mem/6.1.0: + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 3.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-RlbnLQgRHk5lwqTtpEkBTQ2ll/CG/iB+J4Hy2Wh97PjgZgXgWJWrFF+XXujh3UUVLvR4OOTgZzcWMMwnehlEUg== + /meow/3.7.0: + dependencies: + camelcase-keys: 2.1.0 + decamelize: 1.2.0 + loud-rejection: 1.6.0 + map-obj: 1.0.1 + minimist: 1.2.5 + normalize-package-data: 2.5.0 + object-assign: 4.1.1 + read-pkg-up: 1.0.1 + redent: 1.0.0 + trim-newlines: 1.0.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + /meow/4.0.1: + dependencies: + camelcase-keys: 4.2.0 + decamelize-keys: 1.1.0 + loud-rejection: 1.6.0 + minimist: 1.2.5 + minimist-options: 3.0.2 + normalize-package-data: 2.5.0 + read-pkg-up: 3.0.0 + redent: 2.0.0 + trim-newlines: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== + /meow/6.1.1: + dependencies: + "@types/minimist": 1.2.0 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.0 + type-fest: 0.13.1 + yargs-parser: 18.1.3 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== + /meow/7.0.1: + dependencies: + "@types/minimist": 1.2.0 + arrify: 2.0.1 + camelcase: 6.0.0 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.0 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.0 + type-fest: 0.13.1 + yargs-parser: 18.1.3 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw== + /merge-stream/2.0.0: + dev: true + resolution: + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + /merge2/1.3.0: + dev: true + engines: + node: ">= 6" + resolution: + integrity: sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + /micromatch/4.0.2: + dependencies: + braces: 3.0.2 + picomatch: 2.2.2 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + /mime-db/1.44.0: + dev: false + engines: + node: ">= 0.6" + optional: true + resolution: + integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + /mime-types/2.1.27: + dependencies: + mime-db: 1.44.0 + dev: false + engines: + node: ">= 0.6" + optional: true + resolution: + integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + /mimic-fn/1.2.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + /mimic-fn/2.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + /mimic-fn/3.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-PiVO95TKvhiwgSwg1IdLYlCTdul38yZxZMIcnDSFIBUm4BNZha2qpQ4GpJ++15bHoKDtrW2D69lMfFwdFYtNZQ== + /mimic-response/1.0.1: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + /min-indent/1.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= + /minimatch/3.0.4: + dependencies: + brace-expansion: 1.1.11 + dev: true + resolution: + integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + /minimist-options/3.0.2: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + dev: true + engines: + node: ">= 4" + resolution: + integrity: sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + /minimist-options/4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + engines: + node: ">= 6" + resolution: + integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + /minimist/1.2.5: + dev: true + resolution: + integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + /mixin-deep/1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + /mkdirp/0.5.5: + dependencies: + minimist: 1.2.5 + dev: true + hasBin: true + resolution: + integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + /modify-values/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + /mri/1.1.5: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg== + /ms/2.0.0: + dev: true + resolution: + integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + /ms/2.1.2: + dev: true + resolution: + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + /multimatch/4.0.0: + dependencies: + "@types/minimatch": 3.0.3 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.0.4 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== + /mute-stream/0.0.7: + dev: true + resolution: + integrity: sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + /mute-stream/0.0.8: + dev: true + resolution: + integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + /natural-compare/1.4.0: + dev: true + resolution: + integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + /neo-async/2.6.1: + dev: true + resolution: + integrity: sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + /new-github-release-url/1.0.0: + dependencies: + type-fest: 0.4.1 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A== + /nice-try/1.0.5: + dev: true + resolution: + integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + /node-releases/1.1.56: + dev: true + resolution: + integrity: sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== + /normalize-package-data/2.5.0: + dependencies: + hosted-git-info: 2.8.8 + resolve: 1.17.0 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + resolution: + integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + /normalize-path/3.0.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + /normalize-url/4.5.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + /np/6.2.3: + dependencies: + "@samverschueren/stream-to-observable": 0.3.0 + any-observable: 0.5.1_rxjs@6.5.5 + async-exit-hook: 2.0.1 + chalk: 3.0.0 + cosmiconfig: 6.0.0 + del: 4.1.1 + escape-goat: 3.0.0 + escape-string-regexp: 2.0.0 + execa: 4.0.2 + github-url-from-git: 1.5.0 + has-yarn: 2.1.0 + hosted-git-info: 3.0.4 + inquirer: 7.1.0 + is-installed-globally: 0.3.2 + is-scoped: 2.1.0 + issue-regex: 3.1.0 + listr: 0.14.3_listr@0.14.3 + listr-input: 0.2.1 + log-symbols: 3.0.0 + meow: 6.1.1 + new-github-release-url: 1.0.0 + npm-name: 5.5.0 + onetime: 5.1.0 + open: 7.0.4 + ow: 0.15.1 + p-memoize: 3.1.0 + p-timeout: 3.2.0 + pkg-dir: 4.2.0 + read-pkg-up: 7.0.1 + rxjs: 6.5.5 + semver: 7.3.2 + split: 1.0.1 + symbol-observable: 1.2.0 + terminal-link: 2.1.1 + update-notifier: 4.1.0 + dev: true + engines: + git: ">=2.11.0" + node: ">=10" + npm: ">=6.8.0" + yarn: ">=1.7.0" + hasBin: true + resolution: + integrity: sha512-EuRlncnTPL6e/p1lqa1lbrTPPddT3KWpTvztTmOCrB2/ZvHp73xqljoUh7xSm+NTipbrcSacTDSlDZt8N6MeWg== + /npm-name/5.5.0: + dependencies: + got: 9.6.0 + is-scoped: 2.1.0 + is-url-superb: 3.0.0 + lodash.zip: 4.2.0 + registry-auth-token: 4.1.1 + registry-url: 5.1.0 + validate-npm-package-name: 3.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-l7/uyVfEi2e3ho+ovaJZC0xlbwzXNUz3RxkxpfcnLuoGKAuYoo9YoJ/uy18PsTD8IziugGHks4t/mGmBJEZ4Qg== + /npm-run-path/3.1.0: + dependencies: + path-key: 3.1.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== + /npm-run-path/4.0.1: + dependencies: + path-key: 3.1.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + /null-check/1.0.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= + /number-is-nan/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + /nwsapi/2.2.0: + dev: false + optional: true + resolution: + integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + /oauth-sign/0.9.0: + dev: false + optional: true + resolution: + integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + /object-assign/4.1.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + /object-inspect/1.7.0: + dev: true + resolution: + integrity: sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + /object-keys/1.1.1: + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + /object-path/0.11.4: + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + /object.assign/4.1.0: + dependencies: + define-properties: 1.1.3 + function-bind: 1.1.1 + has-symbols: 1.0.1 + object-keys: 1.1.1 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + /object.pick/1.3.0: + dependencies: + isobject: 3.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + /object.values/1.1.1: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.5 + function-bind: 1.1.1 + has: 1.0.3 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + /once/1.4.0: + dependencies: + wrappy: 1.0.2 + dev: true + resolution: + integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + /onetime/2.0.1: + dependencies: + mimic-fn: 1.2.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + /onetime/5.1.0: + dependencies: + mimic-fn: 2.1.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + /open/7.0.4: + dependencies: + is-docker: 2.0.0 + is-wsl: 2.2.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== + /opencollective-postinstall/2.0.2: + dev: true + hasBin: true + resolution: + integrity: sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== + /optionator/0.8.3: + 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 + engines: + node: ">= 0.8.0" + resolution: + integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + /optionator/0.9.1: + dependencies: + deep-is: 0.1.3 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + engines: + node: ">= 0.8.0" + resolution: + integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + /ora/4.0.4: + dependencies: + chalk: 3.0.0 + cli-cursor: 3.1.0 + cli-spinners: 2.3.0 + is-interactive: 1.0.0 + log-symbols: 3.0.0 + mute-stream: 0.0.8 + strip-ansi: 6.0.0 + wcwidth: 1.0.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== + /os-tmpdir/1.0.2: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + /ow/0.15.1: + dependencies: + type-fest: 0.8.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-rwiuvCnk3Ug9T4s5oKzw3QXQSiTXlTUiQgHmZ9Ozw/37YzeX8LycosVKOtO3v5+fuARGmCgz9rVhaBJeGV+2bQ== + /p-cancelable/1.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + /p-defer/1.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + /p-finally/1.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + /p-finally/2.0.1: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + /p-is-promise/2.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + /p-limit/1.3.0: + dependencies: + p-try: 1.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + /p-limit/2.3.0: + dependencies: + p-try: 2.2.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + /p-locate/2.0.0: + dependencies: + p-limit: 1.3.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + /p-locate/3.0.0: + dependencies: + p-limit: 2.3.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + /p-locate/4.1.0: + dependencies: + p-limit: 2.3.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + /p-map/2.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + /p-map/3.0.0: + dependencies: + aggregate-error: 3.0.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + /p-map/4.0.0: + dependencies: + aggregate-error: 3.0.1 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + /p-memoize/3.1.0: + dependencies: + mem: 4.3.0 + mimic-fn: 2.1.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-e5tIvrsr7ydUUnxb534iQWtXxWgk/86IsH+H+nV4FHouIggBt4coXboKBt26o4lTu7JbEnGSeXdEsYR8BhAHFA== + /p-timeout/3.2.0: + dependencies: + p-finally: 1.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + /p-try/1.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + /p-try/2.2.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + /package-json/6.5.0: + dependencies: + got: 9.6.0 + registry-auth-token: 4.1.1 + registry-url: 5.1.0 + semver: 6.3.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + /parent-module/1.0.1: + dependencies: + callsites: 3.1.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + /parse-github-repo-url/1.4.1: + dev: true + resolution: + integrity: sha1-nn2LslKmy2ukJZUGC3v23z28H1A= + /parse-json/2.2.0: + dependencies: + error-ex: 1.3.2 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + /parse-json/4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + /parse-json/5.0.0: + dependencies: + "@babel/code-frame": 7.8.3 + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + lines-and-columns: 1.1.6 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + /parse-ms/2.1.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + /parse5/5.1.1: + dev: false + optional: true + resolution: + integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + /path-exists/2.1.0: + dependencies: + pinkie-promise: 2.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + /path-exists/3.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + /path-exists/4.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + /path-is-absolute/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + /path-is-inside/1.0.2: + dev: true + resolution: + integrity: sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + /path-key/2.0.1: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + /path-key/3.1.1: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + /path-parse/1.0.6: + dev: true + resolution: + integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + /path-type/1.1.0: + dependencies: + graceful-fs: 4.2.4 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + /path-type/2.0.0: + dependencies: + pify: 2.3.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + /path-type/3.0.0: + dependencies: + pify: 3.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + /path-type/4.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + /performance-now/2.1.0: + dev: false + optional: true + resolution: + integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + /picomatch/2.2.2: + dev: true + engines: + node: ">=8.6" + resolution: + integrity: sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + /pify/2.3.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + /pify/3.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + /pify/4.0.1: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + /pinkie-promise/2.0.1: + dependencies: + pinkie: 2.0.4 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o= + /pinkie/2.0.4: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + /pkg-conf/3.1.0: + dependencies: + find-up: 3.0.0 + load-json-file: 5.3.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== + /pkg-dir/2.0.0: + dependencies: + find-up: 2.1.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + /pkg-dir/4.2.0: + dependencies: + find-up: 4.1.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + /pkg-up/2.0.0: + dependencies: + find-up: 2.1.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-yBmscoBZpGHKscOImivjxJoATX8= + /please-upgrade-node/3.2.0: + dependencies: + semver-compare: 1.0.0 + dev: true + resolution: + integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + /plur/4.0.0: + dependencies: + irregular-plurals: 3.2.0 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg== + /pnpm/4.14.4: + dev: true + engines: + node: ">=10.13" + hasBin: true + resolution: + integrity: sha512-AH+vcfKJIlfKznH2vZj83utJ9g4vHjBK982OdinnBfWvYpHQ8opEMr9g1evAwlCW0Oim6V0sdolFvmV5AXc3Zw== + /prelude-ls/1.1.2: + engines: + node: ">= 0.8.0" + resolution: + integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + /prelude-ls/1.2.1: + dev: true + engines: + node: ">= 0.8.0" + resolution: + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + /prepend-http/2.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + /prettier/1.19.1: + dev: true + engines: + node: ">=4" + hasBin: true + resolution: + integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + /prettier/2.0.5: + dev: true + engines: + node: ">=10.13.0" + hasBin: true + resolution: + integrity: sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== + /pretty-ms/7.0.0: + dependencies: + parse-ms: 2.1.0 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-J3aPWiC5e9ZeZFuSeBraGxSkGMOvulSWsxDByOcbD1Pr75YL3LSNIKIb52WXbCLE1sS5s4inBBbryjF4Y05Ceg== + /pretty-quick/2.0.1_prettier@2.0.5: + dependencies: + chalk: 2.4.2 + execa: 2.1.0 + find-up: 4.1.0 + ignore: 5.1.6 + mri: 1.1.5 + multimatch: 4.0.0 + prettier: 2.0.5 + dev: true + engines: + node: ">=8" + hasBin: true + peerDependencies: + prettier: ">=1.8.0" + resolution: + integrity: sha512-y7bJt77XadjUr+P1uKqZxFWLddvj3SKY6EU4BuQtMxmmEFSMpbN132pUWdSG1g1mtUfO0noBvn7wBf0BVeomHg== + /private/0.1.8: + dev: true + engines: + node: ">= 0.6" + resolution: + integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + /process-nextick-args/2.0.1: + dev: true + resolution: + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + /progress/2.0.3: + dev: true + engines: + node: ">=0.4.0" + resolution: + integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + /psl/1.8.0: + dev: false + optional: true + resolution: + integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + /pump/3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + resolution: + integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + /punycode/2.1.1: + engines: + node: ">=6" + resolution: + integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + /pupa/2.0.1: + dependencies: + escape-goat: 2.1.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== + /q/1.5.1: + dev: true + engines: + node: ">=0.6.0" + teleport: ">=0.2.0" + resolution: + integrity: sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + /qs/6.5.2: + dev: false + engines: + node: ">=0.6" + optional: true + resolution: + integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + /quick-lru/1.1.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + /quick-lru/4.0.1: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + /randomatic/3.1.1: + dependencies: + is-number: 4.0.0 + kind-of: 6.0.3 + math-random: 1.0.4 + dev: true + engines: + node: ">= 0.10.0" + resolution: + integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + /rc/1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.5 + minimist: 1.2.5 + strip-json-comments: 2.0.1 + dev: true + hasBin: true + resolution: + integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + /read-pkg-up/1.0.1: + dependencies: + find-up: 1.1.2 + read-pkg: 1.1.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + /read-pkg-up/2.0.0: + dependencies: + find-up: 2.1.0 + read-pkg: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + /read-pkg-up/3.0.0: + dependencies: + find-up: 2.1.0 + read-pkg: 3.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + /read-pkg-up/7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + /read-pkg/1.1.0: + dependencies: + load-json-file: 1.1.0 + normalize-package-data: 2.5.0 + path-type: 1.1.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + /read-pkg/2.0.0: + dependencies: + load-json-file: 2.0.0 + normalize-package-data: 2.5.0 + path-type: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + /read-pkg/3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + /read-pkg/5.2.0: + dependencies: + "@types/normalize-package-data": 2.4.0 + normalize-package-data: 2.5.0 + parse-json: 5.0.0 + type-fest: 0.6.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + /readable-stream/2.3.7: + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + resolution: + integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + /readable-stream/3.6.0: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + engines: + node: ">= 6" + resolution: + integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + /readdirp/3.4.0: + dependencies: + picomatch: 2.2.2 + dev: true + engines: + node: ">=8.10.0" + resolution: + integrity: sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + /rechoir/0.6.2: + dependencies: + resolve: 1.17.0 + dev: true + engines: + node: ">= 0.10" + resolution: + integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + /redent/1.0.0: + dependencies: + indent-string: 2.1.0 + strip-indent: 1.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + /redent/2.0.0: + dependencies: + indent-string: 3.2.0 + strip-indent: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + /redent/3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + /regenerate-unicode-properties/8.2.0: + dependencies: + regenerate: 1.4.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + /regenerate/1.4.0: + dev: true + resolution: + integrity: sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + /regenerator-runtime/0.13.5: + dev: true + resolution: + integrity: sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + /regenerator-transform/0.14.4: + dependencies: + "@babel/runtime": 7.9.6 + private: 0.1.8 + dev: true + resolution: + integrity: sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + /regexpp/2.0.1: + dev: true + engines: + node: ">=6.5.0" + resolution: + integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + /regexpp/3.1.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + /regexpu-core/4.7.0: + dependencies: + regenerate: 1.4.0 + regenerate-unicode-properties: 8.2.0 + regjsgen: 0.5.2 + regjsparser: 0.6.4 + unicode-match-property-ecmascript: 1.0.4 + unicode-match-property-value-ecmascript: 1.2.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + /regextras/0.7.1: + dev: true + engines: + node: ">=0.1.14" + resolution: + integrity: sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== + /registry-auth-token/4.1.1: + dependencies: + rc: 1.2.8 + dev: true + engines: + node: ">=6.0.0" + resolution: + integrity: sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + /registry-url/5.1.0: + dependencies: + rc: 1.2.8 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + /regjsgen/0.5.2: + dev: true + resolution: + integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + /regjsparser/0.6.4: + dependencies: + jsesc: 0.5.0 + dev: true + hasBin: true + resolution: + integrity: sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + /remarkable/1.7.4: + dependencies: + argparse: 1.0.10 + autolinker: 0.28.1 + dev: true + engines: + node: ">= 0.10.0" + hasBin: true + resolution: + integrity: sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg== + /repeat-element/1.1.3: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + /repeat-string/1.6.1: + dev: true + engines: + node: ">=0.10" + resolution: + integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc= + /repeating/2.0.1: + dependencies: + is-finite: 1.1.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + /request-promise-core/1.1.3_request@2.88.2: + dependencies: + lodash: 4.17.15 + request: 2.88.2 + dev: false + engines: + node: ">=0.10.0" + optional: true + peerDependencies: + request: ^2.34 + resolution: + integrity: sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + /request-promise-native/1.0.8_request@2.88.2: + dependencies: + request: 2.88.2 + request-promise-core: 1.1.3_request@2.88.2 + stealthy-require: 1.1.1 + tough-cookie: 2.5.0 + dev: false + engines: + node: ">=0.12.0" + optional: true + peerDependencies: + request: ^2.34 + resolution: + integrity: sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + /request/2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.10.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.3 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.27 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.2 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + deprecated: "request has been deprecated, see https://github.com/request/request/issues/3142" + dev: false + engines: + node: ">= 6" + optional: true + resolution: + integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + /require-directory/2.1.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + /require-main-filename/2.0.0: + dev: true + resolution: + integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + /resolve-cwd/3.0.0: + dependencies: + resolve-from: 5.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + /resolve-from/4.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + /resolve-from/5.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + /resolve/1.17.0: + dependencies: + path-parse: 1.0.6 + dev: true + resolution: + integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + /responselike/1.0.2: + dependencies: + lowercase-keys: 1.0.1 + dev: true + resolution: + integrity: sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + /restore-cursor/2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.3 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + /restore-cursor/3.1.0: + dependencies: + onetime: 5.1.0 + signal-exit: 3.0.3 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + /reusify/1.0.4: + dev: true + engines: + iojs: ">=1.0.0" + node: ">=0.10.0" + resolution: + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + /rimraf/2.6.3: + dependencies: + glob: 7.1.6 + dev: true + hasBin: true + resolution: + integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + /rimraf/2.7.1: + dependencies: + glob: 7.1.6 + dev: true + hasBin: true + resolution: + integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + /rimraf/3.0.2: + dependencies: + glob: 7.1.6 + dev: true + hasBin: true + resolution: + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + /rollup/2.10.9: + dev: true + engines: + node: ">=10.0.0" + hasBin: true + optionalDependencies: + fsevents: 2.1.3 + resolution: + integrity: sha512-dY/EbjiWC17ZCUSyk14hkxATAMAShkMsD43XmZGWjLrgFj15M3Dw2kEkA9ns64BiLFm9PKN6vTQw8neHwK74eg== + /run-async/2.4.1: + dev: true + engines: + node: ">=0.12.0" + resolution: + integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + /run-parallel/1.1.9: + dev: true + resolution: + integrity: sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + /rxjs/6.5.5: + dependencies: + tslib: 1.13.0 + dev: true + engines: + npm: ">=2.0.0" + resolution: + integrity: sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + /safe-buffer/5.1.2: + dev: true + resolution: + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + /safe-buffer/5.2.1: + resolution: + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + /safer-buffer/2.1.2: + resolution: + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + /saxes/5.0.1: + dependencies: + xmlchars: 2.2.0 + dev: false + engines: + node: ">=10" + optional: true + resolution: + integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + /scoped-regex/2.1.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== + /semver-compare/1.0.0: + dev: true + resolution: + integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + /semver-diff/3.1.1: + dependencies: + semver: 6.3.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + /semver-regex/2.0.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + /semver/5.7.1: + dev: true + hasBin: true + resolution: + integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + /semver/6.3.0: + dev: true + hasBin: true + resolution: + integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + /semver/7.0.0: + dev: true + hasBin: true + resolution: + integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + /semver/7.3.2: + dev: true + engines: + node: ">=10" + hasBin: true + resolution: + integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + /serialize-error/2.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-ULZ51WNc34Rme9yOWa9OW4HV9go= + /set-blocking/2.0.0: + dev: true + resolution: + integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + /set-getter/0.1.0: + dependencies: + to-object-path: 0.3.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= + /shebang-command/1.2.0: + dependencies: + shebang-regex: 1.0.0 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + /shebang-command/2.0.0: + dependencies: + shebang-regex: 3.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + /shebang-regex/1.0.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + /shebang-regex/3.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + /shelljs/0.8.4: + dependencies: + glob: 7.1.6 + interpret: 1.2.0 + rechoir: 0.6.2 + dev: true + engines: + node: ">=4" + hasBin: true + resolution: + integrity: sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + /signal-exit/3.0.3: + dev: true + resolution: + integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + /slash/3.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + /slice-ansi/0.0.4: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + /slice-ansi/2.1.0: + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + /slice-ansi/3.0.0: + dependencies: + ansi-styles: 4.2.1 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + /source-map-support/0.5.19: + dependencies: + buffer-from: 1.1.1 + source-map: 0.6.1 + dev: true + resolution: + integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + /source-map/0.5.7: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + /source-map/0.6.1: + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + /sourcemap-codec/1.4.8: + dev: true + resolution: + integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + /spdx-correct/3.1.1: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.5 + dev: true + resolution: + integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + /spdx-exceptions/2.3.0: + dev: true + resolution: + integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + /spdx-expression-parse/3.0.1: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.5 + dev: true + resolution: + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + /spdx-license-ids/3.0.5: + dev: true + resolution: + integrity: sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + /split/1.0.1: + dependencies: + through: 2.3.8 + dev: true + resolution: + integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + /split2/2.2.0: + dependencies: + through2: 2.0.5 + dev: true + resolution: + integrity: sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== + /sprintf-js/1.0.3: + dev: true + resolution: + integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + /sprintf-js/1.1.2: + dev: true + resolution: + integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + /sshpk/1.16.1: + dependencies: + asn1: 0.2.4 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: false + engines: + node: ">=0.10.0" + hasBin: true + optional: true + resolution: + integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + /stack-utils/2.0.2: + dependencies: + escape-string-regexp: 2.0.0 + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + /standard-changelog/2.0.24: + dependencies: + add-stream: 1.0.0 + chalk: 4.0.0 + conventional-changelog-angular: 5.0.10 + conventional-changelog-core: 4.1.7 + figures: 3.2.0 + fs-access: 1.0.1 + lodash: 4.17.15 + meow: 7.0.1 + rimraf: 3.0.2 + sprintf-js: 1.1.2 + tempfile: 3.0.0 + dev: true + engines: + node: ">=10" + hasBin: true + resolution: + integrity: sha512-Tp0y5rkB8BKoURus4+fMcOXUpP1K2MrHAlMhMrBsz+25Evbn/72MdNN0IGVTctp7gioRXaeSb2HnfRY1PRaSyg== + /stealthy-require/1.1.1: + dev: false + engines: + node: ">=0.10.0" + optional: true + resolution: + integrity: sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + /string-width/1.0.2: + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + /string-width/2.1.1: + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + /string-width/3.1.0: + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + /string-width/4.2.0: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + /string.prototype.trimend/1.0.1: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.5 + dev: true + resolution: + integrity: sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + /string.prototype.trimleft/2.1.2: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.5 + string.prototype.trimstart: 1.0.1 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== + /string.prototype.trimright/2.1.2: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.5 + string.prototype.trimend: 1.0.1 + dev: true + engines: + node: ">= 0.4" + resolution: + integrity: sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== + /string.prototype.trimstart/1.0.1: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.5 + dev: true + resolution: + integrity: sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + /string_decoder/1.1.1: + dependencies: + safe-buffer: 5.1.2 + dev: true + resolution: + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + /string_decoder/1.3.0: + dependencies: + safe-buffer: 5.2.1 + dev: true + resolution: + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + /strip-ansi/3.0.1: + dependencies: + ansi-regex: 2.1.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + /strip-ansi/4.0.0: + dependencies: + ansi-regex: 3.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8= + /strip-ansi/5.2.0: + dependencies: + ansi-regex: 4.1.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + /strip-ansi/6.0.0: + dependencies: + ansi-regex: 5.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + /strip-bom/2.0.0: + dependencies: + is-utf8: 0.2.1 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + /strip-bom/3.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + /strip-color/0.1.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-EG9l09PmotlAHKwOsM6LinArT3s= + /strip-final-newline/2.0.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + /strip-indent/1.0.1: + dependencies: + get-stdin: 4.0.1 + dev: true + engines: + node: ">=0.10.0" + hasBin: true + resolution: + integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + /strip-indent/2.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + /strip-indent/3.0.0: + dependencies: + min-indent: 1.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + /strip-json-comments/2.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo= + /strip-json-comments/3.1.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== + /supertap/1.0.0: + dependencies: + arrify: 1.0.1 + indent-string: 3.2.0 + js-yaml: 3.14.0 + serialize-error: 2.1.0 + strip-ansi: 4.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA== + /supports-color/2.0.0: + dev: true + engines: + node: ">=0.8.0" + resolution: + integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + /supports-color/5.5.0: + dependencies: + has-flag: 3.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + /supports-color/7.1.0: + dependencies: + has-flag: 4.0.0 + engines: + node: ">=8" + resolution: + integrity: sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + /supports-hyperlinks/2.1.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.1.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + /symbol-observable/1.2.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + /symbol-tree/3.2.4: + dev: false + optional: true + resolution: + integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + /table/5.4.6: + dependencies: + ajv: 6.12.2 + lodash: 4.17.15 + slice-ansi: 2.1.0 + string-width: 3.1.0 + dev: true + engines: + node: ">=6.0.0" + resolution: + integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + /temp-dir/2.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + /tempfile/3.0.0: + dependencies: + temp-dir: 2.0.0 + uuid: 3.4.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw== + /term-size/2.2.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + /terminal-link/2.1.1: + dependencies: + ansi-escapes: 4.3.1 + supports-hyperlinks: 2.1.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + /text-extensions/1.9.0: + dev: true + engines: + node: ">=0.10" + resolution: + integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + /text-table/0.2.0: + dev: true + resolution: + integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + /through/2.3.8: + dev: true + resolution: + integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + /through2/2.0.5: + dependencies: + readable-stream: 2.3.7 + xtend: 4.0.2 + dev: true + resolution: + integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + /through2/3.0.1: + dependencies: + readable-stream: 3.6.0 + dev: true + resolution: + integrity: sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + /time-zone/1.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-mcW/VZWJZq9tBtg73zgA3IL67F0= + /tlds/1.207.0: + dev: true + hasBin: true + resolution: + integrity: sha512-k7d7Q1LqjtAvhtEOs3yN14EabsNO8ZCoY6RESSJDB9lst3bTx3as/m1UuAeCKzYxiyhR1qq72ZPhpSf+qlqiwg== + /tmp/0.0.33: + dependencies: + os-tmpdir: 1.0.2 + dev: true + engines: + node: ">=0.6.0" + resolution: + integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + /to-fast-properties/2.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + /to-object-path/0.3.0: + dependencies: + kind-of: 3.2.2 + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + /to-readable-stream/1.0.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + /to-regex-range/5.0.1: + dependencies: + is-number: 7.0.0 + dev: true + engines: + node: ">=8.0" + resolution: + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + /toml/2.3.6: + dev: true + resolution: + integrity: sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ== + /tough-cookie/2.5.0: + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + dev: false + engines: + node: ">=0.8" + optional: true + resolution: + integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + /tough-cookie/3.0.1: + dependencies: + ip-regex: 2.1.0 + psl: 1.8.0 + punycode: 2.1.1 + dev: false + engines: + node: ">=6" + optional: true + resolution: + integrity: sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + /tr46/2.0.2: + dependencies: + punycode: 2.1.1 + dev: false + engines: + node: ">=8" + optional: true + resolution: + integrity: sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + /trim-newlines/1.0.0: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-WIeWa7WCpFA6QetST301ARgVphM= + /trim-newlines/2.0.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + /trim-newlines/3.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + /trim-off-newlines/1.0.1: + dev: true + engines: + node: ">=0.10.0" + resolution: + integrity: sha1-n5up2e+odkw4dpi8v+sshI8RrbM= + /ts-node/8.10.1_typescript@3.9.3: + dependencies: + arg: 4.1.3 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.19 + typescript: 3.9.3 + yn: 3.1.1 + dev: true + engines: + node: ">=6.0.0" + hasBin: true + peerDependencies: + typescript: ">=2.7" + resolution: + integrity: sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw== + /tslib/1.13.0: + resolution: + integrity: sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + /tslib/2.0.0: + dev: false + resolution: + integrity: sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== + /tsutils/3.17.1_typescript@3.9.3: + dependencies: + tslib: 1.13.0 + typescript: 3.9.3 + dev: true + engines: + node: ">= 6" + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + resolution: + integrity: sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + /tunnel-agent/0.6.0: + dependencies: + safe-buffer: 5.2.1 + dev: false + optional: true + resolution: + integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + /tweetnacl/0.14.5: + dev: false + optional: true + resolution: + integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + /type-check/0.3.2: + dependencies: + prelude-ls: 1.1.2 + engines: + node: ">= 0.8.0" + resolution: + integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + /type-check/0.4.0: + dependencies: + prelude-ls: 1.2.1 + dev: true + engines: + node: ">= 0.8.0" + resolution: + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + /type-fest/0.11.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + /type-fest/0.13.1: + dev: true + engines: + node: ">=10" + resolution: + integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + /type-fest/0.3.1: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + /type-fest/0.4.1: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== + /type-fest/0.6.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + /type-fest/0.8.1: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + /typedarray-to-buffer/3.1.5: + dependencies: + is-typedarray: 1.0.0 + dev: true + resolution: + integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + /typedarray/0.0.6: + dev: true + resolution: + integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + /typescript/3.9.3: + engines: + node: ">=4.2.0" + hasBin: true + resolution: + integrity: sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ== + /ua-parser-js/0.7.21: + dev: true + resolution: + integrity: sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + /uglify-js/3.9.3: + dependencies: + commander: 2.20.3 + dev: true + engines: + node: ">=0.8.0" + hasBin: true + optional: true + resolution: + integrity: sha512-r5ImcL6QyzQGVimQoov3aL2ZScywrOgBXGndbWrdehKoSvGe/RmiE5Jpw/v+GvxODt6l2tpBXwA7n+qZVlHBMA== + /unicode-canonical-property-names-ecmascript/1.0.4: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + /unicode-match-property-ecmascript/1.0.4: + dependencies: + unicode-canonical-property-names-ecmascript: 1.0.4 + unicode-property-aliases-ecmascript: 1.1.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + /unicode-match-property-value-ecmascript/1.2.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + /unicode-property-aliases-ecmascript/1.1.0: + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + /unique-string/2.0.0: + dependencies: + crypto-random-string: 2.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + /update-notifier/4.1.0: + dependencies: + boxen: 4.2.0 + chalk: 3.0.0 + configstore: 5.0.1 + has-yarn: 2.1.0 + import-lazy: 2.1.0 + is-ci: 2.0.0 + is-installed-globally: 0.3.2 + is-npm: 4.0.0 + is-yarn-global: 0.3.0 + latest-version: 5.1.0 + pupa: 2.0.1 + semver-diff: 3.1.1 + xdg-basedir: 4.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew== + /uri-js/4.2.2: + dependencies: + punycode: 2.1.1 + resolution: + integrity: sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + /url-parse-lax/3.0.0: + dependencies: + prepend-http: 2.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + /url-regex/5.0.0: + dependencies: + ip-regex: 4.1.0 + tlds: 1.207.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-O08GjTiAFNsSlrUWfqF1jH0H1W3m35ZyadHrGv5krdnmPPoxP27oDTqux/579PtaroiSGm5yma6KT1mHFH6Y/g== + /util-deprecate/1.0.2: + dev: true + resolution: + integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + /uuid/3.4.0: + hasBin: true + resolution: + integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + /v8-compile-cache/2.1.0: + dev: true + resolution: + integrity: sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + /validate-npm-package-license/3.0.4: + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + resolution: + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + /validate-npm-package-name/3.0.0: + dependencies: + builtins: 1.0.3 + dev: true + resolution: + integrity: sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + /verror/1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: false + engines: + "0": node >=0.6.0 + optional: true + resolution: + integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + /w3c-hr-time/1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + dev: false + optional: true + resolution: + integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + /w3c-xmlserializer/2.0.0: + dependencies: + xml-name-validator: 3.0.0 + dev: false + engines: + node: ">=10" + optional: true + resolution: + integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + /wcwidth/1.0.1: + dependencies: + defaults: 1.0.3 + dev: true + resolution: + integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + /webidl-conversions/5.0.0: + dev: false + engines: + node: ">=8" + optional: true + resolution: + integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + /webidl-conversions/6.1.0: + dev: false + engines: + node: ">=10.4" + optional: true + resolution: + integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + /well-known-symbols/2.0.0: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== + /whatwg-encoding/1.0.5: + dependencies: + iconv-lite: 0.4.24 + dev: false + optional: true + resolution: + integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + /whatwg-mimetype/2.3.0: + dev: false + optional: true + resolution: + integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + /whatwg-url/8.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 2.0.2 + webidl-conversions: 5.0.0 + dev: false + engines: + node: ">=10" + optional: true + resolution: + integrity: sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== + /which-module/2.0.0: + dev: true + resolution: + integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + /which-pm-runs/1.0.0: + dev: true + resolution: + integrity: sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + /which/1.3.1: + dependencies: + isexe: 2.0.0 + dev: true + hasBin: true + resolution: + integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + /which/2.0.2: + dependencies: + isexe: 2.0.0 + dev: true + engines: + node: ">= 8" + hasBin: true + resolution: + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + /widest-line/3.1.0: + dependencies: + string-width: 4.2.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + /word-wrap/1.2.3: + engines: + node: ">=0.10.0" + resolution: + integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + /wordwrap/1.0.0: + dev: true + resolution: + integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + /wrap-ansi/3.0.1: + dependencies: + string-width: 2.1.1 + strip-ansi: 4.0.0 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + /wrap-ansi/6.2.0: + dependencies: + ansi-styles: 4.2.1 + string-width: 4.2.0 + strip-ansi: 6.0.0 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + /wrappy/1.0.2: + dev: true + resolution: + integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + /write-file-atomic/3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.3 + typedarray-to-buffer: 3.1.5 + dev: true + resolution: + integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + /write/1.0.3: + dependencies: + mkdirp: 0.5.5 + dev: true + engines: + node: ">=4" + resolution: + integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + /ws/7.3.0: + dev: false + engines: + node: ">=8.3.0" + optional: true + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + resolution: + integrity: sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== + /xdg-basedir/4.0.0: + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + /xml-name-validator/3.0.0: + dev: false + optional: true + resolution: + integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + /xmlchars/2.2.0: + dev: false + optional: true + resolution: + integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + /xtend/4.0.2: + dev: true + engines: + node: ">=0.4" + resolution: + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + /y18n/4.0.0: + dev: true + resolution: + integrity: sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + /yallist/3.1.1: + dev: true + resolution: + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + /yaml/1.10.0: + dev: true + engines: + node: ">= 6" + resolution: + integrity: sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + /yargs-parser/18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + /yargs/15.3.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.0 + which-module: 2.0.0 + y18n: 4.0.0 + yargs-parser: 18.1.3 + dev: true + engines: + node: ">=8" + resolution: + integrity: sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + /yn/3.1.1: + dev: true + engines: + node: ">=6" + resolution: + integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +specifiers: + "@types/node": ^14.0.5 + "@types/prettier": ^2.0.1 + "@typescript-eslint/eslint-plugin": ^3.0.1 + "@typescript-eslint/parser": ^3.0.1 + "@wessberg/di": ^2.0.3 + "@wessberg/rollup-plugin-ts": ^1.2.24 + "@wessberg/scaffold": ^1.0.29 + "@wessberg/ts-config": ^1.0.10 + "@wessberg/ts-evaluator": ^0.0.25 + ava: ^3.8.2 + eslint: ^7.1.0 + eslint-config-prettier: ^6.11.0 + eslint-plugin-import: ^2.20.2 + eslint-plugin-jsdoc: ^25.4.2 + husky: ^4.2.5 + np: ^6.2.3 + pnpm: ^4.14.4 + prettier: ^2.0.5 + pretty-quick: ^2.0.1 + rimraf: ^3.0.2 + rollup: ^2.10.9 + slash: ^3.0.0 + standard-changelog: ^2.0.24 + ts-node: ^8.10.1 + tslib: ^2.0.0 + typescript: ^3.9.3 diff --git a/register/index.js b/register/index.js new file mode 100644 index 0000000..bfd3b54 --- /dev/null +++ b/register/index.js @@ -0,0 +1,8 @@ +/* eslint-disable @typescript-eslint/no-require-imports */ +/* eslint-disable @typescript-eslint/no-var-requires */ +const { di } = require("../dist/cjs/index"); + +require("ts-node").register({ + transpileOnly: false, + transformers: (program) => di({ program }), +}); diff --git a/rollup.config.js b/rollup.config.js index edec0a3..4cf745c 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,31 +2,33 @@ import ts from "@wessberg/rollup-plugin-ts"; import packageJson from "./package.json"; import { builtinModules } from "module"; -export default { - input: "src/index.ts", - output: [ - { - file: packageJson.main, - format: "cjs", - sourcemap: true - }, - { - file: packageJson.module, - format: "esm", - sourcemap: true - } - ], - plugins: [ - ts({ - tsconfig: - process.env.NODE_ENV === "production" - ? "tsconfig.dist.json" - : "tsconfig.json" - }) - ], - external: [ - ...builtinModules, - ...Object.keys(packageJson.dependencies), - ...Object.keys(packageJson.devDependencies) - ] -}; +export default [ + { + input: "src/index.ts", + output: [ + { + file: packageJson.main, + format: "cjs", + sourcemap: true, + }, + { + file: packageJson.module, + format: "esm", + sourcemap: true, + }, + ], + plugins: [ + ts({ + tsconfig: "tsconfig.build.json", + }), + ], + external: [ + ...builtinModules, + ...Object.keys( + packageJson.dependencies == null ? {} : packageJson.dependencies + ), + ...Object.keys(packageJson.devDependencies), + ...Object.keys(packageJson.peerDependencies), + ], + }, +]; diff --git a/src/index.ts b/src/index.ts index 01e8473..aabb184 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,2 @@ -export { di } from "./transformer/transformer"; -export { IDIInputOptions } from "./transformer/i-di-input-options"; +export * from "./transformer/di-options"; +export * from "./transformer/di"; diff --git a/src/lib/multi-map/multi-map.ts b/src/lib/multi-map/multi-map.ts deleted file mode 100644 index 47a43a9..0000000 --- a/src/lib/multi-map/multi-map.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * A WeakMultiMap is a wrapper around a Map that assumes that all values are collections - */ -export class MultiMap { - /** - * The inner Map between keys and collections - * @template K, C - * @type {WeakMap} - */ - // @ts-ignore - protected readonly map: Map | WeakMap = new Map(); - - /** - * Gets the value for the given key. If it is not defined, it will initialize a new collection for it - * @template K, V, C - * @param {K} key - * @returns {C} - */ - public get(key: K): C { - let match = this.map.get(key); - if (match == null) { - match = ([]); - this.map.set(key, match); - } - return match; - } - - /** - * Pushes the given value to the collection for the given key - * @template K, V - * @param {K} key - * @param {V[]} value - * @returns {number} - */ - public add(key: K, ...value: V[]): void { - const collection = this.get(key); - collection.push(...value); - } - - /** - * Returns true if the collection has the given key - * @template K - * @param {K} key - * @returns {boolean} - */ - public has(key: K): boolean { - return this.map.has(key); - } - - /** - * Finds a value in the collection matching the given key - * @template K, V - * @param {K} key - * @param {Function} callback - * @returns {boolean} - */ - public findValue( - key: K, - callback: (value: V, collection: C) => boolean - ): S | undefined { - if (!this.has(key)) return undefined; - const collection = this.get(key); - for (const value of collection) { - if (callback(value, collection)) return value; - } - return undefined; - } -} diff --git a/src/path-util.ts b/src/path-util.ts new file mode 100644 index 0000000..07e484a --- /dev/null +++ b/src/path-util.ts @@ -0,0 +1,57 @@ +import path, { ParsedPath } from "path"; +import { platform } from "os"; +import slash from "slash"; + +export const ROOT_DIRECTORY = path.parse(process.cwd()).root; +export const PLATFORM = platform(); +export const DRIVE_LETTER_REGEXP = /^\w:/; + +export function normalize(p: string): string { + return ensurePosix(p); +} + +export function parse(p: string): ParsedPath { + const parsedPath = path.parse(p); + return { + ext: parsedPath.ext, + name: normalize(parsedPath.name), + base: normalize(parsedPath.base), + dir: normalize(parsedPath.dir), + root: normalize(parsedPath.root), + }; +} + +/** + * On Windows, it is important that all absolute paths are absolute, including the drive letter, because TypeScript assumes this + */ +export function ensureHasDriveLetter(p: string): string { + if (PLATFORM !== "win32") return p; + if (DRIVE_LETTER_REGEXP.test(p)) return p; + if (p.startsWith(ROOT_DIRECTORY)) return p; + if (!isAbsolute(p)) return p; + return nativeJoin(ROOT_DIRECTORY, p); +} + +/** + * Ensures that the given path follows posix file names + */ +export function ensurePosix(p: string): string { + return slash(p); +} + +export function nativeNormalize(p: string): string { + // Converts to either POSIX or native Windows file paths + return path.normalize(p); +} + +export function nativeDirname(p: string): string { + return path.dirname(p); +} + +export function nativeJoin(...paths: string[]): string { + return path.join(...paths); +} + +export function isAbsolute(p: string): boolean { + return path.isAbsolute(p); +} diff --git a/src/transformer/after/after-transformer.ts b/src/transformer/after/after-transformer.ts new file mode 100644 index 0000000..0053bf3 --- /dev/null +++ b/src/transformer/after/after-transformer.ts @@ -0,0 +1,44 @@ +import { VisitorContext } from "../visitor-context"; +import { TS } from "../../type/type"; +import { AfterVisitorOptions } from "./after-visitor-options"; +import { visitNode } from "./visitor/visit-node"; + +export function afterTransformer( + context: VisitorContext +): TS.TransformerFactory { + return (transformationContext) => (sourceFile) => + transformSourceFile(sourceFile, context, transformationContext); +} + +function transformSourceFile( + sourceFile: TS.SourceFile, + context: VisitorContext, + transformationContext: TS.TransformationContext +): TS.SourceFile { + const visitorOptions: Pick< + AfterVisitorOptions, + Exclude, "node" | "sourceFile"> + > = { + context, + + continuation: (node) => + visitNode({ + ...visitorOptions, + sourceFile, + node, + }), + childContinuation: (node) => + context.typescript.visitEachChild( + node, + (cbNode) => + visitNode({ + ...visitorOptions, + sourceFile, + node: cbNode, + }), + transformationContext + ), + }; + + return visitorOptions.continuation(sourceFile) as TS.SourceFile; +} diff --git a/src/transformer/after/after-visitor-options.ts b/src/transformer/after/after-visitor-options.ts new file mode 100644 index 0000000..d5e0ff2 --- /dev/null +++ b/src/transformer/after/after-visitor-options.ts @@ -0,0 +1,5 @@ +import { TS } from "../../type/type"; +import { VisitorOptions } from "../visitor-options"; + +export interface AfterVisitorOptions + extends VisitorOptions {} diff --git a/src/transformer/after/visitor/visit-expression-statement.ts b/src/transformer/after/visitor/visit-expression-statement.ts new file mode 100644 index 0000000..c17e5be --- /dev/null +++ b/src/transformer/after/visitor/visit-expression-statement.ts @@ -0,0 +1,25 @@ +import { TS } from "../../../type/type"; +import { AfterVisitorOptions } from "../after-visitor-options"; +import { TYPE_NODE_CONSOLE_LOG_MARK } from "../../constant"; + +export function visitExpressionStatement( + options: AfterVisitorOptions +): TS.VisitResult { + const { node, context } = options; + const { typescript } = context; + + // Do nothing if the node isn't relevant + if ( + !typescript.isBinaryExpression(node.expression) || + !typescript.isStringLiteralLike(node.expression.left) || + node.expression.left.text !== TYPE_NODE_CONSOLE_LOG_MARK || + node.expression.operatorToken.kind !== typescript.SyntaxKind.CommaToken + ) { + // Don't do a recursive pass in this case + return node; + } + + // If we're here, we an safely simply just remove the ExpressionStatement as it is not needed + // anymore. + return undefined; +} diff --git a/src/transformer/after/visitor/visit-node.ts b/src/transformer/after/visitor/visit-node.ts new file mode 100644 index 0000000..9003fdb --- /dev/null +++ b/src/transformer/after/visitor/visit-node.ts @@ -0,0 +1,13 @@ +import { AfterVisitorOptions } from "../after-visitor-options"; +import { TS } from "../../../type/type"; +import { visitExpressionStatement } from "./visit-expression-statement"; + +export function visitNode( + options: AfterVisitorOptions +): TS.VisitResult { + if (options.context.typescript.isExpressionStatement(options.node)) { + return visitExpressionStatement({ ...options, node: options.node }); + } + + return options.childContinuation(options.node); +} diff --git a/src/transformer/before/before-transformer.ts b/src/transformer/before/before-transformer.ts new file mode 100644 index 0000000..ded4ffd --- /dev/null +++ b/src/transformer/before/before-transformer.ts @@ -0,0 +1,63 @@ +import { VisitorContext } from "../visitor-context"; +import { TS } from "../../type/type"; +import { BeforeVisitorOptions } from "./before-visitor-options"; +import { visitNode } from "./visitor/visit-node"; + +export function beforeTransformer( + context: VisitorContext +): TS.TransformerFactory { + return (transformationContext) => (sourceFile) => + transformSourceFile(sourceFile, context, transformationContext); +} + +function transformSourceFile( + sourceFile: TS.SourceFile, + context: VisitorContext, + transformationContext: TS.TransformationContext +): TS.SourceFile { + const trailingStatements: TS.Statement[] = []; + + const visitorOptions: Pick< + BeforeVisitorOptions, + Exclude, "node" | "sourceFile"> + > = { + context, + + addTrailingStatements: (...statements: TS.Statement[]): void => { + trailingStatements.push(...statements); + }, + + continuation: (node) => + visitNode({ + ...visitorOptions, + sourceFile, + node, + }), + childContinuation: (node) => + context.typescript.visitEachChild( + node, + (cbNode) => + visitNode({ + ...visitorOptions, + sourceFile, + node: cbNode, + }), + transformationContext + ), + }; + + const updatedSourceFile = visitorOptions.continuation( + sourceFile + ) as TS.SourceFile; + if (trailingStatements.length < 1) return updatedSourceFile; + + return context.typescript.updateSourceFileNode( + updatedSourceFile, + [...updatedSourceFile.statements, ...trailingStatements], + sourceFile.isDeclarationFile, + sourceFile.referencedFiles, + sourceFile.typeReferenceDirectives, + sourceFile.hasNoDefaultLib, + sourceFile.libReferenceDirectives + ); +} diff --git a/src/transformer/before/before-visitor-options.ts b/src/transformer/before/before-visitor-options.ts new file mode 100644 index 0000000..a296b90 --- /dev/null +++ b/src/transformer/before/before-visitor-options.ts @@ -0,0 +1,7 @@ +import { TS } from "../../type/type"; +import { VisitorOptions } from "../visitor-options"; + +export interface BeforeVisitorOptions + extends VisitorOptions { + addTrailingStatements(...statements: TS.Statement[]): void; +} diff --git a/src/transformer/before/visitor/visit-call-expression.ts b/src/transformer/before/visitor/visit-call-expression.ts new file mode 100644 index 0000000..6f4cd90 --- /dev/null +++ b/src/transformer/before/visitor/visit-call-expression.ts @@ -0,0 +1,168 @@ +import { DI_CONTAINER_NAME, TYPE_NODE_CONSOLE_LOG_MARK } from "../../constant"; +import { TS } from "../../../type/type"; +import { BeforeVisitorOptions } from "../before-visitor-options"; +import { DiMethodKind } from "../../di-method-kind"; +import { VisitorContext } from "../../visitor-context"; + +export function visitCallExpression( + options: BeforeVisitorOptions +): TS.VisitResult { + const { + node, + addTrailingStatements, + childContinuation, + continuation, + context, + } = options; + const { typescript } = context; + + const diMethod = getDiMethodKind(node.expression, context); + + if (diMethod != null) { + switch (diMethod) { + case DiMethodKind.GET: + case DiMethodKind.HAS: { + // If no type arguments are given, don't modify the node at all + if (node.typeArguments == null || node.typeArguments[0] == null) { + return childContinuation(node); + } + + return typescript.updateCall( + node, + node.expression, + node.typeArguments, + [ + typescript.createObjectLiteral([ + typescript.createPropertyAssignment( + "identifier", + typescript.createStringLiteral( + node.typeArguments[0].getFullText().trim() + ) + ), + ]), + ] + ); + } + + case DiMethodKind.REGISTER_SINGLETON: + case DiMethodKind.REGISTER_TRANSIENT: { + let [typeArg, implementationArg] = ((node.typeArguments ?? + []) as unknown) as [ + TS.TypeNode | TS.Expression | undefined, + TS.TypeNode | TS.Expression | undefined + ]; + + // If not implementation is provided, use the type argument *as* the implementation + if (implementationArg == null) { + implementationArg = typeArg; + } + + // If another implementation is passed, used that one instead + if (node.arguments.length > 0) { + implementationArg = node.arguments[0]; + } + + if (typeArg == null || implementationArg == null) { + return childContinuation(node); + } + + const typeArgText = typeArg.getFullText().trim(); + const implementationArgText = implementationArg.getFullText().trim(); + + // If the Implementation is a TypeNode, it may be stripped from the file since Typescript won't Type-check the updates from + // a CustomTransformer and such a node would normally be removed from the imports. + // to fix it, add an ExpressionStatement such as '"foo", Foo' (that will be removed later) + if (typescript.isTypeNode(implementationArg)) { + addTrailingStatements( + typescript.createExpressionStatement( + typescript.createBinary( + typescript.createStringLiteral(TYPE_NODE_CONSOLE_LOG_MARK), + typescript.SyntaxKind.CommaToken, + typescript.createIdentifier(implementationArgText) + ) + ) + ); + } + + return typescript.updateCall( + node, + node.expression, + node.typeArguments, + [ + typescript.isTypeNode(implementationArg) + ? typescript.createIdentifier("undefined") + : (continuation(implementationArg) as TS.Expression), + typescript.createObjectLiteral([ + typescript.createPropertyAssignment( + "identifier", + typescript.createStringLiteral(typeArgText) + ), + ...(!typescript.isTypeNode(implementationArg) + ? [] + : [ + typescript.createPropertyAssignment( + "implementation", + typescript.createIdentifier(implementationArgText) + ), + ]), + ]), + ] + ); + } + } + } + + return childContinuation(node); +} + +function getDiMethodKind( + node: TS.Expression, + context: VisitorContext +): DiMethodKind | undefined { + if ( + !context.typescript.isPropertyAccessExpression(node) && + !context.typescript.isElementAccessExpression(node) + ) { + return undefined; + } + + // Don't proceed unless the left-hand expression is the DIServiceContainer + const type = context.typeChecker.getTypeAtLocation(node.expression); + + if ( + type == null || + type.symbol == null || + type.symbol.escapedName !== DI_CONTAINER_NAME + ) { + return undefined; + } + + let name: string; + + // If it is an element access expression, evaluate the argument expression + if (context.typescript.isElementAccessExpression(node)) { + const evaluationResult = context.evaluate(node.argumentExpression); + + // If no value could be computed, or if the value isn't of type string, do nothing + if ( + !evaluationResult.success || + typeof evaluationResult.value !== "string" + ) { + return undefined; + } else { + name = evaluationResult.value; + } + } else { + name = node.name.text; + } + + switch (name) { + case DiMethodKind.GET: + case DiMethodKind.HAS: + case DiMethodKind.REGISTER_SINGLETON: + case DiMethodKind.REGISTER_TRANSIENT: + return name; + default: + return undefined; + } +} diff --git a/src/transformer/before/visitor/visit-class-like-declaration.ts b/src/transformer/before/visitor/visit-class-like-declaration.ts new file mode 100644 index 0000000..5822968 --- /dev/null +++ b/src/transformer/before/visitor/visit-class-like-declaration.ts @@ -0,0 +1,93 @@ +import { CONSTRUCTOR_ARGUMENTS_SYMBOL_IDENTIFIER } from "../../constant"; +import { TS } from "../../../type/type"; +import { BeforeVisitorOptions } from "../before-visitor-options"; + +export function visitClassLikeDeclaration( + options: BeforeVisitorOptions +): TS.VisitResult { + const { + node, + childContinuation, + continuation, + context: { typescript }, + } = options; + const constructorDeclaration = node.members.find( + typescript.isConstructorDeclaration + ); + + // If there are no constructor declaration for the ClassLikeDeclaration, there's nothing to do + if (constructorDeclaration == null) { + return childContinuation(node); + } + + const updatedClassMembers: readonly TS.ClassElement[] = [ + ...(node.members.map(continuation) as TS.ClassElement[]), + typescript.createGetAccessor( + undefined, + [ + typescript.createModifier(typescript.SyntaxKind.PublicKeyword), + typescript.createModifier(typescript.SyntaxKind.StaticKeyword), + ], + typescript.createComputedPropertyName( + typescript.createIdentifier( + `Symbol.for("${CONSTRUCTOR_ARGUMENTS_SYMBOL_IDENTIFIER}")` + ) + ), + [], + undefined, + typescript.createBlock([ + typescript.createReturn( + getParameterTypeNamesAsArrayLiteral( + constructorDeclaration.parameters, + typescript + ) + ), + ]) + ), + ]; + + if (typescript.isClassDeclaration(node)) { + return typescript.updateClassDeclaration( + node, + node.decorators, + node.modifiers, + node.name, + node.typeParameters, + node.heritageClauses, + updatedClassMembers + ); + } else { + return typescript.updateClassExpression( + node, + node.modifiers, + node.name, + node.typeParameters, + node.heritageClauses, + updatedClassMembers + ); + } +} + +/** + * Takes ConstructorParams for the given NodeArray of ParameterDeclarations + */ +function getParameterTypeNamesAsArrayLiteral( + parameters: TS.NodeArray, + typescript: typeof TS +): TS.ArrayLiteralExpression { + const constructorParams: TS.Expression[] = []; + + for (let i = 0; i < parameters.length; i++) { + const parameter = parameters[i]; + // If the parameter has no type, there's nothing to extract + if (parameter.type == null) { + constructorParams[i] = typescript.createIdentifier("undefined"); + } else { + constructorParams[i] = typescript.createStringLiteral( + parameter.type.getFullText().trim() + ); + } + } + + return typescript.createArrayLiteral(constructorParams); +} diff --git a/src/transformer/before/visitor/visit-node.ts b/src/transformer/before/visitor/visit-node.ts new file mode 100644 index 0000000..8dc80db --- /dev/null +++ b/src/transformer/before/visitor/visit-node.ts @@ -0,0 +1,16 @@ +import { BeforeVisitorOptions } from "../before-visitor-options"; +import { TS } from "../../../type/type"; +import { visitClassLikeDeclaration } from "./visit-class-like-declaration"; +import { visitCallExpression } from "./visit-call-expression"; + +export function visitNode( + options: BeforeVisitorOptions +): TS.VisitResult { + if (options.context.typescript.isClassLike(options.node)) { + return visitClassLikeDeclaration({ ...options, node: options.node }); + } else if (options.context.typescript.isCallExpression(options.node)) { + return visitCallExpression({ ...options, node: options.node }); + } + + return options.childContinuation(options.node); +} diff --git a/src/transformer/constant.ts b/src/transformer/constant.ts index 33b7567..e6fd87e 100644 --- a/src/transformer/constant.ts +++ b/src/transformer/constant.ts @@ -1,5 +1,3 @@ -export const CONSTRUCTOR_ARGUMENTS_SYMBOL_IDENTIFIER: string = `___CTOR_ARGS___`; -export const CONSTRUCTOR_ARGUMENTS_SYMBOL: unique symbol = Symbol.for( - CONSTRUCTOR_ARGUMENTS_SYMBOL_IDENTIFIER -); +export const CONSTRUCTOR_ARGUMENTS_SYMBOL_IDENTIFIER = `___CTOR_ARGS___`; +export const TYPE_NODE_CONSOLE_LOG_MARK = `___DI_COMPILER_TYPE_NODE_MARK___`; export const DI_CONTAINER_NAME = "DIContainer"; diff --git a/src/transformer/di-method-kind.ts b/src/transformer/di-method-kind.ts index f0684a4..e8422be 100644 --- a/src/transformer/di-method-kind.ts +++ b/src/transformer/di-method-kind.ts @@ -1,6 +1,6 @@ -export const enum DIMethodKind { +export const enum DiMethodKind { GET = "get", HAS = "has", REGISTER_SINGLETON = "registerSingleton", - REGISTER_TRANSIENT = "registerTransient" + REGISTER_TRANSIENT = "registerTransient", } diff --git a/src/transformer/di-options.ts b/src/transformer/di-options.ts new file mode 100644 index 0000000..eedfa12 --- /dev/null +++ b/src/transformer/di-options.ts @@ -0,0 +1,7 @@ +import { Program } from "typescript"; +import { TS } from "../type/type"; + +export interface DiOptions { + program: Program; + typescript?: typeof TS; +} diff --git a/src/transformer/di.ts b/src/transformer/di.ts new file mode 100644 index 0000000..1954867 --- /dev/null +++ b/src/transformer/di.ts @@ -0,0 +1,35 @@ +import { TS } from "../type/type"; +import { DiOptions } from "./di-options"; +import { VisitorContext } from "./visitor-context"; +import { evaluate } from "@wessberg/ts-evaluator"; +import * as TSModule from "typescript"; +import { beforeTransformer } from "./before/before-transformer"; +import { afterTransformer } from "./after/after-transformer"; + +/** + * CustomTransformer that associates constructor arguments with any given class declaration + */ +export function di({ + typescript = TSModule, + ...rest +}: DiOptions): TS.CustomTransformers { + const typeChecker = rest.program.getTypeChecker(); + + // Prepare a VisitorContext + const visitorContext: VisitorContext = { + ...rest, + typescript, + typeChecker, + evaluate: (node) => + evaluate({ + node, + typeChecker, + typescript, + }), + }; + + return { + before: [beforeTransformer(visitorContext)], + after: [afterTransformer(visitorContext)], + }; +} diff --git a/src/transformer/i-di-input-options.ts b/src/transformer/i-di-input-options.ts deleted file mode 100644 index 1f55e31..0000000 --- a/src/transformer/i-di-input-options.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Program } from "typescript"; - -export interface IDIInputOptions { - program: Program; -} diff --git a/src/transformer/i-matched-identifier-in-imports.ts b/src/transformer/i-matched-identifier-in-imports.ts deleted file mode 100644 index f066bdf..0000000 --- a/src/transformer/i-matched-identifier-in-imports.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Expression } from "typescript"; - -export interface IMatchIdentifierInImportsBase { - matched: boolean; -} - -export interface INotMatchedIdentifierInImports - extends IMatchIdentifierInImportsBase { - matched: false; -} - -export interface IMatchedIdentifierInImports - extends IMatchIdentifierInImportsBase { - matched: true; - matchedIn: "name" | "namespace" | "named"; - propertyName?: string; - name: string; - moduleSpecifier: Expression; -} - -export type MatchIdentifierInImports = - | INotMatchedIdentifierInImports - | IMatchedIdentifierInImports; diff --git a/src/transformer/i-resolve-type-node-in-imports-and-generate-import-declaration-result.ts b/src/transformer/i-resolve-type-node-in-imports-and-generate-import-declaration-result.ts deleted file mode 100644 index 7b2a95d..0000000 --- a/src/transformer/i-resolve-type-node-in-imports-and-generate-import-declaration-result.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ImportDeclaration } from "typescript"; - -export interface IResolveTypeNodeInImportsAndGenerateImportDeclarationResult { - importDeclaration: ImportDeclaration; - identifierText: string; -} diff --git a/src/transformer/transformer.ts b/src/transformer/transformer.ts deleted file mode 100644 index 1cbd45f..0000000 --- a/src/transformer/transformer.ts +++ /dev/null @@ -1,525 +0,0 @@ -import { - ArrayLiteralExpression, - CallExpression, - ClassDeclaration, - ClassElement, - ClassExpression, - ConstructorDeclaration, - createArrayLiteral, - createBlock, - createComputedPropertyName, - createGetAccessor, - createIdentifier, - createImportClause, - createImportDeclaration, - createImportSpecifier, - createModifier, - createNamedImports, - createNamespaceImport, - createObjectLiteral, - createPropertyAssignment, - createReturn, - createStringLiteral, - CustomTransformers, - Expression, - isCallExpression, - isClassDeclaration, - isClassExpression, - isImportDeclaration, - isNamedImports, - isNamespaceImport, - isPropertyAccessExpression, - isTypeNode, - Node, - NodeArray, - ParameterDeclaration, - PropertyAccessExpression, - SourceFile, - SyntaxKind, - TransformationContext, - Transformer, - TypeChecker, - TypeNode, - updateCall, - updateClassDeclaration, - updateClassExpression, - updateSourceFileNode, - visitEachChild, - visitNode as _visitNode -} from "typescript"; -import { - CONSTRUCTOR_ARGUMENTS_SYMBOL_IDENTIFIER, - DI_CONTAINER_NAME -} from "./constant"; -import { DIMethodKind } from "./di-method-kind"; -import { IResolveTypeNodeInImportsAndGenerateImportDeclarationResult } from "./i-resolve-type-node-in-imports-and-generate-import-declaration-result"; -import { MultiMap } from "../lib/multi-map/multi-map"; -import { MatchIdentifierInImports } from "./i-matched-identifier-in-imports"; -import { IDIInputOptions } from "./i-di-input-options"; - -/** - * Takes ConstructorParams for the given NodeArray of ParameterDeclarations - * @param {NodeArray} parameters - * @returns {ArrayLiteralExpression} - */ -function takeConstructorParams( - parameters: NodeArray -): ArrayLiteralExpression { - const constructorParams: Expression[] = []; - - for (let i = 0; i < parameters.length; i++) { - const parameter = parameters[i]; - // If the parameter has no type, there's nothing to extract - if (parameter.type == null) { - constructorParams[i] = createIdentifier("undefined"); - } else { - constructorParams[i] = createStringLiteral( - parameter.type.getFullText().trim() - ); - } - } - - return createArrayLiteral(constructorParams); -} - -/** - * Returns true if the given TypeNode is already found within the given Import results - * @param {TypeNode} typeNode - * @param {MultiMap} resolvedTypeNodeInImportsResults - * @returns {boolean} - */ -function resolvedTypeNodeInImportsIsAlreadyMatched( - typeNode: TypeNode, - resolvedTypeNodeInImportsResults: MultiMap< - string, - IResolveTypeNodeInImportsAndGenerateImportDeclarationResult - > -): boolean { - const sourceFile = typeNode.getSourceFile(); - if (sourceFile == null) return false; - if (!resolvedTypeNodeInImportsResults.has(sourceFile.fileName)) return false; - const typeNodeText = typeNode.getFullText().trim(); - return ( - resolvedTypeNodeInImportsResults.findValue( - sourceFile.fileName, - result => result.identifierText === typeNodeText - ) != null - ); -} - -/** - * Resolves a TypeNode within the ImportDeclarations of the given SourceFile - * @param {SourceFile} sourceFile - * @param {TypeNode} typeNode - * @param {MultiMap} resolvedTypeNodeInImportsResults - * @returns {IResolveTypeNodeInImportsAndGenerateImportDeclarationResult?} - */ -function resolveTypeNodeInImportsAndGenerateImportDeclaration( - sourceFile: SourceFile, - typeNode: TypeNode, - resolvedTypeNodeInImportsResults: MultiMap< - string, - IResolveTypeNodeInImportsAndGenerateImportDeclarationResult - > -): IResolveTypeNodeInImportsAndGenerateImportDeclarationResult | undefined { - if ( - resolvedTypeNodeInImportsIsAlreadyMatched( - typeNode, - resolvedTypeNodeInImportsResults - ) - ) { - return undefined; - } - const typeNodeText = typeNode.getFullText().trim(); - - const match = getIdentifierMatchInImports(sourceFile, typeNodeText); - if (!match.matched) return undefined; - - switch (match.matchedIn) { - case "name": - return { - identifierText: typeNodeText, - importDeclaration: createImportDeclaration( - undefined, - undefined, - createImportClause(createIdentifier(match.name), undefined), - match.moduleSpecifier - ) - }; - - case "namespace": - return { - identifierText: typeNodeText, - importDeclaration: createImportDeclaration( - undefined, - undefined, - createImportClause( - undefined, - createNamespaceImport(createIdentifier(match.name)) - ), - match.moduleSpecifier - ) - }; - - case "named": - return { - identifierText: typeNodeText, - importDeclaration: createImportDeclaration( - undefined, - undefined, - createImportClause( - undefined, - createNamedImports([ - createImportSpecifier( - match.propertyName == null - ? undefined - : createIdentifier(match.propertyName), - createIdentifier(match.name) - ) - ]) - ), - match.moduleSpecifier - ) - }; - } - - return undefined; -} - -/** - * Resolves a TypeNode within the ImportDeclarations of the given SourceFile - * @param {SourceFile} sourceFile - * @param {string} identifier - * @returns {MatchIdentifierInImports} - */ -function getIdentifierMatchInImports( - sourceFile: SourceFile, - identifier: string -): MatchIdentifierInImports { - for (const statement of sourceFile.statements) { - if (!isImportDeclaration(statement) || statement.importClause == null) { - continue; - } - - if ( - statement.importClause.name != null && - statement.importClause.name.text === identifier - ) { - return { - matched: true, - matchedIn: "name", - name: identifier, - moduleSpecifier: statement.moduleSpecifier - }; - } - - if (statement.importClause.namedBindings != null) { - // Create a new ImportDeclaration of just the namespace import - if ( - isNamespaceImport(statement.importClause.namedBindings) && - statement.importClause.namedBindings.name.text === identifier - ) { - return { - matched: true, - matchedIn: "namespace", - name: identifier, - moduleSpecifier: statement.moduleSpecifier - }; - } - - if (isNamedImports(statement.importClause.namedBindings)) { - for (const element of statement.importClause.namedBindings.elements) { - // Create a new ImportDeclaration of just the named import - if (element.name.text === identifier) { - return { - matched: true, - matchedIn: "named", - name: element.name.text, - propertyName: - element.propertyName == null - ? undefined - : element.propertyName.text, - moduleSpecifier: statement.moduleSpecifier - }; - } - } - } - } - } - return { matched: false }; -} - -/** - * Visits the given PropertyAccessExpression (which happens to be inside a CallExpression) and returns a DIMethodKind - * if relevant - * @param {Expression} node - * @param {TypeChecker} typeChecker - * @returns {DIMethodKind | undefined} - */ -function getDIMethodKindForPropertyAccessCallExpression( - node: PropertyAccessExpression, - typeChecker: TypeChecker -): DIMethodKind | undefined { - // Don't proceed unless the left-hand expression is the DIServiceContainer - const type = typeChecker.getTypeAtLocation(node.expression); - if ( - type == null || - type.symbol == null || - type.symbol.escapedName !== DI_CONTAINER_NAME - ) { - return undefined; - } - switch (node.name.text) { - case DIMethodKind.GET: - case DIMethodKind.HAS: - case DIMethodKind.REGISTER_SINGLETON: - case DIMethodKind.REGISTER_TRANSIENT: - return node.name.text; - default: - return undefined; - } -} - -/** - * A transformer that can associate constructor arguments with any given class declaration - * @type {(options: IDIInputOptions) => CustomTransformers} - */ -export const di = ({ program }: IDIInputOptions): CustomTransformers => { - const resolvedTypeNodeInImportsResults = new MultiMap< - string, - IResolveTypeNodeInImportsAndGenerateImportDeclarationResult - >(); - - return { - after: [ - (_: TransformationContext): Transformer => { - return sourceFile => { - if (!resolvedTypeNodeInImportsResults.has(sourceFile.fileName)) { - return sourceFile; - } - - return updateSourceFileNode(sourceFile, [ - ...resolvedTypeNodeInImportsResults - .get(sourceFile.fileName) - .filter( - v => - getIdentifierMatchInImports(sourceFile, v.identifierText) - .matched === false - ) - .map(v => v.importDeclaration), - ...sourceFile.statements - ]); - }; - } - ], - before: [ - (context: TransformationContext): Transformer => { - const typeChecker = - program == null ? undefined : program.getTypeChecker(); - - /** - * Visits the given CallExpression - * @param {CallExpression} node - * @param {TypeChecker} checker - * @returns {CallExpression | undefined} - */ - function visitCallExpression( - node: CallExpression, - checker: TypeChecker - ): CallExpression | undefined { - if (isPropertyAccessExpression(node.expression)) { - const diMethod = getDIMethodKindForPropertyAccessCallExpression( - node.expression, - checker - ); - if (diMethod != null) { - switch (diMethod) { - case DIMethodKind.GET: - case DIMethodKind.HAS: { - // If no type arguments are given, don't modify the node at all - if ( - node.typeArguments != null && - node.typeArguments[0] != null - ) { - return updateCall( - node, - node.expression, - node.typeArguments, - [ - createObjectLiteral([ - createPropertyAssignment( - "identifier", - createStringLiteral( - node.typeArguments[0].getFullText().trim() - ) - ) - ]) - ] - ); - } - break; - } - - case DIMethodKind.REGISTER_SINGLETON: - case DIMethodKind.REGISTER_TRANSIENT: - // If no type arguments are given, don't modify the node at all - if (node.typeArguments != null) { - let [typeArg, implementationArg]: NodeArray< - TypeNode | Expression - > = node.typeArguments; - - // If not implementation is provided, use the type argument *as* the implementation - if (implementationArg == null) { - implementationArg = typeArg; - } - - // If another implementation is passed, used that one instead - if (node.arguments.length > 0) { - implementationArg = node.arguments[0]; - } - - const sourceFile = ( - implementationArg.getSourceFile() - ); - - // If the Implementation is a TypeNode, it may be stripped from the file since Typescript won't Type-check the updates from - // a CustomTransformer and such node would normally be removed from the imports - if (isTypeNode(implementationArg) && sourceFile != null) { - const resolvedTypeNodeInImports = resolveTypeNodeInImportsAndGenerateImportDeclaration( - sourceFile, - implementationArg, - resolvedTypeNodeInImportsResults - ); - if (resolvedTypeNodeInImports != null) { - resolvedTypeNodeInImportsResults.add( - sourceFile.fileName, - resolvedTypeNodeInImports - ); - } - } - - // Only proceed if there is a type and an implementation (they may be the same) - if (typeArg != null && implementationArg != null) { - return updateCall( - node, - node.expression, - node.typeArguments, - [ - isTypeNode(implementationArg) - ? createIdentifier("undefined") - : visitEachChild( - implementationArg, - visitNode, - context - ), - createObjectLiteral([ - createPropertyAssignment( - "identifier", - createStringLiteral(typeArg.getFullText().trim()) - ), - ...(!isTypeNode(implementationArg) - ? [] - : [ - createPropertyAssignment( - "implementation", - createIdentifier( - implementationArg.getFullText().trim() - ) - ) - ]) - ]) - ] - ); - } - } - } - } - } - return visitEachChild(node, visitNode, context); - } - - /** - * Visits the given Class - * @param {ClassDeclaration|ClassExpression} node - * @returns {ClassDeclaration|ClassExpression | undefined} - */ - function visitClass( - node: ClassDeclaration | ClassExpression - ): ClassDeclaration | ClassExpression | undefined { - const constructorDeclaration = ( - node.members.find(member => member.kind === SyntaxKind.Constructor) - ); - if (constructorDeclaration == null) { - return visitEachChild(node, visitNode, context); - } - - const updatedClassMembers: ReadonlyArray = [ - ...node.members.map(member => - visitEachChild(member, visitNode, context) - ), - createGetAccessor( - undefined, - [ - createModifier(SyntaxKind.PublicKeyword), - createModifier(SyntaxKind.StaticKeyword) - ], - createComputedPropertyName( - createIdentifier( - `Symbol.for("${CONSTRUCTOR_ARGUMENTS_SYMBOL_IDENTIFIER}")` - ) - ), - [], - undefined, - createBlock([ - createReturn( - takeConstructorParams(constructorDeclaration.parameters) - ) - ]) - ) - ]; - - if (isClassDeclaration(node)) { - return updateClassDeclaration( - node, - node.decorators, - node.modifiers, - node.name, - node.typeParameters, - node.heritageClauses, - updatedClassMembers - ); - } else { - return updateClassExpression( - node, - node.modifiers, - node.name, - node.typeParameters, - node.heritageClauses, - updatedClassMembers - ); - } - } - - /** - * Visits the given Node - * @param {Node} node - * @returns {Node | undefined} - */ - function visitNode(node: Node): Node | undefined { - if (typeChecker == null) return node; - if (isClassDeclaration(node) || isClassExpression(node)) { - return visitClass(node); - } else if (isCallExpression(node)) { - return visitCallExpression(node, typeChecker); - } - - return visitEachChild(node, visitNode, context); - } - - return sourceFile => { - return _visitNode(sourceFile, visitNode); - }; - } - ] - }; -}; diff --git a/src/transformer/visitor-context.ts b/src/transformer/visitor-context.ts new file mode 100644 index 0000000..1a3cc54 --- /dev/null +++ b/src/transformer/visitor-context.ts @@ -0,0 +1,8 @@ +import { DiOptions } from "./di-options"; +import { TS } from "../type/type"; +import { EvaluateResult } from "@wessberg/ts-evaluator"; + +export interface VisitorContext extends Required { + typeChecker: TS.TypeChecker; + evaluate(node: TS.Declaration | TS.Expression | TS.Statement): EvaluateResult; +} diff --git a/src/transformer/visitor-continuation.ts b/src/transformer/visitor-continuation.ts new file mode 100644 index 0000000..a21f5f9 --- /dev/null +++ b/src/transformer/visitor-continuation.ts @@ -0,0 +1,5 @@ +import { TS } from "../type/type"; + +export type VisitorContinuation = ( + node: T +) => TS.VisitResult; diff --git a/src/transformer/visitor-options.ts b/src/transformer/visitor-options.ts new file mode 100644 index 0000000..32e9698 --- /dev/null +++ b/src/transformer/visitor-options.ts @@ -0,0 +1,11 @@ +import { TS } from "../type/type"; +import { VisitorContext } from "./visitor-context"; +import { VisitorContinuation } from "./visitor-continuation"; + +export interface VisitorOptions { + node: T; + sourceFile: TS.SourceFile; + context: VisitorContext; + continuation: VisitorContinuation; + childContinuation: VisitorContinuation; +} diff --git a/src/type/type.ts b/src/type/type.ts new file mode 100644 index 0000000..0308008 --- /dev/null +++ b/src/type/type.ts @@ -0,0 +1,2 @@ +import * as TS from "typescript"; +export { TS }; diff --git a/test/constructor-arguments.test.ts b/test/constructor-arguments.test.ts new file mode 100644 index 0000000..1dc352e --- /dev/null +++ b/test/constructor-arguments.test.ts @@ -0,0 +1,58 @@ +import test from "ava"; +import { generateTransformerResult } from "./setup/setup-transformer"; +import { formatCode } from "./util/format-code"; + +test("Can parse constructor parameters and extend with an internal static class member. #1", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + interface IFoo {} + class Foo { + constructor (private foo: IFoo) {} + } + `, + }, + ]); + const [file] = bundle; + t.deepEqual( + formatCode(file.code), + formatCode(`\ + class Foo { + constructor(foo) { + this.foo = foo; + } + static get [Symbol.for("___CTOR_ARGS___")]() { return ["IFoo"]; } + } + `) + ); +}); + +test("Can parse constructor parameters and extend with an internal static class member. #2", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + interface IFoo {} + class Foo { + constructor (private foo: IFoo = {}, private bar) {} + } + `, + }, + ]); + const [file] = bundle; + t.deepEqual( + formatCode(file.code), + formatCode(`\ + class Foo { + constructor(foo = {}, bar) { + this.foo = foo; + this.bar = bar; + } + static get [Symbol.for("___CTOR_ARGS___")]() { return ["IFoo", undefined]; } + } + `) + ); +}); diff --git a/test/container.test.ts b/test/container.test.ts new file mode 100644 index 0000000..a3bb740 --- /dev/null +++ b/test/container.test.ts @@ -0,0 +1,209 @@ +import test from "ava"; +import { generateTransformerResult } from "./setup/setup-transformer"; +import { formatCode } from "./util/format-code"; +import { TYPE_NODE_CONSOLE_LOG_MARK } from "../src/transformer/constant"; + +test("Only considers containers that are instances of DIContainer. #1", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + class Foo {} + class MyContainer { + registerSingleton (): T|undefined { + console.log("foo"); + return undefined; + } + } + const container = new MyContainer(); + container.registerSingleton(); + `, + }, + ]); + const [file] = bundle; + + t.deepEqual( + formatCode(file.code), + formatCode(`\ + class Foo {} + class MyContainer { + registerSingleton () { + console.log("foo"); + return undefined; + } + } + const container = new MyContainer(); + container.registerSingleton(); + `) + ); +}); + +test("Supports ElementAccessExpressions. #1", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + import {DIContainer} from "@wessberg/di"; + class Foo {} + const container = new DIContainer(); + + container["registerSingleton"](); + `, + }, + ]); + const [file] = bundle; + + t.deepEqual( + formatCode(file.code), + formatCode(`\ + import { DIContainer } from "@wessberg/di"; + class Foo { + } + const container = new DIContainer(); + container["registerSingleton"](undefined, { identifier: "Foo", implementation: Foo }); + `) + ); +}); + +test("Supports ElementAccessExpressions. #2", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + import {DIContainer} from "@wessberg/di"; + class Foo {} + const container = new DIContainer(); + const argumentExpression = "registerSingleton"; + + container[argumentExpression](); + `, + }, + ]); + const [file] = bundle; + + t.deepEqual( + formatCode(file.code), + formatCode(`\ + import { DIContainer } from "@wessberg/di"; + class Foo { + } + const container = new DIContainer(); + const argumentExpression = "registerSingleton"; + container[argumentExpression](undefined, { identifier: "Foo", implementation: Foo }); + `) + ); +}); + +test("Supports PropertyAccessExpressions. #1", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + import {DIContainer} from "@wessberg/di"; + + interface IFoo {} + + class Foo implements IFoo {} + + const container = new DIContainer(); + container.registerSingleton(); + `, + }, + ]); + const [file] = bundle; + + t.deepEqual( + formatCode(file.code), + formatCode(`\ + import { DIContainer } from "@wessberg/di"; + class Foo { + } + const container = new DIContainer(); + container.registerSingleton(undefined, { identifier: "IFoo", implementation: Foo }); + `) + ); +}); + +test("Supports custom implementation functions. #1", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + import {DIContainer} from "@wessberg/di"; + + interface IFoo { + foo: string; + } + + const container = new DIContainer(); + container.registerSingleton(() => ({foo: "hello"})); + `, + }, + ]); + const [file] = bundle; + + t.deepEqual( + formatCode(file.code), + formatCode(`\ + import { DIContainer } from "@wessberg/di"; + const container = new DIContainer(); + container.registerSingleton(() => ({foo: "hello"}), { identifier: "IFoo" }); + `) + ); +}); + +test("Will remove Type node marks. #1", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + import {DIContainer} from "@wessberg/di"; + + interface IFoo { + foo: string; + } + + const container = new DIContainer(); + container.registerSingleton(); + `, + }, + ]); + const [file] = bundle; + + t.false(formatCode(file.code).includes(TYPE_NODE_CONSOLE_LOG_MARK)); +}); + +test("When registering a service, the implementation type argument is treated as an optional argument. #1", (t) => { + const bundle = generateTransformerResult([ + { + entry: true, + fileName: "index.ts", + text: ` + import {DIContainer} from "@wessberg/di"; + + class Foo {} + + const container = new DIContainer(); + container.registerSingleton(); + `, + }, + ]); + const [file] = bundle; + + t.deepEqual( + formatCode(file.code), + formatCode(`\ + import { DIContainer } from "@wessberg/di"; + class Foo { + } + const container = new DIContainer(); + container.registerSingleton(undefined, { identifier: "Foo", implementation: Foo }); + `) + ); +}); diff --git a/test/setup/setup-transformer.ts b/test/setup/setup-transformer.ts new file mode 100644 index 0000000..a487993 --- /dev/null +++ b/test/setup/setup-transformer.ts @@ -0,0 +1,227 @@ +import { join, normalize } from "path"; +import { TS } from "../../src/type/type"; +import * as typescript from "typescript"; +import { di } from "../../src/transformer/di"; +import { + isAbsolute, + nativeDirname, + nativeJoin, + nativeNormalize, + parse, +} from "../../src/path-util"; + +// tslint:disable:no-any +export interface TestFileRecord { + fileName: string; + text: string; + entry: boolean; +} + +export type TestFile = TestFileRecord | string; + +interface FileResult { + fileName: string; + code: string; +} + +interface TransformerOptions { + compilerOptions: Partial; + cwd: string; +} + +/** + * Prepares a test + */ +export function generateTransformerResult( + inputFiles: TestFile[] | TestFile, + { + compilerOptions = {}, + cwd = process.cwd(), + }: Partial = {} +): readonly FileResult[] { + const files: TestFileRecord[] = (Array.isArray(inputFiles) + ? inputFiles + : [inputFiles] + ) + .map((file) => + typeof file === "string" + ? { + text: file, + fileName: `auto-generated-${Math.floor(Math.random() * 100000)}.ts`, + entry: true, + } + : file + ) + .map((file) => ({ ...file, fileName: join(cwd, file.fileName) })); + + const directories = new Set( + files.map((file) => nativeNormalize(nativeDirname(file.fileName))) + ); + + const entryFiles = files.filter((file) => file.entry); + if (entryFiles.length === 0) { + throw new ReferenceError(`No entry could be found`); + } + + const results: FileResult[] = []; + + let input: Record | string; + if (entryFiles.length === 1) { + input = entryFiles[0].fileName; + } else { + input = {}; + + // Ensure no conflicting chunk names + const seenNames = new Set(); + for (const entryFile of entryFiles) { + let candidateName = parse(entryFile.fileName).name; + let offset = 0; + if (!seenNames.has(candidateName)) { + seenNames.add(candidateName); + } else { + candidateName = `${candidateName}-${++offset}`; + while (true) { + if (seenNames.has(candidateName)) { + candidateName = `${candidateName.slice( + 0, + candidateName.length - 2 + )}-${++offset}`; + } else { + seenNames.add(candidateName); + break; + } + } + } + + input[candidateName] = entryFile.fileName; + } + } + + const program = typescript.createProgram({ + rootNames: files.map((file) => file.fileName), + options: { + module: typescript.ModuleKind.ESNext, + target: typescript.ScriptTarget.ESNext, + moduleResolution: typescript.ModuleResolutionKind.NodeJs, + allowJs: true, + sourceMap: false, + ...compilerOptions, + }, + host: { + ...typescript.sys, + + getSourceFile( + fileName: string, + languageVersion: TS.ScriptTarget + ): TS.SourceFile | undefined { + const normalized = normalize(fileName); + const sourceText = this.readFile(normalized); + if (sourceText == null) return undefined; + + return typescript.createSourceFile( + normalized, + sourceText, + languageVersion, + true, + typescript.ScriptKind.TS + ); + }, + + getCurrentDirectory() { + return "."; + }, + + getDefaultLibFileName(options: TS.CompilerOptions): string { + return typescript.getDefaultLibFileName(options); + }, + + getCanonicalFileName(fileName: string): string { + return this.useCaseSensitiveFileNames() + ? fileName + : fileName.toLowerCase(); + }, + + getNewLine(): string { + return typescript.sys.newLine; + }, + + useCaseSensitiveFileNames() { + return typescript.sys.useCaseSensitiveFileNames; + }, + + readFile: (fileName) => { + const normalized = nativeNormalize(fileName); + const absoluteFileName = isAbsolute(normalized) + ? normalized + : nativeJoin(cwd, normalized); + const file = files.find( + (currentFile) => currentFile.fileName === absoluteFileName + ); + if (file != null) return file.text; + return typescript.sys.readFile(absoluteFileName); + }, + writeFile() { + // Noop + }, + fileExists: (fileName) => { + const normalized = nativeNormalize(fileName); + const absoluteFileName = isAbsolute(normalized) + ? normalized + : nativeJoin(cwd, normalized); + if (files.some((file) => file.fileName === absoluteFileName)) { + return true; + } + + return typescript.sys.fileExists(absoluteFileName); + }, + directoryExists: (dirName) => { + const normalized = nativeNormalize(dirName); + if (directories.has(normalized)) return true; + return typescript.sys.directoryExists(normalized); + }, + realpath(path: string): string { + return nativeNormalize(path); + }, + readDirectory( + rootDir: string, + extensions: readonly string[], + excludes: readonly string[] | undefined, + includes: readonly string[], + depth?: number + ): string[] { + const nativeNormalizedRootDir = nativeNormalize(rootDir); + const realResult = typescript.sys.readDirectory( + rootDir, + extensions, + excludes, + includes, + depth + ); + const virtualFiles = files + .filter((file) => file.fileName.includes(nativeNormalizedRootDir)) + .map((file) => file.fileName); + return [...new Set([...realResult, ...virtualFiles])].map( + nativeNormalize + ); + }, + + getDirectories(path: string): string[] { + return typescript.sys.getDirectories(path).map(nativeNormalize); + }, + }, + }); + + const transformers = di({ program }); + + program.emit( + undefined, + (fileName, code) => { + results.push({ fileName, code }); + }, + undefined, + undefined, + transformers + ); + + return results; +} diff --git a/test/util/format-code.ts b/test/util/format-code.ts new file mode 100644 index 0000000..e0ac7cd --- /dev/null +++ b/test/util/format-code.ts @@ -0,0 +1,5 @@ +import { format } from "prettier"; + +export function formatCode(code: string): string { + return format(code, { parser: "typescript", endOfLine: "lf" }); +} diff --git a/tsconfig.dist.json b/tsconfig.build.json similarity index 100% rename from tsconfig.dist.json rename to tsconfig.build.json diff --git a/tsconfig.json b/tsconfig.json index d8801c8..da2d988 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "@wessberg/ts-config", "compilerOptions": { - "module": "commonjs" + "module": "commonjs", + "target": "es2018" } } diff --git a/tslint.json b/tslint.json deleted file mode 100644 index c5209f8..0000000 --- a/tslint.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/@wessberg/ts-config/tslint.json" -}