diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 859b9c58..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,550 +0,0 @@ -# KlassiTech Automated Testing Tool -# Created by Larry Goddard -# -# Copyright © klassitech 2016 - Larry Goddard -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Javascript Node CircleCI 2.0 configuration file -# -# Check https://circleci.com/docs/2.0/language-javascript/ for more details - -version: 2.0 - -references: - container_config: &container_config - working_directory: ~/klassi-js - docker: - - image: circleci/openjdk:8u181-jdk-node-browsers - - restore_repo: &restore_repo - restore_cache: - keys: - - v1-klassi-repo-{{ .Environment.CIRCLE_SHA1 }} -# - v1-klassi-repo-{{ .Branch }}-{{ .Revision }} - - v1-klassi-repo-{{ .Branch }} - - v1-klassi-repo - - yarn_cache_key: &yarn_cache_key - v3-dependency-yarn-{{ checksum "yarn.lock" }} - yarn_backup_cache_key: &yarn_backup_cache_key - v3-dependency-yarn - - restore_yarn_dependencies: &restore_yarn_dependencies - restore_cache: - keys: - - *yarn_cache_key - - *yarn_backup_cache_key - - restore_acceptance_builds: &restore_acceptance_builds - restore_cache: - key: v1-acceptance-build-{{ .Environment.CIRCLE_SHA1 }} - -jobs: - checkout_code: - <<: *container_config - steps: - - *restore_repo - - checkout - - - save_cache: - key: v1-klassi-repo-{{ .Environment.CIRCLE_SHA1 }} - paths: - - . -# key: dependency-cache-{{ checksum "yarn.lock" }} -# paths: -# - node_modules - - install_dependencies: - <<: *container_config - steps: - - *restore_repo - - *restore_yarn_dependencies - - - run: - name: Install Dependencies - command: yarn install --frozen-lockfile - - - run: - name: Install klassi dependencies - command: yarn install - - - save_cache: - key: *yarn_cache_key - paths: - - "~/.cache/yarn" - - node_modules - -# - save_cache: -# key: dependency-cache-{{ checksum "yarn.lock" }} -# paths: -# - node_modules - - integration_test_build: - <<: *container_config - steps: - - *restore_repo - - *restore_yarn_dependencies - - *restore_acceptance_builds - - - run: - name: Create Test-Result Directory - command: mkdir ./test-results - - - run: - name: Download Selenium - command: curl -O http://selenium-release.storage.googleapis.com/3.5/selenium-server-standalone-3.5.3.jar - - - run: - name: Start Selenium Server - command: java -jar selenium-server-standalone-3.5.3.jar -log test-results/selenium.log - background: true - - - run: - name: Install Dependencies - command: yarn install - - - save_cache: - key: dependency-cache-{{ checksum "yarn.lock" }} - paths: - - node_modules - - run: - name: Integration Test Run - command: yarn run dev - - - store_artifacts: - path: artifacts - - - store_test_results: - path: ./test-results - -# # Integration test base configuration -# # Integration test base configuration -# integration_test_base: &integration_test_base -# <<: *container_config -# steps: -# - *restore_repo -# - *restore_yarn_dependencies -# - *restore_acceptance_builds -# -# - run: -# name: Set BrowserStack Local Identifier -# command: echo 'export BROWSERSTACK_LOCAL_IDENTIFIER=integration_test_$BROWSER_NAME_run_$CIRCLE_BUILD_NUM' >> $BASH_ENV -# -# - run: -# name: Start BrowserStack Local -# command: ./scripts/ci/browserstack-local.sh start -# background: true -# -# - run: -# name: Check BrowserStack Local running -# command: sleep 5;./scripts/ci/browserstack-local.sh check -# -# - run: -# name: Nightwatch Tests -# command: | -# ./node_modules/.bin/nightwatch \ -# -c config/nw-browserstack.conf.js \ -# -t tests/integration/marking.js \ -# -e $BROWSER_NAME -# environment: -# TEST_REPORT_PATH: /tmp/test-results -# -# - store_artifacts: -# path: artifacts -# -# - store_test_results: -# path: /tmp/test-results -# -# integration_test_chrome: -# <<: *integration_test_base -# environment: { BROWSER_NAME: 'chrome' } -# -# integration_test_iexplorer: -# <<: *integration_test_base -# environment: { BROWSER_NAME: 'iexplorer' } -# -# integration_test_edge: -# <<: *integration_test_base -# environment: { BROWSER_NAME: 'edge' } -# -# integration_test_firefox: -# <<: *integration_test_base -# environment: { BROWSER_NAME: 'firefox' } -# -# integration_test_safari: -# <<: *integration_test_base -# environment: { BROWSER_NAME: 'safari' } -# -# integration_test_tabletiPad: -# <<: *integration_test_base -# environment: { BROWSER_NAME: 'tabletiPad' } -# -# integration_test_tabletGalaxy: -# <<: *integration_test_base -# environment: { BROWSER_NAME: 'tabletGalaxy' } -# -# integration_test_build: -# <<: *container_config -# steps: -# - run: "echo 'FINISHED'" - - acceptance_test_build: - <<: *container_config - steps: - - *restore_repo - - *restore_yarn_dependencies - - - run: - name: Create Test-Result Directory - command: mkdir ./test-results - - - run: - name: Download Selenium - command: curl -O http://selenium-release.storage.googleapis.com/3.5/selenium-server-standalone-3.5.3.jar - - - run: - name: Start Selenium Server - command: java -jar selenium-server-standalone-3.5.3.jar -log test-results/selenium.log - background: true - - - run: - name: Install Dependencies - command: yarn install - - - save_cache: - key: dependency-cache-{{ checksum "yarn.lock" }} - paths: - - node_modules - - - run: - name: Set BrowserStack Local Identifier - command: echo 'export BROWSERSTACK_LOCAL_IDENTIFIER=acceptance_test_$BROWSER_NAME_run_$CIRCLE_BUILD_NUM' >> $BASH_ENV - - - run: - name: Acceptance Test Run - command: BROWSERSTACK_LOCAL_IDENTIFIER=larryg BROWSERSTACK_USERNAME=larryg2 BROWSERSTACK_ACCESS_KEY=JhxyJ1qdNhAx75KuwpQc yarn run uat - - - store_artifacts: - path: artifacts - - - store_test_results: - path: ./test-results - -# # Acceptance test base configuration -# # Acceptance test base configuration -# acceptance_test_base: &acceptance_test_base -# <<: *container_config -# steps: -# - *restore_repo -# - *restore_yarn_dependencies -# -# - run: -# name: Avoid hosts unknown for github -# command: mkdir ~/.ssh/ && echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config -# -# - run: -# name: Removed old Player code -# command: rm -rf ./player -# -# - run: -# name: Clone Player code -# command: | -# echo "Attempt clone of Player branch develop" -# -# if [ `git clone --depth 1 git@github.com:OUP/mymaths-player.git --branch develop ./player` $? -eq 128 ]; -# then -# echo "Using Player branch develop" -# git clone --depth 1 git@github.com:OUP/mymaths-player.git ./player -# fi -# exit 0; -# -# - run: -# name: Install Player dependencies -# command: cd ./player;yarn install -# -# - run: -# name: Build Player for Testing -# command: cd ./player;yarn build-test -# -# - store_artifacts: -# path: ./player/build -# -# - save_cache: -# key: v1-acceptance-build-{{ .Branch }}-{{ .Revision }} -# paths: -# - ./player/build -# -# - run: -# name: Start Player for Testing -# command: | -# cd ./player/build;yarn serve-build -# echo `pwd` -# background: true -# -# - run: -# name: Check HTTP Server running -# command: | -# sleep 5 -# curl --retry 10 --retry-delay 5 -v http://127.0.0.1:8080/ -# -# - run: -# name: Set BrowserStack Local Identifier -# command: echo 'export BROWSERSTACK_LOCAL_IDENTIFIER=acceptance_test_$BROWSER_NAME_run_$CIRCLE_BUILD_NUM' >> $BASH_ENV -# -# - run: -# name: Start BrowserStack Local -# command: ./scripts/ci/browserstack-local.sh start -# background: true -# -# - run: -# name: Check BrowserStack Local running -# command: sleep 5;./scripts/ci/browserstack-local.sh check -# -# - run: -# name: Nightwatch Tests -# command: | -# ./node_modules/.bin/nightwatch \ -# -c ./config/nw-browserstack.conf.js \ -# -e $BROWSER_NAME -# -# environment: -# TEST_REPORT_PATH: /tmp/test-results -# -# - store_artifacts: -# path: artifacts -# -# - store_test_results: -# path: /tmp/test-results -# -# acceptance_test_chrome: -# <<: *acceptance_test_base -# environment: { BROWSER_NAME: 'chrome' } -# -# acceptance_test_iexplorer: -# <<: *acceptance_test_base -# environment: { BROWSER_NAME: 'iexplorer' } -# -# acceptance_test_edge: -# <<: *acceptance_test_base -# environment: { BROWSER_NAME: 'edge' } -# -# acceptance_test_firefox: -# <<: *acceptance_test_base -# environment: { BROWSER_NAME: 'firefox' } -# -# acceptance_test_safari: -# <<: *acceptance_test_base -# environment: { BROWSER_NAME: 'safari' } -# -# acceptance_test_tabletiPad: -# <<: *acceptance_test_base -# environment: { BROWSER_NAME: 'tabletiPad' } -# -# acceptance_test_tabletGalaxy: -# <<: *acceptance_test_base -# environment: { BROWSER_NAME: 'tabletGalaxy' } -# -# acceptance_test_build: -# <<: *container_config -# steps: -# - run: "echo 'FINISHED'" - - -workflows: - version: 2 - build_and_test: - jobs: - - checkout_code - - - install_dependencies: - requires: - - checkout_code - - - integration_test_build: - requires: - - checkout_code - - install_dependencies - - - acceptance_test_build: - requires: - - checkout_code - - install_dependencies - - - run_basic_integration_tests: - type: approval - requires: - - integration_test_build - filters: - branches: - ignore: - - develop - - master - - - run_basic_acceptance_tests: - type: approval - requires: - - acceptance_test_build - filters: - branches: - ignore: - - develop - - master - -# - integration_test_chrome: -# requires: -# - integration_test_build -# - run_basic_integration_tests -# -# - acceptance_test_chrome: -# requires: -# - acceptance_test_build -# - run_basic_acceptance_tests - - - -#workflows: -# version: 2 -# # the below default_Test runs whenever you commit any code into klassi repo. -# # Ideally, when you commit code into klassi of any kind into the repo. -# default_test: -# jobs: -# - checkout_code -# -# - install_dependencies: -# requires: -# - checkout_code -# -# - integration_test_build: -# requires: -# - checkout_code -# - install_dependencies -# -# - run_basic_integration_tests: -# type: approval -# requires: -# - integration_test_build -# filters: -# branches: -# ignore: -# - develop -# - master -# -# - integration_test_chrome: -# requires: -# - integration_test_build -# - run_basic_integration_tests -# -# - integration_test_iexplorer: -# requires: -# - integration_test_build -# - run_basic_integration_tests -# -# - run_all_integration_tests: -# type: approval -# requires: -# - integration_test_build -# - run_basic_integration_tests -# filters: -# branches: -# ignore: -# - develop -# - master -# -# - integration_test_edge: -# requires: -# - integration_test_build -# - run_all_integration_tests -# -# - integration_test_firefox: -# requires: -# - integration_test_build -# - run_all_integration_tests -# -# - integration_test_safari: -# requires: -# - integration_test_build -# - run_all_integration_tests -# -# - integration_test_tabletiPad: -# requires: -# - integration_test_build -# - run_all_integration_tests -# -# - integration_test_tabletGalaxy: -# requires: -# - integration_test_build -# - run_all_integration_tests -# -# - acceptance_test_build: -# requires: -# - checkout_code -# - install_dependencies -# -# - run_basic_acceptance_tests: -# type: approval -# requires: -# - acceptance_test_build -# filters: -# branches: -# ignore: -# - develop -# - master -# -# - acceptance_test_chrome: -# requires: -# - acceptance_test_build -# - run_basic_acceptance_tests -# -# - acceptance_test_iexplorer: -# requires: -# - acceptance_test_build -# - run_basic_acceptance_tests -# -# - run_all_acceptance_tests: -# type: approval -# requires: -# - acceptance_test_build -# - run_basic_acceptance_tests -# filters: -# branches: -# ignore: -# - develop -# - master -# -# - acceptance_test_edge: -# requires: -# - acceptance_test_build -# - run_all_acceptance_tests -# -# - acceptance_test_firefox: -# requires: -# - acceptance_test_build -# - run_all_acceptance_tests -# -# - acceptance_test_safari: -# requires: -# - acceptance_test_build -# - run_all_acceptance_tests -# -# - acceptance_test_tabletiPad: -# requires: -# - acceptance_test_build -# - run_all_acceptance_tests -# -# - acceptance_test_tabletGalaxy: -# requires: -# - acceptance_test_build -# - run_all_acceptance_tests - - diff --git a/.dataConfigrc.js b/.dataConfigrc.js new file mode 100644 index 00000000..aee22c03 --- /dev/null +++ b/.dataConfigrc.js @@ -0,0 +1,30 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +module.exports = { + dataConfig: { + projectName: 'klassi-js', + s3FolderName: 'klassi-js', + + emailData: { + nameList: 'QaAutoTest ', + AccessibilityReport: 'Yes', + // for AWS host + SES_REGION: 'eu-west-1', + // for SMTP host + SMTP_HOST: 'smtp.ionos.co.uk', + }, + + s3Data: { + S3_BUCKET: 'test-app-automated-reports', + S3_REGION: 'eu-west-2', + S3_DOMAIN_NAME: 'http://test-app-automated-reports.s3.eu-west-2.amazonaws.com', + }, + + tagNames: [] + }, +}; diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..5212ee78 --- /dev/null +++ b/.env.example @@ -0,0 +1,15 @@ +# AWS credentials for S3 bucket access +S3_KEY=AWS-ACCESS-KEY-FOR-S3-BUCKET-ACCESS +S3_SECRET=AWS-SECRET-KEY-FOR-S3-BUCKET-ACCESS + +# AWS credentials for SES email sending +SES_KEY=AWS-ACCESS-KEY-FOR-SES-ACCESS +SES_SECRET=AWS-SECRET-KEY-FOR-SES-ACCESS + +LAMBDATEST_USERNAME=YOUR-LAMBDATEST-USERNAME +LAMBDATEST_API_URL=YOUR-LAMBDATEST-API-URL +LAMBDATEST_ACCESS_KEY=YOUR-LAMBDATEST-ACCESS-KEY + +# SMTP server connection +SMTP_USERNAME_ID=SMTP_USERNAME +SMTP_PASSWORD_KEY=SMTP_PASSWORD diff --git a/.envConfigrc.js b/.envConfigrc.js new file mode 100755 index 00000000..2b12bf14 --- /dev/null +++ b/.envConfigrc.js @@ -0,0 +1,25 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +module.exports = { + /** + * this is for your environment setups + */ + environment: { + test: { + envName: "TEST", + web_url: "https://duckduckgo.com/", + api_base_url: "http://httpbin.org/get", + }, + + dev: { + envName: "DEVELOPMENT", + web_url: "https://duckduckgo.com/", + api_base_url: "http://httpbin.org/get", + }, + } +}; diff --git a/.eslintrc b/.eslintrc new file mode 100755 index 00000000..56f9d78a --- /dev/null +++ b/.eslintrc @@ -0,0 +1,7 @@ +{ + // most folder contexts extend rules in a language-specific way (e.g. src, lambda) so these are a catch-all for other folders + "root":true, + "extends": [ + "./runtime/coding-standards/eslint/.eslintrc.json" + ] +} diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 6c497f8c..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,105 +0,0 @@ -'use strict'; - -// prettier.config.js or .prettierrc.js -module.exports = { - - env: { - browser: true, - commonjs: true, - es6: true, - node: true - }, - - extends: [ - // 'eslint:recommended', - 'prettier', - 'plugin:prettier/recommended' - ], - - parserOptions: { - sourceType: 'module', - ecmaVersion: 2018, - ecmaFeatures: { - 'jsx': true - } - }, - - rules: { - indent: [ - 'error', - 2 - ], - 'linebreak-style': [ - 'error', - 'unix' - ], - quotes: [ - 'error', - 'single' - ], - semi: [ - 'error', - 'always' - ], - 'no-console': [ - 0, - 'error' - ], - exclude: [ - '../node_modules', - 'log', - 'features', - 'reports', - 'artifact' - ], - files: [ - './globals.d.ts' - ], - 'prettier/prettier': [ - 2, - 'error', - { - singleQuote: true - } - ], - }, - - globals: { - Given: true, - When: true, - Then: true, - helpers:false, - driver:false, - log: false, - date: false, - startDateTime: false, - endDateTime: false, - browserName: false, - reportName: false, - projectName: false, - settings: false, - envConfig: true, - request: true, - assert: true, - expect: true, - shared: true, - DELAY_100_MILLISECOND: false, - DELAY_200_MILLISECOND: false, - DELAY_300_MILLISECOND: false, - DELAY_500_MILLISECOND: false, - DELAY_1_SECOND: true, - DELAY_3_SECOND: true, - DELAY_5_SECOND: false, - DELAY_10_SECOND: false, - DELAY_15_SECOND: false, - DELAY_20_SECOND: false, - noImplicitAny: true, - noImplicitThis: true, - strictNullChecks: true, - strictFunctionTypes: false, - baseUrl: './', - noEmit: true, - forceConsistentCasingInFileNames: true - } - -}; \ No newline at end of file diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index b28a4d15..3c5926f7 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,30 @@ +## project folders +artifacts +.nyc_output +coverage +visual-regression-baseline + +##Project structure folders excluded +.circleci +features +lambdatest +page-objects +shared-objects +step_definitions + +# exclude generated reports +reports + +# ignore dotenv files, except example +.env +.env.* +!.env.example + +# exclude file +shared-objects/docs/userAgent.txt +bashScript + + # Logs logs log @@ -7,82 +34,18 @@ npm-debug.log* # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) .grunt -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - # Dependency directories node_modules -# Files and Directory -.npm -.iml -.node_repl_history -.directory -.files -.nyc* -.txt -files -cssImages -reports -artifacts -coverage -testDir - # IntelliJ project files .idea out gen .DS_Store +*.iml -shared-objects/emailData.json -runtime/envConfig.json -# Logs - -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# nyc test coverage -.nyc_output - - - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - - - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional eslint cache -.eslintcache - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env +# UTAM +page-objects/__utam__/compiledUTAM -# next.js build output -.next -webdriverio-cucumber-js.iml -/browserstack/secrets/browserstack.json +#tesseract +eng.traineddata diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 00000000..c9cdc63b --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 00000000..98aaeae7 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,5 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx --no -- commitlint --edit "${1}" +yarn run lint-branch-name \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..0312b760 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx lint-staged \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b5fc5c37..00000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: node_js - -node_js: - - "10.15.3" - - "11.0.0" -yarn: - - "1.13.0" - -before_script: - - npm install selenium-standalone@latest -g - - selenium-standalone install - - selenium-standalone start & - - sleep 5 \ No newline at end of file diff --git a/.versionrc.json b/.versionrc.json new file mode 100644 index 00000000..377c60d9 --- /dev/null +++ b/.versionrc.json @@ -0,0 +1,46 @@ +{ + "types": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "docs", + "section": "Documentation" + }, + { + "type": "refactor", + "section": "Refactors" + }, + { + "type": "chore", + "hidden": true + }, + { + "type": "docs", + "hidden": false + }, + { + "type": "style", + "hidden": true + }, + { + "type": "refactor", + "hidden": false + }, + { + "type": "perf", + "hidden": true + }, + { + "type": "test", + "hidden": true + } + ], + "commitUrlFormat": "https://github.com/klassijs/klassi-js/commit/{{hash}}", + "compareUrlFormat": "https://github.com/klassijs/klassi-js/compare/{{previousTag}}...{{currentTag}}" +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..200666f0 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,49 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [5.2.0](https://github.com/klassijs/klassi-js/compare/v5.0.0...v5.2.0) (2023-06-06) + + +### Features +* added new features and refactor s3Upload ([5aaa175](https://github.com/klassijs/klassi-js/commit/5aaa1750e2f6cb605914f78d269e58e429f10815)) + + +### Bug Fixes + +* added the necessary files needed for the upgrade ([97226b7](https://github.com/klassijs/klassi-js/commit/97226b79526fdf47994943926842aa0c17d806e0)) +* minor refactoring remove test folders ([38facee](https://github.com/klassijs/klassi-js/commit/38facee9f8e84ba1ced55bf12aa01c61ace4dcb0)) +* updated helper and mailer files ([0ea021b](https://github.com/klassijs/klassi-js/commit/0ea021b854e5ce0d5979f9dac5e371a25e02dcf0)) + +## 5.0.0 (2023-03-13) + +### Features + +* **Automatic changelog:** changelog creation automated using standard-version +* **AWS v3 upgrade:** upgrading s3upload and s3reportProcessor +* bumped the Node version requirements to v18.12.1 +* upgraded to WebdriverIO v8 +* upgraded to Cucumber v8 +* automatic test skip using @wip, @skip or a custom tag +* dry run option added to validate that the code is correctly structured +without actually asserting the business logic +* commit and branch linting implemented and integrated into the git hooks using Husky +* changelog automation implemented using standard-version + + +### Bug Fixes + + +* **Automatic Changelog:** updated the commit url in the versionrc +* **Feature files:** fixed implementation of --featureFiles using cucumber.js file +* Changed the package URLs to make them compatible with Windows (whether SSH or HTTPS) +* Added two Windows-specific rules to ESLint config +* fixed the accessibility report implementation +* closeBrowser option changed to browserOpen + +### Refactors + +* **CI:** refactored the S3 report scripts +* **Reports:** cucumber-html-reporter version changed to our own, and became owners of the project +* **s3:** changed the folder structure on the s3 bucket to (yyyy-mm-dd) +* envConfigrc file split into dataConfigrc and envConfigrc diff --git a/LICENSE b/LICENSE index 2e29736d..984d38be 100644 --- a/LICENSE +++ b/LICENSE @@ -1,61 +1,21 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - - "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and - (b) You must cause any modified files to carry prominent notices stating that You changed the files; and - (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. - You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. - -Copyright 2016 Larry Goddard - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. \ No newline at end of file +MIT License + +Copyright (c) 2016 Larry Goddard + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index c8a6ae3a..0dfdc45d 100755 --- a/README.md +++ b/README.md @@ -1,206 +1,447 @@ -[![STAT](https://nodei.co/npm/klassi-js.png?download=true)](https://nodei.co/npm/klassi-js/) - -# klassi-js [![Run Status](https://api.shippable.com/projects/585832b28171491100bb123f/badge?branch=master)](https://app.shippable.com/projects/585832b28171491100bb123f) [![Build Status](https://travis-ci.org/larryg01/klassi-js.svg?branch=master)](https://travis-ci.org/larryg01/klassi-js) [![Downloads](https://img.shields.io/npm/dt/webdriverio-cucumber-js.svg?longCache=true&style=flat)](https://npm-stat.com/charts.html?author=larryg01&from=2016-12-01) - - - A platform independent debuggable BDD Javascript testing framework. It's simple, easy to use and not dependant to - any other tool or library. It's built with [nodeJs](https://nodejs.org/en/), [webdriver.io (Next-gen WebDriver for Node.js)](http://webdriver.io/) and [cucumber-js](https://github.com/cucumber/cucumber-js "view - cucumber js documentation") complete with integrated API Testing. - +

+

klassi-js
+ + Klassi-Js +

+ +

+ + License + + + Gitter + + + WebdriverIO + + + WebdriverIO +
+ klassi-Js is a debuggable BDD Javascript test automation framework. Built on webdriver.io (Next-gen browser and mobile automation test framework for Node.js) and cucumber-js with integrated Visual, accessibility and API Testing, your test can run locally or in the cloud using Lambdatest , BrowserStack or Sauce Labs +

+  ## Installation ```bash -git-clone-ssh: git@github.com:larryg01/klassi-js.git -git-clone-https: https://github.com/larryg01/klassi-js.git -download: https://github.com/larryg01/klassi-js/archive/develop.zip -npm i klassi-js - - -# To run your test locally, you'll need a local selenium server running, you can install and -# launch a selenium standalone server with chrome, firefox and phantomjs drivers via the -# following commands in a separate terminal: - -yarn global add selenium-standalone@latest -selenium-standalone install && selenium-standalone start +yarn add klassi-js +  +npm install klassi-js ``` ## Usage ```bash -# run 'yarn install' in a terminal window from within the project folder -node ./node_modules/klassi-js/index.js -s ./step-definitions -or -node index.js -dt @search // locally -or -yarn run bslocal chrome/@search // via browserstack +node ./node_modules/klassi-js/index.js ``` -### Options +## Options ```bash --h, --help output usage information --v, --version output the version number --s, --steps path to step definitions. defaults to ./step-definitions --p, --pageObjects path to page objects. defaults to ./page-objects --o, --sharedObjects [paths] path to shared objects - repeatable. defaults to ./shared-objects --b, --browser name of browser to use. defaults to chrome --r, --reports output path to save reports. defaults to ./reports --d, --disableTestReport [optional] disables the test report from opening after test completion --t, --tags name of tag to run --c, --context contextual root path for project-specific features, steps, objects etc --f, --featuresPath path to feature definitions. defaults to ./features --e, --email [optional] sends email reports to stakeholders --n, --environment [] name of environment to run the framework/test in. default to dev --g, --reportName [optional] basename for report files e.g. use report for report.json --x, --extraSettings [optional] further piped configs split with pipes --w, --remoteService [optional] which remote driver service, if any, should be used e.g. browserstack -``` - -By default tests are run using Google Chrome, to run tests using another browser supply the name of that browser along with the `-b` switch. Available options are: +--help output usage information +--version output the version number +--browser name of browser to use (chrome, firefox). defaults to chrome +--tags <@tagName> name of cucumber tags to run - Multiple TAGS usage (@tag1,@tag2) +--exclude <@tagName> name of cucumber tags to exclude - Multiple TAGS usage(@tag3,@tag5) +--steps path to step definitions. defaults to ./step-definitions +--featureFiles path to feature definitions. defaults to ./features +--pageObjects path to page objects. defaults to ./page-objects +--sharedObjects path to shared objects - repeatable. defaults to ./shared-objects +--reports output path to save reports. defaults to ./reports +--disableReport disables the test report from opening after test completion +--email sends email reports to stakeholders +--env name of environment to run the framework/test in. default to dev +--reportName name of what the report would be called i.e. 'Automated Test' +--remoteService which remote driver service, if any, should be used e.g. browserstack +--extraSettings further piped configs split with pipes +--updateBaselineImages automatically update the baseline image after a failed comparison or new images +--wdProtocol the switch to change the browser option from using devtools to webdriver +--browserOpen this leaves the browser open after the session completes, useful when debugging test. defaults to false', false +--dlink the switch for projects with their test suite, within a Test folder of the repo +--dryRun the effect is that Cucumber will still do all the aggregation work of looking at your feature files, loading your support code etc but without actually executing the tests +--utam this launches the compiler for salesforce scripts +--useProxy this is in-case you need to use the proxy server while testing' +--skipTag <@tagName> provide a tag and all tests marked with it will be skipped automatically. +``` +## Options Usage +```bash + --tags @get,@put || will execute the scenarios tagged with the values provided. If multiple are necessary, separate them with a comma (no blank space in between). + --featureFiles features/utam.feature,features/getMethod.feature || provide specific feature files containing the scenarios to be executed. If multiple are necessary, separate them with a comma (no blank space in between). +``` +## Upgrading to klassi-js v5 +To upgrade existing projects for use with klassi-js v5, please follow these few steps [HERE](docs/upgradeDoc.md) -| Browser | Example | -| :--- | :--- | -| Chrome | `-b chrome` | -| Firefox | `-b firefox` | +## Directory Structure +You can use the framework without any command line arguments if your application uses the following folder structure, to help with the built in functionality usage. + +```bash +. +└── features +   └── search.feature +└── page-objects +   └── search.js +└── shared-objects +   └── searchData.js +└── step_definitions +   └── search-steps.js +└── reports # folder and content gets created automatically at runtime +   └── chrome +       ├── reportName-01-01-1900-235959.html +       └── reportName-01-01-1900-235959.json +.envConfigrc.js # this file will contain all your environment variables (i.e. dev, test, prod etc.,) +.dataConfigrc.js # this file will contain all your project variables #projectName, emailAddresses +.env # this file contains all config username and passcode and should be listed in the gitignore file +cucumber.js # the cucumber configuration file +``` +## Step definitions The following variables are available within the ```Given()```, ```When()``` and ```Then()``` functions: | Variable | Description | | :--- | :--- | -| `driver` | an instance of [web driver](https://webdriver.io/docs/setuptypes.html) (_the browser_) | -| `webdriverio`| the raw [webdriver](https://webdriver.io/docs/api.html) module, providing access to static properties/methods | -| `page` | collection of **page** objects loaded from disk and keyed by filename | -| `shared` | collection of **shared** objects loaded from disk and keyed by filename | +| `browser` | an instance of [webdriverio](https://webdriver.io/docs/setuptypes.html) (_the browser_) | +| `wdio`| the raw [webdriverio](https://webdriver.io/docs/api.html) module, providing access to static properties/methods | +| `pageObjects` | collection of **page** objects loaded from disk and keyed by filename | +| `sharedObjects` | collection of **shared** objects loaded from disk and keyed by filename | | `helpers` | a collection of [helper methods](runtime/helpers.js) _things webdriver.io does not provide but really should!_ | | `expect` | instance of [chai expect](https://www.chaijs.com/api/bdd/) to ```expect('something').to.equal('something')``` | | `assert` | instance of [chai assert](https://www.chaijs.com/api/assert/) to ```assert.isOk('everything', 'everything is ok')``` | | `trace` | handy trace method to log console output with increased visibility | -| `fs` | exposes fs (file system) for use globally | -| `dir` | exposes dir for getting an array of files, subdirectories or both | -| `request` | exposes the request-promise for API testing | ```use for making API calls``` | -| `date` | exposes the date method for logs and reports | -| `log` | exposes the log method for output to files and emailing | -| `envConfig` | exposes the global environment configuration file | ```for use when changing environment types (i.e. dev, test, preprod)``` | - -### Visual Regression functionality with [Resemble JS](https://github.com/rsmbl/Resemble.js) - -Visual regression testing, gives the ability to take and compare whole page screenshots or of specific parts of the application / page under test. -If there are Elements in the page that contain dynamic contents (like a clock or something like tipp of the day), you can hide this elements before -taking the screenshot by passing the selector (or an array of selectors) to the saveScreenshot function. + + +## Helpers +Klassi-js contains a few helper methods to help along the way, these methods are: ```js -// ./runtime/imageCompare.js +// Load a URL, returning only when the tag is present +await helpers.loadPage('https://duckduckgo.com', 10); -compareImage: async (fileName) => { - const verify = require('./imageCompare'); - await verify.assertion(fileName); - await verify.value(); - await verify.pass(); -} +// take image for comparisson +await helpers.takeImage('flower_1-0.png', 'div.badge-link--serp.ddg-extension-hide.js-badge-link'); + +// compare taken image with baseline image +await helpers.compareImage('flower_1-0.png'); + +// get the content of an endpoint +await helpers.apiCall('http://httpbin.org/get', 'get'); + +// writing content to a text file +await helpers.writeToTxtFile(filepath, output); + +// reading content froma text file +await helpers.readFromFile(filepath); + +// applying the current date to files +await helpers.currentDate(); + +// get current date and time (dd-mm-yyyy-00:00:00) +await helpers.getCurrentDateTime(); + +// clicks an element (or multiple if present) that is not visible, useful in situations where a menu needs a hover before a child link appears +await helpers.clickHiddenElement(selector, textToMatch); + +// This method is useful for dropdown boxes as some of them have default 'Please select' option on index 0 +await helpers.getRandomIntegerExcludeFirst(range); + +// Get the href link from an element +await helpers.getLink(selector); + +//wait until and element is visible and click it +await helpers.waitAndClick(selector); + +// wait until element to be in focus and set the value +await helpers.waitAndSetValue(selector, value); + +// function to get element from frame or frameset +await helpers.getElementFromFrame(frameName, selector); + +// This will assert 'equal' text being returned +await helpers.assertText(selector, expected); + +// This will assert text being returned includes +await helpers.expectToIncludeText(selector, expectedText); + +// this asserts that the returned url is the correct one +await helpers.assertUrl(expected); + +// this is the generating accessibility reports per page +await helpers.accessibilityReport: async (pageName, count = false || true); + +//reading from a json file +await helpers.readFromJson(); + +//writing data to testData json file in shared objects folder +await helpers.write(); + +//writing data to a json file +await helpers.writeToJson(); + +//writing json data from above to UrlData json file +await helpers.writeToUrlsData(); + +//merging json files +await helpers.mergeJson(); + +//hide elements +await helpers.hideElements(); + +//show elements +await helpers.showElements(); + +//reporting the current date and time +await helpers.reportDateTime(); + +//API call for GET, PUT, POST and DELETE functionality using PactumJS for API testing +await helpers.apiCall(); + +//function for recording Accessibility logs from the test run +await helpers.accessibilityReport(); + +//function for recording total errors from the Accessibility test run +await helpers.accessibilityError(); + +//Get the href link from an element +await helpers.getLink(); + +//function to get element from frame or frameset +await helpers.getElementFromFrame(); + +//Generate random integer from a given range +await helpers.generateRandomInteger(); + +//this generates the full execution time for a full scenario run +await helpers.executeTime(); + +//Generates a random 13 digit number +await helpers.randomNumberGenerator(); + +//Reformats date string into string +await helpers.reformatDateString(); + +//Sorts results by date +await helpers.sortByDate(); + +//this filters an item from a list of items +await helpers.filterItem(); + +//this filters an item from a list of items and clicks on it +await helpers.filterItemAndClick(); + +//this uploads a file from local system or project folder. Helpful to automate uploading a file when there are system dialogues exist. +await helpers.fileUpload(); +``` + +## Browser usage +By default, the test run using Google Chrome/devtools protocol, to run tests using another browser locally you'll need a local selenium server running, supply the browser name along with the `--wdProtocol --browser` switch +| Browser | Example | +| :--- | :--- | +| Chrome | `--wdProtocol --browser chrome` | +| Firefox | `--wdProtocol --browser firefox` | + +All other browser configurations are available via 3rd party services (i.e. browserstack | lambdatest | sauceLabs) + +Selenium Standalone Server installation +```bash +npm install -g selenium-standalone@latest +selenium-standalone install +selenium-standalone start +``` + +## Visual Regression with [Resemble JS](https://github.com/rsmbl/Resemble.js) + +Visual regression testing, the ability to compare a whole page screenshots or of specific parts of the application / page under test. +If there is dynamic content (i.e. a clock), hide this element by passing the selector (or an array of selectors) to the takeImage function. +```js // usage within page-object file: - await verify.saveScreenshot(fileName); + await helpers.takeImage(fileName, [elementsToHide, elementsToHide]); + await browser.pause(100); await helpers.compareImage(fileName); ``` -### API Testing functionality with [request-promise](https://github.com/request/request-promise) +## API Testing with [PactumJS](https://github.com/pactumjs/pactum#readme) Getting data from a JSON REST API ```js -// ./runtime/helpers.js - apiCall: function (endpoint) { - let endPoint = ('http://endpoint.com'); - - let options = { - method: 'GET', - url: endPoint, - json: true, - simple: false, - resolveWithFullResponse: true, - }; - - return request(options) - .then(async function (response, err) { - if (err) { - // API call failed - } - // response = API call is successful - }); - }, -``` - -### Reports - -HTML and JSON reports are automatically generated and stored in the default `./reports` folder. This location can be changed by providing a new path using the `-r` command line switch: - -![Cucumber HTML report](runtime/img/cucumber-html-report.png) - -### Event handlers + apiCall: async (url, method, auth, body, status) => { + let resp; + const options = { + url, + method, + headers: { + Authorization: `Bearer ${auth}`, + 'content-Type': 'application/json', + }, + body, + }; + + if (method === 'GET') { + resp = await helpers.apiCall(url, 'GET', auth); + return resp.statusCode; + } + if (method === 'POST') { + resp = await helpers.apiCall(url, 'POST', auth, body, status); + return resp; + } +} +``` +## Accessibility Testing with [Axe](https://www.deque.com/axe/) +Automated accessibility testing feature has been introduced using the Axe-Core OpenSource library. + +### Sample code +All the accessibility fuctions can be accessed through the global variable ``` accessibilityLib ```. +| function | Description | +|----------------------------|-----------------------------------------------------------------| +| ``` accessibilityLib.getAccessibilityReport('PageName')```| generates the accessibility report with the given page name | +| ``` accessibilityLib.getAccessibilityError()``` | returns the total number of error count for a particular page. | +| ``` accessibilityLib.getAccessibilityTotalError() ``` | returns the total number of error count for all the pages in a particilar execution | + +```js +// usage within page-object file: +When('I run the accesibility analysis for {string}', async function (PageName) { + // After navigating to a particular page, just call the function to generate the accessibility report and the total error count for the page + await helpers.accessibilityReport: async (pageName, count = false || true) +}); +``` + +## Test Execution Reports + +HTML and JSON reports will be automatically generated and stored in the default `./reports` folder. This location can be + changed by providing a new path using the `--reports` command line switch: + +![Cucumber HTML report](./runtime/img/cucumber-html-report.png) + +## Accessibility Report + +HTML and JSON reports will be automatically generated and stored in the default `./reports/accessibility` folder.This location can be changed by providing a new path using the `--reports` command line switch: + +![Aceessibility HTML report](./runtime/img/accessibility-html-report.png) + + +## Mobile App automation with [Appium](https://appium.io/docs/en/about-appium/getting-started/?lang=en) + +Besides the ability to test web applications on mobile environments, the framework allows for the automation of native mobile applications running on Android or iOS in LambdaTest. + +klassi-js contains sample tests that can be run by executing the following commands: +``` +yarn run android +``` + +Or: + +``` +yarn run ios +``` + +### Environment configuration + +The environment configuration needs to include the following information: + +* **envName**: Android or iOS. The application will be installed before the test is run and uninstalled on cleanup. +* **appName**: the application package name. Used when handling and verifying app instalation, removal and can be used in selectors. +* **appPath**: remote path to the .APK file (Android) or ZIP file (iOS) containing the application. Because the files need to be accessible to the Appium instance running on LambdaTest, remote locations are preferred. + +For instance: +``` +{ + environment: { + "android": { + "envName": "android", + "appName": "oxford.learners.bookshelf.canary", + "appPath": "https://olb-android-release.s3-accelerate.amazonaws.com/test/olb-5.9.3-canary.apk" + }, + } +} +``` + +### Mobile capabilities + +As far as the mobile capabilities set on `./lambdatest/`, please use [LambdaTest's application](https://www.lambdatest.com/capabilities-generator/) to ensure that you select a correct combination of OS, Appium version and device name that will be accepted by LT. + +As for properties that should be set to a specific option, please bear in mind the following considerations: + +* **build**: should be set to *"klassi-js Mobile"* so test executions for native mobile apps can be filtered easily from web app tests. +* **browserName**: should be left empty so Lambdatest doesn't interpret that the intention is to test a web application. +* **networkThrottling**: should be kept as *"Regular 4G"*, during development it was detected that element selection is flaky if the emulators do not keep a steady connection, achieved through this throttling option. + +For instance: + +``` +{ + "projectName": "klassi-js", + "build": "klassi-js Mobile", + "platformName" : "Android", + "browserName": "", + "deviceName" : "Galaxy Tab S7 Plus", + "platformVersion" : "11", + "appiumVersion" : "1.17.0", + "deviceOrientation" : "LANDSCAPE", + "networkThrottling": "Regular 4G", + "console" : "true", + "network" : true, + "visual" : true +} +``` + +## Event handlers You can register event handlers for the following events within the cucumber lifecycle. -const {After, Before, AfterAll, BeforeAll} = require('cucumber'); +const {After, Before, AfterAll, BeforeAll, BeforeStep, AfterStep} = require('@cucumber/cucumber'); | Event | Example | |----------------|-------------------------------------------------------------| -| Before | ```Before(function() { // This hook will be executed before all scenarios}) ``` | -| After | ```After(function() {// This hook will be executed after all scenarios});``` | -| BeforeAll | ```BeforeAll(function() {// perform some shared setup});``` | -| AfterAll | ```AfterAll(function() {// perform some shared teardown});``` | +| Before | ```Before(function() { // This hook will be executed before all scenarios}) ``` | +| After | ```After(function() {// This hook will be executed after all scenarios});``` | +| BeforeAll | ```BeforeAll(function() {// perform some shared setup});``` | +| AfterAll | ```AfterAll(function() {// perform some shared teardown});``` | +| BeforeStep | ```BeforeStep(function() {// This hook will be executed before all steps in a scenario with tagname;``` | +| AfterStep | ```AfterStep(function() {// This hook will be executed after all steps, and take a screenshot on step failure;``` | ## How to debug -Most webdriverio methods return a [JavaScript Promise](https://spring.io/understanding/javascript-promises "view JavaScript promise introduction") that is resolved when the method completes. The easiest way to step in with a debugger is to add a ```.then``` method to a selenium function and place a ```debugger``` statement within it, for example: +Most webdriverio methods return a [JavaScript Promise](https://spring.io/understanding/javascript-promises "view JavaScript promise introduction") that is resolved when the method completes. The easiest way to step in with a debugger is to add a ```.then``` method to the function and place a ```debugger``` statement within it, for example: ```js When(/^I search DuckDuckGo for "([^"]*)"$/, function (searchQuery, done) { - driver.element('#search_form_input_homepage').then(function(input) { + elem = browser.$('#search_form_input_homepage').then(function(input) { expect(input).to.exist; debugger; // <<- your IDE should step in at this point, with the browser open return input; }) - .then(function(input){ - input.setValue(selector, searchQuery); - input.setValue(selector, 'Enter'); - done(); // <<- let cucumber know you're done - }); }); ``` -## Default directory structure +## Commit conventions + +To enforce best practices in using Git for version control, this project includes a **Husky** configuration. Note that breaking the given rules will block the commit of the code. + +### Commits +After committing the staged code, the Husky scripts will enforce the implementation of the [**Conventional Commits specification**](https://www.conventionalcommits.org/en/v1.0.0/#summary). + +To summarize them, all commits should follow the following schema: -You can use the framework without any command line arguments if your application uses the following folder structure: ``` -. -├── features -│ └── duckDuckGo-search.feature -├── step_definitions -│ └── duckDuckGo-search-steps.js -├── page-objects -│ └── duckDuckGoSearch.js -|__ runtime -| |__ world.js -└── shared-objects -│ ├── test-data.js -└── reports - ├── cucumber-report.json - └── cucumber-report.html +git commit -m ": " ``` +Please keep in mind that the **subject** must be written in lowercase. + +## Demo +To see a demo of the framework without installing it, use this link [HERE] + ## Bugs -Please raise bugs via the [klassi-js issue tracker](https://github.com/larryg01/klassi-js/issues) and, if possible, please provide enough information to allow the bug to be -reproduced. +Please raise bugs via the [klassi-js issue tracker](https://github.com/klassijs/klassi-js/issues), please provide enough information for bug reproduction. ## Contributing -Anyone can contribute to this project simply by [opening an issue here](https://github.com/larryg01/klassi-js/issues) or fork the project and issue a pull request with suggested improvements. In lieu of a formal styleguide, please take care to maintain the existing coding style. +Anyone can contribute to this project, PRs are welcome. In lieu of a formal styleguide, please take care to maintain the existing coding style. ## Credits [John Doherty](https://www.linkedin.com/in/john-i-doherty) - + ## License -[Apache License](LICENSE) © 2016 [Larry Goddard](https://uk.linkedin.com/in/larryg) +Licenced under [MIT License](LICENSE) © 2016 [Larry Goddard](https://www.linkedin.com/in/larryg) diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c4192631..00000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/branchnamelinter.config.json b/branchnamelinter.config.json new file mode 100644 index 00000000..63917f61 --- /dev/null +++ b/branchnamelinter.config.json @@ -0,0 +1,25 @@ +{ + "branchNameLinter": { + "prefixes": [ + "testfix", + "automation", + "hotfix", + "release" + ], + "suggestions": { + "fix": "testfix", + "auto": "automation" + }, + "disallowed": [ + "master", + "develop", + "staging" + ], + "separator": "/", + "msgBranchBanned": "Branches with the name \"%s\" are not allowed.", + "msgBranchDisallowed": "Pushing to \"%s\" is not allowed, use git-flow.", + "msgPrefixNotAllowed": "Branch prefix \"%s\" is not allowed.", + "msgPrefixSuggestion": "Instead of \"%s\" try \"%s\".", + "msgseparatorRequired": "Branch \"%s\" must contain a separator \"%s\"." + } +} \ No newline at end of file diff --git a/browserstack/chrome.json b/browserstack/chrome.json deleted file mode 100644 index 3c3160e9..00000000 --- a/browserstack/chrome.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "project":"KlassiTech Automated Test", - - "os": "Windows", - "os_version": "10", - "browser": "Chrome", - "browserName": "Chrome", - "browser_version": "66.0", - "resolution": "1280x800", - "chromeOptions": { - "args": ["disable-infobars"] - }, - - "javascriptEnabled":true, - "locationContextEnabled":true, - "handlesAlerts":true, - "rotatable":true, - "logLevel":"silent", - - "acceptSslCerts": true, - "browserstackLocal": true, - "browserstack.debug": true, - "browserstack.networkLogs": true -} \ No newline at end of file diff --git a/browserstack/macChrome.json b/browserstack/macChrome.json deleted file mode 100644 index 03e4d3a8..00000000 --- a/browserstack/macChrome.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "project":"KlassiTech Automated Test", - - "os": "OS X", - "os_version": "Sierra", - "browser": "Chrome", - "browserName": "macChrome", - "browser_version": "66.0", - "resolution": "1280x960", - "chromeOptions": { - "args": ["disable-infobars"] - }, - - "javascriptEnabled":true, - "locationContextEnabled":true, - "handlesAlerts":true, - "rotatable":true, - "logLevel":"silent", - - "browserstackLocal": true, - "browserstack.debug": true, - "acceptSslCerts": true, - "browserstack.networkLogs": true -} \ No newline at end of file diff --git a/browserstack/secrets/browserstack.json.template b/browserstack/secrets/browserstack.json.template deleted file mode 100755 index cf8f95fb..00000000 --- a/browserstack/secrets/browserstack.json.template +++ /dev/null @@ -1,5 +0,0 @@ -{ - "BROWSERSTACK_LOCAL_IDENTIFIER": "identifier", - "BROWSERSTACK_USERNAME": "username", - "BROWSERSTACK_ACCESS_KEY": "access key" -} \ No newline at end of file diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 00000000..dc9f6dc8 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,8 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +module.exports = { extends: ['@commitlint/config-conventional'] }; diff --git a/cucumber.js b/cucumber.js new file mode 100644 index 00000000..ecee040c --- /dev/null +++ b/cucumber.js @@ -0,0 +1,37 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const path = require('path'); +const envName = env.envName.toLowerCase(); + +const options = { + default: { + dryRun: dryRun, + // eslint-disable-next-line no-undef + paths: featureFiles, + require: ['runtime/world.js', 'node_modules/klassi-js/runtime/world.js', 'step_definitions/**/*.js'], + tags: global.resultingString, + format: [ + '@cucumber/pretty-formatter', + `json:${path.resolve(__dirname, paths.reports, browserName, envName, `${reportName}-${dateTime}.json`)}`, + ], + formatOptions: { + colorsEnabled: true, + }, + }, + /** + * This is to allow tests tagged as APIs to run headless and NOT take a screenshot on error + * @returns {Promise<*[]>} + */ + filterQuietTags: async () => { + let filePath = path.resolve(global.projectRootPath, './runtime/scripts/tagList.json'); + let filelist = await helpers.readFromJson(filePath); + return [...filelist.tagNames, ...tagNames]; + }, +}; + +module.exports = options; diff --git a/docs/baseFiles.zip b/docs/baseFiles.zip new file mode 100644 index 00000000..4ce29aa4 Binary files /dev/null and b/docs/baseFiles.zip differ diff --git a/docs/upgradeDoc.md b/docs/upgradeDoc.md new file mode 100644 index 00000000..593862cf --- /dev/null +++ b/docs/upgradeDoc.md @@ -0,0 +1,51 @@ +Steps taken to upgrade all projects that's using klassi-js as a dependency: + +- Unzip and Add these files [**klassijs-baseFiles**](baseFiles.zip) to the base of your repository: + - cucumber.js + - .dataConfigrc.js /// update the project details from the .envConfigrc.js + - branchnamelinter.config.json + - commitlint.config.js + - .husky folder + - .versionrc.json file /// change the project name in the url at the bottom of this file +- delete the details from the .envConfigrc.js thats in the .dataConfigrc.js file +

+- Changes to the package.json: + - install these nodes as devDependencies: + ```json + "devDependencies": { + "@commitlint/cli": "^17.2.0", + "@commitlint/config-conventional": "^17.2.0", + "branch-name-lint": "^2.1.1", + "eslint": "^8.34.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-prettier": "^4.2.1", + "husky": "^8.0.0", + "is-ci": "^3.0.1", + "lint-staged": "^13.0.3", + "standard-version": "^https://github.com/klassijs/standard-version" + } + ``` + - Copy and Add this to package.json below devDependencies + + ```json + "lint-staged": { + "*.js": [ + "eslint --quiet --fix" + ] + } + ``` + - Copy and Add these scripts to the scripts section of the package.json + ```json + "prepare": "is-ci || husky install", + "lint-branch-name": "yarn run branch-name-lint ./branchnamelinter.config.json", + "changelog": "standard-version --skip.commit --skip.tag", + "changelog:patch": "standard-version --release-as patch --skip.commit --skip.tag", + "changelog:minor": "standard-version --release-as minor --skip.commit --skip.tag", + "changelog:major": "standard-version --release-as major --skip.commit --skip.tag" + ``` + - Change s3report script name to `cilts3r` + +- Change these to lines in: + - .circleci/config.yml: + - yarn install --network-concurrency 1 + - Docker image: cimg/node:18.12.1-browsers diff --git a/features/duckDuckGo-search.feature b/features/duckDuckGo-search.feature deleted file mode 100755 index d45885b8..00000000 --- a/features/duckDuckGo-search.feature +++ /dev/null @@ -1,18 +0,0 @@ -@search -Feature: Searching for apps with duckduckgo - As an internet user - In order to find out more about certain user apps - I want to be able to search for information about the required apps - - Background: - Given The user arrives on the duckduckgo search page - - Scenario Outline: User inputs some search data - When they input - Then they should see some results - - Examples: - |searchword | - |duckduckgo app | - |angry birds | - |space 1999 | diff --git a/features/getMethod.feature b/features/getMethod.feature deleted file mode 100644 index 72158bcb..00000000 --- a/features/getMethod.feature +++ /dev/null @@ -1,14 +0,0 @@ -@api -Feature: The API feature/functionality - - Background: Getting the time - Given That I make a GET call to an endPoint - - Scenario: Recording API response time - Then That I capture the response time - - Scenario: Getting the status code - Then I expect status code of '200' - - Scenario: Display the API content - Then I return the content of the API diff --git a/globals.d.ts b/globals.d.ts deleted file mode 100644 index 63d5d9fc..00000000 --- a/globals.d.ts +++ /dev/null @@ -1,580 +0,0 @@ -/** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -// TestFramework globals -declare const shared: any; -declare const page: any; -declare const helpers: any; -declare const settings: any; - -// KLASSI NOTE -// adapted from https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/cucumber/index.d.ts -// for our step-definitions only -export type StepDefinitionCode = (this: World, ...stepArgs: any[]) => any; - -export interface StepDefinitionOptions { - timeout?: number; -} - -export interface StepDefinitions { - Given(pattern: RegExp | string, options: StepDefinitionOptions, code: StepDefinitionCode): void; - Given(pattern: RegExp | string, code: StepDefinitionCode): void; - When(pattern: RegExp | string, options: StepDefinitionOptions, code: StepDefinitionCode): void; - When(pattern: RegExp | string, code: StepDefinitionCode): void; - Then(pattern: RegExp | string, options: StepDefinitionOptions, code: StepDefinitionCode): void; - Then(pattern: RegExp | string, code: StepDefinitionCode): void; - setDefaultTimeout(time: number): void; -} - -export type HookCode = (this: World, scenario: HookScenarioResult, callback?: CallbackStepDefinition) => void; -export type GlobalHookCode = (callback?: CallbackStepDefinition) => void; - -export interface Transform { - regexp: RegExp; - transformer(this: World, ...arg: string[]): any; - useForSnippets?: boolean; - preferForRegexpMatch?: boolean; - name?: string; - typeName?: string; // deprecated -} - -export interface HookOptions { - timeout?: number; - tags?: any; -} - -export interface Hooks { - Before(code: HookCode): void; - Before(options: HookOptions | string, code: HookCode): void; - BeforeAll(code: GlobalHookCode): void; - BeforeAll(options: HookOptions | string, code: GlobalHookCode): void; - After(code: HookCode): void; - After(options: HookOptions | string, code: HookCode): void; - AfterAll(code: GlobalHookCode): void; - AfterAll(options: HookOptions | string, code: GlobalHookCode): void; - setDefaultTimeout(time: number): void; - // tslint:disable-next-line ban-types - setWorldConstructor(world: ((this: World, init: {attach: Function, parameters: {[key: string]: any}}) => void) | {}): void; - defineParameterType(transform: Transform): void; -} - -export interface StepDefinition { - // tslint:disable-next-line ban-types - code: Function; - line: number; - options: {}; - pattern: any; - uri: string; -} - -export interface Tag { - name: string; - line: number; -} - -export interface Step { - arguments: any; - line: number; - name: string; - scenario: Scenario; - uri: string; - isBackground: boolean; - keyword: string; - keywordType: string; -} - -export interface Scenario { - feature: Feature; - exception: Error; - keyword: string; - lines: number[]; - name: string; - tags: Tag[]; - uri: string; - line: number; - description: string; - steps: Step[]; -} - -export interface Feature { - description: string; - keyword: string; - line: number; - name: string; - tags: Tag[]; - uri: string; - scenarios: Scenario[]; -} - -// KLASSI NOTE - aside from the browser global being renamed "driver", this is exactly the same as https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/webdriverio/index.d.ts -// Type definitions for WebDriver v5 -// Project: https://www.npmjs.com/package/webdriver -// Definitions by: auto generated by https://github.com/webdriverio/webdriverio -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -/// - -type Omit = Pick>; - -type ArgumentTypes = T extends (...args: infer U) => infer R ? U : never; -type WrapWithPromise = (...args: ArgumentTypes) => Promise; - -declare namespace WebDriver { - type PageLoadingStrategy = 'none' | 'eager' | 'normal'; - type ProxyTypes = 'pac' | 'noproxy' | 'autodetect' | 'system' | 'manual'; - type WebDriverLogTypes = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent'; - type LoggingPreferenceType = - 'OFF' | 'SEVERE' | 'WARNING' | - 'INFO' | 'CONFIG' | 'FINE' | - 'FINER' | 'FINEST' | 'ALL'; - type FirefoxLogLevels = - 'trace' | 'debug' | 'config' | - 'info' | 'warn' | 'error' | 'fatal'; - type Timeouts = 'script' | 'pageLoad' | 'implicit'; - - interface ProxyObject { - proxyType?: ProxyTypes; - proxyAutoconfigUrl?: string; - ftpProxy?: string; - ftpProxyPort?: number; - httpProxy?: string; - httpProxyPort?: number; - sslProxy?: string; - sslProxyPort?: number; - socksProxy?: string; - socksProxyPort?: number; - socksVersion?: string; - socksUsername?: string; - socksPassword?: string; - } - - interface LoggingPreferences { - browser?: LoggingPreferenceType; - driver?: LoggingPreferenceType; - server?: LoggingPreferenceType; - client?: LoggingPreferenceType; - } - - interface Cookie { - name: string; - value: string; - path?: string; - httpOnly?: boolean; - expiry?: number; - secure?: boolean; - } - - interface ChromeOptions { - args?: string[]; - binary?: string; - extensions?: string[]; - localState?: { - [name: string]: any; - }; - detach?: boolean; - debuggerAddress?: string; - excludeSwitches?: string[]; - minidumpPath?: string; - mobileEmulation?: { - [name: string]: any; - }; - perfLoggingPrefs?: { - [name: string]: any; - }; - windowTypes?: string[]; - } - - interface FirefoxLogObject { - level: FirefoxLogLevels - } - - interface FirefoxOptions { - binary?: string, - args?: string[], - profile?: string, - log?: FirefoxLogObject, - prefs: { - [name: string]: string | number | boolean; - } - } - - interface Capabilities { - browserName?: string; - browserVersion?: string; - platformName?: string; - acceptInsecureCerts?: boolean; - pageLoadStrategy?: PageLoadingStrategy; - proxy?: ProxyObject; - setWindowRect?: boolean; - timeouts?: Timeouts; - unhandledPromptBehavior?: string; - } - - interface DesiredCapabilities extends Capabilities { - // Read-only capabilities - cssSelectorsEnabled?: boolean; - handlesAlerts?: boolean; - version?: string; - platform?: string; - - // Read-write capabilities - javascriptEnabled?: boolean; - databaseEnabled?: boolean; - locationContextEnabled?: boolean; - applicationCacheEnabled?: boolean; - browserConnectionEnabled?: boolean; - webStorageEnabled?: boolean; - acceptSslCerts?: boolean; - rotatable?: boolean; - nativeEvents?: boolean; - unexpectedAlertBehaviour?: string; - elementScrollBehavior?: number; - - // Grid-specific - seleniumProtocol?: string; - maxInstances?: number; - environment?: string; - - // Selenium RC (1.0) only - commandLineFlags?: string; - executablePath?: string; - timeoutInSeconds?: number; - onlyProxySeleniumTraffic?: boolean; - avoidProxy?: boolean; - proxyEverything?: boolean; - proxyRequired?: boolean; - browserSideLog?: boolean; - optionsSet?: boolean; - singleWindow?: boolean; - dontInjectRegex?: RegExp; - userJSInjection?: boolean; - userExtensions?: string; - - // RemoteWebDriver specific - 'webdriver.remote.sessionid'?: string; - 'webdriver.remote.quietExceptions'?: boolean; - - // Selenese-Backed-WebDriver specific - 'selenium.server.url'?: string; - - loggingPrefs?: { - browser?: LoggingPreferences; - driver?: LoggingPreferences; - server?: LoggingPreferences; - client?: LoggingPreferences; - }; - - // Firefox - firefox_binary?: string; - firefoxProfileTemplate?: string; - captureNetworkTraffic?: boolean; - addCustomRequestHeaders?: boolean; - trustAllSSLCertificates?: boolean; - changeMaxConnections?: boolean; - profile?: string; - pageLoadingStrategy?: string; - 'moz:firefoxOptions'?: FirefoxOptions; - - // IE specific - 'ie.forceCreateProcessApi'?: boolean; - 'ie.browserCommandLineSwitches'?: string; - 'ie.usePerProcessProxy'?: boolean; - 'ie.ensureCleanSession'?: boolean; - 'ie.setProxyByServer'?: boolean; - ignoreProtectedModeSettings?: boolean; - ignoreZoomSetting?: boolean; - initialBrowserUrl?: string; - enablePersistentHover?: boolean; - enableElementCacheCleanup?: boolean; - requireWindowFocus?: boolean; - browserAttachTimeout?: number; - logFile?: string; - logLevel?: string; - host?: string; - extractPath?: string; - silent?: string; - killProcessesByName?: boolean; - - // Safari specific - 'safari.options'?: { - [name: string]: any; - }; - - cleanSession?: boolean; - - // Chrome specific - chromeOptions?: ChromeOptions; - 'goog:chromeOptions'?: ChromeOptions; - mobileEmulationEnabled?: boolean; - - perfLoggingPrefs?: { - enableNetwork?: boolean; - enablePage?: boolean; - enableTimeline?: boolean; - tracingCategories?: boolean; - bufferUsageReportingInterval?: boolean; - }; - - // wdio-sauce-service specific - build?: string; - - // Appium - deviceName?: string; - platformVersion?: string; - app?: string; - udid?: string; - } - - interface Options { - protocol?: string; - hostname?: string; - port?: number; - path?: string; - queryParams?: { - [name: string]: string; - }, - capabilities?: DesiredCapabilities; - logLevel?: WebDriverLogTypes; - logOutput?: string | NodeJS.WritableStream - connectionRetryTimeout?: number; - connectionRetryCount?: number; - user?: string; - key?: string; - } - - function newSession( - options?: Options, - modifier?: (...args: any[]) => any, - proto?: object, - commandWrapper?: (commandName: string, fn: (...args: any[]) => any) => any - ): Promise; - - interface ClientOptions { - capabilities: DesiredCapabilities; - isW3C: boolean; - isAndroid: boolean; - isMobile: boolean; - isIOS: boolean; - sessionId: string; - } - - // generated typings - // ... insert here ... - - interface ClientAsync extends AsyncClient {} -} - -type AsyncClient = { - [K in keyof WebDriver.Client]: WrapWithPromise> -} - -declare module "webdriver" { - export = WebDriver; -} - - -/// -/// - -declare namespace WebdriverIO { - type LocationParam = 'x' | 'y'; - - interface LocationReturn { - x: number, - y: number - } - - type SizeParam = 'width' | 'height'; - - interface SizeReturn { - width: number, - height: number - } - - interface Cookie { - name: string, - value: string, - domain?: string, - path?: string, - expiry?: number, - isSecure?: boolean, - isHttpOnly?: boolean - } - - interface CSSProperty { - property: string, - value: any, - parsed?: { - // other - unit?: string, - // font-family - value?: any, - string: string, - // color - hex?: string, - alpha?: number, - type?: string, - rgba?: string - } - } - - interface Options { - runner?: string, - specs?: string[], - exclude?: string[], - suites?: object, - maxInstances?: number, - maxInstancesPerCapability?: number, - capabilities?: WebDriver.DesiredCapabilities | WebDriver.DesiredCapabilities[], - outputDir?: string, - baseUrl?: string, - bail?: number, - waitforTimeout?: number, - waitforInterval?: number, - framework?: string, - mochaOpts?: object, - jasmineNodeOpts?: object, - reporters?: (string | object)[], - services?: (string | object)[], - execArgv?: string[] - } - - interface MultiRemoteOptions { - [capabilityName: string]: Options; - } - - interface Suite {} - interface Test {} - - interface Results { - finished: number, - passed: number, - failed: number - } - - interface Hooks { - onPrepare?( - config: Config, - capabilities: WebDriver.DesiredCapabilities - ): void; - - onComplete?(exitCode: number, config: Config, capabilities: WebDriver.DesiredCapabilities, results: Results): void; - - onReload?(oldSessionId: string, newSessionId: string): void; - - before?( - capabilities: WebDriver.DesiredCapabilities, - specs: string[] - ): void; - - beforeCommand?( - commandName: string, - args: any[] - ): void; - - beforeHook?(): void; - - beforeSession?( - config: Config, - capabilities: WebDriver.DesiredCapabilities, - specs: string[] - ): void; - - beforeSuite?(suite: Suite): void; - beforeTest?(test: Test): void; - afterHook?(): void; - - after?( - result: number, - capabilities: WebDriver.DesiredCapabilities, - specs: string[] - ): void; - - afterCommand?( - commandName: string, - args: any[], - result: any, - error?: Error - ): void; - - afterSession?( - config: Config, - capabilities: WebDriver.DesiredCapabilities, - specs: string[] - ): void; - - afterSuite?(suite: Suite): void; - afterTest?(test: Test): void; - - // cucumber specific hooks - beforeFeature?(feature: string): void; - beforeScenario?(scenario: string): void; - beforeStep?(step: string): void; - afterFeature?(feature: string): void; - afterScenario?(scenario: any): void; - afterStep?(stepResult: any): void; - } - - type ActionTypes = 'press' | 'longPress' | 'tap' | 'moveTo' | 'wait' | 'release'; - interface TouchAction { - action: ActionTypes, - x?: number, - y?: number, - element?: Element - } - type TouchActions = string | TouchAction | TouchAction[]; - - interface Element { - addCommand( - name: string, - func: Function - ): void; - // ... element commands ... - } - - type Execute = (script: string | ((...arguments: any[]) => T), ...arguments: any[]) => T; - type ExecuteAsync = (script: string | ((...arguments: any[]) => any), ...arguments: any[]) => any; - type Call = (callback: Function) => T; - interface Timeouts { - implicit?: number, - pageLoad?: number, - script?: number - } - - interface Browser { - addCommand( - name: string, - func: Function, - attachToElement?: boolean - ): void; - execute: Execute; - executeAsync: ExecuteAsync; - call: Call; - options: Options; - waitUntil( - condition: () => boolean, - timeout?: number, - timeoutMsg?: string, - interval?: number - ): void - // ... browser commands ... - } - - interface Config extends Options, Omit, Hooks {} -} \ No newline at end of file diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 00000000..0d51b4d7 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,41 @@ +// @ts-ignore +import { default as _Cli } from './cli'; +// @ts-ignore +import * as cliHelpers from './cli/helpers'; +// @ts-ignore +import * as formatterHelpers from './formatter/helpers'; +// @ts-ignore +import { default as _PickleFilter } from './pickle_filter'; +// @ts-ignore +import * as parallelCanAssignHelpers from './support_code_library_builder/parallel_can_assign_helpers'; +// @ts-ignore +import { default as _Runtime } from './runtime'; +import * as messages from '@cucumber/messages'; +// @ts-ignore +export declare const After: (>(code: import("./support_code_library_builder/types").TestCaseHookFunction) => void) & (>(tags: string, code: import("./support_code_library_builder/types").TestCaseHookFunction) => void) & (>(options: import("./support_code_library_builder/types").IDefineTestCaseHookOptions, code: import("./support_code_library_builder/types").TestCaseHookFunction) => void); +// @ts-ignore +export declare const AfterAll: ((code: Function) => void) & ((options: import("./support_code_library_builder/types").IDefineTestRunHookOptions, code: Function) => void); +// @ts-ignore +export declare const AfterStep: (>(code: import("./support_code_library_builder/types").TestStepHookFunction) => void) & (>(tags: string, code: import("./support_code_library_builder/types").TestStepHookFunction) => void) & (>(options: import("./support_code_library_builder/types").IDefineTestStepHookOptions, code: import("./support_code_library_builder/types").TestStepHookFunction) => void); +// @ts-ignore +export declare const Before: (>(code: import("./support_code_library_builder/types").TestCaseHookFunction) => void) & (>(tags: string, code: import("./support_code_library_builder/types").TestCaseHookFunction) => void) & (>(options: import("./support_code_library_builder/types").IDefineTestCaseHookOptions, code: import("./support_code_library_builder/types").TestCaseHookFunction) => void); +// @ts-ignore +export declare const BeforeAll: ((code: Function) => void) & ((options: import("./support_code_library_builder/types").IDefineTestRunHookOptions, code: Function) => void); +// @ts-ignore +export declare const BeforeStep: (>(code: import("./support_code_library_builder/types").TestStepHookFunction) => void) & (>(tags: string, code: import("./support_code_library_builder/types").TestStepHookFunction) => void) & (>(options: import("./support_code_library_builder/types").IDefineTestStepHookOptions, code: import("./support_code_library_builder/types").TestStepHookFunction) => void); +// @ts-ignore +export declare const Given: import("./support_code_library_builder/types").IDefineStep; +// @ts-ignore +export declare const Then: import("./support_code_library_builder/types").IDefineStep; +// @ts-ignore +export declare const When: import("./support_code_library_builder/types").IDefineStep; +// @ts-ignore +export { default as World, IWorld, IWorldOptions, } from './support_code_library_builder/world'; +export { parallelCanAssignHelpers }; +// @ts-ignore +export { ITestCaseHookParameter, ITestStepHookParameter, } from './support_code_library_builder/types'; +export declare const Status: typeof messages.TestStepResultStatus; +// @ts-ignore +export { wrapPromiseWithTimeout } from './time'; +// @ts-ignore +export { INewRuntimeOptions, IRuntimeOptions } from './runtime'; diff --git a/index.js b/index.js index 0c1131c2..9b675d6d 100755 --- a/index.js +++ b/index.js @@ -1,29 +1,88 @@ /** - KlassiTech Automated Testing Tool - Created by Larry Goddard + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ +require('dotenv').config(); +const path = require('path'); +const program = require('commander'); +const fs = require('fs-extra'); +const merge = require('merge'); +const requireDir = require('require-dir'); +const { assert } = require('chai'); +const loadTextFile = require('text-files-loader'); +const { cosmiconfigSync } = require('cosmiconfig'); +const { runCucumber, loadConfiguration } = require('@cucumber/cucumber/api'); +const { + After, + AfterAll, + AfterStep, + Status, + Before, + BeforeAll, + BeforeStep, + Given, + When, + Then, +} = require('@cucumber/cucumber'); + +const pjson = require('./package.json'); + +async function klassiCli() { + const { runConfiguration } = await loadConfiguration(); + const { success } = await runCucumber(runConfiguration); + return success; +} + /** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + * all assertions for variable testing */ -'use strict'; +global.assert = assert; +global.fs = fs; -const path = require('path'), - program = require('commander'), - fs = require('fs-extra'), - pjson = require('./package.json'), - cucumber = require('cucumber'); +/** + * Global timeout to be used in test code + * @type {number} + */ +global.DELAY_100ms = 100; // 100 millisecond delay +global.DELAY_200ms = 200; // 200 millisecond delay +global.DELAY_300ms = 300; // 300 millisecond delay +global.DELAY_500ms = 500; // 500 millisecond delay +global.DELAY_7500ms = 7500; // 7500 milliseconds delay +global.DELAY_1s = 1000; // 1 second delay +global.DELAY_2s = 2000; // 2 second delay +global.DELAY_3s = 3000; // 3 second delay +global.DELAY_5s = 5000; // 5 second delay +global.DELAY_7s = 7000; // 7 second delay +global.DELAY_8s = 8000; // 8 seconds delay +global.DELAY_10s = 10000; // 10 second delay +global.DELAY_15s = 15000; // 15 second delay +global.DELAY_20s = 20000; // 20 second delay +global.DELAY_30s = 30000; // 30 second delay +global.DELAY_40s = 40000; // 40 second delay +global.DELAY_1m = 60000; // 1 minute delay +global.DELAY_2m = 120000; // 2 minutes delay +global.DELAY_3m = 180000; // 3 minutes delay +global.DELAY_5m = 300000; // 5 minutes delay + +/** + * All Cucumber Global variables + * @constructor + */ +global.Given = Given; +global.When = When; +global.Then = Then; +global.After = After; +global.AfterAll = AfterAll; +global.AfterStep = AfterStep; +global.Before = Before; +global.BeforeAll = BeforeAll; +global.BeforeStep = BeforeStep; +global.Status = Status; + +global.projectRootPath = __dirname; function collectPaths(value, paths) { paths.push(value); @@ -34,260 +93,372 @@ function parseRemoteArguments(argumentString) { if (!argumentString) { throw new Error('Expected an argumentString'); } - let argSplit = argumentString.split('/'); - let CONFIG = 0; - let TAGS = 1; - let parsed = { + const argSplit = argumentString.split('/'); + const CONFIG = 0; + const TAGS = 1; + return { config: argSplit[CONFIG], - tags: argSplit[TAGS] + tags: argSplit[TAGS], }; - return parsed; } -/** - * Setting and Naming the Project Report files Globally - * @type {string} - */ -let envConfig = require('./runtime/envConfig'); -global.reportName = process.env.REPORT_NAME || envConfig.reportName; -global.projectName = process.env.PROJECT_NAME || envConfig.projectName; - -/** - * Create all the required files and folders needed for the framework to function correctly - * @type {string} - */ -let reports = './reports/', - fileDnldFldr = './shared-objects/fileDnldFolder/', - docsFolder = './shared-objects/docs', - fileName = path.join('./shared-objects/docs/fileName.txt'); - -fs.ensureDirSync(reports, function(err) { - if (err) { - console.log('The Reports Folder has NOT been created: ' + err.stack); - } -}); -fs.ensureDirSync(fileDnldFldr, function(err) { - if (err) { - console.log('The File Download Folder has NOT been created: ' + err.stack); - } -}); -fs.ensureDir(docsFolder, function(err) { - if (err) { - console.log('The Docs Folder has NOT been created: ' + err.stack); - } -}); -fs.ensureFile(fileName, function(err) { - if (err) { - console.log('The fileName File has NOT been created: ' + err.stack); - } -}); - program .version(pjson.version) .description(pjson.description) + .option('--browser ', 'name of browser to use (chrome, firefox). defaults to chrome', 'chrome') + .option('--context ', 'contextual root path for project-specific features, steps, objects etc', './') + .option('--disableReport', 'Disables the auto opening of the test report in the browser. defaults to true') + .option('--email', 'email for sending reports to stakeholders', false) + .option('--featureFiles ', 'comma-separated list of feature files to run defaults to ./features', 'features') + .option('--reportName ', 'basename for report files e.g. use report for report.json'.reportName) + .option('--env ', 'name of environment to run the framework / test in. default to test', 'test') .option( - '-b, --browser [optional]', - 'name of browser to use. defaults to chrome', - /(chrome|edge|firefox|iexplorer|macChrome|macFirefox|safari|tabletGalaxy|tabletiPad|tabletiPadPro)$/i, - 'chrome' - ) - .option( - '-c, --context ', - 'contextual root path for project-specific features, steps, objects etc', - './' - ) - .option('-d, --disableReport [optional]', 'Disables the auto opening the browser with test report') - .option('-e, --email [optional]', 'email for sending reports to stakeholders') - .option( - '-f, --featuresPath ', - 'path to feature definitions. defaults to ./features', - 'features' - ) - .option( - '-g, --reportName [optional]', - 'basename for report files e.g. use report for report.json', - global.reportName - ) - .option( - '-n, --environment []', - 'name of environment to run the framework / test in. default to test', - /^(test|dev|uat|prod)$/i, - 'dev' - ) - .option( - '-o, --sharedObjects ', + '--sharedObjects ', 'path to shared objects (repeatable). defaults to ./shared-objects', - collectPaths, - ['shared-objects'] - ) - .option( - '-p, --pageObjects ', - 'path to page objects. defaults to ./page-objects', - 'page-objects' - ) - .option( - '-r, --reports ', - 'output path to save reports. defaults to ./reports', - 'reports' + 'shared-objects' ) + .option('--pageObjects ', 'path to page objects. defaults to ./page-objects', 'page-objects') + .option('--reports ', 'output path to save reports. defaults to ./reports', 'reports') + .option('--headless', 'whether to run browser in headless mode. defaults to false', false) + .option('--coverage ', 'output path to save nyc reports. defaults to ./coverage', 'coverage') + .option('--steps ', 'path to step definitions. defaults to ./step_definitions', 'step_definitions') .option( - '-s, --steps ', - 'path to step definitions. defaults to ./step_definitions', - 'step_definitions' + '--tags ', + 'only execute the features or scenarios with tags matching the expression (repeatable)', + collectPaths, + [] ) - .option('-t, --tags ', 'name of tag to run') .option( - '-u, --updateBaselineImage [optional]', - 'automatically update the baseline image after a failed comparison' + '--exclude ', + 'excludes the features or scenarios with tags matching the expression (repeatable)', + collectPaths, + [] ) + .option('--updateBaselineImage', 'automatically update the baseline image after a failed comparison') + .option('--remoteService ', 'which remote browser service, if any, should be used e.g. lambdatest', '') + .option('--browserOpen', 'keep the browser open after each scenario. defaults to false', false) + .option('--extraSettings ', 'further piped configs split with pipes', '') + .option('--wdProtocol', 'the switch to change the browser option from devtools to webdriver', false) + .option('--dlink', 'the switch for projects with their test suite, within a Test folder of the repo', false) + // .option('--utam', 'used to launch the compilation process of UTAM test files into scripts.', false) .option( - '-w, --remoteService [optional]', - 'which remote driver service, if any, should be used e.g. browserstack', - '' + '--dryRun', + 'the effect is that Cucumber will still do all the aggregation work of looking at your feature files, loading your support code etc but without actually executing the tests', + false ) .option( - '-x, --extraSettings [optional]', - 'further piped configs split with pipes', - '' + '--s3Date', + 'this switches the s3 date to allow the downloading and emailing of reports from the latest test run and not last nights run', + false ) + .option('--useProxy', 'This is in-case you need to use the proxy server while testing', false) + .option('--skipTag ', 'provide a tag and all tests marked with it will be skipped automatically') + .option('--emailMethod ', 'use for email provision SMTP or AWS', 'smtp') + .option('--isCI', 'This is to stop the html from being created while running in the CI', false) .parse(process.argv); -program.on('--help', function() { - console.log( - 'For more details please visit https://github.com/larryg01/klassi-js#readme\n' - ); +program.on('--help', () => { + console.info('For more details please visit https://github.com/klassijs/klassi-js#readme\n'); }); -let settings = { - projectRoot: program.context, - reportName: program.reportName, - browserName: program.browser, - disableReport: program.disableReport, - updateBaselineImage: program.updateBaselineImage, - defaultTimeout: '300000 * 1000', // 5 mins - remoteService: program.remoteService +const options = program.opts(); + +const settings = { + projectRoot: options.context, + reportName: options.reportName, + disableReport: options.disableReport, + updateBaselineImage: options.updateBaselineImage, + remoteService: options.remoteService, + extraSettings: options.extraSettings, }; -if (program.remoteService && program.extraSettings) { - let additionalSettings = parseRemoteArguments(program.extraSettings); +global.settings = settings; +global.BROWSER_NAME = options.browser; +global.headless = options.headless; +global.browserOpen = options.browserOpen; +global.dryRun = options.dryRun; +global.email = options.email; +global.s3Date = options.s3Date; +global.utam = options.utam; +global.useProxy = options.useProxy; +global.skipTag = options.skipTag; +global.emailMethod = options.emailMethod; +global.isCI = options.isCI; +/** + * Setting envConfig and dataConfig to be global, used within the world.js when building browser + * @type {string} + */ +const getConfig = (configName) => cosmiconfigSync(configName).search().config; +const { environment } = getConfig('envConfig'); +const { dataConfig } = getConfig('dataConfig'); +// console.log('This is the result of search ====>', environment, dataConfig); + +global.dataconfig = dataConfig; +global.s3Data = dataConfig.s3Data; +global.emailData = dataConfig.emailData; +global.projectName = process.env.PROJECT_NAME || dataConfig.projectName; +global.reportName = process.env.REPORT_NAME || 'Automated Report'; +global.env = process.env.ENVIRONMENT || environment[options.env]; +global.tagNames = dataConfig.tagNames; + +/** adding global helpers */ +const helpers = require('./runtime/helpers'); +global.helpers = helpers; + +global.date = helpers.currentDate(); +global.dateTime = helpers.reportDateTime(); + +if (options.remoteService && options.extraSettings) { + const additionalSettings = parseRemoteArguments(options.extraSettings); settings.remoteConfig = additionalSettings.config; - /* this approach supports a single string defining both the target config and tags - e.g. 'win10-chrome/@tag1,@tag2' - */ if (additionalSettings.tags) { - if (program.tags) { - throw new Error('Cannot sent two types of tags - either use -x or -t'); + if (options.tags.length !== 0) { + throw new Error('Cannot sent two types of tags - either use --extraSettings or --tags'); } - // TODO: test this on multiple tags - program.tags = additionalSettings.tags; + options.tags = [additionalSettings.tags]; } } function getProjectPath(objectName) { - return path.resolve(settings.projectRoot + program[objectName]); + return path.resolve(settings.projectRoot + options[objectName]); } -let paths = { +const paths = { pageObjects: getProjectPath('pageObjects'), reports: getProjectPath('reports'), - featuresPath: getProjectPath('featuresPath'), - sharedObjects: program.sharedObjects.map(function(item) { - return path.resolve(settings.projectRoot + item); - }) + coverage: getProjectPath('coverage'), + featureFiles: getProjectPath('featureFiles'), + sharedObjects: getProjectPath('sharedObjects'), }; -global.browserName = program.browser; - -// expose settings and paths for global use -global.settings = settings; +/** expose settings and paths for global use */ global.paths = paths; /** - * add helpers + * Adding Global browser + * Adding Accessibility folder at project level */ -global.helpers = require('./runtime/helpers.js'); +global.browserName = settings.remoteConfig || BROWSER_NAME; -/** - * adding global date function - */ -global.date = helpers.currentDate(); +const envName = env.envName.toLowerCase(); +const reports = `./reports/${browserName}/${envName}`; -/** - * store EnvName globally (used within world.js when building driver) - */ -global.envName = program.environment; +/** file creation for userAgent globally */ +const file = './shared-objects/docs/userAgent.txt'; -/** rewrite command line switches for cucumber - */ -process.argv.splice(2, 100); +fs.ensureFileSync(file, (err) => { + if (err) { + console.error(`The fileName has NOT been created: ${err.stack}`); + } +}); +fs.ensureDirSync(reports, (err) => { + if (err) { + console.error(`The Reports Folder has NOT been created: ${err.stack}`); + } +}); +fs.ensureDirSync(reports + 'Combine', (err) => { + if (err) { + console.error(`The Reports Combine Folder has NOT been created: ${err.stack}`); + } +}); -/** specify the feature files folder (this must be the first argument for Cucumber) - */ -process.argv.push(paths.featuresPath); +/** adding global accessibility library */ +const accessibility_lib = path.resolve(__dirname, './runtime/accessibility/accessibilityLib.js'); +if (fs.existsSync(accessibility_lib)) { + const rList = []; + global.accessibilityLib = require(accessibility_lib); + global.accessibilityReportList = rList; +} else console.error('No Accessibility Lib'); -/** add switch to tell cucumber to produce json report files - */ -process.argv.push( - '-f', - 'node_modules/cucumber-pretty', - '-f', - 'json:' + - path.resolve( - __dirname, - paths.reports, - settings.reportName + '-' + date + '.json' - ) -); - -/** add cucumber world as first required script (this sets up the globals) +/** + * adding video link access + * @type {string} */ -process.argv.push('-r', path.resolve(__dirname, './runtime/world.js')); +const videoLib = path.resolve(__dirname, './runtime/getVideoLinks.js'); +if (fs.existsSync(videoLib)) { + global.videoLib = require(videoLib); +} else { + console.error('No Video Lib'); +} -/** add path to import step definitions +/** + * add path to import shared objects + * @type {string} */ -process.argv.push('-r', path.resolve(program.steps)); +const sharedObjectsPath = path.resolve(paths.sharedObjects); +if (fs.existsSync(sharedObjectsPath)) { + const allDirs = {}; + const dir = requireDir(sharedObjectsPath, { camelcase: true, recurse: true }); + sharedObjects = merge(allDirs, dir); + global.sharedObjects = sharedObjects; +} -/** add tag to the scenarios +/** + * add path to import page objects + * @type {string} */ -if (program.tags) { - process.argv.push('-t', program.tags); +const pageObjectPath = path.resolve(paths.pageObjects); +if (fs.existsSync(pageObjectPath)) { + global.pageObjects = requireDir(pageObjectPath, { + camelcase: true, + recurse: true, + }); } -/** - * add strict option (fail if there are any undefined or pending steps) +/** Get tags from feature files + * @returns {Array} list of all tags found */ -process.argv.push('-S'); +function getTagsFromFeatureFiles() { + let result = []; + let featurefiles = {}; + loadTextFile.setup({ matchRegExp: /\.feature/ }); + const featureFilesList = options.featureFiles.split(','); + featureFilesList.forEach((feature) => { + featurefiles = Object.assign(featurefiles, loadTextFile.loadSync(path.resolve(feature))); + }); + + Object.keys(featurefiles).forEach((key) => { + const content = String(featurefiles[key] || '', ' '); + result = result.concat(content.match(new RegExp('@[a-z0-9]+', 'g'))); + }); + return result; +} + +global.getTagsFromFeatureFiles = getTagsFromFeatureFiles(); /** - * execute cucumber Cli + * verify the correct tags for scenarios to run + * ignores non existing tags */ -global.cucumber = cucumber; +if (options.tags.length > 0) { + const tagsFound = global.getTagsFromFeatureFiles; + const separateMultipleTags = options.tags[0].split(','); + let separateExcludedTags; -let klassiCli = new (require('cucumber').Cli )({ - argv: process.argv, - cwd: process.cwd(), - stdout: process.stdout -}); + if (options.exclude.length >= 1) { + separateExcludedTags = options.exclude[0].split(','); + } + + const correctTags = []; + const correctExcludedTags = []; -new Promise(async function(resolve, reject) { - try { - klassiCli.run(function(success) { - resolve = success ? 0 : 1; - function exitNow() { - process.exit(resolve); + for (const tag of separateMultipleTags) { + if (tag[0] !== '@') { + console.error('tags must start with a @'); + continue; + } + if (tagsFound.indexOf(tag) === -1) { + console.error(`this tag ${tag} does not exist`); + continue; + } + correctTags.push(tag); + } + if (correctTags.length === 0) { + process.exit(); + } + if (separateExcludedTags && separateExcludedTags.length >= 1) { + for (const tag of separateExcludedTags) { + if (tag[0] !== '@') { + console.error('tags must start with a @'); + continue; } - if (process.stdout.write('')) { - exitNow(); - } else { - /** - * write() returned false, kernel buffer is not empty yet... - */ - process.stdout.on('drain', exitNow); + if (tagsFound.indexOf(tag) === -1) { + console.error(`this tag ${tag} does not exist`); + continue; } + correctExcludedTags.push(tag); + } + } + + let resultingString; + + if (correctTags.length > 1) { + const multipleTagsCommand = correctTags.reduce((acc, currentTag) => { + resultingString = `${acc} or ${currentTag}`; }); - } catch (err) { - console.log('cucumber integration has failed ' + err.message); - await reject(err); - throw err; + + if (correctExcludedTags.length >= 1) { + const excludedCommand = correctExcludedTags.reduce((acc, currentTag) => { + resultingString = `${acc} and not ${currentTag}`; + }); + + resultingString = `${multipleTagsCommand} and not ${excludedCommand}`; + } + + global.resultingString = resultingString; + } else { + switch (correctExcludedTags.length) { + case 0: { + resultingString = correctTags[0]; + break; + } + + case 1: { + resultingString = `${correctTags[0]} and not ${correctExcludedTags[0]}`; + break; + } + + default: { + const excludedCommand = correctExcludedTags.reduce((acc, currentTag) => { + resultingString = `${acc} and not ${currentTag}`; + }); + resultingString = `${correctTags[0]} and not ${excludedCommand}`; + break; + } + } + global.resultingString = resultingString; + } +} + +/** specify the feature files folder (this must be the first argument for Cucumber) + specify the feature files to be executed */ +if (options.featureFiles) { + const splitFeatureFiles = options.featureFiles.split(','); + global.featureFiles = splitFeatureFiles; +} + +// TODO: look into using multi args at commandline for browser i.e --browser chrome,firefox +/** Add split to run multiple browsers from the command line */ +if (options.browser) { + const splitBrowsers = options.browser.split(','); + splitBrowsers.forEach((browser) => { + process.argv.push('--browser', browser); + }); +} + +/** execute cucumber Cli */ +klassiCli().then(async (succeeded) => { + if (dryRun === false) { + if (!succeeded) { + await module.exports.cucumberCli().then(async () => { + await process.exit(1); + }); + } else { + await module.exports.cucumberCli(); + } } }); + +async function cucumberCli() { + if (options.remoteService && options.remoteService === 'lambdatest' && resultingString !== '@s3load') { + await browser.pause(DELAY_2s).then(async () => { + await helpers.klassiReporter(); + }); + } else if (resultingString !== '@s3load') { + await browser.pause(DELAY_2s).then(async () => { + await helpers.klassiReporter(); + }); + } + await browser.pause(DELAY_5s); + /** + * send email with the report to stakeholders after test run + */ + if (email === true) { + await browser.pause(DELAY_2s).then(async () => { + await helpers.klassiEmail(); + await browser.pause(DELAY_3s); + }); + } +} + +module.exports = { cucumberCli }; diff --git a/package.json b/package.json index 3dcb2a90..d118b8c8 100755 --- a/package.json +++ b/package.json @@ -1,74 +1,126 @@ { "name": "klassi-js", - "version": "2.5.0", - "description": "A platform independent debuggable BDD Javascript testing framework. It's simple, easy to use and not dependant to any other tool or library, using Nodejs, webdriverio and cucumber-js", - "Author": { + "version": "5.2.0", + "description": "A debuggable Javascript testing framework using webdriverio", + "creator": { "name": "Larry Goddard", "email": "larryg@klassitech.co.uk", - "twitter": "twitter.com/lcgoddard", - "url": "linkedin.com/in/larryg" + "twitter": "https://twitter.com/larryG_01", + "linkedin": "https://linkedin.com/in/larryg", + "youtube": "https://youtube.com/@LarryG_01" + }, + "license": "MIT", + "engines": { + "node": ">=16", + "yarn": ">=1.22.0" }, - "license": "Apache-2.0", "keywords": [ - "api", "api testing", "bdd", - "browserstack", - "cucumber", + "lambdatest", "cucumber-js", "javascript", - "framework", - "functional testing", - "tdd", - "testing", - "testing-framework", - "webdriver", + "klassi-js", + "klassijs", + "testing framework", + "test automation", "webdriverio" ], "repository": { "type": "git", - "url": "https://github.com/larryg01/klassi-js" - }, - "engines": { - "node": ">= 10.15.3", - "yarn": ">= 1.3.2" + "url": "https://github.com/klassijs/klassi-js.git" }, - "main": "index.js", + "browser": "index.js", "scripts": { - "test": "node index.js -dt @search", - "all": "node index.js -ed", - "dev": "node index.js -dt @api", - "uat": "yarn node index.js -dt @search", - "local": "node index.js -edt", - "bslocal": "node runtime/remotes/browserstackLocal && node index.js -edw browserstack -x" + "predev": "yarn delete-dev", + "appium-start": "yarn run appium --log-level info", + "android": "node index.js --disableReport --tags @android --env android --browser android", + "android-ltlocal": "node index.js --disableReport --tags @android --remoteService lambdatest --env android --extraSettings android", + "ios": "node index.js --disableReport --tags @ios --env ios --browser ios", + "ios-ltlocal": "node index.js --disableReport --tags @ios --remoteService lambdatest --env ios --extraSettings ios", + "dev": "node index.js --disableReport --tags", + "delete-dev": "rm -rf ./reports ./artifacts ./log ./visual-regression-baseline", + "ltlocal": "node --trace-warnings index.js --disableReport --remoteService lambdatest --extraSettings", + "============================================": "=======================================================", + "================ NOTE": "PLEASE DO NOT MAKE ANY CHANGES TO THE SCRIPTS BELOW THIS LINE ================", + "===========================================": "========================================================", + "pretest": "eslint --ignore-path .gitignore .", + "pkgcheck": "yarn install --check-files", + "prepare": "is-ci || husky install", + "lint-branch-name": "yarn run branch-name-lint ./branchnamelinter.config.json", + "changelog": "standard-version --skip.commit --skip.tag", + "changelog:patch": "standard-version --release-as patch --skip.commit --skip.tag", + "changelog:minor": "standard-version --release-as minor --skip.commit --skip.tag", + "changelog:major": "standard-version --release-as major --skip.commit --skip.tag", + "ciltdev": "node index.js --disableReport --isCI --tags @integration --remoteService lambdatest --extraSettings", + "ciltuat": "node index.js --disableReport --isCI --tags @regression --remoteService lambdatest --extraSettings", + "cilts3r": "node index.js --disableReport --tags @s3 --remoteService lambdatest --extraSettings", + "cilts3load": "node index.js --disableReport --tags @s3load --remoteService lambdatest --extraSettings" + }, + "homepage": "https://github.com/klassijs/klassi-js#readme", + "bugs": { + "url": "https://github.com/klassijs/klassi-js/issues" + }, + "nyc": { + "statements": 80, + "branches": 80, + "functions": 80, + "lines": 80, + "include": [ + "**/page-objects/**" + ], + "exclude": [ + "**/features/s3Report.feature" + ], + "reporter": [ + "html", + "text", + "text-summary" + ] }, - "homepage": "https://github.com/larryg01/klassi-js#readme", "dependencies": { - "browserstack-local": "^1.3.7", - "chai": "^4.2.0", - "cucumber": "^5.1.0", - "cucumber-html-reporter": "^4.0.5", - "cucumber-pretty": "^1.5.0", - "fs-extra": "^7.0.1", - "merge": "^1.2.1", - "node-dir": "^0.1.17", - "node-resemble-js": "^0.2.0", - "nodemailer": "^5.1.1", - "request": "^2.88.0", - "request-promise": "^4.2.4", + "@aws-sdk/client-s3": "^3.271.0", + "@aws-sdk/client-ses": "^3.226.0", + "@aws-sdk/credential-provider-node": "^3.245.0", + "@commitlint/cli": "^17.2.0", + "@commitlint/config-conventional": "^17.2.0", + "@cucumber/cucumber": "^9.1.2", + "@cucumber/pretty-formatter": "^1.0.0", + "async": "^3.2.4", + "axe-core": "^4.5.2", + "branch-name-lint": "^2.1.1", + "chai": "^4.3.7", + "commander": "^10.0.0", + "cosmiconfig": "^8.0.0", + "cucumber-junit": "^1.7.1", + "dotenv": "^16.0.3", + "eslint": "^8.33.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-ui-testing": "^2.0.1", + "fs-extra": "^11.1.0", + "husky": "^8.0.0", + "is-ci": "^3.0.1", + "klassijs-cucumber-html-reporter": "^6.0.0", + "lint-staged": "^13.0.3", + "merge": "^2.1.1", + "node-resemble-js": "https://github.com/klassijs/node-resemble.js", + "nodemailer": "^6.8.0", + "pactum": "^3.3.1", + "prettier": "^2.8.1", + "recursive-readdir": "^2.2.3", "require-dir": "^1.2.0", - "winston": "^3.2.1" + "standard-version": "https://github.com/klassijs/standard-version", + "tesseract.js": "^4.0.5", + "text-files-loader": "^1.0.5", + "webdriverio": "^8.10.2" }, - "devDependencies": { - "chromedriver": "^2.46.0", - "eslint": "^5.15.1", - "eslint-config-prettier": "^4.1.0", - "eslint-plugin-prettier": "^3.0.1", - "geckodriver": "^1.16.0", - "prettier": "^1.16.4", - "webdriverio": "^5.6.6" + "lint-staged": { + "**/*.js": [ + "eslint --quiet --fix" + ] }, - "prettier": { - "singleQuote": true - } + "eslintIgnore": [ + "dist" + ] } diff --git a/page-objects/duckDuckGoSearch.js b/page-objects/duckDuckGoSearch.js deleted file mode 100755 index 3cfd78fd..00000000 --- a/page-objects/duckDuckGoSearch.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -const searchData = require('../shared-objects/searchData'), - verify = require('../runtime/imageCompare'), - shared = { searchData }; - -let expect = global.expect; -let log = global.log; -let image; - -module.exports = { - /** - * enters a search term into ebay's search box and presses enter - * @param {string} searchWord - * @returns {Promise} a promise to enter the search values - */ - performSearch: async function(searchWord) { - image = searchWord; - await verify.saveScreenshot(`${image}_1-0.png`); - let selector = await driver.$(shared.searchData.elem.searchInput); - await selector.setValue(searchWord); - await verify.saveScreenshot(`${image}_1-1.png`); - let title = await driver.getTitle(); - log.info('the title being returned:- ' + title); - let searchBtn = await driver.$(shared.searchData.elem.searchBtn); - await searchBtn.click(); - await driver.pause(DELAY_1_SECOND); - await helpers.compareImage(`${image}_1-0.png`); - await helpers.compareImage(`${image}_1-1.png`); - await image; - }, - searchResult: async function() { - // image = searchWord; - /** return the promise of an element to the following then */ - let elem = await driver.$(shared.searchData.elem.resultLink); - await driver.pause(DELAY_1_SECOND); - /** verify this element has children */ - - // await helpers.cssImages('search'); - - // Visual regression with dynamic elements disabled as ads and search result and region might change - await verify.saveScreenshot(`${image}_1-2.png`, ['.js-sidebar-ads', '.results--ad', '.result--ad', '.results', '.dropdown--region .dropdown__button']); - - log.info(elem); // prints to a log - expect(elem.length).to.not.equal(0); - await helpers.compareImage(`${image}_1-2.png`); - } -}; diff --git a/page-objects/getMethod.js b/page-objects/getMethod.js deleted file mode 100644 index 55e5faad..00000000 --- a/page-objects/getMethod.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - -let apiData = require('../shared-objects/apiData'); -let shared = { apiData }; - -let expect = global.expect; -let log = global.log; - -let res; - -module.exports = { - /** - * making a call to the Api - */ - getCall: async function() { - let endPoint = shared.apiData.url.api_base_url + shared.apiData.url.baseUrl; - res = await helpers.apiCall(endPoint, 'GET'); - }, - /** - * Getting the Response Timing - */ - resTime: async function() { - log.info(res.timings.response); - }, - /** - * Getting the Status Code - */ - staCode: async function() { - driver.pause(DELAY_1_SECOND); - expect(res.statusCode).to.equal(200); - log.info(res.statusCode); - }, - /** - * Getting the Content of the API - */ - contApi: async function() { - driver.pause(DELAY_1_SECOND); - log.info(res.body); - } -}; diff --git a/runtime/accessibility/ReportSample b/runtime/accessibility/ReportSample new file mode 100755 index 00000000..9eb0d461 --- /dev/null +++ b/runtime/accessibility/ReportSample @@ -0,0 +1,263 @@ + + + + + + + + + + + +
+ +

Accessibility Report - XXX-PageName

+

+ + +
+ +
+
+ + +

Execution Overview

+
+ +
+
+ +
+
+
+
+

+ Violated Rule(s) +
+

+
+
+ +
+
+

+ Incompleted Rule(s) +
+

+
+
+
+
+

+ Passed Rule(s) +
+

+
+
+ +
+
+ + + + + + +
+ + + + + +
+ +
+ + + + + diff --git a/runtime/accessibility/accessibilityLib.js b/runtime/accessibility/accessibilityLib.js new file mode 100755 index 00000000..45ad530d --- /dev/null +++ b/runtime/accessibility/accessibilityLib.js @@ -0,0 +1,78 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const axe = require('axe-core'); +const fs = require('fs'); +const path = require('path'); + +let errorCount = 0; +let totalErrorCount = 0; + +const envName = env.envName.toLowerCase(); + +module.exports = { + /** main method to be called for accessibility report */ + async getAccessibilityReport(pageName) { + errorCount = 0; + if (pageName == null) { + pageName = 'pageNameNotAvailable'; + } + await browser.execute(require('axe-core').source); + let results = await browser.executeAsync((done, err) => { + if (err) { + done(err); + } else { + axe.configure({ reporter: 'v2', noHtml: true }); + axe.run(document, (err, results) => { + if (err) done(err); + done(results); + }); + } + }); + + const additionalData = await browser.capabilities; + const browserName = settings.remoteConfig || BROWSER_NAME; + console.log('Generating Axe Report........'); + module.exports.generatelAccessibilityReport(results, additionalData, pageName, browserName); + + errorCount = results.violations.length + results.incomplete.length; + totalErrorCount += errorCount; + }, + + getAccessibilityError() { + return errorCount; + }, + getAccessibilityTotalError() { + return totalErrorCount; + }, + + generatelAccessibilityReport(fullData, additionalData, pageName, browserName) { + const sample = fs.readFileSync(path.resolve(__dirname, './ReportSample'), 'utf-8'); + const addDataInHtml = sample.replace('XXX-DetailData', JSON.stringify(fullData)); + + let finalHtml = addDataInHtml.replace('XXX-AdditinalData', JSON.stringify(additionalData)); + finalHtml = finalHtml.replace('XXX-PageName', pageName); + + const dirAcc = `${paths.reports}/${browserName}/${envName}/accessibilityReport`; + const datatime = helpers.reportDateTime(); + const fileName = `${pageName}-${browserName}_${datatime}`; + + if (!fs.existsSync(dirAcc)) { + fs.mkdirSync(dirAcc); + } + fs.writeFileSync(dirAcc + '/' + fileName + '.json', JSON.stringify(fullData, null, 4)); + fs.writeFileSync( + dirAcc + '/' + fileName + '.html', + finalHtml, + 'utf-8', + accessibilityReportList.push({ + filename: `${fileName}.html`, + path: `${dirAcc}/${fileName}.html`, + }) + ); + }, +}; diff --git a/runtime/browserStackDriver.js b/runtime/browserStackDriver.js deleted file mode 100644 index 8d6abbcf..00000000 --- a/runtime/browserStackDriver.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; - -const wdio = require('webdriverio'); -const loadConfig = require('./configLoader.js'); -const browserstack = require('./remotes/browserstack.js'); - -module.exports = async function browserstackDriver(options, configType) { - let config = loadConfig(`./browserstack/${configType}.json`); - let credentials = browserstack.getCredentials(); - let user = credentials.user; - let key = credentials.key; - let buildNameFromConfig = configType.replace(/-/g, ''); // BrowserStack will do this anyway, this is to make it explicit - // configs can define their own build name or it is inferred from the configType - if (!config.build) { - config.build = buildNameFromConfig; - } - const defaults = { - user: user, - key: key, - - updateJob: false, - exclude: [], - maxInstances: 10, - capabilities: config, - - coloredLogs: true, - screenshotPath: './errorShots/', - baseUrl: '', - waitforTimeout: 10000, - connectionRetryTimeout: 90000, - connectionRetryCount: 3, - host: 'hub.browserstack.com' - }; - const extendedOptions = Object.assign(defaults, options); - if (config.logLevel) { - // OPTIONS: verbose | silent | command | data | result - extendedOptions.logLevel = config.logLevel; - } - global.driver = await wdio.remote(extendedOptions); - return driver; -}; diff --git a/runtime/chromeDriver.js b/runtime/chromeDriver.js deleted file mode 100644 index 6ff49b3d..00000000 --- a/runtime/chromeDriver.js +++ /dev/null @@ -1,50 +0,0 @@ -/** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; - -const wdio = require('webdriverio'); - -/** - * create the web browser based on globals set in index.js - * @returns {{}} - */ -module.exports = async function chromeDriver(options) { - const defaults = { - logLevel: 'error', - capabilities: { - browserName: 'chrome' - } - }; - - // Add proxy based on env var. - const useProxy = process.env.USE_PROXY || false; - - if (useProxy) { - defaults.capabilities.proxy = { - httpProxy: 'http://domain.com:8080', // input the correct proxy name - proxyType: 'MANUAL', - autodetect: false - }; - } - - const extendedOptions = Object.assign(defaults, options); - global.driver = await wdio.remote(extendedOptions); - return driver; -}; diff --git a/runtime/coding-Standards/eslint/.eslintrc.json b/runtime/coding-Standards/eslint/.eslintrc.json new file mode 100755 index 00000000..2131746b --- /dev/null +++ b/runtime/coding-Standards/eslint/.eslintrc.json @@ -0,0 +1,106 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "parserOptions": { + "ecmaVersion":2017, + "ecmaFeatures": { + "jsx": true + }, + "sourceType": "module" + }, + "plugins": ["import", "prettier", "ui-testing"], + "extends": [ + "eslint:recommended", + "plugin:import/errors", + "plugin:import/warnings", + "plugin:ui-testing/webdriverio" + ], + "rules": { + "prettier/prettier": [ + "warn", + { + "singleQuote": true, + "printWidth": 120, + "endOfLine":"auto" + } + ], + "no-const-assign": "warn", + "no-this-before-super": "warn", + "no-undef": "warn", + "no-unreachable": "warn", + "no-unused-vars": "warn", + "constructor-super": "warn", + "valid-typeof": "warn", + "linebreak-style": [ 0, "warn"], + "no-console": [ 0, "error" ], + "indent": [ "error", 2, { "SwitchCase": 1 } ], + "semi": [ "error", "always" ], + "quotes":["error", "single"] + }, + "globals": { + "Given": true, + "When": true, + "Then": true, + "Before": true, + "BeforeAll": true, + "BeforeStep": true, + "After": true, + "AfterAll": true, + "AfterStep": true, + "helpers":true, + "browser": true, + "env": true, + "date": true, + "dateTime": true, + "startDateTime": true, + "endDateTime": true, + "browserName": true, + "BROWSER_NAME": true, + "reportName": true, + "projectName": true, + "settings": true, + "Status": true, + "envConfig": true, + "assert": true, + "expect": true, + "DELAY_100ms": true, + "DELAY_200ms": true, + "DELAY_300ms": true, + "DELAY_500ms": true, + "DELAY_1s": true, + "DELAY_2s": true, + "DELAY_3s": true, + "DELAY_5s": true, + "DELAY_10s": true, + "DELAY_15s": true, + "DELAY_20s": true, + "DELAY_30s": true, + "DELAY_40s": true, + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "getTagsFromFeatureFiles": true, + "sharedObjects": true, + "pageObjects": true, + "resultingString": "readonly", + "skipTag": true, + "paths": true, + "utam": true, + "s3Data": true, + "emailData": true, + "dryRun": true, + "email": true, + "s3Date": true, + "useProxy": true, + "cucumberThis": true, + "accessibilityLib": true, + "dataconfig": true + } +} \ No newline at end of file diff --git a/runtime/configLoader.js b/runtime/configLoader.js old mode 100644 new mode 100755 index 61bcc9f9..f23dde67 --- a/runtime/configLoader.js +++ b/runtime/configLoader.js @@ -1,28 +1,13 @@ /** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; + * klassi-js + * Copyright © 2016 - Larry Goddard -const fs = require('fs'); + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const fs = require('fs-extra'); -module.exports = function(configFilePath) { - const json = JSON.parse(fs.readFileSync(configFilePath, 'utf8')); - //TODO: add validation if schema - return json; +module.exports = (configFilePath) => { + return JSON.parse(fs.readFileSync(configFilePath, 'utf8')); + // TODO: add validation if schema }; diff --git a/runtime/downloader.js b/runtime/downloader.js old mode 100644 new mode 100755 index 3ca6cff2..5d34faae --- a/runtime/downloader.js +++ b/runtime/downloader.js @@ -1,62 +1,57 @@ /** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; + * klassi-js + * Copyright © 2016 - Larry Goddard -const fs = require('fs-extra'), - request = require('request'); + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const fs = require('fs'); module.exports = { /** * Download functionality and logic for all file types * @param url, @param dest, @param cb + * @param dest + * @param cb */ - fileDownload: function(url, dest, cb) { - let file = fs.createWriteStream(dest); - let sendReq = request.get(url); + fileDownload: async (url, dest, cb) => { + const file = fs.createWriteStream(dest); + const sendReq = await helpers.apiCall(url, 'GET', null, null); /** * verify response code */ - sendReq.on('response', function(response) { + // eslint-disable-next-line consistent-return + sendReq.on('response', (response) => { if (response.statusCode !== 200) { - return cb('Response status was ' + response.statusCode); + return cb(`Response status was ${response.statusCode}`); } }); /** * check for request errors */ - sendReq.on('error', function(err) { + // eslint-disable-next-line consistent-return + sendReq.on('error', (err) => { fs.unlink(dest); + if (cb) { return cb(err.message); } }); + sendReq.pipe(file); - file.on('finish', function() { + + file.on('finish', () => { file.close(cb); // close() is async, call cb after close completes. }); - file.on('error', function(err) { + + // eslint-disable-next-line consistent-return + file.on('error', (err) => { // Handle errors fs.unlink(dest); // Delete the file async. (But we don't check the result) + if (cb) { return cb(err.message); } }); - } + }, }; diff --git a/runtime/drivers/androidDriver.js b/runtime/drivers/androidDriver.js new file mode 100644 index 00000000..ab9e3ad9 --- /dev/null +++ b/runtime/drivers/androidDriver.js @@ -0,0 +1,40 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const { remote } = require('webdriverio'); + +let defaults = {}; + +/** + * create the web browser based on globals set in index.js + * @returns {{}} + */ +module.exports = async function androidDriver(options) { + defaults = { + logLevel: 'error', + port: 4723, + path: '/wd/hub', + capabilities: { + platformName: 'Android', + noReset: true, + fullReset: false, + automationName: 'UiAutomator2', + console: true, + }, + }; + if (useProxy) { + defaults.capabilities.proxy = { + httpProxy: '', + proxyType: 'MANUAL', + autodetect: false, + }; + } + + const extendedOptions = Object.assign(defaults, options); + global.browser = await remote(extendedOptions); + return browser; +}; diff --git a/runtime/drivers/chromeDriver.js b/runtime/drivers/chromeDriver.js new file mode 100755 index 00000000..d7b022a7 --- /dev/null +++ b/runtime/drivers/chromeDriver.js @@ -0,0 +1,80 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const { remote } = require('webdriverio'); +const program = require('commander'); +const fs = require('fs'); +const path = require('path'); +const { Before } = require('@cucumber/cucumber'); +const { filterQuietTags } = require('../../cucumber.js'); + +let defaults = {}; + +const modHeader = fs.readFileSync(path.resolve(__dirname, '../scripts/extensions/modHeader_3_1_22_0.crx'), { + encoding: 'base64', +}); + +let isApiTest; + +Before(async (scenario) => { + let result = await filterQuietTags(); + const taglist = resultingString.split(','); + isApiTest = taglist.some((tag) => result.includes(tag)); +}); + +/** + * create the web browser based on globals set in index.js + * @returns {{}} + */ +module.exports = async function chromeDriver(options) { + if (program.opts().wdProtocol) { + defaults = { + logLevel: 'error', + path: '/wd/hub', + capabilities: { + browserName: 'chrome', + 'goog:chromeOptions': { + args: ['--no-sandbox', '--disable-gpu', '--disable-popup-blocking'], + extensions: [modHeader], + }, + }, + }; + } else if (program.opts().headless || isApiTest ? '--headless' : '') { + defaults = { + logLevel: 'error', + capabilities: { + browserName: 'chrome', + 'goog:chromeOptions': { + args: ['--headless', '--disable-popup-blocking', '--disable-gpu', '--no-sandbox', '--disable-extensions'], + }, + }, + }; + } else { + defaults = { + logLevel: 'error', + capabilities: { + browserName: 'chrome', + 'goog:chromeOptions': { + args: ['--no-sandbox', '--disable-gpu', '--disable-popup-blocking'], + extensions: [modHeader], + }, + }, + }; + } + if (useProxy) { + defaults.capabilities.proxy = { + httpProxy: '', + proxyType: 'MANUAL', + autodetect: false, + }; + } + + const extendedOptions = Object.assign(defaults, options); + global.browser = await remote(extendedOptions); + await browser.setWindowSize(1280, 1024); + return browser; +}; diff --git a/runtime/drivers/firefoxDriver.js b/runtime/drivers/firefoxDriver.js new file mode 100755 index 00000000..d9494320 --- /dev/null +++ b/runtime/drivers/firefoxDriver.js @@ -0,0 +1,65 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const wdio = require('webdriverio'); +const program = require('commander'); +const { Before } = require('@cucumber/cucumber'); +const { filterQuietTags } = require('../../cucumber.js'); + +let defaults = {}; +let isApiTest; + +Before(async (scenario) => { + let result = await filterQuietTags(); + // let result = await helpers.filterQuietTags(); + const taglist = resultingString.split(','); + isApiTest = taglist.some((tag) => result.includes(tag)); +}); + +/** + * create the web browser based on globals set in index.js + * @returns {{}} + */ +module.exports = async function firefoxDriver(options) { + if (program.opts().wdProtocol) { + defaults = { + logLevel: 'error', + path: '/wd/hub', + capabilities: { + browserName: 'firefox', + }, + }; + } else if (program.opts().headless || isApiTest ? '--headless' : '') { + defaults = { + logLevel: 'error', + capabilities: { + browserName: 'firefox', + 'moz:firefoxOptions': { + args: ['--headless', '--disable-popup-blocking', '--disable-gpu'], + }, + }, + }; + } else { + defaults = { + logLevel: 'error', + capabilities: { + browserName: 'firefox', + }, + }; + } + if (useProxy) { + defaults.capabilities.proxy = { + httpProxy: '', + proxyType: 'MANUAL', + autodetect: false, + }; + } + const extendedOptions = Object.assign(defaults, options); + global.browser = await wdio.remote(extendedOptions); + await browser.setWindowSize(1280, 1024); + return browser; +}; diff --git a/runtime/drivers/iosDriver.js b/runtime/drivers/iosDriver.js new file mode 100644 index 00000000..c436bc85 --- /dev/null +++ b/runtime/drivers/iosDriver.js @@ -0,0 +1,42 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const { remote } = require('webdriverio'); + +let defaults = {}; + +/** + * create the web browser based on globals set in index.js + * @returns {{}} + */ +module.exports = async function iOSDriver(options) { + defaults = { + logLevel: 'error', + port: 4723, + path: '/wd/hub', + capabilities: { + platformName: 'iOS', + platformVersion: '15.2', + deviceName: 'iPhone 13', + noReset: true, + fullReset: false, + automationName: 'XCUITest', + console: true, + }, + }; + if (useProxy) { + defaults.capabilities.proxy = { + httpProxy: '', + proxyType: 'MANUAL', + autodetect: false, + }; + } + + const extendedOptions = Object.assign(defaults, options); + global.browser = await remote(extendedOptions); + return browser; +}; diff --git a/runtime/drivers/lambdatestDriver.js b/runtime/drivers/lambdatestDriver.js new file mode 100755 index 00000000..8537f7ea --- /dev/null +++ b/runtime/drivers/lambdatestDriver.js @@ -0,0 +1,96 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const wdio = require('webdriverio'); +const { Before } = require('@cucumber/cucumber'); +const fs = require('fs-extra'); +const path = require('path'); +const loadConfig = require('../configLoader'); +const lambdatest = require('../remotes/lambdatest'); +const { filterQuietTags } = require('../../cucumber.js'); + +const modHeader = fs.readFileSync(path.resolve(__dirname, '../scripts/extensions/modHeader_3_1_22_0.crx'), { + encoding: 'base64', +}); + +const chExt = { + 'LT:Options': { + 'goog:chromeOptions': { + extensions: [modHeader], + }, + }, +}; + +let isApiTest; +let config; + +Before(async (scenario) => { + let result = await filterQuietTags(); + const taglist = resultingString.split(','); + isApiTest = taglist.some((tag) => result.includes(tag)); +}); +// Before((scenario) => { +// isUTAMTest = scenario.pickle.tags.some((tag) => tag.name.includes('utam')); +// }); + +module.exports = async function lambdatestDriver(options, configType) { + const browserCaps = loadConfig(`./lambdatest/${configType}.json`); + const credentials = lambdatest.getCredentials(); + const { user } = credentials; + const { key } = credentials; + if (browserName === 'chrome') { + config = Object.assign(browserCaps, [chExt]); + } else { + config = browserCaps; + } + /** lambdatest will do this anyway, this is to make it explicit */ + const buildNameFromConfig = configType.replace(/-/g, ' '); + + if (process.env.CI || process.env.CIRCLE_CI) { + config.tunnelName = process.env.TUNNEL_NAME; + const { CIRCLE_BUILD_NUM, CIRCLE_JOB, CIRCLE_USERNAME } = process.env; + config.build = `${global.projectName} - CircleCI Build No. #${CIRCLE_BUILD_NUM} for ${CIRCLE_USERNAME}. Job: ${CIRCLE_JOB}`; + config.buildTags.push(`${CIRCLE_JOB}`); + } else { + /** configs can define their own build name or it is inferred from the configType */ + config.build = `${projectName}-${buildNameFromConfig}`; + config.tunnelName = 'klassitunnel'; + } + + const defaults = { + user, + key, + + updateJob: false, + exclude: [], + maxInstances: 10, + capabilities: config, + + logLevel: 'silent', + coloredLogs: true, + screenshotPath: './errorShots/', + baseUrl: '', + waitforTimeout: 10000, + connectionRetryTimeout: 90000, + connectionRetryCount: 3, + path: '/wd/hub', + hostname: 'hub.lambdatest.com', + port: 80, + }; + + const extendedOptions = Object.assign(defaults, options); + if (config.logLevel) { + // OPTIONS: verbose | silent | command | data | result + extendedOptions.logLevel = config.logLevel; + } + global.browser = await wdio.remote(extendedOptions); + if (isUTAMTest) { + const utamInstance = new UtamWdioService(utamConfig, extendedOptions.capabilities, extendedOptions); + await utamInstance.before(extendedOptions.capabilities, null, browser); + } + return browser; +}; diff --git a/runtime/envConfig.json b/runtime/envConfig.json deleted file mode 100755 index ca2a8cc7..00000000 --- a/runtime/envConfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "Details" : { - "Name": "KlassiTech Automated Testing Tool", - "Created by": "Larry Goddard" - }, - - "reportName": "KlassiTech Automated Test Report", - "projectName": "Klassi Technologies" - -} \ No newline at end of file diff --git a/runtime/envConfig.json.template b/runtime/envConfig.json.template deleted file mode 100644 index 4df2f95f..00000000 --- a/runtime/envConfig.json.template +++ /dev/null @@ -1,10 +0,0 @@ -{ - "Details" : { - "Name": "KlassiTech Automated Testing Tool", - "Created by": "Larry Goddard" - }, - - "reportName": "{test reportName}", - "projectName": "{projectName}", - -} diff --git a/runtime/firefoxDriver.js b/runtime/firefoxDriver.js deleted file mode 100644 index 0c74cf39..00000000 --- a/runtime/firefoxDriver.js +++ /dev/null @@ -1,49 +0,0 @@ -/** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; - -const wdio = require('webdriverio'); - -/** - * create the web browser based on globals set in index.js - * @returns {{}} - */ -module.exports = async function firefoxDriver(options) { - const defaults = { - logLevel: 'error', - capabilities: { - browserName: 'firefox' - } - }; - - // Add proxy based on env var. - const useProxy = process.env.USE_PROXY || false; - - if (useProxy) { - defaults.capabilities.proxy = { - httpProxy: 'http://domain.com:8080', // input the correct proxy name - proxyType: 'MANUAL', - autodetect: false - }; - } - const extendedOptions = Object.assign(defaults, options); - global.driver = await wdio.remote(extendedOptions); - return driver; -}; diff --git a/runtime/getRemote.js b/runtime/getRemote.js old mode 100644 new mode 100755 index 66a2fb54..0fdb6420 --- a/runtime/getRemote.js +++ b/runtime/getRemote.js @@ -1,49 +1,28 @@ /** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; + * klassi-js + * Copyright © 2016 - Larry Goddard -/** - * @type {{submitResults, getCredentials}|*} + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ -const browserstack = require('./remotes/browserstack.js'); +const lambdatest = require('./remotes/lambdatest'); module.exports = function getRemote(remoteService) { - let remote = {}; + const remote = {}; function noop() { - log.info( - 'If you are seeing this, you are running a non-existent remoteService' - ); + console.log('"If you\'re seeing this, you\'re running a non-existent remoteService"'); } - if (!remoteService) { remote.type = 'disabled'; remote.after = noop; - } else if (remoteService === 'browserstack') { - remote.type = 'browserstack'; - remote.after = browserstack.submitResults; + } else if (remoteService === 'lambdatest') { + remote.type = 'lambdatest'; + remote.after = lambdatest.submitResults; } else { - log.info(`Unknown remote service ${remoteService}`); + console.log(`Unknown remote service ${remoteService}`); remote.type = 'unknown'; remote.after = noop; } - return remote; }; diff --git a/runtime/getVideoLinks.js b/runtime/getVideoLinks.js new file mode 100755 index 00000000..5ec36ef6 --- /dev/null +++ b/runtime/getVideoLinks.js @@ -0,0 +1,34 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const pactumJs = require('pactum'); + +/** + * setting the envConfig variables for file list + */ +const ltUrl = process.env.LAMBDATEST_API_URL; +const ltUsername = process.env.LAMBDATEST_USERNAME; +const ltKey = process.env.LAMBDATEST_ACCESS_KEY; + +let res; +let videoID; +let url; + +module.exports = { + getVideoList: async () => { + const { sessionId } = browser; + url = `https://${ltUrl}/sessions/${sessionId}/video`; + res = await pactumJs.spec().get(url).withAuth(ltUsername, ltKey).expectStatus(200).toss(); + videoID = res.body.url; + return videoID; + }, + + getVideoId: async () => { + console.log('this is the video link ', videoID); + return videoID; + }, +}; diff --git a/runtime/helpers.js b/runtime/helpers.js index 4579e67d..a33b797f 100755 --- a/runtime/helpers.js +++ b/runtime/helpers.js @@ -1,367 +1,723 @@ /** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ -'use strict'; -const fs = require('fs'); -let log = global.log; +const fs = require('fs-extra'); +const path = require('path'); +const pactumJs = require('pactum'); +const loadConfig = require('./configLoader'); +const verify = require('./imageCompare'); +const { createWorker } = require('tesseract.js'); + +const envName = env.envName.toLowerCase(); + +let elem; +let getMethod; +let resp; +let modID; module.exports = { - - /** - * ========== All operational functions ========== - */ /** * returns a promise that is called when the url has loaded and the body element is present * @param {string} url to load + * @param seconds * @returns {Promise} * @example - * helpers.loadPage('http://www.google.co.uk'); + * helpers.loadPage('http://www.duckduckgo.com', 5); */ - loadPage: function (url, seconds) { + loadPage: async (url, seconds) => { /** * Wait function - measured in seconds for pauses during tests to give time for processes such as * a page loading or the user to see what the test is doing * @param seconds * @type {number} */ - let timeout = (seconds) ? (seconds * 1000) : DEFAULT_TIMEOUT; + const timeout = seconds || global.timeout; /** * load the url and wait for it to complete */ - return driver.url(url, function () { + await browser.url(url, async () => { /** * now wait for the body element to be present */ - return driver.waitUntil(driver.$('body'), timeout); + await browser.waitUntil(async () => await browser.execute(() => document.readyState === 'complete'), { + timeoutMsg: `The web page is still not loaded after ${timeout} seconds`, + }); }); + /** + * grab the userAgent details from the loaded url + */ + await helpers.getUserAgent(); + cucumberThis.attach(`loaded url: ${url}`); }, - + /** - * Visual comparison function - * @param fileName * @returns {Promise} */ - compareImage: async(fileName) => { - const verify = require('./imageCompare'); - await verify.assertion(fileName); - await verify.value(); - await verify.pass(); + getUserAgent: async () => { + const script = await browser.execute(() => window.navigator.userAgent); + const file = path.resolve('./shared-objects/docs/userAgent.txt'); + await helpers.writeToTxtFile(file, script); + await browser.pause(DELAY_100ms); }, - /** - * hideElements hide elements - * @param string selectors css selector or array of css selectors - */ - hideElements: async function(selectors) { - // if arg is no array make it one - selectors = typeof selectors == 'string' ? [selectors] : selectors; - for (let i = 0; i < selectors.length; i++) { - const script = `document.querySelectorAll('${ - selectors[i] - }').forEach(element => element.style.opacity = '0')`; - await driver.execute(script); + /** + * writeTextFile write data to file on hard drive + * @param filepath + * @param output + */ + writeToTxtFile: async (filepath, output) => { + try { + await fs.truncate(filepath, 0); + await fs.writeFileSync(filepath, output); + } catch (err) { + console.error(`Error in writing file ${err.message}`); + throw err; } }, + /** - * showElements show elements - * @param string selectors css selector or array of css selectors - */ - showElements: async function(selectors) { - // if arg is no array make it one - selectors = typeof selectors == 'string' ? [selectors] : selectors; - for (let i = 0; i < selectors.length; i++) { - const script = `document.querySelectorAll('${ - selectors[i] - }').forEach(element => element.style.opacity = '1')`; + * @param filepath + * @returns {Promise} + */ + readFromFile: (filepath) => + new Promise((resolve, reject) => { + fs.readFile(filepath, 'utf-8', (err, data) => { + data = data.toString(); + resolve(data); + // console.log('Success - the file content ', data); + }); + }), - await driver.execute(script); - } + /** + * This is to read content from a Json file + * @param filename + * @returns {Promise} + */ + readFromJson: async (filename) => { + const fileContent = await fs.readJson(filename); + // console.log('Success - the file content ', fileContent); + return fileContent; }, + /** - * writeTextFile write data to file on hard drive - * @param string filepath Path to file on hard drive - * @param string output Data to be written - */ - writeTextFile: function (filepath, output) { + * This is to write values into a JSON file + * @param filePath + * @param fileContent + * @returns {Promise} + */ + writeToJson: async (filePath, fileContent) => { try { - fs.writeFile(filepath, output, (err) => { - if (err) { - log.error(err.message); - } - }); - log.info('File has been written successfully'); + await fs.writeFile(filePath, JSON.stringify(fileContent, null, 4)); + console.log('Success - the content: ', fileContent); } catch (err) { - if (err){ - log.info('Error in writing file ' + err.message); - throw err; - } + console.error('This Happened: ', err); } }, /** - * clicks an element (or multiple if present) that is not visible, - * useful in situations where a menu needs a hover before a child link appears - * @param {string} css selector used to locate the elements - * @param {string} text to match inner content (if present) - * @example - * helpers.clickHiddenElement('nav[role="navigation"] ul li a','School Shoes'); - */ - clickHiddenElement: function (cssSelector, textToMatch) { - /** - * method to execute within the DOM to find elements containing text - */ - function clickElementInDom(query, content) { - /** - * get the list of elements to inspect - */ - let elements = document.querySelectorAll(query); - /** - * workout which property to use to get inner text - */ - let txtProp = ('textContent' in document) ? 'textContent' : 'innerText'; + * This is to merge content of json files + * @param filePath + * @param file + * @returns {Promise} + */ + mergeJson: async (filePath, file) => { + const fileA = loadConfig(filePath); + return Object.assign(fileA, file); + }, - for (let i = 0, l = elements.length; i < l; i++) { - /** - * If we have content, only click items matching the content - */ - if (content) { - if (elements[i][txtProp] === content) { - elements[i].click(); - } - } - /** - * otherwise click all - */ - else { - elements[i].click(); - } - } - } - /** - * grab the matching elements - */ - return driver.elements(cssSelector, clickElementInDom, textToMatch.toLowerCase().trim); + /** + * Visual comparison function + * @param fileName + * @returns {Promise} + */ + compareImage: async (fileName) => { + await verify.assertion(fileName); + await verify.value(); + await verify.pass(); }, - + /** - * Generates a random 13 digit number - * @param length - * @returns {number} + * This take an image of a page or an element on a page + * fileName only = a whole page image + * fileName + elementSnapshot = take an image of an element on the page + * @param fileName + * @param elementsToHide + * @param elementSnapshot, + * @returns {Promise} */ - randomNumberGenerator: function(length=13) { - let baseNumber = Math.pow(10, length -1 ); - let number = Math.floor(Math.random()*baseNumber); - /** - * Check if number have 0 as first digit - */ - if (number < baseNumber) { - number += baseNumber; + takeImage: async (fileName, elementSnapshot, elementsToHide) => { + await verify.takePageImage(fileName, elementSnapshot, elementsToHide); + await browser.pause(DELAY_500ms); + }, + + /** + * hideElemements hide elements + * @param selectors + */ + hideElements: async (selectors) => { + // if arg is no array make it one + selectors = typeof selectors === 'string' ? [selectors] : selectors; + for (let i = 0; i < selectors.length; i++) { + const script = `document.querySelectorAll('${selectors[i]}').forEach(element => element.style.opacity = '0')`; + await browser.execute(script); } - log.info('this is the number ' + number); - return number; }, - + /** - * Generate random integer from a given range - */ - generateRandomInteger: function (range) { - return Math.floor(Math.random() * Math.floor(range)); + * showElemements show elements + * @param selectors + */ + showElements: async (selectors) => { + // if arg is no array make it one + selectors = typeof selectors === 'string' ? [selectors] : selectors; + for (let i = 0; i < selectors.length; i++) { + const script = `document.querySelectorAll('${selectors[i]}').forEach(element => element.style.opacity = '1')`; + await browser.execute(script); + } }, + /** - * This method is useful for dropdown boxes as some of them have default "Please select" option on index 0 - * - * @param range - * @returns randomNumber excluding index 0 - */ - getRandomIntegerExcludeFirst: function (range) { - let randomNumber = helpers.generateRandomInteger(range); + * Get the current date dd-mm-yyyy + * @returns {string|*} + */ + currentDate() { + const today = new Date(); + let dd = today.getDate(); + let mm = today.getMonth() + 1; // January is 0! + const yyyy = today.getFullYear(); - if (randomNumber <= 1) { - randomNumber += 2; + if (dd < 10) { + dd = `0${dd}`; } - return randomNumber; + if (mm < 10) { + mm = `0${mm}`; + } + return `${dd}-${mm}-${yyyy}`; }, /** - * Converting String date into the Date format - * - * @param _date : String date that user passes in - * @param _format : "dd/MM/yyyy", "mm/dd/yyyy", "mm-dd-yyyy" - * @param _delimiter - * @returns {Date} - * - * Example use - * - * stringToDate("17/9/2014","dd/MM/yyyy","/"); - * stringToDate("9/17/2014","mm/dd/yyyy","/") - * stringToDate("9-17-2014","mm-dd-yyyy","-") - */ - stringToDate: function (_date, _format, _delimiter) { - let formatLowerCase = _format.toLowerCase(); - let formatItems = formatLowerCase.split(_delimiter); - let dateItems = _date.split(_delimiter); - let monthIndex = formatItems.indexOf('mm'); - let dayIndex = formatItems.indexOf('dd'); - let yearIndex = formatItems.indexOf('yyyy'); - let month = parseInt(dateItems[monthIndex]); - month -= 1; - return new Date(dateItems[yearIndex], month, dateItems[dayIndex]); - }, - - /** - * Get the current date dd-mm-yyyy - * @returns {string|*} - */ - currentDate: function () { - let today = new Date(); + * Get the current date yyyy-mm-dd for the s3 bucket folder + * @returns {string|*} + */ + s3BucketCurrentDate() { + const today = new Date(); let dd = today.getDate(); - let mm = today.getMonth() + 1; //January is 0! - let yyyy = today.getFullYear(); - + let mm = today.getMonth() + 1; // January is 0! + const yyyy = today.getFullYear(); + + if (dd < 10) { + dd = `0${dd}`; + } + if (mm < 10) { + mm = `0${mm}`; + } + return `${yyyy}-${mm}-${dd}`; + }, + + reportDateTime() { + const today = new Date(); + let dd = today.getDate(); + let mm = today.getMonth() + 1; // January is 0! + const yyyy = today.getFullYear(); + let hours = today.getHours(); + let minutes = today.getMinutes(); + let seconds = today.getSeconds(); + let milliseconds = today.getMilliseconds(); + if (dd < 10) { - dd = '0' + dd; + dd = `0${dd}`; } if (mm < 10) { - mm = '0' + mm; + mm = `0${mm}`; + } + if (hours < 10) { + hours = `0${hours}`; + } + if (minutes < 10) { + minutes = `0${minutes}`; + } + if (seconds < 10) { + seconds = `0${seconds}`; } - - return yyyy + '-' + mm + '-' + dd ; + if (milliseconds < 10) { + milliseconds = `0${milliseconds}`; + } + return `${dd}-${mm}-${yyyy}-${hours}${minutes}${seconds}${milliseconds}`; + }, + + emailReportDateTime() { + const $today = new Date(); + const $yesterday = $today; + $yesterday.setDate($today.getDate() - 1); + let dd = $yesterday.getDate(); + let mm = $yesterday.getMonth() + 1; // January is 0! + const yyyy = $yesterday.getFullYear(); + let hours = $yesterday.getHours(); + let minutes = $yesterday.getMinutes(); + let seconds = $yesterday.getSeconds(); + + if (dd < 10) { + dd = `0${dd}`; + } + if (mm < 10) { + mm = `0${mm}`; + } + if (hours < 10) { + hours = `0${hours}`; + } + if (minutes < 10) { + minutes = `0${minutes}`; + } + if (seconds < 10) { + seconds = `0${seconds}`; + } + return `${dd}-${mm}-${yyyy}-${hours}${minutes}${seconds}`; }, /** - * Get current date and time dd/mm/yyy 00:00:00 - */ - getCurrentDateTime: function () { - let today = new Date(); + * Get current date and time dd-mm-yyyy 00:00:00 + */ + getCurrentDateTime() { + const today = new Date(); let dd = today.getDate(); - let mm = today.getMonth() + 1; //January is 0! - let yyyy = today.getFullYear(); + let mm = today.getMonth() + 1; // January is 0! + const yyyy = today.getFullYear(); let hours = today.getHours(); let minutes = today.getMinutes(); - let seconds= today.getSeconds(); - + let seconds = today.getSeconds(); + if (dd < 10) { - dd = '0' + dd; + dd = `0${dd}`; } if (mm < 10) { - mm = '0' + mm; + mm = `0${mm}`; } - - if (hours < 10){ - hours = '0' + hours; + if (hours < 10) { + hours = `0${hours}`; } if (minutes < 10) { - minutes = '0' + minutes; + minutes = `0${minutes}`; } if (seconds < 10) { - seconds = '0' + seconds; + seconds = `0${seconds}`; } - return dd + '-' + mm + '-' + yyyy + '-' + hours + ':' + minutes + ':' + seconds; + return `${dd}-${mm}-${yyyy}-${hours}:${minutes}:${seconds}`; }, - - getEndDateTime: function () { - let eDate = this.getCurrentDateTime(); - return eDate; + + getEndDateTime() { + return this.getCurrentDateTime(); }, - - getStartDateTime: function () { - let sDate = this.getCurrentDateTime(); - return sDate; + + getStartDateTime() { + return this.getCurrentDateTime(); }, - - getCurrentDateFormatted: function () { - return helpers.getCurrentDateTime().replace(/\//g, '').replace(/:/g, '').replace(' ', ''); + + klassiReporter() { + try { + return require('./reporter/reporter').reporter(); + } catch (err) { + console.error(`There is a reporting system error: ${err.stack}`); + throw err; + } }, /** - * Get the text of an Element - * @param selector - * @returns text - */ - getElementText: function (selector) { - return driver.waitForExist(selector, DELAY_10_SECOND).pause(DELAY_3_SECOND).then(function () { - return driver.getText(selector).then(function (text) { - return text; - }); + * ========== EMAIL FUNCTIONALITY ========== + * Sends an Email to the concerned users with the log and the test report + */ + klassiEmail() { + try { + return require('./mailer').klassiSendMail(); + } catch (err) { + console.error(`This is a Email system error: ${err.stack}`); + throw err; + } + }, + + /** + * API call for GET, PUT, POST and DELETE functionality using PactumJS for API testing + * @param url + * @param method + * @param auth + * @param body + * @param status + * @returns {Promise<*>} + */ + apiCall: async (url, method, auth, body) => { + const options = { + url, + method, + auth, + headers: { + Authorization: `Bearer ${auth}`, + 'content-Type': 'application/json', + }, + body, + }; + if (method === 'GET') { + resp = await pactumJs.spec().get(options.url).withRequestTimeout(DELAY_10s).expectStatus(200).toss(); + getMethod = resp; + } + + if (method === 'PUT') { + resp = await pactumJs + .spec() + .put(options.url) + .withHeaders(options.headers) + .withBody(options.body) + .withRequestTimeout(DELAY_10s) + .expectStatus(200); + } + + if (method === 'POST') { + resp = await pactumJs + .spec() + .post(options.url) + .withHeaders(options.headers) + .withBody(options.body) + .withRequestTimeout(DELAY_10s) + .expectStatus(200); + } + + if (method === 'DELETE') { + resp = await pactumJs + .spec() + .post(options.url) + .withHeaders(options.headers) + .withBody(options.body) + .withRequestTimeout(DELAY_10s) + .expectStatus(200); + } + }, + + /** + * this stores the content of the APIs GET call + * @returns {*} + */ + getContent() { + return getMethod; + }, + + /** + * function for recording total errors from the Accessibility test run + * @param pageName + * @param count + * @returns {Promise} + */ + accessibilityReport: async (pageName, count = false) => { + const datatime = helpers.reportDateTime(); + await browser.pause(DELAY_1s).then(() => { + accessibilityLib.getAccessibilityReport(pageName); + console.log( + 'this is a place holder for html links ============ ', + path.resolve( + paths.reports, + browserName, + envName, + 'accessibilityReport', + `${pageName}-${browserName}_${datatime}.html` + ) + ); }); + + await module.exports.accessibilityError(count); + }, + /** + * function for recording total errors from the Accessibility test run + */ + accessibilityError(count) { + const totalError = accessibilityLib.getAccessibilityTotalError(); + const etotalError = accessibilityLib.getAccessibilityError(); + if (totalError > 0) { + cucumberThis.attach('The accessibility rule violation has been observed'); + cucumberThis.attach(`accessibility error count per page : ${etotalError}`); + if (count) { + cucumberThis.attach(`Total accessibility error count : ${totalError}`); + } + } else if (totalError <= 0) { + const violationcount = accessibilityLib.getAccessibilityError(); + assert.equal(violationcount, 0); + } }, /** - * Get the href link from an element - * @param selector - * @returns {String|String[]|*|string} - */ - getLink: function (selector) { - return driver.getAttribute(selector, 'href'); + * getting the video link from lambdatest + * @returns {Promise} + */ + ltVideo: async () => { + const page = require('./getVideoLinks'); + await page.getVideoList(); }, - - waitAndClick: async function (selector) { + + /** + * Get the href link from an element + * @param selector + * @returns {String|String[]|*|string} + */ + getLink: async (selector) => { + elem = await browser.$(selector); + await elem.getAttribute('href'); + }, + + waitAndClick: async (selector) => { try { - await driver.waitForVisible(selector, DELAY_3_SECOND); - await driver.waitForEnabled(selector, DELAY_1_SECOND); - await driver.click(selector); - await driver.pause(DELAY_500_MILLISECOND); - } - catch (err) { - log.error(err.message); + elem = await browser.$(selector); + await elem.isExisting(); + await elem.click(); + await browser.pause(DELAY_500ms); + } catch (err) { + console.error(err.message); throw err; } }, - - waitAndSetValue: async function (selector, value) { - try{ - await driver.waitForEnabled(selector, DELAY_3_SECOND); - await driver.click(selector); - await driver.pause(DELAY_500_MILLISECOND); - await driver.keys(value); - } - catch (err) { - log.error(err.message); + + waitAndSetValue: async (selector, value) => { + try { + elem = await browser.$(selector); + await elem.isExisting(); + await browser.pause(DELAY_500ms); + await elem.addValue(value); + } catch (err) { + console.error(err.message); throw err; } }, - + /** - * ========== EMAIL FUNCTIONALITY ========== - */ + * This will assert text being returned + * @param selector + * @param expected + */ + assertText: async (selector, expected) => { + let actual = await browser.$(selector); + await actual.getText(); + actual = actual.trim(); + assert.equal(actual, expected); + return this; + }, + + /** + * This will assert text being returned includes + * @param selector + * @param expectedText + */ + expectToIncludeText: async (selector, expectedText) => { + const actual = await browser.$(selector); + await actual.getText(); + expect(actual).to.include(expectedText); + return this; + }, + + /** + * function to get element from frame or frameset + * @param frameName + * @param selector + * @returns {Promise.} + */ + getElementFromFrame: async (frameName, selector) => { + const frame = await browser.$(frameName); + await browser.switchToFrame(frame.value); + await browser.$(selector).getHTML(); + return browser; + }, + + /** + * @param expected + */ + assertUrl: async (expected) => { + const actual = await browser.getUrl(); + assert.equal(actual, expected); + }, + + /** + * Generate random integer from a given range + */ + generateRandomInteger(range) { + return Math.floor(Math.random() * Math.floor(range)); + }, + + /** + * This method is useful for dropdown boxes as some of them have default 'Please select' option on index 0 + * @param range + * @returns randomNumber excluding index 0 + */ + getRandomIntegerExcludeFirst(range) { + let randomNumber = this.generateRandomInteger(range); + if (randomNumber <= 1) { + randomNumber += 2; + } + return randomNumber; + }, + /** - * Sends an Email to the concerned users with the log and the test report + * clicks an element (or multiple if present) that is not visible, + * useful in situations where a menu needs a hover before a child link appears + * @param {string} selector used to locate the elements + * @param {string} text to match inner content (if present) + * @example + * helpers.clickHiddenElement('nav[role='navigation'] ul li a','School Shoes'); + * @deprecated + */ + clickHiddenElement(selector, textToMatch) { + // TODO: Find a better way to do this + /** + * method to execute within the DOM to find elements containing text */ - klassiEmail: function (err) { - let mailer = require('../runtime/mailer').klassiSendMail(); - if(err) { - log.error('This is a Email system error: ' + err.stack); - throw err; + function clickElementInDom(query, content) { + /** + * get the list of elements to inspect + */ + const elements = document.querySelectorAll(query); + /** + * workout which property to use to get inner text + */ + const txtProp = 'textContent' in document ? 'textContent' : 'innerText'; + + for (let i = 0, l = elements.length; i < l; i++) { + /** + * If we have content, only click items matching the content + */ + if (content) { + if (elements[i][txtProp] === content) { + elements[i].click(); + } + } else { + /** + * otherwise click all + */ + elements[i].click(); + } + } } - return mailer; + + /** + * grab the matching elements + */ + return browser.$$(selector, clickElementInDom, textToMatch.toLowerCase().trim); }, - + /** - * ========== For all ASSERTIONS functions ========== + * this adds extensions to Chrome Only + * @param extName + * @returns {Promise<*>} */ + chromeExtension: async (extName) => { + await browser.pause(); + await helpers.loadPage(`https://chrome.google.com/webstore/search/${extName}`); + const script = await browser.execute(() => window.document.URL.indexOf('consent.google.com') !== -1); + if (script === true) { + elem = await browser.$$('[jsname="V67aGc"]:nth-child(3)'); + await elem[1].isExisting(); + await elem[1].scrollIntoView(); + const elem1 = await elem[1].getText(); + if (elem1 === 'I agree') { + await elem[1].click(); + await browser.pause(DELAY_300ms); + } + } + elem = await browser.$('[role="row"] > div:nth-child(1)'); + await elem.click(); + await browser.pause(DELAY_200ms); + const str = await browser.getUrl(); + const str2 = await str.split('/'); + modID = str2[6]; + return modID; + }, + /** - * Reformats date string into string + * This is the function for installing modeHeader + * @param extName + * @param username + * @param password + * @returns {Promise} + */ + modHeader: async (extName, username, password) => { + await helpers.chromeExtension(extName); + console.log('modID = ', modID); + // eslint-disable-next-line ui-testing/no-hard-wait + await browser.pause(3000); + elem = await browser.$( + '[class="e-f-o"] > div:nth-child(2) > [class="dd-Va g-c-wb g-eg-ua-Uc-c-za g-c-Oc-td-jb-oa g-c"]' + ); + await elem.isExisting(); + await elem.click(); + // eslint-disable-next-line ui-testing/no-hard-wait + await browser.pause(2000); + elem = await browser.$('.//a[@href="#Add extension"]'); + await elem.isExisting(); + await elem.click(); + await helpers.loadPage(`chrome-extension://${modID}/popup.html`); + // eslint-disable-next-line ui-testing/no-hard-wait + await browser.pause(5000); + await helpers.waitAndSetValue('(//input[@class="mdc-text-field__input "])[1]', username); + await helpers.waitAndSetValue('(//input[@class="mdc-text-field__input "])[2]', password); + await helpers.waitAndClick('//button[@title="Lock to tab"]'); + }, + + installMobileApp: async (appName, appPath) => { + if (env.envName === 'android' || env.envName === 'ios') { + if (!(await browser.isAppInstalled(appName))) { + console.log('Installing application...'); + await browser.installApp(appPath); + assert.isTrue(await browser.isAppInstalled(appName), 'The app was not installed correctly.'); + } else { + console.log(`The app ${appName} was already installed on the device, skipping installation...`); + await browser.terminateApp(appName); + } + } + }, + + uninstallMobileApp: async (appName, appPath) => { + if (env.envName === 'android' || env.envName === 'ios') { + if (await browser.isAppInstalled(appName)) { + console.log(`Uninstalling application ${appName}...`); + await browser.removeApp(appName); + assert.isNotTrue(await browser.isAppInstalled(appName), 'The app was not uninstalled correctly.'); + } else { + console.log(`The app ${appName} was already uninstalled fron the device, skipping...`); + } + } + }, + + /** + * drag the page into view + */ + pageView: async (selector) => { + const elem = await browser.$(selector); + await elem.scrollIntoView(); + await browser.pause(DELAY_200ms); + return this; + }, + + /** + * Generates a random 13 digit number + * @param length + * @returns {number} + */ + randomNumberGenerator(length = 13) { + const baseNumber = 10 ** (length - 1); + let number = Math.floor(Math.random() * baseNumber); + /** + * Check if number have 0 as first digit + */ + if (number < baseNumber) { + number += baseNumber; + } + console.log(`this is the number ${number}`); + return number; + }, + + /** + * Reformats date string into string * @param dateString * @returns {string} */ - reformatDateString: function (dateString) { - let months = { + reformatDateString(dateString) { + const months = { '01': 'January', '02': 'February', '03': 'March', @@ -371,158 +727,104 @@ module.exports = { '07': 'July', '08': 'August', '09': 'September', - '10': 'October', - '11': 'November', - '12': 'December' + 10: 'October', + 11: 'November', + 12: 'December', }; - let b = dateString.split('/'); - return b[0] + ' ' + months[b[1]] + ' ' + b[2]; + const b = dateString.split('/'); + return `${b[0]} ${months[b[1]]} ${b[2]}`; }, /** - * Sorts results by date - * @param array - * @returns {*} - */ - sortByDate: function (array) { - array.sort(function (a, b) { - let sentDateA = a.split('/'); - let c = new Date(sentDateA[2], sentDateA[1], sentDateA[0]); - let sentDateB = b.split('/'); - let d = new Date(sentDateB[2], sentDateB[1], sentDateB[0]); + * Sorts results by date + * @param array + * @returns {*} + */ + sortByDate(array) { + array.sort((a, b) => { + const sentDateA = a.split('/'); + const c = new Date(sentDateA[2], sentDateA[1], sentDateA[0]); + const sentDateB = b.split('/'); + const d = new Date(sentDateB[2], sentDateB[1], sentDateB[0]); return d - c; }); return array; }, - /** - * function to get element from frame or frameset - * @param frame_name - * @param selector - * @returns {Promise.} - */ - getElementFromFrame: function (frame_name, selector) { - let frame = driver.element(frame_name); - driver.frame(frame.value); - driver.getHTML(selector); - return driver; + filterItem: async (selector, itemToFilter) => { + try { + const elem = await browser.$(selector); + await elem.waitForExist(DELAY_5s); + await elem.waitForEnabled(DELAY_5s); + await browser.pause(DELAY_500ms); + await elem.click(); + await browser.setValue(itemToFilter); + } catch (err) { + console.error(err.message); + throw err; + } }, - /** - * This will assert 'equal' text being returned - * @param selector - * @param expectedText - */ - assertText: async function (selector, expected) { - await driver.waitForEnabled(selector, DELAY_5_SECOND); - let actual = await driver.getText(selector); - actual = actual.trim(); - assert.equal(actual, expected); - return this; + filterItemAndClick: async (selector) => { + try { + await this.filterItem('itemToFilter'); + await browser.pause(DELAY_3s); + const elem = await browser.$(selector); + await elem.click(); + await browser.pause(DELAY_3s); + } catch (err) { + console.error(err.message); + throw err; + } }, - + /** - * - * @param selector - * @param expectedText + * This generates the Date for uploading and retrieving the reports from s3 + * @returns {Date} */ - expectToIncludeText: async function (selector, expectedText) { - let actual = await driver.getText(selector); - expect(actual).to.include(expectedText); - return this; + formatDate() { + const $today = new Date(); + let $yesterday = new Date($today); + if (s3Date === true) { + $yesterday.setDate($today.getDate()); // for testing sending today's report. + } else { + $yesterday.setDate($today.getDate() - 1); // Also send last night reports, setDate also supports negative values, which cause the month to rollover. + } + let $dd = $yesterday.getDate(); + let $mm = $yesterday.getMonth() + 1; // January is 0! + const $yyyy = $yesterday.getFullYear(); + if ($dd < 10) { + $dd = `0${$dd}`; + } + if ($mm < 10) { + $mm = `0${$mm}`; + } + $yesterday = `${$yyyy}-${$mm}-${$dd}`; + return $yesterday; }, - + /** - * - * @param expected + * this uploads a file from local system or project folder + * @param selector + * @param filePath + * @returns {Promise} */ - assertUrl: async function (expected) { - let actual = await driver.getUrl(); - assert.equal(actual, expected); - }, - - /** - * API call for GET, PUT, POST and DELETE functionality - * @param url - * @param method - * @param body - * @param fileName - * @param statusCode - * @type {{ GET: receive all info, POST: create, PUT: edit / update, DELETE: remove info }}, - */ - apiCall: function (url, method, body, fileName, statusCode) { - - let options = { - url: url, - method: method, - body: body, - json: true, - time: true, - resolveWithFullResponse: true, - }; - - return request(options) - .then(async function (res) { - if (statusCode != null) { - assert.equal(res.statusCode, statusCode); - log.info('API Response time : ' + res.timings.response); - } - - if (method === 'GET') { - return res; - } - - if (method === 'DELETE' && fileName != null || method === 'PUT' && fileName != null) { - return fs.readFileSync(fileName, 'utf8', function (err) { - if (err){ - log.error(err.message); - } - }); - } - - if (method === 'POST' && fileName != null) { - let data = res.body.adminDoc; - let doc_Id = data.replace(/.*documents\/([^\/]+)\/properties.*/, '$1'); - await helpers.writeTextFile(fileName, doc_Id, function (err) { - if (err){ - log.error(err.message); - } - }); - log.info('====== DocId API ===== ' + doc_Id); - - await doc_Id; - } - return res; - }); + fileUpload: async (selector, filePath) => { + elem = await browser.$(selector); + await elem.isExisting(); + const remoteFilePath = await browser.uploadFile(filePath); + await elem.addValue(remoteFilePath); }, - - filterItem: async function (itemToFilter) { - try{ - await driver.waitForExist(shared.adminData.filter.filterInput, DELAY_5_SECOND); - await driver.waitForEnabled(shared.adminData.filter.filterInput, DELAY_5_SECOND); - await driver.pause(DELAY_500_MILLISECOND); - await driver.click(shared.adminData.filter.filterInput); - await driver.keys(itemToFilter); - } - catch (err) { - log.error(err.message); - throw err; - } - }, - - filterItemAndClick: async function (itemToFilter) { - try{ - await helpers.filterItem(itemToFilter); - await driver.pause(DELAY_3_SECOND); - await driver.click(shared.adminData.filter.filteredItem); - await driver.pause(DELAY_3_SECOND); - } - catch (err) { - if (err) { - log.error(err.message); - throw err; - } - } + + readTextFromImage: async (visualBaseline) => { + let worker = await createWorker(); + await worker.loadLanguage('eng'); + await worker.initialize('eng'); + const imagePath = 'artifacts/visual-regression/original/' + browserName + '/' + envName + '/positive/'; + const { + data: { text }, + } = await worker.recognize(imagePath + visualBaseline); + console.log(text); + await worker.terminate(); }, - }; diff --git a/runtime/imageCompare.js b/runtime/imageCompare.js old mode 100644 new mode 100755 index 8ef3c936..adea5034 --- a/runtime/imageCompare.js +++ b/runtime/imageCompare.js @@ -1,184 +1,202 @@ /** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; - -const resemble = require('node-resemble-js'), - fs = require('fs-extra'); + * klassi-js + * Copyright © 2016 - Larry Goddard -let log = global.log; -let browserName = global.settings.remoteConfig || global.browserName; + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const resemble = require('node-resemble-js'); +const fs = require('fs-extra'); +const program = require('commander'); -let baselineDir = `./visual-regression-baseline/${browserName}/`, - resultDir = `./artifacts/visual-regression/new-screens/${browserName}/`, - resultDirPositive = `${resultDir}positive/`, - resultDirNegative = `${resultDir}negative/`, - diffDir = `./artifacts/visual-regression/diffs/${browserName}/`, - diffDirPositive = `${diffDir}positive/`, - diffDirNegative = `${diffDir}negative/`; +const envName = env.envName.toLowerCase(); -let file_name, result, diffFile, value; +let fileName; +let diffFile; +let browserName; module.exports = { /** - * Take a screenshot of the current page and saves it as the given filename. + * Take an image of the current page and saves it as the given filename. * @method saveScreenshot - * @param {string} filename The complete path to the file name where the screenshot should be saved. + * @param {string} filename The complete path to the file name where the image should be saved. + * @param elementsToHide * @param filename - * @param {string|array} elementsToHide Selectors of elements that should be hidden in the screenshot, like a clock + * @param elementSnapshot * @returns {Promise} */ - saveScreenshot: async function(filename, elementsToHide) { + takePageImage: async (filename, elementSnapshot, elementsToHide) => { + const getRemote = require('./getRemote'); + const remoteService = getRemote(settings.remoteService); + + if (remoteService && remoteService.type === 'lambdatest') { + browserName = settings.remoteConfig || BROWSER_NAME; + await browserName; + } else { + browserName = settings.remoteConfig || program.opts().browser; + } + + const resultDir = `./artifacts/visual-regression/original/${browserName}/${envName}/`; + const resultDirPositive = `${resultDir}positive/`; + if (elementsToHide) { await helpers.hideElements(elementsToHide); } + fs.ensureDirSync(resultDirPositive); // Make sure destination folder exists, if not, create it const resultPathPositive = `${resultDirPositive}${filename}`; - await driver.saveScreenshot(resultPathPositive, err => { - if (err) { - log.error(err.message); - } - }); + + /** Logic to take an image of a whole page or an element image on a page */ + if (elementSnapshot) { + let elem = await browser.$(elementSnapshot); + await elem.saveScreenshot(resultPathPositive, async (err) => { + await module.exports.timeoutErrormsg(err); + }); + } else { + await browser.saveScreenshot(resultPathPositive, async (err) => { + await module.exports.timeoutErrormsg(err); + }); + } + if (elementsToHide) { await helpers.showElements(elementsToHide); } - log.info(`\tScreenshot saved to: ${resultPathPositive}`); + console.log(`\t images saved to: ${resultPathPositive}`); + }, + + timeoutErrormsg: async (err) => { + await browser.pause(DELAY_500ms); + if (err) { + console.error(err.message); + } }, + /** - * Runs assertions and comparison checks on the taken screenshots + * Runs assertions and comparison checks on the taken images * @param filename * @param expected + * @param result + * @param value * @returns {Promise} */ - assertion: async function(filename, expected) { - file_name = filename; + assertion(filename, expected, result, value) { + const baselineDir = `./visual-regression-baseline/${browserName}/${envName}/`; + const resultDir = `./artifacts/visual-regression/original/${browserName}/${envName}/`; + const resultDirPositive = `${resultDir}positive/`; + const resultDirNegative = `${resultDir}negative/`; + + const diffDir = `./artifacts/visual-regression/diffs/${browserName}/${envName}/`; + const diffDirPositive = `${diffDir}positive/`; + const diffDirNegative = `${diffDir}negative/`; + + fileName = filename; const baselinePath = `${baselineDir}${filename}`; const resultPathPositive = `${resultDirPositive}${filename}`; - fs.ensureDirSync(baselineDir); - fs.ensureDirSync(diffDirPositive); - this.expected = expected || 0.1; // misMatchPercentage tolerance default 0.3% + fs.ensureDirSync(baselineDir); // Make sure destination folder exists, if not, create it + fs.ensureDirSync(diffDirPositive); // Make sure destination folder exists, if not, create it + this.expected = 0.2 || expected; // misMatchPercentage tolerance default 0.3% if (!fs.existsSync(baselinePath)) { // create new baseline image if none exists - log.info('\tWARNING: Baseline image does NOT exist.'); - log.info(`\tCreating Baseline image from Result: ${baselinePath}`); + console.log('\t WARNING: Baseline image does NOT exist.'); + console.log(`\t Creating Baseline image from Result: ${baselinePath}`); fs.writeFileSync(baselinePath, fs.readFileSync(resultPathPositive)); } resemble.outputSettings({ errorColor: { red: 225, green: 0, - blue: 0 + blue: 225, }, errorType: 'movement', transparency: 0.1, - largeImageThreshold: 1200 + largeImageThreshold: 1200, }); resemble(baselinePath) .compareTo(resultPathPositive) .ignoreAntialiasing() .ignoreColors() - .onComplete(async function(res) { + .onComplete(async (res) => { result = await res; }); /** - * - * @param result * @returns {Promise} */ - this.value = async function() { - filename = await file_name; + this.value = async function () { + filename = await fileName; const resultPathNegative = `${resultDirNegative}${filename}`; const resultPathPositive = `${resultDirPositive}${filename}`; - while (typeof result == 'undefined') { - await driver.pause(DELAY_100_MILLISECOND); + while (typeof result === 'undefined') { + await browser.pause(DELAY_100ms); } const error = parseFloat(result.misMatchPercentage); // value this.pass is called with - fs.ensureDirSync(diffDirNegative); + fs.ensureDirSync(diffDirNegative); // Make sure destination folder exists, if not, create it + if (error > this.expected) { diffFile = `${diffDirNegative}${filename}`; - result - .getDiffImage() - .pack() - .pipe(fs.createWriteStream(diffFile)); - fs.ensureDirSync(resultDirNegative); + + const writeStream = fs.createWriteStream(diffFile); + await result.getDiffImage().pack().pipe(writeStream); + writeStream.on('error', (err) => { + console.log('this is the writeStream error ', err); + }); + fs.ensureDirSync(resultDirNegative); // Make sure destination folder exists, if not, create it fs.removeSync(resultPathNegative); - fs.moveSync(resultPathPositive, resultPathNegative); - log.info(`\tCreate diff image [negative]: ${diffFile}`); + fs.moveSync(resultPathPositive, resultPathNegative, false); + console.log(`\t Create diff image [negative]: ${diffFile}`); } else { diffFile = `${diffDirPositive}${filename}`; - result - .getDiffImage() - .pack() - .pipe(fs.createWriteStream(diffFile)); + + const writeStream = fs.createWriteStream(diffFile); + result.getDiffImage().pack().pipe(writeStream); + writeStream.on('error', (err) => { + console.log('this is the writeStream error ', err); + }); } }; /** - * - * @param value * @returns {Promise} */ - this.pass = async function() { - // res = await res; + this.pass = async function () { value = parseFloat(result.misMatchPercentage); - this.message = `Screenshot Match Failed for ${filename} with a tolerance difference of ${value - - this.expected + - ' - expected: ' + - this.expected + - ' but got: ' + - (value)}`; + this.message = `image Match Failed for ${filename} with a tolerance difference of ${`${ + value - this.expected + } - expected: ${this.expected} but got: ${value}`}`; const baselinePath = `${baselineDir}${filename}`; const resultPathNegative = `${resultDirNegative}${filename}`; const pass = value <= this.expected; const err = value > this.expected; + if (pass) { - log.info( - ` Screenshots Matched for ${filename} with ${value}% difference.` - ); + console.log(`image Match for ${filename} with ${value}% difference.`); + await browser.pause(DELAY_1s); } - if (err === true) { - log.error( - console.log( - this.message + - ' Screenshots at:\n' + - ` Baseline: ${baselinePath}\n` + - ` Result: ${resultPathNegative}\n` + - ` Diff: ${diffFile}\n` + - ` Open ${diffFile} to see how the screenshot has changed.\n` + - ' If the Result Screenshot is correct you can use it to update the Baseline Screenshot and re-run your test:\n' + - ` cp ${resultPathNegative} ${baselinePath}` - ) + + if (err === true && program.opts().updateBaselineImage) { + console.log( + `${this.message} images at:\n` + + ` Baseline: ${baselinePath}\n` + + ` Result: ${resultPathNegative}\n` + + ` cp ${resultPathNegative} ${baselinePath}` + ); + await fs.copy(resultPathNegative, baselinePath, (err) => { + console.log(` All Baseline images have now been updated from: ${resultPathNegative}`); + if (err) { + console.error('The Baseline images were NOT updated: ', err.message); + throw err; + } + }); + } else if (err) { + console.log( + `${this.message} images at:\n` + + ` Baseline: ${baselinePath}\n` + + ` Result: ${resultPathNegative}\n` + + ` Diff: ${diffFile}\n` + + ` Open ${diffFile} to see how the image has changed.\n` + + ' If the Resulting image is correct you can use it to update the Baseline image and re-run your test:\n' + + ` cp ${resultPathNegative} ${baselinePath}` ); - if (settings.updateBaselineImage) { - log.info( - ` All Baseline Screenshots have now been updated from: ${resultPathNegative}` - ); - fs.copy(resultPathNegative, baselinePath, err => { - if (err) { - log.error(err.message); - console.log(err.message); - throw err; - } - }); - } - throw err + ' - ' + this.message; + throw `${err} - ${this.message}`; } - return pass; }; - } + }, }; diff --git a/runtime/img/accessibility-html-report.png b/runtime/img/accessibility-html-report.png new file mode 100755 index 00000000..85011388 Binary files /dev/null and b/runtime/img/accessibility-html-report.png differ diff --git a/runtime/img/cucumber-html-report.png b/runtime/img/cucumber-html-report.png old mode 100644 new mode 100755 index 601b2596..a3e69a25 Binary files a/runtime/img/cucumber-html-report.png and b/runtime/img/cucumber-html-report.png differ diff --git a/runtime/img/installapp-support.jpg b/runtime/img/installapp-support.jpg new file mode 100644 index 00000000..cb522721 Binary files /dev/null and b/runtime/img/installapp-support.jpg differ diff --git a/runtime/img/javascript-code.jpg b/runtime/img/javascript-code.jpg new file mode 100644 index 00000000..00a6c2ed Binary files /dev/null and b/runtime/img/javascript-code.jpg differ diff --git a/runtime/img/klassiLogo.png b/runtime/img/klassiLogo.png new file mode 100644 index 00000000..3e853169 Binary files /dev/null and b/runtime/img/klassiLogo.png differ diff --git a/runtime/logger.js b/runtime/logger.js deleted file mode 100755 index 4f4cea1d..00000000 --- a/runtime/logger.js +++ /dev/null @@ -1,86 +0,0 @@ -/** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; - -const path = require('path'), - fs = require('fs-extra'), - winston = require('winston'); - -module.exports = { - klassiLog: function(err) { - if (err) { - console.log(err.message); - throw err; - } - let MyDate = new Date(); - let date; - MyDate.setDate(MyDate.getDate()); - date = - ('-' + '0' + MyDate.getDate()).slice(-2) + - '-' + - ('0' + (MyDate.getMonth() + 1)).slice(-2) + - '-' + - MyDate.getFullYear(); - let infoJsonFile = path - .join('./logs/infoLog/' + global.reportName + '-' + date + '.json') - .replace(/ /gi, ''), - errorJsonFile = path - .join('./logs/errorLog/' + global.reportName + '-' + date + '.json') - .replace(/ /gi, ''); - fs.ensureFile(infoJsonFile, function(err) { - if (err) { - log.error('The infoLog File has NOT been created: ' + err.stack); - } - }); - fs.ensureFile(errorJsonFile, function(err) { - if (err) { - log.error('The errorLog File has NOT been created: ' + err.stack); - } - }); - /** - * Log files are raised and sent to the relevant files - */ - const log = winston.createLogger({ - level: 'verbose', - transports: [ - new winston.transports.Console({ - colorize: 'all', - timestamp: true, - prettyPrint: true - }), - new winston.transports.File({ - name: 'info-file', - filename: infoJsonFile, - level: 'info', - json: false, - prettyPrint: true - }), - new winston.transports.File({ - name: 'error-file', - filename: errorJsonFile, - level: 'error', - json: false, - prettyPrint: true - }) - ] - }); - return log; - } -}; diff --git a/runtime/mailer.js b/runtime/mailer.js old mode 100644 new mode 100755 index cf46fc69..40e5c5cb --- a/runtime/mailer.js +++ b/runtime/mailer.js @@ -1,78 +1,140 @@ /** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ -'use strict'; +const path = require('path'); +const nodeMailer = require('nodemailer'); +const aws = require('@aws-sdk/client-ses'); +const { defaultProvider } = require('@aws-sdk/credential-provider-node'); +const getRemote = require('./getRemote'); -/** - * Functionality for sending test results via email +const remoteService = getRemote(settings.remoteService); +const browserName = settings.remoteConfig || BROWSER_NAME; +const envName = env.envName.toLowerCase(); +const emailMethod = global.emailMethod.toLowerCase(); +const emailDateTime = helpers.emailReportDateTime(); + +process.env.AWS_ACCESS_KEY_ID = process.env.SES_KEY; +process.env.AWS_SECRET_ACCESS_KEY = process.env.SES_SECRET; + +let transporter; +let transporterObject; + +const ses = new aws.SES({ + apiVersion: '2010-12-01', + region: emailData.SES_REGION || ' ', + defaultProvider, +}); +/** Functionality for sending test results via email * @type {exports|module.exports} */ -const nodemailer = require('nodemailer'); -let shared = require('../shared-objects/emailData'); - module.exports = { - klassiSendMail: function() { - let devTeam = shared.nameList; - /** - * Email relay server connections - */ - let transporter = nodemailer.createTransport({ - host: shared.auth.host, - port: shared.auth.port, - // secure: true, - auth: { - user: shared.auth.user, - pass: shared.auth.pass - }, - tls: { - rejectUnauthorized: false + klassiSendMail: async () => { + /** To get all the files that need to be attached */ + const date = helpers.currentDate(); + let fileList; + if (remoteService && remoteService.type === 'lambdatest') { + fileList = [ + { + filename: `testReport-${date}.html`, + path: path.resolve(`${paths.reports}/testReport-${date}.html`), + }, + // { + // filename: 'index.html', + // path: path.resolve(`${paths.coverage}/index.html`), + // }, + ]; + if (emailData.AccessibilityReport === 'Yes') { + fileList = fileList.concat(accessibilityReportList); } - }); - let mailOptions = { + } else { + fileList = [ + { + filename: `${reportName}-${dateTime}.html`, + path: path.resolve(paths.reports, browserName, envName, `${reportName}-${dateTime}.html`), + }, + // { + // filename: 'index.html', + // path: path.resolve(`${paths.coverage}/index.html`), + // }, + ]; + } + + const devTeam = emailData.nameList; + + if (emailMethod === 'smtp') { + /** SMTP Email server connection */ + transporterObject = { + host: emailData.SMTP_HOST, + port: 465, + secure: true, // use TLS + auth: { + user: process.env.SMTP_USERNAME, + pass: process.env.SMTP_PASSWORD, + }, + tls: { + // do not fail on invalid certs + rejectUnauthorized: false, + }, + }; + } + if (emailMethod === 'aws') { + /** Email AWS server connections */ + transporterObject = { + SES: { ses, aws }, + Statement: [ + { + Effect: 'Allow', + Action: 'ses:SendRawEmail', + Resource: '*', + }, + ], + }; + } + + try { + transporter = await nodeMailer.createTransport(transporterObject); + } catch (err) { + if (!transporterObject) console.error('incorrect email method was provided', err); + } + + const mailOptions = { to: devTeam, - from: 'Klassi-QATEST ', - subject: global.reportName, + from: 'klassi-QATEST ', + subject: `${projectName} ${reportName}-${emailDateTime}`, alternative: true, - attachments: [ - { - filename: global.reportName + '-' + date + '.html', - path: './reports/' + global.reportName + '-' + date + '.html' - } - ], - html: 'Please find attached the automated test results' + attachments: fileList, + html: `Please find attached the automated test results for test run on - ${emailDateTime}`, }; - /** - * sends the message and get a callback with an error or details of the message that was sent + /** verify the connection and sends the message and get a callback with an error or details of the message that was sent */ - try { - transporter.sendMail(mailOptions, function(err) { - if (err) { - log.error('Result Email CANNOT be sent: ' + err.stack); + await transporter.verify(async (err, success) => { + if (err) { + console.error('Server failed to Start', err.stack); + } else { + console.log('Server is ready to take our messages'); + } + if (success) { + try { + await transporter.sendMail(mailOptions, (err) => { + if (err) { + console.error(`Results Email CANNOT be sent: ${err.stack}`); + throw err; + } else { + console.log('Results Email successfully sent'); + browser.pause(DELAY_200ms).then(() => { + process.exit(0); + }); + } + }); + } catch (err) { + console.error('There is a system error: ', err.stack); throw err; - } else { - log.info('Results Email successfully sent'); - process.exit(); } - }); - } catch (err) { - log.info('This is a system error: ', err.stack); - throw err; - } - } + } + }); + }, }; diff --git a/runtime/remotes/browserstack.js b/runtime/remotes/browserstack.js deleted file mode 100644 index 6a71e0f3..00000000 --- a/runtime/remotes/browserstack.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; -/*global assert:false */ - -const rp = require('request-promise'); -const loadConfig = require('../configLoader.js'); - -function getCredentials() { - let secrets = loadConfig('browserstack/secrets/browserstack.json'); - - let user = process.env.BROWSERSTACK_USERNAME || secrets.BROWSERSTACK_USERNAME; - let key = - process.env.BROWSERSTACK_ACCESS_KEY || secrets.BROWSERSTACK_ACCESS_KEY; - - assert.isNotEmpty(user, 'BrowserStack requires a username'); - assert.isNotEmpty(key, 'BrowserStack requires an access key'); - - return { user: user, key: key }; -} - -async function submitResults(scenario) { - let configBuildName = global.settings.remoteConfig.replace(/-/g, ' '); - let credentials = getCredentials(); - let browserstackUsername = credentials.user; - let browserstackApiKey = credentials.key; - let apiCredentials = `${browserstackUsername}:${browserstackApiKey}`; - let scenarioName = scenario.getName(); - let buildsBody = await rp({ - uri: `https://${apiCredentials}@api.browserstack.com/automate/builds.json` - }); - - let matchingBuilds = JSON.parse(buildsBody).filter( - build => build.automation_build.name === configBuildName - ); - let build = matchingBuilds[0].automation_build; - let buildId = build.hashed_id; - - let sessionsBody = await rp({ - uri: `https://${apiCredentials}@api.browserstack.com/automate/builds/${buildId}/sessions.json` - }); - - let latestSession = JSON.parse(sessionsBody)[0]; - let sessionId = latestSession.automation_session.hashed_id; - - let explanations = []; - let statusString = scenario.isSuccessful() ? 'passed' : 'failed'; - if (scenario.isSuccessful()) { - explanations.push(`${scenarioName} succeeded`); - } - if (scenario.isPending()) { - explanations.push(`${scenarioName} is pending`); - } - - if (scenario.isUndefined()) { - explanations.push(`${scenarioName} is undefined`); - } - - if (scenario.isSkipped()) { - explanations.push(`${scenarioName} was skipped`); - } - - if (scenario.isFailed()) { - explanations.push(`${scenarioName} failed:` + scenario.getException()); - explanations.push(scenario.getUri() + ' (' + scenario.getLine() + ')'); - } - - await rp({ - uri: `https://${apiCredentials}@api.browserstack.com/automate/sessions/${sessionId}.json`, - method: 'PUT', - form: { - 'status': statusString, - 'reason': explanations.join('; ') - } - }); -} -module.exports = { - submitResults: submitResults, - getCredentials: getCredentials -}; diff --git a/runtime/remotes/browserstackLocal.js b/runtime/remotes/browserstackLocal.js deleted file mode 100644 index 84dc44f7..00000000 --- a/runtime/remotes/browserstackLocal.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; - -const wdio = require('webdriverio'); -const browserstacklocal = require('browserstack-local'); -const loadConfig = require('../configLoader.js'); -let secrets = loadConfig('./browserstack/secrets/browserstack.json'); - -let bs_local; -let key = secrets.BROWSERSTACK_ACCESS_KEY; -let localIdentifier = secrets.BROWSERSTACK_LOCAL_IDENTIFIER; - -console.log( - `\nExpecting a player build served at port: ${process.env.http || '8080'}\n` -); - -// start browserstack-local for testing -console.log('Connecting local to browserstack automate...'); -let bs_local_args = { - 'key': key, - 'localIdentifier': localIdentifier, - 'force': true, - 'logfile': './browserstackLocal.log' -}; - -bs_local = new browserstacklocal.Local(); -wdio.bs_local = bs_local; - -// if (bs_local === 'start') { -bs_local.start(bs_local_args, async function(err) { - if (err) { - console.log('its done and not working', err.message); - } - console.log( - 'Connected.\n\nNight gathers, and now my watch begins..\nI am the sword in the darkness.\n' - ); - // check if BrowserStack local instance is running - console.log( - bs_local.isRunning() + ' - Browserstack local instance is running' - ); -}); -// } -// else{ -// stop the Local instance -// bs_local.stop(function() { -// console.log('Stopped BrowserStackLocal'); -// }); -// }; diff --git a/runtime/remotes/lambdatest.js b/runtime/remotes/lambdatest.js new file mode 100755 index 00000000..c3112627 --- /dev/null +++ b/runtime/remotes/lambdatest.js @@ -0,0 +1,70 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const { Before, After } = require('@cucumber/cucumber'); + +let scenarioName; +let scenarioResult; + +Before(async (scenario) => { + scenarioName = scenario.pickle.name; + return scenarioName; +}); + +After(async (scenario) => { + scenarioResult = scenario.result; + return scenarioResult; +}); + +function getCredentials() { + /** adding the ability to deep dive */ + const user = process.env.LAMBDATEST_USERNAME; + const key = process.env.LAMBDATEST_ACCESS_KEY; + + assert.isNotEmpty(user, 'lambdatest requires a username'); + assert.isNotEmpty(key, 'lambdatest requires an access key'); + + return { user, key }; +} +let url; +let matchingBuilds; +let sessionsBody; + +async function submitResults() { + const credentials = getCredentials(); + const lambdatestUsername = credentials.user; + const lambdatestApiKey = credentials.key; + const apiCredentials = `${lambdatestUsername}:${lambdatestApiKey}`; + + url = `https://${apiCredentials}@api.lambdatest.com/automation/api/v1/builds`; + const buildsBody = await helpers.apiCall(url, 'GET', null, null); + matchingBuilds = buildsBody.body.data; + + let i; + for (i = 0; i < matchingBuilds.length; i++) { + const projectname = matchingBuilds[i].name; + await projectname; + if (projectname === dataconfig.projectName) { + matchingBuilds = matchingBuilds[i].build_id; + } + } + await matchingBuilds; + url = `https://${apiCredentials}@api.lambdatest.com/automation/api/v1/sessions`; + sessionsBody = await helpers.apiCall(url, 'GET', null, null); + + let x; + const sessionData = sessionsBody.body.data; + for (x = 0; x < sessionData.length; x++) { + const sessionName = sessionData[x].build_name; + await sessionName; + } +} + +module.exports = { + submitResults, + getCredentials, +}; diff --git a/runtime/reporter/reporter.js b/runtime/reporter/reporter.js new file mode 100755 index 00000000..4cd1101a --- /dev/null +++ b/runtime/reporter/reporter.js @@ -0,0 +1,97 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const fs = require('fs-extra'); +const path = require('path'); +const reporter = require('klassijs-cucumber-html-reporter'); +const jUnit = require('cucumber-junit'); +const pactumJs = require('pactum'); + +const getRemote = require('../getRemote'); +const remoteService = getRemote(settings.remoteService); +const browserName = settings.remoteConfig || BROWSER_NAME; + +let resp; +let obj; + +module.exports = { + ipAddr: async () => { + const endPoint = 'http://ip-api.com/json'; + resp = await pactumJs.spec().get(endPoint).toss(); + await resp; + }, + + async reporter() { + const envName = env.envName.toLowerCase(); + try { + await this.ipAddr(); + obj = await resp.body; + } catch (err) { + obj = {}; + console.log('IpAddr func err: ', err.message); + } + + if (paths.reports && fs.existsSync(paths.reports)) { + let jsonDir = path.resolve(paths.reports, browserName, envName); + let jsonComDir = path.resolve(paths.reports, browserName, envName + 'Combine'); + + global.endDateTime = helpers.getEndDateTime(); + + const reportOptions = { + theme: 'hierarchy', + jsonDir: jsonComDir, + output: path.resolve(paths.reports, browserName, envName, `${reportName}-${dateTime}.html`), + reportSuiteAsScenarios: true, + launchReport: !settings.disableReport, + ignoreBadJsonFile: true, + metadata: { + // 'Test Started': startDateTime, + Environment: env.envName, + IpAddress: obj.query, + Browser: browserName, + Location: `${obj.city} ${obj.regionName}`, + Platform: process.platform, + 'Test Completion': endDateTime, + Executed: remoteService && remoteService.type === 'lambdatest' ? 'Remote' : 'Local', + }, + brandTitle: `${reportName} ${dateTime}`, + name: `${projectName} ${browserName} ${envName}`, + }; + await browser.pause(DELAY_3s); + // eslint-disable-next-line no-undef + if (!isCI) { + await fs.copySync(jsonDir, jsonComDir); + let jsonfile = path.resolve(paths.reports, browserName, envName + 'Combine', `${reportName}-${dateTime}.json`); + await browser.pause(DELAY_300ms); + if (resultingString === '@s3load') { + fs.remove(jsonfile, (err) => { + if (err) return console.error(err); + }); + await browser.pause(DELAY_500ms); + await reporter.generate(reportOptions); + await browser.pause(DELAY_3s).then(async () => { + await s3Upload.s3Upload(); + await browser.pause(DELAY_5s); + }); + } else { + await browser.pause(DELAY_500ms); + await reporter.generate(reportOptions); + } + } + + /** grab the file data for xml creation */ + let jsonFile = path.resolve(paths.reports, browserName, envName, `${reportName}-${dateTime}.json`); + const reportRaw = fs.readFileSync(jsonFile).toString().trim(); + // eslint-disable-next-line ui-testing/missing-assertion-in-test + const xmlReport = jUnit(reportRaw); + const junitOutputPath = path.resolve( + path.resolve(paths.reports, browserName, envName, `${reportName}-${dateTime}.xml`) + ); + fs.writeFileSync(junitOutputPath, xmlReport); + } + }, +}; diff --git a/runtime/retrieveMailinator.js b/runtime/retrieveMailinator.js new file mode 100644 index 00000000..96aaf544 --- /dev/null +++ b/runtime/retrieveMailinator.js @@ -0,0 +1,55 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const options = { + headers: { + Authorization: sharedObjects.salesforceData.credentials.mailinator.apiKey, + }, + throwHttpErrors: true, + simple: false, + allowGetBody: true, + resolveWithFullResponse: true, +}; + +const retrieveAllEmails = async (inbox) => { + try { + console.log('Retrieving all emails...'); + options.url = `${env.mailinatorApiBaseUrl}/${inbox}`; + const response = await helpers.apiCall(options.url, 'GET', options.headers.Authorization, null); + + return response.body.msgs; + } catch (e) { + console.error(e); + } +}; + +const getVerificationCode = async (inbox) => { + let messageId; + let allCurrentReceivedEmails = []; + + while (allCurrentReceivedEmails.length < 1) { + try { + allCurrentReceivedEmails = await retrieveAllEmails(inbox); + } catch (e) { + console.error(e); + } + } + + messageId = allCurrentReceivedEmails[allCurrentReceivedEmails.length - 1].id; + options.url = `${env.mailinatorApiBaseUrl}/${inbox}/messages/${messageId}`; + + const verificationEmail = await helpers.apiCall(options.url, 'GET', options.headers.Authorization, null); + const verificationEmailBody = verificationEmail.parts[0].body; + + console.log('Email retrieved'); + + const verificationCode = verificationEmailBody.match(/Código de verificación: (\d+)/g)[0].match(/\d+/g)[0]; + await helpers.apiCall(options.url, 'DELETE', options.headers.Authorization, null); + return verificationCode; +}; + +module.exports = getVerificationCode; diff --git a/runtime/s3ReportProcessor.js b/runtime/s3ReportProcessor.js new file mode 100755 index 00000000..fd82d20d --- /dev/null +++ b/runtime/s3ReportProcessor.js @@ -0,0 +1,107 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const path = require('path'); +const fs = require('fs-extra'); +const { S3Client, ListObjectsCommand } = require('@aws-sdk/client-s3'); +const program = require('commander'); + +const s3Bucket = s3Data.S3_BUCKET; +const s3AccessKeyId = process.env.S3_KEY; +const s3SecretAccessKey = process.env.S3_SECRET; +const domainName = s3Data.S3_DOMAIN_NAME; + +const s3Client = new S3Client({ + region: s3Data.S3_REGION || ' ', + credentials: { + accessKeyId: s3AccessKeyId, + secretAccessKey: s3SecretAccessKey, + }, +}); + +module.exports = { + async s3Processor(projectName) { + const s3date = helpers.formatDate(); + const folderName = helpers.formatDate(); + projectName = dataconfig.s3FolderName; + console.log(`Starting Processing of Test Report for: ${s3date}/${projectName} ...`); + /** + * This creates the test report from the sample template + * @type {string} + */ + const tempFile = path.resolve(__dirname, './scripts/s3ReportSample'); + let filePath; + let date = helpers.currentDate(); + if (program.opts().dlink) { + filePath = `../../${projectName}/test/reports/testReport-${date}.html`; + } else { + filePath = `../${projectName}/reports/testReport-${date}.html`; + } + + const file = filePath; + await fs.copySync(tempFile, file); + + /** + * list of browsers test running on via lambdatest + * @type {string[]} + */ + const browserName = ['chrome', 'firefox', 'edge', 'safari', 'tabletGalaxy', 'tabletiPad']; + let dataList; + let dataNew = ''; + let browsername; + let dataOut = await helpers.readFromFile(tempFile); + + const bucketParams = { + Bucket: s3Bucket, + Marker: folderName, + Prefix: `${s3date}/${projectName}`, + MaxKeys: 1000, + }; + + const data = await s3Client.send(new ListObjectsCommand(bucketParams)); + if (data.Contents) { + for (let x = 0; x < browserName.length; x++) { + browsername = browserName[x]; + const linkList = []; + + for (let i = 0; i < data.Contents.length; i++) { + const key = data.Contents[i].Key; + if (key.substring(0, 10) === folderName) { + if (key.split('.')[1] === 'html') { + dataList = `${domainName}/${key}`; + if (dataList.includes(browsername)) { + const envDataNew = dataList.replace(/^.*reports\/\w+\//, '').replace(/\/.*.html/, ''); + dataNew = dataList + .replace(/^.*reports\/\w+\//, '') + .replace(`${envDataNew}/`, '') + .replace(/\.html/, ''); + const theNewData = `${dataNew} -- ${envDataNew}`; + let dataFile = ''; + linkList.push((dataFile = `${dataFile}${theNewData}`)); + } + } + } + } + if (linkList.length > 0) { + const browserData = `

${browsername}

${linkList.join( + ' ' + )}
`; + dataOut = dataOut.replace('<-- browser_test_output -->', browserData); + } else { + dataOut = dataOut.replace('<-- browser_test_output -->', ' '); + } + } + } + await helpers.writeToTxtFile(file, dataOut); + if (dataList === undefined) { + console.error('There is no reporting Data for this Project....'); + } else if (dataList.length > 0) { + console.log('Test run completed and s3 report sent.'); + await helpers.klassiEmail(); + } + }, +}; diff --git a/runtime/s3Upload.js b/runtime/s3Upload.js new file mode 100644 index 00000000..b04be5e3 --- /dev/null +++ b/runtime/s3Upload.js @@ -0,0 +1,97 @@ +/** + * klassi-js + * Copyright © 2016 - Larry Goddard + + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + */ +const path = require('path'); +const fs = require('fs-extra'); +const readdir = require('recursive-readdir'); +const async = require('async'); +const { S3Client, ListBucketsCommand, PutObjectCommand } = require('@aws-sdk/client-s3'); + +/** + * function to upload the test report folder to an s3 Bucket - AWS + */ +module.exports = { + s3Upload: async () => { + let envName = env.envName.toLowerCase(); + let date = require('./helpers').s3BucketCurrentDate(); + const browserName = settings.remoteConfig || BROWSER_NAME; + const rootFolder = path.resolve('./reports'); + const folderName = `${date}/${dataconfig.s3FolderName}/reports/`; + const BUCKET = s3Data.S3_BUCKET; + const S3_KEY = process.env.S3_KEY; + const S3_SECRET = process.env.S3_SECRET; + const uploadFolder = `./${browserName}/`; + + const s3Client = new S3Client({ + region: s3Data.S3_REGION || ' ', + credentials: { + accessKeyId: S3_KEY, + secretAccessKey: S3_SECRET, + }, + }); + async function mybucketList() { + try { + const data = await s3Client.send(new ListBucketsCommand({})); + return data.Buckets; // For unit tests. + } catch (err) { + console.error('Error ', err.message); + } + } + + async function filesToRemove() { + const filePath = rootFolder + '/' + browserName + '/' + envName; + const filelist = fs.readdirSync(filePath); + // console.log('this is the list of files ============> ', filelist); + for (let i = 0; i < filelist.length; i++) { + let filename = filelist[i]; + + if (filename.endsWith('.html.json')) { + fs.removeSync(path.resolve(filePath, filename)); + } + } + } + + let dirToRemove = rootFolder + '/' + browserName + '/' + envName + 'Combine'; + async function getFiles(dirPath) { + if (await fs.existsSync(dirToRemove)) { + await fs.rmSync(dirToRemove, { recursive: true }); + } + return fs.existsSync(dirPath) ? readdir(dirPath) : []; + } + async function deploy(upload) { + await filesToRemove(); + const filesToUpload = await getFiles(path.resolve(rootFolder, upload)); + await async.eachOfLimit(filesToUpload, 20, async (file) => { + const Key = await file.replace(`${rootFolder}/`, ''); + console.log(`uploading: [${Key}]`); + const uploadParams = { + Bucket: BUCKET, + Key: folderName + Key, + Body: fs.readFileSync(file), + }; + try { + await s3Client.send(new PutObjectCommand(uploadParams)); + } catch (err) { + console.error('Error', err.message); + } + }); + } + const mybucket = await mybucketList(); + const bucketExists = mybucket.some((bucket) => bucket.Name === s3Data.S3_BUCKET); + if (!bucketExists) { + console.log('The s3 bucket does not exist'); + return; + } + deploy(uploadFolder) + .then(() => { + console.log('Report files uploaded successfully to s3 Bucket'); + }) + .catch((err) => { + console.error(err.message); + }); + }, +}; diff --git a/runtime/scripts/extensions/modHeader_3_1_22_0.crx b/runtime/scripts/extensions/modHeader_3_1_22_0.crx new file mode 100644 index 00000000..0d7031b1 Binary files /dev/null and b/runtime/scripts/extensions/modHeader_3_1_22_0.crx differ diff --git a/runtime/scripts/projectList.csv b/runtime/scripts/projectList.csv new file mode 100644 index 00000000..432e114d --- /dev/null +++ b/runtime/scripts/projectList.csv @@ -0,0 +1,3 @@ +Projects,Branch,Folder +klassi-example-test-suite, master +newTest-suite,main diff --git a/runtime/scripts/s3ReportSample b/runtime/scripts/s3ReportSample new file mode 100644 index 00000000..8f007168 --- /dev/null +++ b/runtime/scripts/s3ReportSample @@ -0,0 +1,120 @@ + + + + + + Automated Test Report + + + + +

Daily test report:

+ +

Please find below the links to the test reports.

+ + <-- browser_test_output --> + <-- browser_test_output --> + <-- browser_test_output --> + <-- browser_test_output --> + <-- browser_test_output --> + <-- browser_test_output --> + + + + + + \ No newline at end of file diff --git a/runtime/scripts/tagList.json b/runtime/scripts/tagList.json new file mode 100644 index 00000000..bc9f00be --- /dev/null +++ b/runtime/scripts/tagList.json @@ -0,0 +1,11 @@ +{ + "tagNames": [ + "@api", + "@tapi", + "@get", + "@put", + "@post", + "@delete", + "@s3load" + ] +} diff --git a/runtime/world.js b/runtime/world.js index 4939dcc1..bdc9537a 100755 --- a/runtime/world.js +++ b/runtime/world.js @@ -1,333 +1,222 @@ /** - KlassiTech Automated Testing Tool - Created by Larry Goddard - */ -/** - Copyright © klassitech 2016 - Larry Goddard - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -'use strict'; + * klassi-js + * Copyright © 2016 - Larry Goddard -/** - * world.js is loaded by the cucumber framework before loading the step definitions and feature files - * it is responsible for setting up and exposing the driver/browser/expect/assert etc required within each step - * definition - */ -const fs = require('fs'), - path = require('path'), - requireDir = require('require-dir'), - merge = require('merge'), - chalk = require('chalk'), - dir = require('node-dir'), - chai = require('chai'), - reporter = require('cucumber-html-reporter'), - rp = require('request-promise'), - program = require('commander'); - -const assert = chai.assert, - expect = chai.expect, - log = require('./logger').klassiLog(); - -const getRemote = require('./getRemote.js'); - -/** - * Adding logging + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ -global.log = log; +const { setDefaultTimeout, Before } = require('@cucumber/cucumber'); +const getRemote = require('./getRemote'); +const { filterQuietTags } = require('../cucumber'); /** * This is the Global date functionality */ -global.date = require('./helpers').currentDate(); +global.date = helpers.currentDate(); /** - * for all API test calls - * @type {Function} + * Driver environment variables + * @type {function(*): {}} */ -global.request = rp; +const ChromeDriver = require('./drivers/chromeDriver'); +const FirefoxDriver = require('./drivers/firefoxDriver'); +const AndroidDriver = require('./drivers/androidDriver'); +const iOSDriver = require('./drivers/iosDriver'); +const LambdaTestDriver = require('./drivers/lambdatestDriver'); -/** - * for the environment variables - */ -global.envConfig = require('./envConfig.json'); +const remoteService = getRemote(global.settings.remoteService); -/** - * for the Download of all file types - */ -global.downloader = require('./downloader.js'); - -/** - * for all assertions for variable testing - */ -global.assert = assert; -global.expect = expect; - -/** - * Environment variables - * @type {*|(function(): driver)} - */ -let ChromeDriver = require('./chromeDriver'), - FirefoxDriver = require('./firefoxDriver'), - BrowserStackDriver = require('./browserStackDriver'); -let remoteService = getRemote(global.settings.remoteService); - -let driver = {}; +let browser = {}; /** * create the web browser based on global let set in index.js * @returns {{}} */ async function getDriverInstance() { - let browser = global.settings.browserName; - let options = {}; - if (remoteService && remoteService.type === 'browserstack') { - let configType = global.settings.remoteConfig; - assert.isString( - configType, - 'BrowserStack requires a config type e.g. win10-chrome' - ); - driver = BrowserStackDriver(options, configType); - return driver; + let browsers = BROWSER_NAME; + const options = {}; + if (remoteService && remoteService.type === 'lambdatest') { + const configType = global.settings.remoteConfig; + assert.isString(configType, 'LambdaTest requires a config type e.g. chrome.json'); + browser = LambdaTestDriver(options, configType); + return browser; } - assert.isNotEmpty(browser, 'Browser must be defined'); - switch (browser || '') { - case 'firefox': - { - driver = FirefoxDriver(options); - } - break; - case 'chrome': - { - driver = ChromeDriver(options); - } - break; - } - return driver; + assert.isNotEmpty(browsers, 'Browser must be defined'); + + const getBrowser = { + firefox: () => (browser = FirefoxDriver(options)), + android: () => (browser = AndroidDriver(options)), + ios: () => (browser = iOSDriver(options)), + chrome: () => (browser = ChromeDriver(options)), + default: () => (browser = ChromeDriver(options)), + }; + (getBrowser[browsers] || getBrowser['default'])(); + return browser; } /** - * Global timeout - * @type {number} + * set the default timeout for all tests */ -global.DELAY_100_MILLISECOND = 100; // 100 millisecond delay -global.DELAY_200_MILLISECOND = 200; // 200 millisecond delay -global.DELAY_300_MILLISECOND = 300; // 300 millisecond delay -global.DELAY_500_MILLISECOND = 500; // 500 millisecond delay -global.DELAY_1_SECOND = 1; // 1 second delay -global.DELAY_3_SECOND = 3; // 3 second delay -global.DELAY_5_SECOND = 5; // 5 second delay -global.DELAY_10_SECOND = 10; // 10 second delay -global.DELAY_15_SECOND = 15; // 15 second delay -global.DELAY_20_SECOND = 20; // 20 second delay - -function consoleInfo() { - let args = [].slice.call(arguments), - output = chalk.bgBlue.white('\n>>>>> \n' + args + '\n<<<<<\n'); - console.log(output); -} +const globalTimeout = process.env.CUCUMBER_TIMEOUT || 180000; +setDefaultTimeout(globalTimeout); +global.timeout = globalTimeout; /** - * All Global variables - * @constructor + * create the browser before scenario if it's not instantiated and + * also exposing the world object in global variable 'cucumberThis' so that + * it can be used in arrow functions */ -const { Before, After, AfterAll, Status } = require('cucumber'); -const { Given, When, Then } = require('cucumber'); - -global.Given = Given; -global.When = When; -global.Then = Then; - -function World() { - /** - * create a list of variables to expose globally and therefore accessible within each step definition - * @type {{driver: null, webdriverio, webdrivercss: *, expect: *, assert: (*), trace: consoleInfo, - * log: log, page: {}, shared: {}}} - */ - let runtime = { - driver: {}, // the browser object - expect: global.expect, // expose chai expect to allow variable testing - assert: global.assert, // expose chai assert to allow variable testing - fs: fs, // expose fs (file system) for use globally - dir: dir, // expose dir for getting an array of files, subdirectories or both - trace: consoleInfo, // expose an info method to log output to the console in a readable/visible format - page: [], // empty page objects placeholder - shared: {}, // empty shared objects placeholder - log: global.log, // expose the log method for output to files for emailing - envConfig: global.envConfig, // expose the global environment configuration file for use when changing environment // types (i.e. dev, test, preprod) - downloader: global.downloader, // exposes the downloader for global usage - request: global.request, // exposes the request-promise for API testing - date: global.date // expose the date method for logs and reports - }; - /** - * expose properties to step definition methods via global variables - */ - Object.keys(runtime).forEach(function(key) { - /** make property/method available as a global (no this. prefix required) - */ - global[key] = runtime[key]; - }); - /** - * import page objects (after global lets have been created) - */ - if (global.paths.pageObjects && fs.existsSync(global.paths.pageObjects)) { - /** require all page objects using camelcase as object names - */ - runtime.page = requireDir(global.paths.pageObjects, { camelcase: true }); - /** - * expose globally - * @type {{}} - */ - global.page = runtime.page; - } - /** - * import shared objects from multiple paths (after global lets have been created) - */ - if ( - global.paths.sharedObjects && - Array.isArray(global.paths.sharedObjects) && - global.paths.sharedObjects.length > 0 - ) { - let allDirs = {}; - /** - * first require directories into objects by directory - */ - global.paths.sharedObjects.forEach(function(itemPath) { - if (fs.existsSync(itemPath)) { - let dir = requireDir(itemPath, { camelcase: true }); - merge(allDirs, dir); - } - }); - /** if we managed to import some directories, expose them - */ - if (Object.keys(allDirs).length > 0) { - /** expose globally - * @type {{}} - */ - global.shared = allDirs; - } - } -} +Before(function () { + global.cucumberThis = this; + global.browser = getDriverInstance(); + return browser; +}); /** - * export the "World" required by cucumber to allow it to expose methods within step def's + * start recording of the Test run time */ - -this.World = World; +global.startDateTime = helpers.getStartDateTime(); /** - * set the default timeout for all tests + * executed before each scenario */ -const { setDefaultTimeout } = require('cucumber'); - -// Add timeout based on env var. -const cucumberTimeout = process.env.CUCUMBER_TIMEOUT || 60000; -setDefaultTimeout(cucumberTimeout); - -// start recording of the Test run time -global.startDateTime = require('./helpers').getStartDateTime(); +Before(async (scenario) => { + const { browser } = global; + if (remoteService && remoteService.type === 'lambdatest') { + await browser.execute(`lambda-name=${scenario.pickle.name}`); + } +}); /** - * create the driver before scenario if it's not instantiated - */ -Before(async () => { - global.driver = getDriverInstance(); - global.browser = global.driver; // ensure standard WebDriver global also works - await driver; + * This verifies that the current scenario to be run includes the @wip or @skip tags + * and skips the test if that's the case. + */ +Before((scenario) => { + const correctMultipleTags = module.exports.skipTagValidation(); + for (const tag of scenario.pickle.tags) { + if ( + tag.name === '@wip' || + tag.name === '@skip' || + (correctMultipleTags && correctMultipleTags.includes(tag.name)) + ) { + cucumberThis.attach( + `This scenario was skipped automatically by using the @wip, @skip or a custom tag "${tag.name}" provided at runtime.` + ); + return 'skipped'; + } + } }); /** - * send email with the report to stakeholders after test run + * LambdaTest Only + * executed ONLY on failure of a scenario to get the video link + * from lambdatest when it fails for the report */ -AfterAll(async () => { - let driver = global.driver; - if (program.email) { - driver.pause(DELAY_3_SECOND).then(function() { - return helpers.klassiEmail(); - }); +After(async (scenario) => { + if (scenario.result.status === Status.FAILED && remoteService && remoteService.type === 'lambdatest') { + await helpers.ltVideo(); + // eslint-disable-next-line no-undef + const vidLink = await videoLib.getVideoId(); + cucumberThis.attach( + `video:\n ` + ); } }); /** - * compile and generate a report at the END of the test run and send an Email + * This is to control closing the browser or keeping it open after each scenario + * @returns {Promise|*} */ -AfterAll(function(done) { - let driver = global.driver; - if (global.paths.reports && fs.existsSync(global.paths.reports)) { - global.endDateTime = helpers.getEndDateTime(); - let reportOptions = { - theme: 'bootstrap', - jsonFile: path.resolve( - global.paths.reports, - global.settings.reportName + '-' + date + '.json' - ), - output: path.resolve( - global.paths.reports, - global.settings.reportName + '-' + date + '.html' - ), - reportSuiteAsScenarios: true, - launchReport: (!global.settings.disableReport), - ignoreBadJsonFile: true, - metadata: { - 'Test Started': startDateTime, - 'Test Completion': endDateTime, - 'Platform': process.platform, - 'Test Environment': process.env.NODE_ENV || 'DEVELOPMENT', - 'Browser': global.settings.remoteConfig || global.browserName, - 'Executed': remoteService && remoteService.type === 'browserstack' ? 'Remote' : 'Local' - }, - brandTitle: reportName + '-' + date, - name: projectName - }; - driver.pause(DELAY_3_SECOND).then(function() { - reporter.generate(reportOptions); - driver.pause(DELAY_3_SECOND); - }); +this.browserOpen = function () { + const { browser } = global; + if (global.browserOpen === false) { + return browser.deleteSession(); + } else { + return Promise.resolve(); } - done(); -}); +}; /** - * executed after each scenario (always closes the browser to ensure fresh tests) + * executed after each scenario - always closes the browser to ensure clean browser not cached) */ -After(async function(scenario) { - let driver = global.driver; - if (scenario.result.status === Status.FAILED) { - if (remoteService && remoteService.type === 'browserstack') { - await driver.deleteSession(); - } else { - // Comment out to do nothing | leave browser open - await driver.deleteSession(); - } - } else { - if (remoteService && remoteService.type !== 'browserstack') { - // Comment out to do nothing | leave browser open - await driver.deleteSession(); - } else { - await driver.deleteSession(); +After(async (scenario) => { + const { browser } = global; + if ( + scenario.result.status === Status.FAILED || + scenario.result.status === Status.PASSED || + scenario.result.status === Status.SKIPPED || + scenario.result.status === Status.UNKNOWN || + scenario.result.status === Status.AMBIGUOUS || + scenario.result.status === Status.UNDEFINED || + scenario.result.status === Status.PENDING + ) { + if (remoteService && remoteService.type === 'lambdatest') { + if (scenario.result.status === 'FAILED') { + await browser.execute('lambda-status=failed'); + } else if (scenario.result.status === Status.PASSED) { + await browser.execute('lambda-status=passed'); + } else if (scenario.result.status === Status.SKIPPED) { + await browser.execute('lambda-status=skipped'); + } else if (scenario.result.status === Status.UNKNOWN) { + await browser.execute('lambda-status=unknown'); + } else if (scenario.result.status === Status.AMBIGUOUS) { + await browser.execute('lambda-status=ignored'); + } else if (scenario.result.status === Status.UNDEFINED) { + await browser.execute('lambda-status=error'); + } else if (scenario.result.status === Status.PENDING) { + await browser.execute('lambda-status=skipped'); + } + return this.browserOpen(); } } + return this.browserOpen(); }); /** * get executed only if there is an error within a scenario - */ -After(function(scenario) { - let driver = global.driver; - let world = this; - if (scenario.result.status === Status.FAILED) { - return driver.takeScreenshot().then(function(screenShot) { + * will not take an image if it's an API test + */ +After(async function (scenario) { + const { browser } = global; + const world = this; + let result = await filterQuietTags(); + const taglist = resultingString.split(','); + if (!taglist.some((tag) => result.includes(tag)) && scenario.result.status === Status.FAILED) { + return browser.takeScreenshot().then((screenShot) => { + // screenShot is a base-64 encoded PNG world.attach(screenShot, 'image/png'); }); } }); + +/** + * this allows for the skipping of scenarios based on tags + * @returns {*|null} + */ +function skipTagValidation() { + let multipleTags; + if (!skipTag || skipTag.length === 0) { + return null; + } + // eslint-disable-next-line no-undef + const correctFeatureTags = getTagsFromFeatureFiles; + multipleTags = skipTag.split(','); + const correctTags = []; + for (const tag of multipleTags) { + if (!tag || tag.length === 0) { + continue; + } + if (tag[0] !== '@') { + console.error(`Error: the tag should start with an @ symbol. The skipTag provided was "${tag}". `); + continue; + } + if (!correctFeatureTags.includes(tag)) { + console.error('Error: the requested tag does not exist ===> ', tag); + continue; + } + correctTags.push(tag); + } + return correctTags.length !== 0 ? correctTags : null; +} + +module.exports = { skipTagValidation }; diff --git a/scripts/ci/browserstack-local.sh b/scripts/ci/browserstack-local.sh deleted file mode 100755 index 71fef9b5..00000000 --- a/scripts/ci/browserstack-local.sh +++ /dev/null @@ -1,59 +0,0 @@ - -#!/bin/bash - -set -eo pipefail - -if [ -z "$BROWSERSTACK_ACCESS_KEY" ]; then - echo "Ensure BROWSERSTACK_ACCESS_KEY is set" - exit 2 -fi - -if [ -z "$BROWSERSTACK_LOCAL_IDENTIFIER" ]; then - echo "Ensure BROWSERSTACK_LOCAL_IDENTIFIER is set" - exit 1 -fi - -set -u - -BROWSERSTACK_LOCAL_PROGRAM=/usr/local/bin/BrowserStackLocal -BROWSERSTACK_LOCAL_PID_NAME=browserstack-local -BROWSERSTACK_LOCAL_LOG_FILE=browserstack-local.log - -case "$1" in - start) - echo "Starting BrowserStackLocal" - echo "" - - $BROWSERSTACK_LOCAL_PROGRAM \ - --daemon start \ - --key $BROWSERSTACK_ACCESS_KEY \ - --local-identifier $BROWSERSTACK_LOCAL_IDENTIFIER \ - --force \ - --only-automate \ - --enable-logging-for-api \ - --log-file $BROWSERSTACK_LOCAL_LOG_FILE \ - --verbose 2 | \ - tee /dev/tty | \ - jq -er 'if .state == "connected" then .pid else empty end' > ${BROWSERSTACK_LOCAL_PID_NAME}.pid - ;; - check) - pid=$(cat ${BROWSERSTACK_LOCAL_PID_NAME}.pid) || true - if [ ! -z "$pid" ]; then - echo "BrowserStackLocal is running with PID: $pid" - echo $? - else - echo "BrowserStackLocal is not running" - exit 1 - fi - ;; - stop) - echo "Stopping BrowserStackLocal"; - $BROWSERSTACK_LOCAL_PROGRAM \ - --daemon stop \ - --key $BROWSERSTACK_ACCESS_KEY - - rm -f ${BROWSERSTACK_LOCAL_PID_NAME}.pid - ;; - *) - echo "Usage : $0 start|stop";; -esac diff --git a/shared-objects/apiData.js b/shared-objects/apiData.js deleted file mode 100644 index 399b6b88..00000000 --- a/shared-objects/apiData.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports = { - url: { - api_base_url: 'http://httpbin.org/', - baseUrl: 'get' - } -}; diff --git a/shared-objects/docs/fileName.txt b/shared-objects/docs/fileName.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/shared-objects/emailData.json.template b/shared-objects/emailData.json.template deleted file mode 100644 index cf7fc288..00000000 --- a/shared-objects/emailData.json.template +++ /dev/null @@ -1,16 +0,0 @@ -{ - "Details" : { - "Name": "KlassiTech Automated Testing Tool", - "Created by": "Larry Goddard" - }, - - "auth":{ - "host": "{smtp.sitename.co.uk}", - "port": portNumber, - "user": "{user@sitename.co.uk}", - "pass": "{password}" - }, - - "nameList": "Me <{your email address}>" -} - diff --git a/shared-objects/searchData.js b/shared-objects/searchData.js deleted file mode 100644 index da96072f..00000000 --- a/shared-objects/searchData.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -module.exports = { - url: 'https://duckduckgo.com/', - elem: { - searchInput: '#search_form_input_homepage', - resultLink: '#links', - searchBtn: '#search_button_homepage' - } -}; diff --git a/step_definitions/duckDuckGo-search-steps.js b/step_definitions/duckDuckGo-search-steps.js deleted file mode 100755 index afc8f14f..00000000 --- a/step_definitions/duckDuckGo-search-steps.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -let duckDuckGoSearch = require('../page-objects/duckDuckGoSearch'); -let searchData = require('../shared-objects/searchData'); - -let shared = { searchData }; -let page = { duckDuckGoSearch }; - -Given(/^The user arrives on the duckduckgo search page$/, async () => { - await helpers.loadPage(shared.searchData.url, 10); -}); - -When(/^they input (.*)$/, async (searchWord) => { - /** use a method on the page object which also returns a promise */ - await page.duckDuckGoSearch.performSearch(searchWord); -}); - -Then(/^they should see some results$/, async () => { - /** return the promise of an element to the following then */ - await page.duckDuckGoSearch.searchResult(); -}); diff --git a/step_definitions/getMethod-step.js b/step_definitions/getMethod-step.js deleted file mode 100644 index 77a92b20..00000000 --- a/step_definitions/getMethod-step.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -let getMethod = require('../page-objects/getMethod'); -let page = { getMethod }; - -Given(/^That I make a GET call to an endPoint$/, async () => { - await page.getMethod.getCall(); -}); - -When(/^That I capture the response time$/, async () => { - await page.getMethod.resTime(); -}); - -Then(/^I expect status code of '(\d+)'$/, async (stcode) => { - await page.getMethod.staCode(stcode); -}); - -Then(/^I return the content of the API$/, async () => { - await page.getMethod.contApi(); -}); diff --git a/visual-regression-baseline/chrome/angry birds_1-0.png b/visual-regression-baseline/chrome/angry birds_1-0.png deleted file mode 100644 index 1fb935a3..00000000 Binary files a/visual-regression-baseline/chrome/angry birds_1-0.png and /dev/null differ diff --git a/visual-regression-baseline/chrome/angry birds_1-1.png b/visual-regression-baseline/chrome/angry birds_1-1.png deleted file mode 100644 index 80660be0..00000000 Binary files a/visual-regression-baseline/chrome/angry birds_1-1.png and /dev/null differ diff --git a/visual-regression-baseline/chrome/angry birds_1-2.png b/visual-regression-baseline/chrome/angry birds_1-2.png deleted file mode 100644 index d0a9a9ef..00000000 Binary files a/visual-regression-baseline/chrome/angry birds_1-2.png and /dev/null differ diff --git a/visual-regression-baseline/chrome/duckduckgo app_1-0.png b/visual-regression-baseline/chrome/duckduckgo app_1-0.png deleted file mode 100644 index 1fb935a3..00000000 Binary files a/visual-regression-baseline/chrome/duckduckgo app_1-0.png and /dev/null differ diff --git a/visual-regression-baseline/chrome/duckduckgo app_1-1.png b/visual-regression-baseline/chrome/duckduckgo app_1-1.png deleted file mode 100644 index b1c1c355..00000000 Binary files a/visual-regression-baseline/chrome/duckduckgo app_1-1.png and /dev/null differ diff --git a/visual-regression-baseline/chrome/duckduckgo app_1-2.png b/visual-regression-baseline/chrome/duckduckgo app_1-2.png deleted file mode 100644 index ffdcc2ee..00000000 Binary files a/visual-regression-baseline/chrome/duckduckgo app_1-2.png and /dev/null differ diff --git a/visual-regression-baseline/chrome/space 1999_1-0.png b/visual-regression-baseline/chrome/space 1999_1-0.png deleted file mode 100644 index 1fb935a3..00000000 Binary files a/visual-regression-baseline/chrome/space 1999_1-0.png and /dev/null differ diff --git a/visual-regression-baseline/chrome/space 1999_1-1.png b/visual-regression-baseline/chrome/space 1999_1-1.png deleted file mode 100644 index 8d89af6c..00000000 Binary files a/visual-regression-baseline/chrome/space 1999_1-1.png and /dev/null differ diff --git a/visual-regression-baseline/chrome/space 1999_1-2.png b/visual-regression-baseline/chrome/space 1999_1-2.png deleted file mode 100644 index 29220021..00000000 Binary files a/visual-regression-baseline/chrome/space 1999_1-2.png and /dev/null differ diff --git a/yarn.lock b/yarn.lock index b00224f9..a9ec471e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,152 +2,1935 @@ # yarn lockfile v1 +"@arr/every@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@arr/every/-/every-1.0.1.tgz#22fe1f8e6355beca6c7c7bde965eb15cf994387b" + integrity sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg== + +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" + integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" + integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" + integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" + integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" + integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/sha256-js" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" + integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" + integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.292.0.tgz#37c43fd2ce5bcb158aa62e3a5632045ee8a7e3cc" + integrity sha512-lf+OPptL01kvryIJy7+dvFux5KbJ6OTwLPPEekVKZ2AfEvwcVtOZWFUhyw3PJCBTVncjKB1Kjl3V/eTS3YuPXQ== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/chunked-blob-reader-native@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.292.0.tgz#143fcedfe0bc583bd089dee0d6247b22f5e0db4d" + integrity sha512-A34sBrnggm9mXPZeeEie4jDv9zHRMS0LSm85VkfrBLuYYsfsw9DxmW59wJkuo6DIm/RK04oH5+lRMt34koBgrw== + dependencies: + "@aws-sdk/util-base64" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/chunked-blob-reader@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.292.0.tgz#f3a661cf15c8bacbbc761cca8c8eb13625543eb3" + integrity sha512-ccFPnzBjLbDCmFjTXwhsfD58vtEiAjbor3A9tvnou+3Dj6RrMEGPaTu5tcw3mwWb2zh1K3HFJg6Bmb0no49TRw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/client-s3@^3.271.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.294.0.tgz#6aad75bd2fee67613b4c4c5ca4bb245c5e570f79" + integrity sha512-J0rTBpZlmeNWgpYaGM7w55Hdmh8LWfYFmb09Fr0Oee/VGFgi28p3vCCnP+ploo1TlFRdsPlGZJ7zod+m/iPeBg== + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.294.0" + "@aws-sdk/config-resolver" "3.292.0" + "@aws-sdk/credential-provider-node" "3.294.0" + "@aws-sdk/eventstream-serde-browser" "3.292.0" + "@aws-sdk/eventstream-serde-config-resolver" "3.292.0" + "@aws-sdk/eventstream-serde-node" "3.292.0" + "@aws-sdk/fetch-http-handler" "3.292.0" + "@aws-sdk/hash-blob-browser" "3.292.0" + "@aws-sdk/hash-node" "3.292.0" + "@aws-sdk/hash-stream-node" "3.292.0" + "@aws-sdk/invalid-dependency" "3.292.0" + "@aws-sdk/md5-js" "3.292.0" + "@aws-sdk/middleware-bucket-endpoint" "3.292.0" + "@aws-sdk/middleware-content-length" "3.292.0" + "@aws-sdk/middleware-endpoint" "3.292.0" + "@aws-sdk/middleware-expect-continue" "3.292.0" + "@aws-sdk/middleware-flexible-checksums" "3.292.0" + "@aws-sdk/middleware-host-header" "3.292.0" + "@aws-sdk/middleware-location-constraint" "3.292.0" + "@aws-sdk/middleware-logger" "3.292.0" + "@aws-sdk/middleware-recursion-detection" "3.292.0" + "@aws-sdk/middleware-retry" "3.293.0" + "@aws-sdk/middleware-sdk-s3" "3.292.0" + "@aws-sdk/middleware-serde" "3.292.0" + "@aws-sdk/middleware-signing" "3.292.0" + "@aws-sdk/middleware-ssec" "3.292.0" + "@aws-sdk/middleware-stack" "3.292.0" + "@aws-sdk/middleware-user-agent" "3.293.0" + "@aws-sdk/node-config-provider" "3.292.0" + "@aws-sdk/node-http-handler" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/signature-v4-multi-region" "3.292.0" + "@aws-sdk/smithy-client" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/url-parser" "3.292.0" + "@aws-sdk/util-base64" "3.292.0" + "@aws-sdk/util-body-length-browser" "3.292.0" + "@aws-sdk/util-body-length-node" "3.292.0" + "@aws-sdk/util-defaults-mode-browser" "3.292.0" + "@aws-sdk/util-defaults-mode-node" "3.292.0" + "@aws-sdk/util-endpoints" "3.293.0" + "@aws-sdk/util-retry" "3.292.0" + "@aws-sdk/util-stream-browser" "3.292.0" + "@aws-sdk/util-stream-node" "3.292.0" + "@aws-sdk/util-user-agent-browser" "3.292.0" + "@aws-sdk/util-user-agent-node" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + "@aws-sdk/util-waiter" "3.292.0" + "@aws-sdk/xml-builder" "3.292.0" + fast-xml-parser "4.1.2" + tslib "^2.3.1" + +"@aws-sdk/client-ses@^3.226.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ses/-/client-ses-3.294.0.tgz#1d42c5ddca16bbe74a21ded6cb0122b1fd0a42b5" + integrity sha512-ph+iKW5gNsYesFeJFNPXr6fcHlt5c4ZYCzDBl3TJ/TSKIIZVRqz49vbceTWN5OqkTB/9DMgEF3MC/S9H5YMZoA== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.294.0" + "@aws-sdk/config-resolver" "3.292.0" + "@aws-sdk/credential-provider-node" "3.294.0" + "@aws-sdk/fetch-http-handler" "3.292.0" + "@aws-sdk/hash-node" "3.292.0" + "@aws-sdk/invalid-dependency" "3.292.0" + "@aws-sdk/middleware-content-length" "3.292.0" + "@aws-sdk/middleware-endpoint" "3.292.0" + "@aws-sdk/middleware-host-header" "3.292.0" + "@aws-sdk/middleware-logger" "3.292.0" + "@aws-sdk/middleware-recursion-detection" "3.292.0" + "@aws-sdk/middleware-retry" "3.293.0" + "@aws-sdk/middleware-serde" "3.292.0" + "@aws-sdk/middleware-signing" "3.292.0" + "@aws-sdk/middleware-stack" "3.292.0" + "@aws-sdk/middleware-user-agent" "3.293.0" + "@aws-sdk/node-config-provider" "3.292.0" + "@aws-sdk/node-http-handler" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/smithy-client" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/url-parser" "3.292.0" + "@aws-sdk/util-base64" "3.292.0" + "@aws-sdk/util-body-length-browser" "3.292.0" + "@aws-sdk/util-body-length-node" "3.292.0" + "@aws-sdk/util-defaults-mode-browser" "3.292.0" + "@aws-sdk/util-defaults-mode-node" "3.292.0" + "@aws-sdk/util-endpoints" "3.293.0" + "@aws-sdk/util-retry" "3.292.0" + "@aws-sdk/util-user-agent-browser" "3.292.0" + "@aws-sdk/util-user-agent-node" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + "@aws-sdk/util-waiter" "3.292.0" + fast-xml-parser "4.1.2" + tslib "^2.3.1" + +"@aws-sdk/client-sso-oidc@3.294.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.294.0.tgz#eeb1689c5ee1cc77d92ea341fcd919e04d45372d" + integrity sha512-/ZfDud76MdSPJ/TxjV2xLE30XbBQDZwKQ32axwoK1eziPvrAIUBYVgpBwj+m0quhoiQhBKkg3aFl6j39AF2thw== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.292.0" + "@aws-sdk/fetch-http-handler" "3.292.0" + "@aws-sdk/hash-node" "3.292.0" + "@aws-sdk/invalid-dependency" "3.292.0" + "@aws-sdk/middleware-content-length" "3.292.0" + "@aws-sdk/middleware-endpoint" "3.292.0" + "@aws-sdk/middleware-host-header" "3.292.0" + "@aws-sdk/middleware-logger" "3.292.0" + "@aws-sdk/middleware-recursion-detection" "3.292.0" + "@aws-sdk/middleware-retry" "3.293.0" + "@aws-sdk/middleware-serde" "3.292.0" + "@aws-sdk/middleware-stack" "3.292.0" + "@aws-sdk/middleware-user-agent" "3.293.0" + "@aws-sdk/node-config-provider" "3.292.0" + "@aws-sdk/node-http-handler" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/smithy-client" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/url-parser" "3.292.0" + "@aws-sdk/util-base64" "3.292.0" + "@aws-sdk/util-body-length-browser" "3.292.0" + "@aws-sdk/util-body-length-node" "3.292.0" + "@aws-sdk/util-defaults-mode-browser" "3.292.0" + "@aws-sdk/util-defaults-mode-node" "3.292.0" + "@aws-sdk/util-endpoints" "3.293.0" + "@aws-sdk/util-retry" "3.292.0" + "@aws-sdk/util-user-agent-browser" "3.292.0" + "@aws-sdk/util-user-agent-node" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/client-sso@3.294.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.294.0.tgz#27391306759fd071fdb715ff3bb0693ae6053a84" + integrity sha512-+FuxQTi5WvnaXM5JbNLkBIzQ3An4gA0ox61N1u+3xled+nywKb1yQ7WmRpyMG5bLbkmnj3aqoo5/uskFc4c4EA== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.292.0" + "@aws-sdk/fetch-http-handler" "3.292.0" + "@aws-sdk/hash-node" "3.292.0" + "@aws-sdk/invalid-dependency" "3.292.0" + "@aws-sdk/middleware-content-length" "3.292.0" + "@aws-sdk/middleware-endpoint" "3.292.0" + "@aws-sdk/middleware-host-header" "3.292.0" + "@aws-sdk/middleware-logger" "3.292.0" + "@aws-sdk/middleware-recursion-detection" "3.292.0" + "@aws-sdk/middleware-retry" "3.293.0" + "@aws-sdk/middleware-serde" "3.292.0" + "@aws-sdk/middleware-stack" "3.292.0" + "@aws-sdk/middleware-user-agent" "3.293.0" + "@aws-sdk/node-config-provider" "3.292.0" + "@aws-sdk/node-http-handler" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/smithy-client" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/url-parser" "3.292.0" + "@aws-sdk/util-base64" "3.292.0" + "@aws-sdk/util-body-length-browser" "3.292.0" + "@aws-sdk/util-body-length-node" "3.292.0" + "@aws-sdk/util-defaults-mode-browser" "3.292.0" + "@aws-sdk/util-defaults-mode-node" "3.292.0" + "@aws-sdk/util-endpoints" "3.293.0" + "@aws-sdk/util-retry" "3.292.0" + "@aws-sdk/util-user-agent-browser" "3.292.0" + "@aws-sdk/util-user-agent-node" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/client-sts@3.294.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.294.0.tgz#1d89acb6d49d02b0840c5a8b93e1b14acfb43b23" + integrity sha512-AefqwhFjTDzelZuSYhriJbiI+GQwf2yKiKAnCt0gRj6rswewStM63Gtlhfb01sFPp+ZiqPcyQ47LqUaHp1mz/g== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.292.0" + "@aws-sdk/credential-provider-node" "3.294.0" + "@aws-sdk/fetch-http-handler" "3.292.0" + "@aws-sdk/hash-node" "3.292.0" + "@aws-sdk/invalid-dependency" "3.292.0" + "@aws-sdk/middleware-content-length" "3.292.0" + "@aws-sdk/middleware-endpoint" "3.292.0" + "@aws-sdk/middleware-host-header" "3.292.0" + "@aws-sdk/middleware-logger" "3.292.0" + "@aws-sdk/middleware-recursion-detection" "3.292.0" + "@aws-sdk/middleware-retry" "3.293.0" + "@aws-sdk/middleware-sdk-sts" "3.292.0" + "@aws-sdk/middleware-serde" "3.292.0" + "@aws-sdk/middleware-signing" "3.292.0" + "@aws-sdk/middleware-stack" "3.292.0" + "@aws-sdk/middleware-user-agent" "3.293.0" + "@aws-sdk/node-config-provider" "3.292.0" + "@aws-sdk/node-http-handler" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/smithy-client" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/url-parser" "3.292.0" + "@aws-sdk/util-base64" "3.292.0" + "@aws-sdk/util-body-length-browser" "3.292.0" + "@aws-sdk/util-body-length-node" "3.292.0" + "@aws-sdk/util-defaults-mode-browser" "3.292.0" + "@aws-sdk/util-defaults-mode-node" "3.292.0" + "@aws-sdk/util-endpoints" "3.293.0" + "@aws-sdk/util-retry" "3.292.0" + "@aws-sdk/util-user-agent-browser" "3.292.0" + "@aws-sdk/util-user-agent-node" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + fast-xml-parser "4.1.2" + tslib "^2.3.1" + +"@aws-sdk/config-resolver@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.292.0.tgz#c5c9b86a2a75aa591bc7acdbe94557367a2a7d90" + integrity sha512-cB3twnNR7vYvlt2jvw8VlA1+iv/tVzl+/S39MKqw2tepU+AbJAM0EHwb/dkf1OKSmlrnANXhshx80MHF9zL4mA== + dependencies: + "@aws-sdk/signature-v4" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-config-provider" "3.292.0" + "@aws-sdk/util-middleware" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-env@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.292.0.tgz#bde3333b7bee715c8a41113f1c6deb0e896a59da" + integrity sha512-YbafSG0ZEKE2969CJWVtUhh3hfOeLPecFVoXOtegCyAJgY5Ghtu4TsVhL4DgiGAgOC30ojAmUVQEXzd7xJF5xA== + dependencies: + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-imds@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.292.0.tgz#557e59c637c3852cac54534319c75eb015aa3081" + integrity sha512-W/peOgDSRYulgzFpUhvgi1pCm6piBz6xrVN17N4QOy+3NHBXRVMVzYk6ct2qpLPgJUSEZkcpP+Gds+bBm8ed1A== + dependencies: + "@aws-sdk/node-config-provider" "3.292.0" + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/url-parser" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-ini@3.294.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.294.0.tgz#b4ff9f5da2c46b12c61acf85caab9eb3ed5330cd" + integrity sha512-pdTPbaAb5bWA+DnuKoL2TpXeNDp6Ejpv/OYt+bw2gdzl9w5r/ZCtUTTbW+Vvejr4WL5s3c1bY96kwdqCn7iLqA== + dependencies: + "@aws-sdk/credential-provider-env" "3.292.0" + "@aws-sdk/credential-provider-imds" "3.292.0" + "@aws-sdk/credential-provider-process" "3.292.0" + "@aws-sdk/credential-provider-sso" "3.294.0" + "@aws-sdk/credential-provider-web-identity" "3.292.0" + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/shared-ini-file-loader" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-node@3.294.0", "@aws-sdk/credential-provider-node@^3.245.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.294.0.tgz#0475d63f9627e3e429cda19b8b0f164fc01437a0" + integrity sha512-zUL1Qhb4BsQIZCs/TPpG4oIYH/9YsGiS+Se1tasSGjTOLfBy7jhOZ0QIdpEeyAx/EP8blOBredM9xWfEXgiHVA== + dependencies: + "@aws-sdk/credential-provider-env" "3.292.0" + "@aws-sdk/credential-provider-imds" "3.292.0" + "@aws-sdk/credential-provider-ini" "3.294.0" + "@aws-sdk/credential-provider-process" "3.292.0" + "@aws-sdk/credential-provider-sso" "3.294.0" + "@aws-sdk/credential-provider-web-identity" "3.292.0" + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/shared-ini-file-loader" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-process@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.292.0.tgz#52caa9d46d227e02fda5807d32a177a0819eee97" + integrity sha512-CFVXuMuUvg/a4tknzRikEDwZBnKlHs1LZCpTXIGjBdUTdosoi4WNzDLzGp93ZRTtcgFz+4wirz2f7P3lC0NrQw== + dependencies: + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/shared-ini-file-loader" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-sso@3.294.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.294.0.tgz#719ad377a41c80bdf087ca11e80890c3b8cbb8f4" + integrity sha512-UxrcAA/0l7j9+3tolYcG5M61D/IE1Bjd/9H87H1i2A2BrwUUBhW1Dp/vvROEDrrywlMDG3CDF3T/7ADtTak+sg== + dependencies: + "@aws-sdk/client-sso" "3.294.0" + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/shared-ini-file-loader" "3.292.0" + "@aws-sdk/token-providers" "3.294.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-web-identity@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.292.0.tgz#60e180eadd0947891ed041f6a4574fa2074d0d4c" + integrity sha512-4DbtIEM9gGVfqYlMdYXg3XY+vBhemjB1zXIequottW8loLYM8Vuz4/uGxxKNze6evVVzowsA0wKrYclE1aj/Rg== + dependencies: + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-codec@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.292.0.tgz#6c4f34a0f7bf9113bc26f3c736fb0c023cb87e43" + integrity sha512-P0np4vhCKf/JH6I39Id8DxZR+UZzG+Br+vOrTinerMfOhzTa2229XmL8pwlMpOoxnJLMPmEDtD1KQqLslBEXtw== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-hex-encoding" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-browser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.292.0.tgz#090af8854387056e9674b8688a815b93c8548fd6" + integrity sha512-VzRbJqqE444GOuoNTxTJ1dC1IhNhA6jfHjgsI8iDRHraaEukGqsPx1vkc+byxrDEjgxKN5IqOwZ4yJWMIAozBA== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-config-resolver@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.292.0.tgz#79b1b2194a0386dae6e4134c1534e5ce62a18312" + integrity sha512-Ndx+qJyWmBCW9FSm68AGLoO4AZ0AaL/wjpJEgFF2sZBWjYe9O9PB9IGR/yuqCBTElf3YtSiFMsloikQaz2ft6g== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-node@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.292.0.tgz#2001ab936ce316aa713d69beecc133a77300d445" + integrity sha512-NFCEiNCetNye7jQfRd5y/7J9dLg9+uL57698wYeXeadlwJ8Cd/Nhsz+t7RIbP05VqshU+anXARMB1avl9oAijQ== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-universal@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.292.0.tgz#841b0488ce526f40a7f4c69b77af5ea0b7669f12" + integrity sha512-1gqZNx+S1EUpl3Tq6uIesiDx8gnkpXqPsFfCZT7lSWWXBpnHmnUZAh3jbiO9UlQbYuB9SfT0EBKb1iOY9z4j1Q== + dependencies: + "@aws-sdk/eventstream-codec" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/fetch-http-handler@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.292.0.tgz#a99d915e019e888bfdfa3e5da68606bfc4c80522" + integrity sha512-zh3bhUJbL8RSa39ZKDcy+AghtUkIP8LwcNlwRIoxMQh3Row4D1s4fCq0KZCx98NJBEXoiTLyTQlZxxI//BOb1Q== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/querystring-builder" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-base64" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/hash-blob-browser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.292.0.tgz#d62d8556877f0823fdcc3f08dac634389219e62e" + integrity sha512-4+Fm4IOkxGqgx8dU0EbExCq6xx30y369ZSXz89h9YDQYdJ2Muw7iNCHAg/4VM+gfp0vo9J8zPOTsSju8LNS5Jg== + dependencies: + "@aws-sdk/chunked-blob-reader" "3.292.0" + "@aws-sdk/chunked-blob-reader-native" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/hash-node@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.292.0.tgz#4f62e36a7cdefd0f4bca4c1d16261d36a4596442" + integrity sha512-1yLxmIsvE+eK36JXEgEIouTITdykQLVhsA5Oai//Lar6Ddgu1sFpLDbdkMtKbrh4I0jLN9RacNCkeVQjZPTCCQ== + dependencies: + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-buffer-from" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/hash-stream-node@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.292.0.tgz#1a5c17c322bd02f5a14046a10a664c4d96cd06de" + integrity sha512-p2nj9A5lZKQU45Q4Od3iZDvpziEpojAyuyAI0HPzpIuJIfzFQ0/7pMBKde1li6wq93rpyFLwNufV6FEZnKCYRg== + dependencies: + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/invalid-dependency@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.292.0.tgz#0e5b47cacf459db6ae8dddc02d613a5bd0ff3555" + integrity sha512-39OUV78CD3TmEbjhpt+V+Fk4wAGWhixqHxDSN8+4WL0uB4Fl7k5m3Z9hNY78AttHQSl2twR7WtLztnXPAFsriw== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/is-array-buffer@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.292.0.tgz#d599c7ad4ad104918d52b8d2160091ca5b0a1971" + integrity sha512-kW/G5T/fzI0sJH5foZG6XJiNCevXqKLxV50qIT4B1pMuw7regd4ALIy0HwSqj1nnn9mSbRWBfmby0jWCJsMcwg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/md5-js@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.292.0.tgz#740b4e6bbe24a41fefb78f93f436da55e438555d" + integrity sha512-ngfsKLgQenXW3EbsDf47PVNys1SecTbsq6k88h7+Aa8BU49+9ZOIz4VDpWuPiNyYpeV7jJdl1dfD+ujOYvvgNw== + dependencies: + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-bucket-endpoint@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.292.0.tgz#28f7bfc3dfeef43598dee96aa597cadee060a117" + integrity sha512-XRy9RSUIRcbxYfH504ywhQllgfdf3wVhk2k0mMPYnUbeEhAFe1/eUog2v/bi07/q5TQ4Hppi+W3nHCVualQEow== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-arn-parser" "3.292.0" + "@aws-sdk/util-config-provider" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-content-length@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.292.0.tgz#f2035aee536abf553b743202879ee86171c4c3c7" + integrity sha512-2gMWzQus5mj14menolpPDbYBeaOYcj7KNFZOjTjjI3iQ0KqyetG6XasirNrcJ/8QX1BRmpTol8Xjp2Ue3Gbzwg== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-endpoint@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.292.0.tgz#c6809a2e001ab03cac223dfae48439e893da627b" + integrity sha512-cPMkiSxpZGG6tYlW4OS+ucS6r43f9ddX9kcUoemJCY10MOuogdPjulCAjE0HTs2PLKSOrrG4CTP4Q4wWDrH4Bw== + dependencies: + "@aws-sdk/middleware-serde" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/signature-v4" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/url-parser" "3.292.0" + "@aws-sdk/util-config-provider" "3.292.0" + "@aws-sdk/util-middleware" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-expect-continue@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.292.0.tgz#11edbf77d741ab169a469c918bb4b39dd9604438" + integrity sha512-bZ2bsBud3E6BebZWGxVcWxBSg09bP0KyX8PT0jI66JM0yTbZSJhoGhlKAqfNG46R9h4K5tCYB2uYgV/3oU/ZpQ== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-flexible-checksums@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.292.0.tgz#f9a52631d65ead667457c57bcf435c2fcee72d13" + integrity sha512-AxU/Gb+TRdl/0jHmbreYh3QnB0jR25zgjPZ4/JbGBJ2SQI9jm3LCNK9XOrPUmZp/vu9wsvyxtmKQidpQ5+FX5w== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/is-array-buffer" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-host-header@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.292.0.tgz#513b011fcabedf29e0a6706a4aa3867bc7d813e4" + integrity sha512-mHuCWe3Yg2S5YZ7mB7sKU6C97XspfqrimWjMW9pfV2usAvLA3R0HrB03jpR5vpZ3P4q7HB6wK3S6CjYMGGRNag== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-location-constraint@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.292.0.tgz#3b138685854cfbf48abd70c40cd56a09a74cab9a" + integrity sha512-WTbMyoCckdkmq7Yok0gI4226gTmxP/zM1fbFiC+liZXBJ+H5EvIFmu30tWbX+4m41LL/XQVm65olXJFwhoExGQ== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-logger@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.292.0.tgz#dd5ca0f20b06b1b74f918ddf0264ece1e9887aa1" + integrity sha512-yZNY1XYmG3NG+uonET7jzKXNiwu61xm/ZZ6i/l51SusuaYN+qQtTAhOFsieQqTehF9kP4FzbsWgPDwD8ZZX9lw== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-recursion-detection@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.292.0.tgz#d422bbc9efa2df2481ad56d0db553b0c0652e615" + integrity sha512-kA3VZpPko0Zqd7CYPTKAxhjEv0HJqFu2054L04dde1JLr43ro+2MTdX7vsHzeAFUVRphqatFFofCumvXmU6Mig== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-retry@3.293.0": + version "3.293.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.293.0.tgz#e7706c926cce1f21e5dbea2ab8d2828e50d6a303" + integrity sha512-7tiaz2GzRecNHaZ6YnF+Nrtk3au8qF6oiipf11R7MJiqJ0fkMLnz/iRrlakDziS9qF/a9v+3yxb4W4NHK3f4Tw== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/service-error-classification" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-middleware" "3.292.0" + "@aws-sdk/util-retry" "3.292.0" + tslib "^2.3.1" + uuid "^8.3.2" + +"@aws-sdk/middleware-sdk-s3@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.292.0.tgz#ba921fd85417d7bc16423669234c4dbb42b0982e" + integrity sha512-kEUmh3ZM34H+2bEQfpZhVotJCNYpSbq9Q4YxlWVbnjiO/VS+S9BFEM3Fcj5+EzEgI02tNNi6/qTXj3iS8tT6hA== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-arn-parser" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-sdk-sts@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.292.0.tgz#927cecb0167b84aceddc959039f368ea2a593e87" + integrity sha512-GN5ZHEqXZqDi+HkVbaXRX9HaW/vA5rikYpWKYsmxTUZ7fB7ijvEO3co3lleJv2C+iGYRtUIHC4wYNB5xgoTCxg== + dependencies: + "@aws-sdk/middleware-signing" "3.292.0" + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/signature-v4" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-serde@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.292.0.tgz#4834ee9b03c50e11349306753c27086bac4dac08" + integrity sha512-6hN9mTQwSvV8EcGvtXbS/MpK7WMCokUku5Wu7X24UwCNMVkoRHLIkYcxHcvBTwttuOU0d8hph1/lIX4dkLwkQw== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-signing@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.292.0.tgz#51868199d23d28d264a06adcec52373c8da88c85" + integrity sha512-GVfoSjDjEQ4TaO6x9MffyP3uRV+2KcS5FtexLCYOM9pJcnE9tqq9FJOrZ1xl1g+YjUVKxo4x8lu3tpEtIb17qg== + dependencies: + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/signature-v4" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-middleware" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-ssec@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.292.0.tgz#c42a7b6a9b0e1a197d9fd6a9f497f10f785fcfd0" + integrity sha512-VfwrTEs9nYU6sCnt/cffhnJ2djGkMyMbBEysMZm2HEbFMloGKBd0Wtvk9y+SWPa6+DDRe2CqqX8jMzrO4JT4Eg== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-stack@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.292.0.tgz#279f4b688d91f9757cedd5311ae86ad6e3e6ac63" + integrity sha512-WdQpRkuMysrEwrkByCM1qCn2PPpFGGQ2iXqaFha5RzCdZDlxJni9cVNb6HzWUcgjLEYVTXCmOR9Wxm3CNW44Qg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/middleware-user-agent@3.293.0": + version "3.293.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.293.0.tgz#ce802bc73c5d4db043b5454e894e4dd1663442b2" + integrity sha512-gZ7/e6XwpKk9mvgA78q4Ffc796jTn02TUKx2qMDnkLVbeJXBNN2jnvYEKq8v70+o7fd/ALRudg8gBDmkkhM/Hw== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-endpoints" "3.293.0" + tslib "^2.3.1" + +"@aws-sdk/node-config-provider@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.292.0.tgz#52817db9e056fedb967704b156fde4b5516dacf1" + integrity sha512-S3NnC9dQ5GIbJYSDIldZb4zdpCOEua1tM7bjYL3VS5uqCEM93kIi/o/UkIUveMp/eqTS2LJa5HjNIz5Te6je0A== + dependencies: + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/shared-ini-file-loader" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/node-http-handler@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.292.0.tgz#f7a8fca359932ba56acf65eafd169db9d2cebc9d" + integrity sha512-L/E3UDSwXLXjt1XWWh0RBD55F+aZI1AEdPwdES9i1PjnZLyuxuDhEDptVibNN56+I9/4Q3SbmuVRVlOD0uzBag== + dependencies: + "@aws-sdk/abort-controller" "3.292.0" + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/querystring-builder" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/property-provider@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.292.0.tgz#2bdf9f6e15521350936636107a2057a19c1e55ec" + integrity sha512-dHArSvsiqhno/g55N815gXmAMrmN8DP7OeFNqJ4wJG42xsF2PFN3DAsjIuHuXMwu+7A3R1LHqIpvv0hA9KeoJQ== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/protocol-http@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.292.0.tgz#1829036bdec59698f44daadb590e3fa552494955" + integrity sha512-NLi4fq3k41aXIh1I97yX0JTy+3p6aW1NdwFwdMa674z86QNfb4SfRQRZBQe9wEnAZ/eWHVnlKIuII+U1URk/Kg== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-builder@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.292.0.tgz#a2fd9c2540a80718fb2f52c606926f8d2e08a695" + integrity sha512-XElIFJaReIm24eEvBtV2dOtZvcm3gXsGu/ftG8MLJKbKXFKpAP1q+K6En0Bs7/T88voKghKdKpKT+eZUWgTqlg== + dependencies: + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-uri-escape" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-parser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.292.0.tgz#32645c834b4dd1660176bf0b6df201d688242c66" + integrity sha512-iTYpYo7a8X9RxiPbjjewIpm6XQPx2EOcF1dWCPRII9EFlmZ4bwnX+PDI36fIo9oVs8TIKXmwNGODU9nsg7CSAw== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/service-error-classification@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.292.0.tgz#8fef4ee8e553218234eca91dd479902092b12bac" + integrity sha512-X1k3sixCeC45XSNHBe+kRBQBwPDyTFtFITb8O5Qw4dS9XWGhrUJT4CX0qE5aj8qP3F9U5nRizs9c2mBVVP0Caw== + +"@aws-sdk/shared-ini-file-loader@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.292.0.tgz#08260536116c4e0b44ebd0d0bd197ff15815090f" + integrity sha512-Av2TTYg1Jig2kbkD56ybiqZJB6vVrYjv1W5UQwY/q3nA/T2mcrgQ20ByCOt5Bv9VvY7FSgC+znj+L4a7RLGmBg== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/signature-v4-multi-region@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.292.0.tgz#01734775497474476d84733114b3eb129a48759e" + integrity sha512-MjWEIjbAr7n9vsFeLpoRzNSYFgWOROf1mLj6Db8TfRowaortUBO7PbleLV4n3SPujSnxhaVBzlmnCY2AjatH9g== + dependencies: + "@aws-sdk/protocol-http" "3.292.0" + "@aws-sdk/signature-v4" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-arn-parser" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/signature-v4@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.292.0.tgz#1fbb9ceea4c80c079b64f836af365985970f2a5f" + integrity sha512-+rw47VY5mvBecn13tDQTl1ipGWg5tE63faWgmZe68HoBL87ZiDzsd7bUKOvjfW21iMgWlwAppkaNNQayYRb2zg== + dependencies: + "@aws-sdk/is-array-buffer" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-hex-encoding" "3.292.0" + "@aws-sdk/util-middleware" "3.292.0" + "@aws-sdk/util-uri-escape" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/smithy-client@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.292.0.tgz#232b7bac2115d52390057bab6a79d14cffe06698" + integrity sha512-S8PKzjPkZ6SXYZuZiU787dMsvQ0d/LFEhw2OI4Oe2An9Fc2IwJ2FYukyHoQJOV2tV0DiuMebPo7eMyQyjKElvA== + dependencies: + "@aws-sdk/middleware-stack" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/token-providers@3.294.0": + version "3.294.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.294.0.tgz#cac10f395f89680fda464015723439bcdabc0903" + integrity sha512-6nwO04LtC5f4AsUvGZXyjaswuEK4Rr2VsuANpMKrPCgunRfI58a8YXLniudOSXN6e7CFJ6M3uo/h5YXqtnzGug== + dependencies: + "@aws-sdk/client-sso-oidc" "3.294.0" + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/shared-ini-file-loader" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/types@3.292.0", "@aws-sdk/types@^3.222.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.292.0.tgz#54aa7347123116ac368f08df5e02954207328c63" + integrity sha512-1teYAY2M73UXZxMAxqZxVS2qwXjQh0OWtt7qyLfha0TtIk/fZ1hRwFgxbDCHUFcdNBSOSbKH/ESor90KROXLCQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/url-parser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.292.0.tgz#b8b81d1c099e248813afbc33206e24b97f14228a" + integrity sha512-NZeAuZCk1x6TIiWuRfbOU6wHPBhf0ly2qOHzWut4BCH+b4RrDmFF8EmXcH1auEfGhE7yRyR6XqIN0t3S+hYACA== + dependencies: + "@aws-sdk/querystring-parser" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-arn-parser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.292.0.tgz#079e866585ebb19aeb50fe01712e384ef90e80b0" + integrity sha512-xfE4U94TfjMC2WNNDte/kDByf16GrQKaS0BKsm+Fk/PaeHUofEp8suOEz/EVdEoa3Ayy2Uc5QdhrGnlqf8MxeA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-base64@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.292.0.tgz#b07fc9752edad18b32ad4b1cc752b5df2d133377" + integrity sha512-zjNCwNdy617yFvEjZorepNWXB2sQCVfsShCwFy/kIQ5iW5tT2jQKaqc0K77diU9atkooxw9p1W9m9sOgrkOFNw== + dependencies: + "@aws-sdk/util-buffer-from" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-body-length-browser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.292.0.tgz#1baefd126c8881ff140c83111aeb79c6d5b21cb3" + integrity sha512-Wd/BM+JsMiKvKs/bN3z6TredVEHh2pKudGfg3CSjTRpqFpOG903KDfyHBD42yg5PuCHoHoewJvTPKwgn7/vhaw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-body-length-node@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.292.0.tgz#9f3f91c80e9b4e2afb226550e9a0b3acde8bcd02" + integrity sha512-BBgipZ2P6RhogWE/qj0oqpdlyd3iSBYmb+aD/TBXwB2lA/X8A99GxweBd/kp06AmcJRoMS9WIXgbWkiiBlRlSA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-buffer-from@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.292.0.tgz#b2d0eff4e63b0cc8a5d5dc133b76c3fe3daee2fc" + integrity sha512-RxNZjLoXNxHconH9TYsk5RaEBjSgTtozHeyIdacaHPj5vlQKi4hgL2hIfKeeNiAfQEVjaUFF29lv81xpNMzVMQ== + dependencies: + "@aws-sdk/is-array-buffer" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-config-provider@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.292.0.tgz#6a9c7b7e29028135862ba880c615e2f975d68c6d" + integrity sha512-t3noYll6bPRSxeeNNEkC5czVjAiTPcsq00OwfJ2xyUqmquhLEfLwoJKmrT1uP7DjIEXdUtfoIQ2jWiIVm/oO5A== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-browser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.292.0.tgz#8890ee4ff8939c9ada363cae14ec7196269ff14c" + integrity sha512-7+zVUlMGfa8/KT++9humHo6IDxTnxMCmWUj5jVNlkpk6h7Ecmppf7aXotviyVIA43lhtz0p2AErs0N0ekEUK+w== + dependencies: + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/types" "3.292.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-node@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.292.0.tgz#fc7f54cd935b8974d1b16d6c8bed8b9ae99af20e" + integrity sha512-SSIw85eF4BVs0fOJRyshT+R3b/UmBPhiVKCUZm2rq6+lIGkDPiSwQU3d/80AhXtiL5SFT/IzAKKgQd8qMa7q3A== + dependencies: + "@aws-sdk/config-resolver" "3.292.0" + "@aws-sdk/credential-provider-imds" "3.292.0" + "@aws-sdk/node-config-provider" "3.292.0" + "@aws-sdk/property-provider" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-endpoints@3.293.0": + version "3.293.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.293.0.tgz#fd3ecd35a84b91a8ba1672f6e2e92cf39ef205ba" + integrity sha512-R/99aNV49Refpv5guiUjEUrZYlvnfaNBniB+/ZtMO3ixxUopapssCrUivuJrmhccmrYaTCZw7dRzIWjU1jJhKg== + dependencies: + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-hex-encoding@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.292.0.tgz#a8b8b989fcf518a18606cb6d81f90d92b0660db4" + integrity sha512-qBd5KFIUywQ3qSSbj814S2srk0vfv8A6QMI+Obs1y2LHZFdQN5zViptI4UhXhKOHe+NnrHWxSuLC/LMH6q3SmA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.292.0.tgz#cba0911be4fdf1db31a0b379cc6229a5a0ba1ae0" + integrity sha512-6xnFJXZI9pKw5lQCDvuWA5PnOaUtNRKWwdxvGkkLx5orboFaoVMS6zowjSQxwVNRjW82u6dYNkhmj9mZ8VSjWg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-middleware@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.292.0.tgz#d4819246c66229df405850004d9e3ae4a6fca8ea" + integrity sha512-KjhS7flfoBKDxbiBZjLjMvEizXgjfQb7GQEItgzGoI9rfGCmZtvqCcqQQoIlxb8bIzGRggAUHtBGWnlLbpb+GQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-retry@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.292.0.tgz#a72dd74760864aa03feb00f2cee8b97c25c297c4" + integrity sha512-JEHyF7MpVeRF5uR4LDYgpOKcFpOPiAj8TqN46SVOQQcL1K+V7cSr7O7N7J6MwJaN9XOzAcBadeIupMm7/BFbgw== + dependencies: + "@aws-sdk/service-error-classification" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-stream-browser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-browser/-/util-stream-browser-3.292.0.tgz#6476fef12bea839ef25b80c79817f3932ec019d0" + integrity sha512-yzwpjq18oefyp/Sv+Z0VWh7ziRPp+qM0pDUrTfuAnXg+mrlxaPDXJOhp5LoY8AVHcDPOEdIbzz0b00G48FabIg== + dependencies: + "@aws-sdk/fetch-http-handler" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-base64" "3.292.0" + "@aws-sdk/util-hex-encoding" "3.292.0" + "@aws-sdk/util-utf8" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-stream-node@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-node/-/util-stream-node-3.292.0.tgz#4a83004729cdc4a8fb03c96921f59939ffc31d3b" + integrity sha512-p3DHXvWo4Zdka75HwewUnWjpFp/gOT4SYYEOAsv3BwuZGxfmnojK9OVCkUBJ7s6LeHMKTgGqQPwAnVFu7iIZNg== + dependencies: + "@aws-sdk/node-http-handler" "3.292.0" + "@aws-sdk/types" "3.292.0" + "@aws-sdk/util-buffer-from" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-uri-escape@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.292.0.tgz#306a36e3574af3509c542c7224669082f6abc633" + integrity sha512-hOQtUMQ4VcQ9iwKz50AoCp1XBD5gJ9nly/gJZccAM7zSA5mOO8RRKkbdonqquVHxrO0CnYgiFeCh3V35GFecUw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-browser@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.292.0.tgz#26c4e5ffbe046cebe9d15c357839ea38ada95c56" + integrity sha512-dld+lpC3QdmTQHdBWJ0WFDkXDSrJgfz03q6mQ8+7H+BC12ZhT0I0g9iuvUjolqy7QR00OxOy47Y9FVhq8EC0Gg== + dependencies: + "@aws-sdk/types" "3.292.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-node@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.292.0.tgz#9065307641eb246f32fee78eec5d961cffbba6a9" + integrity sha512-f+NfIMal5E61MDc5WGhUEoicr7b1eNNhA+GgVdSB/Hg5fYhEZvFK9RZizH5rrtsLjjgcr9nPYSR7/nDKCJLumw== + dependencies: + "@aws-sdk/node-config-provider" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.292.0.tgz#c12049a01de36f1133232f95cbb0c0177e8d3c36" + integrity sha512-FPkj+Z59/DQWvoVu2wFaRncc3KVwe/pgK3MfVb0Lx+Ibey5KUx+sNpJmYcVYHUAe/Nv/JeIpOtYuC96IXOnI6w== + dependencies: + "@aws-sdk/util-buffer-from" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/util-waiter@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.292.0.tgz#860b6615f1d5d0cd545b2d5fefd0bb3c03b0a32d" + integrity sha512-+7j+mcWUY4GwU8nTK4MvLWpOzS34SJZL85qLxQ04pysoCSHkInyS51D1ejBVNlJdbUSFvIcU0WHU0y6MDDeJzg== + dependencies: + "@aws-sdk/abort-controller" "3.292.0" + "@aws-sdk/types" "3.292.0" + tslib "^2.3.1" + +"@aws-sdk/xml-builder@3.292.0": + version "3.292.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.292.0.tgz#1c53b6b4eac1b841bd5a4581289791c46cd39743" + integrity sha512-0zgnhdwUy30q/1NPXi5ekdzHQqCs3ZJaUeGbvYMO54osi4K5hygAyTsyWtv6oaJggRqZrB0LAZ9xN6hG+sA8/g== + dependencies: + tslib "^2.3.1" + "@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/highlight" "^7.0.0" + "@babel/highlight" "^7.18.6" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/polyfill@^7.2.3": - version "7.2.5" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d" - integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug== +"@babel/runtime@^7.15.4": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== dependencies: - core-js "^2.5.7" - regenerator-runtime "^0.12.0" + regenerator-runtime "^0.13.11" -"@wdio/config@^5.7.2": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@wdio/config/-/config-5.7.2.tgz#d8998d1b1d60361bd3f79fad31b5459796d59957" - integrity sha512-CPkrj15A4Gyo7/nU2wBXtt5DrmIrkU1m+xIMt/eii/P+4UsfI7mr4cW0jtGK3arlxBdvsRyZam727L5LmKLIdw== +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@commitlint/cli@^17.2.0": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.4.4.tgz#36df08bfa31dbb9a2b6b1d7187a31e578f001a06" + integrity sha512-HwKlD7CPVMVGTAeFZylVNy14Vm5POVY0WxPkZr7EXLC/os0LH/obs6z4HRvJtH/nHCMYBvUBQhGwnufKfTjd5g== + dependencies: + "@commitlint/format" "^17.4.4" + "@commitlint/lint" "^17.4.4" + "@commitlint/load" "^17.4.4" + "@commitlint/read" "^17.4.4" + "@commitlint/types" "^17.4.4" + execa "^5.0.0" + lodash.isfunction "^3.0.9" + resolve-from "5.0.0" + resolve-global "1.0.0" + yargs "^17.0.0" + +"@commitlint/config-conventional@^17.2.0": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.4.4.tgz#f30b1e5b2e48ce5799a483c200c52f218a98efcc" + integrity sha512-u6ztvxqzi6NuhrcEDR7a+z0yrh11elY66nRrQIpqsqW6sZmpxYkDLtpRH8jRML+mmxYQ8s4qqF06Q/IQx5aJeQ== + dependencies: + conventional-changelog-conventionalcommits "^5.0.0" + +"@commitlint/config-validator@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.4.4.tgz#d0742705719559a101d2ee49c0c514044af6d64d" + integrity sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg== + dependencies: + "@commitlint/types" "^17.4.4" + ajv "^8.11.0" + +"@commitlint/ensure@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-17.4.4.tgz#a36e7719bdb9c2b86c8b8c2e852b463a7bfda5fa" + integrity sha512-AHsFCNh8hbhJiuZ2qHv/m59W/GRE9UeOXbkOqxYMNNg9pJ7qELnFcwj5oYpa6vzTSHtPGKf3C2yUFNy1GGHq6g== + dependencies: + "@commitlint/types" "^17.4.4" + lodash.camelcase "^4.3.0" + lodash.kebabcase "^4.1.1" + lodash.snakecase "^4.1.1" + lodash.startcase "^4.4.0" + lodash.upperfirst "^4.3.1" + +"@commitlint/execute-rule@^17.4.0": + version "17.4.0" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz#4518e77958893d0a5835babe65bf87e2638f6939" + integrity sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA== + +"@commitlint/format@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-17.4.4.tgz#0f6e1b4d7a301c7b1dfd4b6334edd97fc050b9f5" + integrity sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ== + dependencies: + "@commitlint/types" "^17.4.4" + chalk "^4.1.0" + +"@commitlint/is-ignored@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.4.4.tgz#82e03f1abe2de2c0c8c162a250b8d466225e922b" + integrity sha512-Y3eo1SFJ2JQDik4rWkBC4tlRIxlXEFrRWxcyrzb1PUT2k3kZ/XGNuCDfk/u0bU2/yS0tOA/mTjFsV+C4qyACHw== + dependencies: + "@commitlint/types" "^17.4.4" + semver "7.3.8" + +"@commitlint/lint@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.4.4.tgz#0ecd70b44ec5f4823c2e00e0c4b04ebd41d42856" + integrity sha512-qgkCRRFjyhbMDWsti/5jRYVJkgYZj4r+ZmweZObnbYqPUl5UKLWMf9a/ZZisOI4JfiPmRktYRZ2JmqlSvg+ccw== + dependencies: + "@commitlint/is-ignored" "^17.4.4" + "@commitlint/parse" "^17.4.4" + "@commitlint/rules" "^17.4.4" + "@commitlint/types" "^17.4.4" + +"@commitlint/load@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.4.4.tgz#13fcb553572f265339801cde6dd10ee5eea07f5e" + integrity sha512-z6uFIQ7wfKX5FGBe1AkOF4l/ShOQsaa1ml/nLMkbW7R/xF8galGS7Zh0yHvzVp/srtfS0brC+0bUfQfmpMPFVQ== + dependencies: + "@commitlint/config-validator" "^17.4.4" + "@commitlint/execute-rule" "^17.4.0" + "@commitlint/resolve-extends" "^17.4.4" + "@commitlint/types" "^17.4.4" + "@types/node" "*" + chalk "^4.1.0" + cosmiconfig "^8.0.0" + cosmiconfig-typescript-loader "^4.0.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + lodash.uniq "^4.5.0" + resolve-from "^5.0.0" + ts-node "^10.8.1" + typescript "^4.6.4" + +"@commitlint/message@^17.4.2": + version "17.4.2" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-17.4.2.tgz#f4753a79701ad6db6db21f69076e34de6580e22c" + integrity sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q== + +"@commitlint/parse@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-17.4.4.tgz#8311b12f2b730de6ea0679ae2a37b386bcc5b04b" + integrity sha512-EKzz4f49d3/OU0Fplog7nwz/lAfXMaDxtriidyGF9PtR+SRbgv4FhsfF310tKxs6EPj8Y+aWWuX3beN5s+yqGg== + dependencies: + "@commitlint/types" "^17.4.4" + conventional-changelog-angular "^5.0.11" + conventional-commits-parser "^3.2.2" + +"@commitlint/read@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-17.4.4.tgz#de6ec00aad827764153009aa54517e3df2154555" + integrity sha512-B2TvUMJKK+Svzs6eji23WXsRJ8PAD+orI44lVuVNsm5zmI7O8RSGJMvdEZEikiA4Vohfb+HevaPoWZ7PiFZ3zA== + dependencies: + "@commitlint/top-level" "^17.4.0" + "@commitlint/types" "^17.4.4" + fs-extra "^11.0.0" + git-raw-commits "^2.0.0" + minimist "^1.2.6" + +"@commitlint/resolve-extends@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.4.4.tgz#8f931467dea8c43b9fe38373e303f7c220de6fdc" + integrity sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A== + dependencies: + "@commitlint/config-validator" "^17.4.4" + "@commitlint/types" "^17.4.4" + import-fresh "^3.0.0" + lodash.mergewith "^4.6.2" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@commitlint/rules@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.4.4.tgz#9b33f41e5eb529f916396bac7c62e61f0edd6791" + integrity sha512-0tgvXnHi/mVcyR8Y8mjTFZIa/FEQXA4uEutXS/imH2v1UNkYDSEMsK/68wiXRpfW1euSgEdwRkvE1z23+yhNrQ== + dependencies: + "@commitlint/ensure" "^17.4.4" + "@commitlint/message" "^17.4.2" + "@commitlint/to-lines" "^17.4.0" + "@commitlint/types" "^17.4.4" + execa "^5.0.0" + +"@commitlint/to-lines@^17.4.0": + version "17.4.0" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-17.4.0.tgz#9bd02e911e7d4eab3fb4a50376c4c6d331e10d8d" + integrity sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg== + +"@commitlint/top-level@^17.4.0": + version "17.4.0" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-17.4.0.tgz#540cac8290044cf846fbdd99f5cc51e8ac5f27d6" + integrity sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g== + dependencies: + find-up "^5.0.0" + +"@commitlint/types@^17.4.4": + version "17.4.4" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-17.4.4.tgz#1416df936e9aad0d6a7bbc979ecc31e55dade662" + integrity sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ== + dependencies: + chalk "^4.1.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@cucumber/ci-environment@9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@cucumber/ci-environment/-/ci-environment-9.1.0.tgz#6d868141c7cfd616931f14723e122a1069401998" + integrity sha512-jdnF6APXP3GawMue8kdMxhu6TBhyRUO4KDRxTowf06NtclLjIw2Ybpo9IcIOMvE8kHukvJyM00uxWX+CfS7JgQ== + +"@cucumber/cucumber-expressions@16.1.1": + version "16.1.1" + resolved "https://registry.yarnpkg.com/@cucumber/cucumber-expressions/-/cucumber-expressions-16.1.1.tgz#5f364f39bcf33950544cca2fc3423aca8fa36ed3" + integrity sha512-Ugsb9qxfgrgfUKsGvbx0awVk+69NIFjWfxNT+dnm62YrF2gdTHYxAOzOLuPgvE0yqYTh+3otrFLDDfkHGThM1g== + dependencies: + regexp-match-indices "1.0.2" + +"@cucumber/cucumber@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@cucumber/cucumber/-/cucumber-9.1.2.tgz#b134a9b678a615a678dbd1ef84ceb72908f9e57c" + integrity sha512-0V96qH4Uozfu68vm6BY3DA8ZqbnQWgz8N3rnqw/geOG9sY05QeLUQ1PRGDZCznluqEdxt8iEu/QzoGwR7EjDcg== + dependencies: + "@cucumber/ci-environment" "9.1.0" + "@cucumber/cucumber-expressions" "16.1.1" + "@cucumber/gherkin" "26.0.3" + "@cucumber/gherkin-streams" "5.0.1" + "@cucumber/gherkin-utils" "8.0.2" + "@cucumber/html-formatter" "20.2.1" + "@cucumber/message-streams" "4.0.1" + "@cucumber/messages" "21.0.1" + "@cucumber/tag-expressions" "5.0.1" + assertion-error-formatter "^3.0.0" + capital-case "^1.0.4" + chalk "^4.1.2" + cli-table3 "0.6.3" + commander "^10.0.0" + debug "^4.3.4" + error-stack-parser "^2.1.4" + figures "^3.2.0" + glob "^7.1.6" + has-ansi "^4.0.1" + indent-string "^4.0.0" + is-installed-globally "^0.4.0" + is-stream "^2.0.0" + knuth-shuffle-seeded "^1.0.6" + lodash.merge "^4.6.2" + lodash.mergewith "^4.6.2" + luxon "3.2.1" + mkdirp "^2.1.5" + mz "^2.7.0" + progress "^2.0.3" + resolve-pkg "^2.0.0" + semver "7.3.8" + string-argv "^0.3.1" + strip-ansi "6.0.1" + supports-color "^8.1.1" + tmp "^0.2.1" + util-arity "^1.1.0" + verror "^1.10.0" + xmlbuilder "^15.1.1" + yaml "^2.2.2" + yup "^0.32.11" + +"@cucumber/gherkin-streams@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@cucumber/gherkin-streams/-/gherkin-streams-5.0.1.tgz#8c2142d295cd05644456be7282b4bd756c95c4cd" + integrity sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q== dependencies: - "@wdio/logger" "^5.7.0" - deepmerge "^2.0.1" - glob "^7.1.2" + commander "9.1.0" + source-map-support "0.5.21" -"@wdio/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@wdio/logger/-/logger-5.7.0.tgz#9c21edb53694935643a805063d322ee4fe2e57e0" - integrity sha512-QOaHzeEMvC1k5CWgQgjFwicp7ccIlDpP/zyEiYJHFGhhI3BjiIcry/HkJnZdZMzCApidkxqHMzDCj2oZ9G5jFQ== +"@cucumber/gherkin-utils@8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@cucumber/gherkin-utils/-/gherkin-utils-8.0.2.tgz#deae231f84e91f120501d22187c66d36e6c6b59f" + integrity sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A== dependencies: - chalk "^2.3.0" - loglevel "^1.6.0" - loglevel-plugin-prefix "^0.5.3" - strip-ansi "^4.0.0" + "@cucumber/gherkin" "^25.0.0" + "@cucumber/messages" "^19.1.4" + "@teppeis/multimaps" "2.0.0" + commander "9.4.1" + source-map-support "^0.5.21" -"@wdio/repl@^5.7.2": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@wdio/repl/-/repl-5.7.2.tgz#0227a80724af9c6d78c42a02917ce183c3129057" - integrity sha512-XCJ7+NiHCN1kmV/zCB+h/GWJvKJjUSSeuYjHeg82w1WZHwxpAivvozZkARu9tcPm2mtX3jemWFwxDWmDi5cbFQ== +"@cucumber/gherkin@26.0.3": + version "26.0.3" + resolved "https://registry.yarnpkg.com/@cucumber/gherkin/-/gherkin-26.0.3.tgz#6ffe37570c608caa329784161305056135a19c96" + integrity sha512-xwJHi//bLFEU1drIyw2yswwUHnnVWO4XcyVBbCTDs6DkSh262GkogFI/IWwChZqJfOXnPglzLGxR1DibcZsILA== + dependencies: + "@cucumber/messages" "19.1.4 - 21" + +"@cucumber/gherkin@^25.0.0": + version "25.0.2" + resolved "https://registry.yarnpkg.com/@cucumber/gherkin/-/gherkin-25.0.2.tgz#e430879f01978d1f9e7a7aa0563031a3a36022e7" + integrity sha512-EdsrR33Y5GjuOoe2Kq5Y9DYwgNRtUD32H4y2hCrT6+AWo7ibUQu7H+oiWTgfVhwbkHsZmksxHSxXz/AwqqyCRQ== + dependencies: + "@cucumber/messages" "^19.1.4" + +"@cucumber/html-formatter@20.2.1": + version "20.2.1" + resolved "https://registry.yarnpkg.com/@cucumber/html-formatter/-/html-formatter-20.2.1.tgz#e12ef35ae99e0a941d03eea3518103eb127f04b5" + integrity sha512-bwwyr1WjlOJ5dEFOLGbtYWbUprloB2eymqXBmmTC10s0xapZXkFn4VfHgMshaH91XiCIY/MoabWNAau3AeMHkQ== + +"@cucumber/message-streams@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@cucumber/message-streams/-/message-streams-4.0.1.tgz#a5339d3504594bb2edb5732aaae94dddb24d0970" + integrity sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA== + +"@cucumber/messages@19.1.4 - 21", "@cucumber/messages@21.0.1": + version "21.0.1" + resolved "https://registry.yarnpkg.com/@cucumber/messages/-/messages-21.0.1.tgz#1468cef60d6da4d4f540a70ab1265f6540f44f51" + integrity sha512-pGR7iURM4SF9Qp1IIpNiVQ77J9kfxMkPOEbyy+zRmGABnWWCsqMpJdfHeh9Mb3VskemVw85++e15JT0PYdcR3g== + dependencies: + "@types/uuid" "8.3.4" + class-transformer "0.5.1" + reflect-metadata "0.1.13" + uuid "9.0.0" + +"@cucumber/messages@^19.1.4": + version "19.1.4" + resolved "https://registry.yarnpkg.com/@cucumber/messages/-/messages-19.1.4.tgz#5cefc47cac3004c0bc38d42933042ec248bb747c" + integrity sha512-Pksl0pnDz2l1+L5Ug85NlG6LWrrklN9qkMxN5Mv+1XZ3T6u580dnE6mVaxjJRdcOq4tR17Pc0RqIDZMyVY1FlA== + dependencies: + "@types/uuid" "8.3.4" + class-transformer "0.5.1" + reflect-metadata "0.1.13" + uuid "9.0.0" + +"@cucumber/pretty-formatter@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@cucumber/pretty-formatter/-/pretty-formatter-1.0.0.tgz#911014c8fb7472a4c54d00e60e819a7200fd9da3" + integrity sha512-wcnIMN94HyaHGsfq72dgCvr1d8q6VGH4Y6Gl5weJ2TNZw1qn2UY85Iki4c9VdaLUONYnyYH3+178YB+9RFe/Hw== dependencies: - "@wdio/config" "^5.7.2" + ansi-styles "^5.0.0" + cli-table3 "^0.6.0" + figures "^3.2.0" + ts-dedent "^2.0.0" -acorn-jsx@^5.0.0: +"@cucumber/tag-expressions@5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + resolved "https://registry.yarnpkg.com/@cucumber/tag-expressions/-/tag-expressions-5.0.1.tgz#94ed2299eaa9085f113d71cb4da1186ad57b3de9" + integrity sha512-N43uWud8ZXuVjza423T9ZCIJsaZhFekmakt7S9bvogTxqdVGbRobjR663s0+uW0Rz9e+Pa8I6jUuWtoBLQD2Mw== -acorn@^6.0.7: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +"@eslint-community/eslint-utils@^4.2.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz#a556790523a351b4e47e9d385f47265eaaf9780a" + integrity sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA== + dependencies: + eslint-visitor-keys "^3.3.0" -adm-zip@0.4.11: - version "0.4.11" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" - integrity sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA== +"@eslint-community/regexpp@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.0.tgz#3e61c564fcd6b921cb789838631c5ee44df09403" + integrity sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ== -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== +"@eslint/eslintrc@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.1.tgz#7888fe7ec8f21bc26d646dbd2c11cd776e21192d" + integrity sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.5.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.36.0.tgz#9837f768c03a1e4a30bd304a64fb8844f0e72efe" + integrity sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg== + +"@exodus/schemasafe@^1.0.0-rc.9": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.0.0.tgz#f44e252665b1a6bdef0d686e22af3599a6f0a095" + integrity sha512-2cyupPIZI69HQxEAPllLXBjQp4njDKkOjYRCYxvMZe3/LY9pp9fBM3Tb1wiFAdP6Emo4v3OEbCLGj6u73Q5KLw== + +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@polka/url@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-0.5.0.tgz#b21510597fd601e5d7c95008b76bf0d254ebfd31" + integrity sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw== + +"@puppeteer/browsers@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-1.0.1.tgz#6c2f6fbc93cb3a587c821c3cfce0e49d99b51dd1" + integrity sha512-9wkYhON9zBgtjYRE3FcokGCfjG25zjzNAYmsHpiWitRZ/4DeT3v125/fCUU66SaPJ4nUsxGNPgpS1TOcQ+8StA== + dependencies: + debug "4.3.4" + extract-zip "2.0.1" + http-proxy-agent "5.0.0" + https-proxy-agent "5.0.1" + progress "2.0.3" + proxy-from-env "1.1.0" + tar-fs "2.1.1" + unbzip2-stream "1.4.3" + yargs "17.7.1" + +"@sindresorhus/is@^5.2.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.3.0.tgz#0ec9264cf54a527671d990eb874e030b55b70dcc" + integrity sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw== + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@teppeis/multimaps@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@teppeis/multimaps/-/multimaps-2.0.0.tgz#2114ee964b702f9777d0e07899087ad9cd89a0de" + integrity sha512-TL1adzq1HdxUf9WYduLcQ/DNGYiz71U31QRgbnr0Ef1cPyOUOsBojxHVWpFeOSUucB6Lrs0LxFRA14ntgtkc9w== + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/http-cache-semantics@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/lodash@^4.14.175": + version "4.14.191" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== + +"@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + +"@types/node@*": + version "18.15.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.3.tgz#f0b991c32cfc6a4e7f3399d6cb4b8cf9a0315014" + integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw== + +"@types/node@^20.1.0": + version "20.1.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.6.tgz#d3217f8091e27b6956dd8c61bbabf70845959e2d" + integrity sha512-9e//ooaqu7Om75fPaDW8ypEVaF6S2cbkm1enGx0PCqeQsBZ6qL4Id7jZl3GcL7Z/85bE5mi3QtwBgtMlcXV3Kg== + +"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/semver@^7.3.12": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" + integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + +"@types/uuid@8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/which@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/which/-/which-2.0.2.tgz#54541d02d6b1daee5ec01ac0d1b37cecf37db1ae" + integrity sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw== + +"@types/ws@^8.5.3": + version "8.5.4" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" + integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== + dependencies: + "@types/node" "*" + +"@types/yauzl@^2.9.1": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + dependencies: + "@types/node" "*" + +"@typescript-eslint/experimental-utils@^5.3.0": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.6.tgz#9f4d81700dcea51a107658a44992ba1e4d8b4320" + integrity sha512-UIVfEaaHggOuhgqdpFlFQ7IN9UFMCiBR/N7uPBUyUlwNdJzYfAu9m4wbOj0b59oI/HSPW1N63Q7lsvfwTQY13w== + dependencies: + "@typescript-eslint/utils" "5.59.6" + +"@typescript-eslint/scope-manager@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz#d43a3687aa4433868527cfe797eb267c6be35f19" + integrity sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ== + dependencies: + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/visitor-keys" "5.59.6" + +"@typescript-eslint/types@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.6.tgz#5a6557a772af044afe890d77c6a07e8c23c2460b" + integrity sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA== + +"@typescript-eslint/typescript-estree@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz#2fb80522687bd3825504925ea7e1b8de7bb6251b" + integrity sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA== + dependencies: + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/visitor-keys" "5.59.6" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.6.tgz#82960fe23788113fc3b1f9d4663d6773b7907839" + integrity sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.59.6" + "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/typescript-estree" "5.59.6" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.59.6": + version "5.59.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz#673fccabf28943847d0c8e9e8d008e3ada7be6bb" + integrity sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q== + dependencies: + "@typescript-eslint/types" "5.59.6" + eslint-visitor-keys "^3.3.0" + +"@wdio/config@8.10.2": + version "8.10.2" + resolved "https://registry.yarnpkg.com/@wdio/config/-/config-8.10.2.tgz#dcd2de1180ccd8970b19acb9e52d8da1f79ad1df" + integrity sha512-CBPyxay3vVlAnwF+Dv2zsM4QMOVg8rOiD1HAdm9BilwbID2RnLF5i0IYNIFsAblhSZQhXkn5BXAcFSEIVHwOgA== + dependencies: + "@wdio/logger" "8.6.6" + "@wdio/types" "8.10.2" + "@wdio/utils" "8.10.2" + decamelize "^6.0.0" + deepmerge-ts "^5.0.0" + glob "^10.2.2" + import-meta-resolve "^3.0.0" + read-pkg-up "^9.1.0" + +"@wdio/logger@8.6.6": + version "8.6.6" + resolved "https://registry.yarnpkg.com/@wdio/logger/-/logger-8.6.6.tgz#6f3844a2506730ae1e4151dca0ed0242b5b69b63" + integrity sha512-MS+Y5yqFGx2zVXMOfuBQAVdFsP4DuYz+/hM552xwiDWjGg6EZHoccqUYgH3J5zpu3JFpYV3R/a5jExFiGGck6g== + dependencies: + chalk "^5.1.2" + loglevel "^1.6.0" + loglevel-plugin-prefix "^0.8.4" + strip-ansi "^6.0.0" + +"@wdio/protocols@8.10.2": + version "8.10.2" + resolved "https://registry.yarnpkg.com/@wdio/protocols/-/protocols-8.10.2.tgz#d8a671cec91fbcd655ca604232d1b47d481ceda3" + integrity sha512-Iv7Nqq6YsMQR9qvOM2mswUcKwx7bdx3cWVSmbMc8hwGJuNCBI+BP1fzmD9OidUftd1CQNvfugsG8Vq8vQWRyGg== + +"@wdio/repl@8.10.1": + version "8.10.1" + resolved "https://registry.yarnpkg.com/@wdio/repl/-/repl-8.10.1.tgz#4f1858335d510b3a73432be163ef303aa79db362" + integrity sha512-VZ1WFHTNKjR8Ga97TtV2SZM6fvRjWbYI2i/f4pJB4PtusorKvONAMJf2LQcUBIyzbVobqr7KSrcjmSwRolI+yw== + dependencies: + "@types/node" "^20.1.0" + +"@wdio/types@8.10.2": + version "8.10.2" + resolved "https://registry.yarnpkg.com/@wdio/types/-/types-8.10.2.tgz#fceb85e68b2b82de8671d7ebd0d606ad6e2563d7" + integrity sha512-d0oWX82CVE4Z7ipD2GpPhaeFKh7JDaDNzgiQpPYkS74TBSqQV+yrqvqRlrmHD4nmRgFwnjtD8AFOo7ackeURhg== + dependencies: + "@types/node" "^20.1.0" + +"@wdio/utils@8.10.2": + version "8.10.2" + resolved "https://registry.yarnpkg.com/@wdio/utils/-/utils-8.10.2.tgz#5e88fd04e8c475843121fd63a7b4fe1c64b41cbc" + integrity sha512-lMIqztb4Mmi2arsM089SDfubx9v0/a/7Ul+vMOt7P19ZEogiWnbELmIs/CaVOxjEcgaNjXM2s56ORKnAObJfgg== + dependencies: + "@wdio/logger" "8.6.6" + "@wdio/types" "8.10.2" + import-meta-resolve "^3.0.0" + p-iteration "^1.1.8" + +JSONStream@^1.0.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1, acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - es6-promisify "^5.0.0" + debug "4" -ajv@^6.5.5, ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: - fast-deep-equal "^2.0.1" + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ajv@^8.11.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.0.0, ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6" + integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== + dependencies: + archiver-utils "^2.1.0" + async "^3.2.3" + buffer-crc32 "^0.2.1" + readable-stream "^3.6.0" + readdir-glob "^1.0.0" + tar-stream "^2.2.0" + zip-stream "^4.1.0" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== +aria-query@^5.0.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: - sprintf-js "~1.0.2" + deep-equal "^2.0.5" -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== dependencies: - array-uniq "^1.0.1" + call-bind "^1.0.2" + is-array-buffer "^3.0.1" -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== +array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: - safer-buffer "~2.1.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -assert-plus@1.0.0, assert-plus@^1.0.0: +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -assertion-error-formatter@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz#6bbdffaec8e2fa9e2b0eb158bfe353132d7c0a9b" - integrity sha512-cjC3jUCh9spkroKue5PDSKH5RFQ/KNuZJhk3GwHYmB/8qqETxLOmMdLH+ohi/VukNzxDlMvIe7zScvLoOdhb6Q== +assertion-error-formatter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz#be9c8825dee6a8a6c72183d915912d9b57d5d265" + integrity sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ== dependencies: - diff "^3.0.0" + diff "^4.0.1" pad-right "^0.2.2" repeat-string "^1.6.1" @@ -156,59 +1939,64 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" +async@^1.2.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +async@^3.2.3, async@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== +axe-core@^4.5.2: + version "4.6.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece" + integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg== balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -becke-ch--regex--s0-0-v1--base--pl--lib@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz#429ceebbfa5f7e936e78d73fbdc7da7162b20e20" - integrity sha1-Qpzuu/pffpNueNc/vcfacWKyDiA= +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -bluebird@3.4.6: - version "3.4.6" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" - integrity sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8= +bmp-js@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" + integrity sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw== -bluebird@^3.4.1, bluebird@^3.5.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" - integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== brace-expansion@^1.1.7: version "1.1.11" @@ -218,50 +2006,137 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -browserstack-local@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/browserstack-local/-/browserstack-local-1.3.7.tgz#cac9fc958eaa0a352e8f1ca1dc91bb141ba5da6f" - integrity sha512-ilZlmiy7XYJxsztYan7XueHVr3Ix9EVh/mCiYN1G53wRPEW/hg1KMsseM6UExzVbexEqFEfwjkBLeFlSqxh+bQ== +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +branch-name-lint@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/branch-name-lint/-/branch-name-lint-2.1.1.tgz#1ce4718d2cf257e9d6de566caa15ca79a0a33fa4" + integrity sha512-qFuG9XlKqdDFZmBqJX0Lg2oVPJyHBeQcMUujG1huWkAzmW2Rj/be2KOW3j0VWk7IOe1j//Syk4GHdkk9csg96g== dependencies: - https-proxy-agent "^2.2.1" - is-running "^2.0.0" - ps-tree "=1.1.1" - sinon "^1.17.6" - temp-fs "^0.9.9" + find-up "^5.0.0" + meow "^9.0.0" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.8: + version "10.2.8" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.8.tgz#899ae6c0c8c7127f263b2005ecaac07c95124079" + integrity sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A== + dependencies: + "@types/http-cache-semantics" "^4.0.1" + get-stream "^6.0.1" + http-cache-semantics "^4.1.1" + keyv "^4.5.2" + mimic-response "^4.0.0" + normalize-url "^8.0.0" + responselike "^3.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" - integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +centra@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/centra/-/centra-2.6.0.tgz#79117998ee6908642258db263871381aa5d1204a" + integrity sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ== -chai@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" - integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== +chai@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" + integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== dependencies: assertion-error "^1.1.0" check-error "^1.0.2" - deep-eql "^3.0.1" + deep-eql "^4.1.2" get-func-name "^2.0.0" - pathval "^1.1.0" + loupe "^2.3.1" + pathval "^1.1.1" type-detect "^4.0.5" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@5.2.0, chalk@^5.1.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" + integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== + +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -270,322 +2145,627 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== -chownr@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chromedriver@^2.46.0: - version "2.46.0" - resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-2.46.0.tgz#3d78e7eb9bb65dd804fe327a6bf76fced12be053" - integrity sha512-dLtKIJW3y/PuFrPmcw6Mb8Nh+HwSqgVrK1rWgTARXhHfWvV822X2VRkx2meU/tg2+YQL6/nNgT6n5qWwIDHbwg== +chrome-launcher@^0.15.0: + version "0.15.1" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.1.tgz#0a0208037063641e2b3613b7e42b0fcb3fa2d399" + integrity sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg== dependencies: - del "^3.0.0" - extract-zip "^1.6.7" - mkdirp "^0.5.1" - request "^2.88.0" - tcp-port-used "^1.0.1" + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +chromium-bidi@0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.4.7.tgz#4c022c2b0fb1d1c9b571fadf373042160e71d236" + integrity sha512-6+mJuFXwTMU6I3vYLs6IL8A1DyQTPjCfIL971X0aMPVGRbGnNfl6i6Cl0NMbxi2bRYLGESt9T2ZIMRM5PAEcIQ== dependencies: - restore-cursor "^2.0.0" + mitt "3.0.0" + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== -cli-table3@^0.5.1: +class-transformer@0.5.1: version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336" + integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-table3@0.6.3, cli-table3@^0.6.0: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" + string-width "^4.2.0" optionalDependencies: - colors "^1.1.2" + "@colors/colors" "1.5.0" -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@^1.0.0: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" +colorette@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -color@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" - integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" + delayed-stream "~1.0.0" -colornames@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" - integrity sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y= +commander@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.1.0.tgz#a6b263b2327f2e188c6402c42623327909f2dbec" + integrity sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w== -colors@^1.1.2, colors@^1.2.1, colors@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== +commander@9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== -colorspace@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.1.tgz#9ac2491e1bc6f8fb690e2176814f8d091636d972" - integrity sha512-pI3btWyiuz7Ken0BWh9Elzsmv2bM9AhA7psXib4anUXy/orfZ/E0MbQwhSOG/9L8hLlalqrU0UhOuqxW1YjmVw== - dependencies: - color "3.0.x" - text-hex "1.0.x" +commander@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1" + integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA== -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== +compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== dependencies: - delayed-stream "~1.0.0" + array-ify "^1.0.0" + dot-prop "^5.1.0" -commander@^2.9.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +compress-commons@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^4.0.2" + normalize-path "^3.0.0" + readable-stream "^3.6.0" concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" - readable-stream "^2.2.2" + readable-stream "^3.0.2" typedarray "^0.0.6" -core-js@^2.5.7: - version "2.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" - integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -create-error-class@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= +conventional-changelog-angular@^5.0.11, conventional-changelog-angular@^5.0.12: + version "5.0.13" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== dependencies: - capture-stack-trace "^1.0.0" + compare-func "^2.0.0" + q "^1.5.1" -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== +conventional-changelog-atom@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz#a759ec61c22d1c1196925fca88fe3ae89fd7d8de" + integrity sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw== dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" + q "^1.5.1" -css-value@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea" - integrity sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo= - -cucumber-expressions@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-6.0.1.tgz#47c9c573781c2ff721d7ad5b2cd1c97f4399ab8e" - integrity sha1-R8nFc3gcL/ch161bLNHJf0OZq44= +conventional-changelog-codemirror@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz#398e9530f08ce34ec4640af98eeaf3022eb1f7dc" + integrity sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw== dependencies: - becke-ch--regex--s0-0-v1--base--pl--lib "^1.2.0" + q "^1.5.1" -cucumber-html-reporter@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/cucumber-html-reporter/-/cucumber-html-reporter-4.0.5.tgz#8d6b376fa1d11e31467d482fd32a25a4671ce047" - integrity sha512-fhIIvna2KwxEq9XxAkbfPodY1ZBvtIos8fD5ZwaK9mrmpBBVcEfmE9CwERyWcaDpIXvJfo1nQTZanMjG9/xc8Q== - dependencies: - find "^0.2.7" - fs-extra "^3.0.1" - js-base64 "^2.3.2" - jsonfile "^3.0.0" - lodash "^4.17.5" - opn "5.3.0" +conventional-changelog-config-spec@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz#874a635287ef8b581fd8558532bf655d4fb59f2d" + integrity sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ== -cucumber-pretty@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cucumber-pretty/-/cucumber-pretty-1.5.0.tgz#2a239ebd06866ee6d3cb6173d24c93012b066e00" - integrity sha512-hXkxauUiqxyFCs/Jq19xV/S/WJVaUaoAomINJnO7/QH1tR2RQ+RzWfZppkD6/NlclmHlgg4rEOb2DgG1j7QyGQ== +conventional-changelog-conventionalcommits@4.6.3, conventional-changelog-conventionalcommits@^4.5.0: + version "4.6.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz#0765490f56424b46f6cb4db9135902d6e5a36dc2" + integrity sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g== dependencies: - cli-table3 "^0.5.1" - colors "^1.3.2" - figures "^2.0.0" - -cucumber-tag-expressions@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cucumber-tag-expressions/-/cucumber-tag-expressions-1.1.1.tgz#7f5c7b70009bc2b666591bfe64854578bedee85a" - integrity sha1-f1x7cACbwrZmWRv+ZIVFeL7e6Fo= + compare-func "^2.0.0" + lodash "^4.17.15" + q "^1.5.1" -cucumber@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-5.1.0.tgz#7b166812c255bec7eac4b0df7007a40d089c895d" - integrity sha512-zrl2VYTBRgvxucwV2GKAvLqcfA1Naeax8plPvWgPEzl3SCJiuPPv3WxBHIRHtPYcEdbHDR6oqLpZP4bJ8UIdmA== - dependencies: - "@babel/polyfill" "^7.2.3" - assertion-error-formatter "^2.0.1" - bluebird "^3.4.1" - cli-table3 "^0.5.1" - colors "^1.1.2" - commander "^2.9.0" - cross-spawn "^6.0.5" - cucumber-expressions "^6.0.0" - cucumber-tag-expressions "^1.1.1" - duration "^0.2.1" - escape-string-regexp "^1.0.5" - figures "2.0.0" - gherkin "^5.0.0" - glob "^7.1.3" - indent-string "^3.1.0" - is-generator "^1.0.2" - is-stream "^1.1.0" - knuth-shuffle-seeded "^1.0.6" - lodash "^4.17.10" - mz "^2.4.0" - progress "^2.0.0" - resolve "^1.3.3" - serialize-error "^3.0.0" - stack-chain "^2.0.0" - stacktrace-js "^2.0.0" - string-argv "0.1.1" - title-case "^2.1.1" - util-arity "^1.0.2" - verror "^1.9.0" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= +conventional-changelog-conventionalcommits@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-5.0.0.tgz#41bdce54eb65a848a4a3ffdca93e92fa22b64a86" + integrity sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw== dependencies: - es5-ext "^0.10.9" + compare-func "^2.0.0" + lodash "^4.17.15" + q "^1.5.1" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= +conventional-changelog-core@^4.2.1: + version "4.2.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^5.0.0" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^4.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^4.0.0" + +conventional-changelog-ember@^2.0.9: + version "2.0.9" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz#619b37ec708be9e74a220f4dcf79212ae1c92962" + integrity sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A== + dependencies: + q "^1.5.1" + +conventional-changelog-eslint@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz#689bd0a470e02f7baafe21a495880deea18b7cdb" + integrity sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA== + dependencies: + q "^1.5.1" + +conventional-changelog-express@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz#420c9d92a347b72a91544750bffa9387665a6ee8" + integrity sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ== dependencies: - assert-plus "^1.0.0" + q "^1.5.1" -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== +conventional-changelog-jquery@^3.0.11: + version "3.0.11" + resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz#d142207400f51c9e5bb588596598e24bba8994bf" + integrity sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw== dependencies: - ms "2.0.0" + q "^1.5.1" -debug@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== +conventional-changelog-jshint@^2.0.9: + version "2.0.9" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz#f2d7f23e6acd4927a238555d92c09b50fe3852ff" + integrity sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA== dependencies: - ms "^2.1.1" + compare-func "^2.0.0" + q "^1.5.1" -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" +conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== -debug@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" +conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== + dependencies: + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + +conventional-changelog@3.1.25: + version "3.1.25" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.25.tgz#3e227a37d15684f5aa1fb52222a6e9e2536ccaff" + integrity sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ== + dependencies: + conventional-changelog-angular "^5.0.12" + conventional-changelog-atom "^2.0.8" + conventional-changelog-codemirror "^2.0.8" + conventional-changelog-conventionalcommits "^4.5.0" + conventional-changelog-core "^4.2.1" + conventional-changelog-ember "^2.0.9" + conventional-changelog-eslint "^3.0.9" + conventional-changelog-express "^2.0.6" + conventional-changelog-jquery "^3.0.11" + conventional-changelog-jshint "^2.0.9" + conventional-changelog-preset-loader "^2.3.4" + +conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.2.0, conventional-commits-parser@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +conventional-recommended-bump@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.7" + conventional-commits-parser "^3.2.0" + git-raw-commits "^2.0.8" + git-semver-tags "^4.1.1" + meow "^8.0.0" + q "^1.5.1" + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig-typescript-loader@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz#c4259ce474c9df0f32274ed162c0447c951ef073" + integrity sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q== + +cosmiconfig@^8.0.0: + version "8.1.3" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689" + integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw== + dependencies: + import-fresh "^3.2.1" + js-yaml "^4.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== + dependencies: + crc-32 "^1.2.0" + readable-stream "^3.4.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-shorthand-properties@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz#1c808e63553c283f289f2dd56fcee8f3337bd935" + integrity sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A== + +css-value@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea" + integrity sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q== + +cucumber-junit@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/cucumber-junit/-/cucumber-junit-1.7.1.tgz#a1da97c91b8cedcaf15f99f8cee74951e5c461b0" + integrity sha512-3PiJpK1ScqF5UYlP1iGoIz3t9NJU+WVolG6FIs37knUz3YgBpk2ANVa+2fmCw4PgyiyswAtppDdhlA5vj27Z9Q== + dependencies: + xml "0.0.12" + yargs "^5.0.0" + +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +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.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decamelize@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" + integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-eql@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== dependencies: type-detect "^4.0.0" -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deep-equal@^2.0.5: + version "2.2.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" + integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== + dependencies: + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-array-buffer "^3.0.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^2.0.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== +deep-override@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/deep-override/-/deep-override-1.0.2.tgz#82a98ff187a33d2e146a927450773a8aaac2c716" + integrity sha512-+bAuLuYqaVVUWPaq8rmU8NLTX85p4I5k5/cVdhBioEfH7k+5NlGdv4NoJVQcJRByqzzTWWzTpih+pU1wBTmMow== -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= +deepmerge-ts@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz#c55206cc4c7be2ded89b9c816cf3608884525d7a" + integrity sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw== + +defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -diagnostics@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" - integrity sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ== +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +devtools-protocol@0.0.1120988: + version "0.0.1120988" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1120988.tgz#8fe49088919ae3b8df7235774633763f1f925066" + integrity sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q== + +devtools-protocol@^0.0.1138159: + version "0.0.1138159" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1138159.tgz#da9878b5127cae9ac6b5aab7422caaf945630f3f" + integrity sha512-IVXe1ZEQJWkMkeg10hRoZu3luP054z8USOpBIyorCTTABKVg0gBGt4rmwjGmThMEKaTb4nEmjVJkZ3/YxU0whA== + +devtools@8.10.2: + version "8.10.2" + resolved "https://registry.yarnpkg.com/devtools/-/devtools-8.10.2.tgz#528cb3b37644dcd69894f00a6de973eae8041178" + integrity sha512-pvnTf0GtY1ILgBBxjGpQmwmiIklPQFQNirW4deluoLnhKLt6ekdKjYRLoK7goNN0rYPx7R/KK6Aqe5mgWKxBaA== + dependencies: + "@types/node" "^20.1.0" + "@wdio/config" "8.10.2" + "@wdio/logger" "8.6.6" + "@wdio/protocols" "8.10.2" + "@wdio/types" "8.10.2" + "@wdio/utils" "8.10.2" + chrome-launcher "^0.15.0" + edge-paths "^3.0.5" + import-meta-resolve "^3.0.0" + puppeteer-core "20.1.1" + query-selector-shadow-dom "^1.0.0" + ua-parser-js "^1.0.1" + uuid "^9.0.0" + which "^3.0.0" + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - colorspace "1.1.x" - enabled "1.0.x" - kuler "1.0.x" + path-type "^4.0.0" -diff@^3.0.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" @@ -594,1135 +2774,2406 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -duplexer2@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= +dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: - readable-stream "^2.0.2" + is-obj "^2.0.0" -duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== -duration@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.2.tgz#ddf149bc3bc6901150fe9017111d016b3357f529" - integrity sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg== +dotgitignore@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dotgitignore/-/dotgitignore-2.1.0.tgz#a4b15a4e4ef3cf383598aaf1dfa4a04bcc089b7b" + integrity sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA== dependencies: - d "1" - es5-ext "~0.10.46" + find-up "^3.0.0" + minimatch "^3.0.4" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= +edge-paths@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/edge-paths/-/edge-paths-3.0.5.tgz#9a35361d701d9b5dc07f641cebe8da01ede80937" + integrity sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg== dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" + "@types/which" "^2.0.1" + which "^2.0.2" -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -enabled@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" - integrity sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M= - dependencies: - env-variable "0.0.x" +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -env-variable@0.0.x: - version "0.0.5" - resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.5.tgz#913dd830bef11e96a039c038d4130604eba37f88" - integrity sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA== +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + 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" -error-ex@^1.2.0: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d" - integrity sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw== - dependencies: - stackframe "^1.0.4" - -es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.46: - version "0.10.48" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.48.tgz#9a0b31eeded39e64453bcedf6f9d50bbbfb43850" - integrity sha512-CdRvPlX/24Mj5L4NVxTs4804sxiS2CjVprgCmrgoDkdmjdY4D+ySHa7K3jJf8R40dFg0tIm3z/dk326LrnuSGw== +error-stack-parser@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-get-iterator@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "1" + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" + has "^1.0.3" -es6-promise@^4.0.3: - version "4.2.6" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" - integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= +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" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: - es6-promise "^4.0.3" + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" -es6-symbol@^3.1.1, es6-symbol@~3.1.1: +escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -eslint-config-prettier@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.1.0.tgz#181364895899fff9fd3605fecb5c4f20e7d5f395" - integrity sha512-zILwX9/Ocz4SV2vX7ox85AsrAgXV3f2o2gpIicdMIOra48WYqgUnWNH/cR/iHtmD2Vb3dLSC3LiEJnS05Gkw7w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + dependencies: + debug "^3.2.7" + is-core-module "^2.11.0" + resolve "^1.22.1" + +eslint-module-utils@^2.7.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.26.0: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" + has "^1.0.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: - get-stdin "^6.0.0" + prettier-linter-helpers "^1.0.0" -eslint-plugin-prettier@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz#19d521e3981f69dd6d14f64aec8c6a6ac6eb0b0d" - integrity sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ== +eslint-plugin-ui-testing@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-ui-testing/-/eslint-plugin-ui-testing-2.0.1.tgz#4aaf74f764589bf4fdc12a81d720408d2f2bc56a" + integrity sha512-GpvE0u03GSytsJ/K49C2dJlvDKQSfh+PX4lAEjBIc5RxUWEpGf9/jY3JTFd7F0gQ9ElGfYskJceVKyz7knbFFw== dependencies: - prettier-linter-helpers "^1.0.0" + "@typescript-eslint/experimental-utils" "^5.3.0" -eslint-scope@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.2.tgz#5f10cd6cabb1965bf479fa65745673439e21cb0e" - integrity sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg== +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" - integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== - -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== - -eslint@^5.15.1: - version "5.15.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.15.1.tgz#8266b089fd5391e0009a047050795b1d73664524" - integrity sha512-NTcm6vQ+PTgN3UBsALw5BMhgO6i5EpIjQF/Xb5tIh3sk9QhrFafujUOczGz4J24JBlzWclSB9Vmx8d+9Z6bFCg== +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.33.0: + version "8.36.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.36.0.tgz#1bd72202200a5492f91803b113fb8a83b11285cf" + integrity sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.1" + "@eslint/js" "8.36.0" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" doctrine "^3.0.0" - eslint-scope "^4.0.2" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.5.0" + esquery "^1.4.2" esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.12.0" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" + optionator "^0.9.1" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.0.tgz#3646d4e3f58907464edba852fa047e6a27bdf113" + integrity sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" -esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: - estraverse "^4.0.0" + estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - -event-stream@=3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" + integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +extend-object@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/extend-object/-/extend-object-1.0.0.tgz#42514f84015d1356caf5187969dfb2bc1bda0823" + integrity sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw== -extract-zip@^1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" - integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= +extract-zip@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== dependencies: - concat-stream "1.6.2" - debug "2.6.9" - mkdirp "0.5.1" - yauzl "2.4.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== 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= + integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== +fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + 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.4: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-safe-stringify@^2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2" - integrity sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg== +fast-xml-parser@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz#5a98c18238d28a57bbdfa9fe4cda01211fff8f4a" + integrity sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg== + dependencies: + strnum "^1.0.5" -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: - pend "~1.2.0" + reusify "^1.0.4" -fecha@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" - integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" -figures@2.0.0, figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^3.1.0, 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== dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" -find@^0.2.7: - version "0.2.9" - resolved "https://registry.yarnpkg.com/find/-/find-0.2.9.tgz#4b73f1ff9e56ad91b76e716407fe5ffe6554bb8c" - integrity sha1-S3Px/55WrZG3bnFkB/5f/mVUu4w= +file-type@^12.4.2: + version "12.4.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" + integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + +filewalker@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/filewalker/-/filewalker-0.1.3.tgz#d63bf9d813ba35344b8182747824f6ff754bf4c5" + integrity sha512-7a+lUGd9/J3cw1I1VdhBpRV+L/9rOyirJ6K+GZ2m/8SM6wHMq1MsLjven0i+as4gEXCr64JlHFn3oCExGW5BFQ== dependencies: - traverse-chain "~0.1.0" + fqueue "0.0.x" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + to-regex-range "^5.0.1" -flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" + locate-path "^3.0.0" -formatio@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" - integrity sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek= +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - samsam "~1.1" + locate-path "^5.0.0" + path-exists "^4.0.0" -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" -fs-extra@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" + locate-path "^7.1.0" + path-exists "^5.0.0" -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== +find@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find/-/find-0.3.0.tgz#4082e8fc8d8320f1a382b5e4f521b9bc50775cb8" + integrity sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw== dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" + traverse-chain "~0.1.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= +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -geckodriver@^1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-1.16.0.tgz#ec97f3b175522ce31584af7b42b4ff978e2be170" - integrity sha512-im4iInm9n3ntXlsmaoQx5wP1jMP40t+FQBbvlEr5jMCq3ruKcN60/kXn7eYNn0bchpgQf6nXVBy4p8SEaMpI4w== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: - adm-zip "0.4.11" - bluebird "3.4.6" - got "5.6.0" - https-proxy-agent "2.2.1" - tar "4.0.2" + is-callable "^1.1.3" -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== +form-data-encoder@^2.1.2: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" + integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= +form-data-lite@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/form-data-lite/-/form-data-lite-1.0.3.tgz#449fe26ba93682c1c441cd8011787c981a03b4fa" + integrity sha512-P7xPqAiOPKzC9Q9aywAZJCQq4QOE5WokPb3HrcWRh7C57RKytueJzoORZAVgHBNvK/lL7E+FxjQjd4X/zbecEQ== dependencies: - assert-plus "^1.0.0" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-lite "^1.0.3" -gherkin@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/gherkin/-/gherkin-5.1.0.tgz#684bbb03add24eaf7bdf544f58033eb28fb3c6d5" - integrity sha1-aEu7A63STq9731RPWAM+so+zxtU= +fqueue@0.0.x: + version "0.0.0" + resolved "https://registry.yarnpkg.com/fqueue/-/fqueue-0.0.0.tgz#533205a4f9ad21bbaa38fc61cef3a930c2f54836" + integrity sha512-C2JTxMAgYNjKidq3zQBCbNVsDFFZ1PyRlN/RWo2rJstaz6UeX6zbdzFNFxKZeCWIp0p9xPK4HJl6AjVrKyY0yg== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +fs-extra@^11.0.0, fs-extra@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" + integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== 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" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -globals@^11.7.0: - version "11.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" - integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== +fs-traverse@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/fs-traverse/-/fs-traverse-0.0.1.tgz#0dd6b247ae87e69fbec87c19ea5413974ecd22a2" + integrity sha512-SdyNfe8RjKBte7I9XTrudaHi5VsIrkKEExgY5E/6pT80goEdXY75gzwtqIl2I/i+H72QNbDSpfTlaN2bIljrqw== -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.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 sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -got@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-5.6.0.tgz#bb1d7ee163b78082bbc8eb836f3f395004ea6fbf" - integrity sha1-ux1+4WO3gIK7yOuDbz85UATqb78= - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-plain-obj "^1.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^2.0.0" - unzip-response "^1.0.0" - url-parse-lax "^1.0.0" +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== -graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" -grapheme-splitter@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== -http-signature@~1.2.0: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" -https-proxy-agent@2.2.1, https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== +get-pkg-repo@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== dependencies: - agent-base "^4.1.0" - debug "^3.1.0" + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + through2 "^2.0.0" + yargs "^16.2.0" -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: - safer-buffer ">= 2.1.2 < 3" + pump "^3.0.0" -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +git-raw-commits@^2.0.0, git-raw-commits@^2.0.8: + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" -indent-string@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= +git-semver-tags@^4.0.0, git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== dependencies: + meow "^8.0.0" + semver "^6.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== + dependencies: + ini "^1.3.2" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.2.2: + version "10.2.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.2.4.tgz#f5bf7ddb080e3e9039b148a9e2aef3d5ebfc0a25" + integrity sha512-fDboBse/sl1oXSLhIp0FcCJgzW9KmhC/q8ULTKC82zc+DL3TL7FNb8qlt5qqXN53MsKEUSIcb+7DLmEygOE5Yw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.0.3" + minimatch "^9.0.0" + minipass "^5.0.0 || ^6.0.0" + path-scurry "^1.7.0" + +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" once "^1.3.0" - wrappy "1" + path-is-absolute "^1.0.0" -inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +global-dirs@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== + dependencies: + ini "^1.3.4" -inquirer@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" - integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.0.0" - through "^2.3.6" - -ip-regex@^2.1.0: + ini "2.0.0" + +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@^12.1.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.6.0.tgz#8d382ee5de4432c086e83c133efdd474484f6ac7" + integrity sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +grapheme-splitter@^1.0.2, grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +hard-rejection@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +has-ansi@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-4.0.1.tgz#f216a8c8d7b129e490dc15f4a62cc1cdb9603ce8" + integrity sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A== + dependencies: + ansi-regex "^4.1.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +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== + dependencies: + function-bind "^1.1.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-proxy-agent@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +http2-wrapper@^2.1.10: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +https-proxy-agent@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +husky@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== + +idb-keyval@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.1.tgz#94516d625346d16f56f3b33855da11bfded2db33" + integrity sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-meta-resolve@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz#94a6aabc623874fbc2f3525ec1300db71c6cbc11" + integrity sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.2, ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-generator@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" - integrity sha1-wUwhBX7TbjKNuANHlmxpP4hjifM= +is-ci@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + +is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-electron@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-path-cwd@^1.0.0: +is-fullwidth-code-point@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - is-path-inside "^1.0.0" + is-extglob "^2.1.1" -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: - path-is-inside "^1.0.1" + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-inside@^3.0.2, is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^1.0.0: +is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-plain-obj@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== -is-running@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-running/-/is-running-2.1.0.tgz#30a73ff5cc3854e4fc25490809e9f5abf8de09e0" - integrity sha1-MKc/9cw4VOT8JUkICen1q/jeCeA= +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -is-url@^1.2.2: +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== + dependencies: + text-extensions "^1.0.0" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== -is2@2.0.1: +is-weakmap@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.1.tgz#8ac355644840921ce435d94f05d3a94634d3481a" - integrity sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA== + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - deep-is "^0.1.3" - ip-regex "^2.1.0" - is-url "^1.2.2" + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +jackspeak@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.0.tgz#497cbaedc902ec3f31d5d61be804d2364ff9ddad" + integrity sha512-r5XBrqIJfwRIjRt/Xr5fv9Wh09qyhHfKnYddDlpM+ibRR20qrYActpCAgU6U+d53EOEjzkvxPMVHSlgR7leXrQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +jpeg-js@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa" + integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== -jpeg-js@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482" - integrity sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII= +js-base64@^3.7.3: + version "3.7.5" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.5.tgz#21e24cf6b886f76d6f5f165bfcd69cc55b9e3fca" + integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA== -js-base64@^2.3.2: - version "2.5.1" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== +js-sdsl@^4.1.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" + integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.12.0: - version "3.12.2" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.2.tgz#ef1d067c5a9d9cb65bd72f285b5d8105c77f14fc" - integrity sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q== +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-query@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/json-query/-/json-query-2.2.2.tgz#b6558b8a3794ccd217926aa38024324b77b48ab1" + integrity sha512-y+IcVZSdqNmS4fO8t1uZF6RMMs0xh3SrTjJr9bp1X3+v0Q13+7Cyv12dSmKwDswp/H427BVtpkLWhGxYu3ZWRA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +jsonfile@^6.0.1, jsonfile@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +keyv@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klassijs-cucumber-html-reporter@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klassijs-cucumber-html-reporter/-/klassijs-cucumber-html-reporter-6.0.0.tgz#fa6018b4ed63f2c4d5a4021b2c97d381b7a0e216" + integrity sha512-6KY+NGivTQscXGHom4SIyFpZSw+tTLwakkLC0AGrG8Zbm/xA6d9Wkm+onAMf/XWV+Qs9xsLcvdy1M7LlA+S74Q== + dependencies: + chalk "4.1.2" + find "^0.3.0" + fs-extra "^11.1.0" + js-base64 "^3.7.3" + jsonfile "^6.1.0" + lodash "^4.17.11" + node-emoji "^1.10.0" + open "^8.4.0" + uuid "^9.0.0" + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +knuth-shuffle-seeded@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz#01f1b65733aa7540ee08d8b0174164d22081e4e1" + integrity sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg== + dependencies: + seed-random "~2.2.0" + +ky@^0.33.0: + version "0.33.3" + resolved "https://registry.yarnpkg.com/ky/-/ky-0.33.3.tgz#bf1ad322a3f2c3428c13cfa4b3af95e6c4a2f543" + integrity sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw== + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lightcookie@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/lightcookie/-/lightcookie-1.0.25.tgz#7905eca0ed3fe6d4a3e18a1102f7d074116b785e" + integrity sha512-SrY/+eBPaKAMnsn7mCsoOMZzoQyCyHHHZlFCu2fjo28XxSyCLjlooKiTxyrXTg8NPaHp1YzWi0lcGG1gDi6KHw== + +lighthouse-logger@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz#ba6303e739307c4eee18f08249524e7dafd510db" + integrity sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + +lilconfig@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@^13.0.3: + version "13.2.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.2.0.tgz#b7abaf79c91cd36d824f17b23a4ce5209206126a" + integrity sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw== + dependencies: + chalk "5.2.0" + cli-truncate "^3.1.0" + commander "^10.0.0" + debug "^4.3.4" + execa "^7.0.0" + lilconfig "2.1.0" + listr2 "^5.0.7" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-inspect "^1.12.3" + pidtree "^0.6.0" + string-argv "^0.3.1" + yaml "^2.2.1" + +listr2@^5.0.7: + version "5.0.8" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-5.0.8.tgz#a9379ffeb4bd83a68931a65fb223a11510d6ba23" + integrity sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.19" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.8.0" + through "^2.3.8" + wrap-ansi "^7.0.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.assign@^4.1.0, lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.mergewith@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== + +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash.upperfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== + +lodash.zip@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" + integrity sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg== + +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +loglevel-plugin-prefix@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644" + integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== + +loglevel@^1.6.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4" + integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== + +loupe@^2.3.1: + version "2.3.6" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" + integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== + dependencies: + get-func-name "^2.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: - argparse "^1.0.7" - esprima "^4.0.0" + tslib "^2.0.3" + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.1.tgz#c58a93de58630b688de39ad04ef02ef26f1902f1" + integrity sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A== + +luxon@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.2.1.tgz#14f1af209188ad61212578ea7e3d518d18cee45f" + integrity sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + +matchit@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/matchit/-/matchit-1.1.0.tgz#c4ccf17d9c824cc1301edbcffde9b75a61d10a7c" + integrity sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA== + dependencies: + "@arr/every" "^1.0.0" + +meow@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +merge@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-lite@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/mime-lite/-/mime-lite-1.0.3.tgz#778e1880842545f71b223898cdff1c9ddbc995fe" + integrity sha512-V85l97zJSTG8FEvmdTlmNYb0UMrVBwvRjw7bWTf/aT6KjFwtz3iTz8D2tuFIp7lwiaO2C5ecnrEmSkkMRCrqVw== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.1.0: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.0.tgz#bfc8e88a1c40ffd40c172ddac3decb8451503b56" + integrity sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w== + dependencies: + brace-expansion "^2.0.1" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.0": + version "6.0.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-6.0.1.tgz#315417c259cb32a1b2fc530c0e7f55c901a60a6d" + integrity sha512-Tenl5QPpgozlOGBiveNYHg2f6y+VpxsXRoIHFUVJuSmTonXRAE6q9b8Mp/O46762/2AlW4ye4Nkyvx0fgWDKbw== -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +mitt@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd" + integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ== -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +mkdirp@^2.1.5: + version "2.1.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.6.tgz#964fbcb12b2d8c5d6fbc62a963ac95a273e2cc19" + integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== -json-stable-stringify-without-jsonify@^1.0.1: +modify-values@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= - optionalDependencies: - graceful-fs "^4.1.6" +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" -knuth-shuffle-seeded@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz#01f1b65733aa7540ee08d8b0174164d22081e4e1" - integrity sha1-AfG2VzOqdUDuCNiwF0Fk0iCB5OE= +nanoclone@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" + integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - seed-random "~2.2.0" + lower-case "^2.0.2" + tslib "^2.0.3" -kuler@1.0.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.1.tgz#ef7c784f36c9fb6e16dd3150d152677b2b0228a6" - integrity sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ== +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== dependencies: - colornames "^1.1.1" + lodash "^4.17.21" -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + whatwg-url "^5.0.0" -lodash.isobject@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" - integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0= +node-fetch@^2.6.9: + version "2.6.11" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" + integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== + dependencies: + whatwg-url "^5.0.0" -lodash.merge@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" - integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== +"node-resemble-js@https://github.com/klassijs/node-resemble.js": + version "1.2.0" + resolved "https://github.com/klassijs/node-resemble.js#76b8749478e840ef627ac674861f8c402b833972" + dependencies: + jpeg-js "^0.4.4" + pngjs "^7.0.0" -lodash.zip@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" - integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= +nodemailer@^6.8.0: + version "6.9.1" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.1.tgz#8249d928a43ed85fec17b13d2870c8f758a126ed" + integrity sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA== -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" -logform@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.1.2.tgz#957155ebeb67a13164069825ce67ddb5bb2dd360" - integrity sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ== +normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: - colors "^1.2.1" - fast-safe-stringify "^2.0.4" - fecha "^2.3.3" - ms "^2.1.1" - triple-beam "^1.3.0" + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" -loglevel-plugin-prefix@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.5.3.tgz#8e9131b96e4697a0dba517996f76b9e6c3f43210" - integrity sha512-zRAJw3WYCQAJ6xfEIi04/oqlmR6jkwg3hmBcMW82Zic3iPWyju1gwntcgic0m5NgqYNJ62alCmb0g/div26WjQ== +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -loglevel@^1.6.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= +normalize-url@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" + integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== -lolex@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" - integrity sha1-fD2mL/yzDw9agKJWbKJORdigHzE= +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" -lowercase-keys@^1.0.0: +number-is-nan@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== -merge@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -mime-db@~1.38.0: - version "1.38.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" - integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.22" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" - integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog== +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - mime-db "~1.38.0" + call-bind "^1.0.2" + define-properties "^1.1.3" -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - brace-expansion "^1.1.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= +object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -minipass@^2.2.1: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" + wrappy "1" -minizlib@^1.0.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: - minipass "^2.2.1" + mimic-fn "^2.1.0" -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: - minimist "0.0.8" + mimic-fn "^4.0.0" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +openapi-fuzzer-core@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/openapi-fuzzer-core/-/openapi-fuzzer-core-1.0.6.tgz#f6784ade65b854d923f8e0bf0eed7ac6d948ef7c" + integrity sha512-FJNJIfgUFuv4NmVGq9MYdoKra2GrkDy2uhIjE2YGlw30UA1glf4SXLMhI4UwdcJ8jisKdIxi7lXrfej8GvNW5w== + dependencies: + klona "^2.0.4" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +opencollective-postinstall@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" -natural-compare@^1.4.0: +os-locale@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== + dependencies: + lcid "^1.0.0" -next-tick@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +p-iteration@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/p-iteration/-/p-iteration-1.1.8.tgz#14df726d55af368beba81bcc92a26bb1b48e714a" + integrity sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ== -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: - lower-case "^1.1.1" + p-try "^1.0.0" -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - minimatch "^3.0.2" + p-try "^2.0.0" -node-resemble-js@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/node-resemble-js/-/node-resemble-js-0.2.0.tgz#8a36c6678a61e5d8455fec58009b1b0271b1909a" - integrity sha1-ijbGZ4ph5dhFX+xYAJsbAnGxkJo= +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - jpeg-js "0.2.0" - pngjs "~2.2.0" - -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - integrity sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8= + yocto-queue "^0.1.0" -nodemailer@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-5.1.1.tgz#0c48d1ecab02e86d9ff6c620ee75ed944b763505" - integrity sha512-hKGCoeNdFL2W7S76J/Oucbw0/qRlfG815tENdhzcqTpSjKgAN91mFOqU2lQUflRRxFM7iZvCyaFcAR9noc/CqQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: - wrappy "1" + p-limit "^2.0.0" -one-time@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e" - integrity sha1-+M33eISCb+Tf+T46nMN7HkSAdC4= +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - mimic-fn "^1.0.0" + p-limit "^3.0.2" -opn@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" - integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== dependencies: - is-wsl "^1.1.0" + p-limit "^4.0.0" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" + aggregate-error "^3.0.0" -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pactum-matchers@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/pactum-matchers/-/pactum-matchers-1.1.4.tgz#ef7d922395ac25f4eaef5745b960df7d82f25aa8" + integrity sha512-GkIrdBQyFlmKb7LEcSSmkALnGFuZTRTS3C6q46e1uWHAtuwRqB/Mbeg4ta8nZ7eVUglJDG4pUYpZgpVVqycUNQ== + +pactum@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/pactum/-/pactum-3.3.2.tgz#cae9acf273be6d41591a56721a77654eb677da86" + integrity sha512-GbgCQ3xGWGH6BCDZgMdfz5rhskdh2vntQMA41bA17SzZPgmysZgp7ahtcHW7jT/LU/kk5LFGb/Xj+SJ9lXRLAw== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.9" + deep-override "^1.0.2" + form-data-lite "^1.0.3" + json-query "^2.2.2" + klona "^2.0.5" + lightcookie "^1.0.25" + openapi-fuzzer-core "^1.0.6" + pactum-matchers "^1.1.4" + parse-graphql "^1.0.0" + phin "^3.7.0" + polka "^0.5.2" pad-right@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" - integrity sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q= + integrity sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g== dependencies: repeat-string "^1.5.2" parent-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" - integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" -parse-json@^2.1.0: +parse-graphql@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-graphql/-/parse-graphql-1.0.0.tgz#4b3a24faaa65000ea804cca7d0c9b41d4313b152" + integrity sha512-NjvQHHaiPCxPZrhm/kKnorxOv7r/eA+tE0VW5E8iJMH9wTqFA1V0YK/7nbpxVu3JdXUxyWTKMez9lsHUtAwa0w== + +parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: error-ex "^1.2.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-is-inside@^1.0.1, path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= +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@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.7.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.9.1.tgz#838566bb22e38feaf80ecd49ae06cd12acd782ee" + integrity sha512-UgmoiySyjFxP6tscZDgWGEAgsW5ok8W3F5CJDnnH2pozwSTGE6eH7vwTotMwATWA2r5xqdkKdxYPkwlJjAI/3g== + dependencies: + lru-cache "^9.1.1" + minipass "^5.0.0 || ^6.0.0" -pathval@^1.1.0: +path-type@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" - integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" -pause-stream@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: - through "~2.3" + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +phin@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/phin/-/phin-3.7.0.tgz#eeeff7660408515d8cf0c6252901012d4ab7153b" + integrity sha512-DqnVNrpYhKGBZppNKprD+UJylMeEKOZxHgPB+ZP6mGzf3uA2uox4Ep9tUm+rUc8WLIdHT3HcAE4X8fhwQA9JKg== + dependencies: + centra "^2.6.0" + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.0.0: +pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== -pngjs@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-2.2.0.tgz#649663609a0ebab87c8f08b3fe724048b51d9d7f" - integrity sha1-ZJZjYJoOurh8jwiz/nJASLUdnX8= +pngjs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-7.0.0.tgz#a8b7446020ebbc6ac739db6c5415a65d17090e26" + integrity sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +polka@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/polka/-/polka-0.5.2.tgz#588bee0c5806dbc6c64958de3a1251860e9f2e26" + integrity sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw== + dependencies: + "@polka/url" "^0.5.0" + trouter "^2.0.1" -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: version "1.0.0" @@ -1731,60 +5182,171 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.16.4: - version "1.16.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" - integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== +prettier@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.5.tgz#3dd8ae1ebddc4f6aa419c9b64d8c8319a7e0d982" + integrity sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ== process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^2.0.0: +progress@2.0.3, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -ps-tree@=1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.1.tgz#5f1ba35455b8c25eeb718d04c37de1555d96d3db" - integrity sha512-kef7fYYSKVqQffmzTMsVcUD1ObNJMp8sNSmHGlGKsZQyL/ht9MZKk86u0Rd1NhpTOAuhqwKCLLpktwkqz+MF8A== +property-expr@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" + integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + +proxy-from-env@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: - event-stream "=3.3.4" + end-of-stream "^1.1.0" + once "^1.3.1" -psl@^1.1.24, psl@^1.1.28: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +puppeteer-core@20.1.1: + version "20.1.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-20.1.1.tgz#b5a94403ca0b776a50585ace9f917c2000fc3539" + integrity sha512-iB9F2Om8J+nU4qi30oYw0hMWOw6eQN7kFkLLI/u3UvxONOCx5o0KmM6+byaK2/QGIuQu2ly1mPaJnC1DyoW07Q== + dependencies: + "@puppeteer/browsers" "1.0.1" + chromium-bidi "0.4.7" + cross-fetch "3.1.5" + debug "4.3.4" + devtools-protocol "0.0.1120988" + extract-zip "2.0.1" + https-proxy-agent "5.0.1" + proxy-from-env "1.1.0" + tar-fs "2.1.1" + unbzip2-stream "1.4.3" + ws "8.13.0" + +q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +query-selector-shadow-dom@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz#1c7b0058eff4881ac44f45d8f84ede32e9a2f349" + integrity sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw== -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -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== +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - integrity sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po= +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" + find-up "^1.0.0" + read-pkg "^1.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2, 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== +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg-up@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-9.1.0.tgz#38ca48e0bc6c6b260464b14aad9bcd4e5b1fbdc3" + integrity sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg== + dependencies: + find-up "^6.3.0" + read-pkg "^7.1.0" + type-fest "^2.5.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +read-pkg@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-7.1.0.tgz#438b4caed1ad656ba359b3e00fd094f3c427a43e" + integrity sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg== + dependencies: + "@types/normalize-package-data" "^2.4.1" + normalize-package-data "^3.0.2" + parse-json "^5.2.0" + type-fest "^2.0.0" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -1794,320 +5356,463 @@ 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@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.2.0.tgz#de17f229864c120a9f56945756e4f32c4045245d" - integrity sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw== +readdir-glob@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" + integrity sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA== dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" + minimatch "^5.1.0" -regenerator-runtime@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" - integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== +recursive-readdir@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reflect-metadata@0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" + integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== + +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.3: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regexp-match-indices@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regexp-match-indices/-/regexp-match-indices-1.0.2.tgz#cf20054a6f7d5b3e116a701a7b00f82889d10da6" + integrity sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ== + dependencies: + regexp-tree "^0.1.11" + +regexp-tree@^0.1.11: + version "0.1.24" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" + integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== - dependencies: - lodash "^4.17.11" +require-dir@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-1.2.0.tgz#0d443b75e96012d3ca749cf19f529a789ae74817" + integrity sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA== -request-promise@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-4.2.4.tgz#1c5ed0d71441e38ad58c7ce4ea4ea5b06d54b310" - integrity sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg== - dependencies: - bluebird "^3.5.0" - request-promise-core "1.1.2" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.83.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== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== -require-dir@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-1.2.0.tgz#0d443b75e96012d3ca749cf19f529a789ae74817" - integrity sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA== +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.3.3: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== +resolve-global@1.0.0, resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== dependencies: - path-parse "^1.0.6" + global-dirs "^0.1.1" -restore-cursor@^2.0.0: +resolve-pkg@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" + integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" + resolve-from "^5.0.0" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -rgb2hex@^0.1.0: - version "0.1.9" - resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.1.9.tgz#5d3e0e14b0177b568e6f0d5b43e34fbfdb670346" - integrity sha512-32iuQzhOjyT+cv9aAFRBJ19JgHwzQwbjUhH3Fj2sWW2EEGAW8fpFrDFP5ndoKDxJaLO06x1hE3kyuIFrUQtybQ== +resolve@^1.10.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -rimraf@2.6.3, rimraf@^2.2.8: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== dependencies: - glob "^7.1.3" + lowercase-keys "^3.0.0" -rimraf@~2.5.2: - version "2.5.4" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" - integrity sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ= +resq@^1.9.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resq/-/resq-1.11.0.tgz#edec8c58be9af800fd628118c0ca8815283de196" + integrity sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw== dependencies: - glob "^7.0.5" + fast-deep-equal "^2.0.1" -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= +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rgb2hex@0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.2.5.tgz#f82230cd3ab1364fa73c99be3a691ed688f8dbdc" + integrity sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - is-promise "^2.1.0" + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" -rxjs@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" - integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== +rxjs@^7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== dependencies: - tslib "^1.9.0" + tslib "^2.1.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -samsam@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" - integrity sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc= +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -samsam@~1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.3.tgz#9f5087419b4d091f232571e7fa52e90b0f552621" - integrity sha1-n1CHQZtNCR8jJXHn+lLpCw9VJiE= +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" seed-random@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/seed-random/-/seed-random-2.2.0.tgz#2a9b19e250a817099231a5b99a4daf80b7fbed54" - integrity sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ= + integrity sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ== + +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +semver@^6.0.0, semver@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.1.1, semver@^7.3.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.7: + version "7.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" + integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== + dependencies: + lru-cache "^6.0.0" + +serialize-error@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" + integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== + dependencies: + type-fest "^0.20.2" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -semver@^5.5.0, semver@^5.5.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" -serialize-error@^3.0.0: +shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-3.0.0.tgz#80100282b09be33c611536f50033481cb9cc87cf" - integrity sha512-+y3nkkG/go1Vdw+2f/+XUXM1DXX1XcxTl99FfiD/OEPUNw4uo0i6FKABfTAN5ZcgGtjTRZcEbxcE/jtXbEY19A== + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - shebang-regex "^1.0.0" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +signal-exit@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" + integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: - is-arrayish "^0.3.1" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -sinon@^1.17.6: - version "1.17.7" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf" - integrity sha1-RUKk9JugxFwF6y6d2dID4rjv4L8= +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - formatio "1.1.1" - lolex "1.3.2" - samsam "1.1.2" - util ">=0.10.3 <1" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= +source-map-support@0.5.21, source-map-support@^0.5.21: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: - through "2" + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-chain@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-2.0.0.tgz#d73d1172af89565f07438b5bcc086831b6689b2d" - integrity sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg== + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" -stack-generator@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.3.tgz#bb74385c67ffc4ccf3c4dee5831832d4e509c8a0" - integrity sha512-kdzGoqrnqsMxOEuXsXyQTmvWXZmG0f3Ql2GDx5NtmZs59sT2Bt9Vdyq0XdtxUi58q/+nxtbF9KOQ9HkV1QznGg== +spdx-license-ids@^3.0.0: + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== + +split2@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: - stackframe "^1.0.4" + readable-stream "^3.0.0" -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" -stackframe@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" - integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw== +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -stacktrace-gps@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.2.tgz#33f8baa4467323ab2bd1816efa279942ba431ccc" - integrity sha512-9o+nWhiz5wFnrB3hBHs2PTyYrS60M1vvpSzHxwxnIbtY2q9Nt51hZvhrG1+2AxD374ecwyS+IUwfkHRE/2zuGg== +"standard-version@https://github.com/klassijs/standard-version": + version "9.5.0" + resolved "https://github.com/klassijs/standard-version#017dcb689587ed5abec2096be88ae8b052523f94" dependencies: - source-map "0.5.6" - stackframe "^1.0.4" + chalk "^2.4.2" + conventional-changelog "3.1.25" + conventional-changelog-config-spec "2.1.0" + conventional-changelog-conventionalcommits "4.6.3" + conventional-recommended-bump "6.1.0" + detect-indent "^6.0.0" + detect-newline "^3.1.0" + dotgitignore "^2.1.0" + figures "^3.1.0" + find-up "^5.0.0" + git-semver-tags "^4.0.0" + semver "^7.1.1" + stringify-package "^1.0.1" + yargs "^16.0.0" + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" -stacktrace-js@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.0.tgz#776ca646a95bc6c6b2b90776536a7fc72c6ddb58" - integrity sha1-d2ymRqlbxsayuQd2U2p/xyxt21g= +string-argv@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - error-stack-parser "^2.0.1" - stack-generator "^2.0.1" - stacktrace-gps "^3.0.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" -stream-combiner@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= +string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - duplexer "~0.1.1" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -string-argv@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.1.1.tgz#66bd5ae3823708eaa1916fa5412703150d4ddfaf" - integrity sha512-El1Va5ehZ0XTj3Ekw4WFidXvTmt9SrC0+eigdojgtJMVtPkF0qbBe9fyNSl9eQf+kUHnTSQxdQYzuHfZy8V+DQ== +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" @@ -2116,24 +5821,70 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +stringify-package@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^3.0.0" + ansi-regex "^5.0.1" -strip-ansi@^5.0.0, strip-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.1.0.tgz#55aaa54e33b4c0649a7338a43437b1887d153ec4" - integrity sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg== +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: - ansi-regex "^4.1.0" + ansi-regex "^2.0.0" -strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== supports-color@^5.3.0: version "5.5.0" @@ -2142,294 +5893,688 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -table@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" - integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - ajv "^6.9.1" - lodash "^4.17.11" - slice-ansi "^2.1.0" - string-width "^3.0.0" + has-flag "^4.0.0" -tar@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.0.2.tgz#e8e22bf3eec330e5c616d415a698395e294e8fad" - integrity sha512-4lWN4uAEWzw8aHyBUx9HWXvH3vIFEhOyvN22HfBzWpE07HaTBXM8ttSeCQpswRo5On4q3nmmYmk7Tomn0uhUaw== +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - chownr "^1.0.1" - minipass "^2.2.1" - minizlib "^1.0.4" - mkdirp "^0.5.0" - yallist "^3.0.2" + has-flag "^4.0.0" -tcp-port-used@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.1.tgz#46061078e2d38c73979a2c2c12b5a674e6689d70" - integrity sha512-rwi5xJeU6utXoEIiMvVBMc9eJ2/ofzB+7nLOdnZuFTmNCLqRiQh2sMG9MqCxHU/69VC/Fwp5dV9306Qd54ll1Q== +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar-fs@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: - debug "4.1.0" - is2 "2.0.1" + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" -temp-fs@^0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/temp-fs/-/temp-fs-0.9.9.tgz#8071730437870720e9431532fe2814364f8803d7" - integrity sha1-gHFzBDeHByDpQxUy/igUNk+IA9c= +tar-stream@^2.1.4, tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: - rimraf "~2.5.2" + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== +tesseract.js-core@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/tesseract.js-core/-/tesseract.js-core-4.0.4.tgz#6710744a02cb538a83fbb7aafc2e7be204f76eb3" + integrity sha512-MJ+vtktjAaT0681uPl6TDUPhbRbpD/S9emko5rtorgHRZpQo7R3BG7h+3pVHgn1KjfNf1bvnx4B7KxEK8YKqpg== + +tesseract.js@^4.0.5: + version "4.0.6" + resolved "https://registry.yarnpkg.com/tesseract.js/-/tesseract.js-4.0.6.tgz#2bd207deae675b8ca879ad0f0396648a0db7bc6c" + integrity sha512-X6dKgbK6QB+iXWcQEnPXsgXWJCAxTq4TMEMmzS4QSGXmv5isYxIrXrxcsqF7n5DYXcOBDqk/WLIWbRiB3KOQdQ== + dependencies: + bmp-js "^0.1.0" + file-type "^12.4.2" + idb-keyval "^6.2.0" + is-electron "^2.2.2" + is-url "^1.2.4" + node-fetch "^2.6.9" + opencollective-postinstall "^2.0.3" + regenerator-runtime "^0.13.3" + resolve-url "^0.2.1" + tesseract.js-core "^4.0.4" + wasm-feature-detect "^1.2.11" + zlibjs "^0.3.1" + +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + +text-files-loader@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/text-files-loader/-/text-files-loader-1.0.5.tgz#9fa9a1432c29ef7b4649d501b77c5f6d20175700" + integrity sha512-Wqg56zRrdtzvehZtnB7fJ9Sv9UeRAIi2FYHWJENYic6E3JErWEdnjRMmzRfx5j1iD6T/EfsNziSertpl08wGZA== + dependencies: + async "^1.2.0" + extend-object "^1.0.0" + filewalker "^0.1.2" + fs-traverse "0.0.1" text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== dependencies: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" -through@2, through@^2.3.6, through@~2.3, through@~2.3.1: +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +through@2, "through@>=2.2.7 <3", through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -timed-out@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-2.0.0.tgz#f38b0ae81d3747d628001f41dafc652ace671c0a" - integrity sha1-84sK6B03R9YoAB9B2vxlKs5nHAo= - -title-case@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" - integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== dependencies: - no-case "^2.2.0" - upper-case "^1.0.3" + rimraf "^3.0.0" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - os-tmpdir "~1.0.2" + is-number "^7.0.0" -tough-cookie@^2.3.3: - 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.28" - punycode "^2.1.1" +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== -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== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== traverse-chain@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1" - integrity sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE= - -triple-beam@^1.2.0, triple-beam@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" - integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== + integrity sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg== -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= +trouter@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/trouter/-/trouter-2.0.1.tgz#2726a5f8558e090d24c3a393f09eaab1df232df6" + integrity sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ== dependencies: - safe-buffer "^5.0.1" + matchit "^1.0.0" + +ts-dedent@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== + +ts-node@^10.8.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.14.1: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.11.1, tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - prelude-ls "~1.1.2" + prelude-ls "^1.2.1" type-detect@^4.0.0, type-detect@^4.0.5: version "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.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-fest@^2.0.0, type-fest@^2.5.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@^4.6.4: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +ua-parser-js@^1.0.1: + version "1.0.34" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.34.tgz#b33f41c415325839f354005d25a2f588be296976" + integrity sha512-K9mwJm/DaB6mRLZfw6q8IMXipcrmuT6yfhYmwhAkuh+81sChuYstYA+znlgaflUPaYUa3odxKPKGw6Vw/lANew== -unzip-response@^1.0.0: +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - integrity sha1-uYTwh3/AqJwsdzzB73tbIytbBv4= + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" -upper-case@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= +unbzip2-stream@1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== dependencies: - punycode "^2.1.0" + tslib "^2.0.3" -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: - prepend-http "^1.0.1" + punycode "^2.1.0" -util-arity@^1.0.2: +util-arity@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/util-arity/-/util-arity-1.1.0.tgz#59d01af1fdb3fede0ac4e632b0ab5f6ce97c9330" - integrity sha1-WdAa8f2z/t4KxOYysKtfbOl8kzA= + integrity sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -"util@>=0.10.3 <1": - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" +uuid@9.0.0, uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -verror@1.10.0, verror@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@^1.10.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" -webdriver@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-5.7.2.tgz#239b188b3418c49e907125bd256e1e3c6d40c37c" - integrity sha512-TJE1DNcCiqDUijZx+vP+tlfrtaF3BotMt5xP9NxamUoecGPRL2sslv06Lc0Pw6dV+21vbPs8nva8Nqs02YL2bw== - dependencies: - "@wdio/config" "^5.7.2" - "@wdio/logger" "^5.7.0" - deepmerge "^2.0.1" - lodash.merge "^4.6.1" - request "^2.83.0" - -webdriverio@^5.6.6: - version "5.7.2" - resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-5.7.2.tgz#95ad8bd4a684b6b047da274f388469a995fd1bcb" - integrity sha512-8XaV3WYjZMf9xNVXQP3o9Qx9m+CBnYXXThhWAUFGd1ytbAUwZlUn3QTI9acJMj+hos9Ma49GGSKDV8cVWU/wSA== - dependencies: - "@wdio/config" "^5.7.2" - "@wdio/logger" "^5.7.0" - "@wdio/repl" "^5.7.2" +wasm-feature-detect@^1.2.11: + version "1.5.1" + resolved "https://registry.yarnpkg.com/wasm-feature-detect/-/wasm-feature-detect-1.5.1.tgz#0db57a7d7f8c26b743dde85386215ae2b135e78a" + integrity sha512-GHr23qmuehNXHY4902/hJ6EV5sUANIJC3R/yMfQ7hWDg3nfhlcJfnIL96R2ohpIwa62araN6aN4bLzzzq5GXkg== + +webdriver@8.10.2: + version "8.10.2" + resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-8.10.2.tgz#574bc9d08701f43d489a64c4fdb2d20889f89907" + integrity sha512-xwoY+JtmEwN9hFx00V08PBlLLbuOHnPcO78ImPn6IzlhDW960f/6C8fzP0oiJkDyjQ7U81gHU6Mjkp/tBNpKEQ== + dependencies: + "@types/node" "^20.1.0" + "@types/ws" "^8.5.3" + "@wdio/config" "8.10.2" + "@wdio/logger" "8.6.6" + "@wdio/protocols" "8.10.2" + "@wdio/types" "8.10.2" + "@wdio/utils" "8.10.2" + deepmerge-ts "^5.0.0" + got "^12.1.0" + ky "^0.33.0" + ws "^8.8.0" + +webdriverio@^8.10.2: + version "8.10.2" + resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-8.10.2.tgz#c51608df07150e7739cce474b596ec3e3203ec12" + integrity sha512-VrA9oFI17sBhPDvMwywve4CwODHi5FEzjn9gyInN7Nv+6tVaDC+PVGsKV7ZQQSj5C0bzPCn3IgXSoM1Qqn3XeQ== + dependencies: + "@types/node" "^20.1.0" + "@wdio/config" "8.10.2" + "@wdio/logger" "8.6.6" + "@wdio/protocols" "8.10.2" + "@wdio/repl" "8.10.1" + "@wdio/types" "8.10.2" + "@wdio/utils" "8.10.2" + archiver "^5.0.0" + aria-query "^5.0.0" + css-shorthand-properties "^1.1.1" css-value "^0.0.1" + devtools "8.10.2" + devtools-protocol "^0.0.1138159" grapheme-splitter "^1.0.2" - lodash.isobject "^3.0.2" - lodash.merge "^4.6.1" + import-meta-resolve "^3.0.0" + is-plain-obj "^4.1.0" + lodash.clonedeep "^4.5.0" lodash.zip "^4.2.0" - rgb2hex "^0.1.0" - serialize-error "^3.0.0" - webdriver "^5.7.2" + minimatch "^9.0.0" + puppeteer-core "20.1.1" + query-selector-shadow-dom "^1.0.0" + resq "^1.9.1" + rgb2hex "0.2.5" + serialize-error "^8.0.0" + webdriver "8.10.2" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-collection@^1.0.1: + 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.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^2.0.1, which@^2.0.2: + 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" -winston-transport@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.3.0.tgz#df68c0c202482c448d9b47313c07304c2d7c2c66" - integrity sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A== +which@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-3.0.0.tgz#a9efd016db59728758a390d23f1687b6e8f59f8e" + integrity sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ== dependencies: - readable-stream "^2.3.6" - triple-beam "^1.2.0" + isexe "^2.0.0" -winston@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.2.1.tgz#63061377976c73584028be2490a1846055f77f07" - integrity sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw== - dependencies: - async "^2.6.1" - diagnostics "^1.1.1" - is-stream "^1.1.0" - logform "^2.1.1" - one-time "0.0.4" - readable-stream "^3.1.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.3.0" +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== + +word-wrap@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" + integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== -wordwrap@~1.0.0: +wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" +ws@8.13.0, ws@^8.8.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +xml@0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/xml/-/xml-0.0.12.tgz#f08b347109912be00285785f46f15ad8e50a5f67" + integrity sha512-vXz2nTtS+bQYemYFzbTxjlmdMOmIhmP+frdnJi3M2Ul/ezrwcW9IYwiwqvecY3PtHNXGKBDrA+DNAEky0zY7Xg== -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.2.1, yaml@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-3.2.0.tgz#5081355d19d9d0c8c5d81ada908cb4e6d186664f" + integrity sha512-eANlJIqYwhwS/asi4ybKxkeJYUIjNMZXL36C/KICV5jyudUZWp+/lEfBHM0PuJcQjBfs00HwqePEQjtLJd+Kyw== + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.1.0" + +yargs@17.7.1, yargs@^17.0.0: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^16.0.0, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-5.0.0.tgz#3355144977d05757dbb86d6e38ec056123b3a66e" + integrity sha512-krgVLGNhMWUVY1EJkM/bgbvn3yCIRrsZp6KaeX8hx8ztT+jBtX7/flTQcSHe5089xIDQRUsEr2mzlZVNe/7P5w== + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.2.0" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^3.2.0" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + +yup@^0.32.11: + version "0.32.11" + resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5" + integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/lodash" "^4.14.175" + lodash "^4.17.21" + lodash-es "^4.17.21" + nanoclone "^0.2.1" + property-expr "^2.0.4" + toposort "^2.0.2" + +zip-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79" + integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== dependencies: - fd-slicer "~1.0.1" + archiver-utils "^2.1.0" + compress-commons "^4.1.0" + readable-stream "^3.6.0" + +zlibjs@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/zlibjs/-/zlibjs-0.3.1.tgz#50197edb28a1c42ca659cc8b4e6a9ddd6d444554" + integrity sha512-+J9RrgTKOmlxFSDHo0pI1xM6BLVUv+o0ZT9ANtCxGkjIVCCUdx9alUF8Gm+dGLKbkkkidWIHFDZHDMpfITt4+w==