From 1ae16ba551de63f0ff3d0f0ff459c6cbab0676d7 Mon Sep 17 00:00:00 2001 From: Scott Prue Date: Sat, 14 Mar 2020 01:19:16 -0400 Subject: [PATCH] v1.0.0-alpha (#101) * feat(commands): default to tasks and remove usage of [firebase-tools-extra](https://github.com/prescottprue/firebase-tools-extra) * feat(core): plugin using tasks is now top level plugin * fix(core): remove all cli commands including `createTestEnvFile` * fix(deps): remove commander, chalk, and figures from dependencies * feat(plugin): remove setting of `baseUrl` and `FIREBASE_PROJECT_ID` from plugin --- .eslintignore | 3 +- .github/workflows/publish.yml | 3 +- README.md | 34 +- bin/cypress-firebase | 25 - cmds/createTestEnvFile.js | 31 - cmds/index.js | 19 - cmds/open.js | 41 - cmds/run.js | 35 - index.d.ts | 243 +-- package.json | 28 +- src/attachCustomCommands.ts | 331 ++-- src/buildFirestoreCommand.ts | 100 -- src/buildRtdbCommand.ts | 217 --- src/constants.ts | 10 - src/createTestEnvFile.ts | 164 -- src/extendWithFirebaseConfig.ts | 103 +- src/filePaths.ts | 26 - src/firebase-utils.ts | 16 +- src/index.ts | 7 +- src/logger.ts | 99 -- src/node-utils.ts | 196 +-- src/{pluginWithTasks.ts => plugin.ts} | 0 src/tasks.ts | 15 +- src/utils.ts | 78 - test/unit/buildFirestoreCommand.spec.ts | 112 -- test/unit/buildRtdbCommand.spec.ts | 273 --- test/unit/extendWithFirebaseConfig.spec.ts | 75 + test/unit/index.spec.ts | 5 +- yarn.lock | 1800 +++++++++----------- 29 files changed, 1149 insertions(+), 2940 deletions(-) delete mode 100755 bin/cypress-firebase delete mode 100644 cmds/createTestEnvFile.js delete mode 100644 cmds/index.js delete mode 100644 cmds/open.js delete mode 100644 cmds/run.js delete mode 100644 src/buildFirestoreCommand.ts delete mode 100644 src/buildRtdbCommand.ts delete mode 100644 src/constants.ts delete mode 100644 src/createTestEnvFile.ts delete mode 100644 src/filePaths.ts delete mode 100644 src/logger.ts rename src/{pluginWithTasks.ts => plugin.ts} (100%) delete mode 100644 src/utils.ts delete mode 100644 test/unit/buildFirestoreCommand.spec.ts delete mode 100644 test/unit/buildRtdbCommand.spec.ts create mode 100644 test/unit/extendWithFirebaseConfig.spec.ts diff --git a/.eslintignore b/.eslintignore index 2ed13e8d..3bfadd45 100644 --- a/.eslintignore +++ b/.eslintignore @@ -4,4 +4,5 @@ lib-esm node_modules coverage .nyc_output -.github \ No newline at end of file +.github +index.d.ts \ No newline at end of file diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 25134b73..5faccc9f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,6 +23,7 @@ jobs: uses: actions/setup-node@v1 with: node-version: 12 + registry-url: https://registry.npmjs.org/ - name: Get yarn cache id: yarn-cache @@ -51,7 +52,7 @@ jobs: - name: Publish env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_REF: ${{ github.ref }} run: | export GIT_BRANCH=${GITHUB_REF##*/} diff --git a/README.md b/README.md index fed9d482..400ca0ad 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ If you are interested in what drove the need for this checkout [the why section] ```js const admin = require('firebase-admin') - const cypressFirebasePlugin = require('cypress-firebase').pluginWithTasks + const cypressFirebasePlugin = require('cypress-firebase').plugin module.exports = (on, config) => { // Pass on function, config, and admin instance. Returns extended config @@ -62,38 +62,31 @@ If you are interested in what drove the need for this checkout [the why section] } ``` -#### Old Method (using firebase-tools-extra cli) - -1. Same steps as above but make the following change of import in plugins file (`cypress/plugins/index.js`): - -```diff -+ const cypressFirebasePlugin = require('cypress-firebase').plugin -- const cypressFirebasePlugin = require('cypress-firebase').pluginWithTasks -``` - #### Auth 1. Log into your Firebase console for the first time. 1. Go to Auth tab of Firebase and create a user for testing purpose 1. Get the UID of created account. This will be the account which you use to login while running tests (we will call this UID `TEST_UID`) 1. Add the following to your `.gitignore`: + ``` serviceAccount.json cypress.env.json ``` + 1. Go to project setting on firebase console and generate new private key. See how to do [here](https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/firebase/tutorials/authenticate-with-a-service-account) 1. Save the downloaded file as `serviceAccount.json` in the root of your project (make sure that it is .gitignored) -1. Add the UID of the user you created earlier to your cypress environment file (`cypress.env.json`) when running locally (make sure this is in you `.gitignore`): - - ```js - { - "TEST_UID": "<- uid of the user you want to test as ->" - } - ``` - - In CI this will instead be loaded from the `TEST_UID` environment variable +1. Set the UID of the user you created earlier to the cypress environment. You can do this using a number of methods: + 1. Adding `CYPRESS_TEST_UID` to `.env` file which is gitignored + 1. Adding `TEST_UID` to `cypress.env.json` + 1. Adding as part of your npm script to run tests with a tool such as `cross-env`: + + ```json + "test": "cross-env CYPRESS_TEST_UID=your-uid cypress open" + ``` -1. Pass the UID when logging in: `cy.login(Cypress.env('TEST_UID'))` +1. Make sure to set `CYPRESS_TEST_UID` environment variable in your CI settings if you are running tests in CI +1. Call `cy.login()` with the `before` or `beforeEach` sections of your tests **NOTE**: If you are running tests within your CI provider you will want to set the `SERVICE_ACCOUNT` environment variable as the service account object and the `TEST_UID` environment variable as the UID of your test user @@ -108,6 +101,7 @@ If you are interested in what drove the need for this checkout [the why section] #### createTestEnvFile {#createTestEnvFile} +**NOTE**: This command is deprecated and will be removed in the next major version. It is suggested that you use `CYPRESS_` prefixed environment variables instead Create test environment file (`cypress.env.json`) which contains custom auth token generated using `firebase-admin` SDK and `serviceAccount.json`. ##### Requirements diff --git a/bin/cypress-firebase b/bin/cypress-firebase deleted file mode 100755 index cfc4ebe5..00000000 --- a/bin/cypress-firebase +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env node -const program = require('commander'); // eslint-disable-line @typescript-eslint/no-var-requires -const pkg = require('../package.json'); // eslint-disable-line @typescript-eslint/no-var-requires - -program.version(pkg.version); - -require('../cmds')(program); // eslint-disable-line @typescript-eslint/no-var-requires - -program.on('*', name => { - /* eslint-disable no-console */ - console.log( - `'${name}' is not a known command. See 'cypress-firebase --help':`, - ); - /* eslint-enable no-console */ - program.outputHelp(); - process.exit(1); -}); - -program.parse(process.argv); - -if (program.rawArgs.length < 3) { - console.log("No command specified. See 'cypress-firebase --help':"); // eslint-disable-line no-console - program.outputHelp(); - process.exit(1); -} diff --git a/cmds/createTestEnvFile.js b/cmds/createTestEnvFile.js deleted file mode 100644 index 977e2c31..00000000 --- a/cmds/createTestEnvFile.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * createTestEnvFile commander component - * To use add require('../cmds/deploy.js')(program) to your commander.js based node executable before program.parse - */ -const logError = require('../lib/logger').error; -const createTestEnvFile = require('../lib/createTestEnvFile').default; - -/** - * @name createTestEnvFile - * @description Deploy to Firebase only on build branches (master, stage, prod) - * @param {object} program - Commander program - * @example Basic - * # make sure you serviceAccount.json exists - * cypress-firebase createEnv - */ -module.exports = function runCreateTestEnvFile(program) { - program - .command('createTestEnvFile [envName]') - .description( - 'Build configuration file containing a token for authorizing a firebase instance' - ) - .action(envArg => { - return createTestEnvFile(envArg) - .then(() => process.exit(0)) - .catch(err => { - logError(`Test env file could not be created:\n${err.message}`); - process.exit(1); - return Promise.reject(err); - }); - }); -}; diff --git a/cmds/index.js b/cmds/index.js deleted file mode 100644 index 2536ab80..00000000 --- a/cmds/index.js +++ /dev/null @@ -1,19 +0,0 @@ -/* eslint-disable no-param-reassign */ -module.exports = function setupCommands(client) { - process.env.FORCE_COLOR = true; - - /** - * Load command from file by name - * @param name - Name of command - * @returns {object} Command object - */ - function loadCommand(name) { - return require('./' + name)(client) // eslint-disable-line - } - - client.createTestEnvFile = loadCommand('createTestEnvFile'); - client.run = loadCommand('run'); - client.open = loadCommand('open'); - - return client; -}; diff --git a/cmds/open.js b/cmds/open.js deleted file mode 100644 index 2a3e4c79..00000000 --- a/cmds/open.js +++ /dev/null @@ -1,41 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -const chalk = require('chalk'); -const { runCommand } = require('../lib/node-utils'); -const logger = require('../lib/logger'); - -/** - * @name open - * Create test environment config then open Cypress Test Runner - * @param {string} program - Commander program - */ -module.exports = function open(program) { - program - .command('open [envName]') - .description( - 'Build configuration file containing a token for authorizing a firebase instance' - ) - .action(envArg => { - const envName = typeof envArg === 'string' ? envArg : 'local'; - return runCommand({ - command: 'cypress-firebase', - args: ['createTestEnvFile', envName] - }) - .then(() => { - logger.info( - `Opening test runner for environment: ${chalk.cyan(envName)}` - ); - return runCommand({ - command: 'npx', - args: ['cypress', 'open', '--env', `envName=${envName}`] - }); - }) - .then(() => process.exit(0)) - .catch(err => { - logger.error( - `Test runner open could not be completed:\n${err.message}` - ); - process.exit(1); - return Promise.reject(err); - }); - }); -}; diff --git a/cmds/run.js b/cmds/run.js deleted file mode 100644 index a2bdd7af..00000000 --- a/cmds/run.js +++ /dev/null @@ -1,35 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -const chalk = require('chalk'); -const { runCommand } = require('../lib/node-utils'); -const logger = require('../lib/logger'); -const createTestEnvFile = require('../lib/createTestEnvFile').default; - -/** - * @name run - * Build test configuration file then run cypress run command - * @param {string} program - Commander program - */ -module.exports = function run(program) { - program - .command('run [envName]') - .description('Build test configuration file then run cypress run command') - .action(envArg => { - const envName = typeof envArg === 'string' ? envArg : 'local'; - return createTestEnvFile(envName) - .then(() => { - logger.info( - `Starting test run for environment: ${chalk.cyan(envName)}` - ); - return runCommand({ - command: 'npx', - args: ['cypress', 'run'].concat(['--env', `envName=${envName}`]) - }); - }) - .then(() => process.exit(0)) - .catch(err => { - logger.error(`Run could not be completed:\n${err.message}`); - process.exit(1); - return Promise.reject(err); - }); - }); -}; diff --git a/index.d.ts b/index.d.ts index 286f4a64..d21767ed 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,42 +1,9 @@ -declare module "constants" { - export const DEFAULT_TEST_FOLDER_PATH = "cypress"; - export const DEFAULT_SERVICE_ACCOUNT_PATH = "serviceAccount.json"; - export const DEFAULT_TEST_ENV_FILE_NAME = "cypress.env.json"; - export const DEFAULT_TEST_CONFIG_FILE_NAME = "cypress.json"; - export const DEFAULT_CONFIG_FILE_NAME = "config.json"; - export const FIREBASE_CONFIG_FILE_NAME = ".firebaserc"; - export const FIREBASE_TOOLS_BASE_COMMAND = "npx firebase"; - export const FIREBASE_EXTRA_PATH = "npx firebase-extra"; - export const FIREBASE_TOOLS_YES_ARGUMENT = "-y"; -} -declare module "utils" { - /** - * Async await wrapper for easy error handling - * @param promise - Promise to wrap responses of in array - * @param errorExt - Extension for error - * @returns Resolves and rejects with an array - */ - export function to(promise: Promise, errorExt?: object): Promise<[U | null, T | undefined]>; - /** - * Create command arguments string from an array of arguments by joining them - * with a space including a leading space. If no args provided, empty string - * is returned - * @param args - Command arguments to convert into a string - * @returns Arguments section of command string - */ - export function getArgsString(args: string[] | any): string; - /** - * Add default Firebase arguments to arguments array. - * @param Cypress - Cypress object - * @param args - arguments array - * @param [opts={}] - Options object - * @param opts.token - Firebase CI token to pass as the token argument - * @param [opts.disableYes=false] - Whether or not to disable the yes argument - * @returns Default args list - */ - export function addDefaultArgs(Cypress: any, args: string[], opts?: any): string[]; -} -declare module "buildFirestoreCommand" { +declare module "attachCustomCommands" { + export interface AttachCustomCommandParams { + Cypress: any; + cy: any; + firebase: any; + } /** * Action for Firestore */ @@ -70,24 +37,6 @@ declare module "buildFirestoreCommand" { recursive?: boolean; merge?: boolean; } - /** - * Build Command to run Firestore action. Commands call either firebase-extra - * (in bin/firebaseExtra.js) or firebase-tools directly. FIREBASE_TOKEN must - * exist in environment if running commands that call firebase-tools. - * @param Cypress - Cypress object - * @param action - action to run on Firstore (i.e. "add", "delete") - * @param actionPath - Firestore path where action should be run - * @param fixturePathOrData - Path to fixture. If object is passed, - * it is used as options. - * @param [opts={}] - Options object - * @param opts.args - Extra arguments to be passed with command - * @param opts.token - Firebase CI token to pass as the token argument - * @returns Command string to be used with cy.exec - */ - export default function buildFirestoreCommand(Cypress: any, action: FirestoreAction, actionPath: string, fixturePathOrData?: FixtureData | string | FirestoreCommandOptions, opts?: FirestoreCommandOptions): string; -} -declare module "buildRtdbCommand" { - import { FixtureData } from "buildFirestoreCommand"; /** * Action for Real Time Database */ @@ -147,28 +96,6 @@ declare module "buildRtdbCommand" { */ instance?: string; } - /** - * Build Command to run Real Time Database action. All commands call - * firebase-tools directly, so FIREBASE_TOKEN must exist in environment. - * @param Cypress - Cypress object - * @param action - action to run on Firstore (i.e. "add", "delete") - * @param actionPath - Firestore path where action should be run - * @param fixturePath - Path to fixture. If object is passed, - * it is used as options. - * @param [opts={}] - Options object - * @param opts.args - Extra arguments to be passed with command - * @returns Command string to be used with cy.exec - */ - export default function buildRtdbCommand(Cypress: any, action: RTDBAction, actionPath: string, fixturePath?: FixtureData | RTDBCommandOptions | any, opts?: RTDBCommandOptions): string; -} -declare module "attachCustomCommands" { - import { FirestoreAction, FirestoreCommandOptions, FixtureData } from "buildFirestoreCommand"; - import { RTDBAction, RTDBCommandOptions } from "buildRtdbCommand"; - export interface AttachCustomCommandParams { - Cypress: any; - cy: any; - firebase: any; - } global { namespace Cypress { interface Chainable { @@ -181,7 +108,7 @@ declare module "attachCustomCommands" { * @see https://github.com/prescottprue/cypress-firebase#cylogin * @param uid - UID of user to login as * @param customClaims - Custom claims to attach to the custom token - * @example Env Based Login (TEST_UID or FIREBASE_AUTH_JWT) + * @example Env Based Login (TEST_UID) * cy.login() * @example Passed UID * cy.login('123SOMEUID') @@ -232,18 +159,10 @@ declare module "attachCustomCommands" { * cy.callFirestore('get', 'projects/test-project').then((project) => { * cy.log('Project:', project) * }) - * @example Recursive Delete - * const opts = { recursive: true } - * cy.callFirestore('delete', 'project/test-project', opts) - * @example Manually Loading Fixture + * @example Passing A Fixture * cy.fixture('fakeProject.json').then((project) => { * cy.callFirestore('add', 'projects', project) * }) - * @example Fixture Path - * cy.callFirestore('set', 'project/test-project', 'fakeProject.json') - * @example Other Args - * const opts = { args: ['-r'] } - * cy.callFirestore('delete', 'project/test-project', opts) */ callFirestore: (action: FirestoreAction, actionPath: string, fixtureDataOrPath?: FixtureData | string, opts?: FirestoreCommandOptions) => Chainable; } @@ -256,45 +175,38 @@ declare module "attachCustomCommands" { */ export default function attachCustomCommands(commandParams: AttachCustomCommandParams): void; } -declare module "filePaths" { - export const FIREBASE_CONFIG_FILE_PATH: string; - export const TEST_CONFIG_FILE_PATH: string; - export const TEST_ENV_FILE_PATH: string; - export const LOCAL_CONFIG_FILE_PATH: string; -} -declare module "logger" { - export const log: { - (message?: any, ...optionalParams: any[]): void; - (message?: any, ...optionalParams: any[]): void; - }; - /** - * Log info within console - * @param message - Message containing info to log - * @param other - Other values to pass to info - * @returns undefined - */ - export function info(message: string, other?: any): void; - /** - * Log a success within console (colorized with green) - * @param message - Success message to log - * @param other - Other values to pass to info - * @returns undefined - */ - export function success(message: string, other?: any): void; - /** - * Log a warning within the console (colorized with yellow) - * @param message - Warning message to log - * @param other - Other values to pass to info - * @returns undefined - */ - export function warn(message: string, other?: any): void; +declare module "extendWithFirebaseConfig" { + export interface CypressEnvironmentOptions { + envName?: string; + firebaseProjectId?: string; + [k: string]: any; + } + export interface CypressConfig { + env?: CypressEnvironmentOptions; + baseUrl?: string; + [k: string]: any; + } + export interface ExtendedCypressConfigEnv { + [k: string]: any; + FIRESTORE_EMULATOR_HOST?: string; + FIREBASE_DATABASE_EMULATOR_HOST?: string; + GCLOUD_PROJECT?: string; + } + export interface ExtendedCypressConfig { + [k: string]: any; + env: ExtendedCypressConfigEnv; + } + export interface ExtendWithFirebaseConfigSettings { + localBaseUrl?: string; + localHostPort?: string | number; + } /** - * Log an error within console (colorized with red) - * @param message - Error message to log - * @param other - Other values to pass to info - * @returns undefined + * Load config for Cypress from .firebaserc. + * @param cypressConfig - Existing Cypress config + * @param settings - Settings + * @returns Cypress config extended with FIREBASE_PROJECT_ID and baseUrl */ - export function error(message: string, other?: any): void; + export default function extendWithFirebaseConfig(cypressConfig: CypressConfig): ExtendedCypressConfig; } declare module "node-utils" { /** @@ -322,11 +234,6 @@ declare module "node-utils" { * @returns Environment var name with prefix */ export function withEnvPrefix(varNameRoot: string, envName?: string): string; - /** - * Get path to cypress config file - * @returns Path to cypress config file - */ - export function getCypressConfigPath(): string; /** * Get environment variable based on the current CI environment * @param varNameRoot - variable name without the environment prefix @@ -361,69 +268,6 @@ declare module "node-utils" { * @returns Service account object */ export function getServiceAccountWithoutWarning(envSlug?: string): ServiceAccount | null; - export interface RunCommandOptions { - command: string; - args: string[]; - pipeOutput?: boolean; - } - /** - * Run a bash command using spawn pipeing the results to the main process - * @param runOptions - Options for command run - * @param runOptions.command - Command to be executed - * @param runOptions.args - Command arguments - * @returns Resolves with results of running the command - * @private - */ - export function runCommand(runOptions: RunCommandOptions): Promise; -} -declare module "createTestEnvFile" { - /** - * Create test environment file (cypress.env.json). Uses admin.auth().createCustomToken - * from firebase-admin authenticated with a Service Account which is loaded from environment - * variables or config.json in test folder. Parameters which are added/copied: - * - `TEST_UID` - * - `FIREBASE_API_KEY` - * - `FIREBASE_PROJECT_ID` - * - `FIREBASE_AUTH_JWT` - * @param envName - Environment name - * @returns Promise which resolves with the contents of the test env file - */ - export default function createTestEnvFile(envName: string): Promise; -} -declare module "extendWithFirebaseConfig" { - export interface CypressEnvironmentOptions { - envName?: string; - firebaseProjectId?: string; - [k: string]: any; - } - export interface CypressConfig { - env?: CypressEnvironmentOptions; - baseUrl: string; - [k: string]: any; - } - export interface ExtendedCypressConfig { - [k: string]: any; - FIREBASE_PROJECT_ID?: string; - baseUrl: string; - } - export interface ExtendWithFirebaseConfigSettings { - localBaseUrl?: string; - localHostPort?: string | number; - } - /** - * Get Firebase project id using Cypress config and config - * loaded from .firebaserc - * @param config - Cypress config object - * @returns Id of firbase project - */ - export function getFirebaseProjectIdFromConfig(config: CypressConfig): string | undefined; - /** - * Load config for Cypress from .firebaserc. - * @param cypressConfig - Existing Cypress config - * @param settings - Settings - * @returns Cypress config extended with FIREBASE_PROJECT_ID and baseUrl - */ - export default function extendWithFirebaseConfig(cypressConfig: CypressConfig, settings?: ExtendWithFirebaseConfigSettings): ExtendedCypressConfig; } declare module "firebase-utils" { import * as admin from 'firebase-admin'; @@ -464,8 +308,7 @@ declare module "firebase-utils" { export function deleteCollection(db: any, collectionPath: string, batchSize?: number): Promise; } declare module "tasks" { - import { FixtureData, FirestoreAction } from "buildFirestoreCommand"; - import { RTDBAction, RTDBCommandOptions } from "buildRtdbCommand"; + import { FixtureData, FirestoreAction, RTDBAction, RTDBCommandOptions } from "attachCustomCommands"; /** * @param adminInstance - firebase-admin instance * @param action - Action to run @@ -504,7 +347,7 @@ declare module "tasks" { */ export function createCustomToken(adminInstance: any, uid: string, settings?: any): Promise; } -declare module "pluginWithTasks" { +declare module "plugin" { import { ExtendedCypressConfig } from "extendWithFirebaseConfig"; /** * @param cypressOnFunc - on function from cypress plugins file @@ -516,8 +359,6 @@ declare module "pluginWithTasks" { } declare module "index" { import attachCustomCommands from "attachCustomCommands"; - import extendWithFirebaseConfig from "extendWithFirebaseConfig"; - import pluginWithTasks from "pluginWithTasks"; - export const plugin: typeof extendWithFirebaseConfig; - export { attachCustomCommands, extendWithFirebaseConfig, pluginWithTasks }; + import plugin from "plugin"; + export { attachCustomCommands, plugin }; } diff --git a/package.json b/package.json index a4f45fe5..28ba353a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cypress-firebase", - "version": "0.11.0", + "version": "1.0.0-alpha", "description": "Utilities to help testing Firebase projects with Cypress.", "main": "lib/index.js", "module": "lib/index.js", @@ -12,32 +12,26 @@ "build:typefile": "tsc --declaration --outFile index.d.ts --emitDeclarationOnly", "build:lib": "tsc", "build:esm": "tsc -m es6 --outDir lib-esm", - "watch": "yarn build:lib -- --watch", - "watch:es": "yarn build:es -- --watch", + "watch": "yarn build:lib --watch", + "watch:es": "yarn build:esm --watch", "lint": "eslint src/**.ts --ext .ts", - "lint:fix": "yarn lint -- --fix", + "lint:fix": "yarn lint --fix", "test": "mocha", "test:cov": "nyc --reporter=lcov --reporter=html yarn test", "codecov": "cat coverage/lcov.info | codecov", "prepare": "yarn clean && yarn build" }, - "bin": { - "cypress-firebase": "./bin/cypress-firebase" - }, "peerDependencies": { "firebase-tools": "^6 || ^7" }, "dependencies": { - "chalk": "^3.0.0", - "commander": "^4.1.0", - "figures": "^3.2.0", - "firebase-admin": "^8.9.2", - "firebase-tools-extra": "0.5.2", + "firebase-admin": "^8.10.0", "lodash": "^4.17.15" }, "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", "@types/chai": "^4.2.10", + "@types/debug": "^4.1.5", "@types/lodash": "^4.14.149", "@types/mocha": "^7.0.2", "@types/node": "^13.9.0", @@ -46,7 +40,6 @@ "@typescript-eslint/parser": "^2.23.0", "chai": "^4.2.0", "codecov": "^3.6.5", - "cross-env": "^7.0.2", "eslint": "^6.8.0", "eslint-config-airbnb-base": "^14.0.0", "eslint-config-prettier": "^6.10.0", @@ -55,7 +48,7 @@ "eslint-plugin-jsdoc": "^22.0.0", "eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-prettier": "^3.1.2", - "firebase-tools": "^7.14.0", + "firebase-tools": "^7.15.0", "husky": "^4.2.3", "lint-staged": "^10.0.8", "mocha": "^7.1.0", @@ -96,11 +89,14 @@ ], "husky": { "hooks": { - "pre-commit": "lint-staged" + "pre-commit": "yarn build:typefile && git add . && lint-staged" } }, "lint-staged": { - "*.{ts}": [ + "*.{json,md}": [ + "prettier --write" + ], + "*.{js,ts}": [ "eslint --fix" ] } diff --git a/src/attachCustomCommands.ts b/src/attachCustomCommands.ts index 8b1bca11..53ddd8da 100644 --- a/src/attachCustomCommands.ts +++ b/src/attachCustomCommands.ts @@ -1,13 +1,4 @@ import { isObject } from 'lodash'; -import buildFirestoreCommand, { - FirestoreAction, - FirestoreCommandOptions, - FixtureData, // eslint-disable-line @typescript-eslint/no-unused-vars -} from './buildFirestoreCommand'; -import buildRtdbCommand, { - RTDBAction, - RTDBCommandOptions, -} from './buildRtdbCommand'; export interface AttachCustomCommandParams { Cypress: any; @@ -15,6 +6,109 @@ export interface AttachCustomCommandParams { firebase: any; } +/** + * Action for Firestore + */ +export type FirestoreAction = 'get' | 'add' | 'set' | 'update' | 'delete'; + +/** + * Data from loaded fixture + */ +export interface FixtureData { + [k: string]: any; +} + +/** + * Options for building Firestore commands + */ +export interface FirestoreCommandOptions { + /** + * Whether or not to include createdAt and createdBy + */ + withMeta?: boolean; + /** + * Extra command line arguments to add to command + */ + args?: string[]; + /** + * firebase-tools CI token + */ + token?: string; + /** + * Whether or not to run recursive delete of collections + * and subcollections + */ + recursive?: boolean; + merge?: boolean; +} + +/** + * Action for Real Time Database + */ +export type RTDBAction = + | 'push' + | 'remove' + | 'set' + | 'update' + | 'delete' + | 'get'; + +/** + * Options for callRtdb commands + */ +export interface RTDBCommandOptions { + /** + * Whether or not to include meta data + */ + withMeta?: boolean; + /** + * Extra arguments + */ + args?: string[]; + /** + * CI Token + */ + token?: string; + /** + * Limit to the last results. If true is passed + * than query is limited to last 1 item. + */ + limitToLast?: boolean | number; + /** + * Limit to the first results. If true is passed + * than query is limited to last 1 item. + */ + limitToFirst?: boolean | number; + /** + * Select a child key by which to order results + */ + orderByChild?: string; + /** + * Order by key name + */ + orderByKey?: boolean; + /** + * Order by primitive value + */ + orderByValue?: boolean; + /** + * Start results at (based on specified ordering) + */ + startAt?: any; + /** + * End results at (based on specified ordering) + */ + endAt?: any; + /** + * Restrict results to (based on specified ordering) + */ + equalTo?: any; + /** + * Use the database .firebaseio.com (if omitted, use default database instance) + */ + instance?: string; +} + // Add custom commands to the existing Cypress interface declare global { /* eslint-disable @typescript-eslint/no-namespace */ @@ -30,7 +124,7 @@ declare global { * @see https://github.com/prescottprue/cypress-firebase#cylogin * @param uid - UID of user to login as * @param customClaims - Custom claims to attach to the custom token - * @example Env Based Login (TEST_UID or FIREBASE_AUTH_JWT) + * @example Env Based Login (TEST_UID) * cy.login() * @example Passed UID * cy.login('123SOMEUID') @@ -89,18 +183,10 @@ declare global { * cy.callFirestore('get', 'projects/test-project').then((project) => { * cy.log('Project:', project) * }) - * @example Recursive Delete - * const opts = { recursive: true } - * cy.callFirestore('delete', 'project/test-project', opts) - * @example Manually Loading Fixture + * @example Passing A Fixture * cy.fixture('fakeProject.json').then((project) => { * cy.callFirestore('add', 'projects', project) * }) - * @example Fixture Path - * cy.callFirestore('set', 'project/test-project', 'fakeProject.json') - * @example Other Args - * const opts = { args: ['-r'] } - * cy.callFirestore('delete', 'project/test-project', opts) */ callFirestore: ( action: FirestoreAction, @@ -152,65 +238,30 @@ export default function attachCustomCommands( */ Cypress.Commands.add('login', (uid?: string, customClaims?: any): any => { const userUid = uid || Cypress.env('TEST_UID'); - // Handle UID which is passed in - if (userUid) { - // Resolve with current user if they already exist - if ( - firebase.auth().currentUser && - userUid === firebase.auth().currentUser.uid - ) { - cy.log('Authed user already exists, login complete.'); - return undefined; - } - cy.log('Creating custom token for login...'); - - // Generate a custom token using createCustomToken task (if tasks are enabled) then login - if (Cypress.env('useCypressFirebaseTasks')) { - cy.log('Calling create customToken task', userUid); - return cy - .task('createCustomToken', { uid: userUid, customClaims }) - .then((customToken: string) => - loginWithCustomToken(firebase, customToken), - ); - } - - // Only use CLI login for passed UID (preserves backwards compatability for non-plugin verison) - if (uid) { - // Generate a custom token using firebase-tools-extra (cli) then login - return cy - .exec(`npx firebase-extra createCustomToken ${uid}`, { - timeout: 100000, - }) - .then((out: any) => { - const { stdout, stderr } = out; - // Reject with Error if error in firestoreCommand call - if (stderr) { - return Promise.reject(new Error(stderr)); - } - return loginWithCustomToken(firebase, stdout); - }); - } - } - - // Resolve with currentUser if they exist - if (firebase.auth().currentUser) { + // Resolve with current user if they already exist + if ( + firebase.auth().currentUser && + userUid === firebase.auth().currentUser.uid + ) { cy.log('Authed user already exists, login complete.'); - // Undefined is returned to prevent Cypress error: - // "Cypress detected that you invoked one or more cy commands in a custom command but returned a different value." return undefined; } - // Throw if JWT not within environment (passed uid case handled above) - if (!Cypress.env('FIREBASE_AUTH_JWT')) { - /** Log in using token * */ - const errMsg = - 'uid must be passed to cy.login or FIREBASE_AUTH_JWT must be set to cypress environment in order to login'; - cy.log(errMsg); - throw new Error(errMsg); + // Handle UID which is passed in + if (!userUid) { + throw new Error( + 'uid must be passed or TEST_UID set within environment to login', + ); } - // Otherwise, login with Token from environment - return loginWithCustomToken(firebase, Cypress.env('FIREBASE_AUTH_JWT')); + cy.log('Creating custom token for login...'); + + // Generate a custom token using createCustomToken task (if tasks are enabled) then login + return cy + .task('createCustomToken', { uid: userUid, customClaims }) + .then((customToken: string) => + loginWithCustomToken(firebase, customToken), + ); }); /** @@ -263,57 +314,22 @@ export default function attachCustomCommands( dataToWrite.createdAt = firebase.database.ServerValue.TIMESTAMP; } - if (Cypress.env('useCypressFirebaseTasks') === true) { - const taskSettings: any = { - action, - path: actionPath, - }; - // Add data only for write actions - if (['set', 'update', 'push'].includes(action)) { - taskSettings.data = dataToWrite; - } - // Use third argument as options for get action - if (action === 'get') { - taskSettings.options = data; - } else if (opts) { - // Attach options if they exist - taskSettings.options = opts; - } - return cy.task('callRtdb', taskSettings, { timeout: 100000 }); - } - - // Build command to pass to firebase-tools-extra - const rtdbCommand = buildRtdbCommand( - Cypress, + const taskSettings: any = { action, - actionPath, - dataToWrite, - opts, - ); - cy.log(`Calling RTDB command:\n${rtdbCommand}`); - - // Call firebase-tools-extra command - return cy.exec(rtdbCommand).then((out: any) => { - const { stdout, stderr } = out; - // Reject with Error if error in rtdbCommand call - if (stderr) { - cy.log(`Error in Firestore Command:\n${stderr}`); - return Promise.reject(stderr); - } - - // Parse result if using get action so that data can be verified - if (action === 'get' && typeof stdout === 'string') { - try { - return JSON.parse(stdout); - } catch (err) { - cy.log('Error parsing data from callRtdb response', out); - return Promise.reject(err); - } - } - - // Otherwise return unparsed output - return stdout; - }); + path: actionPath, + }; + // Add data only for write actions + if (['set', 'update', 'push'].includes(action)) { + taskSettings.data = dataToWrite; + } + // Use third argument as options for get action + if (action === 'get') { + taskSettings.options = data; + } else if (opts) { + // Attach options if they exist + taskSettings.options = opts; + } + return cy.task('callRtdb', taskSettings); }, ); @@ -347,63 +363,22 @@ export default function attachCustomCommands( } } - if (Cypress.env('useCypressFirebaseTasks') === true) { - const taskSettings: any = { - action, - path: actionPath, - }; - // Add data only for write actions - if (['set', 'update', 'add'].includes(action)) { - taskSettings.data = dataToWrite; - } - // Use third argument as options for get action - if (action === 'get') { - taskSettings.options = data; - } else if (opts) { - // Attach options if they exist - taskSettings.options = opts; - } - return cy.task('callFirestore', taskSettings, { timeout: 100000 }); - } - - const firestoreCommand = buildFirestoreCommand( - Cypress, + const taskSettings: any = { action, - actionPath, - dataToWrite, - opts, - ); - - cy.log(`Calling Firestore command:\n${firestoreCommand}`); - - return cy.exec(firestoreCommand, { timeout: 100000 }).then((out: any) => { - const { stdout, stderr } = out; - // Reject with Error if error in firestoreCommand call - if (stderr) { - cy.log(`Error in Firestore Command:\n${stderr}`); - return Promise.reject(stderr); - } - // Parse result if using get action so that data can be verified - if ( - action === 'get' && - (typeof stdout === 'string' || stdout instanceof String) - ) { - try { - if (stdout === '') { - return null; - } - return JSON.parse( - stdout instanceof String ? stdout.toString() : stdout, - ); - } catch (err) { - cy.log('Error parsing data from callFirestore response', out); - return Promise.reject(err); - } - } - - // Otherwise return unparsed output - return stdout; - }); + path: actionPath, + }; + // Add data only for write actions + if (['set', 'update', 'add'].includes(action)) { + taskSettings.data = dataToWrite; + } + // Use third argument as options for get action + if (action === 'get') { + taskSettings.options = data; + } else if (opts) { + // Attach options if they exist + taskSettings.options = opts; + } + return cy.task('callFirestore', taskSettings); }, ); } diff --git a/src/buildFirestoreCommand.ts b/src/buildFirestoreCommand.ts deleted file mode 100644 index f60eff51..00000000 --- a/src/buildFirestoreCommand.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { isObject } from 'lodash'; -import { addDefaultArgs, getArgsString } from './utils'; -import { FIREBASE_TOOLS_BASE_COMMAND, FIREBASE_EXTRA_PATH } from './constants'; - -/** - * Action for Firestore - */ -export type FirestoreAction = 'get' | 'add' | 'set' | 'update' | 'delete'; - -/** - * Data from loaded fixture - */ -export interface FixtureData { - [k: string]: any; -} - -/** - * Options for building Firestore commands - */ -export interface FirestoreCommandOptions { - /** - * Whether or not to include createdAt and createdBy - */ - withMeta?: boolean; - /** - * Extra command line arguments to add to command - */ - args?: string[]; - /** - * firebase-tools CI token - */ - token?: string; - /** - * Whether or not to run recursive delete of collections - * and subcollections - */ - recursive?: boolean; - merge?: boolean; -} - -/** - * Build Command to run Firestore action. Commands call either firebase-extra - * (in bin/firebaseExtra.js) or firebase-tools directly. FIREBASE_TOKEN must - * exist in environment if running commands that call firebase-tools. - * @param Cypress - Cypress object - * @param action - action to run on Firstore (i.e. "add", "delete") - * @param actionPath - Firestore path where action should be run - * @param fixturePathOrData - Path to fixture. If object is passed, - * it is used as options. - * @param [opts={}] - Options object - * @param opts.args - Extra arguments to be passed with command - * @param opts.token - Firebase CI token to pass as the token argument - * @returns Command string to be used with cy.exec - */ -export default function buildFirestoreCommand( - Cypress: any, - action: FirestoreAction, - actionPath: string, - fixturePathOrData?: FixtureData | string | FirestoreCommandOptions, - opts?: FirestoreCommandOptions, -): string { - const options: FirestoreCommandOptions = - isObject(fixturePathOrData) && !opts ? fixturePathOrData : opts || {}; - const { args = [], recursive } = options; - const argsWithDefaults = addDefaultArgs(Cypress, args, { - ...options, - disableYes: true, - }); - const commandStr = `${FIREBASE_EXTRA_PATH} firestore ${action} ${actionPath}`; - switch (action) { - case 'delete': { - const deleteArgsWithDefaults = addDefaultArgs(Cypress, args, options); - // Add -r to args string (recursive) if recursive option is true otherwise specify shallow - const finalDeleteArgs = deleteArgsWithDefaults.concat( - recursive ? '-r' : '--shallow', - ); - const deleteArgsStr = getArgsString(finalDeleteArgs); - // Call to firebase-tools-extra if using emulator since firebase-tools does not support - // calling emulator through database commands. See this issue for - // more detail: https://github.com/firebase/firebase-tools/issues/1957 - const isUsingEmulator = !!Cypress.env('FIRESTORE_EMULATOR_HOST'); - const commandPath = isUsingEmulator - ? FIREBASE_EXTRA_PATH - : FIREBASE_TOOLS_BASE_COMMAND; - return `${commandPath} firestore${ - !isUsingEmulator ? ':' : ' ' - }${action} ${actionPath}${deleteArgsStr}`; - } - case 'get': { - return `${FIREBASE_EXTRA_PATH} firestore ${action} ${actionPath}`; - } - default: { - const argsStr = getArgsString(argsWithDefaults); - if (!isObject(fixturePathOrData)) { - return `${commandStr} ${fixturePathOrData}${argsStr}`; - } - return `${commandStr} '${JSON.stringify(fixturePathOrData)}'${argsStr}`; - } - } -} diff --git a/src/buildRtdbCommand.ts b/src/buildRtdbCommand.ts deleted file mode 100644 index bf05ed9a..00000000 --- a/src/buildRtdbCommand.ts +++ /dev/null @@ -1,217 +0,0 @@ -import { isObject, isBoolean } from 'lodash'; -import { FixtureData } from './buildFirestoreCommand'; -import { addDefaultArgs, getArgsString } from './utils'; -import { FIREBASE_TOOLS_BASE_COMMAND, FIREBASE_EXTRA_PATH } from './constants'; - -/** - * Action for Real Time Database - */ -export type RTDBAction = - | 'push' - | 'remove' - | 'set' - | 'update' - | 'delete' - | 'get'; - -/** - * Options for callRtdb commands - */ -export interface RTDBCommandOptions { - /** - * Whether or not to include meta data - */ - withMeta?: boolean; - /** - * Extra arguments - */ - args?: string[]; - /** - * CI Token - */ - token?: string; - /** - * Limit to the last results. If true is passed - * than query is limited to last 1 item. - */ - limitToLast?: boolean | number; - /** - * Limit to the first results. If true is passed - * than query is limited to last 1 item. - */ - limitToFirst?: boolean | number; - /** - * Select a child key by which to order results - */ - orderByChild?: string; - /** - * Order by key name - */ - orderByKey?: boolean; - /** - * Order by primitive value - */ - orderByValue?: boolean; - /** - * Start results at (based on specified ordering) - */ - startAt?: any; - /** - * End results at (based on specified ordering) - */ - endAt?: any; - /** - * Restrict results to (based on specified ordering) - */ - equalTo?: any; - /** - * Use the database .firebaseio.com (if omitted, use default database instance) - */ - instance?: string; -} - -const ARGS_MAP = { - orderByChild: '--order-by', - orderByKey: '--order-by-key', - orderByValue: '--order-by-value', - limitToFirst: '--limit-to-first', - limitToLast: '--limit-to-last', - startAt: '--start-at', - endAt: '--end-at', - equalTo: '--equal-to', - instance: '--instance', -}; - -/** - * Generate RTDB args from command options - * @param Cypress - Cypress object - * @param args - Extra arguments to be passed with command - * @param [options={}] - Options object - * @returns A list of args for get command - */ -function generageRtdbGetArgs( - Cypress: any, - args: any[], - options: RTDBCommandOptions, -): string[] { - const getDataArgsWithDefaults = addDefaultArgs(Cypress, args, { - disableYes: true, - }); - - if (options.orderByChild && !options.limitToLast && !options.limitToLast) { - getDataArgsWithDefaults.push(ARGS_MAP.orderByChild); - getDataArgsWithDefaults.push(options.orderByChild); - } - if (options.orderByKey && !options.limitToLast) { - getDataArgsWithDefaults.push(ARGS_MAP.orderByKey); - } - if (options.orderByValue) { - getDataArgsWithDefaults.push(ARGS_MAP.orderByValue); - } - if (options.startAt) { - getDataArgsWithDefaults.push(ARGS_MAP.startAt); - getDataArgsWithDefaults.push(options.startAt); - } - if (options.endAt) { - getDataArgsWithDefaults.push(ARGS_MAP.endAt); - getDataArgsWithDefaults.push(options.endAt); - } - if (options.equalTo) { - getDataArgsWithDefaults.push(ARGS_MAP.equalTo); - getDataArgsWithDefaults.push(options.equalTo); - } - - if (options.instance) { - getDataArgsWithDefaults.push(ARGS_MAP.instance); - getDataArgsWithDefaults.push(options.instance); - } - - if (options.limitToLast) { - const lastCount = isBoolean(options.limitToLast) ? 1 : options.limitToLast; - if (!options.orderByChild) { - getDataArgsWithDefaults.push( - `--order-by-key --limit-to-last ${lastCount}`, - ); - } else { - getDataArgsWithDefaults.push( - `--order-by ${options.orderByChild} --limit-to-last ${lastCount}`, - ); - } - } - - if (options.limitToFirst) { - const lastCount = isBoolean(options.limitToFirst) - ? 1 - : options.limitToFirst; - if (!options.orderByChild) { - getDataArgsWithDefaults.push( - `--order-by-key --limit-to-first ${lastCount}`, - ); - } else { - getDataArgsWithDefaults.push( - `--order-by ${options.orderByChild} --limit-to-first ${lastCount}`, - ); - } - } - - return getDataArgsWithDefaults; -} - -/** - * Build Command to run Real Time Database action. All commands call - * firebase-tools directly, so FIREBASE_TOKEN must exist in environment. - * @param Cypress - Cypress object - * @param action - action to run on Firstore (i.e. "add", "delete") - * @param actionPath - Firestore path where action should be run - * @param fixturePath - Path to fixture. If object is passed, - * it is used as options. - * @param [opts={}] - Options object - * @param opts.args - Extra arguments to be passed with command - * @returns Command string to be used with cy.exec - */ -export default function buildRtdbCommand( - Cypress: any, - action: RTDBAction, - actionPath: string, - fixturePath?: FixtureData | RTDBCommandOptions | any, - opts?: RTDBCommandOptions, -): string { - const options: RTDBCommandOptions = isObject(fixturePath) - ? fixturePath - : opts || {}; - const { args = [] } = options; - const argsWithDefaults = addDefaultArgs(Cypress, args); - const argsStr = getArgsString(argsWithDefaults); - // Add preceding slash if it doesn't already exist (required by firebase-tools) - const cleanActionPath = actionPath.startsWith('/') - ? actionPath - : `/${actionPath}`; - // Call to firebase-tools-extra if using emulator since firebase-tools does not support - // calling emulator through database commands. See this issue for - // more detail: https://github.com/firebase/firebase-tools/issues/1957 - const commandPath = Cypress.env('FIREBASE_DATABASE_EMULATOR_HOST') - ? FIREBASE_EXTRA_PATH - : FIREBASE_TOOLS_BASE_COMMAND; - switch (action) { - case 'remove': - return `${commandPath} database:${action} ${cleanActionPath}${argsStr}`; - case 'delete': - return `${commandPath} database:remove ${cleanActionPath}${argsStr}`; - case 'get': { - const getDataArgsWithDefaults = generageRtdbGetArgs( - Cypress, - args, - options, - ); - const getDataArgsStr = getArgsString(getDataArgsWithDefaults); - return `${commandPath} database:${action} ${cleanActionPath}${getDataArgsStr}`; - } - default: { - const commandString = `${commandPath} database:${action} ${cleanActionPath}`; - if (!isObject(fixturePath)) { - return `${commandString} ${fixturePath}${argsStr}`; - } - return `${commandString} -d '${JSON.stringify(fixturePath)}'${argsStr}`; - } - } -} diff --git a/src/constants.ts b/src/constants.ts deleted file mode 100644 index 0900fe3a..00000000 --- a/src/constants.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const DEFAULT_TEST_FOLDER_PATH = 'cypress'; -export const DEFAULT_SERVICE_ACCOUNT_PATH = 'serviceAccount.json'; -export const DEFAULT_TEST_ENV_FILE_NAME = 'cypress.env.json'; -export const DEFAULT_TEST_CONFIG_FILE_NAME = 'cypress.json'; -export const DEFAULT_CONFIG_FILE_NAME = 'config.json'; -export const FIREBASE_CONFIG_FILE_NAME = '.firebaserc'; -export const FIREBASE_TOOLS_BASE_COMMAND = 'npx firebase'; -// Path to firebase-tools-extra Command Line tool (wrapper for firebase-tools) -export const FIREBASE_EXTRA_PATH = 'npx firebase-extra'; -export const FIREBASE_TOOLS_YES_ARGUMENT = '-y'; diff --git a/src/createTestEnvFile.ts b/src/createTestEnvFile.ts deleted file mode 100644 index 438fc133..00000000 --- a/src/createTestEnvFile.ts +++ /dev/null @@ -1,164 +0,0 @@ -import chalk from 'chalk'; -import { writeFile } from 'fs'; -import { pickBy, get, isUndefined, find } from 'lodash'; -import { promisify } from 'util'; -import { - envVarBasedOnCIEnv, - getServiceAccount, - readJsonFile, - getCypressConfigPath, - withEnvPrefix, - getEnvironmentSlug, -} from './node-utils'; -import { to } from './utils'; -import { DEFAULT_TEST_ENV_FILE_NAME } from './constants'; -import { FIREBASE_CONFIG_FILE_PATH, TEST_ENV_FILE_PATH } from './filePaths'; -import * as logger from './logger'; - -const writeFilePromise = promisify(writeFile); - -/* eslint-disable no-irregular-whitespace */ -/** - * Create test environment file (cypress.env.json). Uses admin.auth().createCustomToken - * from firebase-admin authenticated with a Service Account which is loaded from environment - * variables or config.json in test folder. Parameters which are added/copied: - * - `TEST_UID` - * - `FIREBASE_API_KEY` - * - `FIREBASE_PROJECT_ID` - * - `FIREBASE_AUTH_JWT` - * @param envName - Environment name - * @returns Promise which resolves with the contents of the test env file - */ -export default async function createTestEnvFile( - envName: string, -): Promise { - // Get UID from environment (falls back to cypress/config.json for local) - const varName = 'TEST_UID'; - const uid = envVarBasedOnCIEnv(varName, envName); - // Throw if UID is missing in environment - if (!uid) { - const errMsg = `${chalk.cyan( - varName, - )} is missing from environment. Confirm that either ${chalk.cyan( - withEnvPrefix(varName), - )} or ${chalk.cyan( - varName, - )} are set within environment variables, ${chalk.cyan( - DEFAULT_TEST_ENV_FILE_NAME, - )}, or ${chalk.cyan(getCypressConfigPath())}.`; - throw new Error(errMsg); - } - - // Get project from .firebaserc - const firebaserc = readJsonFile(FIREBASE_CONFIG_FILE_PATH); - - // Get current Cypress settings - const currentCypressEnvSettings = readJsonFile(TEST_ENV_FILE_PATH); - - const envSlug = envName || getEnvironmentSlug(); - - // Get service account from local file falling back to environment variables - const serviceAccount = getServiceAccount(envName); - - // Confirm service account has all parameters - const serviceAccountMissingParams = pickBy(serviceAccount, isUndefined); - - if (Object.keys(serviceAccountMissingParams).length > 0) { - const errMsg = `Service Account is missing parameters: ${Object.keys( - serviceAccountMissingParams, - ).join(', ')}`; - throw new Error(errMsg); - } - - // Get projectId from service account (handling multiple types) - const FIREBASE_PROJECT_ID = - serviceAccount && - (serviceAccount.project_id || (serviceAccount as any).projectId); - - logger.info( - `Generating custom auth token for Firebase project with projectId: ${chalk.cyan( - FIREBASE_PROJECT_ID, - )}`, - ); - - // Remove firebase- prefix (was added to database names for a short period of time) - const cleanedProjectId = FIREBASE_PROJECT_ID.replace('firebase-', ''); - - // TODO: Look into if inline require is still needed - // It used to be associated with an error in utils when loaded in browser - // environment (the reason why node-utils exists). - const admin = require('firebase-admin'); // eslint-disable-line @typescript-eslint/no-var-requires, global-require - - // Initialize Firebase app with service account - const appFromSA = admin.initializeApp( - { - credential: admin.credential.cert(serviceAccount), - databaseURL: `https://${cleanedProjectId}.firebaseio.com`, - }, - 'withServiceAccount', - ); - - // Read developer claims object from cypress/config.json - const developerClaims = envVarBasedOnCIEnv('DEVELOPER_CLAIMS', envName); - // Check if object is empty. If not, return it, otherwise set developer claims as { isTesting: true } - const defaultDeveloperClaims = - !!developerClaims && Object.keys(developerClaims).length > 0 - ? developerClaims - : { isTesting: true }; - - // Create auth token - const [err, customToken] = await to( - appFromSA.auth().createCustomToken(uid, defaultDeveloperClaims), - ); - - // Handle errors generating custom token - if (err) { - logger.error( - `Custom token could not be generated for uid: ${chalk.cyan(uid)}`, - err.message || err, - ); - throw err; - } - - logger.success( - `Custom token generated successfully, writing to ${chalk.cyan( - DEFAULT_TEST_ENV_FILE_NAME, - )}`, - ); - - // Remove firebase app - appFromSA.delete(); - - // Create config object to be written into test env file by combining with existing config - const newCypressConfig = { - ...currentCypressEnvSettings, - TEST_UID: uid, - FIREBASE_PROJECT_ID, - FIREBASE_API_KEY: - envVarBasedOnCIEnv('FIREBASE_API_KEY', envName) || - // firebase.apiKey from createConfig with firebase.projectId matching service account project_id - get( - find( - get(firebaserc, 'ci.createConfig'), - branchConfig => - get(branchConfig, 'firebase.projectId') === FIREBASE_PROJECT_ID, - ), - 'firebase.apiKey', - ) || - get(firebaserc, `ci.createConfig.${envSlug}.firebase.apiKey`) || - get(firebaserc, `ci.createConfig.master.firebase.apiKey`), - FIREBASE_AUTH_JWT: customToken, - }; - - // Write config file to cypress.env.json - await writeFilePromise( - TEST_ENV_FILE_PATH, - JSON.stringify(newCypressConfig, null, 2), - ); - - logger.success( - `${chalk.cyan(DEFAULT_TEST_ENV_FILE_NAME)} updated successfully`, - ); - - return newCypressConfig; -} diff --git a/src/extendWithFirebaseConfig.ts b/src/extendWithFirebaseConfig.ts index 473e4236..2d232b72 100644 --- a/src/extendWithFirebaseConfig.ts +++ b/src/extendWithFirebaseConfig.ts @@ -1,8 +1,3 @@ -import { get } from 'lodash'; -import { existsSync } from 'fs'; -import { FIREBASE_CONFIG_FILE_NAME } from './constants'; -import { readJsonFile } from './node-utils'; - export interface CypressEnvironmentOptions { envName?: string; firebaseProjectId?: string; @@ -11,14 +6,20 @@ export interface CypressEnvironmentOptions { export interface CypressConfig { env?: CypressEnvironmentOptions; - baseUrl: string; + baseUrl?: string; + [k: string]: any; +} + +export interface ExtendedCypressConfigEnv { [k: string]: any; + FIRESTORE_EMULATOR_HOST?: string; + FIREBASE_DATABASE_EMULATOR_HOST?: string; + GCLOUD_PROJECT?: string; } export interface ExtendedCypressConfig { [k: string]: any; - FIREBASE_PROJECT_ID?: string; - baseUrl: string; + env: ExtendedCypressConfigEnv; } export interface ExtendWithFirebaseConfigSettings { @@ -26,61 +27,6 @@ export interface ExtendWithFirebaseConfigSettings { localHostPort?: string | number; } -interface FirebaseRcProjects { - [name: string]: string; -} - -interface FirebaseRc { - projects?: FirebaseRcProjects; -} - -/** - * Load .firebaserc file - * @returns Contents of .firebaserc file parsed as JSON - */ -function loadFirebaseRc(): FirebaseRc { - const rcFilePath = `${process.cwd()}/${FIREBASE_CONFIG_FILE_NAME}`; - if (!existsSync(rcFilePath)) { - throw new Error(`${FIREBASE_CONFIG_FILE_NAME} file not found`); - } - return readJsonFile(rcFilePath); -} - -/** - * Get environment name from cypress config or default to "local" - * @param cypressConfig - Cypress config object - * @returns Environment name from config - */ -function getEnvNameFromConfig(cypressConfig: CypressConfig): string { - if (!cypressConfig.env || !cypressConfig.env.envName) { - return 'local'; - } - return cypressConfig.env.envName; -} - -/** - * Get Firebase project id using Cypress config and config - * loaded from .firebaserc - * @param config - Cypress config object - * @returns Id of firbase project - */ -export function getFirebaseProjectIdFromConfig( - config: CypressConfig, -): string | undefined { - const projectIdFromConfig = get(config, 'env.firebaseProjectId'); - if (projectIdFromConfig) { - return projectIdFromConfig; - } - const firebaseRcConfig = loadFirebaseRc(); - const envName = getEnvNameFromConfig(config); - const projectsConfig = firebaseRcConfig && firebaseRcConfig.projects; - const firebaseProjectId = - (projectsConfig && projectsConfig[envName]) || - projectsConfig?.master || - projectsConfig?.default; - return firebaseProjectId; -} - /** * Load config for Cypress from .firebaserc. * @param cypressConfig - Existing Cypress config @@ -89,37 +35,28 @@ export function getFirebaseProjectIdFromConfig( */ export default function extendWithFirebaseConfig( cypressConfig: CypressConfig, - settings: ExtendWithFirebaseConfigSettings = {}, ): ExtendedCypressConfig { let newEnv: any = {}; - if (cypressConfig && cypressConfig.env) { + if (cypressConfig?.env) { newEnv = cypressConfig.env; } const { FIREBASE_DATABASE_EMULATOR_HOST, FIRESTORE_EMULATOR_HOST, + GCLOUD_PROJECT, } = process.env; - if (FIRESTORE_EMULATOR_HOST) { + if (FIRESTORE_EMULATOR_HOST && !newEnv.FIRESTORE_EMULATOR_HOST) { newEnv.FIRESTORE_EMULATOR_HOST = FIRESTORE_EMULATOR_HOST; } - if (FIREBASE_DATABASE_EMULATOR_HOST) { + if ( + FIREBASE_DATABASE_EMULATOR_HOST && + !newEnv.FIREBASE_DATABASE_EMULATOR_HOST + ) { newEnv.FIREBASE_DATABASE_EMULATOR_HOST = FIREBASE_DATABASE_EMULATOR_HOST; } - // Return original config if baseUrl is already set (so it is not runover) - if (cypressConfig.baseUrl) { - return { ...cypressConfig, env: newEnv }; + if (GCLOUD_PROJECT && !newEnv.GCLOUD_PROJECT) { + newEnv.GCLOUD_PROJECT = GCLOUD_PROJECT; } - const { localBaseUrl, localHostPort = '3000' } = settings as any; - const envName = getEnvNameFromConfig(cypressConfig); - const FIREBASE_PROJECT_ID = getFirebaseProjectIdFromConfig(cypressConfig); - // Extend Firebase config with new config - return { - ...cypressConfig, - FIREBASE_PROJECT_ID, - env: newEnv, - baseUrl: - envName === 'local' - ? localBaseUrl || `http://localhost:${localHostPort}` - : `https://${FIREBASE_PROJECT_ID}.firebaseapp.com`, - }; + // Return original config if baseUrl is already set (so it is not runover) + return { ...cypressConfig, env: newEnv }; } diff --git a/src/filePaths.ts b/src/filePaths.ts deleted file mode 100644 index 095aff4f..00000000 --- a/src/filePaths.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from 'path'; -import { - FIREBASE_CONFIG_FILE_NAME, - DEFAULT_TEST_FOLDER_PATH, - DEFAULT_CONFIG_FILE_NAME, - DEFAULT_TEST_ENV_FILE_NAME, - DEFAULT_TEST_CONFIG_FILE_NAME, -} from './constants'; - -export const FIREBASE_CONFIG_FILE_PATH = path.join( - process.cwd(), - FIREBASE_CONFIG_FILE_NAME, -); -export const TEST_CONFIG_FILE_PATH = path.join( - process.cwd(), - DEFAULT_TEST_CONFIG_FILE_NAME, -); -export const TEST_ENV_FILE_PATH = path.join( - process.cwd(), - DEFAULT_TEST_ENV_FILE_NAME, -); -export const LOCAL_CONFIG_FILE_PATH = path.join( - process.cwd(), - DEFAULT_TEST_FOLDER_PATH, - DEFAULT_CONFIG_FILE_NAME, -); diff --git a/src/firebase-utils.ts b/src/firebase-utils.ts index 7cc91824..558f308f 100644 --- a/src/firebase-utils.ts +++ b/src/firebase-utils.ts @@ -1,5 +1,4 @@ import * as admin from 'firebase-admin'; -import { get } from 'lodash'; import { getServiceAccount, getServiceAccountWithoutWarning, @@ -89,7 +88,10 @@ export function initializeFirebase(adminInstance: any): admin.app.App { process.env.FIREBASE_DATABASE_EMULATOR_HOST }?ns=${fbConfig.projectId || 'local'}`; /* eslint-disable no-console */ - console.log('Using RTDB emulator with DB URL:', fbConfig.databaseURL); + console.log( + 'cypress-firebase: Using RTDB emulator with DB URL:', + fbConfig.databaseURL, + ); /* eslint-enable no-console */ } @@ -106,7 +108,7 @@ export function initializeFirebase(adminInstance: any): admin.app.App { const firestoreSettings = firestoreSettingsFromEnv(); /* eslint-disable no-console */ console.log( - 'Using Firestore emulator with settings:', + 'cypress-firebase: Using Firestore emulator with settings:', firestoreSettings, ); /* eslint-enable no-console */ @@ -115,11 +117,11 @@ export function initializeFirebase(adminInstance: any): admin.app.App { } else { // Get service account from local file falling back to environment variables const serviceAccount = getServiceAccount(); - const projectId = get(serviceAccount, 'project_id'); + const projectId = serviceAccount?.project_id; if (!isString(projectId)) { const missingProjectIdErr = 'Error project_id from service account to initialize Firebase.'; - console.error(missingProjectIdErr); // eslint-disable-line no-console + console.error(`cypress-firebase: ${missingProjectIdErr}`); // eslint-disable-line no-console throw new Error(missingProjectIdErr); } const cleanProjectId = projectId.replace( @@ -128,7 +130,7 @@ export function initializeFirebase(adminInstance: any): admin.app.App { ); /* eslint-disable no-console */ console.log( - `Initialized with Service Account for project "${cleanProjectId}"`, + `cypress-firebase: Initialized with Service Account for project "${cleanProjectId}"`, ); /* eslint-enable no-console */ fbInstance = adminInstance.initializeApp({ @@ -140,7 +142,7 @@ export function initializeFirebase(adminInstance: any): admin.app.App { } catch (err) { /* eslint-disable no-console */ console.error( - 'Error initializing firebase-admin instance from service account.', + 'cypress-firebase: Error initializing firebase-admin instance from service account.', ); /* eslint-enable no-console */ throw err; diff --git a/src/index.ts b/src/index.ts index 19494511..73933de5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,4 @@ import attachCustomCommands from './attachCustomCommands'; -import extendWithFirebaseConfig from './extendWithFirebaseConfig'; -import pluginWithTasks from './pluginWithTasks'; +import plugin from './plugin'; -export const plugin = extendWithFirebaseConfig; - -export { attachCustomCommands, extendWithFirebaseConfig, pluginWithTasks }; // eslint-disable-line import/prefer-default-export +export { attachCustomCommands, plugin }; // eslint-disable-line import/prefer-default-export diff --git a/src/logger.ts b/src/logger.ts deleted file mode 100644 index 19749914..00000000 --- a/src/logger.ts +++ /dev/null @@ -1,99 +0,0 @@ -import chalk from 'chalk'; -import fig from 'figures'; - -const colorMapping = { - warn: 'yellow', - success: 'green', - error: 'red', -}; - -const iconMapping = { - info: 'ℹ', - warn: '⚠', - success: '✔', - error: '✖', -}; - -const prefixMapping = { - warn: 'Warning: ', - error: 'Error: ', -}; - -type LogType = 'success' | 'error' | 'warn' | 'info'; - -/** - * Create a function for coloring the log based on type - * @param type - Log type - * @returns A color logger function - */ -function colorLogger(type: LogType): Function { - const color = (colorMapping as any)[type]; - return (text: string): any => { - const chalkColor: any = (chalk as any)[color]; - return chalkColor ? chalkColor(text) : text; - }; -} - -/** - * Log using a specific type (colorizes for CLI) - * @param type - Log type - * @param message - Message containing info to log - * @param other - Other values to pass to info - */ -function logType(type: LogType, message: string, other?: any): void { - const icon: any = iconMapping[type]; - const prefix: any = (prefixMapping as any)[type]; - const colorLog = colorLogger(type); - /* eslint-disable no-console */ - console.log( - `${icon ? colorLog(fig(icon)) : ''} ${ - prefix ? colorLog(prefix) : '' - }${message}`, - ); - /* eslint-enable no-console */ - if (other) { - console.log('\n', other); // eslint-disable-line no-console - } -} - -export const log = console.log; // eslint-disable-line - -/** - * Log info within console - * @param message - Message containing info to log - * @param other - Other values to pass to info - * @returns undefined - */ -export function info(message: string, other?: any): void { - return logType('info', message, other); -} - -/** - * Log a success within console (colorized with green) - * @param message - Success message to log - * @param other - Other values to pass to info - * @returns undefined - */ -export function success(message: string, other?: any): void { - return logType('success', message, other); -} - -/** - * Log a warning within the console (colorized with yellow) - * @param message - Warning message to log - * @param other - Other values to pass to info - * @returns undefined - */ -export function warn(message: string, other?: any): void { - return logType('warn', message, other); -} - -/** - * Log an error within console (colorized with red) - * @param message - Error message to log - * @param other - Other values to pass to info - * @returns undefined - */ -export function error(message: string, other?: any): void { - return logType('error', message, other); -} diff --git a/src/node-utils.ts b/src/node-utils.ts index 128a9bda..985630e8 100644 --- a/src/node-utils.ts +++ b/src/node-utils.ts @@ -1,18 +1,5 @@ /* eslint-disable @typescript-eslint/camelcase */ -import { get } from 'lodash'; -import path from 'path'; -import chalk from 'chalk'; -import stream from 'stream'; -import { spawn } from 'child_process'; import { existsSync, readFileSync } from 'fs'; -import { TEST_CONFIG_FILE_PATH, TEST_ENV_FILE_PATH } from './filePaths'; -import { - DEFAULT_TEST_FOLDER_PATH, - DEFAULT_CONFIG_FILE_NAME, -} from './constants'; -import { info, error, warn } from './logger'; - -const DEFAULT_BASE_PATH = process.cwd(); /** * Get settings from firebaserc file @@ -28,11 +15,14 @@ export function readJsonFile(filePath: string): any { const fileBuffer = readFileSync(filePath, 'utf8'); return JSON.parse(fileBuffer.toString()); } catch (err) { - error( - `Unable to parse ${chalk.cyan( - filePath.replace(DEFAULT_BASE_PATH, ''), + /* eslint-disable no-console */ + console.error( + `cypress-firebase: Unable to parse ${filePath.replace( + process.cwd(), + '', )} - JSON is most likely not valid`, ); + /* eslint-enable no-console */ return {}; } } @@ -91,51 +81,6 @@ export function withEnvPrefix(varNameRoot: string, envName?: string): string { return `${envPrefix}${varNameRoot}`; } -/** - * Get path to local service account - * @param envName - Environment option - * @returns Path to service account - */ -function getServiceAccountPath(envName?: string): string { - const withSuffix = path.join( - DEFAULT_BASE_PATH, - `serviceAccount-${envName || ''}.json`, - ); - if (existsSync(withSuffix)) { - return withSuffix; - } - return path.join(DEFAULT_BASE_PATH, 'serviceAccount.json'); -} - -/** - * Get cypress folder path from cypress.json config file or fallback to - * default folder path ('cypress') - * @returns Path of folder containing cypress folders like "integration" - */ -function getCypressFolderPath(): string { - const cypressConfig = readJsonFile(TEST_CONFIG_FILE_PATH); // eslint-disable-line no-use-before-define - const integrationTestsFolderPath = get(cypressConfig, 'integrationFolder'); - return integrationTestsFolderPath - ? integrationTestsFolderPath - .split('/') - .slice(0, -1) // Drop last item (equivalent to dropRight) - .join('/') - : DEFAULT_TEST_FOLDER_PATH; -} - -/** - * Get path to cypress config file - * @returns Path to cypress config file - */ -export function getCypressConfigPath(): string { - const cypressFolderPath = getCypressFolderPath(); - const cypressConfigFilePath = path.join( - cypressFolderPath, - DEFAULT_CONFIG_FILE_NAME, - ); - return cypressConfigFilePath; -} - /** * Get environment variable based on the current CI environment * @param varNameRoot - variable name without the environment prefix @@ -147,17 +92,7 @@ export function getCypressConfigPath(): string { */ export function envVarBasedOnCIEnv(varNameRoot: string, envName?: string): any { const combined = withEnvPrefix(varNameRoot, envName); - const localConfigFilePath = getCypressConfigPath(); - - // Config file used for environment (local, containers) from main test path ({integrationFolder}/config.json) - if (existsSync(localConfigFilePath)) { - const localConfigObj = readJsonFile(localConfigFilePath); - const valueFromLocalConfig = - localConfigObj[combined] || localConfigObj[varNameRoot]; - if (valueFromLocalConfig) { - return valueFromLocalConfig; - } - } + const TEST_ENV_FILE_PATH = `${process.cwd()}/cypress.env.json`; // Config file used for environment from main cypress environment file (cypress.env.json) if (existsSync(TEST_ENV_FILE_PATH)) { @@ -186,11 +121,11 @@ function getParsedEnvVar(varNameRoot: string, envName?: string): any { const val = envVarBasedOnCIEnv(varNameRoot, envName); const combinedVar = withEnvPrefix(varNameRoot, envName); if (!val) { - error( - `${chalk.cyan( - combinedVar, - )} not found, make sure it is set within environment variables.`, + /* eslint-disable no-console */ + console.error( + `cypress-firebase: ${combinedVar} not found, make sure it is set within environment variables.`, ); + /* eslint-enable no-console */ } try { if (typeof val === 'string') { @@ -198,7 +133,7 @@ function getParsedEnvVar(varNameRoot: string, envName?: string): any { } return val; } catch (err) { - error(`Error parsing ${combinedVar}`); + console.error(`cypress-firebase: Error parsing ${combinedVar}`); // eslint-disable-line no-console return val; } } @@ -222,16 +157,20 @@ interface ServiceAccount { * @returns Service account object */ export function getServiceAccount(envSlug?: string): ServiceAccount { - const serviceAccountPath = getServiceAccountPath(envSlug); + const serviceAccountPath = `${process.cwd()}/serviceAccount.json`; // Check for local service account file (Local dev) if (existsSync(serviceAccountPath)) { return readJsonFile(serviceAccountPath); // eslint-disable-line global-require, import/no-dynamic-require } - info( - `Service account does not exist at path: "${chalk.cyan( - serviceAccountPath.replace(`${DEFAULT_BASE_PATH}/`, ''), + + /* eslint-disable no-console */ + console.log( + `cypress-firebase: Service account does not exist at path: "${serviceAccountPath.replace( + `${process.cwd()}/`, + '', )}" falling back to environment variables...`, ); + /* eslint-enable no-console */ // Use environment variables (CI) const serviceAccountEnvVar = envVarBasedOnCIEnv('SERVICE_ACCOUNT', envSlug); @@ -240,31 +179,31 @@ export function getServiceAccount(envSlug?: string): ServiceAccount { try { return JSON.parse(serviceAccountEnvVar); } catch (err) { - warn( - `Issue parsing ${chalk.cyan( - 'SERVICE_ACCOUNT', - )} environment variable from string to object, returning string`, + /* eslint-disable no-console */ + console.warn( + `cypress-firebase: Issue parsing 'SERVICE_ACCOUNT' environment variable from string to object, returning string`, ); + /* eslint-enable no-console */ } } return serviceAccountEnvVar; } - info( - `Service account does not exist as a single environment variable within ${chalk.cyan( + /* eslint-disable no-console */ + console.info( + `cypress-firebase: Service account does not exist as a single environment variable within 'SERVICE_ACCOUNT' or ${withEnvPrefix( 'SERVICE_ACCOUNT', - )} or ${chalk.cyan( - withEnvPrefix('SERVICE_ACCOUNT'), )}, checking separate environment variables...`, ); + /* eslint-enable no-console */ const clientId = envVarBasedOnCIEnv('FIREBASE_CLIENT_ID', envSlug); if (clientId) { - warn( - `${chalk.cyan('FIREBASE_CLIENT_ID')} will override ${chalk.cyan( - 'FIREBASE_TOKEN', - )} for auth when calling firebase-tools - this may cause unexepected behavior`, + /* eslint-disable no-console */ + console.warn( + "cypress-firebase: 'FIREBASE_CLIENT_ID' will override 'FIREBASE_TOKEN' for auth when calling firebase-tools - this may cause unexepected behavior", ); + /* eslint-enable no-console */ } return { type: 'service_account', @@ -288,7 +227,7 @@ export function getServiceAccount(envSlug?: string): ServiceAccount { export function getServiceAccountWithoutWarning( envSlug?: string, ): ServiceAccount | null { - const serviceAccountPath = getServiceAccountPath(envSlug); + const serviceAccountPath = `${process.cwd()}/serviceAccount.json`; // Check for local service account file (Local dev) if (existsSync(serviceAccountPath)) { return readJsonFile(serviceAccountPath); // eslint-disable-line global-require, import/no-dynamic-require @@ -301,11 +240,11 @@ export function getServiceAccountWithoutWarning( try { return JSON.parse(serviceAccountEnvVar); } catch (err) { - warn( - `Issue parsing ${chalk.cyan( - 'SERVICE_ACCOUNT', - )} environment variable from string to object, returning string`, + /* eslint-disable no-console */ + console.warn( + `cypress-firebase: Issue parsing 'SERVICE_ACCOUNT' environment variable from string to object, returning string`, ); + /* eslint-enable no-console */ } } return serviceAccountEnvVar; @@ -313,64 +252,3 @@ export function getServiceAccountWithoutWarning( return null; } - -export interface RunCommandOptions { - command: string; - args: string[]; - pipeOutput?: boolean; -} - -/** - * Run a bash command using spawn pipeing the results to the main process - * @param runOptions - Options for command run - * @param runOptions.command - Command to be executed - * @param runOptions.args - Command arguments - * @returns Resolves with results of running the command - * @private - */ -export function runCommand(runOptions: RunCommandOptions): Promise { - const { command, args, pipeOutput = true } = runOptions; - return new Promise((resolve, reject): void => { - const child = spawn(command, args); - let output: any; - let error: any; - const customStream = new stream.Writable(); - const customErrorStream = new stream.Writable(); - /* eslint-disable no-underscore-dangle */ - customStream._write = (data, ...argv): void => { - output += data; - if (pipeOutput) { - process.stdout._write(data, ...argv); - } - }; - customErrorStream._write = (data, ...argv): void => { - error += data; - if (pipeOutput) { - process.stderr._write(data, ...argv); - } - }; - /* eslint-enable no-underscore-dangle */ - // Pipe errors and console output to main process - child.stdout.pipe(customStream); - child.stderr.pipe(customErrorStream); - // When child exits resolve or reject based on code - child.on('exit', (code: number): void => { - if (code !== 0) { - // Resolve for npm warnings - if (output && output.includes('npm WARN')) { - return resolve(output); - } - reject(error || output); - } else { - // Remove leading undefined from response - resolve( - output && output.indexOf('undefined') === 0 - ? output.replace('undefined', '') - : output, - ); - } - }); - }); -} - -process.env.FORCE_COLOR = 'true'; diff --git a/src/pluginWithTasks.ts b/src/plugin.ts similarity index 100% rename from src/pluginWithTasks.ts rename to src/plugin.ts diff --git a/src/tasks.ts b/src/tasks.ts index 14217bc8..55dfb972 100644 --- a/src/tasks.ts +++ b/src/tasks.ts @@ -1,5 +1,9 @@ -import { FixtureData, FirestoreAction } from './buildFirestoreCommand'; -import { RTDBAction, RTDBCommandOptions } from './buildRtdbCommand'; +import { + FixtureData, + FirestoreAction, + RTDBAction, + RTDBCommandOptions, +} from './attachCustomCommands'; import { slashPathToFirestoreRef, deleteCollection, @@ -52,7 +56,10 @@ export function callRtdb( */ function handleError(err: Error): Promise { /* eslint-disable no-console */ - console.error(`Error with RTDB "${action}" at path "${actionPath}" :`, err); + console.error( + `cypress-firebase: Error with RTDB "${action}" at path "${actionPath}" :`, + err, + ); /* eslint-enable no-console */ return Promise.reject(err); } @@ -128,7 +135,7 @@ export function callFirestore( function handleError(err: Error): Promise { /* eslint-disable no-console */ console.error( - `Error with Firestore "${action}" at path "${actionPath}" :`, + `cypress-firebase: Error with Firestore "${action}" at path "${actionPath}" :`, err, ); /* eslint-enable no-console */ diff --git a/src/utils.ts b/src/utils.ts deleted file mode 100644 index 8a40989a..00000000 --- a/src/utils.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { FIREBASE_TOOLS_YES_ARGUMENT } from './constants'; - -/** - * Async await wrapper for easy error handling - * @param promise - Promise to wrap responses of in array - * @param errorExt - Extension for error - * @returns Resolves and rejects with an array - */ -export function to( - promise: Promise, - errorExt?: object, -): Promise<[U | null, T | undefined]> { - return promise - .then<[null, T]>((data: T) => [null, data]) - .catch<[U, undefined]>((err: U) => { - if (errorExt) { - Object.assign(err, errorExt); - } - - return [err, undefined]; - }); -} - -/** - * Create command arguments string from an array of arguments by joining them - * with a space including a leading space. If no args provided, empty string - * is returned - * @param args - Command arguments to convert into a string - * @returns Arguments section of command string - */ -export function getArgsString(args: string[] | any): string { - return args && args.length ? ` ${args.join(' ')}` : ''; -} - -/** - * Add default Firebase arguments to arguments array. - * @param Cypress - Cypress object - * @param args - arguments array - * @param [opts={}] - Options object - * @param opts.token - Firebase CI token to pass as the token argument - * @param [opts.disableYes=false] - Whether or not to disable the yes argument - * @returns Default args list - */ -export function addDefaultArgs( - Cypress: any, - args: string[], - opts?: any, -): string[] { - const { disableYes = false } = opts || {}; - const newArgs = [...args]; - // TODO: Load this in a way that understands environment. Currently this will - // go to the first project id that is defined, not which one should be used - // for the specified environment - const projectId = - Cypress.env('firebaseProjectId') || - Cypress.env('FIREBASE_PROJECT_ID') || - Cypress.env('STAGE_FIREBASE_PROJECT_ID'); - // Include project id command so command runs on the current project - if (projectId && !newArgs.includes('-P') && !newArgs.includes(projectId)) { - newArgs.push('-P'); - newArgs.push(projectId); - } - const tokenFromEnv = Cypress.env('FIREBASE_TOKEN'); - // Include token if it exists in environment - if (!newArgs.includes('--token') && (opts?.token || tokenFromEnv)) { - newArgs.push('--token'); - newArgs.push(opts?.token || tokenFromEnv); - } - // Add Firebase's automatic approval argument if it is not already in newArgs - if (!disableYes && !newArgs.includes(FIREBASE_TOOLS_YES_ARGUMENT)) { - newArgs.push(FIREBASE_TOOLS_YES_ARGUMENT); - } - if (opts?.withMeta) { - // Add -m to argsWithDefaults string (meta) if withmeta option is true - newArgs.push('-m'); - } - return newArgs; -} diff --git a/test/unit/buildFirestoreCommand.spec.ts b/test/unit/buildFirestoreCommand.spec.ts deleted file mode 100644 index abe2d16e..00000000 --- a/test/unit/buildFirestoreCommand.spec.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { expect } from 'chai'; -import sinon from 'sinon'; -import buildFirestoreCommand from '../../src/buildFirestoreCommand'; - -const addSpy = sinon.spy(); -const envSpy = sinon.spy(); -const Cypress = { Commands: { add: addSpy }, env: envSpy }; - -const firebaseExtraPath = 'npx firebase-extra'; -const firebaseToolsPath = 'npx firebase'; - -describe('buildFirestoreCommand', () => { - describe('get', () => { - it('calls get with a path', () => { - const actionPath = 'some/path'; - expect(buildFirestoreCommand(Cypress, 'get', actionPath)).to.equal( - `${firebaseExtraPath} firestore get ${actionPath}`, - ); - }); - }); - - describe('set', () => { - it('creates a set command with path and object data', () => { - const actionPath = 'some/path'; - const data = { some: 'other' }; - expect(buildFirestoreCommand(Cypress, 'set', actionPath, data)).to.equal( - `${firebaseExtraPath} firestore set ${actionPath} '${JSON.stringify( - data, - )}'`, - ); - }); - - it('creates a set command with path, object data, and withMeta flag', () => { - const actionPath = 'some/path'; - const data = { some: 'other' }; - expect( - buildFirestoreCommand(Cypress, 'set', actionPath, data, { - withMeta: true, - }), - ).to.equal( - `${firebaseExtraPath} firestore set ${actionPath} '${JSON.stringify( - data, - )}' -m`, - ); - }); - - it('creates a set command with path, fixture path, and withMeta flag', () => { - const actionPath = 'some/path'; - const action = 'set'; - const fixturePath = 'some/fixture'; - expect( - buildFirestoreCommand(Cypress, action, actionPath, fixturePath, { - withMeta: true, - }), - ).to.equal( - `${firebaseExtraPath} firestore ${action} ${actionPath} ${fixturePath} -m`, - ); - }); - }); - - describe('update', () => { - it('calls update with a path', () => { - const actionPath = 'some/path'; - const action = 'update'; - const data = { some: 'other' }; - expect(buildFirestoreCommand(Cypress, action, actionPath, data)).to.equal( - `${firebaseExtraPath} firestore ${action} ${actionPath} '${JSON.stringify( - data, - )}'`, - ); - }); - }); - - describe('delete', () => { - it('calls delete with a path and --shallow by default', () => { - const actionPath = 'some/path'; - expect(buildFirestoreCommand(Cypress, 'delete', actionPath)).to.equal( - `${firebaseToolsPath} firestore:delete ${actionPath} -y --shallow`, - ); - }); - - it('supports recursive delete (by passing -r flag)', () => { - const actionPath = 'some/path'; - expect( - buildFirestoreCommand(Cypress, 'delete', actionPath, { - recursive: true, - }), - ).to.equal(`${firebaseToolsPath} firestore:delete ${actionPath} -y -r`); - }); - - it('creates command which calls firebase-extra if emulator is enabled', () => { - const actionPath = 'some/path'; - expect( - buildFirestoreCommand( - { - ...Cypress, - env: (envVarName?: string) => { - if (envVarName === 'FIRESTORE_EMULATOR_HOST') { - return true; - } - }, - }, - 'delete', - actionPath, - { - recursive: true, - }, - ), - ).to.equal(`npx firebase-extra firestore delete ${actionPath} -y -r`); - }); - }); -}); diff --git a/test/unit/buildRtdbCommand.spec.ts b/test/unit/buildRtdbCommand.spec.ts deleted file mode 100644 index c47b35eb..00000000 --- a/test/unit/buildRtdbCommand.spec.ts +++ /dev/null @@ -1,273 +0,0 @@ -import { expect } from 'chai'; -import sinon from 'sinon'; -import buildRtdbCommand from '../../src/buildRtdbCommand'; - -const addSpy = sinon.spy(); -const envSpy = sinon.spy(); -const Cypress = { Commands: { add: addSpy }, env: envSpy }; - -const firebasePath = 'npx firebase'; - -describe('buildRtdbCommand', () => { - describe('get', () => { - it('calls get with a path', () => { - const actionPath = 'some/path'; - const action = 'get'; - expect(buildRtdbCommand(Cypress, action, actionPath)).to.equal( - `${firebasePath} database:${action} /${actionPath}`, - ); - }); - - it('supports orderByChild (--order-by flag for firebase-tools)', () => { - const actionPath = 'some/path'; - const action = 'get'; - const orderByChild = 'asdf'; - expect( - buildRtdbCommand(Cypress, action, actionPath, { orderByChild }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --order-by ${orderByChild}`, - ); - }); - - it('supports orderByKey (--order-by-key flag for firebase-tools)', () => { - const actionPath = 'some/path'; - const action = 'get'; - expect( - buildRtdbCommand(Cypress, action, actionPath, { orderByKey: true }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --order-by-key`, - ); - }); - - it('supports orderByValue (--order-by-value flag for firebase-tools)', () => { - const actionPath = 'some/path'; - const action = 'get'; - expect( - buildRtdbCommand(Cypress, action, actionPath, { orderByValue: true }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --order-by-value`, - ); - }); - - it('supports startAt (--start-at flag for firebase-tools)', () => { - const actionPath = 'some/path'; - const action = 'get'; - const startAt = 'asdf'; - expect( - buildRtdbCommand(Cypress, action, actionPath, { startAt }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --start-at ${startAt}`, - ); - }); - - it('supports endAt (--end-at flag for firebase-tools)', () => { - const actionPath = 'some/path'; - const action = 'get'; - const endAt = 'asdf'; - expect(buildRtdbCommand(Cypress, action, actionPath, { endAt })).to.equal( - `${firebasePath} database:${action} /${actionPath} --end-at ${endAt}`, - ); - }); - - it('supports equalTo (--equal-to flag for firebase-tools)', () => { - const actionPath = 'some/path'; - const action = 'get'; - const equalTo = 'asdf'; - expect( - buildRtdbCommand(Cypress, action, actionPath, { equalTo }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --equal-to ${equalTo}`, - ); - }); - - it('supports instance (--instance flag for firebase-tools)', () => { - const actionPath = 'some/path'; - const action = 'get'; - const instance = 'asdf'; - expect( - buildRtdbCommand(Cypress, action, actionPath, { instance }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --instance ${instance}`, - ); - }); - - it('supports limitToLast (--limitToLast flag for firebase-tools)', () => { - const actionPath = 'some/path'; - const action = 'get'; - const limitToLast = 'asdf'; - expect( - buildRtdbCommand(Cypress, action, actionPath, { limitToLast }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --order-by-key --limit-to-last ${limitToLast}`, - ); - }); - - describe('supports limitToFirst (--limitToFirst flag for firebase-tools)', () => { - it('as a boolean (defaults to 1 with order by key)', () => { - const actionPath = 'some/path'; - const action = 'get'; - const limitToFirst = 1; - expect( - buildRtdbCommand(Cypress, action, actionPath, { limitToFirst }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --order-by-key --limit-to-first ${limitToFirst}`, - ); - }); - - it('as a string', () => { - const actionPath = 'some/path'; - const action = 'get'; - const limitToFirst = 'asdf'; - expect( - buildRtdbCommand(Cypress, action, actionPath, { limitToFirst }), - ).to.equal( - `${firebasePath} database:${action} /${actionPath} --order-by-key --limit-to-first ${limitToFirst}`, - ); - }); - }); - - it('creates command which includes firebase-extra if emulator is enabled', () => { - const actionPath = 'some/path'; - const action = 'get'; - const limitToLast = 'asdf'; - expect( - buildRtdbCommand( - { - ...Cypress, - env: (envVarName?: string) => { - if (envVarName === 'FIREBASE_DATABASE_EMULATOR_HOST') { - return true; - } - }, - }, - action, - actionPath, - { limitToLast }, - ), - ).to.equal( - `npx firebase-extra database:${action} /${actionPath} --order-by-key --limit-to-last ${limitToLast}`, - ); - }); - }); - - describe('set', () => { - it('creates a set command with path and object data', () => { - const actionPath = 'some/path'; - const action = 'set'; - const data = { some: 'other' }; - expect(buildRtdbCommand(Cypress, action, actionPath, data)).to.equal( - `${firebasePath} database:${action} /${actionPath} -d '${JSON.stringify( - data, - )}' -y`, - ); - }); - - it('creates a set command with path and non-string value', () => { - const actionPath = 'some/path'; - const action = 'set'; - const data = 123; - expect(buildRtdbCommand(Cypress, action, actionPath, data)).to.equal( - `${firebasePath} database:${action} /${actionPath} ${data} -y`, - ); - }); - - it('creates a set command with path and string value', () => { - const actionPath = 'some/path'; - const action = 'set'; - const data = '123ABC'; - expect(buildRtdbCommand(Cypress, action, actionPath, data)).to.equal( - `${firebasePath} database:${action} /${actionPath} ${data} -y`, - ); - }); - - it('creates command which includes firebase-extra if emulator is enabled', () => { - const actionPath = 'some/path'; - const action = 'set'; - const data = '123ABC'; - expect( - buildRtdbCommand( - { - ...Cypress, - env: (envVarName?: string) => { - if (envVarName === 'FIREBASE_DATABASE_EMULATOR_HOST') { - return true; - } - }, - }, - action, - actionPath, - data, - ), - ).to.equal( - `npx firebase-extra database:${action} /${actionPath} ${data} -y`, - ); - }); - }); - - describe('update', () => { - it('calls update with a path', () => { - const actionPath = 'some/path'; - const action = 'update'; - const data = { some: 'other' }; - expect(buildRtdbCommand(Cypress, action, actionPath, data)).to.equal( - `${firebasePath} database:${action} /${actionPath} -d '${JSON.stringify( - data, - )}' -y`, - ); - }); - - it('creates command which includes firebase-extra if emulator is enabled', () => { - const actionPath = 'some/path'; - const action = 'update'; - const data = { some: 'other' }; - expect( - buildRtdbCommand( - { - ...Cypress, - env: (envVarName?: string) => { - if (envVarName === 'FIREBASE_DATABASE_EMULATOR_HOST') { - return true; - } - }, - }, - action, - actionPath, - data, - ), - ).to.equal( - `npx firebase-extra database:${action} /${actionPath} -d '${JSON.stringify( - data, - )}' -y`, - ); - }); - }); - - describe('remove', () => { - it('calls remove with a path', () => { - const actionPath = 'some/path'; - const action = 'remove'; - expect(buildRtdbCommand(Cypress, action, actionPath)).to.equal( - `${firebasePath} database:${action} /${actionPath} -y`, - ); - }); - - it('creates command which includes firebase-extra if emulator is enabled', () => { - const actionPath = 'some/path'; - const action = 'remove'; - expect( - buildRtdbCommand( - { - ...Cypress, - env: (envVarName?: string) => { - if (envVarName === 'FIREBASE_DATABASE_EMULATOR_HOST') { - return true; - } - }, - }, - action, - actionPath, - ), - ).to.equal(`npx firebase-extra database:${action} /${actionPath} -y`); - }); - }); -}); diff --git a/test/unit/extendWithFirebaseConfig.spec.ts b/test/unit/extendWithFirebaseConfig.spec.ts new file mode 100644 index 00000000..7cdc927d --- /dev/null +++ b/test/unit/extendWithFirebaseConfig.spec.ts @@ -0,0 +1,75 @@ +import { expect } from 'chai'; +import extendWithFirebaseConfig from '../../src/extendWithFirebaseConfig'; + +describe('extendWithFirebaseConfig', () => { + it('returns an object', () => { + const originalConfig = {}; + expect(extendWithFirebaseConfig(originalConfig)).to.be.an('object'); + }); + + it('attaches GCLOUD_PROJECT to cypress env', () => { + const projectName = 'test-project'; + process.env.GCLOUD_PROJECT = projectName; + const originalConfig = {}; + expect(extendWithFirebaseConfig(originalConfig)).to.have.nested.property( + 'env.GCLOUD_PROJECT', + projectName, + ); + }); + + it('does not run over existing GCLOUD_PROJECT', () => { + const projectName = 'test-project'; + process.env.GCLOUD_PROJECT = 'another-project'; + const originalConfig = { + env: { GCLOUD_PROJECT: projectName }, + }; + expect(extendWithFirebaseConfig(originalConfig)).to.have.nested.property( + 'env.GCLOUD_PROJECT', + projectName, + ); + }); + + it('attaches FIREBASE_DATABASE_EMULATOR_HOST to cypress env', () => { + const emulatorHost = 'localhost:9000'; + process.env.FIREBASE_DATABASE_EMULATOR_HOST = emulatorHost; + const originalConfig = {}; + expect(extendWithFirebaseConfig(originalConfig)).to.have.nested.property( + 'env.FIREBASE_DATABASE_EMULATOR_HOST', + emulatorHost, + ); + }); + + it('does not run over existing FIREBASE_DATABASE_EMULATOR_HOST', () => { + const emulatorHost = 'localhost:9000'; + process.env.FIREBASE_DATABASE_EMULATOR_HOST = 'localhost:1000'; + const originalConfig = { + env: { FIREBASE_DATABASE_EMULATOR_HOST: emulatorHost }, + }; + expect(extendWithFirebaseConfig(originalConfig)).to.have.nested.property( + 'env.FIREBASE_DATABASE_EMULATOR_HOST', + emulatorHost, + ); + }); + + it('attaches FIRESTORE_EMULATOR_HOST to cypress env', () => { + const emulatorHost = 'localhost:8080'; + process.env.FIRESTORE_EMULATOR_HOST = emulatorHost; + const originalConfig = {}; + expect(extendWithFirebaseConfig(originalConfig)).to.have.nested.property( + 'env.FIRESTORE_EMULATOR_HOST', + emulatorHost, + ); + }); + + it('does not run over existing FIRESTORE_EMMLATOR_HOST', () => { + const emulatorHost = 'localhost:8080'; + process.env.FIRESTORE_EMMLATOR_HOST = emulatorHost; + const originalConfig = { + env: { FIRESTORE_EMMLATOR_HOST: emulatorHost }, + }; + expect(extendWithFirebaseConfig(originalConfig)).to.have.nested.property( + 'env.FIRESTORE_EMMLATOR_HOST', + emulatorHost, + ); + }); +}); diff --git a/test/unit/index.spec.ts b/test/unit/index.spec.ts index 62503ad5..dca4ff98 100644 --- a/test/unit/index.spec.ts +++ b/test/unit/index.spec.ts @@ -1,5 +1,6 @@ -import { attachCustomCommands, extendWithFirebaseConfig } from '../../src'; import { expect } from 'chai'; +import { attachCustomCommands } from '../../src'; +import extendWithFirebaseConfig from '../../src/extendWithFirebaseConfig'; describe('Main index', () => { it('Should export "attachCustomCommands" function', () => { @@ -9,4 +10,4 @@ describe('Main index', () => { it('Should export "extendWithFirebaseConfig" function', () => { expect(extendWithFirebaseConfig).to.be.a('function'); }); -}); \ No newline at end of file +}); diff --git a/yarn.lock b/yarn.lock index 86fc6449..a84bf481 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,190 +2,184 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "^7.8.3" "@babel/core@^7.7.5": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" - integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.7" - "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.7" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" + integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.7" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.7" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.7" convert-source-map "^1.7.0" debug "^4.1.0" + gensync "^1.0.0-beta.1" json5 "^2.1.0" lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.7.4", "@babel/generator@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" - integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== +"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" + integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.7" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" - integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== dependencies: - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" -"@babel/helper-get-function-arity@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" - integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helper-split-export-declaration@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" - integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== dependencies: - "@babel/types" "^7.7.4" + "@babel/types" "^7.8.3" -"@babel/helpers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" - integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== dependencies: - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.7.4", "@babel/parser@^7.7.5", "@babel/parser@^7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" - integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== - -"@babel/runtime@^7.4.5": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" - integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/runtime@^7.6.3": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" - integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/template@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" - integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/traverse@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" - integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" +"@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" + integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== + +"@babel/runtime@^7.4.5", "@babel/runtime@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.7.4", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.6" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" - integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== +"@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== dependencies: esutils "^2.0.2" lodash "^4.17.13" to-fast-properties "^2.0.0" -"@firebase/app-types@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.5.0.tgz#b9b51a37956ec166debc8784a2fb30b5ffc9e921" - integrity sha512-8j+vCXTpAkYGcFk86mPZ90V6HMFmn196RIEW9Opi0PN+VrPFC1l/eW0gptM8v7VXaQhECOxws3TN2g+dDaeSYA== +"@firebase/app-types@0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.5.3.tgz#b1e4b2229c9af7a1dd2ecc88bc80dba8f56a3ec1" + integrity sha512-PH1egwhlEhZSp7/jiUNszG1BX1NBUuL86Zd1ZoXT3qaFS9YSGGEY7n0DKgI0fWoVa5GzfbzKOC+J1e4T/+PY1Q== -"@firebase/auth-interop-types@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.1.tgz#b3e1bc5ea8b2df1c376b5fc14aae8a3572dbcace" - integrity sha512-rNpCOyCspZvNDoQVQLQQgWAGBMB2ClCWKN1c8cEFgLNFgnMJrjVB+tcL7KW2q2UjKa7l8Mxgwys7szTiEDAcvA== +"@firebase/auth-interop-types@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.4.tgz#e81589f58508630a5bffa604d7c949a0d01ea97b" + integrity sha512-CLKNS84KGAv5lRnHTQZFWoR11Ti7gIPFirDDXWek/fSU+TdYdnxJFR5XSD4OuGyzUYQ3Dq7aVj5teiRdyBl9hA== -"@firebase/component@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.1.tgz#03fa3d47a258b9cecc075cb7674db12d3327f84b" - integrity sha512-e9MrCYH10+CvGyJsuntdqH+Gtkbvm33GBEPprKClq9Qh36gXZxtvlUPwXACJfaD34tqxFB2V0pGi7i8iJUA+AA== +"@firebase/component@0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.7.tgz#ea722393af1b28902b0603e1bf45dd291d1a07f7" + integrity sha512-FAoi1ELlrVY9Uy9zzTlhc+3nn5VdYe36C/OpDnFXb2K/AH0jR6wcVTvLqGYFBPFVjgqO5MKCn3Mq3DCnro8QGg== dependencies: - "@firebase/util" "0.2.36" - tslib "1.10.0" + "@firebase/util" "0.2.42" + tslib "1.11.1" -"@firebase/database-types@0.4.10": - version "0.4.10" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.4.10.tgz#baa10bc78cfb57dd6159e0264b8305994a8e24d0" - integrity sha512-66puLsckt5HASgRN3CfhLn2iuGrgCjfH3u17OL0f5MtEweYLx+yW2QW5d539Wx30xD4B+INEdaRetw6xEa9t7g== +"@firebase/database-types@0.4.13": + version "0.4.13" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.4.13.tgz#bca2c02859dcab92f1f967ee067304c642feebc1" + integrity sha512-7bDsD90Q9YmmB/A90UnZLv7jqgULClxAT1C4aw1dGfcS49XEUh2uuoW3NqS5vvtbMHJiurrN73ADddwgCrltww== dependencies: - "@firebase/app-types" "0.5.0" + "@firebase/app-types" "0.5.3" "@firebase/database@^0.5.17": - version "0.5.17" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.5.17.tgz#67631f57b1f809bea4c5c528cd951e8a502882f6" - integrity sha512-nufRBK1p2adTEDvUQ1lEfa0nd2BvBe6tlDbO0q9zMQaTMg9dDjTomKRsc3byyRDhhTwDNwX4oUCFCTNTOHoKaA== - dependencies: - "@firebase/auth-interop-types" "0.1.1" - "@firebase/component" "0.1.1" - "@firebase/database-types" "0.4.10" - "@firebase/logger" "0.1.33" - "@firebase/util" "0.2.36" + version "0.5.23" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.5.23.tgz#372f0fda8fe057287f47afb6053a49bd58c5afa1" + integrity sha512-6zVa3dJoUT8bpiSai/aIbGPEDrGaFwR1iMMmXCYSf6su46ZYMLOYjSV/+nOHZaT4/TyQZY3D+iIL0WyRuEVOjA== + dependencies: + "@firebase/auth-interop-types" "0.1.4" + "@firebase/component" "0.1.7" + "@firebase/database-types" "0.4.13" + "@firebase/logger" "0.1.37" + "@firebase/util" "0.2.42" faye-websocket "0.11.3" - tslib "1.10.0" + tslib "1.11.1" -"@firebase/logger@0.1.33": - version "0.1.33" - resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.1.33.tgz#cfb49e836fada9190dbb90e9053dd3876772c1bb" - integrity sha512-EiewY1by3mYanihTa5Wsl2/gseFzmRmZr61YtVgQN5TXpX1OlQtqds6cCoR8Hh8VueeZJg6lTV9VLVQqu6iqHw== +"@firebase/logger@0.1.37": + version "0.1.37" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.1.37.tgz#0fa4263bc529ed2afd3da81d81f51c6035fa7145" + integrity sha512-uiVVfVlhCZLfUBqOCUuh8V3t+8lKTFJ6mgDoH99YFbuWYUUch8OHWQG70qg/I6m7IRIZLtHyPt3OCxYgI0R6Yw== -"@firebase/util@0.2.36": - version "0.2.36" - resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.2.36.tgz#0c4edb3573f567f407b76dd767691fe72819acf2" - integrity sha512-AqrXca+8rMbPyp7zMO9BoZrdbb8wsT5kmqwge9QW4ZBxTTSQrvBs7VylGx5Ede4VbhqRJvkmo7G73/dp2L+wbA== +"@firebase/util@0.2.42": + version "0.2.42" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.2.42.tgz#bfbc284bbc4c36579379a8236a7db2f12bd462bb" + integrity sha512-ihFavcy7OdSMwZySidRSi58RkiqVVcmVAVy2J5VSKWaCQcBL8+4+H0ytmmXplxKCaQAsyqj1XhJx+MaCJyXknQ== dependencies: - tslib "1.10.0" + tslib "1.11.1" "@google-cloud/common@^2.1.1": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-2.1.2.tgz#cefab7522d652d4ee48ab4719e2fe2d6c117db4c" - integrity sha512-VAjWRrTEgcGujj/MgTTAtjjzeDoQqs/FDT6DG7004QFZoJsSwBmx2vGpI5TJmCuxLWvhEc0Xs5AMOvhgt7FLSw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-2.4.0.tgz#2783b7de8435024a31453510f2dab5a6a91a4c82" + integrity sha512-zWFjBS35eI9leAHhjfeOYlK5Plcuj/77EzstnrJIZbKgF/nkqjcQuGiMCpzCwOfPyUbz8ZaEOYgbHa759AKbjg== dependencies: "@google-cloud/projectify" "^1.0.0" "@google-cloud/promisify" "^1.0.0" @@ -193,70 +187,69 @@ duplexify "^3.6.0" ent "^2.2.0" extend "^3.0.2" - google-auth-library "^5.0.0" + google-auth-library "^5.5.0" retry-request "^4.0.0" - teeny-request "^5.2.1" + teeny-request "^6.0.0" "@google-cloud/firestore@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-3.1.0.tgz#6aee5753108c7793aa8f56213d7b45526a7e2539" - integrity sha512-rTaTPxmccLGqNfs/fAGFW4xQ00JHUniTx7XHmrbnus2iNciFl5nWJCpAcCUaiTGF7AT+z9ZPohPoLY63VnchWQ== + version "3.7.0" + resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-3.7.0.tgz#a5ee03e5f86cc0a7d125f2099b9391b366d77f93" + integrity sha512-c/PZRyGAc30rGZEgPICbRRPvfL6gVau1vyDDgcbsUdK1mxI/BGaqqmx9KitJ2yIfBU+uA+U4p4RziOijTcXylw== dependencies: - bun "^0.0.12" deep-equal "^2.0.0" functional-red-black-tree "^1.0.1" - google-gax "^1.12.0" + google-gax "^1.13.0" + readable-stream "^3.4.0" through2 "^3.0.0" "@google-cloud/paginator@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-2.0.1.tgz#89ca97933eecfdd7eaa07bd79ed01c9869c9531b" - integrity sha512-HZ6UTGY/gHGNriD7OCikYWL/Eu0sTEur2qqse2w6OVsz+57se3nTkqH14JIPxtf0vlEJ8IJN5w3BdZ22pjCB8g== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-2.0.3.tgz#c7987ad05d1c3ebcef554381be80e9e8da4e4882" + integrity sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg== dependencies: arrify "^2.0.0" extend "^3.0.2" "@google-cloud/precise-date@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-1.0.2.tgz#1464a301d76f8b77e7a7948b430809a31d5aca3b" - integrity sha512-EXk9MYAoKz3hD0ITklFIe4aPK+tHk/3WL2DvTD28wAPpYiIMClXTUqX9fanhdurhO1KUU06HBoU3+Rks32yTTQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-1.0.3.tgz#39c600ed52213f4158692a72c90d13b2162a93d2" + integrity sha512-wWnDGh9y3cJHLuVEY8t6un78vizzMWsS7oIWKeFtPj+Ndy+dXvHW0HTx29ZUhen+tswSlQYlwFubvuRP5kKdzQ== "@google-cloud/projectify@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-1.0.1.tgz#f654c2ea9de923294ec814ff07c42891abf2d143" - integrity sha512-xknDOmsMgOYHksKc1GPbwDLsdej8aRNIA17SlSZgQdyrcC0lx0OGo4VZgYfwoEU1YS8oUxF9Y+6EzDOb0eB7Xg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-1.0.4.tgz#28daabebba6579ed998edcadf1a8f3be17f3b5f0" + integrity sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg== "@google-cloud/promisify@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-1.0.2.tgz#e581aa79ff71fb6074acc1cc59e3d81bf84ce07b" - integrity sha512-7WfV4R/3YV5T30WRZW0lqmvZy9hE2/p9MvpI34WuKa2Wz62mLu5XplGTFEMK6uTbJCLWUxTcZ4J4IyClKucE5g== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-1.0.4.tgz#ce86ffa94f9cfafa2e68f7b3e4a7fad194189723" + integrity sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ== "@google-cloud/pubsub@^1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-1.1.5.tgz#c993a806376b42218b590bdada393ef86cc4185c" - integrity sha512-gFWYWkTVRgR0qPhQzUoKXu9m21P6zcJ9ORWMX+LcHqJuc1NNBpn7MTMoQTZQIof6GPUo0bTMzvkyTrq9wVTS8A== + version "1.6.0" + resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-1.6.0.tgz#135e58aa85c50ff765ae036ea5b749171e9f1396" + integrity sha512-RL7GJFOQaJpUcNjMDXAQ6dv+cxIIzzDc5DFwbak8KlIvK9znw/YrEybki8e8JTMdvU5Kg7FKGi5RmI6EQkWkVw== dependencies: "@google-cloud/paginator" "^2.0.0" "@google-cloud/precise-date" "^1.0.0" "@google-cloud/projectify" "^1.0.0" "@google-cloud/promisify" "^1.0.0" - "@sindresorhus/is" "^1.0.0" "@types/duplexify" "^3.6.0" "@types/long" "^4.0.0" arrify "^2.0.0" async-each "^1.0.1" extend "^3.0.2" google-auth-library "^5.5.0" - google-gax "^1.7.5" + google-gax "^1.14.2" is-stream-ended "^0.1.4" lodash.snakecase "^4.1.1" p-defer "^3.0.0" protobufjs "^6.8.1" "@google-cloud/storage@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-4.1.3.tgz#f570ed06fcf51834a4761d01aaa3fb81570f32f6" - integrity sha512-79Ag+4eQq+KFJcKB85AimepoqTJOGuDLAmJd7JkLc8NM12a87JTCoGi65oi1eZ4H77AV0uUQxSS2Fo/hZL3+kQ== + version "4.6.0" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-4.6.0.tgz#c6afef92627b96fd8b9f436c1b622be3d2b9a949" + integrity sha512-ubhbLAnj+hrp32x5gI+JajKU0kvhApA6PsLOLkuOj4Cz4b6MNsyhSWZ5rq2W7TylqfNNW8M9QxPCKWg3Sb0IbA== dependencies: "@google-cloud/common" "^2.1.1" "@google-cloud/paginator" "^2.0.0" @@ -264,7 +257,7 @@ arrify "^2.0.0" compressible "^2.0.12" concat-stream "^2.0.0" - date-and-time "^0.11.0" + date-and-time "^0.12.0" duplexify "^3.5.0" extend "^3.0.2" gaxios "^2.0.1" @@ -281,24 +274,17 @@ through2 "^3.0.0" xdg-basedir "^4.0.0" -"@grpc/grpc-js@0.6.9": - version "0.6.9" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-0.6.9.tgz#49e0b32b92b822df294cc576df169cc6112063b4" - integrity sha512-r1nDOEEiYmAsVYBaS4DPPqdwPOXPw7YhVOnnpPdWhlNtKbYzPash6DqWTTza9gBiYMA5d2Wiq6HzrPqsRaP4yA== - dependencies: - semver "^6.2.0" - -"@grpc/grpc-js@^0.6.12": - version "0.6.15" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-0.6.15.tgz#534d1051ddced4e5e5849212789dd64014214dd4" - integrity sha512-BFK5YMu8JILedibo0nr3NYM0ZC5hCZuXtzk10wEUp3d3pH11PjdvTfN1yEJ0VsfBY5Gtp3WOQ+t7Byq0NzH/iQ== +"@grpc/grpc-js@^0.6.12", "@grpc/grpc-js@^0.6.18": + version "0.6.18" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-0.6.18.tgz#ba3b3dfef869533161d192a385412a4abd0db127" + integrity sha512-uAzv/tM8qpbf1vpx1xPMfcUMzbfdqJtdCYAqY/LsLeQQlnTb4vApylojr+wlCyr7bZeg3AFfHvtihnNOQQt/nA== dependencies: semver "^6.2.0" "@grpc/proto-loader@^0.5.1": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.2.tgz#c84f83be962f518bc303ca2d5e6ef2239439786c" - integrity sha512-eBKD/FPxQoY1x6QONW2nBd54QUEyzcFP9FenujmoeDPy1rutVSHki1s/wR68F6O1QfCNDx+ayBH1O2CVNMzyyw== + version "0.5.3" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.3.tgz#a233070720bf7560c4d70e29e7950c72549a132c" + integrity sha512-8qvUtGg77G2ZT2HqdqYoM/OY97gQd/0crSG34xNmZ4ZOsv3aQT/FQV9QfZPazTGna6MIoyUd+u6AxsoZjJ/VMQ== dependencies: lodash.camelcase "^4.3.0" protobufjs "^6.8.6" @@ -385,22 +371,10 @@ dependencies: any-observable "^0.3.0" -"@sindresorhus/is@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-1.2.0.tgz#63ce3638cb85231f3704164c90a18ef816da3fb7" - integrity sha512-mwhXGkRV5dlvQc4EgPDxDxO6WuMBVymGFd1CA+2Y+z5dG9MNspoQ+AWjl/Ld1MnpCL8AKbosZlDVohqcIwuWsw== - -"@sinonjs/commons@^1": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.6.0.tgz#ec7670432ae9c8eb710400d112c201a362d83393" - integrity sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg== - dependencies: - type-detect "4.0.8" - -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.0.tgz#f90ffc52a2e519f018b13b6c4da03cbff36ebed6" - integrity sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg== +"@sinonjs/commons@^1", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" + integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== dependencies: type-detect "4.0.8" @@ -411,7 +385,7 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/formatio@^5.0.0": +"@sinonjs/formatio@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-5.0.1.tgz#f13e713cb3313b1ab965901b01b0828ea6b77089" integrity sha512-KaiQ5pBf1MpS09MuA0kp6KBQt2JUOQycqVG1NZXvzeaXe5LGFqAKueIS0bw4w0P9r7KuBSVdUk5QjXsUdu2CxQ== @@ -419,7 +393,7 @@ "@sinonjs/commons" "^1" "@sinonjs/samsam" "^5.0.2" -"@sinonjs/samsam@^5.0.1", "@sinonjs/samsam@^5.0.2": +"@sinonjs/samsam@^5.0.2", "@sinonjs/samsam@^5.0.3": version "5.0.3" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.0.3.tgz#86f21bdb3d52480faf0892a480c9906aa5a52938" integrity sha512-QucHkc2uMJ0pFGjJUDP3F9dq5dx8QIaqISl9QgwLOh6P9yv877uONPGXh/OH/0zmM3tW1JjuJltAZV2l7zU+uQ== @@ -438,21 +412,21 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.0.0.tgz#9c13c2574c92d4503b005feca8f2e16cc1611506" integrity sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA== -"@types/chai@*": - version "4.2.3" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.3.tgz#419477a3d5202bad19e14c787940a61dc9ea6407" - integrity sha512-VRw2xEGbll3ZiTQ4J02/hUjNqZoue1bMhoo2dgM2LXjDdyaq4q80HgBDHwpI0/VKlo4Eg+BavyQMv/NYgTetzA== - -"@types/chai@^4.2.10": - version "4.2.10" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.10.tgz#1122da40faabb81795580dc9f06c1e71e2ebbbe4" - integrity sha512-TlWWgb21+0LdkuFqEqfmy7NEgfB/7Jjux15fWQAh3P93gbmXuwTM/vxEdzW89APIcI2BgKR48yjeAkdeH+4qvQ== +"@types/chai@*", "@types/chai@^4.2.10": + version "4.2.11" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50" + integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw== "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/debug@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" + integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== + "@types/duplexify@^3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.0.tgz#dfc82b64bd3a2168f5bd26444af165bf0237dcd8" @@ -465,10 +439,22 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/fs-extra@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.0.tgz#1114834b53c3914806cd03b3304b37b3bd221a4d" + integrity sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg== + dependencies: + "@types/node" "*" + +"@types/js-yaml@^3.12.2": + version "3.12.2" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.2.tgz#a35a1809c33a68200fb6403d1ad708363c56470a" + integrity sha512-0CFu/g4mDSNkodVwWijdlr8jH7RoplRWNgovjFLEZeT+QEbbZXjBmCe3HwaWheAlCbHwomTwzZoSedeOycABug== + "@types/json-schema@^7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" - integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== "@types/lodash@^4.14.149": version "4.14.149" @@ -476,29 +462,24 @@ integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== "@types/long@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" - integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" + integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== "@types/mocha@^7.0.2": version "7.0.2" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce" integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w== -"@types/node@*": - version "12.12.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.11.tgz#bec2961975888d964196bf0016a2f984d793d3ce" - integrity sha512-O+x6uIpa6oMNTkPuHDa9MhMMehlxLAd5QcOvKRjAFsBVpeFWTOPnXbDvILvFgFFZfQ1xh1EZi1FbXxUix+zpsQ== +"@types/node@*", "@types/node@^13.9.0": + version "13.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" + integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== "@types/node@^10.1.0": - version "10.14.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.17.tgz#b96d4dd3e427382482848948041d3754d40fd5ce" - integrity sha512-p/sGgiPaathCfOtqu2fx5Mu1bcjuP8ALFg4xpGgNkcin7LwRyzUKniEHBKdcE1RPsenq5JVPIpMTJSygLboygQ== - -"@types/node@^13.9.0": - version "13.9.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.0.tgz#5b6ee7a77faacddd7de719017d0bc12f52f81589" - integrity sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ== + version "10.17.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.17.tgz#7a183163a9e6ff720d86502db23ba4aade5999b8" + integrity sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q== "@types/node@^8.10.59": version "8.10.59" @@ -519,9 +500,9 @@ "@types/sinon" "*" "@types/sinon@*": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.5.0.tgz#f5a10c27175465a0b001b68d8b9f761582967cc6" - integrity sha512-NyzhuSBy97B/zE58cDw4NyGvByQbAHNP9069KVSgnXt/sc0T6MFRh0InKAeBVHJWdSXG1S3+PxgVIgKo9mTHbw== + version "7.5.2" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.5.2.tgz#5e2f1d120f07b9cda07e5dedd4f3bf8888fccdb9" + integrity sha512-T+m89VdXj/eidZyejvmoP9jivXgBDdkOSBVQjU9kF349NEx10QdPNGxHeZUaj1IlJ32/ewdyXJjnJxyxJroYwg== "@typescript-eslint/eslint-plugin@^2.23.0": version "2.23.0" @@ -589,22 +570,15 @@ accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== - -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== agent-base@5: version "5.1.1" @@ -618,6 +592,13 @@ agent-base@6: dependencies: debug "4" +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + aggregate-error@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -627,11 +608,11 @@ aggregate-error@^3.0.0: indent-string "^4.0.0" ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== dependencies: - fast-deep-equal "^2.0.1" + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" @@ -654,11 +635,11 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" - integrity sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q== + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: - type-fest "^0.5.2" + type-fest "^0.11.0" ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" @@ -692,7 +673,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== @@ -700,14 +681,6 @@ ansi-styles@^4.0.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-styles@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.0.tgz#5681f0dcf7ae5880a7841d8831c4724ed9cc0172" - integrity sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" @@ -718,14 +691,6 @@ any-observable@^0.3.0: resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== -anymatch@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.0.tgz#e609350e50a9313b472789b2f14ef35808ee14d6" - integrity sha512-Ozz7l4ixzI7Oxj2+cw+p0tVUt27BpaJ+1+q1TCeANWxHpvyn2+Un+YamBdfKu0uh8xLodGhoa1v7595NhKDAuA== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -776,9 +741,9 @@ archy@^1.0.0: integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= arg@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.1.tgz#485f8e7c390ce4c5f78257dbea80d4be11feda4c" - integrity sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw== + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: version "1.0.10" @@ -805,18 +770,19 @@ array-flatten@1.1.1, array-flatten@^1.0.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-flatten@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= +array-flatten@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541" + integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA== array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" array.prototype.flat@^1.2.1: version "1.2.3" @@ -882,7 +848,7 @@ async@^1.3.0, async@^1.5.2: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.3.0, async@^2.6.3: +async@^2.3.0, async@^2.6.2, async@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -905,9 +871,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== axios@^0.18.0: version "0.18.1" @@ -918,11 +884,9 @@ axios@^0.18.0: is-buffer "^2.0.2" axobject-query@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" - integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== - dependencies: - ast-types-flow "0.0.7" + version "2.1.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" + integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== balanced-match@^1.0.0: version "1.0.0" @@ -976,12 +940,12 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" -bl@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88" - integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A== +bl@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.1.tgz#8c9b4fb754e80cc86463077722be7b88b4af3f42" + integrity sha512-FL/TdvchukRCuWVxT0YMO/7+L5TNeNrVFvRU2IY63aUyv9mpt8splf2NEr6qXtPo5fya5a66YohQKvGNmLrWNA== dependencies: - readable-stream "^3.0.1" + readable-stream "^3.4.0" bluebird@~3.4.1: version "3.4.7" @@ -1025,7 +989,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1058,9 +1022,9 @@ buffer-indexof-polyfill@~1.0.0: integrity sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8= buffer@^5.1.0: - version "5.4.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.2.tgz#2012872776206182480eccb2c0fba5f672a2efef" - integrity sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag== + version "5.5.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" + integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1070,13 +1034,6 @@ buffers@~0.1.1: resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= -bun@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/bun/-/bun-0.0.12.tgz#d54fae69f895557f275423bc14b404030b20a5fc" - integrity sha512-Toms18J9DqnT+IfWkwxVTB2EaBprHvjlMWrTIsfX4xbu3ZBqVBwrERU0em1IgtRe04wT+wJxMlKHZok24hrcSQ== - dependencies: - readable-stream "~1.0.32" - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -1208,24 +1165,24 @@ chokidar@3.3.0: fsevents "~2.1.1" chokidar@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz#0d1cd6d04eb2df0327446188cd13736a3367d681" - integrity sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA== + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== dependencies: - anymatch "^3.0.1" - braces "^3.0.2" - glob-parent "^5.0.0" - is-binary-path "^2.1.0" - is-glob "^4.0.1" - normalize-path "^3.0.0" - readdirp "^3.1.1" + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" optionalDependencies: - fsevents "^2.0.6" + fsevents "~2.1.2" chownr@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" - integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== ci-info@^1.5.0: version "1.6.0" @@ -1381,19 +1338,14 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: delayed-stream "~1.0.0" commander@^2.11.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.0.1.tgz#b67622721785993182e807f4883633e6401ba53c" - integrity sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA== - -commander@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.0.tgz#545983a0603fe425bc672d66c9e3c89c42121a83" - integrity sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw== + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== comment-parser@^0.7.2: version "0.7.2" @@ -1413,9 +1365,9 @@ compare-semver@^1.0.0: semver "^5.0.1" compare-versions@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.5.1.tgz#26e1f5cf0d48a77eced5046b9f67b6b61075a393" - integrity sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg== + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== compress-commons@^2.1.1: version "2.1.1" @@ -1428,11 +1380,11 @@ compress-commons@^2.1.1: readable-stream "^2.3.6" compressible@^2.0.12, compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" compression@^1.7.0: version "1.7.4" @@ -1489,21 +1441,21 @@ configstore@^3.0.0: xdg-basedir "^3.0.0" configstore@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.0.tgz#37de662c7a49b5fe8dbcf8f6f5818d2d81ed852b" - integrity sha512-eE/hvMs7qw7DlcB5JPRnthmrITuHMmACUJAp89v6PT6iOqzoLS7HRWhBtuHMlhNHo2AhUSA/3Dh1bKNJHcublQ== + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: - dot-prop "^5.1.0" + dot-prop "^5.2.0" graceful-fs "^4.1.2" make-dir "^3.0.0" unique-string "^2.0.0" write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -confusing-browser-globals@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz#93ffec1f82a6e2bf2bc36769cc3a92fa20e502f3" - integrity sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg== +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== connect-query@^1.0.0: version "1.0.0" @@ -1601,13 +1553,6 @@ cross-env@^5.1.3: dependencies: cross-spawn "^6.0.5" -cross-env@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.2.tgz#bd5ed31339a93a3418ac4f3ca9ca3403082ae5f9" - integrity sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw== - dependencies: - cross-spawn "^7.0.1" - cross-spawn@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" @@ -1636,7 +1581,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1: +cross-spawn@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== @@ -1676,9 +1621,9 @@ d@1, d@^1.0.1: type "^1.0.1" damerau-levenshtein@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" - integrity sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA== + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== dashdash@^1.12.0: version "1.14.1" @@ -1687,31 +1632,24 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-and-time@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.11.0.tgz#1e22b61533af303953d79cc8c5e92e228fc5e4d2" - integrity sha512-VyzhHurex4wlg9oMszn7O+kxHchphWjzDn7Mv0WfkFKI6hSNOQePpTBFGsnRakvLNzQKXqPBAVV8DOxUGtUxqA== +date-and-time@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.12.0.tgz#6d30c91c47fa72edadd628b71ec2ac46909b9267" + integrity sha512-n2RJIAp93AucgF/U/Rz5WRS2Hjg5Z+QxscaaMCi6pVZT1JpJKRH+C08vyH/lRR1kxNXnPxgo3lWfd+jCb/UcuQ== date-fns@^1.27.2: version "1.30.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -debug@2.6.9, debug@^2.2.0, debug@^2.6.9: +debug@2.6.9, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.1.0, debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@3.2.6, debug@^3.0.0, debug@^3.1.0: +debug@3.2.6, debug@^3.0.0, debug@^3.1.0, debug@^3.1.1: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -1732,6 +1670,13 @@ debug@4.1.0: dependencies: ms "^2.1.1" +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1830,12 +1775,7 @@ diff@3.5.0: resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== -diff@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" - integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== - -diff@^4.0.2: +diff@^4.0.1, diff@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== @@ -1862,10 +1802,10 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dot-prop@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.1.0.tgz#bdd8c986a77b83e3fca524e53786df916cabbd8a" - integrity sha512-n1oC6NBF+KM9oVXtjmen4Yo7HyAVWV2UUl50dCYJdw2924K6dX9bf9TTTWaKtYlRn0FEtxG27KS80ayVLixxJA== +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== dependencies: is-obj "^2.0.0" @@ -1914,7 +1854,7 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -ecdsa-sig-formatter@1.0.11: +ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== @@ -1947,9 +1887,9 @@ encodeurl@~1.0.2: integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" @@ -1965,26 +1905,10 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.12.0, es-abstract@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.14.2.tgz#7ce108fad83068c8783c3cdf62e504e084d8c497" - integrity sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg== - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.0" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-inspect "^1.6.0" - object-keys "^1.1.1" - string.prototype.trimleft "^2.0.0" - string.prototype.trimright "^2.0.0" - -es-abstract@^1.16.3, es-abstract@^1.17.0-next.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" - integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== +es-abstract@^1.16.3, es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.4: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" @@ -1998,44 +1922,19 @@ es-abstract@^1.16.3, es-abstract@^1.17.0-next.1: string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" -es-abstract@^1.5.1: - version "1.15.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.15.0.tgz#8884928ec7e40a79e3c9bc812d37d10c8b24cc57" - integrity sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ== - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.0" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-inspect "^1.6.0" - object-keys "^1.1.1" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" - es-get-iterator@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.0.2.tgz#bc99065aa8c98ce52bc86ab282dedbba4120e0b3" - integrity sha512-ZHb4fuNK3HKHEOvDGyHPKf5cSWh/OvAMskeM/+21NMnTuvqFvz8uHatolu+7Kf6b6oK9C+3Uo1T37pSGPWv0MA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== dependencies: - es-abstract "^1.17.0-next.1" + es-abstract "^1.17.4" has-symbols "^1.0.1" is-arguments "^1.0.4" - is-map "^2.0.0" - is-set "^2.0.0" - is-string "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" isarray "^2.0.5" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -2045,14 +1944,14 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.51, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.51" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.51.tgz#ed2d7d9d48a12df86e0299287e93a09ff478842f" - integrity sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ== +es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" + es6-symbol "~3.1.3" + next-tick "~1.0.0" es6-error@^4.0.1: version "4.1.1" @@ -2080,13 +1979,13 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.2.tgz#859fdd34f32e905ff06d752e7171ddd4444a7ed1" - integrity sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ== +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: d "^1.0.1" - es5-ext "^0.10.51" + ext "^1.1.2" es6-weak-map@^2.0.2: version "2.0.3" @@ -2109,13 +2008,13 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= eslint-config-airbnb-base@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17" - integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA== + version "14.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4" + integrity sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw== dependencies: - confusing-browser-globals "^1.0.7" + confusing-browser-globals "^1.0.9" object.assign "^4.1.0" - object.entries "^1.1.0" + object.entries "^1.1.1" eslint-config-prettier@^6.10.0: version "6.10.0" @@ -2125,12 +2024,12 @@ eslint-config-prettier@^6.10.0: get-stdin "^6.0.0" eslint-import-resolver-node@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== dependencies: debug "^2.6.9" - resolve "^1.5.0" + resolve "^1.13.1" eslint-module-utils@^2.4.1: version "2.5.2" @@ -2148,9 +2047,9 @@ eslint-plugin-babel@^5.3.0: eslint-rule-composer "^0.3.0" eslint-plugin-import@^2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz#d749a7263fb6c29980def8e960d380a6aa6aecaa" - integrity sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ== + version "2.20.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" + integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== dependencies: array-includes "^3.0.3" array.prototype.flat "^1.2.1" @@ -2166,9 +2065,9 @@ eslint-plugin-import@^2.20.0: resolve "^1.12.0" eslint-plugin-jsdoc@^22.0.0: - version "22.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-22.0.0.tgz#371f1dbf4f61ee6e11c23fa1ea3275962f1bceaf" - integrity sha512-dLqUtIL6tvOoV+9IDdP3FqOnQ/sxklzs4hxZa91kt0TGI2o1fSqIuc6wa71oWtWKEyvaQj7m6CnzQxcBC9CEsg== + version "22.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-22.0.1.tgz#1f36c41a8818c968e46def7423e0b627841d72b9" + integrity sha512-lqQgGtd+roOhd5lSdIK4P3mlDmTVmVdcehj/r8nY25CGB2yi4Tk6JVwETCPBGnRKd40JkllkchyZmt0tFN+5pw== dependencies: comment-parser "^0.7.2" debug "^4.1.1" @@ -2269,12 +2168,12 @@ eslint@^6.8.0: v8-compile-cache "^2.0.3" espree@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" - integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== dependencies: - acorn "^7.1.0" - acorn-jsx "^5.1.0" + acorn "^7.1.1" + acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" esprima@^4.0.0, esprima@~4.0.0: @@ -2283,9 +2182,9 @@ esprima@^4.0.0, esprima@~4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.1.0.tgz#c5c0b66f383e7656404f86b31334d72524eddb48" + integrity sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q== dependencies: estraverse "^4.0.0" @@ -2394,6 +2293,13 @@ express@^4.16.4: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend@^3.0.1, extend@^3.0.2, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -2423,10 +2329,10 @@ eyes@0.1.x: resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== fast-diff@^1.1.2: version "1.2.0" @@ -2434,9 +2340,9 @@ fast-diff@^1.1.2: integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@~2.0.6: version "2.0.6" @@ -2444,9 +2350,9 @@ fast-levenshtein@~2.0.6: integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fast-text-encoding@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz#3e5ce8293409cfaa7177a71b9ca84e1b1e6f25ef" - integrity sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.1.tgz#4a428566f74fc55ebdd447555b1eb4d9cf514455" + integrity sha512-x4FEgaz3zNRtJfLFqJmHWxkMDDvXVtaznj2V9jiP8ACUJrUgist4bP9FmDL2Vew2Y9mEQI/tG4GqabaitYp9CQ== fast-url-parser@^1.1.3: version "1.1.3" @@ -2478,13 +2384,6 @@ figures@^2.0.0: escape-string-regexp "^1.0.5" figures@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" - integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g== - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -2524,12 +2423,12 @@ finalhandler@1.1.2, finalhandler@~1.1.2: unpipe "~1.0.0" find-cache-dir@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" - integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== dependencies: commondir "^1.0.1" - make-dir "^3.0.0" + make-dir "^3.0.2" pkg-dir "^4.1.0" find-up@3.0.0, find-up@^3.0.0: @@ -2561,10 +2460,10 @@ find-versions@^3.2.0: dependencies: semver-regex "^2.0.0" -firebase-admin@^8.9.2: - version "8.9.2" - resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-8.9.2.tgz#248ba184dc13b4929b043870a2067787a0dd013e" - integrity sha512-ix4qcx+hHnr3mnc41Z8EzQa9Mr+2nhogLEv6ktkOCCpdKJ+9HxW9vikRCElSbC8ICHLD0KIH0GVOIZK80vbvqw== +firebase-admin@^8.10.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-8.10.0.tgz#4a838aec52df49845eba07ad59a40b4df996e815" + integrity sha512-QzJZ1sBh9xzKjb44aP6m1duy0Xe1ixexwh0eaOt1CkJYCOq2b6bievK4GNWMl5yGQ7FFBEbZO6hyDi+5wrctcg== dependencies: "@firebase/database" "^0.5.17" "@types/node" "^8.10.59" @@ -2575,21 +2474,13 @@ firebase-admin@^8.9.2: "@google-cloud/firestore" "^3.0.0" "@google-cloud/storage" "^4.1.2" -firebase-tools-extra@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/firebase-tools-extra/-/firebase-tools-extra-0.5.2.tgz#2f18de24f7eef00e08ad447eb8fc84cebfb52eaa" - integrity sha512-fwmXyVeISFwQebf92KxrAa2mdDp+B43fFbdsAwfJr14DZ5I1O5IGPc0w8J09Km8NarQuoiuDBKKDuR1ADgSjag== - dependencies: - firebase-admin "^8.9.2" - lodash "^4.17.15" - yargs "^14.2.0" - -firebase-tools@^7.14.0: - version "7.14.0" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-7.14.0.tgz#947a496b62fd75cbe842d8112631c3c1d61a4c63" - integrity sha512-bASBsY28tbdqLIAM92PirxLZWE0i5CgiLNrOkiKxz0vdQbOrGJEUcgOQGQe4xM9AaqbPw87FoTT0xJWrEUJKWw== +firebase-tools@^7.15.0: + version "7.15.0" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-7.15.0.tgz#e1ffe03aef934e9dbbec6acaeaccad11fece282f" + integrity sha512-NQ9mkcDKy0dAbD5LRPNGqoYEPR3wUGhm92OZTnS9bimhBiruPnkbwSq4PvjfGVyM7FyzyqvTawGlcj2gzD7QLw== dependencies: "@google-cloud/pubsub" "^1.1.5" + "@types/js-yaml" "^3.12.2" JSONStream "^1.2.1" archiver "^3.0.0" body-parser "^1.19.0" @@ -2612,6 +2503,7 @@ firebase-tools@^7.14.0: google-auto-auth "^0.10.1" google-gax "~1.12.0" inquirer "~6.3.1" + js-yaml "^3.13.1" jsonschema "^1.0.2" jsonwebtoken "^8.2.1" lodash "^4.17.14" @@ -2631,7 +2523,7 @@ firebase-tools@^7.14.0: tcp-port-used "^1.0.1" tmp "0.0.33" universal-analytics "^0.4.16" - unzipper "^0.10.5" + unzipper "^0.10.10" update-notifier "^2.5.0" uuid "^3.0.0" winston "^1.0.1" @@ -2738,23 +2630,18 @@ fs-extra@^0.30.0: rimraf "^2.2.8" fs-minipass@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" - integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: - minipass "^2.2.1" + minipass "^2.6.0" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" - integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== - -fsevents@~2.1.1: +fsevents@~2.1.1, fsevents@~2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== @@ -2769,7 +2656,7 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== @@ -2789,24 +2676,14 @@ gaxios@^1.0.4: https-proxy-agent "^2.2.1" node-fetch "^2.3.0" -gaxios@^2.0.0, gaxios@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.0.1.tgz#2ca1c9eb64c525d852048721316c138dddf40708" - integrity sha512-c1NXovTxkgRJTIgB2FrFmOFg4YIV6N/bAa4f/FZ4jIw13Ql9ya/82x69CswvotJhbV3DiGnlTZwoq2NVXk2Irg== - dependencies: - abort-controller "^3.0.0" - extend "^3.0.2" - https-proxy-agent "^2.2.1" - node-fetch "^2.3.0" - -gaxios@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.1.0.tgz#b5d04ec19bf853d4589ccc2e7d61f0f2ab62afee" - integrity sha512-Gtpb5sdQmb82sgVkT2GnS2n+Kx4dlFwbeMYcDlD395aEvsLCSQXJJcHt7oJ2LrGxDEAeiOkK79Zv2A8Pzt6CFg== +gaxios@^2.0.0, gaxios@^2.0.1, gaxios@^2.1.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.3.2.tgz#ed666826c2039b89d384907cc075595269826553" + integrity sha512-K/+py7UvKRDaEwEKlLiRKrFr+wjGjsMz5qH7Vs549QJS7cpSCOT/BbWL7pzqECflc46FcNPipjSfB+V1m8PAhw== dependencies: abort-controller "^3.0.0" extend "^3.0.2" - https-proxy-agent "^3.0.0" + https-proxy-agent "^5.0.0" is-stream "^2.0.0" node-fetch "^2.3.0" @@ -2819,26 +2696,18 @@ gcp-metadata@^0.6.1, gcp-metadata@^0.6.3: extend "^3.0.1" retry-axios "0.3.2" -gcp-metadata@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-2.0.2.tgz#6b391c531cdd0c1d1ebde35050fdaaf5462aa544" - integrity sha512-dxPXBvjyfz5qFEBXzEwNmuZXwsGYfuASGYeg3CKZDaQRXdiWti9J3/Ezmtyon1OrCNpDO2YekyoSjEqMtsrcXw== - dependencies: - gaxios "^2.0.1" - json-bigint "^0.3.0" - -gcp-metadata@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-3.2.2.tgz#dcac6bf65775d5caa3a2e161469c0af068849256" - integrity sha512-vR7kcJMCYJG/mYWp/a1OszdOqnLB/XW1GorWW1hc1lWVNL26L497zypWb9cG0CYDQ4Bl1Wk0+fSZFFjwJlTQgQ== +gcp-metadata@^3.4.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-3.5.0.tgz#6d28343f65a6bbf8449886a0c0e4a71c77577055" + integrity sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA== dependencies: gaxios "^2.1.0" json-bigint "^0.3.0" gcs-resumable-upload@^2.2.4: - version "2.3.1" - resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-2.3.1.tgz#5fa7c3035108bba7a2f95435377ad92acdbae656" - integrity sha512-zEO7L+jz99VznQsbsF7vFTnIFbSu+CjdJqt5htnjIrfsp5j+QCVBvbbKdqpaTfCPzpUPYj1Q9O9DhIh/8newfA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz#02c616ed17eff6676e789910aeab3907d412c5f8" + integrity sha512-sf896I5CC/1AxeaGfSFg3vKMjUq/r+A3bscmVzZm10CElyRanN0XwPu/MxeIO4LSP+9uF6yKzXvNsaTsMXUG6Q== dependencies: abort-controller "^3.0.0" configstore "^5.0.0" @@ -2847,6 +2716,11 @@ gcs-resumable-upload@^2.2.4: pumpify "^2.0.0" stream-events "^1.0.4" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -2886,14 +2760,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== - dependencies: - is-glob "^4.0.1" - -glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== @@ -2926,19 +2793,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.6: +glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -2963,9 +2818,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^12.1.0: - version "12.3.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" - integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== dependencies: type-fest "^0.8.1" @@ -2982,32 +2837,19 @@ google-auth-library@^1.3.1: lru-cache "^4.1.3" retry-axios "^0.3.2" -google-auth-library@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-5.2.1.tgz#3df7cb4186a24355184551837b24012cb1b31013" - integrity sha512-p9vO6UcRIK/zD3PxoMijaUfFYu6tvzaQwvag1K/82O42NBeAnmllyQUgqaBhcAh9FzFAVlN4bQIaO8+prpE7Vg== - dependencies: - arrify "^2.0.0" - base64-js "^1.3.0" - fast-text-encoding "^1.0.0" - gaxios "^2.0.0" - gcp-metadata "^2.0.0" - gtoken "^4.0.0" - jws "^3.1.5" - lru-cache "^5.0.0" - -google-auth-library@^5.5.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-5.5.1.tgz#2bf5ade93cb9d00c860d3fb15798db33b39a53a7" - integrity sha512-zCtjQccWS/EHYyFdXRbfeSGM/gW+d7uMAcVnvXRnjBXON5ijo6s0nsObP0ifqileIDSbZjTlLtgo+UoN8IFJcg== +google-auth-library@^5.0.0, google-auth-library@^5.5.0: + version "5.10.1" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-5.10.1.tgz#504ec75487ad140e68dd577c21affa363c87ddff" + integrity sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg== dependencies: arrify "^2.0.0" base64-js "^1.3.0" + ecdsa-sig-formatter "^1.0.11" fast-text-encoding "^1.0.0" gaxios "^2.1.0" - gcp-metadata "^3.2.0" + gcp-metadata "^3.4.0" gtoken "^4.1.0" - jws "^3.1.5" + jws "^4.0.0" lru-cache "^5.0.0" google-auto-auth@^0.10.1: @@ -3020,13 +2862,14 @@ google-auto-auth@^0.10.1: google-auth-library "^1.3.1" request "^2.79.0" -google-gax@^1.12.0, google-gax@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.12.0.tgz#f926f7e6abda245db38ecbebbbf58daaf3a8f687" - integrity sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg== +google-gax@^1.13.0, google-gax@^1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.14.2.tgz#ce4f9a42c1bc2ca4a4ed8e8cc70c6f7a3548b790" + integrity sha512-Nde+FdqALbV3QgMA4KlkxOHfrj9busnZ3EECwy/1gDJm9vhKGwDLWzErqRU5g80OoGSAMgyY7DWIfqz7ina4Jw== dependencies: - "@grpc/grpc-js" "^0.6.12" + "@grpc/grpc-js" "^0.6.18" "@grpc/proto-loader" "^0.5.1" + "@types/fs-extra" "^8.0.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" duplexify "^3.6.0" @@ -3040,12 +2883,12 @@ google-gax@^1.12.0, google-gax@~1.12.0: semver "^6.0.0" walkdir "^0.4.0" -google-gax@^1.7.5: - version "1.11.1" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.11.1.tgz#9be67c762f25445a6d8d410207f2c6e180b3b947" - integrity sha512-v/APF2G5h2nS5R/1DW2vsgloaMu2/B3xjHdAptR1yUwZpEd9rxPTlhqosrjl/VRu+gWGr9JZN19ZgJTXQ/Db6Q== +google-gax@~1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.12.0.tgz#f926f7e6abda245db38ecbebbbf58daaf3a8f687" + integrity sha512-BeeoxVO6y9K20gUsexUwptutd0PfrTItrA02JWwwstlBIOAcvgFp86MHWufQsnrkPVhxBjHXq65aIkSejtJjDg== dependencies: - "@grpc/grpc-js" "0.6.9" + "@grpc/grpc-js" "^0.6.12" "@grpc/proto-loader" "^0.5.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" @@ -3069,9 +2912,9 @@ google-p12-pem@^1.0.0: pify "^4.0.0" google-p12-pem@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-2.0.2.tgz#39cae8f6fcbe66a01f00be4ddf2d56b95926fa7b" - integrity sha512-UfnEARfJKI6pbmC1hfFFm+UAcZxeIwTiEcHfqKe/drMsXD/ilnVjF7zgOGpHXyhuvX6jNJK3S8A0hOQjwtFxEw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-2.0.4.tgz#036462394e266472632a78b685f0cc3df4ef337b" + integrity sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg== dependencies: node-forge "^0.9.0" @@ -3092,12 +2935,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" - integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== - -graceful-fs@^4.1.15, graceful-fs@^4.2.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -3118,24 +2956,14 @@ gtoken@^2.3.0: mime "^2.2.0" pify "^4.0.0" -gtoken@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-4.0.0.tgz#42b63a935a03a61eedf0ec14f74f6875bad627bd" - integrity sha512-XaRCfHJxhj06LmnWNBzVTAr85NfAErq0W1oabkdqwbq3uL/QTB1kyvGog361Uu2FMG/8e3115sIy/97Rnd4GjQ== - dependencies: - gaxios "^2.0.0" - google-p12-pem "^2.0.0" - jws "^3.1.5" - mime "^2.2.0" - gtoken@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-4.1.3.tgz#efa9e42f59d02731f15de466b09331d7afc393cf" - integrity sha512-ofW+FiXjswyKdkjMcDbe6E4K7cDDdE82dGDhZIc++kUECqaE7MSErf6arJPAjcnYn1qxE1/Ti06qQuqgVusovQ== + version "4.1.4" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-4.1.4.tgz#925ff1e7df3aaada06611d30ea2d2abf60fcd6a7" + integrity sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA== dependencies: gaxios "^2.1.0" google-p12-pem "^2.0.0" - jws "^3.1.5" + jws "^4.0.0" mime "^2.2.0" har-schema@^2.0.0: @@ -3143,7 +2971,7 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0: +har-validator@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -3173,17 +3001,12 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= - -has-symbols@^1.0.1: +has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has@^1.0.1, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -3198,9 +3021,9 @@ hash-stream-validation@^0.2.2: through2 "^2.0.0" hasha@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.1.0.tgz#dd05ccdfcfe7dab626247ce2a58efe461922f4ca" - integrity sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA== + version "5.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.0.tgz#33094d1f69c40a4a6ac7be53d5fe3ff95a269e0c" + integrity sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw== dependencies: is-stream "^2.0.0" type-fest "^0.8.0" @@ -3216,9 +3039,9 @@ home-dir@^1.0.0: integrity sha1-KRfrRL3JByztqUJXlUOEfjAX/k4= hosted-git-info@^2.1.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" - integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== html-escaper@^2.0.0: version "2.0.0" @@ -3252,14 +3075,6 @@ http-errors@~1.7.2: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - http-proxy-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" @@ -3279,17 +3094,9 @@ http-signature@~1.2.0: sshpk "^1.7.0" https-proxy-agent@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" - integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - -https-proxy-agent@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" - integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== dependencies: agent-base "^4.3.0" debug "^3.1.0" @@ -3302,6 +3109,14 @@ https-proxy-agent@^4.0.0: agent-base "5" debug "4" +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -3347,15 +3162,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -import-fresh@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" - integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-fresh@^3.1.0: +import-fresh@^3.0.0, import-fresh@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -3407,22 +3214,22 @@ ini@^1.3.4, ini@~1.3.0: integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" - integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== dependencies: ansi-escapes "^4.2.1" - chalk "^2.4.2" + chalk "^3.0.0" cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" figures "^3.0.0" lodash "^4.17.15" mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.4.0" + run-async "^2.4.0" + rxjs "^6.5.3" string-width "^4.1.0" - strip-ansi "^5.1.0" + strip-ansi "^6.0.0" through "^2.3.6" inquirer@~6.3.1: @@ -3449,10 +3256,10 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-arguments@^1.0.4: version "1.0.4" @@ -3469,7 +3276,7 @@ is-bigint@^1.0.0: resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== -is-binary-path@^2.1.0, is-binary-path@~2.1.0: +is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== @@ -3486,12 +3293,7 @@ is-buffer@^2.0.2, is-buffer@~2.0.3: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - -is-callable@^1.1.5: +is-callable@^1.1.4, is-callable@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== @@ -3504,9 +3306,9 @@ is-ci@^1.0.10: ci-info "^1.5.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-extglob@^2.1.1: version "2.1.1" @@ -3545,7 +3347,7 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" -is-map@^2.0.0: +is-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== @@ -3599,14 +3401,7 @@ is-redirect@^1.0.0: resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" - -is-regex@^1.0.5: +is-regex@^1.0.4, is-regex@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== @@ -3623,7 +3418,7 @@ is-retry-allowed@^1.0.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== -is-set@^2.0.0: +is-set@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== @@ -3643,17 +3438,17 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.4: +is-string@^1.0.4, is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -3665,12 +3460,12 @@ is-url@^1.2.2: resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-weakmap@^2.0.0: +is-weakmap@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== -is-weakset@^2.0.0: +is-weakset@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== @@ -3732,9 +3527,9 @@ istanbul-lib-hook@^3.0.0: append-transform "^2.0.0" istanbul-lib-instrument@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz#53321a7970f076262fd3292c8f9b2e4ac544aae1" - integrity sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ== + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" + integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== dependencies: "@babel/core" "^7.7.5" "@babel/parser" "^7.7.5" @@ -3884,9 +3679,9 @@ jsonparse@^1.2.0: integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsonschema@^1.0.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.4.tgz#a46bac5d3506a254465bc548876e267c6d0d6464" - integrity sha512-lz1nOH69GbsVHeVgEdvyavc/33oymY1AZwtePMiMj4HZPMbP5OIKK3zT9INMWjwua/V4Z4yq7wSlBbSG+g4AEw== + version "1.2.5" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.5.tgz#bab69d97fa28946aec0a56a9cc266d23fe80ae61" + integrity sha512-kVTF+08x25PQ0CjuVc0gRM9EUPb0Fe9Ln/utFOgcdxEIOHuU7ooBk/UPTd7t1M91pP35m0MU1T8M5P7vP1bRRw== jsonwebtoken@8.1.0: version "8.1.0" @@ -3931,17 +3726,17 @@ jsprim@^1.2.2: verror "1.10.0" jsx-ast-utils@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" - integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== + version "2.2.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" + integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== dependencies: array-includes "^3.0.3" object.assign "^4.1.0" just-extend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc" - integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw== + version "4.1.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.0.tgz#7278a4027d889601640ee0ce0e5a00b992467da4" + integrity sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA== jwa@^1.4.1: version "1.4.1" @@ -3952,6 +3747,15 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" +jwa@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" + integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + jws@^3.1.4, jws@^3.1.5, jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" @@ -3960,6 +3764,14 @@ jws@^3.1.4, jws@^3.1.5, jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" +jws@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" + integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== + dependencies: + jwa "^2.0.0" + safe-buffer "^5.0.1" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -4314,17 +4126,17 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" - integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== dependencies: semver "^6.0.0" make-error@^1.1.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" - integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== marked-terminal@^3.3.0: version "3.3.0" @@ -4385,22 +4197,17 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - -"mime-db@>= 1.40.0 < 2": - version "1.41.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.41.0.tgz#9110408e1f6aa1b34aef51f2c9df3caddf46b6a0" - integrity sha512-B5gxBI+2K431XW8C2rcc/lhppbuji67nf9v39eH8pkWoZDxnAL0PxdpH32KYRScniF8qDHBDlI+ipgg5WrCUYw== +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: - mime-db "1.40.0" + mime-db "1.43.0" mime@1.6.0: version "1.6.0" @@ -4435,26 +4242,26 @@ minimist@0.0.8: integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.1.0, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.2.1, minipass@^2.3.5: - version "2.5.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.5.0.tgz#dddb1d001976978158a05badfcbef4a771612857" - integrity sha512-9FwMVYhn6ERvMR8XFdOavRz4QK/VJV8elU1x50vYexf9lslDcWe/f4HBRxCPd185ekRSjU6CfYyJCECa/CQy7Q== +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -4547,7 +4354,12 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -next-tick@1, next-tick@^1.0.0: +next-tick@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= @@ -4599,9 +4411,9 @@ node-forge@^0.8.0: integrity sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q== node-forge@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + version "0.9.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" + integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ== node-preload@^0.2.0: version "0.2.1" @@ -4688,20 +4500,15 @@ object-assign@^4.0.1, object-assign@^4.1.0: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-inspect@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== - object-inspect@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -4718,31 +4525,31 @@ object.assign@4.1.0, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" - integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== +object.entries@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" + integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" @@ -4856,9 +4663,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" @@ -4949,7 +4756,7 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" -parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -4979,16 +4786,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-key@^3.0.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-key@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" - integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg== - path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -5000,9 +4802,9 @@ path-to-regexp@0.1.7: integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= path-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== dependencies: isarray "0.0.1" @@ -5028,12 +4830,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" - integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== - -picomatch@^2.0.5: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== @@ -5089,13 +4886,13 @@ plist@^3.0.1: xmldom "0.1.x" portfinder@^1.0.23: - version "1.0.24" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.24.tgz#11efbc6865f12f37624b6531ead1d809ed965cfa" - integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" prelude-ls@~1.1.2: version "1.1.2" @@ -5142,9 +4939,9 @@ progress@^2.0.0, progress@^2.0.3: integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8: - version "6.8.8" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" - integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== + version "6.8.9" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.9.tgz#0b1adbcdaa983d369c3d9108a97c814edc030754" + integrity sha512-j2JlRdUeL/f4Z6x4aU4gj9I2LECglC+5qR2TrWb193Tla1qfdaNQTZ8I27Pt7K0Ajmvjjpft7O3KWTGciz4gpw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -5161,22 +4958,22 @@ protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8: long "^4.0.0" proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: forwarded "~0.1.2" - ipaddr.js "1.9.0" + ipaddr.js "1.9.1" pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: - version "1.3.1" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.3.1.tgz#d5aa3873a35ec450bc7db9012ad5a7246f6fc8bd" - integrity sha512-2KLd5fKOdAfShtY2d/8XDWVRnmp3zp40Qt6ge2zBPFARLXOGUf2fHD5eg+TV/5oxBtQKVhjUaKFsAaE4HnwfSA== +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== pump@^3.0.0: version "3.0.0" @@ -5187,20 +4984,20 @@ pump@^3.0.0: once "^1.3.1" pumpify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-2.0.0.tgz#975519e5a9890ae0fb4724274e3fec97e43a30b6" - integrity sha512-ieN9HmpFPt4J4U4qnjN4BxrnqpPPXJyp3qFErxfwBtFOec6ewpIHdS2eu3TkmGW6S+RzFGEOGpm5ih/X/onRPQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-2.0.1.tgz#abfc7b5a621307c728b551decbbefb51f0e4aa1e" + integrity sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw== dependencies: duplexify "^4.1.1" inherits "^2.0.3" pump "^3.0.0" -punycode@^1.3.2, punycode@^1.4.1: +punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -5262,19 +5059,19 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -"readable-stream@2 || 3", readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== +"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -5284,16 +5081,6 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@~1.0.32: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@~2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" @@ -5306,13 +5093,6 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readdirp@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.2.tgz#fa85d2d14d4289920e4671dead96431add2ee78a" - integrity sha512-8rhl0xs2cxfVsqzreYCvs8EwBfn/DhVdqtoLmw19uI3SC5avYX9teCurlErfpPXGmYtMHReGaP2RsLnFvz/lnw== - dependencies: - picomatch "^2.0.4" - readdirp@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" @@ -5320,6 +5100,13 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + redeyed@~2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" @@ -5327,17 +5114,18 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -regenerator-runtime@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== regexp.prototype.flags@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" - integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: - define-properties "^1.1.2" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" regexpp@^2.0.1: version "2.0.1" @@ -5377,9 +5165,9 @@ release-zalgo@^1.0.0: es6-error "^4.0.1" request@^2.79.0, request@^2.87.0, request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -5388,7 +5176,7 @@ request@^2.79.0, request@^2.87.0, request@^2.88.0: extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.0" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -5398,7 +5186,7 @@ request@^2.79.0, request@^2.87.0, request@^2.88.0: performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" - tough-cookie "~2.4.3" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" @@ -5422,17 +5210,10 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.10.0, resolve@^1.5.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.12.0, resolve@^1.3.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" - integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" @@ -5480,23 +5261,23 @@ rimraf@2.6.3: glob "^7.1.3" rimraf@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" - integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" router@^1.3.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/router/-/router-1.3.3.tgz#c142f6b5ea4d6b3359022ca95b6580bd217f89cf" - integrity sha1-wUL2tepNazNZAiypW2WAvSF/ic8= + version "1.3.4" + resolved "https://registry.yarnpkg.com/router/-/router-1.3.4.tgz#f4e4a1648eada2e16fd622fc389c90daf7307ed8" + integrity sha512-a5uZFwgKExBZzh4U5jujU05DkImy9/ub8omiU7RlZlNnSF07tjvNJTOgHdZOjKDeUZqlkpz8CjDoz5SY3kimOA== dependencies: - array-flatten "2.1.1" + array-flatten "3.0.0" debug "2.6.9" methods "~1.1.2" - parseurl "~1.3.2" + parseurl "~1.3.3" path-to-regexp "0.1.7" - setprototypeof "1.1.0" + setprototypeof "1.2.0" utils-merge "1.0.1" rsvp@^3.6.2: @@ -5504,27 +5285,20 @@ rsvp@^3.6.2: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== dependencies: is-promise "^2.1.0" -rxjs@^6.3.3: +rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== dependencies: tslib "^1.9.0" -rxjs@^6.4.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" - integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== - dependencies: - tslib "^1.9.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -5606,16 +5380,16 @@ setimmediate@~1.0.4: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -5654,19 +5428,19 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= sinon-chai@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.4.0.tgz#06fb88dee80decc565106a3061d380007f21e18d" - integrity sha512-BpVxsjEkGi6XPbDXrgWUe7Cb1ZzIfxKUbu/MmH5RoUnS7AXpKo3aIYIyQUg0FMvlUL05aPt7VZuAdaeQhEnWxg== + version "3.5.0" + resolved "https://registry.yarnpkg.com/sinon-chai/-/sinon-chai-3.5.0.tgz#c9a78304b0e15befe57ef68e8a85a00553f5c60e" + integrity sha512-IifbusYiQBpUxxFJkR3wTU68xzBN0+bxCScEaKMjBvAQERg6FnTTc1F17rseLb1tjmkJ23730AXpFI0c47FgAg== sinon@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.0.0.tgz#9f1ed502fa2e287e65220de08f6a44f33e314006" - integrity sha512-c4bREcvuK5VuEGyMW/Oim9I3Rq49Vzb0aMdxouFaA44QCFpilc5LJOugrX+mkrvikbqCimxuK+4cnHVNnLR41g== + version "9.0.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.0.1.tgz#dbb18f7d8f5835bcf91578089c0a97b2fffdd73b" + integrity sha512-iTTyiQo5T94jrOx7X7QLBZyucUJ2WvL9J13+96HMfm2CGoJYbIPqRfl6wgNcqmzk0DI28jeGx5bUTXizkrqBmg== dependencies: "@sinonjs/commons" "^1.7.0" "@sinonjs/fake-timers" "^6.0.0" - "@sinonjs/formatio" "^5.0.0" - "@sinonjs/samsam" "^5.0.1" + "@sinonjs/formatio" "^5.0.1" + "@sinonjs/samsam" "^5.0.3" diff "^4.0.2" nise "^4.0.1" supports-color "^7.1.0" @@ -5700,7 +5474,7 @@ snakeize@^0.1.0: resolved "https://registry.yarnpkg.com/snakeize/-/snakeize-0.1.0.tgz#10c088d8b58eb076b3229bb5a04e232ce126422d" integrity sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0= -source-map-support@^0.5.16: +source-map-support@^0.5.16, source-map-support@^0.5.6: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== @@ -5708,14 +5482,6 @@ source-map-support@^0.5.16: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.6: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -5802,9 +5568,9 @@ stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: stubs "^3.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== streamsearch@0.1.2: version "0.1.2" @@ -5849,16 +5615,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" - integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^5.2.0" - -string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -5867,22 +5624,6 @@ string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimleft@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.0.0.tgz#68b6aa8e162c6a80e76e3a8a0c2e747186e271ff" - integrity sha1-aLaqjhYsaoDnbjqKDC50cYbicf8= - dependencies: - define-properties "^1.1.2" - function-bind "^1.0.2" - -string.prototype.trimleft@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -5891,22 +5632,6 @@ string.prototype.trimleft@^2.1.1: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimright@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.0.0.tgz#ab4a56d802a01fbe7293e11e84f24dc8164661dd" - integrity sha1-q0pW2AKgH75yk+EehPJNyBZGYd0= - dependencies: - define-properties "^1.1.2" - function-bind "^1.0.2" - -string.prototype.trimright@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - string.prototype.trimright@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" @@ -6092,24 +5817,24 @@ table@^5.2.3: string-width "^3.0.0" tar-stream@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3" - integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw== + version "2.1.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" + integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== dependencies: - bl "^3.0.0" + bl "^4.0.1" end-of-stream "^1.4.1" fs-constants "^1.0.0" inherits "^2.0.3" readable-stream "^3.1.1" tar@^4.3.0: - version "4.4.10" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" - integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.5" + minipass "^2.8.6" minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" @@ -6134,16 +5859,16 @@ teeny-request@6.0.1: stream-events "^1.0.5" uuid "^3.3.2" -teeny-request@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-5.2.1.tgz#a6394db8359b87e64e47eeb2fbf34a65c9a751ff" - integrity sha512-gCVm5EV3z0p/yZOKyeBOFOpSXuxdIs3foeWDWb/foKMBejK18w40L0k0UMd/ZrGkOH+gxodjqpL8KK6x3haYCQ== +teeny-request@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-6.0.3.tgz#b617f9d5b7ba95c76a3f257f6ba2342b70228b1f" + integrity sha512-TZG/dfd2r6yeji19es1cUIwAlVD8y+/svB1kAC2Y0bjEyysrfbO8EZvJBRwIE6WkwmUoB7uvWLwTIhJbMXZ1Dw== dependencies: - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" + http-proxy-agent "^4.0.0" + https-proxy-agent "^5.0.0" node-fetch "^2.2.0" stream-events "^1.0.5" - uuid "^3.3.2" + uuid "^7.0.0" term-size@^1.2.0: version "1.2.0" @@ -6231,13 +5956,13 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - psl "^1.1.24" - punycode "^1.4.1" + psl "^1.1.28" + punycode "^2.1.1" toxic@^1.0.0: version "1.0.1" @@ -6267,10 +5992,10 @@ ts-node@^8.6.2: source-map-support "^0.5.6" yn "3.1.1" -tslib@1.10.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== +tslib@1.11.1, tslib@^1.8.1, tslib@^1.9.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== tsutils@^3.17.1: version "3.17.1" @@ -6303,10 +6028,10 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" - integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" @@ -6322,9 +6047,14 @@ type-is@~1.6.17, type-is@~1.6.18: mime-types "~2.1.24" type@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.3.tgz#16f5d39f27a2d28d86e48f8981859e9d3296c179" - integrity sha512-51IMtNfVcee8+9GJvj0spSuFcZHe9vSib6Xtgsny1Km9ugyz2mbS08I3rsUIRYgJohFRFU1160sgRodYz378Hg== + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -6376,10 +6106,10 @@ unzip-response@^2.0.1: resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= -unzipper@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.5.tgz#4d189ae6f8af634b26efe1a1817c399e0dd4a1a0" - integrity sha512-i5ufkXNjWZYxU/0nKKf6LkvW8kn9YzRvfwuPWjXP+JTFce/8bqeR0gEfbiN2IDdJa6ZU6/2IzFRLK0z1v0uptw== +unzipper@^0.10.10: + version "0.10.10" + resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.10.tgz#d82d41fbdfa1f0731123eb11c2cfc028b45d3d42" + integrity sha512-wEgtqtrnJ/9zIBsQb8UIxOhAH1eTHfi7D/xvmrUoMEePeI6u24nq1wigazbIFtHt6ANYXdEVTvc8XYNlTurs7A== dependencies: big-integer "^1.6.17" binary "~0.3.0" @@ -6448,9 +6178,14 @@ uuid@^2.0.1: integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= uuid@^3.0.0, uuid@^3.3.2, uuid@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.2.tgz#7ff5c203467e91f5e0d85cfcbaaf7d2ebbca9be6" + integrity sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw== v8-compile-cache@^2.0.3: version "2.1.0" @@ -6522,14 +6257,14 @@ which-boxed-primitive@^1.0.1: is-symbol "^1.0.2" which-collection@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.0.tgz#303d38022473f4b7048b529b45f6c842d8814269" - integrity sha512-mG4RtFHE+17N2AxRNvBQ488oBjrhaOaI/G+soUaRJwdyDbu5zmqoAKPYBlY7Zd+QTwpfvInRLKo40feo2si1yA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: - is-map "^2.0.0" - is-set "^2.0.0" - is-weakmap "^2.0.0" - is-weakset "^2.0.0" + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" which-module@^2.0.0: version "2.0.0" @@ -6549,9 +6284,9 @@ which@1.3.1, which@^1.2.9: isexe "^2.0.0" which@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.1.tgz#f1cf94d07a8e571b6ff006aeb91d0300c47ef0a4" - integrity sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w== + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" @@ -6637,9 +6372,9 @@ write-file-atomic@^2.0.0: signal-exit "^3.0.2" write-file-atomic@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.0.tgz#1b64dbbf77cb58fd09056963d63e62667ab4fb21" - integrity sha512-EIgkf60l2oWsffja2Sf2AL384dx328c0B+cIYPTQq5q2rOYuDV00/iPFBOUiDKKwKMOhkymH8AidPaRvzfxY+Q== + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" is-typedarray "^1.0.0" @@ -6676,9 +6411,9 @@ xmlbuilder@^9.0.7: integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= xmldom@0.1.x: - version "0.1.27" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" - integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= + version "0.1.31" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" + integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" @@ -6696,18 +6431,18 @@ yallist@^2.1.2: integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" - integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + version "1.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" + integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== dependencies: - "@babel/runtime" "^7.6.3" + "@babel/runtime" "^7.8.7" -yargs-parser@13.1.1, yargs-parser@^13.1.1: +yargs-parser@13.1.1: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== @@ -6715,18 +6450,18 @@ yargs-parser@13.1.1, yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.0.tgz#cdd7a97490ec836195f59f3f4dbe5ea9e8f75f08" - integrity sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ== +yargs-parser@^13.1.1, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== +yargs-parser@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.0.tgz#1b0ab1118ebd41f68bb30e729f4c83df36ae84c3" + integrity sha512-o/Jr6JBOv6Yx3pL+5naWSoIA2jJ+ZkMYQG/ie9qFbukBe4uzmBatlXFOiu/tNKRWEtyf+n5w7jc/O16ufqOTdQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -6740,7 +6475,7 @@ yargs-unparser@1.6.0: lodash "^4.17.15" yargs "^13.3.0" -yargs@13.3.0, yargs@^13.3.0: +yargs@13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== @@ -6756,13 +6491,12 @@ yargs@13.3.0, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" -yargs@^14.2.0: - version "14.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.0.tgz#f116a9242c4ed8668790b40759b4906c276e76c3" - integrity sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg== +yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" - decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^2.0.1" require-directory "^2.1.1" @@ -6771,12 +6505,12 @@ yargs@^14.2.0: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^15.0.0" + yargs-parser "^13.1.2" yargs@^15.0.2: - version "15.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219" - integrity sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg== + version "15.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976" + integrity sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA== dependencies: cliui "^6.0.0" decamelize "^1.2.0" @@ -6788,7 +6522,7 @@ yargs@^15.0.2: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^16.1.0" + yargs-parser "^18.1.0" yn@3.1.1: version "3.1.1" @@ -6796,9 +6530,9 @@ yn@3.1.1: integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== zip-stream@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.2.tgz#841efd23214b602ff49c497cba1a85d8b5fbc39c" - integrity sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg== + version "2.1.3" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b" + integrity sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q== dependencies: archiver-utils "^2.1.0" compress-commons "^2.1.1"