diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 3d26498..0000000 --- a/.babelrc +++ /dev/null @@ -1,25 +0,0 @@ -{ - "env": { - "test": { - "plugins": ["babel-plugin-transform-es2015-modules-commonjs"] - } - }, - "presets": [ - [ - "@babel/preset-env", - { - "modules": false, - "targets": { - "esmodules": true - }, - "exclude": [ - "@babel/plugin-transform-async-to-generator", - "@babel/plugin-proposal-object-rest-spread" - ] - } - ], - "@babel/preset-typescript", - "@babel/preset-react" - ], - "plugins": ["@babel/plugin-proposal-optional-chaining", "@babel/plugin-proposal-class-properties"] -} diff --git a/.env.example b/.env.example index 46da2aa..573962b 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,5 @@ -# The client ID you received from GitHub for your GitHub App. GITHUB_OAUTH_CLIENT_ID=GITHUB_OAUTH_CLIENT_ID - -# The client secret you received from GitHub for your GitHub App. GITHUB_OAUTH_CLIENT_SECRET=GITHUB_OAUTH_CLIENT_SECRET + +SENTRY_PUBLIC_KEY=SENTRY_PUBLIC_KEY +SENTRY_PROJECT_ID=SENTRY_PROJECT_ID diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..b3b9333 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "root": true, + "env": { + "es2022": true + }, + "overrides": [ + { + "files": ["*.tsx?"], + "excludedFiles": ["*.d.ts"], + "plugins": ["@typescript-eslint"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + } + } + ] +} diff --git a/.github/workflows/ci.yml b/.github/workflows/build.yml similarity index 65% rename from .github/workflows/ci.yml rename to .github/workflows/build.yml index f7075e7..2d646c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/build.yml @@ -1,29 +1,13 @@ -name: CI - +name: Generate build for reuse on: - push: - branches: - - '**' - paths-ignore: - - 'server/**' - pull_request: - branches: - - '**' - paths-ignore: - - 'server/**' + workflow_call: jobs: - build-and-test: + build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - - name: Retrieve vscode icons - uses: actions/checkout@v2 - with: - repository: 'vscode-icons/vscode-icons' - path: 'vscode-icons' + - uses: actions/checkout@v3 - name: Get yarn cache directory path id: yarn-cache-dir-path @@ -38,19 +22,24 @@ jobs: restore-keys: | ${{ runner.os }}-yarn- - - name: Install deps + - name: Install Dependencies env: PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true run: | yarn + - name: Retrieve vscode icons + uses: actions/checkout@v3 + with: + repository: 'vscode-icons/vscode-icons' + path: 'vscode-icons' + - name: Build run: | make build - - name: Test - uses: mujo-code/puppeteer-headful@master - env: - CI: 'true' + - name: Archive production artifacts + uses: actions/upload-artifact@v3 with: - args: yarn test + name: dist + path: dist diff --git a/.github/workflows/dependabot.yml b/.github/workflows/dependabot.yml new file mode 100644 index 0000000..f31db14 --- /dev/null +++ b/.github/workflows/dependabot.yml @@ -0,0 +1,142 @@ +# Source: https://github.com/hrvey/combine-prs-workflow +name: 'Combine dependabot PRs' + +# Controls when the action will run - in this case triggered manually +on: + workflow_dispatch: + inputs: + branchPrefix: + description: 'Branch prefix to find combinable PRs based on' + required: true + default: 'dependabot' + mustBeGreen: + description: 'Only combine PRs that are green (status is success)' + required: true + default: false + combineBranchName: + description: 'Name of the branch to combine PRs into' + required: true + default: 'dependabot-merged' + ignoreLabel: + description: 'Exclude PRs with this label' + required: true + default: 'no-combine' + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "combine-prs" + combine-prs: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - uses: actions/github-script@v3 + id: fetch-branch-names + name: Fetch branch names + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const pulls = await github.paginate('GET /repos/:owner/:repo/pulls', { + owner: context.repo.owner, + repo: context.repo.repo + }); + branches = []; + prs = []; + base_branch = null; + for (const pull of pulls) { + const branch = pull['head']['ref']; + console.log('Pull for branch: ' + branch); + if (branch.startsWith('${{ github.event.inputs.branchPrefix }}')) { + console.log('Branch matched: ' + branch); + statusOK = true; + if(${{ github.event.inputs.mustBeGreen }}) { + console.log('Checking green status: ' + branch); + const statuses = await github.paginate('GET /repos/{owner}/{repo}/commits/{ref}/status', { + owner: context.repo.owner, + repo: context.repo.repo, + ref: branch + }); + if(statuses.length > 0) { + const latest_status = statuses[0]['state']; + console.log('Validating status: ' + latest_status); + if(latest_status != 'success') { + console.log('Discarding ' + branch + ' with status ' + latest_status); + statusOK = false; + } + } + } + console.log('Checking labels: ' + branch); + const labels = pull['labels']; + for(const label of labels) { + const labelName = label['name']; + console.log('Checking label: ' + labelName); + if(labelName == '${{ github.event.inputs.ignoreLabel }}') { + console.log('Discarding ' + branch + ' with label ' + labelName); + statusOK = false; + } + } + if (statusOK) { + console.log('Adding branch to array: ' + branch); + branches.push(branch); + prs.push('#' + pull['number'] + ' ' + pull['title']); + base_branch = pull['base']['ref']; + } + } + } + + if (branches.length == 0) { + core.setFailed('No PRs/branches matched criteria'); + return; + } + + core.setOutput('base-branch', base_branch); + core.setOutput('prs-string', prs.join('\n')); + + combined = branches.join(' ') + console.log('Combined: ' + combined); + return combined + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2.3.3 + with: + fetch-depth: 0 + # Creates a branch with other PR branches merged together + - name: Created combined branch + env: + BASE_BRANCH: ${{ steps.fetch-branch-names.outputs.base-branch }} + BRANCHES_TO_COMBINE: ${{ steps.fetch-branch-names.outputs.result }} + COMBINE_BRANCH_NAME: ${{ github.event.inputs.combineBranchName }} + run: | + echo "$BRANCHES_TO_COMBINE" + sourcebranches="${BRANCHES_TO_COMBINE%\"}" + sourcebranches="${sourcebranches#\"}" + + basebranch="${BASE_BRANCH%\"}" + basebranch="${basebranch#\"}" + + git config pull.rebase false + git config user.name github-actions + git config user.email github-actions@github.com + + git branch $COMBINE_BRANCH_NAME $basebranch + git checkout $COMBINE_BRANCH_NAME + git pull origin $sourcebranches --no-edit + git push origin $COMBINE_BRANCH_NAME + # Creates a PR with the new combined branch + - uses: actions/github-script@v3 + name: Create Combined Pull Request + env: + PRS_STRING: ${{ steps.fetch-branch-names.outputs.prs-string }} + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const prString = process.env.PRS_STRING; + const body = 'This PR was created by the Combine PRs action by combining the following PRs:\n' + prString; + await github.pulls.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: 'Combined PR', + head: '${{ github.event.inputs.combineBranchName }}', + base: '${{ steps.fetch-branch-names.outputs.base-branch }}', + body: body + }); diff --git a/.github/workflows/release-assets.yml b/.github/workflows/release-assets.yml index 155f623..c7f26d9 100644 --- a/.github/workflows/release-assets.yml +++ b/.github/workflows/release-assets.yml @@ -7,39 +7,27 @@ on: - release-* jobs: + build: + uses: ./.github/workflows/build.yml + + version: + uses: ./.github/workflows/version.yml + release: + needs: + - build + - version + runs-on: ubuntu-latest steps: - - name: Get the ref - id: get_ref - run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3) + - uses: actions/checkout@v3 - - uses: actions/checkout@v1 - - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - - name: Cache deps - uses: actions/cache@v1 - id: yarn-cache + - name: Download a built dist artifact + uses: actions/download-artifact@v3 with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - name: Retrieve vscode icons - uses: actions/checkout@v2 - with: - repository: 'vscode-icons/vscode-icons' - path: 'vscode-icons' - - - name: Build - run: | - yarn - make build + name: dist + path: dist - name: Create Release id: create_release @@ -47,8 +35,8 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tag_name: ${{ steps.get_ref.outputs.VERSION }} - release_name: ${{ steps.get_ref.outputs.VERSION }} + tag_name: ${{ needs.version.outputs.VERSION }} + release_name: ${{ needs.version.outputs.VERSION }} draft: false prerelease: false diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..cde00c9 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,96 @@ +name: Tests + +on: + push: + branches: + - '**' + paths-ignore: + - 'server/**' + pull_request: + branches: + - '**' + paths-ignore: + - 'server/**' + # Runs everyday to detect GitHub update in time + schedule: + - cron: '0 0 * * *' + +jobs: + build: + uses: ./.github/workflows/build.yml + + e2e-test: + needs: build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Download a built dist artifact + uses: actions/download-artifact@v3 + with: + name: dist + path: dist + + # Found no way to reuse cache steps + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Cache deps + uses: actions/cache@v1 + id: yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install Dependencies + env: + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true + run: | + yarn + + - name: E2E Test + uses: mujo-code/puppeteer-headful@master + env: + CI: 'true' + with: + args: yarn test + + unit-test: + needs: build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Download a built dist artifact + uses: actions/download-artifact@v3 + with: + name: dist + + # Found no way to reuse cache steps + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Cache deps + uses: actions/cache@v1 + id: yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install Dependencies + env: + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true + run: | + yarn + + - name: Unit Test + run: | + yarn jest src diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml new file mode 100644 index 0000000..faf008f --- /dev/null +++ b/.github/workflows/version.yml @@ -0,0 +1,19 @@ +name: Get VERSION for referencing +on: + workflow_call: + outputs: + VERSION: + description: "The VERSION string" + value: ${{ jobs.version.outputs.VERSION }} + +jobs: + version: + runs-on: ubuntu-latest + + outputs: + VERSION: ${{ steps.get_ref.outputs.VERSION }} + + steps: + - name: Get the ref + id: get_ref + run: echo ::set-output name=VERSION::$(echo $GITHUB_REF | cut -d / -f 3) diff --git a/.gitignore b/.gitignore index c4ca72a..8cb6eea 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ tmp dist yarn-error.log vscode-icons +firefox-profile diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..9bfbc3a --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +yarn lint-staged --quiet diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..9722c5b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +*-profile/ +dist/ +vscode-icons/ +Safari diff --git a/Makefile b/Makefile index a3807ea..3ef1ba6 100755 --- a/Makefile +++ b/Makefile @@ -9,6 +9,9 @@ update-icons: node scripts/resolve-languages-map node scripts/generate-icon-index +version-safari: + sed -i '' -E 's/MARKETING_VERSION = .*;/MARKETING_VERSION = $(RAW_VERSION);/' Safari/Gitako/Gitako.xcodeproj/project.pbxproj + build: rm -rf dist yarn build @@ -45,6 +48,7 @@ release: $(MAKE) compress-source $(MAKE) compress-env $(MAKE) compress-icons-into-source-for-mz-review + $(MAKE) copy-build-safari compress-source: git archive -o dist/source-$(FULL_VERSION).zip HEAD diff --git a/Safari/Gitako/Gitako.xcodeproj/project.pbxproj b/Safari/Gitako/Gitako.xcodeproj/project.pbxproj index eb1f85a..e929ef8 100644 --- a/Safari/Gitako/Gitako.xcodeproj/project.pbxproj +++ b/Safari/Gitako/Gitako.xcodeproj/project.pbxproj @@ -481,6 +481,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_HARDENED_RUNTIME = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -542,6 +543,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_HARDENED_RUNTIME = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -565,10 +567,11 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_ENTITLEMENTS = "Gitako Extension/Gitako_Extension.entitlements"; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 3.6.1; + CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = KVT97368XL; + ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = "Gitako Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -576,9 +579,10 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 3.6.1; + MARKETING_VERSION = 3.9.0; PRODUCT_BUNDLE_IDENTIFIER = enixcoda.Gitako.Extension; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; }; @@ -588,10 +592,11 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_ENTITLEMENTS = "Gitako Extension/Gitako_Extension.entitlements"; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 3.6.1; + CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = KVT97368XL; + ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = "Gitako Extension/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -599,9 +604,10 @@ "@executable_path/../../../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 3.6.1; + MARKETING_VERSION = 3.9.0; PRODUCT_BUNDLE_IDENTIFIER = enixcoda.Gitako.Extension; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; }; @@ -614,8 +620,8 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = Gitako/Gitako.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = KVT97368XL; @@ -625,9 +631,10 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 3.6.1; + MARKETING_VERSION = 3.9.0; PRODUCT_BUNDLE_IDENTIFIER = enixcoda.Gitako; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = "Developer Sign for Distribution"; SWIFT_VERSION = 5.0; }; name = Debug; @@ -639,8 +646,8 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = Gitako/Gitako.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = KVT97368XL; @@ -650,9 +657,10 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 3.6.1; + MARKETING_VERSION = 3.9.0; PRODUCT_BUNDLE_IDENTIFIER = enixcoda.Gitako; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = "Developer Sign for Distribution"; SWIFT_VERSION = 5.0; }; name = Release; diff --git a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Contents.json b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Contents.json index 1fc4d50..5136086 100644 --- a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,16 +1,19 @@ { "images" : [ { + "filename" : "Gitako-16.png", "idiom" : "mac", "scale" : "1x", "size" : "16x16" }, { + "filename" : "Gitako-32.png", "idiom" : "mac", "scale" : "2x", "size" : "16x16" }, { + "filename" : "Gitako-33.png", "idiom" : "mac", "scale" : "1x", "size" : "32x32" @@ -28,6 +31,7 @@ "size" : "128x128" }, { + "filename" : "Gitako-257.png", "idiom" : "mac", "scale" : "2x", "size" : "128x128" @@ -39,16 +43,19 @@ "size" : "256x256" }, { + "filename" : "Gitako-513.png", "idiom" : "mac", "scale" : "2x", "size" : "256x256" }, { + "filename" : "Gitako-512.png", "idiom" : "mac", "scale" : "1x", "size" : "512x512" }, { + "filename" : "Gitako-1024.png", "idiom" : "mac", "scale" : "2x", "size" : "512x512" diff --git a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-1024.png b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-1024.png new file mode 100644 index 0000000..cae095d Binary files /dev/null and b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-1024.png differ diff --git a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-16.png b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-16.png new file mode 100644 index 0000000..285379f Binary files /dev/null and b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-16.png differ diff --git a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-257.png b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-257.png new file mode 100644 index 0000000..6902e60 Binary files /dev/null and b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-257.png differ diff --git a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-32.png b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-32.png new file mode 100644 index 0000000..624ce80 Binary files /dev/null and b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-32.png differ diff --git a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-33.png b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-33.png new file mode 100644 index 0000000..624ce80 Binary files /dev/null and b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-33.png differ diff --git a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-512.png b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-512.png new file mode 100644 index 0000000..327de05 Binary files /dev/null and b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-512.png differ diff --git a/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-513.png b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-513.png new file mode 100644 index 0000000..327de05 Binary files /dev/null and b/Safari/Gitako/Gitako/Assets.xcassets/AppIcon.appiconset/Gitako-513.png differ diff --git a/Safari/Gitako/Gitako/Info.plist b/Safari/Gitako/Gitako/Info.plist index c748bf6..0d2a45b 100644 --- a/Safari/Gitako/Gitako/Info.plist +++ b/Safari/Gitako/Gitako/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - $(MARKETING_VERSION) + $(CURRENT_PROJECT_VERSION) LSApplicationCategoryType public.app-category.productivity LSMinimumSystemVersion diff --git a/__tests__/.eslintrc.json b/__tests__/.eslintrc.json new file mode 100644 index 0000000..6746bdb --- /dev/null +++ b/__tests__/.eslintrc.json @@ -0,0 +1,12 @@ +{ + "env": { + "jest": true + }, + "overrides": [ + { + "files": ["*.ts"], + "excludedFiles": ["*.d.ts"], + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"] + } + ] +} diff --git a/__tests__/babel.config.js b/__tests__/babel.config.js new file mode 100644 index 0000000..8e0046f --- /dev/null +++ b/__tests__/babel.config.js @@ -0,0 +1,2 @@ +// TS files cannot be transformed without this babel config +module.exports = require('../babel.config') diff --git a/__tests__/cases/non-parallel/pjax.commits-page.ts b/__tests__/cases/non-parallel/pjax.commits-page.ts index cdd87bc..a37310a 100644 --- a/__tests__/cases/non-parallel/pjax.commits-page.ts +++ b/__tests__/cases/non-parallel/pjax.commits-page.ts @@ -1,4 +1,6 @@ -import { expectToFind, expectToNotFind, sleep, waitForLegacyPJAXRedirect } from '../../utils' +import { expectToFind, expectToNotFind, sleep, waitForRedirect } from '../../utils' + +jest.retryTimes(3) describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/commits/develop')) @@ -6,11 +8,11 @@ describe(`in Gitako project page`, () => { it('should not break go back in history', async () => { for (let i = 0; i < 3; i++) { const commitLinks = await page.$$( - `#js-repo-pjax-container .TimelineItem-body ol li > div:nth-child(1) a[href*="/commit/"]`, + `main .TimelineItem-body ol li > div:nth-child(1) a[href*="/commit/"]`, ) if (commitLinks.length < 2) throw new Error(`No enough commits`) commitLinks[i].click() - await waitForLegacyPJAXRedirect() + await waitForRedirect() await expectToFind('div.commit') await sleep(1000) diff --git a/__tests__/cases/non-parallel/pjax.files-page.ts b/__tests__/cases/non-parallel/pjax.files-page.ts index bfe72bb..fd0915c 100644 --- a/__tests__/cases/non-parallel/pjax.files-page.ts +++ b/__tests__/cases/non-parallel/pjax.files-page.ts @@ -1,4 +1,6 @@ -import { expectToFind, expectToNotFind, sleep, waitForLegacyPJAXRedirect } from '../../utils' +import { expectToFind, expectToNotFind, sleep, waitForRedirect } from '../../utils' + +jest.retryTimes(3) describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/tree/develop/src')) @@ -9,7 +11,7 @@ describe(`in Gitako project page`, () => { `.js-details-container div[role="row"] div[role="rowheader"] a[title*="."]`, ) if (commitLinks.length < 2) throw new Error(`No enough files`) - await waitForLegacyPJAXRedirect(async () => { + await waitForRedirect(async () => { await commitLinks[i].click() }) await expectToFind('table.js-file-line-container') diff --git a/__tests__/cases/non-parallel/pjax.general.ts b/__tests__/cases/non-parallel/pjax.general.ts index 76657f4..a30f51a 100644 --- a/__tests__/cases/non-parallel/pjax.general.ts +++ b/__tests__/cases/non-parallel/pjax.general.ts @@ -4,9 +4,11 @@ import { patientClick, selectFileTreeItem, sleep, - waitForLegacyPJAXRedirect + waitForRedirect, } from '../../utils' +jest.retryTimes(3) + describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/tree/develop/src')) @@ -15,14 +17,14 @@ describe(`in Gitako project page`, () => { await expandFloatModeSidebar() await patientClick(selectFileTreeItem('src/analytics.ts')) - await waitForLegacyPJAXRedirect() + await waitForRedirect() await collapseFloatModeSidebar() await page.click('a[data-selected-links^="repo_issues "]') - await waitForLegacyPJAXRedirect() + await waitForRedirect() await page.click('a[data-selected-links^="repo_pulls "]') - await waitForLegacyPJAXRedirect() + await waitForRedirect() page.goBack() await sleep(1000) diff --git a/__tests__/cases/non-parallel/pjax.internal.ts b/__tests__/cases/non-parallel/pjax.internal.ts index 4b57bec..d291540 100644 --- a/__tests__/cases/non-parallel/pjax.internal.ts +++ b/__tests__/cases/non-parallel/pjax.internal.ts @@ -5,23 +5,25 @@ import { patientClick, selectFileTreeItem, sleep, - waitForLegacyPJAXRedirect + waitForRedirect, } from '../../utils' +jest.retryTimes(3) + describe(`in Gitako project page`, () => { - beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako')) + beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/tree/test/multiple-changes')) it('should work with PJAX', async () => { await sleep(3000) await expandFloatModeSidebar() await patientClick(selectFileTreeItem('.babelrc')) - await waitForLegacyPJAXRedirect() + await waitForRedirect() // The selector for file content await expectToFind('table.js-file-line-container') - await waitForLegacyPJAXRedirect(async () => { + await waitForRedirect(async () => { await sleep(1000) // This prevents failing in some cases due to some mystery scheduling issue of puppeteer or jest page.goBack() }) diff --git a/__tests__/cases/non-parallel/project-page.gitako.ts b/__tests__/cases/non-parallel/project-page.gitako.ts index 6a831a9..109b2a4 100644 --- a/__tests__/cases/non-parallel/project-page.gitako.ts +++ b/__tests__/cases/non-parallel/project-page.gitako.ts @@ -3,11 +3,15 @@ import { expectToFind, expectToNotFind, scroll, - selectFileTreeItem + selectFileTreeItem, } from '../../utils' +jest.retryTimes(3) + describe(`in Gitako project page`, () => { - beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako')) + beforeAll(() => + page.goto('https://github.com/EnixCoda/Gitako/tree/test/200-changed-files-200-lines-each'), + ) it('should render Gitako', async () => { await expectToFind('.gitako-side-bar .gitako-side-bar-body-wrapper') @@ -22,11 +26,11 @@ describe(`in Gitako project page`, () => { const filesEle = await page.waitForSelector('.gitako-side-bar .files') // node of tsconfig.json should NOT be rendered before scroll down - await expectToNotFind(selectFileTreeItem('package.json')) + await expectToNotFind(selectFileTreeItem('tsconfig.json')) const box = await filesEle?.boundingBox() if (box) { await page.mouse.move(box.x + 40, box.y + 40) - await scroll({ totalDistance: 200, duration: 1000 }) + await scroll({ totalDistance: 10000, stepDistance: 100 }) // node of tsconfig.json should be rendered now await expectToFind(selectFileTreeItem('tsconfig.json')) diff --git a/__tests__/cases/parallel/expand-to-target.ts b/__tests__/cases/parallel/expand-to-target.ts index 4be5dc0..9f5895e 100644 --- a/__tests__/cases/parallel/expand-to-target.ts +++ b/__tests__/cases/parallel/expand-to-target.ts @@ -1,14 +1,9 @@ -import { - expectToFind, - selectFileTreeItem, - sleep, - waitForLegacyPJAXRedirect -} from '../../utils' +import { expectToFind, selectFileTreeItem, sleep, waitForRedirect } from '../../utils' describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/tree/develop/src')) - it('expand to target on load and after PJAX', async () => { + it('expand to target on load and after redirect', async () => { await sleep(3000) // Expect Gitako sidebar to have expanded src to see contents @@ -17,7 +12,7 @@ describe(`in Gitako project page`, () => { await page.click( `.js-details-container div[role="row"] div[role="rowheader"] [title="components"]`, ) - await waitForLegacyPJAXRedirect() + await waitForRedirect() // Expect Gitako sidebar to have expanded components and see contents await expectToFind(selectFileTreeItem('src/components/Gitako.tsx')) diff --git a/__tests__/jest.config.js b/__tests__/jest.config.js index d9cf6da..c31f45d 100644 --- a/__tests__/jest.config.js +++ b/__tests__/jest.config.js @@ -144,7 +144,7 @@ module.exports = { testMatch: ['**/?(*.)+(spec|test).ts?(x)'], // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped - testPathIgnorePatterns: ['/node_modules/', '.d.ts$', '/vscode-icons/'], + testPathIgnorePatterns: ['/node_modules/', '.d.ts$'], // The regexp pattern or array of patterns that Jest uses to detect test files // testRegex: [], @@ -158,7 +158,7 @@ module.exports = { // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href // testURL: "http://localhost", - testTimeout: 20000, + testTimeout: 30 * 1000, // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" // timers: "real", diff --git a/__tests__/utils.ts b/__tests__/utils.ts index c81b87e..0e8dc1e 100644 --- a/__tests__/utils.ts +++ b/__tests__/utils.ts @@ -12,38 +12,36 @@ export function sleep(timeout: number) { export async function scroll({ totalDistance, - step = 1, - duration = 500, + stepDistance = 100, }: { totalDistance: number - step?: number - duration?: number + stepDistance?: number }) { let distance = 0 - while ((distance += step) < totalDistance) { - await (page.mouse as any).wheel({ deltaY: step }) - await sleep((duration * step) / totalDistance) + while ((distance += stepDistance) < totalDistance) { + await page.mouse.wheel({ deltaY: stepDistance }) } } -export function assert(condition: boolean, err?: Error | string) { +export function assert(condition: boolean, err?: Error | string): asserts condition { if (!condition) throw typeof err === 'string' ? new Error(err) : err } let counter = 0 -export async function listenTo( +export async function listenTo( event: string, target: 'document' | 'window', - callback: (...args: Args) => void, + callback: (...args: Args) => void, oneTime?: boolean, ) { const callbackName = 'onEvent' + ++counter await page.exposeFunction(callbackName, callback) await page.evaluate( - (event, target, callbackName, oneTime) => { + (event: string, target: 'window' | 'document', callbackName: string, oneTime?: boolean) => { const t = target === 'document' ? document : window - const onEvent = (...args: any[]): void => { - ;((window[callbackName as any] as any) as (...args: any[]) => void)(...args) + const onEvent = (...args: unknown[]): void => { + const method = window[callbackName as keyof Window] + method?.(...args) if (oneTime) t.removeEventListener(event, onEvent) } t.addEventListener(event, onEvent) @@ -74,6 +72,24 @@ export async function waitForLegacyPJAXRedirect(action?: () => void | Promise void | Promise) { + const promise = once('turbo:load', 'document') + await action?.() + return promise +} + +export async function waitForRedirect(action?: () => void | Promise) { + let fired = false + const $action = + action && + (() => { + if (fired) return + fired = true + return action() + }) + return Promise.race([waitForLegacyPJAXRedirect($action), waitForTurboRedirect($action)]) +} + export function selectFileTreeItem(path: string): string { return `.gitako-side-bar .files a[title="${path}"]` } @@ -84,7 +100,9 @@ export async function patientClick(selector: string) { } export async function expandFloatModeSidebar() { - const rect = await (await page.$('.gitako-toggle-show-button'))?.evaluate(button => { + const rect = await ( + await page.$('.gitako-toggle-show-button') + )?.evaluate(button => { const { x, y, width, height } = button.getBoundingClientRect() // pass required properties to avoid serialization issues return { x, y, width, height } diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..5b020ac --- /dev/null +++ b/babel.config.js @@ -0,0 +1,26 @@ +// `.babelrc` is not loaded by babel-loader for files under node_modules, but `babel.config.js` is +module.exports = { + env: { + test: { + plugins: ['babel-plugin-transform-es2015-modules-commonjs'], + }, + }, + presets: [ + [ + '@babel/preset-env', + { + modules: false, + targets: { + esmodules: true, + }, + exclude: [ + '@babel/plugin-transform-async-to-generator', + '@babel/plugin-proposal-object-rest-spread', + ], + }, + ], + '@babel/preset-typescript', + '@babel/preset-react', + ], + plugins: ['@babel/plugin-proposal-optional-chaining', '@babel/plugin-proposal-class-properties'], +} diff --git a/jest.config.js b/jest.config.js index fbb7f15..313b653 100644 --- a/jest.config.js +++ b/jest.config.js @@ -64,10 +64,7 @@ module.exports = { maxWorkers: 8, // An array of directory names to be searched recursively up from the requiring module's location - moduleDirectories: [ - "src", - "node_modules" - ], + moduleDirectories: ['src', 'node_modules'], // An array of file extensions your modules use // moduleFileExtensions: [ @@ -133,7 +130,7 @@ module.exports = { // snapshotSerializers: [], // The test environment that will be used for testing - // testEnvironment: 'node', + testEnvironment: 'jsdom', // Options that will be passed to the testEnvironment // testEnvironmentOptions: {}, diff --git a/package.json b/package.json index 02b5185..95595c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gitako", - "version": "3.6.2", + "version": "3.9.0", "description": "File tree for GitHub, and more than that.", "repository": "https://github.com/EnixCoda/Gitako", "author": "EnixCoda", @@ -8,77 +8,91 @@ "private": true, "homepage": "https://github.com/EnixCoda/Gitako", "scripts": { + "prepare": "husky install", "dev": "VERSION=dev-v$(node scripts/get-version.js) webpack --watch", "dev-safari": "TARGET=safari yarn run dev", - "debug-firefox": "web-ext run -s dist", - "analyse-bundle": "ANALYSE= NODE_ENV=production webpack", - "postinstall": "rm -rf node_modules/@types/react-native && node scripts/fix-pjax-api", + "debug-firefox": "web-ext run --source-dir=dist --firefox-profile=firefox-profile --profile-create-if-missing --keep-profile-changes --start-url https://github.com/EnixCoda/Gitako", + "analyze-bundle": "ANALYZE= NODE_ENV=production webpack", + "postinstall": "node scripts/fix-deps", + "postversion": "sh scripts/post-version.sh", "build": "VERSION=v$(node scripts/get-version.js) NODE_ENV=production webpack", "roll": "make release", "test": "yarn run test:parallel && yarn run test:non-parallel", + "test:unit": "NODE_ENV=test jest --config jest.config.js", "test:parallel": "NODE_ENV=test jest --config __tests__/jest.parallel.config.js", "test:non-parallel": "NODE_ENV=test jest --config __tests__/jest.non-parallel.config.js" }, "dependencies": { - "@primer/components": "^22.0.2", - "@primer/css": "^15.2.0", - "@primer/octicons-react": "^10.0.0", + "@primer/css": "^20.4.3", + "@primer/octicons-react": "^17.4.1", + "@primer/react": "^35.8.0", "@sentry/browser": "^6.3.6", - "@types/history": "^4.7.5", - "@types/ini": "^1.3.30", - "@types/js-base64": "^2.3.1", + "@types/history": "^5.0.0", + "@types/ini": "^1.3.31", + "@types/js-base64": "^3.3.1", "@types/nprogress": "^0.0.29", - "@types/react": "^16.8.24", - "@types/react-dom": "^16.8.5", - "@types/react-window": "^1.8.1", - "@types/styled-components": "^5.1.3", - "@types/styled-system__css": "^5.0.14", - "ini": "^1.3.5", - "js-base64": "^2.5.1", + "@types/react": "^18.0.9", + "@types/react-dom": "^18.0.3", + "@types/react-window": "^1.8.5", + "@types/styled-components": "^5.1.25", + "ini": "^3.0.0", + "js-base64": "^3.7.2", "nprogress": "^0.2.0", "pjax-api": "^3.33.0", - "react": "^17.0.1", - "react-dom": "^17.0.2", - "react-use": "^15.3.0", - "react-window": "^1.8.5", - "styled-components": "^5.2.0", - "webext-domain-permission-toggle": "^1.0.0", - "webext-dynamic-content-scripts": "^6.0.3", - "webextension-polyfill": "^0.5.0" + "react": "^18.1.0", + "react-dom": "^18.1.0", + "react-iifc": "^1.2.0", + "react-use": "^17.3.2", + "react-window": "^1.8.7", + "styled-components": "^5.3.5", + "webext-domain-permission-toggle": "^3.0.0", + "webext-dynamic-content-scripts": "^8.1.1", + "webextension-polyfill": "^0.10.0" }, "devDependencies": { - "@babel/cli": "^7.2.3", - "@babel/core": "^7.3.4", - "@babel/plugin-proposal-class-properties": "^7.3.4", - "@babel/plugin-proposal-optional-chaining": "^7.6.0", - "@babel/preset-env": "^7.3.4", - "@babel/preset-react": "^7.0.0", - "@babel/preset-typescript": "^7.3.3", + "@babel/cli": "^7.17.6", + "@babel/core": "^7.17.9", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", "@sentry/cli": "^1.64.2", + "@testing-library/react": "^13.3.0", "@types/firefox-webext-browser": "^70.0.1", - "@types/jest": "^26.0.23", + "@types/jest": "^29.2.2", "@types/node": "^11.10.4", "@types/puppeteer": "^5.4.3", - "babel-loader": "^8.0.5", + "@typescript-eslint/eslint-plugin": "^5.33.1", + "@typescript-eslint/parser": "^5.33.1", + "babel-loader": "^8.2.5", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", "copy-webpack-plugin": "^5.0.0", "css-loader": "^2.1.0", "dotenv": "^6.2.0", "dotenv-webpack": "^1.7.0", + "eslint": "^8.15.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react-hooks": "^4.5.0", "file-loader": "^3.0.1", - "fork-ts-checker-webpack-plugin": "^0.5.2", - "jest": "^27.0.6", - "jest-puppeteer": "^5.0.4", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "husky": "^8.0.1", + "jest": "^29.2.2", + "jest-environment-jsdom": "^29.2.2", + "jest-puppeteer": "^6.1.0", "json-loader": "^0.5.7", + "lint-staged": "^13.0.3", "mini-css-extract-plugin": "^0.9.0", + "prettier": "^2.7.1", "puppeteer": "^10.1.0", "raw-loader": "^4.0.0", "sass": "^1.26.2", "sass-loader": "^8.0.2", - "typescript": "^4.2.4", + "typescript": "^4.7.2", "uglifyjs-webpack-plugin": "^2.1.2", "url-loader": "^1.1.2", - "web-ext": "^6.8.0", + "web-ext": "^7.1.1", "webpack": "^4.29.6", "webpack-bundle-analyzer": "^3.6.0", "webpack-cli": "^3.1.2" @@ -90,8 +104,17 @@ "trailingComma": "all", "arrowParens": "avoid" }, + "lint-staged": { + "*.scss": [ + "yarn prettier --list-different --write" + ], + "*.{js,ts,tsx}": [ + "yarn prettier --list-different --write", + "yarn eslint --max-warnings=0 --fix" + ] + }, "resolutions": { - "react": "^17", - "@types/styled-components": "^5.0.0" + "@types/react": "^18.0.9", + "@types/react-dom": "^18.0.3" } } diff --git a/scripts/fix-deps/index.js b/scripts/fix-deps/index.js new file mode 100644 index 0000000..bbb9d0b --- /dev/null +++ b/scripts/fix-deps/index.js @@ -0,0 +1,40 @@ +const fs = require('fs').promises +const path = require('path') + +/** + * This script rewrites local dependency files to resolve compatibility issues. + * This is a bit dirty but really effective. + */ + +function modify(source = '', pairs = []) { + for (const [original, replace] of pairs) { + if (source.includes(original)) { + source = source.replace(original, replace) + } else { + throw new Error(`Original string not found: ${JSON.stringify(original)}`) + } + + if (source.includes(original)) { + throw new Error(`More than one original string found`, JSON.stringify(original)) + } + } + + return source +} + +const nodeModulesPath = path.resolve(__dirname, '../../', `node_modules`) + +exports.fixDep = async function fixDep(targetFilePath, pairs) { + const filePath = path.resolve(nodeModulesPath, targetFilePath) + const source = await fs.readFile(filePath, 'utf-8') + const modified = modify(source, pairs) + await fs.writeFile(filePath, modified, 'utf-8') +} + +async function fixDeps() { + for (const fix of [require('./pjax-api').fix, require('./styled-components').fix]) { + await fix() + } +} + +fixDeps() diff --git a/scripts/fix-deps/pjax-api.js b/scripts/fix-deps/pjax-api.js new file mode 100644 index 0000000..34564c8 --- /dev/null +++ b/scripts/fix-deps/pjax-api.js @@ -0,0 +1,45 @@ +const { fixDep } = require('.') + +const targetFilePath = `pjax-api/dist/pjax-api.js` +const pairs = [ + // Firefox + [ + `void xhr.open(method, requestURL.path, true);`, + `void xhr.open(method, requestURL.reference, true);`, + ], + // Firefox + [ + `this.document = this.xhr.responseXML.cloneNode(true);`, + `this.document = this.xhr.responseXML;`, + ], + // Chrome: modifying cross-context history state causes troubles + // Scroll position can still be restored without this function + [ + ` + function savePosition() { + var _a; + void window.history.replaceState({ + ...window.history.state, + position: { + ...(_a = window.history.state) === null || _a === void 0 ? void 0 : _a.position, + top: window.pageYOffset, + left: window.pageXOffset + } + }, document.title); + }`, + ` + function savePosition() { + return; + }`, + ], +] + +exports.fix = async () => { + try { + await fixDep(targetFilePath, pairs) + } catch (err) { + console.error((err && err.message) || err) + const shouldTerminate = process.env.IGNORE_FIX_PJAX_API_FAILURE !== 'true' + if (shouldTerminate) process.exit(1) + } +} diff --git a/scripts/fix-deps/styled-components.js b/scripts/fix-deps/styled-components.js new file mode 100644 index 0000000..e0c89a3 --- /dev/null +++ b/scripts/fix-deps/styled-components.js @@ -0,0 +1,20 @@ +const { fixDep } = require('.') + +const targetFilePath = `styled-components/dist/styled-components.browser.esm.js` +const pairs = [ + // Firefox + // disable production check in `checkDynamicCreation` + [ + `function(e,t){if("production"!==process.env.NODE_ENV)`, // prettier-ignore + `function(e,t){if(false)`, + ], +] + +exports.fix = async () => { + try { + await fixDep(targetFilePath, pairs) + } catch (err) { + console.error((err && err.message) || err) + process.exit(1) + } +} diff --git a/scripts/fix-pjax-api.js b/scripts/fix-pjax-api.js deleted file mode 100644 index b2b8b4a..0000000 --- a/scripts/fix-pjax-api.js +++ /dev/null @@ -1,69 +0,0 @@ -/** - * This script rewrites code of pjax-api to resolve compatibility issues. - * This is a bit dirty but really effective. - */ -const fs = require('fs').promises -const path = require('path') - -function modify(source = '', pairs = []) { - for (const [original, replace] of pairs) { - if (source.includes(original)) { - source = source.replace(original, replace) - } else { - throw new Error(`Original string not found: ${JSON.stringify(original)}`) - } - - if (source.includes(original)) { - throw new Error(`More than one original string found`, JSON.stringify(original)) - } - } - - return source -} - -async function fixPJAXAPI(loose) { - const pairs = [ - // Firefox - [ - `void xhr.open(method, requestURL.path, true);`, - `void xhr.open(method, requestURL.reference, true);`, - ], - // Firefox - [ - `this.document = this.xhr.responseXML.cloneNode(true);`, - `this.document = this.xhr.responseXML;`, - ], - // Chrome: modifying cross-context history state causes troubles - // Scroll position can still be restored without this function - [ - ` - function savePosition() { - var _a; - void window.history.replaceState({ - ...window.history.state, - position: { - ...(_a = window.history.state) === null || _a === void 0 ? void 0 : _a.position, - top: window.pageYOffset, - left: window.pageXOffset - } - }, document.title); - }`, - ` - function savePosition() { - return; - }`, - ], - ] - try { - const filePath = path.resolve(__dirname, '..', `node_modules/pjax-api/dist/pjax-api.js`) - const source = await fs.readFile(filePath, 'utf-8') - const modified = modify(source, pairs, loose) - await fs.writeFile(filePath, modified, 'utf-8') - } catch (err) { - console.error((err && err.message) || err) - const shouldTerminate = process.env.IGNORE_FIX_PJAX_API_FAILURE !== 'true' - if (shouldTerminate) process.exit(1) - } -} - -fixPJAXAPI() diff --git a/scripts/post-version.sh b/scripts/post-version.sh new file mode 100644 index 0000000..fdaecf8 --- /dev/null +++ b/scripts/post-version.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# exit on error +set -e + +# get current version +version=$(node scripts/get-version.js) + +# remove git tag +git tag -d v$version + +# update Safari version +make version-safari + +# merge to previous git +git add . +git commit --amend --no-edit + +# add git tag +git tag v$version diff --git a/server/.eslintrc.json b/server/.eslintrc.json new file mode 100644 index 0000000..d92924e --- /dev/null +++ b/server/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "env": { + "node": true + }, + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"] +} diff --git a/server/api/gitee.ts b/server/api/gitee.ts index df76340..13804ec 100644 --- a/server/api/gitee.ts +++ b/server/api/gitee.ts @@ -9,7 +9,7 @@ async function oauth(code: string) { code: code, client_id: GITEE_OAUTH_CLIENT_ID, client_secret: GITEE_OAUTH_CLIENT_SECRET, - redirect_uri: 'https://gitako.now.sh/redirect/', + redirect_uri: 'https://gitako.enix.one/redirect/', }) const res = await fetch('https://gitee.com/oauth/token?' + params.toString(), { diff --git a/server/package.json b/server/package.json index 458e100..a258778 100644 --- a/server/package.json +++ b/server/package.json @@ -7,7 +7,7 @@ "dependencies": { "@now/node": "^1.5.0", "@types/node-fetch": "^2.5.5", - "node-fetch": "^2.6.0", + "node-fetch": "^2.6.7", "typescript": "^3.8.3" } } diff --git a/server/yarn.lock b/server/yarn.lock index 1330d17..5b626a1 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -60,12 +60,32 @@ mime-types@^2.1.12: dependencies: mime-db "1.43.0" -node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== +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: + whatwg-url "^5.0.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= typescript@^3.8.3: version "3.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" diff --git a/src/.eslintrc.json b/src/.eslintrc.json new file mode 100644 index 0000000..7674a32 --- /dev/null +++ b/src/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "env": { + "browser": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react/recommended", + "plugin:react-hooks/recommended", + "prettier" + ], + "settings": { + "react": { + "version": "detect" + } + }, + "rules": { + "react-hooks/rules-of-hooks": "off" // for IIFC + } +} diff --git a/src/analytics.ts b/src/analytics.ts index 3ac4bd5..1b20620 100644 --- a/src/analytics.ts +++ b/src/analytics.ts @@ -1,12 +1,10 @@ import * as Sentry from '@sentry/browser' -import { Middleware } from 'driver/connect.js' -import { IN_PRODUCTION_MODE, VERSION } from 'env' +import { IN_PRODUCTION_MODE, SENTRY, VERSION } from 'env' import { platform } from 'platforms' +import { atomicAsyncFunction, forOf } from 'utils/general' +import { storageHelper, storageKeys } from 'utils/storageHelper' -const PUBLIC_KEY = 'd22ec5c9cc874539a51c78388c12e3b0' -const PROJECT_ID = '1406497' - -const MAX_REPORT_COUNT = 10 // protect for error leaking +const MAX_REPORT_COUNT = 10 // prevent error overflow let countReportedError = 0 const errorSet = new Set([ @@ -22,59 +20,89 @@ const disabledIntegrations: string[] = [ 'GlobalHandlers', 'CaptureConsole', ] -const sentryOptions: Sentry.BrowserOptions = { - dsn: `https://${PUBLIC_KEY}@sentry.io/${PROJECT_ID}`, - release: VERSION, - environment: IN_PRODUCTION_MODE ? 'production' : 'development', - // Not safe to activate all integrations in non-Chrome environments where Gitako may not run in top context - // https://docs.sentry.io/platforms/javascript/#sdk-integrations - defaultIntegrations: IN_PRODUCTION_MODE ? undefined : false, - integrations: integrations => - integrations.filter(({ name }) => !disabledIntegrations.includes(name)), - beforeSend(event) { - const message = event.exception?.values?.[0].value || event.message - if (message) { - if (errorSet.has(message)) return null - errorSet.add(message) // prevent reporting duplicated error - } - if (countReportedError < MAX_REPORT_COUNT) { - ++countReportedError - return event - } - return null - }, - beforeBreadcrumb(breadcrumb, hint) { - if (breadcrumb.category === 'ui.click') { - const ariaLabel = hint?.event?.target?.ariaLabel - if (ariaLabel) { - breadcrumb.message = ariaLabel - } - } - return breadcrumb - }, - autoSessionTracking: false, // this avoids the request when calling `init` -} -Sentry.init(sentryOptions) -export const withErrorLog: Middleware = function withErrorLog(method, args) { - return [ - async function () { - try { - await method.apply(null, arguments as any) - } catch (error) { - raiseError(error) +let initiated = false +function init() { + if (initiated) return + initiated = true + + const { PUBLIC_KEY, PROJECT_ID } = SENTRY + if (!PUBLIC_KEY || !PROJECT_ID) return + + const sentryOptions: Sentry.BrowserOptions = { + dsn: `https://${PUBLIC_KEY}@sentry.io/${PROJECT_ID}`, + release: VERSION, + environment: IN_PRODUCTION_MODE ? 'production' : 'development', + // Not safe to activate all integrations in non-Chrome environments where Gitako may not run in top context + // https://docs.sentry.io/platforms/javascript/#sdk-integrations + defaultIntegrations: IN_PRODUCTION_MODE ? undefined : false, + integrations: integrations => + integrations.filter(({ name }) => !disabledIntegrations.includes(name)), + beforeSend(event) { + const message = event.exception?.values?.[0].value || event.message + if (message) { + if (errorSet.has(message)) return null + errorSet.add(message) // prevent reporting duplicated error } - } as any, // TO FIX: not sure how to fix this yet - args, - ] + if (countReportedError < MAX_REPORT_COUNT) { + ++countReportedError + return event + } + return null + }, + beforeBreadcrumb(breadcrumb, hint) { + if (breadcrumb.category === 'ui.click') { + const ariaLabel = hint?.event?.target?.ariaLabel + if (ariaLabel) { + breadcrumb.message = ariaLabel + } + } + return breadcrumb + }, + autoSessionTracking: false, // this avoids the request when calling `init` + } + Sentry.init(sentryOptions) } -export function raiseError( +// 1. Only cache errors for current version, so that future errors can still be exposed +// - Run migration to clean on every update + +// 2. Only cache the top 2 levels of stack, e.g. +// ``` +// Error: cannot get current branch +// at Module.getCurrentBranch (chrome-extension://______id______/index.js:1:1)" +// ``` +// So that different initial callees would not result in multiple records +const MAX_STACK_LEVEL = 2 +const hasTheErrorBeenReported = atomicAsyncFunction(async function hasTheErrorBeenReported( + error: Error, +) { + const message = error.stack?.split('\n').slice(0, MAX_STACK_LEVEL).join('\n') + if (!message) return true // ignore errors that has no stack + + type ErrorCache = string + const cache: ErrorCache[] = + ((await storageHelper.get(storageKeys.raiseErrorCache))?.[ + storageKeys.raiseErrorCache + ] as string[]) || [] + const has = cache.includes(message) + + if (!has) { + cache.push(message) + await storageHelper.set({ [storageKeys.raiseErrorCache]: cache }) + } + + return has +}) + +export async function raiseError( error: Error, extra?: { - [key: string]: any + [key: string]: any // eslint-disable-line @typescript-eslint/no-explicit-any }, ) { + if (await hasTheErrorBeenReported(error)) return + if (!IN_PRODUCTION_MODE || platform.isEnterprise()) { // ignore errors from enterprise to get less noise on Sentry console.error(error) @@ -82,11 +110,10 @@ export function raiseError( return } + init() Sentry.withScope(scope => { - if (extra) { - Object.keys(extra).forEach(key => { - scope.setExtra(key, extra[key]) - }) + if (typeof extra === 'object' && extra) { + forOf(extra, (key, value) => scope.setExtra(`${key}`, value)) } Sentry.captureException(error) }) diff --git a/src/common.d.ts b/src/common.d.ts new file mode 100644 index 0000000..191c596 --- /dev/null +++ b/src/common.d.ts @@ -0,0 +1,9 @@ +// Similar to `global.d.ts` but with import/export +import { Dispatch, SetStateAction } from 'react' + +type ReactIO = { + value: T + onChange: Dispatch> +} + +type PropsWithChildren = React.PropsWithChildren> diff --git a/src/components/AccessDeniedDescription.tsx b/src/components/AccessDeniedDescription.tsx index eb07778..5af5aab 100644 --- a/src/components/AccessDeniedDescription.tsx +++ b/src/components/AccessDeniedDescription.tsx @@ -5,8 +5,8 @@ import { GitHub } from 'platforms/GitHub' import * as React from 'react' export function AccessDeniedDescription() { - const configContext = useConfigs() - const hasToken = Boolean(configContext.value.accessToken) + const { accessToken } = useConfigs().value + const hasToken = Boolean(accessToken) return (
diff --git a/src/components/Clippy.tsx b/src/components/Clippy.tsx index 2508ade..53038fa 100644 --- a/src/components/Clippy.tsx +++ b/src/components/Clippy.tsx @@ -25,13 +25,13 @@ export function Clippy({ codeSnippetElement }: Props) { React.useEffect(() => { const element = elementRef.current if (element) { - function onClippyClick() { + const onClippyClick = () => setState(copyElementContent(codeSnippetElement) ? 'success' : 'fail') - } + element.addEventListener('click', onClippyClick) return () => element.removeEventListener('click', onClippyClick) } - }, []) + }, [codeSnippetElement]) return (
diff --git a/src/components/DiffStatText.tsx b/src/components/DiffStatText.tsx deleted file mode 100644 index 2f8715c..0000000 --- a/src/components/DiffStatText.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import * as React from 'react' -import { Icon } from './Icon' - -export function DiffStatText({ - diff: { status, changes, additions, deletions }, -}: { - diff: Required['diff'] -}) { - return ( - - {status !== 'modified' && ( - - )} - {additions > 0 && ( - {status === 'modified' ? `+${additions}` : additions} - )} - {additions > 0 && deletions > 0 && '/'} - {deletions > 0 && ( - {status === 'modified' ? `-${deletions}` : deletions} - )} - - ) -} diff --git a/src/components/FileExplorer.tsx b/src/components/FileExplorer.tsx deleted file mode 100644 index b574347..0000000 --- a/src/components/FileExplorer.tsx +++ /dev/null @@ -1,316 +0,0 @@ -import { Label, Text } from '@primer/components' -import { LoadingIndicator } from 'components/LoadingIndicator' -import { Node } from 'components/Node' -import { SearchBar } from 'components/SearchBar' -import { useConfigs } from 'containers/ConfigsContext' -import { connect } from 'driver/connect' -import { FileExplorerCore } from 'driver/core' -import { ConnectorState, Props } from 'driver/core/FileExplorer' -import { platform } from 'platforms' -import * as React from 'react' -import { FixedSizeList, ListChildComponentProps } from 'react-window' -import { cx } from 'utils/cx' -import { focusFileExplorer } from 'utils/DOMHelper' -import { run } from 'utils/general' -import { useLoadedContext } from 'utils/hooks/useLoadedContext' -import { useOnLocationChange } from 'utils/hooks/useOnLocationChange' -import { useOnPJAXDone } from 'utils/hooks/usePJAX' -import { useSequentialEffect } from 'utils/hooks/useSequentialEffect' -import { VisibleNodes } from 'utils/VisibleNodesGenerator' -import { SideBarStateContext } from '../containers/SideBarState' -import { DiffStatGraph } from './DiffStatGraph' -import { DiffStatText } from './DiffStatText' -import { Icon } from './Icon' -import { SearchMode, searchModes } from './searchModes' -import { SizeObserver } from './SizeObserver' - -type renderNodeContext = { - onNodeClick: (event: React.MouseEvent, node: TreeNode) => void - renderLabelText: (node: TreeNode) => React.ReactNode - renderActions: ((node: TreeNode) => React.ReactNode) | undefined - visibleNodes: VisibleNodes -} - -const RawFileExplorer: React.FC = function RawFileExplorer(props) { - const { - visibleNodes, - visibleNodesGenerator, - freeze, - onNodeClick, - searchKey, - updateSearchKey, - onFocusSearchBar, - goTo, - handleKeyDown, - metaData, - expandTo, - setUpTree, - defer, - searched, - } = props - const { - value: { - accessToken, - compressSingletonFolder, - searchMode, - commentToggle, - restoreExpandedFolders, - showDiffInText, - }, - } = useConfigs() - - const onSearch = React.useCallback( - (searchKey: string, searchMode: SearchMode) => { - updateSearchKey(searchKey) - if (visibleNodesGenerator) { - visibleNodesGenerator.search( - searchModes[searchMode].getSearchParams(searchKey), - restoreExpandedFolders, - ) - } - }, - [updateSearchKey, visibleNodesGenerator, restoreExpandedFolders], - ) - - const stateContext = useLoadedContext(SideBarStateContext) - const state = stateContext.value - - useSequentialEffect( - checker => { - setUpTree( - { - metaData, - config: { - compressSingletonFolder, - accessToken, - }, - stateContext, - }, - checker, - ) - }, - [setUpTree, metaData, compressSingletonFolder, accessToken], - ) - - React.useEffect(() => { - focusFileExplorer() - }, []) - - const renderActions: ((node: TreeNode) => React.ReactNode) | undefined = React.useMemo(() => { - const renderGoToButton = (node: TreeNode): React.ReactNode => ( - - ) - const renderFindInFolderButton = (node: TreeNode): React.ReactNode => - node.type === 'tree' ? ( - - ) : undefined - const renderFileCommentAmounts = (node: TreeNode): React.ReactNode => - node.comments?.active ? ( - - {node.comments.active > 9 ? '9+' : node.comments.active} - - ) : null - const renderFileStatus = ({ diff }: TreeNode): React.ReactNode => - diff && ( - - {showDiffInText ? : } - - ) - - const renders: ((node: TreeNode) => React.ReactNode)[] = [] - renders.push(renderFileStatus) - if (commentToggle) renders.push(renderFileCommentAmounts) - if (searchMode === 'fuzzy') renders.push(renderFindInFolderButton) - if (searched) renders.push(renderGoToButton) - - return renders.length - ? node => renders.map((render, i) => {render(node)}) - : undefined - }, [goTo, onSearch, searched, searchMode, commentToggle, showDiffInText]) - - const renderLabelText = React.useCallback( - (node: TreeNode) => searchModes[searchMode].renderNodeLabelText(node, searchKey), - [searchKey, searchMode], - ) - - const renderNodeContext: renderNodeContext | null = React.useMemo( - () => - visibleNodes && { - onNodeClick, - renderActions, - renderLabelText, - visibleNodes, - }, - [onNodeClick, renderActions, renderLabelText, visibleNodes], - ) - - return ( -
- {run(() => { - switch (state) { - case 'tree-loading': - return - case 'tree-rendering': - return - case 'tree-rendered': - return ( - visibleNodes && - renderNodeContext && ( - <> - {defer && ( -
- -
- )} - - {searched && visibleNodes.nodes.length === 0 && ( - <> - - No results found. - - {defer && ( - - Search results are limited to loaded folders in Lazy Mode. - - )} - - )} - - {({ width = 0, height = 0 }) => ( -
- -
- )} -
- - ) - ) - } - })} -
- ) -} - -RawFileExplorer.defaultProps = { - freeze: false, - searchKey: '', - visibleNodes: null, -} - -export const FileExplorer = connect(FileExplorerCore)(RawFileExplorer) - -const VirtualNode = React.memo(function VirtualNode({ - index, - style, - data: { onNodeClick, renderLabelText, renderActions, visibleNodes }, -}: Override) { - if (!visibleNodes) return null - - const { nodes, focusedNode, expandedNodes, loading, depths } = visibleNodes as VisibleNodes - const node = nodes[index] - - return ( - - ) -}) - -type ListViewProps = { - height: number - width: number - renderNodeContext: renderNodeContext -} & Pick & - Pick - -function ListView({ width, height, metaData, expandTo, renderNodeContext }: ListViewProps) { - const { visibleNodes } = renderNodeContext - const { focusedNode, nodes } = visibleNodes - const listRef = React.useRef(null) - // the change of depths indicates switch into/from search state - React.useEffect(() => { - if (listRef.current && focusedNode?.path) { - const index = nodes.findIndex(node => node.path === focusedNode.path) - if (index !== -1) { - listRef.current.scrollToItem(index, 'smart') - } - } - }, [focusedNode, nodes]) - // For some reason, removing the deps array above results in bug: - // If scroll fast and far, then clicking on items would result in redirect - // Not know the reason :( - - const goToCurrentItem = React.useCallback(() => { - const targetPath = platform.getCurrentPath(metaData.branchName) - if (targetPath) expandTo(targetPath) - }, [metaData.branchName]) - - useOnLocationChange(goToCurrentItem) - useOnPJAXDone(goToCurrentItem) - - const { compactFileTree } = useConfigs().value - - return ( - visibleNodes?.nodes[index]?.path} - itemData={renderNodeContext} - itemCount={visibleNodes.nodes.length} - itemSize={compactFileTree ? 24 : 37} - height={height} - width={width} - > - {VirtualNode} - - ) -} diff --git a/src/components/DiffStatGraph.tsx b/src/components/FileExplorer/DiffStatGraph.tsx similarity index 65% rename from src/components/DiffStatGraph.tsx rename to src/components/FileExplorer/DiffStatGraph.tsx index 7aaa2dd..f5a9426 100644 --- a/src/components/DiffStatGraph.tsx +++ b/src/components/FileExplorer/DiffStatGraph.tsx @@ -1,6 +1,21 @@ +import { + DiffAddedIcon, + DiffIgnoredIcon, + DiffModifiedIcon, + DiffRemovedIcon, + DiffRenamedIcon, +} from '@primer/octicons-react' import * as React from 'react' import { resolveDiffGraphMeta } from 'utils/general' -import { Icon } from './Icon' +import { Icon } from '../Icon' + +const iconMap = { + added: DiffAddedIcon, + ignored: DiffIgnoredIcon, + modified: DiffModifiedIcon, + removed: DiffRemovedIcon, + renamed: DiffRenamedIcon, +} export function DiffStatGraph({ diff: { status, changes, additions, deletions }, @@ -19,18 +34,7 @@ export function DiffStatGraph({ return ( - + {children} ) diff --git a/src/components/FileExplorer/DiffStatText.tsx b/src/components/FileExplorer/DiffStatText.tsx new file mode 100644 index 0000000..caa60d0 --- /dev/null +++ b/src/components/FileExplorer/DiffStatText.tsx @@ -0,0 +1,25 @@ +import * as React from 'react' +import { Icon } from '../Icon' + +const iconMap = { + added: 'diffAdded', + ignored: 'diffIgnored', + modified: 'diffModified', + removed: 'diffRemoved', + renamed: 'diffRenamed', +} + +export function DiffStatText({ + diff: { status, additions, deletions }, +}: { + diff: Required['diff'] +}) { + return ( + + + {additions > 0 && {additions}} + {additions > 0 && deletions > 0 && '/'} + {deletions > 0 && {deletions}} + + ) +} diff --git a/src/components/FileExplorer/ListView.tsx b/src/components/FileExplorer/ListView.tsx new file mode 100644 index 0000000..6dcc8f4 --- /dev/null +++ b/src/components/FileExplorer/ListView.tsx @@ -0,0 +1,95 @@ +import { useConfigs } from 'containers/ConfigsContext' +import * as React from 'react' +import { useStateIO } from 'utils/hooks/useStateIO' +import { NodeRendererContext } from '.' +import { Node } from './Node' +import { AlignMode, useVirtualScroll } from './useVirtualScroll' + +type ListViewProps = { + height: number + width: number + nodeRendererContext: NodeRendererContext +} + +export function ListView({ width, height, nodeRendererContext }: ListViewProps) { + const { onNodeClick, onNodeFocus, renderLabelText, renderActions, visibleNodes } = + nodeRendererContext + const { focusedNode, nodes, expandedNodes, depths, loading } = visibleNodes + + const { compactFileTree } = useConfigs().value + + const rowHeight = compactFileTree ? 24 : 37 + const totalAmount = visibleNodes.nodes.length + const { onScroll, visibleRows, containerStyle, scrollToItem, ref } = + useVirtualScroll({ + totalAmount, + rowHeight, + viewportHeight: height, + overScan: 10, + }) + + const $mode = useStateIO('top') + const enableScroll = width * height > 0 // these can be 0 on first render + + const index = React.useMemo( + () => + width && height && focusedNode?.path + ? nodes.findIndex(node => node.path === focusedNode.path) + : -1, + [focusedNode?.path, nodes, width, height], + ) + + React.useEffect(() => { + // - init loading + // - "top" + // - NO immediate call + // - jump to file + // - "top" + // - NO immediate call + // - click file/folder + // - not invoke + // - navigate with keyboard + // - "lazy" + // - immediate call + if (enableScroll && index !== -1) { + scrollToItem?.(index, $mode.value) + } + }, [enableScroll, $mode.value, index, scrollToItem]) + + React.useEffect(() => { + if (enableScroll && $mode.value === 'top') $mode.onChange('lazy') + }, [enableScroll, $mode.value]) // eslint-disable-line react-hooks/exhaustive-deps + + return ( +
+
+ {visibleRows.map(({ row, style }) => { + const node = nodes[row] + return ( + + ) + })} +
+
+ ) +} diff --git a/src/components/Node.tsx b/src/components/FileExplorer/Node.tsx similarity index 78% rename from src/components/Node.tsx rename to src/components/FileExplorer/Node.tsx index 77117a4..be7a443 100644 --- a/src/components/Node.tsx +++ b/src/components/FileExplorer/Node.tsx @@ -3,7 +3,7 @@ import { platform } from 'platforms' import * as React from 'react' import { cx } from 'utils/cx' import { getFileIconURL, getFolderIconURL } from 'utils/parseIconMapCSV' -import { Icon } from './Icon' +import { Icon } from '../Icon' function getIconType(node: TreeNode) { switch (node.type) { @@ -19,6 +19,7 @@ function getIconType(node: TreeNode) { type Props = { node: TreeNode onClick(event: React.MouseEvent, node: TreeNode): void + onFocus(event: React.FocusEvent, node: TreeNode): void depth: number expanded: boolean focused: boolean @@ -27,7 +28,8 @@ type Props = { renderLabelText(node: TreeNode): React.ReactNode style?: React.CSSProperties } -export function Node({ + +export const Node = React.memo(function Node({ node, depth, expanded, @@ -37,17 +39,20 @@ export function Node({ renderLabelText, style, onClick, + onFocus, }: Props) { const { compactFileTree: compact } = useConfigs().value return ( onClick(event, node)} + onFocus={event => onFocus(event, node)} className={cx(`node-item`, { focused, disabled: node.accessDenied, expanded, compact })} style={{ ...style, paddingLeft: `${10 + (compact ? 10 : 20) * depth}px` }} title={node.path} target={node.type === 'commit' ? '_blank' : undefined} - {...platform.delegatePJAXProps?.({ node })} + rel="noopener noreferrer" + {...platform.delegateFastRedirectAnchorProps?.({ node })} >
@@ -56,7 +61,7 @@ export function Node({ {renderActions &&
{renderActions(node)}
}
) -} +}) const NodeItemIcon = React.memo(function NodeItemIcon({ node, @@ -67,25 +72,24 @@ const NodeItemIcon = React.memo(function NodeItemIcon({ open?: boolean loading?: boolean }) { - const { - value: { icons }, - } = useConfigs() + const { icons } = useConfigs().value const src = React.useMemo( () => (node.type === 'tree' ? getFolderIconURL(node, open) : getFileIconURL(node)), - [open], + [node, open], ) + const iconType = React.useMemo(() => getIconType(node), [node]) - if (icons === 'native') return + if (icons === 'native') return return ( <> {node.type === 'commit' ? ( - + ) : ( {node.name} )} diff --git a/src/components/FileExplorer/VirtualNode.tsx b/src/components/FileExplorer/VirtualNode.tsx new file mode 100644 index 0000000..f5cbebb --- /dev/null +++ b/src/components/FileExplorer/VirtualNode.tsx @@ -0,0 +1,32 @@ +import { Node } from 'components/FileExplorer/Node' +import * as React from 'react' +import { ListChildComponentProps } from 'react-window' +import { NodeRendererContext } from '.' + +export const VirtualNode = React.memo(function VirtualNode({ + index, + style, + data, +}: Override) { + const { onNodeClick, onNodeFocus, renderLabelText, renderActions, visibleNodes } = data + if (!visibleNodes) return null + + const { nodes, focusedNode, expandedNodes, loading, depths } = visibleNodes + const node = nodes[index] + + return ( + + ) +}) diff --git a/src/components/FileExplorer/hooks/useExpandTo.tsx b/src/components/FileExplorer/hooks/useExpandTo.tsx new file mode 100644 index 0000000..4f9a74c --- /dev/null +++ b/src/components/FileExplorer/hooks/useExpandTo.tsx @@ -0,0 +1,12 @@ +import * as React from 'react' +import { VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' + +export function useExpandTo(visibleNodesGenerator: VisibleNodesGenerator) { + return React.useCallback( + async (currentPath: string[]) => { + const nodeExpandedTo = await visibleNodesGenerator.expandTo(currentPath.join('/')) + if (nodeExpandedTo) visibleNodesGenerator.focusNode(nodeExpandedTo) + }, + [visibleNodesGenerator], + ) +} diff --git a/src/components/FileExplorer/hooks/useFocusNode.tsx b/src/components/FileExplorer/hooks/useFocusNode.tsx new file mode 100644 index 0000000..4d8d9e4 --- /dev/null +++ b/src/components/FileExplorer/hooks/useFocusNode.tsx @@ -0,0 +1,9 @@ +import * as React from 'react' +import { VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' + +export function useFocusNode(visibleNodesGenerator: VisibleNodesGenerator) { + return React.useCallback( + (node: TreeNode | null) => visibleNodesGenerator.focusNode(node), + [visibleNodesGenerator], + ) +} diff --git a/src/components/FileExplorer/hooks/useGetCurrentPath.tsx b/src/components/FileExplorer/hooks/useGetCurrentPath.tsx new file mode 100644 index 0000000..07fdcc3 --- /dev/null +++ b/src/components/FileExplorer/hooks/useGetCurrentPath.tsx @@ -0,0 +1,6 @@ +import { platform } from 'platforms' +import { useCallback } from 'react' + +export function useGetCurrentPath({ branchName }: MetaData) { + return useCallback(() => platform.getCurrentPath(branchName), [branchName]) +} diff --git a/src/components/FileExplorer/hooks/useGoTo.tsx b/src/components/FileExplorer/hooks/useGoTo.tsx new file mode 100644 index 0000000..f17918d --- /dev/null +++ b/src/components/FileExplorer/hooks/useGoTo.tsx @@ -0,0 +1,18 @@ +import * as React from 'react' +import { VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' +import { useExpandTo } from './useExpandTo' + +export function useGoTo( + visibleNodesGenerator: VisibleNodesGenerator, + updateSearchKey: React.Dispatch>, + expandTo: ReturnType, +) { + return React.useCallback( + (path: string[]) => { + updateSearchKey('') + visibleNodesGenerator.search(null) + visibleNodesGenerator.onNextUpdate(() => expandTo(path)) + }, + [visibleNodesGenerator, updateSearchKey, expandTo], + ) +} diff --git a/src/components/FileExplorer/hooks/useHandleKeyDown.tsx b/src/components/FileExplorer/hooks/useHandleKeyDown.tsx new file mode 100644 index 0000000..ff96844 --- /dev/null +++ b/src/components/FileExplorer/hooks/useHandleKeyDown.tsx @@ -0,0 +1,160 @@ +import { SidebarContext } from 'components/SidebarContext' +import * as React from 'react' +import * as DOMHelper from 'utils/DOMHelper' +import { OperatingSystems, os } from 'utils/general' +import { loadWithFastRedirect } from 'utils/hooks/useFastRedirect' +import { VisibleNodes } from 'utils/VisibleNodesGenerator' +import { AlignMode } from '../useVirtualScroll' +import { VisibleNodesGeneratorMethods } from './useVisibleNodesGeneratorMethods' + +function wouldBlockHistoryNavigation(event: React.KeyboardEvent) { + // Cmd + left/right on macOS + // Alt + left/right on other OSes + return ( + (os === OperatingSystems.macOS && event.metaKey) || + (os !== OperatingSystems.macOS && event.altKey) + ) +} + +function getVisibleParentNode(nodes: TreeNode[], focusedNode: TreeNode) { + let index = nodes.findIndex(node => node.path === focusedNode.path) - 1 + while (index >= 0) { + if (nodes[index].contents?.includes(focusedNode)) { + return nodes[index] + } + --index + } +} + +export function useHandleKeyDown( + visibleNodes: VisibleNodes, + { focusNode, toggleExpansion, goTo }: VisibleNodesGeneratorMethods, + searched: boolean, + setAlignMode: (mode: AlignMode) => void, +) { + const { pendingFocusTarget } = React.useContext(SidebarContext) + const setPendingFocusTarget = pendingFocusTarget.onChange + return React.useCallback( + (event: React.KeyboardEvent) => { + const { nodes, focusedNode, expandedNodes } = visibleNodes + + const handleVerticalMove = (index: number) => { + if (0 <= index && index < nodes.length) { + setPendingFocusTarget('files') + setAlignMode('lazy') + focusNode(nodes[index]) + } else { + setPendingFocusTarget('search') + focusNode(null) + } + } + + const { key } = event + // prevent document body scrolling if the keypress results in Gitako action + let muteEvent = true + if (focusedNode) { + const focusedNodeIndex = nodes.findIndex(node => node.path === focusedNode.path) + switch (key) { + case 'ArrowUp': + // focus on previous node + handleVerticalMove(focusedNodeIndex - 1) + break + + case 'ArrowDown': + // focus on next node + handleVerticalMove(focusedNodeIndex + 1) + break + + case 'ArrowLeft': + if (wouldBlockHistoryNavigation(event)) { + muteEvent = false + break + } + if (expandedNodes.has(focusedNode.path)) { + toggleExpansion(focusedNode, { recursive: event.altKey }) + setAlignMode('lazy') + } else { + // go forward to the start of the list, find the closest node with lower depth + const parentNode = getVisibleParentNode(nodes, focusedNode) + if (parentNode) { + focusNode(parentNode) + setAlignMode('lazy') + } + } + break + + // consider the two keys as 'confirm' key + case 'ArrowRight': + if (wouldBlockHistoryNavigation(event)) { + muteEvent = false + break + } + // expand node or focus on first content node or redirect to file page + if (focusedNode.type === 'tree') { + if (expandedNodes.has(focusedNode.path)) { + const nextNode = nodes[focusedNodeIndex + 1] + if (focusedNode.contents?.includes(nextNode)) { + focusNode(nextNode) + setAlignMode('lazy') + } + } else { + toggleExpansion(focusedNode, { recursive: event.altKey }) + } + } else if (focusedNode.type === 'blob') { + const focusedNodeElement = DOMHelper.findNodeElement(focusedNode, event.currentTarget) + if (focusedNodeElement && focusedNode.url) + loadWithFastRedirect(focusedNode.url, focusedNodeElement) + } else if (focusedNode.type === 'commit') { + window.open(focusedNode.url) + } + break + case 'Enter': + // expand node or redirect to file page + if (searched) { + goTo(focusedNode.path.split('/')) + setAlignMode('top') + } else { + if (focusedNode.type === 'tree') { + toggleExpansion(focusedNode, { recursive: event.altKey }) + } else if (focusedNode.type === 'blob') { + const focusedNodeElement = DOMHelper.findNodeElement( + focusedNode, + event.currentTarget, + ) + if (focusedNodeElement && focusedNode.url) + loadWithFastRedirect(focusedNode.url, focusedNodeElement) + } else if (focusedNode.type === 'commit') { + window.open(focusedNode.url) + } + } + break + default: + muteEvent = false + } + if (muteEvent) { + event.preventDefault() + } + } else { + // now search input is focused + if (nodes.length) { + switch (key) { + case 'ArrowDown': + setPendingFocusTarget('files') + focusNode(nodes[0]) + break + case 'ArrowUp': + setPendingFocusTarget('files') + focusNode(nodes[nodes.length - 1]) + break + default: + muteEvent = false + } + if (muteEvent) { + event.preventDefault() + } + } + } + }, + [visibleNodes, searched, goTo, focusNode, toggleExpansion, setAlignMode, setPendingFocusTarget], + ) +} diff --git a/src/components/FileExplorer/hooks/useNodeRenderers.tsx b/src/components/FileExplorer/hooks/useNodeRenderers.tsx new file mode 100644 index 0000000..118fc57 --- /dev/null +++ b/src/components/FileExplorer/hooks/useNodeRenderers.tsx @@ -0,0 +1,109 @@ +import { CommentIcon } from '@primer/octicons-react' +import { useConfigs } from 'containers/ConfigsContext' +import * as React from 'react' +import { is } from 'utils/is' +import { Icon } from '../../Icon' +import { SearchMode } from '../../searchModes' +import { DiffStatText } from '../DiffStatText' +import { DiffStatGraph } from './../DiffStatGraph' + +export type NodeRenderer = (node: TreeNode) => React.ReactNode + +export function useNodeRenderers(allRenderers: (NodeRenderer | null | undefined)[]) { + return React.useMemo(() => { + const renderers: NodeRenderer[] = allRenderers.filter(is.not.nil) + return renderers.length + ? (node: TreeNode) => + renderers.map((render, i) => {render(node)}) + : undefined + }, allRenderers) // eslint-disable-line react-hooks/exhaustive-deps +} + +export function useRenderFileStatus() { + const { showDiffInText } = useConfigs().value + return React.useCallback( + function renderFileStatus({ diff }: TreeNode) { + return ( + diff && ( + + {showDiffInText ? : } + + ) + ) + }, + [showDiffInText], + ) +} + +export function useRenderFileCommentAmounts() { + function renderFileCommentAmounts(node: TreeNode) { + return node.comments?.active ? ( + + +   + {node.comments.active > 9 ? '9+' : node.comments.active} + + ) : null + } + const { commentToggle } = useConfigs().value + return React.useMemo(() => (commentToggle ? renderFileCommentAmounts : null), [commentToggle]) +} + +export function useRenderFindInFolderButton( + onSearch: (searchKey: string, searchMode: SearchMode) => void, +) { + const { searchMode } = useConfigs().value + return React.useMemo( + () => + searchMode === 'fuzzy' + ? function renderFindInFolderButton(node: TreeNode) { + return node.type === 'tree' ? ( + + ) : null + } + : null, + [searchMode, onSearch], + ) +} + +export function useRenderGoToButton(searched: boolean, goTo: (path: string[]) => void) { + return React.useMemo( + () => + searched + ? function renderGoToButton(node: TreeNode): React.ReactNode { + return ( + + ) + } + : null, + [searched, goTo], + ) +} diff --git a/src/components/FileExplorer/hooks/useOnNodeClick.tsx b/src/components/FileExplorer/hooks/useOnNodeClick.tsx new file mode 100644 index 0000000..aa00538 --- /dev/null +++ b/src/components/FileExplorer/hooks/useOnNodeClick.tsx @@ -0,0 +1,50 @@ +import { useConfigs } from 'containers/ConfigsContext' +import * as React from 'react' +import { isOpenInNewWindowClick } from 'utils/general' +import { loadWithFastRedirect } from 'utils/hooks/useFastRedirect' +import { AlignMode } from '../useVirtualScroll' +import { VisibleNodesGeneratorMethods } from './useVisibleNodesGeneratorMethods' + +export function useHandleNodeClick( + { toggleExpansion, focusNode }: VisibleNodesGeneratorMethods, + setAlignMode: (mode: AlignMode) => void, +) { + const { recursiveToggleFolder } = useConfigs().value + return React.useCallback( + (event: React.MouseEvent, node: TreeNode) => { + setAlignMode('lazy') + switch (node.type) { + case 'tree': { + const recursive = + (recursiveToggleFolder === 'shift' && event.shiftKey) || + (recursiveToggleFolder === 'alt' && event.altKey) + // recursive toggle action may conflict with browser default action + // e.g. shift + click is the default open in new tab action on macOS + // giving recursive toggle action higher priority than default action + if (!recursive && isOpenInNewWindowClick(event)) return + + event.preventDefault() + toggleExpansion(node, { recursive }) + break + } + case 'blob': { + if (isOpenInNewWindowClick(event)) return + + focusNode(node) + if (node.url) { + const isHashLink = node.url.includes('#') + if (!isHashLink) { + event.preventDefault() + loadWithFastRedirect(node.url, event.currentTarget) + } + } + break + } + case 'commit': { + // pass event, open in new tab thanks to the target="_blank" on the anchor element + } + } + }, + [toggleExpansion, recursiveToggleFolder, focusNode, setAlignMode], + ) +} diff --git a/src/components/FileExplorer/hooks/useOnSearch.tsx b/src/components/FileExplorer/hooks/useOnSearch.tsx new file mode 100644 index 0000000..2b88353 --- /dev/null +++ b/src/components/FileExplorer/hooks/useOnSearch.tsx @@ -0,0 +1,21 @@ +import { useConfigs } from 'containers/ConfigsContext' +import * as React from 'react' +import { VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' +import { SearchMode, searchModes } from '../../searchModes' + +export function useOnSearch( + updateSearchKey: (searchKey: string) => void, + visibleNodesGenerator: VisibleNodesGenerator, +) { + const { restoreExpandedFolders } = useConfigs().value + return React.useCallback( + (searchKey: string, searchMode: SearchMode) => { + updateSearchKey(searchKey) + visibleNodesGenerator.search( + searchModes[searchMode].getSearchParams(searchKey), + restoreExpandedFolders, + ) + }, + [updateSearchKey, visibleNodesGenerator, restoreExpandedFolders], + ) +} diff --git a/src/components/FileExplorer/hooks/useRenderLabelText.tsx b/src/components/FileExplorer/hooks/useRenderLabelText.tsx new file mode 100644 index 0000000..aa39638 --- /dev/null +++ b/src/components/FileExplorer/hooks/useRenderLabelText.tsx @@ -0,0 +1,11 @@ +import { useConfigs } from 'containers/ConfigsContext' +import * as React from 'react' +import { searchModes } from '../../searchModes' + +export function useRenderLabelText(searchKey: string) { + const { searchMode } = useConfigs().value + return React.useCallback( + (node: TreeNode) => searchModes[searchMode].renderNodeLabelText(node, searchKey), + [searchKey, searchMode], + ) +} diff --git a/src/components/FileExplorer/hooks/useToggleExpansion.tsx b/src/components/FileExplorer/hooks/useToggleExpansion.tsx new file mode 100644 index 0000000..db06042 --- /dev/null +++ b/src/components/FileExplorer/hooks/useToggleExpansion.tsx @@ -0,0 +1,21 @@ +import * as React from 'react' +import { VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' + +export function useToggleExpansion(visibleNodesGenerator: VisibleNodesGenerator) { + return React.useCallback( + async ( + node: TreeNode, + { + recursive = false, + }: { + recursive?: boolean + }, + ) => { + if (node.type === 'tree') { + visibleNodesGenerator.focusNode(node) + await visibleNodesGenerator.toggleExpand(node, recursive) + } + }, + [visibleNodesGenerator], + ) +} diff --git a/src/components/FileExplorer/hooks/useVisibleNodesGenerator.tsx b/src/components/FileExplorer/hooks/useVisibleNodesGenerator.tsx new file mode 100644 index 0000000..56b2666 --- /dev/null +++ b/src/components/FileExplorer/hooks/useVisibleNodesGenerator.tsx @@ -0,0 +1,68 @@ +import { useConfigs } from 'containers/ConfigsContext' +import { platform } from 'platforms' +import { useCallback, useState } from 'react' +import { useAbortableEffect } from 'utils/hooks/useAbortableEffect' +import { useCatchNetworkError } from 'utils/hooks/useCatchNetworkError' +import { useLoadedContext } from 'utils/hooks/useLoadedContext' +import { VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' +import { SideBarStateContext } from '../../../containers/SideBarState' + +export function useVisibleNodesGenerator(metaData: MetaData | null) { + const [visibleNodesGenerator, setVisibleNodesGenerator] = useState( + null, + ) + + const catchNetworkErrors = useCatchNetworkError() + const config = useConfigs().value + const setStateContext = useLoadedContext(SideBarStateContext).onChange + + // Only run when metadata or accessToken changes + useAbortableEffect( + useCallback( + signal => { + catchNetworkErrors(async () => { + if (!metaData) return + if (signal.aborted) return + + setStateContext('tree-loading') + const { userName, repoName, branchName } = metaData + const { root: treeRoot, defer = false } = await platform.getTreeData( + { + branchName, + userName, + repoName, + }, + '/', + true, + config.accessToken, + ) + if (signal.aborted) return + + setStateContext('tree-rendering') + + setVisibleNodesGenerator( + new VisibleNodesGenerator({ + root: treeRoot, + defer, + compress: config.compressSingletonFolder, + async getTreeData(path) { + const { root } = await platform.getTreeData( + metaData, + path, + false, + config.accessToken, + ) + return root + }, + }), + ) + + setStateContext('tree-rendered') + }) + }, + [metaData, config.accessToken], // eslint-disable-line react-hooks/exhaustive-deps + ), + ) + + return visibleNodesGenerator +} diff --git a/src/components/FileExplorer/hooks/useVisibleNodesGeneratorMethods.tsx b/src/components/FileExplorer/hooks/useVisibleNodesGeneratorMethods.tsx new file mode 100644 index 0000000..6363869 --- /dev/null +++ b/src/components/FileExplorer/hooks/useVisibleNodesGeneratorMethods.tsx @@ -0,0 +1,40 @@ +import { platform } from 'platforms' +import { useEffect } from 'react' +import { VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' +import { useExpandTo } from './useExpandTo' +import { useFocusNode } from './useFocusNode' +import { useGoTo } from './useGoTo' +import { useToggleExpansion } from './useToggleExpansion' + +export function useVisibleNodesGeneratorMethods( + visibleNodesGenerator: VisibleNodesGenerator, + getCurrentPath: () => string[] | null, + updateSearchKey: React.Dispatch>, +) { + const expandTo = useExpandTo(visibleNodesGenerator) + const goTo = useGoTo(visibleNodesGenerator, updateSearchKey, expandTo) + const toggleExpansion = useToggleExpansion(visibleNodesGenerator) + const focusNode = useFocusNode(visibleNodesGenerator) + + // Only run when visibleNodesGenerator changes + // Confirmed: other items in deps array also only update when that changes + useEffect(() => { + if (platform.shouldExpandAll?.()) { + visibleNodesGenerator.onNextUpdate(visibleNodes => + visibleNodes.nodes.forEach(node => toggleExpansion(node, { recursive: true })), + ) + } else { + const targetPath = getCurrentPath() + if (targetPath) goTo(targetPath) + } + }, [visibleNodesGenerator, getCurrentPath, goTo, toggleExpansion]) + + return { + expandTo, + goTo, + toggleExpansion, + focusNode, + } +} + +export type VisibleNodesGeneratorMethods = ReturnType diff --git a/src/components/FileExplorer/index.tsx b/src/components/FileExplorer/index.tsx new file mode 100644 index 0000000..4e59e9a --- /dev/null +++ b/src/components/FileExplorer/index.tsx @@ -0,0 +1,238 @@ +import { Label, Text } from '@primer/react' +import { useFocusOnPendingTarget } from 'components/FocusTarget' +import { LoadingIndicator } from 'components/LoadingIndicator' +import { SearchBar } from 'components/SearchBar' +import { useConfigs } from 'containers/ConfigsContext' +import { RepoContext } from 'containers/RepoContext' +import { platform } from 'platforms' +import * as React from 'react' +import { usePrevious } from 'react-use' +import { cx } from 'utils/cx' +import { run } from 'utils/general' +import { useElementSize } from 'utils/hooks/useElementSize' +import { useAfterRedirect } from 'utils/hooks/useFastRedirect' +import { useLoadedContext } from 'utils/hooks/useLoadedContext' +import { useOnLocationChange } from 'utils/hooks/useOnLocationChange' +import { VisibleNodes, VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' +import { SideBarStateContext } from '../../containers/SideBarState' +import { useGetCurrentPath } from './hooks/useGetCurrentPath' +import { useHandleKeyDown } from './hooks/useHandleKeyDown' +import { + NodeRenderer, + useNodeRenderers, + useRenderFileCommentAmounts, + useRenderFileStatus, + useRenderFindInFolderButton, + useRenderGoToButton, +} from './hooks/useNodeRenderers' +import { useHandleNodeClick } from './hooks/useOnNodeClick' +import { useOnSearch } from './hooks/useOnSearch' +import { useRenderLabelText } from './hooks/useRenderLabelText' +import { useVisibleNodesGenerator } from './hooks/useVisibleNodesGenerator' +import { useVisibleNodesGeneratorMethods } from './hooks/useVisibleNodesGeneratorMethods' +import { Node } from './Node' +import { useHandleNodeFocus } from './useHandleNodeFocus' +import { AlignMode, useVirtualScroll } from './useVirtualScroll' +import { useVisibleNodes } from './useVisibleNodes' + +export type NodeRendererContext = { + onNodeClick: (event: React.MouseEvent, node: TreeNode) => void + onNodeFocus: (event: React.FocusEvent, node: TreeNode) => void + renderLabelText: NodeRenderer + renderActions: NodeRenderer | undefined + visibleNodes: VisibleNodes +} + +export function FileExplorer() { + const metaData = React.useContext(RepoContext) + const visibleNodesGenerator = useVisibleNodesGenerator(metaData) + const visibleNodes = useVisibleNodes(visibleNodesGenerator) + const state = useLoadedContext(SideBarStateContext).value + + return ( + <> + {run(() => { + switch (state) { + case 'tree-loading': + return + case 'tree-rendering': + return + case 'tree-rendered': + return ( + metaData && + visibleNodesGenerator && + visibleNodes && ( + + ) + ) + } + })} + + ) +} + +function LoadedFileExplorer({ + metaData, + visibleNodesGenerator, + visibleNodes, +}: { + metaData: MetaData + visibleNodesGenerator: VisibleNodesGenerator + visibleNodes: VisibleNodes +}) { + const [searchKey, updateSearchKey] = React.useState('') + const searched = !!searchKey + const onSearch = useOnSearch(updateSearchKey, visibleNodesGenerator) + const { focusedNode, nodes, expandedNodes, depths, loading } = visibleNodes + + const { + ref: filesRef, + size: [, height], + } = useElementSize() + const { compactFileTree } = useConfigs().value + const { + ref: scrollElementRef, + onScroll, + visibleRows, + containerStyle, + scrollToItem, + } = useVirtualScroll({ + totalAmount: visibleNodes.nodes.length, + rowHeight: compactFileTree ? 24 : 37, + viewportHeight: height, + overScan: 10, + }) + + // - init loading + // - "top" + // - jump to file + // - "top" + // - tab to file + // - "lazy" + // - click file/folder + // - "lazy" + // - navigate with keyboard + // - "lazy" + const [alignMode, setAlignMode] = React.useState('top') + + const index = React.useMemo( + () => (focusedNode?.path ? nodes.findIndex(node => node.path === focusedNode.path) : -1), + [focusedNode?.path, nodes], + ) + + React.useLayoutEffect(() => { + if (index !== -1) scrollToItem(index, alignMode) + }, [index, scrollToItem, alignMode]) + const prevSearchKey = usePrevious(searchKey) + React.useEffect(() => { + // when start searching or stop searching + if (!prevSearchKey !== !searchKey) scrollToItem(0, alignMode) + }, [prevSearchKey, searchKey, scrollToItem, alignMode]) + + const getCurrentPath = useGetCurrentPath(metaData) + const methods = useVisibleNodesGeneratorMethods( + visibleNodesGenerator, + getCurrentPath, + updateSearchKey, + ) + const { expandTo, goTo, focusNode } = methods + const handleNodeFocus = useHandleNodeFocus(methods, setAlignMode) + const handleNodeClick = useHandleNodeClick(methods, setAlignMode) + const handleKeyDown = useHandleKeyDown(visibleNodes, methods, searched, setAlignMode) + const handleFocusSearchBar = () => focusNode(null) + + const renderActions = useNodeRenderers([ + useRenderGoToButton(searched, goTo), + useRenderFindInFolderButton(onSearch), + useRenderFileCommentAmounts(), + useRenderFileStatus(), + ]) + const renderLabelText = useRenderLabelText(searchKey) + + const goToCurrentItem = React.useCallback(() => { + const targetPath = platform.getCurrentPath(metaData.branchName) + if (targetPath) expandTo(targetPath) + }, [metaData.branchName, expandTo]) + + useOnLocationChange(goToCurrentItem) + useAfterRedirect(goToCurrentItem) + + const ref = React.useRef(null) + useFocusOnPendingTarget( + 'files', + React.useCallback(() => ref.current?.focus(), []), + ) + + return ( +
+ {visibleNodesGenerator?.defer && ( +
+ +
+ )} + + {searched && visibleNodes.nodes.length === 0 && ( + <> + + No results found. + + {visibleNodesGenerator?.defer && ( + + Search results are limited to loaded folders in Lazy Mode. + + )} + + )} +
+
+
+ {visibleRows.map(({ row, style }) => { + const node = nodes[row] + return ( + + ) + })} +
+
+
+
+ ) +} diff --git a/src/components/FileExplorer/useHandleNodeFocus.tsx b/src/components/FileExplorer/useHandleNodeFocus.tsx new file mode 100644 index 0000000..50fddfe --- /dev/null +++ b/src/components/FileExplorer/useHandleNodeFocus.tsx @@ -0,0 +1,16 @@ +import * as React from 'react' +import { VisibleNodesGeneratorMethods } from './hooks/useVisibleNodesGeneratorMethods' +import { AlignMode } from './useVirtualScroll' + +export function useHandleNodeFocus( + { focusNode }: VisibleNodesGeneratorMethods, + setAlignMode: (mode: AlignMode) => void, +) { + return React.useCallback( + (event: React.FocusEvent, node: TreeNode) => { + setAlignMode('lazy') + focusNode(node) + }, + [focusNode, setAlignMode], + ) +} diff --git a/src/components/FileExplorer/useLatestValueRef.tsx b/src/components/FileExplorer/useLatestValueRef.tsx new file mode 100644 index 0000000..8325e36 --- /dev/null +++ b/src/components/FileExplorer/useLatestValueRef.tsx @@ -0,0 +1,15 @@ +import * as React from 'react' + +function useLatestValueRef(value: T) { + const ref = React.useRef(value) + React.useEffect(() => { + ref.current = value + }) + return ref +} +export function useCallbackRef( + callback: (...args: Args) => R, +): (...args: Args) => R { + const ref = useLatestValueRef(callback) + return React.useCallback((...args: Args) => ref.current(...args), [ref]) +} diff --git a/src/components/FileExplorer/useVirtualScroll.tsx b/src/components/FileExplorer/useVirtualScroll.tsx new file mode 100644 index 0000000..dad2973 --- /dev/null +++ b/src/components/FileExplorer/useVirtualScroll.tsx @@ -0,0 +1,122 @@ +import * as React from 'react' +import { useCallbackRef } from './useLatestValueRef' + +function memoize( + fn: (...args: Args) => R, + serializeArguments: (...args: Args) => string | number, +): (...args: Args) => R { + const memory = new Map() + return (...args) => { + const key = serializeArguments(...args) + let r = memory.get(key) + if (!r) memory.set(key, (r = fn(...args))) + return r + } +} + +export type AlignMode = 'top' | 'end' | 'lazy' + +export function useVirtualScroll({ + totalAmount, + viewportHeight, + rowHeight, + overScan = 0, +}: { + totalAmount: number + overScan?: number + viewportHeight: number + rowHeight: number +}) { + const totalHeight = totalAmount * rowHeight + + const ref = React.useRef(null) // TODO: compare DOM native event listener + const [scrollTop, setScrollTop] = React.useState(0) + + const onScroll = React.useCallback((e: React.UIEvent) => { + setScrollTop(e.currentTarget.scrollTop) + }, []) + + const [startRenderIndex, endRenderIndex] = React.useMemo(() => { + const viewportLastItemOverflow = viewportHeight % rowHeight + const visibleRowCount = (viewportHeight - viewportLastItemOverflow) / rowHeight + const inViewIndexFirst = (Math.min(scrollTop, totalHeight - viewportHeight) / rowHeight) >> 0 + const inViewIndexLast = inViewIndexFirst + visibleRowCount + const renderIndexFirst = Math.max(0, inViewIndexFirst - overScan) + const renderIndexLast = Math.min(totalAmount, inViewIndexLast + overScan) + return [renderIndexFirst, renderIndexLast] + }, [scrollTop, viewportHeight, overScan, rowHeight, totalAmount, totalHeight]) + + const indexes = React.useMemo(() => { + const indexes: number[] = [] + let i = startRenderIndex + while (i < endRenderIndex) indexes.push(i++) + return indexes + }, [startRenderIndex, endRenderIndex]) + + const mapStyles = React.useCallback( + (row: number): React.CSSProperties => ({ + position: 'absolute', + top: 0, + transform: `translateY(${row * rowHeight}px)`, + width: '100%', + height: rowHeight, + }), + [rowHeight], + ) + const memoizedStyler = React.useMemo(() => memoize(mapStyles, row => row), [mapStyles]) + + const visibleRows: { row: number; style: React.CSSProperties }[] = React.useMemo( + () => + indexes.map(row => ({ + row, + style: memoizedStyler(row), + })), + [indexes, memoizedStyler], + ) + + const containerStyle: React.CSSProperties = React.useMemo( + () => ({ + height: totalHeight, + position: 'relative', + }), + [totalHeight], + ) + + const scrollToItem = useCallbackRef((row: number, mode: AlignMode) => { + const getOffsetEnd = () => row * rowHeight + rowHeight - viewportHeight + const getOffsetTop = () => row * rowHeight + + const updateScrollPosition = (scrollTop: number) => { + setScrollTop(scrollTop) + + // Note: storing the scrollTop into a state and update DOM element scrollTop inside a layout effect would not work. + if (ref.current) { + ref.current.scrollTop = scrollTop + } + } + + switch (mode) { + case 'top': + return updateScrollPosition(getOffsetTop()) + case 'end': + return updateScrollPosition(getOffsetEnd()) + case 'lazy': { + const isAbove = row * rowHeight < scrollTop + const isBelow = row * rowHeight + rowHeight > scrollTop + viewportHeight + if (isBelow) { + updateScrollPosition(getOffsetEnd()) + } else if (isAbove) { + updateScrollPosition(getOffsetTop()) + } + } + } + }) + + return { + ref, + visibleRows, + onScroll, + containerStyle, + scrollToItem, + } +} diff --git a/src/components/FileExplorer/useVisibleNodes.tsx b/src/components/FileExplorer/useVisibleNodes.tsx new file mode 100644 index 0000000..7d70b73 --- /dev/null +++ b/src/components/FileExplorer/useVisibleNodes.tsx @@ -0,0 +1,15 @@ +import { useEffect, useState } from 'react' +import { VisibleNodes, VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' + +export function useVisibleNodes(visibleNodesGenerator: VisibleNodesGenerator | null) { + const [visibleNodes, setVisibleNodes] = useState( + visibleNodesGenerator?.visibleNodes || null, + ) + useEffect(() => { + const $visibleNodes = visibleNodesGenerator?.visibleNodes || null + if (visibleNodes !== $visibleNodes) setVisibleNodes($visibleNodes) + + return visibleNodesGenerator?.onUpdate(setVisibleNodes) + }, [visibleNodesGenerator]) // eslint-disable-line react-hooks/exhaustive-deps + return visibleNodes +} diff --git a/src/components/FocusTarget.tsx b/src/components/FocusTarget.tsx new file mode 100644 index 0000000..e5920f5 --- /dev/null +++ b/src/components/FocusTarget.tsx @@ -0,0 +1,14 @@ +import * as React from 'react' +import { SidebarContext } from './SidebarContext' + +export type FocusTarget = 'files' | 'search' | null + +export function useFocusOnPendingTarget(target: FocusTarget, method: () => void) { + const { pendingFocusTarget } = React.useContext(SidebarContext) + React.useEffect(() => { + if (pendingFocusTarget.value === target) { + method() + pendingFocusTarget.onChange(null) + } + }, [target, method, pendingFocusTarget]) +} diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..87b27e2 --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,33 @@ +import { GearIcon } from '@primer/octicons-react' +import { Link } from '@primer/react' +import { VERSION } from 'env' +import * as React from 'react' +import { RoundIconButton } from './RoundIconButton' +import { wikiLinks } from './settings/SettingsBar' + +type Props = { + toggleShowSettings: () => void +} + +export function Footer(props: Props) { + const { toggleShowSettings } = props + return ( +
+ + {VERSION} + + +
+ ) +} diff --git a/src/components/Gitako.tsx b/src/components/Gitako.tsx index 13039b3..b3ce0ad 100644 --- a/src/components/Gitako.tsx +++ b/src/components/Gitako.tsx @@ -1,6 +1,10 @@ import { SideBar } from 'components/SideBar' import { ConfigsContextWrapper } from 'containers/ConfigsContext' +import { ReloadContextWrapper } from 'containers/ReloadContext' +import { InspectorContextWrapper } from 'containers/StateInspector' import * as React from 'react' +import { StyleSheetManager } from 'styled-components' +import { insertMountPoint } from 'utils/DOMHelper' import { ErrorBoundary } from '../containers/ErrorBoundary' import { StateBarErrorContextWrapper } from '../containers/ErrorContext' import { OAuthWrapper } from '../containers/OAuthWrapper' @@ -9,18 +13,24 @@ import { StateBarStateContextWrapper } from '../containers/SideBarState' export function Gitako() { return ( - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + ) } diff --git a/src/components/Highlight.test.tsx b/src/components/Highlight.test.tsx new file mode 100644 index 0000000..5d1fbc3 --- /dev/null +++ b/src/components/Highlight.test.tsx @@ -0,0 +1,15 @@ +import { render } from '@testing-library/react' +import React, { ComponentProps } from 'react' +import { Highlight } from './Highlight' + +function test(title: string, text: string, match?: ComponentProps['match']) { + it(title, () => { + expect(render().container.textContent).toBe(text) + }) +} + +test('sample', 'abc', undefined) +test('sample', 'abc', /./) +test('sample', 'abc', /../) +test('sample', 'abc', /.../) +test('sample', 'abc', /..../) diff --git a/src/components/Highlight.tsx b/src/components/Highlight.tsx index 820a294..4d73e58 100644 --- a/src/components/Highlight.tsx +++ b/src/components/Highlight.tsx @@ -1,35 +1,45 @@ import * as React from 'react' -export function Highlight(props: { text: string; match?: RegExp | string }) { - const { text, match } = props - const $match = React.useMemo(() => { - if (match) { - if (match instanceof RegExp) { - if (match.flags.includes('g')) return match - return new RegExp(match.source, 'g' + match.flags) - } - return new RegExp(match, 'g') - } - return null - }, [match]) - - if (!$match) return <>{text} - - const matchedPieces = Array.from(text.matchAll($match)).map( - ([text, highlightText = text]) => highlightText, +export const Highlight = function Highlight({ text, match }: { text: string; match?: RegExp }) { + const $match = React.useMemo( + () => + match instanceof RegExp + ? match.flags.includes('g') + ? match + : new RegExp(match.source, 'g' + match.flags) + : null, + [match], ) - const preservedPieces = text.split($match) - const content = [] - let i = 0 - while (matchedPieces.length || preservedPieces.length) { - if (preservedPieces.length) { - content.push({preservedPieces.shift()}) - } - if (matchedPieces.length) { - content.push({matchedPieces.shift()}) - } + const chunks = React.useMemo(() => getChunks(text, $match), [text, $match]) + + return <>{chunks.map(([type, text], key) => React.createElement(type, { key }, text))} +} + +type ElementMeta = [tag: string, content: string] +function getChunks(text: string, match: RegExp | null): ElementMeta[] { + const contents: ElementMeta[] = [] + + if (match === null) { + contents.push(['span', text]) + return contents } - return <>{content} + const matchedPieces = Array.from(text.matchAll(match)).map( + ([text, highlightText = text]) => highlightText, + ) + const preservedPieces = text.split(match) + + const push = (type: string, text: string) => { + const last = contents[contents.length - 1] + if (last && last[0] === type) last[1] += text + else contents.push([type, text]) + } + + const max = Math.max(matchedPieces.length, preservedPieces.length) + for (let i = 0; i < max; ++i) { + preservedPieces[i] && push('span', preservedPieces[i]) + matchedPieces[i] && push('mark', matchedPieces[i]) + } + return contents } diff --git a/src/components/HighlightOnIndexes.test.tsx b/src/components/HighlightOnIndexes.test.tsx new file mode 100644 index 0000000..1ffd64f --- /dev/null +++ b/src/components/HighlightOnIndexes.test.tsx @@ -0,0 +1,27 @@ +import { render } from '@testing-library/react' +import React from 'react' +import { is } from 'utils/is' +import { HighlightOnIndexes } from './HighlightOnIndexes' + +function test(title: string, text: string, indexes?: number[]) { + it(title, () => { + expect(render().container.textContent).toBe( + text, + ) + }) +} + +const text = 'abcdef' +for (let i = 0; i < Math.pow(2, text.length); i++) { + const bitwise = i.toString(2) + const indexes = bitwise + .split('') + .reverse() + .map((bit, index) => (bit === '1' ? index : false)) + .filter(is.not.false) + test( + `renders properly when highlight ${bitwise.padStart(text.length, '0')}, indexes [${indexes}]`, + text, + indexes, + ) +} diff --git a/src/components/HighlightOnIndexes.tsx b/src/components/HighlightOnIndexes.tsx index f8a21f4..f9748c5 100644 --- a/src/components/HighlightOnIndexes.tsx +++ b/src/components/HighlightOnIndexes.tsx @@ -1,17 +1,28 @@ import * as React from 'react' -export function HighlightOnIndexes(props: { text: string; indexes?: number[] }) { - const { text, indexes } = props - - if (!indexes?.length) return <>{text} - +export function HighlightOnIndexes({ text, indexes = [] }: { text: string; indexes?: number[] }) { return ( <> - {text - .split('') - .map((char, i) => - indexes.includes(i) ? {char} : {char}, - )} + {[-1] + .concat(indexes) + .map((index, i, arr) => [ + index === -1 ? '' : text.slice(index, index + 1), + text.slice(index + 1, arr[i + 1]), + ]) + .reduce((arr, pair) => { + const last = arr[arr.length - 1] + if (last && !last[1]) { + last[0] += pair[0] + last[1] += pair[1] + } else { + arr.push(pair) + } + return arr + }, [] as string[][]) + .map(([chunk, nextChunk], i) => [ + chunk && {chunk}, + nextChunk && {nextChunk}, + ])} ) } diff --git a/src/components/IIFC.tsx b/src/components/IIFC.tsx deleted file mode 100644 index 6a57b87..0000000 --- a/src/components/IIFC.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import * as React from 'react' - -// I tried to install `react-iifc` but that causes TS build errors for unknown reason -// So here the duplicated code is - -export function IIFC({ children }: { children(): React.ReactNode }) { - return <>{children()} -} diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx index 1204d18..111651f 100644 --- a/src/components/Icon.tsx +++ b/src/components/Icon.tsx @@ -19,12 +19,11 @@ import { HourglassIcon as Hourglass, IconProps, MarkdownIcon as Markdown, - OctofaceIcon as Octoface, PinIcon as Pin, ReplyIcon as Reply, SearchIcon as Search, TabIcon as Tab, - XIcon as X + XIcon as X, } from '@primer/octicons-react' import * as React from 'react' import { cx } from 'utils/cx' @@ -42,7 +41,6 @@ const iconToComponentMap = { Hourglass, Submodule, Grabber, - Octoface, ChevronDown, X, Gear, @@ -63,15 +61,7 @@ const typeToIconComponentMap: { } = { search: 'Search', loading: 'Clock', - hourglass: 'Hourglass', submodule: 'Submodule', - grabber: 'Grabber', - octoface: 'Octoface', - comment: 'Comment', - x: 'X', - pin: 'Pin', - tab: 'Tab', - gear: 'Gear', diff: 'Diff', diffAdded: 'DiffAdded', diffIgnored: 'DiffIgnored', @@ -79,7 +69,6 @@ const typeToIconComponentMap: { diffRemoved: 'DiffRemoved', diffRenamed: 'DiffRenamed', folder: 'ChevronRight', - 'chevron-down': 'ChevronDown', 'go-to': 'Reply', '.zip': 'FileZip', '.rar': 'FileZip', @@ -102,7 +91,9 @@ const typeToIconComponentMap: { } type Props = { - type: string + type?: keyof typeof typeToIconComponentMap + name?: keyof typeof iconToComponentMap + IconComponent?: React.ComponentType className?: string placeholder?: boolean onClick?: (event: React.MouseEvent) => void @@ -110,19 +101,15 @@ type Props = { export const Icon = React.memo(function Icon({ type, - className = undefined, placeholder, + className = undefined, + name = (type && typeToIconComponentMap[type]) || defaultIcon, + IconComponent = iconToComponentMap[name], ...otherProps }: Props) { - let children: React.ReactNode = null - if (!placeholder) { - const name = typeToIconComponentMap[type] || defaultIcon - const IconComponent = iconToComponentMap[name] - children = - } return ( -
- {children} -
+ + {placeholder ? null : } + ) }) diff --git a/src/components/IconButton.tsx b/src/components/IconButton.tsx new file mode 100644 index 0000000..86838d5 --- /dev/null +++ b/src/components/IconButton.tsx @@ -0,0 +1,49 @@ +import { IconProps } from '@primer/octicons-react' +import { Box, merge, SxProp, useTheme } from '@primer/react' +import { getBaseStyles, getSizeStyles, getVariantStyles } from '@primer/react/lib/Button/styles' +import { + IconButtonProps as PrimerIconButtonProps, + StyledButton, +} from '@primer/react/lib/Button/types' +import React from 'react' +import { is } from 'utils/is' + +export type IconButtonProps = PrimerIconButtonProps & { + iconSize?: IconProps['size'] + iconColor?: string +} + +// Modified version of @primer/react/lib/Button/Button.tsx +// Added better support of colors & size + +export function IconButton(props: IconButtonProps) { + const { + variant = 'default', + size = 'medium', + iconSize, // grow the icon to the same size as the button + iconColor, // extra control of icon color + sx: sxProp = {}, + icon: Icon, + ...rest + } = props + const { theme } = useTheme() + const sxStyles = merge.all( + [ + getBaseStyles(theme), + getSizeStyles(size, variant, true), + getVariantStyles(variant, theme), + // Unsatisfied with preset color of the `invisible` variant + { + color: iconColor || (variant === 'invisible' ? 'fg.subtle' : undefined), + }, + sxProp as SxProp, + ].filter(is.not.undefined), + ) + return ( + + + + + + ) +} diff --git a/src/components/Inputs/Checkbox.tsx b/src/components/Inputs/Checkbox.tsx new file mode 100644 index 0000000..8e327d7 --- /dev/null +++ b/src/components/Inputs/Checkbox.tsx @@ -0,0 +1,24 @@ +import { Checkbox as PrimerCheckbox, CheckboxProps, FormControl } from '@primer/react' +import * as React from 'react' + +export function Checkbox({ + label, + value, + onChange, + checked = value, + ...rest +}: Override>) { + return ( + + onChange(e.target.checked)} + {...rest} + /> + {label} + + ) +} diff --git a/src/components/Inputs/SelectInput.tsx b/src/components/Inputs/SelectInput.tsx new file mode 100644 index 0000000..e3dbe01 --- /dev/null +++ b/src/components/Inputs/SelectInput.tsx @@ -0,0 +1,62 @@ +import { FormControl, Select, SelectProps } from '@primer/react' +import * as React from 'react' + +export type Option = { + key: string + label: string + value: T +} + +export type SelectInputProps = Override< + SelectProps, + IO & { + label: React.ReactNode + options: Option[] + } +> + +export function SelectInput({ + value, + onChange, + label, + options, + ...selectProps +}: SelectInputProps) { + return ( + span': { + // original boxShadow does not look right + borderWidth: '2px', + boxShadow: 'none', + '> select': { + paddingLeft: '11px', + paddingRight: '11px', + }, + }, + }, + mb: 1, + }} + disabled={selectProps.disabled} + > + {label} + + + ) +} diff --git a/src/components/LoadingIndicator.tsx b/src/components/LoadingIndicator.tsx index c0d0dad..4295a83 100644 --- a/src/components/LoadingIndicator.tsx +++ b/src/components/LoadingIndicator.tsx @@ -1,4 +1,4 @@ -import { Icon } from 'components/Icon' +import { HourglassIcon } from '@primer/octicons-react' import * as React from 'react' type Props = { @@ -8,7 +8,7 @@ export function LoadingIndicator({ text }: Props) { return (
- + {text}
diff --git a/src/components/MetaBar.tsx b/src/components/MetaBar.tsx index bb7e0cc..51f33a7 100644 --- a/src/components/MetaBar.tsx +++ b/src/components/MetaBar.tsx @@ -1,45 +1,49 @@ -import { BranchName, Breadcrumb, Flex, Text } from '@primer/components' import { GitBranchIcon } from '@primer/octicons-react' +import { Box, BranchName, Breadcrumbs, Text } from '@primer/react' +import { RepoContext } from 'containers/RepoContext' import { platform } from 'platforms' import * as React from 'react' -import { createAnchorClickHandler } from "utils/createAnchorClickHandler" +import { createAnchorClickHandler } from 'utils/createAnchorClickHandler' -type Props = { - metaData: MetaData -} +export function MetaBar() { + const metaData = React.useContext(RepoContext) + if (!metaData) return null -export function MetaBar({ metaData }: Props) { const { userName, repoName, branchName } = metaData const { repoUrl, userUrl, branchUrl } = platform.resolveUrlFromMetaData(metaData) return ( <> - - + + {userName} - - + {repoName} - - - + + +
{branchName || '...'} -
+ ) } diff --git a/src/components/ResizeHandler.tsx b/src/components/ResizeHandler.tsx index b8513a9..76be3b6 100644 --- a/src/components/ResizeHandler.tsx +++ b/src/components/ResizeHandler.tsx @@ -1,7 +1,8 @@ +import { GrabberIcon } from '@primer/octicons-react' import { Icon } from 'components/Icon' import * as React from 'react' import { ResizeState, useResizeHandler } from '../utils/hooks/useResizeHandler' -import { Size2D } from './SideBarBodyWrapper' +import { Size2D } from './Size' type Props = { size: Size2D @@ -21,7 +22,7 @@ export function ResizeHandler({ onResize, onResetSize, onResizeStateChange, size onDoubleClick={onResetSize} style={style} > - +
) } diff --git a/src/components/RoundIconButton.tsx b/src/components/RoundIconButton.tsx new file mode 100644 index 0000000..ddc2178 --- /dev/null +++ b/src/components/RoundIconButton.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import { IconButton, IconButtonProps } from './IconButton' + +export function RoundIconButton(props: IconButtonProps) { + return ( + + ) +} diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 05a1f96..f3fc148 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,9 +1,9 @@ -import { TextInput, TextInputProps } from '@primer/components' import { SearchIcon } from '@primer/octicons-react' +import { TextInput, TextInputProps } from '@primer/react' import { useConfigs } from 'containers/ConfigsContext' import * as React from 'react' -import { cx } from 'utils/cx' -import { isValidRegexpSource } from 'utils/general' +import { formatWithShortcut, isValidRegexpSource } from 'utils/general' +import { useFocusOnPendingTarget } from './FocusTarget' import { SearchMode } from './searchModes' type Props = { @@ -12,37 +12,45 @@ type Props = { } & Required> export function SearchBar({ onSearch, onFocus, value }: Props) { - const configs = useConfigs() - const { searchMode } = configs.value + const ref = React.useRef(null) + useFocusOnPendingTarget( + 'search', + React.useCallback(() => ref.current?.focus(), []), + ) - const toggleButtonDescription = `${ + const configs = useConfigs() + const { searchMode, focusSearchInputShortcut } = configs.value + + const toggleButtonDescription = searchMode === 'regex' ? 'Match file name with regular expression.' - : 'Match file path sequence with input.' - } Click to toggle.` + : `Match file path sequence with plain input.` + + const validationStatus = React.useMemo( + () => (searchMode === 'regex' && !isValidRegexpSource(value) ? 'error' : undefined), + [value, searchMode], + ) return ( -
- { - onFocus(e) - e.target.select() - }} - tabIndex={0} - className={cx('search-input', { - error: searchMode === 'regex' && !isValidRegexpSource(value), - })} - aria-label="search files" - placeholder={`Search files`} - onChange={({ target: { value } }) => onSearch(value, searchMode)} - value={value} - /> -
- -
-
+ {searchMode === 'regex' ? '.*$' : 'a/b'} + + } + /> ) } diff --git a/src/components/SelectInput.tsx b/src/components/SelectInput.tsx deleted file mode 100644 index 48479a4..0000000 --- a/src/components/SelectInput.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import * as React from 'react' -export function SelectInput({ - value, - onChange, - options, - ...selectProps -}: Override< - React.DetailedHTMLProps, HTMLSelectElement>, - IO & { - options: Option[] - } ->) { - return ( -
- - -
- ) -} -export type Option = { - key: string - label: string - value: T -} diff --git a/src/components/SideBar.tsx b/src/components/SideBar.tsx index f2b82d5..8c77102 100644 --- a/src/components/SideBar.tsx +++ b/src/components/SideBar.tsx @@ -1,215 +1,313 @@ +import { PinIcon, TabIcon } from '@primer/octicons-react' import { AccessDeniedDescription } from 'components/AccessDeniedDescription' import { FileExplorer } from 'components/FileExplorer' +import { Footer } from 'components/Footer' import { MetaBar } from 'components/MetaBar' import { Portal } from 'components/Portal' -import { SettingsBar } from 'components/settings/SettingsBar' -import { SideBarBodyWrapper } from 'components/SideBarBodyWrapper' import { ToggleShowButton } from 'components/ToggleShowButton' import { useConfigs } from 'containers/ConfigsContext' import { platform } from 'platforms' import * as React from 'react' +import { IIFC } from 'react-iifc' +import { useWindowSize } from 'react-use' +import { Config } from 'utils/config/helper' import { cx } from 'utils/cx' import * as DOMHelper from 'utils/DOMHelper' -import { detectBrowser, run } from 'utils/general' -import { useCatchNetworkError } from 'utils/hooks/useCatchNetworkError' +import * as features from 'utils/features' +import { detectBrowser, formatWithShortcut } from 'utils/general' +import { useConditionalHook } from 'utils/hooks/useConditionalHook' +import { useAfterRedirect, usePJAXAPI } from 'utils/hooks/useFastRedirect' import { useLoadedContext } from 'utils/hooks/useLoadedContext' -import { useOnPJAXDone, usePJAX } from 'utils/hooks/usePJAX' +import { ResizeState } from 'utils/hooks/useResizeHandler' import { useStateIO } from 'utils/hooks/useStateIO' import { SideBarErrorContext } from '../containers/ErrorContext' -import { RepoContext } from '../containers/RepoContext' import { SideBarStateContext } from '../containers/SideBarState' import { Theme } from '../containers/Theme' -import { useToggleSideBarWithKeyboard } from '../utils/hooks/useToggleSideBarWithKeyboard' -import { Icon } from './Icon' -import { IIFC } from './IIFC' +import { useOnShortcutPressed } from '../utils/hooks/useOnShortcutPressed' +import { FocusTarget } from './FocusTarget' import { LoadingIndicator } from './LoadingIndicator' +import { RoundIconButton } from './RoundIconButton' +import { SettingsBarContent } from './settings/SettingsBar' +import { SidebarContext } from './SidebarContext' +import { SideBarResizeHandler } from './SideBarResizeHandler' export function SideBar() { - const metaData = React.useContext(RepoContext) - const state = useLoadedContext(SideBarStateContext).value - const configContext = useConfigs() - - const accessToken = configContext.value.accessToken || '' - const [baseSize] = React.useState(() => configContext.value.sideBarWidth) - - const $showSettings = useStateIO(false) - const showSettings = $showSettings.value - const toggleShowSettings = React.useCallback(() => $showSettings.onChange(show => !show), []) - - const $logoContainerElement = useStateIO(null) - - const hasMetaData = state !== 'disabled' // will be true since retrieving data, cannot use Boolean(metaData) - React.useEffect(() => { - if (hasMetaData) { - DOMHelper.markGitakoReadyState(true) - $showSettings.onChange(false) - $logoContainerElement.onChange(DOMHelper.insertLogoMountPoint()) - } else { - DOMHelper.markGitakoReadyState(false) - } - }, [hasMetaData]) - - React.useEffect(() => { - if (detectBrowser() === 'Safari') DOMHelper.markGitakoSafariFlag() - }, []) - - const sidebarToggleMode = configContext.value.sidebarToggleMode - const intelligentToggle = configContext.value.intelligentToggle - const $shouldShow = useStateIO(() => - intelligentToggle === null - ? sidebarToggleMode === 'persistent' - ? platform.shouldShow() - : false - : intelligentToggle, - ) - const shouldShow = $shouldShow.value - React.useEffect(() => { - if (sidebarToggleMode === 'persistent') { - DOMHelper.setBodyIndent(shouldShow) - } else { - DOMHelper.setBodyIndent(false) - } - - if (shouldShow) { - DOMHelper.focusFileExplorer() // TODO: verify if it works - } - }, [shouldShow, sidebarToggleMode]) - - // Save expand state on toggle if auto expand is off - React.useEffect(() => { - if (intelligentToggle !== null) { - configContext.onChange({ intelligentToggle: shouldShow }) - } - }, [shouldShow, intelligentToggle]) + usePJAXAPI() + platform.usePlatformHooks?.() + useMarkGitakoReadyState() const error = useLoadedContext(SideBarErrorContext).value - // Lock shouldShow on error - React.useEffect(() => { - if (error && shouldShow) { - $shouldShow.onChange(false) - } - }, [error]) - const setShowSideBar = React.useCallback( - (show: typeof $shouldShow.value) => { - if (!error) $shouldShow.onChange(show) - }, - [error], + const [shouldExpand, setShouldExpand, toggleShowSideBar] = useShouldExpand() + useFocusSidebarOnExpand(shouldExpand) + const pendingFocusTarget = useStateIO(null) + useShowSidebarKeyboard( + shouldExpand, + setShouldExpand, + toggleShowSideBar, + pendingFocusTarget.onChange, ) - const toggleShowSideBar = React.useCallback(() => { - if (!error) $shouldShow.onChange(show => !show) - }, [error]) - useToggleSideBarWithKeyboard(state, configContext, toggleShowSideBar) + const configContext = useConfigs() - const updateSideBarVisibility = React.useCallback(() => { - if (intelligentToggle === null && sidebarToggleMode === 'persistent') { - setShowSideBar(platform.shouldShow()) - } - }, [intelligentToggle, sidebarToggleMode]) + const blockLeaveRef = React.useRef(false) + const { sidebarToggleMode, shortcut, focusSearchInputShortcut } = configContext.value + const onResizeStateChange = React.useCallback((state: ResizeState) => { + blockLeaveRef.current = state === 'resizing' + }, []) - useOnPJAXDone(updateSideBarVisibility) + const heightForSafari = useConditionalHook( + () => detectBrowser() === 'Safari', + () => useWindowSize().height, // eslint-disable-line react-hooks/rules-of-hooks + ) - platform.usePlatformHooks?.() - - usePJAX() - - // Hide sidebar when error due to auth but token is set #128 - const hideSidebarOnInvalidToken: boolean = - intelligentToggle === null && Boolean(state === 'error-due-to-auth' && accessToken) - React.useEffect(() => { - if (hideSidebarOnInvalidToken) { - setShowSideBar(false) - } - }, [hideSidebarOnInvalidToken]) + const sidebarContextValue = React.useMemo(() => ({ pendingFocusTarget }), [pendingFocusTarget]) return ( -
- - + + {() => { + const logoContainerElement = useLogoContainerElement() + return ( + + setShouldExpand(true) : undefined} + onClick={toggleShowSideBar} + /> + + ) + }} + +
+
setShowSideBar(true) : undefined} - onClick={toggleShowSideBar} - /> - - setShowSideBar(false) : undefined} - sizeVariableMountPoint={sidebarToggleMode === 'persistent' ? document.body : undefined} - > -
-
-
-
- {sidebarToggleMode === 'persistent' && ( - - )} - + style={{ height: heightForSafari }} + onMouseLeave={() => { + if (blockLeaveRef.current) return + if (sidebarToggleMode === 'float') setShouldExpand(false) + }} + > +
+
+
+
+ {sidebarToggleMode === 'persistent' && ( + + )} + + configContext.onChange({ + sidebarToggleMode: + sidebarToggleMode === 'persistent' ? 'float' : 'persistent', + }) + } + /> +
+
- {metaData && } + + {() => { + switch (useLoadedContext(SideBarStateContext).value) { + case 'getting-access-token': + return + case 'after-getting-access-token': + case 'meta-loading': + return + case 'error-due-to-auth': + return + case 'meta-loaded': + case 'tree-loading': + case 'tree-rendering': + case 'tree-rendered': + return + } + }} +
- {run(() => { - switch (state) { - case 'disabled': - return null - case 'getting-access-token': - return - case 'after-getting-access-token': - case 'meta-loading': - return - case 'error-due-to-auth': - return - default: - return ( - metaData && ( - - {() => ( - - )} - - ) - ) - } - })} + + {() => { + const [showSettings, setShowSettings] = React.useState(false) + const toggleShowSettings = React.useCallback( + () => setShowSettings(show => !show), + [], + ) + + useOnShortcutPressed( + focusSearchInputShortcut, + React.useCallback(() => setShowSettings(false), []), + ) + + return ( + <> + {showSettings && } +
+ + ) + }} +
- + {features.resize && }
- -
+
+ ) } + +function useFocusSidebarOnExpand(shouldExpand: boolean) { + React.useEffect(() => { + // prevent keeping focus within Gitako + if (!shouldExpand) document.body.focus() + }, [shouldExpand]) +} + +function useMarkGitakoReadyState() { + React.useEffect(() => { + DOMHelper.markGitakoReadyState(true) + return () => DOMHelper.markGitakoReadyState(false) + }, []) +} + +function useLogoContainerElement() { + const [logoContainerElement, setLogoContainerElement] = React.useState(null) + React.useEffect(() => { + setLogoContainerElement(DOMHelper.insertLogoMountPoint()) + }, []) + return logoContainerElement +} + +function useUpdateBodyIndentOnStateUpdate(shouldExpand: boolean) { + const { sidebarToggleMode } = useConfigs().value + React.useEffect(() => { + if (sidebarToggleMode === 'persistent' && shouldExpand) { + DOMHelper.setBodyIndent(true) + return () => DOMHelper.setBodyIndent(false) + } + }, [sidebarToggleMode, shouldExpand]) +} + +const getDerivedExpansion = ({ + intelligentToggle, + sidebarToggleMode, +}: Pick) => + sidebarToggleMode === 'persistent' + ? intelligentToggle === null // auto-expand checked + ? platform.shouldExpandSideBar() + : intelligentToggle // read saved expand state + : false // do not expand in float mode + +function useGetDerivedExpansion() { + const { intelligentToggle, sidebarToggleMode } = useConfigs().value + return React.useCallback( + () => getDerivedExpansion({ intelligentToggle, sidebarToggleMode }), + [intelligentToggle, sidebarToggleMode], + ) +} + +function useUpdateBodyIndentAfterRedirect(update: (shouldExpand: boolean) => void) { + const { intelligentToggle, sidebarToggleMode } = useConfigs().value + useAfterRedirect( + React.useCallback(() => { + // check and update expand state if pinned and auto-expand checked + if (sidebarToggleMode === 'persistent') { + const shouldExpand = getDerivedExpansion({ intelligentToggle, sidebarToggleMode }) + update(shouldExpand) + // Below DOM mutation cannot be omitted, if do, body indent may get lost when shouldExpand is true for both before & after redirecting + DOMHelper.setBodyIndent(shouldExpand) + } + }, [update, sidebarToggleMode, intelligentToggle]), + ) +} + +// Save expand state on toggle if auto expand is off +function useSaveExpandStateOnToggle(shouldExpand: boolean) { + const configContext = useConfigs() + const { intelligentToggle } = configContext.value + React.useEffect(() => { + if (intelligentToggle !== null) configContext.onChange({ intelligentToggle: shouldExpand }) + }, [shouldExpand, intelligentToggle]) // eslint-disable-line react-hooks/exhaustive-deps +} + +function useCollapseOnNoPermissionWhenTokenHasBeenSet( + setShowSideBar: React.Dispatch>, +) { + const { accessToken, intelligentToggle, sidebarToggleMode } = useConfigs().value + const state = useLoadedContext(SideBarStateContext).value + const hideSidebarOnInvalidToken = + sidebarToggleMode === 'persistent' && + intelligentToggle === null && + !!accessToken && + state === 'error-due-to-auth' + React.useEffect(() => { + if (hideSidebarOnInvalidToken) setShowSideBar(false) + }, [hideSidebarOnInvalidToken, setShowSideBar]) +} + +function useShouldExpand() { + const getDerivedExpansion = useGetDerivedExpansion() + const [shouldExpand, setShouldExpand] = React.useState(getDerivedExpansion) + const toggleShowSideBar = React.useCallback( + () => setShouldExpand(show => !show), + [setShouldExpand], + ) + + useSaveExpandStateOnToggle(shouldExpand) + useUpdateBodyIndentOnStateUpdate(shouldExpand) + useUpdateBodyIndentAfterRedirect(setShouldExpand) + useCollapseOnNoPermissionWhenTokenHasBeenSet(setShouldExpand) + + return [shouldExpand, setShouldExpand, toggleShowSideBar] as const +} + +function useShowSidebarKeyboard( + shouldExpand: boolean, + setShouldExpand: React.Dispatch>, + toggleShowSideBar: () => void, + setFocusTarget: React.Dispatch>, +) { + const config = useConfigs().value + + useOnShortcutPressed( + config.shortcut, + React.useCallback( + e => { + DOMHelper.cancelEvent(e) + toggleShowSideBar() + if (!shouldExpand) setFocusTarget('files') + }, + [shouldExpand, toggleShowSideBar, setFocusTarget], + ), + ) + + useOnShortcutPressed( + config.focusSearchInputShortcut, + React.useCallback( + e => { + DOMHelper.cancelEvent(e) + if (!shouldExpand) setShouldExpand(true) + setFocusTarget('search') + }, + [shouldExpand, setShouldExpand, setFocusTarget], + ), + ) +} diff --git a/src/components/SideBarBodyWrapper.tsx b/src/components/SideBarBodyWrapper.tsx deleted file mode 100644 index e9a6a98..0000000 --- a/src/components/SideBarBodyWrapper.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import { ResizeHandler } from 'components/ResizeHandler' -import { useConfigs } from 'containers/ConfigsContext' -import * as React from 'react' -import { useDebounce, useWindowSize } from 'react-use' -import { defaultConfigs } from 'utils/config/helper' -import { cx } from 'utils/cx' -import { setCSSVariable } from 'utils/DOMHelper' -import * as features from 'utils/features' -import { detectBrowser } from 'utils/general' -import { useConditionalHook } from '../utils/hooks/useConditionalHook' - -type Size = number -export type Size2D = [Size, Size] -type Props = { - baseSize: Size - className?: string - onLeave?: React.HTMLAttributes['onMouseLeave'] - sizeVariableMountPoint?: HTMLElement -} - -const MINIMAL_CONTENT_VIEWPORT_WIDTH = 100 -const MINIMAL_WIDTH = 240 - -function getSafeSize(size: number, width: number) { - if (size > width - MINIMAL_CONTENT_VIEWPORT_WIDTH) return width - MINIMAL_CONTENT_VIEWPORT_WIDTH - if (size < MINIMAL_WIDTH) return MINIMAL_WIDTH - return size -} - -export function SideBarBodyWrapper({ - baseSize, - className, - children, - onLeave, - sizeVariableMountPoint, -}: React.PropsWithChildren) { - const [size, setSize] = React.useState(baseSize) - const configContext = useConfigs() - const blockLeaveRef = React.useRef(false) - - const heightForSafari = useConditionalHook( - () => detectBrowser() === 'Safari', - () => useWindowSize().height, - ) - - React.useEffect(() => { - setSize(baseSize) - }, [baseSize]) - - const { width } = useWindowSize() - React.useEffect(() => { - const safeSize = getSafeSize(size, width) - if (safeSize !== size) setSize(safeSize) - }, [width, size]) - const bodyWrapperRef = React.useRef(null) - useDebounce(() => configContext.onChange({ sideBarWidth: size }), 100, [size]) - - function apply(sizeVariableMountPoint: HTMLElement | undefined, size: number) { - if (sizeVariableMountPoint) - setCSSVariable( - '--gitako-width', - sizeVariableMountPoint ? `${size}px` : undefined, - sizeVariableMountPoint, - ) - - if (bodyWrapperRef.current) - setCSSVariable( - '--gitako-width', - sizeVariableMountPoint ? undefined : `${size}px`, - bodyWrapperRef.current, - ) - } - - // Update size using useEffect would cause delay - const onResize = React.useMemo(() => { - let sizeToApply: number, - applied = true - return ([size]: number[]) => { - // do NOT merge this with the above similar effect, side bar will jump otherwise - sizeToApply = getSafeSize(size, width) - setSize(sizeToApply) - - if (applied) { - applied = false - requestAnimationFrame(() => { - applied = true - apply(sizeVariableMountPoint, sizeToApply) - }) - } - } - }, [width, sizeVariableMountPoint]) - - React.useEffect(() => { - apply(sizeVariableMountPoint, size) - }, [sizeVariableMountPoint]) - - const onMouseLeave = React.useCallback( - e => { - if (blockLeaveRef.current) return - onLeave?.(e) - }, - [onLeave], - ) - - const dummySize: [number, number] = React.useMemo(() => [size, size], [size]) - return ( -
-
{children}
- {features.resize && ( - { - setSize(defaultConfigs.sideBarWidth) - apply(sizeVariableMountPoint, defaultConfigs.sideBarWidth) - }} - onResizeStateChange={state => { - blockLeaveRef.current = state === 'resizing' - }} - size={dummySize} - /> - )} -
- ) -} diff --git a/src/components/SideBarResizeHandler.tsx b/src/components/SideBarResizeHandler.tsx new file mode 100644 index 0000000..1d73ec5 --- /dev/null +++ b/src/components/SideBarResizeHandler.tsx @@ -0,0 +1,85 @@ +import { useConfigs } from 'containers/ConfigsContext' +import * as React from 'react' +import { useDebounce, useWindowSize } from 'react-use' +import { getDefaultConfigs } from 'utils/config/helper' +import * as DOMHelper from 'utils/DOMHelper' +import { useAfterRedirect } from 'utils/hooks/useFastRedirect' +import { ResizeHandler } from './ResizeHandler' +import { Size, Size2D } from './Size' + +const MINIMAL_CONTENT_VIEWPORT_WIDTH = 100 +const MINIMAL_WIDTH = 240 + +function getSafeWidth(width: Size, windowWidth: number) { + if (width > windowWidth - MINIMAL_CONTENT_VIEWPORT_WIDTH) + return windowWidth - MINIMAL_CONTENT_VIEWPORT_WIDTH + if (width < MINIMAL_WIDTH) return MINIMAL_WIDTH + return width +} + +function useSidebarWidth() { + const configContext = useConfigs() + + // size data flow: + // windowSize.width => width + // width => config.sideBarWidth + // width => --gitako-width // layout effect + // resize event => width + // resize event => --gitako-width // rAF + const [width, setWidth] = React.useState(configContext.value.sideBarWidth) + const { width: windowWidth } = useWindowSize() + React.useEffect(() => { + const safeSize = getSafeWidth(width, windowWidth) + if (safeSize !== width) setWidth(safeSize) + }, [windowWidth, width]) + useDebounce(() => configContext.onChange({ sideBarWidth: width }), 100, [width]) + + React.useLayoutEffect(() => DOMHelper.setGitakoWidthCSSVariable(width), [width]) + + // Keep variable when directing from PR to repo home via meta bar + useAfterRedirect(React.useCallback(() => DOMHelper.setGitakoWidthCSSVariable(width), [width])) + + return [width, setWidth] as const +} + +export function SideBarResizeHandler({ + onResizeStateChange, +}: Pick, 'onResizeStateChange'>) { + const [width, setWidth] = useSidebarWidth() + const { width: windowWidth } = useWindowSize() + const onResize = React.useMemo(() => { + let widthToApply: Size + let pending = false + return ([width]: Size2D) => { + // do NOT merge this with the above similar effect + widthToApply = width + + if (!pending) { + pending = true + // Update size using useEffect would cause delay + requestAnimationFrame(() => { + pending = false + widthToApply = getSafeWidth(widthToApply, windowWidth) + DOMHelper.setGitakoWidthCSSVariable(widthToApply) + setWidth(widthToApply) + }) + } + } + }, [windowWidth, setWidth]) + + const onResetSize = React.useCallback( + () => setWidth(getDefaultConfigs().sideBarWidth), + [setWidth], + ) + + const dummySize: Size2D = React.useMemo(() => [width, 0], [width]) + + return ( + + ) +} diff --git a/src/components/SidebarContext.tsx b/src/components/SidebarContext.tsx new file mode 100644 index 0000000..21ed464 --- /dev/null +++ b/src/components/SidebarContext.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { noop } from 'utils/general' +import { FocusTarget } from './FocusTarget' + +// Use this to pass state across components under Sidebar +export const SidebarContext = React.createContext<{ + pendingFocusTarget: IO +}>({ + pendingFocusTarget: { onChange: noop, value: null }, +}) diff --git a/src/components/SimpleToggleField.tsx b/src/components/SimpleToggleField.tsx deleted file mode 100644 index 7e0ec27..0000000 --- a/src/components/SimpleToggleField.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { useConfigs } from 'containers/ConfigsContext' -import * as React from 'react' -import { Config } from 'utils/config/helper' -import { Field } from './settings/Field' - -export type SimpleField = { - key: Key - label: string - wikiLink?: string - tooltip?: string - description?: string - disabled?: boolean - overwrite?: { - value: (value: Config[Key]) => boolean - onChange: (checked: boolean) => Config[Key] - } -} - -type Props = { - field: SimpleField - - onChange?(): void -} - -export function SimpleToggleField({ field, onChange }: Props) { - const { overwrite } = field - const configContext = useConfigs() - const value = configContext.value[field.key] - return ( - - {field.label}{' '} - {field.wikiLink ? ( - - (?) - - ) : field.description ? ( -

- {field.description} -

- ) : ( - field.tooltip && ( - - (?) - - ) - )} - - } - className={'field-checkbox'} - checkbox - > - { - const enabled = e.currentTarget.checked - configContext.onChange({ [field.key]: overwrite ? overwrite.onChange(enabled) : enabled }) - if (onChange) onChange() - }} - checked={overwrite ? overwrite.value(value) : Boolean(value)} - /> -
- ) -} diff --git a/src/components/Size.tsx b/src/components/Size.tsx new file mode 100644 index 0000000..46a125d --- /dev/null +++ b/src/components/Size.tsx @@ -0,0 +1,2 @@ +export type Size = number +export type Size2D = [Size, Size] diff --git a/src/components/SizeObserver.tsx b/src/components/SizeObserver.tsx deleted file mode 100644 index 9739e2f..0000000 --- a/src/components/SizeObserver.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import * as React from 'react' -import * as features from 'utils/features' - -type Size = { - width: number - height: number -} - -type Props = { - type?: string | React.ComponentType - children(size: Partial): React.ReactNode -} & React.HTMLAttributes - -export function SizeObserver({ type = 'div', children, ...rest }: Props) { - const ref = React.useRef() - - const [size, setSize] = React.useState>({ - width: undefined, - height: undefined, - }) - - React.useEffect(() => { - if (ref.current) { - if (features.resize) { - const observer = new window.ResizeObserver(entries => { - const entry = entries[0] - if (!entry) return - const rect = entry.contentRect - setSize(rect) - }) - observer.observe(ref.current) - return () => observer.disconnect() - } else { - if ('getBoundingClientRect' in ref.current) { - const rect = ref.current.getBoundingClientRect() - setSize(rect) - } - } - } - }, []) - - const props: any = { ...rest, ref } // :) - - return React.createElement(type, props, children(size)) -} diff --git a/src/components/ToggleShowButton.tsx b/src/components/ToggleShowButton.tsx index c1ccf0b..5e23d19 100644 --- a/src/components/ToggleShowButton.tsx +++ b/src/components/ToggleShowButton.tsx @@ -1,10 +1,12 @@ +import { SyncIcon } from '@primer/octicons-react' import iconURL from 'assets/icons/Gitako.png' import { useConfigs } from 'containers/ConfigsContext' +import { ReloadContext } from 'containers/ReloadContext' import * as React from 'react' import { useDebounce, useWindowSize } from 'react-use' import { cx } from 'utils/cx' import { useResizeHandler } from 'utils/hooks/useResizeHandler' -import { Icon } from './Icon' +import { RoundIconButton } from './RoundIconButton' type Props = { error?: string | null @@ -20,6 +22,7 @@ function getSafeDistance(y: number, height: number) { } export function ToggleShowButton({ error, className, onClick, onHover }: Props) { + const reload = React.useContext(ReloadContext) const ref = React.useRef(null) const config = useConfigs() const [distance, setDistance] = React.useState(config.value.toggleButtonVerticalDistance) @@ -38,11 +41,11 @@ export function ToggleShowButton({ error, className, onClick, onHover }: Props) ) // reposition on window height change, but ignores distance change - React.useEffect(() => { + React.useLayoutEffect(() => { if (ref.current) { ref.current.style.top = distance + 'px' } - }, [height]) + }, [height]) // eslint-disable-line react-hooks/exhaustive-deps // And this repositions on drag const { onPointerDown } = useResizeHandler( @@ -67,13 +70,21 @@ export function ToggleShowButton({ error, className, onClick, onHover }: Props) onPointerDown={onPointerDown} title={'Gitako (draggable)'} > - {config.value.toggleButtonContent === 'octoface' ? ( - - ) : ( - - )} + - {error && {error}} + {error && ( + + {error} + + + )}
) } diff --git a/src/components/searchModes/fuzzyMode.test.ts b/src/components/searchModes/fuzzyMode.test.ts index 5a82b6c..57469af 100644 --- a/src/components/searchModes/fuzzyMode.test.ts +++ b/src/components/searchModes/fuzzyMode.test.ts @@ -1,10 +1,12 @@ +/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ import { fuzzyMode } from './fuzzyMode' type TreeNodeSource = { [key: string]: true | TreeNodeSource } -function createTreeNode(source: TreeNodeSource, name: string = '', paths: string[] = []): TreeNode { +function createTreeNode(source: TreeNodeSource, name = '', paths: string[] = []): TreeNode { const subPaths = paths.concat(name) return { name, diff --git a/src/components/searchModes/fuzzyMode.tsx b/src/components/searchModes/fuzzyMode.tsx index ad71595..746afb3 100644 --- a/src/components/searchModes/fuzzyMode.tsx +++ b/src/components/searchModes/fuzzyMode.tsx @@ -18,13 +18,10 @@ export const fuzzyMode: ModeShape = { } }, renderNodeLabelText(node, searchKey) { - const { name, path } = node + const { name } = node + const path = hasUpperCase(searchKey) ? node.path : node.path.toLowerCase() - const indexes = fuzzyMatchIndexes( - searchKey.toLowerCase(), - path.toLowerCase(), - path.length - name.length, - ) + const indexes = fuzzyMatchIndexes(searchKey, path, path.length - name.length) const chunks = name.split('/') let progress = 0 return chunks.map((chunk, index, chunks) => { @@ -57,7 +54,7 @@ function fuzzyMatch(input: string, sample: string) { } } -function fuzzyMatchIndexes(input: string, sample: string, shift: number = 0) { +function fuzzyMatchIndexes(input: string, sample: string, shift = 0) { const indexes: number[] = [] let i = 0, j = 0 diff --git a/src/components/settings/AccessTokenSettings.tsx b/src/components/settings/AccessTokenSettings.tsx index b675dbe..50f55af 100644 --- a/src/components/settings/AccessTokenSettings.tsx +++ b/src/components/settings/AccessTokenSettings.tsx @@ -1,41 +1,33 @@ -import { Button, Text, TextInput } from '@primer/components' +import { Box, Button, Spinner, Text, TextInput } from '@primer/react' import { wikiLinks } from 'components/settings/SettingsBar' import { useConfigs } from 'containers/ConfigsContext' +import { SideBarStateContext } from 'containers/SideBarState' import { platform } from 'platforms' import { Gitea } from 'platforms/Gitea' import { Gitee } from 'platforms/Gitee' import * as React from 'react' +import { IIFC } from 'react-iifc' +import { useLoadedContext } from 'utils/hooks/useLoadedContext' import { useStateIO } from 'utils/hooks/useStateIO' import { SettingsSection } from './SettingsSection' const ACCESS_TOKEN_REGEXP = /^([0-9a-fA-F]+|gh[pousr]_[A-Za-z0-9_]+)$/ -type Props = {} - -export function AccessTokenSettings(props: React.PropsWithChildren) { +export function AccessTokenSettings() { const configContext = useConfigs() - const hasAccessToken = Boolean(configContext.value.accessToken) - const useAccessToken = useStateIO('') + const { accessToken } = configContext.value + const hasAccessToken = Boolean(accessToken) + const [accessTokenInputValue, setAccessTokenInputValue] = React.useState('') const useAccessTokenHint = useStateIO('') const focusInput = useStateIO(false) + const sidebarState = useLoadedContext(SideBarStateContext).value const { value: accessTokenHint } = useAccessTokenHint - const { value: accessToken } = useAccessToken React.useEffect(() => { // clear input when access token updates - useAccessToken.onChange('') - }, [configContext.value.accessToken]) - - const onInputAccessToken = React.useCallback( - ({ currentTarget: { value } }: React.FormEvent) => { - useAccessToken.onChange(value) - useAccessTokenHint.onChange( - ACCESS_TOKEN_REGEXP.test(value) ? '' : 'Gitako does not recognize the token.', - ) - }, - [], - ) + setAccessTokenInputValue('') + }, [accessToken]) const saveToken = React.useCallback( async ( @@ -48,20 +40,13 @@ export function AccessTokenSettings(props: React.PropsWithChildren) { ), ) => { - if (accessToken) { - configContext.onChange({ accessToken }) - useAccessToken.onChange('') + if (accessTokenInputValue) { + configContext.onChange({ accessToken: accessTokenInputValue }) + setAccessTokenInputValue('') useAccessTokenHint.onChange(hint) } }, - [accessToken], - ) - - const onPressAccessToken = React.useCallback( - ({ key }: React.KeyboardEvent) => { - if (key === 'Enter') saveToken() - }, - [saveToken], + [accessTokenInputValue], // eslint-disable-line react-hooks/exhaustive-deps ) return ( @@ -73,17 +58,63 @@ export function AccessTokenSettings(props: React.PropsWithChildren) { href={wikiLinks.createAccessToken} title="A token is required to access private repositories or bypass API rate limits" target="_blank" + rel="noopener noreferrer" > (?) } > - {hasAccessToken ? ( -
- Your token has been saved. - -
+ {sidebarState === 'getting-access-token' ? ( + + + Getting access token + + ) : hasAccessToken ? ( + + {() => { + const [showConfirmButton, setShowConfirmButton] = React.useState(false) + return ( + + {showConfirmButton ? ( + + {() => { + const [allowClear, setAllowClear] = React.useState(false) + const waitForSeconds = 3 + const timePast = useTimePast(1000, waitForSeconds * 1000) + React.useEffect(() => { + const timeout = setTimeout(() => setAllowClear(true), waitForSeconds * 1000) + return () => clearTimeout(timeout) + }, []) + const countDown = waitForSeconds - timePast + + return ( + + Are you sure to clear the token? + + + + + + ) + }} + + ) : ( + + Your token has been saved. + + + )} + + ) + }} + ) : (
{platform === Gitea ? ( @@ -109,16 +140,23 @@ export function AccessTokenSettings(props: React.PropsWithChildren) { )}
focusInput.onChange(true)} onBlur={() => focusInput.onChange(false)} - onChange={onInputAccessToken} - onKeyPress={onPressAccessToken} + onChange={({ currentTarget: { value } }) => { + setAccessTokenInputValue(value) + useAccessTokenHint.onChange( + ACCESS_TOKEN_REGEXP.test(value) ? '' : 'Gitako does not recognize the token.', + ) + }} + onKeyPress={({ key }) => { + if (key === 'Enter') saveToken() + }} /> -
@@ -128,3 +166,27 @@ export function AccessTokenSettings(props: React.PropsWithChildren) { ) } + +function useTimePast(unit = 1000, max?: number) { + const [timePast, setTimePast] = React.useState(0) + React.useEffect(() => { + const checkInterval = (unit / 10) >> 0 // 10x check times for better accuracy + const start = Date.now() + let memoLastValue = 0 + const interval = setInterval(() => { + const now = Date.now() + const pastInMilliseconds = now - start + const pastInSeconds = (pastInMilliseconds / 1000) >> 0 + if (pastInSeconds !== memoLastValue) { + setTimePast(pastInSeconds) + memoLastValue = pastInSeconds + + if (max && pastInMilliseconds >= max) clearInterval(interval) + } + }, checkInterval) + + return () => clearInterval(interval) + }, [unit, max]) + + return timePast +} diff --git a/src/components/settings/Field.tsx b/src/components/settings/Field.tsx deleted file mode 100644 index 87031fe..0000000 --- a/src/components/settings/Field.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import * as React from 'react' -import { cx } from 'utils/cx' - -type Props = { - id?: string - className?: string - checkbox?: boolean - title: React.ReactNode -} - -export function Field({ - className, - title, - id, - checkbox, - children, -}: React.PropsWithChildren) { - return ( -
- {checkbox ? ( - <> - {children} - - - ) : ( - <> - -
{children}
- - )} -
- ) -} diff --git a/src/components/settings/FileTreeSettings.tsx b/src/components/settings/FileTreeSettings.tsx index 25c823e..bf5de99 100644 --- a/src/components/settings/FileTreeSettings.tsx +++ b/src/components/settings/FileTreeSettings.tsx @@ -1,11 +1,10 @@ import { wikiLinks } from 'components/settings/SettingsBar' -import { SimpleToggleField } from 'components/SimpleToggleField' -import { useConfigs } from 'containers/ConfigsContext' +import { SimpleConfigFieldCheckbox } from 'components/settings/SimpleConfigField/Checkbox' import * as React from 'react' import { Config } from 'utils/config/helper' -import { Option, SelectInput } from '../SelectInput' -import { Field } from './Field' +import { Option } from '../Inputs/SelectInput' import { SettingsSection } from './SettingsSection' +import { SimpleConfigFieldSelect } from './SimpleConfigField/SelectInput' const iconOptions: Option[] = [ { @@ -38,37 +37,24 @@ const recursiveToggleFolderOptions: Option[] = }, ] -type Props = {} - -export function FileTreeSettings(props: React.PropsWithChildren) { - const configContext = useConfigs() +export function FileTreeSettings() { return ( - - { - configContext.onChange({ - recursiveToggleFolder: v, - }) - }} - value={configContext.value.recursiveToggleFolder} - /> - - - - id="file-tree-icons" - options={iconOptions} - onChange={v => { - configContext.onChange({ - icons: v, - }) - }} - value={configContext.value.icons} - /> - - + + ) { tooltip: 'Merge folders and their only child folder to make UI more compact.', }} /> - - - - & { + label: React.ReactNode +} + +export function KeyboardShortcutSetting({ label, value, onChange }: Props) { + const $focused = useStateIO(false) + const $shortcut = useStateIO(value) + useUpdateEffect(() => $shortcut.onChange(value), [value]) + + const id = React.useMemo(() => Math.random() + '', []) + + return ( + + {label} + + $focused.onChange(true)} + onBlur={() => $focused.onChange(false)} + placeholder={$focused.value ? 'Press key combination' : 'Click here to set'} + value={friendlyFormatShortcut($shortcut.value)} + onChange={noop} + onKeyDown={e => { + switch (e.key) { + case 'Esc': + case 'Tab': + return + case 'Delete': + case 'Backspace': + // Clear shortcut with backspace + $shortcut.onChange(undefined) + return + default: + e.preventDefault() + e.stopPropagation() + } + $shortcut.onChange(keyHelper.parseEvent(e)) + }} + /> + + + + ) +} diff --git a/src/components/settings/SettingsBar.tsx b/src/components/settings/SettingsBar.tsx index 4e60491..50f3356 100644 --- a/src/components/settings/SettingsBar.tsx +++ b/src/components/settings/SettingsBar.tsx @@ -1,15 +1,19 @@ -import { Link } from '@primer/components' -import { Icon } from 'components/Icon' -import { VERSION } from 'env' +import { ChevronDownIcon } from '@primer/octicons-react' +import { Box } from '@primer/react' +import { Footer } from 'components/Footer' +import { RoundIconButton } from 'components/RoundIconButton' +import { useConfigs } from 'containers/ConfigsContext' import { platform } from 'platforms' import { GitHub } from 'platforms/GitHub' import * as React from 'react' +import { useUpdateEffect } from 'react-use' import { useStateIO } from 'utils/hooks/useStateIO' -import { SimpleField, SimpleToggleField } from '../SimpleToggleField' import { AccessTokenSettings } from './AccessTokenSettings' import { FileTreeSettings } from './FileTreeSettings' import { SettingsSection } from './SettingsSection' import { SidebarSettings } from './SidebarSettings' +import { SimpleConfigField } from './SimpleConfigField' +import { SimpleConfigFieldCheckbox } from './SimpleConfigField/Checkbox' const WIKI_HOME_LINK = 'https://github.com/EnixCoda/Gitako/wiki' export const wikiLinks = { @@ -19,45 +23,67 @@ export const wikiLinks = { copyFileButton: `${WIKI_HOME_LINK}/Copy-file-and-snippet`, copySnippet: `${WIKI_HOME_LINK}/Copy-file-and-snippet`, createAccessToken: `${WIKI_HOME_LINK}/Access-token-for-Gitako`, + pjaxMode: `${WIKI_HOME_LINK}/Pjax-Mode`, } -type Props = { - activated: boolean - toggleShowSettings: () => void -} +const moreFields: SimpleConfigField< + 'copyFileButton' | 'copySnippetButton' | 'codeFolding' | 'pjaxMode' +>[] = + platform === GitHub + ? [ + { + key: 'codeFolding', + label: 'Fold source code button', + wikiLink: wikiLinks.codeFolding, + tooltip: `Read more in Gitako's Wiki`, + }, + { + key: 'pjaxMode', + label: 'Native PJAX mode', + wikiLink: wikiLinks.pjaxMode, + tooltip: 'Please keep it enabled unless Gitako crashes after redirecting', + overwrite: { + value: pjaxMode => pjaxMode === 'native', + onChange: checked => (checked ? 'native' : 'pjax-api'), + }, + }, + { + key: 'copyFileButton', + label: 'Copy file button', + wikiLink: wikiLinks.copyFileButton, + tooltip: `Read more in Gitako's Wiki`, + }, + { + key: 'copySnippetButton', + label: 'Copy snippet button', + wikiLink: wikiLinks.copySnippet, + tooltip: `Read more in Gitako's Wiki`, + }, + ] + : [] -function SettingsBarContent() { +export function SettingsBarContent({ toggleShow }: { toggleShow: () => void }) { const useReloadHint = useStateIO('') const { value: reloadHint } = useReloadHint - const moreFields: SimpleField<'copyFileButton' | 'copySnippetButton'|'codeFolding'>[] = - platform === GitHub - ? [ - { - key: 'codeFolding', - label: 'Fold source code button', - wikiLink: wikiLinks.codeFolding, - tooltip: `Read more in Gitako's Wiki`, - }, - { - key: 'copyFileButton', - label: 'Copy file button', - wikiLink: wikiLinks.copyFileButton, - tooltip: `Read more in Gitako's Wiki`, - }, - { - key: 'copySnippetButton', - label: 'Copy snippet button', - wikiLink: wikiLinks.copySnippet, - tooltip: `Read more in Gitako's Wiki`, - }, - ] - : [] + useUpdateEffect(() => { + window.location.reload() + }, [useConfigs().value.pjaxMode]) return ( - <> -

Settings

-
+
+
+

Settings

+ +
+
@@ -66,7 +92,7 @@ function SettingsBarContent() { {moreFields.map(field => ( - + ))} @@ -74,44 +100,26 @@ function SettingsBarContent() { )} - - Report bug - - {' / '} - - Discuss feature - + -
- - ) -} - -export function SettingsBar(props: Props) { - const { toggleShowSettings, activated } = props - return ( -
- {activated && } -
- - {VERSION} - -
- -
-
+ +
) } diff --git a/src/components/settings/SettingsSection.tsx b/src/components/settings/SettingsSection.tsx index 209bd16..e17bcc0 100644 --- a/src/components/settings/SettingsSection.tsx +++ b/src/components/settings/SettingsSection.tsx @@ -1,13 +1,15 @@ +import { Box } from '@primer/react' import * as React from 'react' + type Props = { title?: React.ReactNode } export function SettingsSection({ title, children }: React.PropsWithChildren) { return ( -
+ {title &&

{title}

} {children} -
+
) } diff --git a/src/components/settings/SidebarSettings.tsx b/src/components/settings/SidebarSettings.tsx index 1370a66..ff8b0f2 100644 --- a/src/components/settings/SidebarSettings.tsx +++ b/src/components/settings/SidebarSettings.tsx @@ -1,108 +1,33 @@ -import { Button, TextInput } from '@primer/components' -import { Option, SelectInput } from 'components/SelectInput' -import { SimpleToggleField } from 'components/SimpleToggleField' +import { SimpleConfigFieldCheckbox } from 'components/settings/SimpleConfigField/Checkbox' import { useConfigs } from 'containers/ConfigsContext' import * as React from 'react' -import { Config } from 'utils/config/helper' -import { friendlyFormatShortcut } from 'utils/general' -import { useStateIO } from 'utils/hooks/useStateIO' -import * as keyHelper from 'utils/keyHelper' -import { Field } from './Field' +import { subIO } from 'utils/general' +import { KeyboardShortcutSetting } from './KeyboardShortcutSetting' import { SettingsSection } from './SettingsSection' -type Props = {} - -const toggleButtonContentOptions: Option[] = [ - { - key: 'logo', - value: 'logo', - label: `Gitako Logo`, - }, - { - key: 'octoface', - value: 'octoface', - label: `The Classic Octoface`, - }, -] - -export function SidebarSettings(props: React.PropsWithChildren) { - const configContext = useConfigs() - const useToggleShowSideBarShortcut = useStateIO(configContext.value.shortcut) - const { value: toggleShowSideBarShortcut } = useToggleShowSideBarShortcut - const focused = useStateIO(false) - - React.useEffect(() => { - useToggleShowSideBarShortcut.onChange(configContext.value.shortcut) - }, [configContext.value.shortcut]) +export function SidebarSettings() { + const { sidebarToggleMode } = useConfigs().value return ( - -
- focused.onChange(true)} - onBlur={() => focused.onChange(false)} - placeholder={focused.value ? 'Press key combination' : 'Click here to set'} - value={friendlyFormatShortcut(toggleShowSideBarShortcut)} - onKeyDown={React.useCallback((e: React.KeyboardEvent) => { - e.preventDefault() - e.stopPropagation() - // Clear shortcut with backspace - const shortcut = e.key === 'Backspace' ? '' : keyHelper.parseEvent(e) - useToggleShowSideBarShortcut.onChange(shortcut) - }, [])} - readOnly - /> - {configContext.value.shortcut === toggleShowSideBarShortcut ? ( - - ) : ( - - )} -
-
- - { - configContext.onChange({ - toggleButtonContent: v, - }) - }} - value={configContext.value.toggleButtonContent} - /> - - + + - configContext.value.sidebarToggleMode === 'float' ? false : enabled === null, + value: enabled => (sidebarToggleMode === 'float' ? false : enabled === null), onChange: checked => (checked ? null : true), }, }} diff --git a/src/components/settings/SimpleConfigField/Checkbox.tsx b/src/components/settings/SimpleConfigField/Checkbox.tsx new file mode 100644 index 0000000..dc5cfb2 --- /dev/null +++ b/src/components/settings/SimpleConfigField/Checkbox.tsx @@ -0,0 +1,20 @@ +import * as React from 'react' +import { ConfigKeys } from 'utils/config/helper' +import { SimpleConfigFieldProps, useSimpleConfigFieldIO } from '.' +import { Checkbox } from '../../Inputs/Checkbox' +import { FieldLabel } from './FieldLabel' + +export function SimpleConfigFieldCheckbox({ + field, +}: SimpleConfigFieldProps) { + const { value, onChange } = useSimpleConfigFieldIO(field) as IO + + return ( + } + disabled={field.disabled} + value={value} + onChange={onChange} + /> + ) +} diff --git a/src/components/settings/SimpleConfigField/FieldLabel.tsx b/src/components/settings/SimpleConfigField/FieldLabel.tsx new file mode 100644 index 0000000..7953830 --- /dev/null +++ b/src/components/settings/SimpleConfigField/FieldLabel.tsx @@ -0,0 +1,44 @@ +import { InfoIcon, LinkExternalIcon } from '@primer/octicons-react' +import { Box } from '@primer/react' +import * as React from 'react' +import { ConfigKeys } from 'utils/config/helper' +import { SimpleConfigField } from '.' + +export function FieldLabel({ + label, + wikiLink, + tooltip, +}: SimpleConfigField) { + return ( + <> + {label} + {(wikiLink || tooltip) && ' '} + {wikiLink ? ( + + + + ) : ( + tooltip && ( + + + + ) + )} + + ) +} diff --git a/src/components/settings/SimpleConfigField/SelectInput.tsx b/src/components/settings/SimpleConfigField/SelectInput.tsx new file mode 100644 index 0000000..1d9563f --- /dev/null +++ b/src/components/settings/SimpleConfigField/SelectInput.tsx @@ -0,0 +1,24 @@ +import { SelectInput, SelectInputProps } from 'components/Inputs/SelectInput' +import * as React from 'react' +import { Config, ConfigKeys } from 'utils/config/helper' +import { SimpleConfigFieldProps, useSimpleConfigFieldIO } from '.' +import { FieldLabel } from './FieldLabel' + +export function SimpleConfigFieldSelect({ + field, + options, +}: SimpleConfigFieldProps & { + options: SelectInputProps['options'] +}) { + const { value, onChange } = useSimpleConfigFieldIO(field) + + return ( + } + disabled={field.disabled} + value={value} + onChange={onChange} + options={options} + /> + ) +} diff --git a/src/components/settings/SimpleConfigField/index.tsx b/src/components/settings/SimpleConfigField/index.tsx new file mode 100644 index 0000000..bf607b8 --- /dev/null +++ b/src/components/settings/SimpleConfigField/index.tsx @@ -0,0 +1,37 @@ +import { useConfigs } from 'containers/ConfigsContext' +import React from 'react' +import { Config, ConfigKeys } from 'utils/config/helper' + +export type SimpleConfigField = { + label: string + wikiLink?: string + tooltip?: string + key: Key + disabled?: boolean + overwrite?: { + value: (value: Config[Key]) => Config[Key] + onChange: (newValue: Config[Key]) => Config[Key] + } +} + +export type SimpleConfigFieldProps = { + field: SimpleConfigField +} + +export function useSimpleConfigFieldIO( + field: SimpleConfigField, +): IO { + const { overwrite } = field + const configContext = useConfigs() + const value = configContext.value[field.key] + + return { + value: React.useMemo(() => (overwrite ? overwrite.value(value) : value), [overwrite, value]), + onChange: React.useCallback( + (newValue: Config[Key]) => { + configContext.onChange({ [field.key]: overwrite ? overwrite.onChange(newValue) : newValue }) + }, + [field.key, overwrite, configContext], + ), + } +} diff --git a/src/containers/ConfigsContext.tsx b/src/containers/ConfigsContext.tsx index 4710a83..8d3a48b 100644 --- a/src/containers/ConfigsContext.tsx +++ b/src/containers/ConfigsContext.tsx @@ -1,14 +1,13 @@ +import { PropsWithChildren } from 'common' import * as React from 'react' import { Config, configHelper } from 'utils/config/helper' -type Props = {} - type ContextShape = IO> export type ConfigsContextShape = ContextShape export const ConfigsContext = React.createContext(null) -export function ConfigsContextWrapper(props: React.PropsWithChildren) { +export function ConfigsContextWrapper(props: PropsWithChildren) { const [configs, setConfigs] = React.useState(null) React.useEffect(() => { configHelper.get().then(setConfigs) @@ -29,9 +28,9 @@ export function ConfigsContextWrapper(props: React.PropsWithChildren) { ) } -export const useConfigs = useNonNullContext(ConfigsContext) +export const useConfigs = createUseNonNullContext(ConfigsContext) -function useNonNullContext(theContext: React.Context): () => T { +function createUseNonNullContext(theContext: React.Context): () => T { return () => { const context = React.useContext(theContext) if (context === null) throw new Error(`Empty context`) diff --git a/src/containers/ErrorBoundary.tsx b/src/containers/ErrorBoundary.tsx index 0f8c74e..8e3c202 100644 --- a/src/containers/ErrorBoundary.tsx +++ b/src/containers/ErrorBoundary.tsx @@ -1,7 +1,8 @@ import { raiseError } from 'analytics' +import { PropsWithChildren } from 'common' import * as React from 'react' -export class ErrorBoundary extends React.PureComponent { +export class ErrorBoundary extends React.PureComponent { componentDidCatch(error: Error, errorInfo: React.ErrorInfo) { raiseError(error, errorInfo) } diff --git a/src/containers/ErrorContext.tsx b/src/containers/ErrorContext.tsx index 53d9455..557e1a0 100644 --- a/src/containers/ErrorContext.tsx +++ b/src/containers/ErrorContext.tsx @@ -1,3 +1,5 @@ +import { PropsWithChildren } from 'common' +import { useInspector } from 'containers/StateInspector' import * as React from 'react' import { useStateIO } from 'utils/hooks/useStateIO' @@ -5,8 +7,9 @@ export type SideBarErrorContextShape = IO export const SideBarErrorContext = React.createContext(null) -export function StateBarErrorContextWrapper({ children }: React.PropsWithChildren<{}>) { +export function StateBarErrorContextWrapper({ children }: PropsWithChildren) { const $error = useStateIO(null) + useInspector('SideBarErrorContext', $error.value) return {children} } diff --git a/src/containers/OAuthWrapper.tsx b/src/containers/OAuthWrapper.tsx index c338c64..ff06836 100644 --- a/src/containers/OAuthWrapper.tsx +++ b/src/containers/OAuthWrapper.tsx @@ -1,15 +1,17 @@ +import { PropsWithChildren } from 'common' import { useConfigs } from 'containers/ConfigsContext' import { platform } from 'platforms' import * as React from 'react' import { parseURLSearch, run } from 'utils/general' import { useLoadedContext } from 'utils/hooks/useLoadedContext' import { useStateIO } from 'utils/hooks/useStateIO' +import { sanitizedLocation } from 'utils/URLHelper' import { SideBarStateContext } from './SideBarState' /** * Setup access token before sending other requests */ -export function OAuthWrapper({ children }: React.PropsWithChildren<{}>) { +export function OAuthWrapper({ children }: PropsWithChildren) { const running = useGetAccessToken() const $state = useLoadedContext(SideBarStateContext) @@ -18,7 +20,7 @@ export function OAuthWrapper({ children }: React.PropsWithChildren<{}>) { if (needGetAccessTokenRef.current) { $state.onChange(running ? 'getting-access-token' : 'after-getting-access-token') } - }, [running]) + }, [running]) // eslint-disable-line react-hooks/exhaustive-deps // block children rendering on the first render if setting token if (running && $state.value !== 'getting-access-token') return null @@ -38,7 +40,7 @@ function useGetAccessToken() { } $block.onChange(false) }) - }, []) + }, []) // eslint-disable-line react-hooks/exhaustive-deps return $block.value } @@ -55,7 +57,7 @@ async function getAccessTokenWithCode(code: string) { window.history.replaceState( {}, 'removed search param', - window.location.pathname.replace(window.location.search, '?' + search.toString()), + sanitizedLocation.pathname.replace(window.location.search, '?' + search.toString()), ) return accessToken } diff --git a/src/containers/ReloadContext.tsx b/src/containers/ReloadContext.tsx new file mode 100644 index 0000000..b536ebe --- /dev/null +++ b/src/containers/ReloadContext.tsx @@ -0,0 +1,18 @@ +import { PropsWithChildren } from 'common' +import * as React from 'react' +import { noop } from 'utils/general' + +export type ReloadContextShape = () => void + +export const ReloadContext = React.createContext(noop) + +export function ReloadContextWrapper({ children }: PropsWithChildren) { + const [key, setKey] = React.useState(0) + const reload = React.useCallback(() => setKey(key => key + 1), []) + + return ( + + {children} + + ) +} diff --git a/src/containers/RepoContext.tsx b/src/containers/RepoContext.tsx index 3e7004a..9298fb7 100644 --- a/src/containers/RepoContext.tsx +++ b/src/containers/RepoContext.tsx @@ -1,19 +1,34 @@ +import { PropsWithChildren } from 'common' import { useConfigs } from 'containers/ConfigsContext' import { platform } from 'platforms' import * as React from 'react' import { useEffectOnSerializableUpdates } from 'utils/hooks/useEffectOnSerializableUpdates' +import { useAfterRedirect } from 'utils/hooks/useFastRedirect' import { useLoadedContext } from 'utils/hooks/useLoadedContext' -import { useOnPJAXDone } from 'utils/hooks/usePJAX' import { useStateIO } from 'utils/hooks/useStateIO' import { useCatchNetworkError } from '../utils/hooks/useCatchNetworkError' import { SideBarStateContext } from './SideBarState' +import { useInspector } from './StateInspector' export const RepoContext = React.createContext(null) -export function RepoContextWrapper({ children }: React.PropsWithChildren<{}>) { +export function RepoContextWrapper({ children }: PropsWithChildren) { const partialMetaData = usePartialMetaData() const defaultBranch = useDefaultBranch(partialMetaData) const metaData = useMetaData(partialMetaData, defaultBranch) + useInspector( + 'RepoContext', + React.useMemo( + () => ({ + partialMetaData, + defaultBranch, + metaData, + }), + [partialMetaData, defaultBranch, metaData], + ), + ) + const state = useLoadedContext(SideBarStateContext).value + if (state === 'disabled') return null return {children} } @@ -27,9 +42,9 @@ function resolvePartialMetaData() { repoName, type: type === 'pull' ? type : undefined, } - } else { - return partialMetaData } + + return null } function usePartialMetaData(): PartialMetaData | null { @@ -38,11 +53,14 @@ function usePartialMetaData(): PartialMetaData | null { // sync along URL and DOM const $partialMetaData = useStateIO(isGettingAccessToken ? null : resolvePartialMetaData) const $committedPartialMetaData = useStateIO($partialMetaData.value) - const setPartialMetaData = () => $partialMetaData.onChange(resolvePartialMetaData()) + const setPartialMetaData = React.useCallback( + () => $partialMetaData.onChange(resolvePartialMetaData()), + [], // eslint-disable-line react-hooks/exhaustive-deps + ) React.useEffect(() => { if (!isGettingAccessToken) setPartialMetaData() - }, [isGettingAccessToken]) - useOnPJAXDone(setPartialMetaData) + }, [isGettingAccessToken, setPartialMetaData]) + useAfterRedirect(setPartialMetaData) useEffectOnSerializableUpdates( $partialMetaData.value, JSON.stringify, @@ -52,14 +70,16 @@ function usePartialMetaData(): PartialMetaData | null { if (!$partialMetaData.value && !isGettingAccessToken) { $state.onChange('disabled') } - }, [$partialMetaData.value]) + }, [$partialMetaData.value]) // eslint-disable-line react-hooks/exhaustive-deps return $committedPartialMetaData.value } function useBranchName(): MetaData['branchName'] | null { // sync along URL and DOM const $branchName = useStateIO(() => platform.resolvePartialMetaData()?.branchName || null) - useOnPJAXDone(() => $branchName.onChange(platform.resolvePartialMetaData()?.branchName || null)) + useAfterRedirect(() => + $branchName.onChange(platform.resolvePartialMetaData()?.branchName || null), + ) return $branchName.value } @@ -72,11 +92,13 @@ function useDefaultBranch(partialMetaData: PartialMetaData | null) { catchNetworkError(async () => { if (!partialMetaData) return $state.onChange('meta-loading') + const { userName, repoName } = partialMetaData + if (!userName || !repoName) return - const defaultBranch = await platform.getDefaultBranchName(partialMetaData, accessToken) + const defaultBranch = await platform.getDefaultBranchName({ userName, repoName }, accessToken) $defaultBranch.onChange(defaultBranch) }) - }, [partialMetaData, accessToken]) + }, [partialMetaData, accessToken]) // eslint-disable-line react-hooks/exhaustive-deps return $defaultBranch.value } @@ -91,6 +113,8 @@ function useMetaData( React.useEffect(() => { if (partialMetaData && defaultBranchName && theBranch) { const { userName, repoName } = partialMetaData + if (!userName || !repoName) return + const safeMetaData: MetaData = { userName, repoName, @@ -102,6 +126,6 @@ function useMetaData( } else { $metaData.onChange(null) } - }, [partialMetaData, defaultBranchName, theBranch]) + }, [partialMetaData, defaultBranchName, theBranch]) // eslint-disable-line react-hooks/exhaustive-deps return $metaData.value } diff --git a/src/containers/SideBarState.tsx b/src/containers/SideBarState.tsx index 815a122..d70816e 100644 --- a/src/containers/SideBarState.tsx +++ b/src/containers/SideBarState.tsx @@ -1,5 +1,7 @@ +import { PropsWithChildren } from 'common' import * as React from 'react' import { useStateIO } from 'utils/hooks/useStateIO' +import { useInspector } from './StateInspector' export type SideBarState = | 'disabled' @@ -17,8 +19,9 @@ export type SideBarStateContextShape = IO export const SideBarStateContext = React.createContext(null) -export function StateBarStateContextWrapper({ children }: React.PropsWithChildren<{}>) { +export function StateBarStateContextWrapper({ children }: PropsWithChildren) { const $state = useStateIO('disabled') + useInspector('SideBarStateContext', $state.value) return ( diff --git a/src/containers/StateInspector.tsx b/src/containers/StateInspector.tsx new file mode 100644 index 0000000..876c4ff --- /dev/null +++ b/src/containers/StateInspector.tsx @@ -0,0 +1,65 @@ +import { PropsWithChildren, ReactIO } from 'common' +import { IN_PRODUCTION_MODE } from 'env' +import * as React from 'react' +import { useStateIO } from 'utils/hooks/useStateIO' + +export type InspectorContextShape = ReactIO + +export const InspectorContext = React.createContext(null) + +export const InspectorContextWrapper = IN_PRODUCTION_MODE + ? React.Fragment + : function InspectorContextWrapper({ children }: PropsWithChildren) { + const $ = useStateIO({}) + const [show, setShow] = React.useState(true) + + return ( + + {show ? ( +
+
+                {JSON.stringify($.value, null, 2)}
+              
+
+ +
+
+ ) : ( +
+ +
+ )} + {children} +
+ ) + } + +export function useInspector(key: string, value: JSONValue) { + const $ = React.useContext(InspectorContext) + React.useEffect(() => { + $?.onChange(prev => ({ ...prev, [key]: value })) + }, [key, value]) // eslint-disable-line react-hooks/exhaustive-deps +} diff --git a/src/containers/Theme.tsx b/src/containers/Theme.tsx index d9c082d..b68df0e 100644 --- a/src/containers/Theme.tsx +++ b/src/containers/Theme.tsx @@ -1,268 +1,59 @@ -import { theme } from '@primer/components' +import primitives from '@primer/primitives' +import { BaseStyles, ThemeProvider } from '@primer/react' +import theme from '@primer/react/lib-esm/theme' +import { PropsWithChildren } from 'common' import * as React from 'react' -import { ThemeProvider } from 'styled-components' -const { lighten, rgba, desaturate } = require('polished') -// Refactored from https://github.com/primer/components/blob/main/src/theme-preval.js -export function generateDarkTheme() { - const primitives = { - black: '#f0f6fc', - white: '#010409', - gray: [ - '#0d1117', - '#161b22', - '#21262d', - '#30363d', - '#484f58', - '#6e7681', - '#8b949e', - '#b1bac4', - '#c9d1d9', - '#f0f6fc', - ], - blue: [ - '#051d4d', - '#0c2d6b', - '#0d419d', - '#1158c7', - '#1f6feb', - '#388bfd', - '#58a6ff', - '#79c0ff', - '#a5d6ff', - '#cae8ff', - ], - green: [ - '#04260f', - '#033a16', - '#0f5323', - '#196c2e', - '#238636', - '#2ea043', - '#3fb950', - '#56d364', - '#7ee787', - '#aff5b4', - ], - yellow: [ - '#341a00', - '#4b2900', - '#693e00', - '#845306', - '#9e6a03', - '#bb8009', - '#d29922', - '#e3b341', - '#f2cc60', - '#f8e3a1', - ], - orange: [ - '#3d1300', - '#5a1e02', - '#762d0a', - '#9b4215', - '#bd561d', - '#db6d28', - '#f0883e', - '#ffa657', - '#ffc680', - '#ffdfb6', - ], - red: [ - '#490202', - '#67060c', - '#8e1519', - '#b62324', - '#da3633', - '#f85149', - '#ff7b72', - '#ffa198', - '#ffc1ba', - '#ffdcd7', - ], - purple: [ - '#271052', - '#3c1e70', - '#553098', - '#6e40c9', - '#8957e5', - '#a371f7', - '#bc8cff', - '#d2a8ff', - '#e2c5ff', - '#eddeff', - ], - pink: [ - '#42062a', - '#5e103e', - '#7d2457', - '#9e3670', - '#bf4b8a', - '#db61a2', - '#f778ba', - '#ff9bce', - '#ffbedd', - '#ffdaec', - ], - } - - const { black, white, pink, gray, blue, green, orange, purple, red, yellow } = primitives - - // General - // any :( - const colors: any = { - black, - white, - gray, - blue, - green, - orange, - purple, - red, - yellow, - pink, - } - - colors.bodytext = gray[9] - - colors.blackfade15 = rgba(black, 0.15) - colors.blackfade30 = rgba(black, 0.3) - colors.blackfade50 = rgba(black, 0.5) - colors.blackfade70 = rgba(black, 0.7) - colors.blackfade85 = rgba(black, 0.85) - colors.whitefade15 = rgba(white, 0.15) - colors.whitefade30 = rgba(white, 0.3) - colors.whitefade50 = rgba(white, 0.5) - colors.whitefade70 = rgba(white, 0.7) - colors.whitefade85 = rgba(white, 0.85) - - colors.state = { - error: red[5], - failure: red[5], - pending: yellow[7], - queued: yellow[7], - success: green[5], - unknown: gray[4], - } - - colors.border = { - blackFade: colors.blackfade15, - blue: blue[5], - blueLight: blue[2], - grayLight: lighten(0.03, gray[2]), - gray: gray[2], - grayDark: gray[3], - grayDarker: gray[7], - green: green[4], - greenLight: desaturate(0.4, green[3]), - purple: purple[5], - red: red[5], - redLight: desaturate(0.6, red[3]), - white, - whiteFade: colors.whitefade15, - yellow: desaturate(0.6, yellow[3]), - } - - colors.text = { - white, - gray: gray[6], - grayLight: gray[5], - grayDark: gray[8], - red: red[6], - } - colors.bg = { - gray: gray[1], - grayLight: gray[3], - grayDark: gray[9], - disabled: gray[2], - } - colors.accent = orange[5] - colors.labels = { - gray: gray[2], - grayText: gray[9], - grayDark: gray[5], - grayDarkText: gray[9], - blue: blue[5], - blueText: blue[5], - orange: orange[5], - orangeText: orange[6], - green: green[5], - greenText: green[6], - red: red[6], - redText: red[6], - yellow: yellow[6], - yellowText: yellow[9], - pink: pink[4], - pinkText: pink[6], - purple: purple[4], - } - - // Components - - const buttons = { - default: { - color: { - default: colors.text.grayDark, - disabled: gray[4], - }, - border: { - default: rgba(black, 0.12), - active: colors.border.grayDark, - disabled: colors.border.grayLight, - }, - bg: { - default: colors.bg.grayLight, - hover: colors.gray[3], - active: colors.bg.gray, - disabled: colors.bg.grayLight, - }, - shadow: { - default: `0 0 transparent, 0 0 transparent`, - hover: `0 0 transparent, 0 0 transparent`, - active: `0 0 transparent 0 0 transparent`, - focus: `0 0 transparent 0 0 transparent`, - }, - }, - } - - const theme = { - colors, - buttons, - } - - return theme +// Temporary color fix for out-of-date embedded @primer/primitives in @primer/react +// The `*_tritanopia` themes are actually not bundled within @primer/react@35.2.2 +// TODO: Upgrade @primer/react to support these themes +const fixedTheme = { + ...theme, + colorSchemes: { + ...theme.colorSchemes, + light_tritanopia: theme.colorSchemes.light, + dark_tritanopia: theme.colorSchemes.dark, + }, } -const getIsPreferDarkTheme = () => { - const colorMode = document.documentElement.dataset.colorMode - return ( - colorMode === 'dark' || - (colorMode === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) - ) +const validColorSchemes = Object.keys(fixedTheme.colorSchemes) as EnumString< + keyof typeof primitives['colors'] +>[] + +const colorModeMap: Record = { + dark: 'night', + light: 'day', } -// No need to watch the property as it does not change in repo pages -function usePreferDarkTheme() { - const [is, setIs] = React.useState(getIsPreferDarkTheme) + +const getPreferenceFromDOM = () => { + // { - const update = () => { - console.log(`updating color scheme`) - setIs(getIsPreferDarkTheme()) - } const match = window.matchMedia('(prefers-color-scheme: dark)') + const update = () => setPrefer(getPreferenceFromDOM) match.addEventListener('change', update) return () => match.removeEventListener('change', update) }, []) - return is + return prefer } -function useThemeConfig() { - const preferDarkTheme = usePreferDarkTheme() - return React.useMemo(() => { - return preferDarkTheme ? generateDarkTheme() : theme - }, [preferDarkTheme]) -} - -export function Theme({ children }: React.PropsWithChildren<{}>) { - const theme = useThemeConfig() - return {children} +export function Theme({ children }: PropsWithChildren) { + const themePreference = useThemePreference() + return ( + + {children} + + ) } diff --git a/src/content.tsx b/src/content.tsx index 2d48ef5..a2173ed 100644 --- a/src/content.tsx +++ b/src/content.tsx @@ -1,26 +1,18 @@ -import { withErrorLog } from 'analytics' import { Gitako } from 'components/Gitako' -import { addMiddleware } from 'driver/connect' -import { platform } from 'platforms' import * as React from 'react' -import * as ReactDOM from 'react-dom' +import { createRoot } from 'react-dom/client' +import { insertSideBarMountPoint } from 'utils/DOMHelper' import './content.scss' -if (platform.resolvePartialMetaData()) { - addMiddleware(withErrorLog) - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', init) - } else { - init() - } +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init) +} else { + init() } async function init() { - await injectStyles(browser.extension.getURL('content.css')) - const SideBarElement = document.createElement('div') - document.body.appendChild(SideBarElement) - ReactDOM.render(, SideBarElement) + await injectStyles(browser.runtime.getURL('content.css')) + createRoot(insertSideBarMountPoint()).render() } // injects a copy of stylesheets so that other extensions(e.g. dark reader) could read diff --git a/src/driver/connect.ts b/src/driver/connect.ts deleted file mode 100644 index f710bcc..0000000 --- a/src/driver/connect.ts +++ /dev/null @@ -1,119 +0,0 @@ -import * as React from 'react' - -export type Method = (...args: Args) => void | Promise -export type Middleware = ( - method: M, - args: Parameters, -) => [MM | M, Parameters] - -const middlewares: Middleware[] = [] - -export function addMiddleware(middleware: Middleware) { - if (typeof middleware !== 'function') return null - const m = middleware.bind(null) - middlewares.push(m) - return function removeMiddleware() { - const index = middlewares.indexOf(m) - if (index === -1) return - middlewares.splice(index, 1) - } -} - -const applyMiddlewares: Middleware = function applyMiddlewares(method, args) { - for (const middleware of middlewares) { - ;[method = method, args = args] = middleware(method, args) - } - return [method, args] -} - -function run([method, args]: [M, Parameters]) { - method.apply(null, args) -} - -export type DispatchState = React.Component['setState'] -export type GetState = () => { state: State; props: Props } -export type TriggerOtherMethod = ( - methodCreator: MethodCreator, - ...args: Parameters>> -) => void - -export type Dispatch = { - set: DispatchState - get: GetState - call: TriggerOtherMethod -} - -export type MethodCreator = ( - dispatch: Dispatch, -) => Method - -export type Sources = { - [key: string]: MethodCreator -} -type WrappedMethods = { - [key: string]: Method -} - -function link(instance: React.Component, sources: Sources): WrappedMethods { - const wrappedMethods: WrappedMethods = { - /* [keyof sources] -> wrappedMethods.method */ - } - const map = new Map< - MethodCreator, - Method - >(/* sources.creator -> wrappedMethods.method */) - - const dispatchCall: TriggerOtherMethod = (createMethod, ...otherArgs) => { - const isFromSource = sourcesValues.includes(createMethod) - if (isFromSource) { - const method = map.get(createMethod) - if (!method) throw new Error('Method not found') - const runnable = applyMiddlewares(method, otherArgs) - run(runnable) - } - } - const dispatchState: DispatchState = (updater, callback) => { - instance.setState(updater, callback) - } - const prepareState: GetState = () => ({ state: instance.state, props: instance.props }) - const dispatch: Dispatch = { - call: dispatchCall, - get: prepareState, - set: dispatchState, - } - - Object.entries(sources).forEach(([key, createMethod]) => { - const method = createMethod(dispatch) - wrappedMethods[key] = method - map.set(createMethod, method) - }) - - const sourcesValues = Object.values(sources) - - return wrappedMethods -} - -export function connect(mapping: Sources) { - return function linkComponent>( - Component: ComponentType, - ) { - return class ConnectedComponent extends React.PureComponent { - static displayName = `Connected(${Component.displayName || Component.name})` - static defaultProps = Component.defaultProps - - state: ExtraP = {} as ExtraP - connectedMethods: WrappedMethods = link(this, mapping) - - render() { - const props = Object.assign({}, this.props, this.connectedMethods, this.state) - return React.createElement(Component, props) - } - } - } -} - -export type GetCreatedMethod = MC extends MethodCreator - ? Args extends any[] - ? (...args: Args) => void - : never - : never diff --git a/src/driver/core/FileExplorer.ts b/src/driver/core/FileExplorer.ts deleted file mode 100644 index 5498a97..0000000 --- a/src/driver/core/FileExplorer.ts +++ /dev/null @@ -1,355 +0,0 @@ -import { SideBarStateContextShape } from 'containers/SideBarState' -import { GetCreatedMethod, MethodCreator } from 'driver/connect' -import { platform } from 'platforms' -import { Config } from 'utils/config/helper' -import * as DOMHelper from 'utils/DOMHelper' -import { isOpenInNewWindowClick, OperatingSystems, os } from 'utils/general' -import { loadWithPJAX } from 'utils/hooks/usePJAX' -import { VisibleNodes, VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' - -export type Props = { - metaData: MetaData - freeze: boolean - accessToken: string | undefined - config: Config - catchNetworkErrors: (fn: () => T) => Promise -} - -export type ConnectorState = { - visibleNodesGenerator: VisibleNodesGenerator | null - visibleNodes: VisibleNodes | null - searchKey: string - searched: boolean // derived state from searchKey, = !!searchKey - defer: boolean - - handleKeyDown: GetCreatedMethod - updateSearchKey: GetCreatedMethod - onNodeClick: GetCreatedMethod - onFocusSearchBar: GetCreatedMethod - setUpTree: GetCreatedMethod - goTo: GetCreatedMethod - expandTo: GetCreatedMethod -} - -function getVisibleParentNode(nodes: TreeNode[], focusedNode: TreeNode) { - let index = nodes.findIndex(node => node.path === focusedNode.path) - 1 - while (index >= 0) { - if (nodes[index].contents?.includes(focusedNode)) { - return nodes[index] - } - --index - } -} - -type BoundMethodCreator = MethodCreator - -export const setUpTree: BoundMethodCreator< - [ - { stateContext: SideBarStateContextShape } & Required> & { - config: Pick - }, - () => boolean, - ] -> = - dispatch => - ({ stateContext, metaData, config }, checker) => { - const { - props: { catchNetworkErrors }, - } = dispatch.get() - - catchNetworkErrors(async () => { - const { userName, repoName, branchName } = metaData - - if (!checker()) return - stateContext.onChange('tree-loading') - - const { root: treeRoot, defer = false } = await platform.getTreeData( - { - branchName, - userName, - repoName, - }, - '/', - true, - config.accessToken, - ) - - if (!checker()) return - stateContext.onChange('tree-rendering') - dispatch.set({ defer }) - - const visibleNodesGenerator = new VisibleNodesGenerator({ - root: treeRoot, - compress: config.compressSingletonFolder, - async getTreeData(path) { - const { root } = await platform.getTreeData(metaData, path, false, config.accessToken) - return root - }, - }) - - if (!checker()) return - dispatch.set({ visibleNodesGenerator }) - - visibleNodesGenerator.onUpdate(visibleNodes => { - if (!checker()) return - dispatch.set({ visibleNodes }) - }) - - if (platform.shouldExpandAll?.()) { - const unsubscribe = visibleNodesGenerator.onUpdate(visibleNodes => { - unsubscribe() - visibleNodes.nodes.forEach(node => { - if (!checker()) return - dispatch.call(toggleNodeExpansion, node, { recursive: true }) - }) - }) - } else { - const targetPath = platform.getCurrentPath(metaData.branchName) - if (targetPath && checker()) dispatch.call(goTo, targetPath) - } - - if (!checker()) return - stateContext.onChange('tree-rendered') - }) - } - -export const handleKeyDown: BoundMethodCreator<[React.KeyboardEvent]> = - dispatch => event => { - const { - state: { searched, visibleNodes }, - } = dispatch.get() - if (!visibleNodes) return - const { nodes, focusedNode, expandedNodes } = visibleNodes - function handleVerticalMove(index: number) { - if (0 <= index && index < nodes.length) { - DOMHelper.focusFileExplorer() - dispatch.call(focusNode, nodes[index]) - } else { - DOMHelper.focusSearchInput() - dispatch.call(focusNode, null) - } - } - - const { key } = event - // prevent document body scrolling if the keypress results in Gitako action - let muteEvent = true - if (focusedNode) { - const focusedNodeIndex = nodes.findIndex(node => node.path === focusedNode.path) - switch (key) { - case 'ArrowUp': - // focus on previous node - handleVerticalMove(focusedNodeIndex - 1) - break - - case 'ArrowDown': - // focus on next node - handleVerticalMove(focusedNodeIndex + 1) - break - - case 'ArrowLeft': - if (wouldBlockHistoryNavigation(event)) { - muteEvent = false - break - } - if (expandedNodes.has(focusedNode.path)) { - dispatch.call(toggleNodeExpansion, focusedNode, { recursive: event.altKey }) - } else { - // go forward to the start of the list, find the closest node with lower depth - const parentNode = getVisibleParentNode(nodes, focusedNode) - if (parentNode) { - dispatch.call(focusNode, parentNode) - } - } - break - - // consider the two keys as 'confirm' key - case 'ArrowRight': - if (wouldBlockHistoryNavigation(event)) { - muteEvent = false - break - } - // expand node or focus on first content node or redirect to file page - if (focusedNode.type === 'tree') { - if (expandedNodes.has(focusedNode.path)) { - const nextNode = nodes[focusedNodeIndex + 1] - if (focusedNode.contents?.includes(nextNode)) { - dispatch.call(focusNode, nextNode) - } - } else { - dispatch.call(toggleNodeExpansion, focusedNode, { recursive: event.altKey }) - } - } else if (focusedNode.type === 'blob') { - const focusedNodeElement = DOMHelper.findNodeElement(focusedNode, event.currentTarget) - if (focusedNodeElement && focusedNode.url) - loadWithPJAX(focusedNode.url, focusedNodeElement) - } else if (focusedNode.type === 'commit') { - window.open(focusedNode.url) - } - break - case 'Enter': - // expand node or redirect to file page - if (searched) { - dispatch.call(goTo, focusedNode.path.split('/')) - } else { - if (focusedNode.type === 'tree') { - dispatch.call(toggleNodeExpansion, focusedNode, { recursive: event.altKey }) - } else if (focusedNode.type === 'blob') { - const focusedNodeElement = DOMHelper.findNodeElement(focusedNode, event.currentTarget) - if (focusedNodeElement && focusedNode.url) - loadWithPJAX(focusedNode.url, focusedNodeElement) - } else if (focusedNode.type === 'commit') { - window.open(focusedNode.url) - } - } - break - default: - muteEvent = false - } - if (muteEvent) { - event.preventDefault() - } - } else { - // now search input is focused - if (nodes.length) { - switch (key) { - case 'ArrowDown': - DOMHelper.focusFileExplorer() - dispatch.call(focusNode, nodes[0]) - break - case 'ArrowUp': - DOMHelper.focusFileExplorer() - dispatch.call(focusNode, nodes[nodes.length - 1]) - break - default: - muteEvent = false - } - if (muteEvent) { - event.preventDefault() - } - } - } - } - -export const onFocusSearchBar: BoundMethodCreator = dispatch => () => dispatch.call(focusNode, null) - -export const updateSearchKey: BoundMethodCreator<[string]> = dispatch => searchKey => { - dispatch.set({ searchKey, searched: searchKey !== '' }) -} - -export const goTo: BoundMethodCreator<[string[]]> = dispatch => path => { - const { - state: { visibleNodesGenerator }, - } = dispatch.get() - if (!visibleNodesGenerator) return - - dispatch.call(updateSearchKey, '') - visibleNodesGenerator.search(null) - visibleNodesGenerator.onNextUpdate(() => { - dispatch.call(expandTo, path) - }) -} - -export const setExpand: BoundMethodCreator<[TreeNode, boolean]> = - dispatch => - async (node, expand = false) => { - const { - state: { visibleNodesGenerator }, - } = dispatch.get() - if (!visibleNodesGenerator) return - - await visibleNodesGenerator.setExpand(node, expand) - dispatch.call(focusNode, node) - } - -export const toggleNodeExpansion: BoundMethodCreator< - [ - TreeNode, - { - recursive?: boolean - }, - ] -> = - dispatch => - async (node, { recursive = false }) => { - const { - state: { visibleNodesGenerator }, - } = dispatch.get() - if (!visibleNodesGenerator) return - - if (node.type === 'tree') { - visibleNodesGenerator.focusNode(node) - await visibleNodesGenerator.toggleExpand(node, recursive) - } - } - -export const focusNode: BoundMethodCreator<[TreeNode | null]> = - dispatch => (node: TreeNode | null) => { - const { - state: { visibleNodesGenerator }, - } = dispatch.get() - if (!visibleNodesGenerator) return - - visibleNodesGenerator.focusNode(node) - } - -export const onNodeClick: BoundMethodCreator< - [React.MouseEvent, TreeNode] -> = dispatch => (event, node) => { - switch (node.type) { - case 'tree': { - const { - props: { - config: { recursiveToggleFolder }, - }, - } = dispatch.get() - const recursive = - (recursiveToggleFolder === 'shift' && event.shiftKey) || - (recursiveToggleFolder === 'alt' && event.altKey) - // recursive toggle action may conflict with browser default action - // e.g. shift + click is the default open in new tab action on macOS - // giving recursive toggle action higher priority than default action - if (!recursive && isOpenInNewWindowClick(event)) return - - event.preventDefault() - dispatch.call(toggleNodeExpansion, node, { recursive }) - break - } - case 'blob': { - if (isOpenInNewWindowClick(event)) return - - dispatch.call(focusNode, node) - if (node.url) { - const isHashLink = node.url.includes('#') - if (!isHashLink) { - event.preventDefault() - loadWithPJAX(node.url, event.currentTarget) - } - } - break - } - case 'commit': { - // pass event, open in new tab thanks to the target="_blank" on the anchor element - } - } -} - -export const expandTo: BoundMethodCreator<[string[]]> = dispatch => async currentPath => { - const { - state: { visibleNodesGenerator }, - } = dispatch.get() - if (!visibleNodesGenerator) return - - const nodeExpandedTo = await visibleNodesGenerator.expandTo(currentPath.join('/')) - if (nodeExpandedTo) { - visibleNodesGenerator.focusNode(nodeExpandedTo) - } -} - -function wouldBlockHistoryNavigation(event: React.KeyboardEvent) { - // Cmd + left/right on macOS - // Alt + left/right on other OSes - return ( - (os === OperatingSystems.macOS && event.metaKey) || - (os !== OperatingSystems.macOS && event.altKey) - ) -} diff --git a/src/driver/core/index.ts b/src/driver/core/index.ts deleted file mode 100644 index dd80f10..0000000 --- a/src/driver/core/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Sources } from 'driver/connect' -import * as FileExplorer from './FileExplorer' -import { - ConnectorState as FileExplorerConnectorState, - Props as FileExplorerProps, -} from './FileExplorer' - -export const FileExplorerCore: Sources = FileExplorer diff --git a/src/env.ts b/src/env.ts index a013dc3..c35d219 100644 --- a/src/env.ts +++ b/src/env.ts @@ -9,3 +9,8 @@ export const GITEE_OAUTH = { } export const VERSION = process.env.VERSION + +export const SENTRY = { + PUBLIC_KEY: process.env.SENTRY_PUBLIC_KEY, + PROJECT_ID: process.env.SENTRY_PROJECT_ID, +} diff --git a/src/global.d.ts b/src/global.d.ts index 6015caa..1182762 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -1,12 +1,17 @@ +type AnyArray = any[] // eslint-disable-line @typescript-eslint/no-explicit-any + type MetaData = { userName: string repoName: string defaultBranchName: string branchName: string - type?: EnumString<'tree' | 'blob' | 'pull'> + type?: EnumString<'tree' | 'blob' | 'pull' | 'commit'> } -type PartialMetaData = Omit, 'defaultBranchName'> +type PartialMetaData = Omit< + MakeOptional, + 'defaultBranchName' +> type TreeNode = { name: string @@ -17,8 +22,8 @@ type TreeNode = { sha?: string accessDenied?: boolean comments?: { - active: number, - resolved: number, + active: number + resolved: number } diff?: { status: 'modified' | 'added' | 'removed' | 'renamed' @@ -42,4 +47,13 @@ type MakeOptional = Override< type VoidFN = (payload: T) => void type Async = T | Promise + +// eslint-disable-next-line @typescript-eslint/ban-types type EnumString = S | (string & {}) + +type JSONPrimitive = string | number | boolean | null | undefined +type JSONObject = { + [key: string]: JSONValue +} +type JSONArray = JSONValue[] +type JSONValue = JSONPrimitive | JSONObject | JSONArray diff --git a/src/platforms/GitHub/API.ts b/src/platforms/GitHub/API.ts index d6c1d7c..7dbf825 100644 --- a/src/platforms/GitHub/API.ts +++ b/src/platforms/GitHub/API.ts @@ -1,25 +1,41 @@ import { errors } from 'platforms' import { isEnterprise } from '.' +import { is } from '../../utils/is' +import { gitakoServiceHost } from '../../utils/networkService' +import { continuousLoadPages, getDOM, resolveHeaderLink } from './utils' -function apiRateLimitExceeded(content: any /* safe any */) { - return content?.['documentation_url'] === 'https://developer.github.com/v3/#rate-limiting' +function isAPIRateLimitExceeded(content: JSONValue) { + return ( + is.JSON.object(content) && + content?.['documentation_url'] === 'https://developer.github.com/v3/#rate-limiting' + ) } -function isEmptyProject(content: any /* safe any */) { - return content?.['message'] === 'Git Repository is empty.' +function isEmptyProject(content: JSONValue) { + return is.JSON.object(content) && content?.['message'] === 'Git Repository is empty.' } -function isBlockedProject(content: any /* safe any */) { - return content?.['message'] === 'Repository access blocked' +function isBlockedProject(content: JSONValue) { + return is.JSON.object(content) && content?.['message'] === 'Repository access blocked' } -async function request( +export const responseBodyResolvers = { + asIs: (response: Response) => response, + json(response: Response) { + const contentType = response.headers.get('Content-Type') || response.headers.get('content-type') + if (contentType?.includes('application/json')) return response.json() + throw new Error(`Response content type is "${contentType}"`) + }, +} + +async function request( url: string, { accessToken, }: { accessToken?: string } = {}, + bodyResolver: (response: Response) => Async = responseBodyResolvers.json, ) { const headers = {} as HeadersInit & { Authorization?: string @@ -35,38 +51,35 @@ async function request( throw new Error(errors.CONNECTION_BLOCKED) } - const contentType = res.headers.get('Content-Type') || res.headers.get('content-type') - const isJson = contentType?.includes('application/json') // About res.ok: // True if res.status between 200~299 // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Response/ok - if (res.ok) { - if (isJson) return res.json() - throw new Error(`Response content type is "${contentType}"`) - } else { - if (res.status === 404 || res.status === 401) throw new Error(errors.NOT_FOUND) - else if (res.status === 403) throw new Error(errors.API_RATE_LIMIT) - else if (res.status === 500) throw new Error(errors.SERVER_FAULT) - else if (isJson) { - const content = await res.json() - if (apiRateLimitExceeded(content)) throw new Error(errors.API_RATE_LIMIT) - if (isEmptyProject(content)) throw new Error(errors.EMPTY_PROJECT) - if (isBlockedProject(content)) throw new Error(errors.BLOCKED_PROJECT) - throw new Error(`Unknown message content "${content?.message}"`) - } else { - throw new Error(`Response content type is "${contentType}"`) - } - } + if (res.ok) return bodyResolver(res) + + if (res.status === 404 || res.status === 401) throw new Error(errors.NOT_FOUND) + if (res.status === 403) throw new Error(errors.API_RATE_LIMIT) + if (res.status === 500) throw new Error(errors.SERVER_FAULT) + + const content = await responseBodyResolvers.json(res) + if (isAPIRateLimitExceeded(content)) throw new Error(errors.API_RATE_LIMIT) + if (isEmptyProject(content)) throw new Error(errors.EMPTY_PROJECT) + if (isBlockedProject(content)) throw new Error(errors.BLOCKED_PROJECT) + + const message = + typeof content === 'object' + ? (content as Record | null)?.message + : `${content}` + throw new Error(`Unknown message content "${message}"`) } -const API_ENDPOINT = isEnterprise() ? `${window.location.host}/api/v3` : 'api.github.com' +const API_ENDPOINT = isEnterprise() ? `${window.location.origin}/api/v3` : 'https://api.github.com' export async function getRepoMeta( userName: string, repoName: string, accessToken?: string, ): Promise { - const url = `https://${API_ENDPOINT}/repos/${userName}/${repoName}` + const url = `${API_ENDPOINT}/repos/${userName}/${repoName}` return await request(url, { accessToken }) } @@ -79,31 +92,42 @@ export async function getTreeData( ): Promise { const search = new URLSearchParams() if (recursive) search.set('recursive', '1') - const url = - `https://${API_ENDPOINT}/repos/${userName}/${repoName}/git/trees/${branchName}?` + search + const url = `${API_ENDPOINT}/repos/${userName}/${repoName}/git/trees/${branchName}?${search}` return await request(url, { accessToken }) } -export async function getPullData( +export async function getPullRequest( userName: string, repoName: string, pullId: string, accessToken?: string, ): Promise { - const url = `https://${API_ENDPOINT}/repos/${userName}/${repoName}/pulls/${pullId}` + const url = `${API_ENDPOINT}/repos/${userName}/${repoName}/pulls/${pullId}` return await request(url, { accessToken }) } +export async function requestPullTreeData( + userName: string, + repoName: string, + pullId: string, + page: number, + pageSize?: number, + accessToken?: string, +) { + const search = new URLSearchParams({ page: page.toString(), per_page: `${pageSize}` }) + const url = `${API_ENDPOINT}/repos/${userName}/${repoName}/pulls/${pullId}/files?${search}` + return await request(url, { accessToken }, responseBodyResolvers.asIs) +} + export async function getPullTreeData( userName: string, repoName: string, pullId: string, page: number, + pageSize?: number, accessToken?: string, ): Promise { - const search = new URLSearchParams({ page: page.toString() }) - const url = `https://${API_ENDPOINT}/repos/${userName}/${repoName}/pulls/${pullId}/files?${search}` - return await request(url, { accessToken }) + return (await requestPullTreeData(userName, repoName, pullId, page, pageSize, accessToken)).json() } export async function getPullComments( @@ -112,51 +136,29 @@ export async function getPullComments( pullId: string, accessToken?: string, ): Promise { - const url = `https://${API_ENDPOINT}/repos/${userName}/${repoName}/pulls/${pullId}/comments` + const url = `${API_ENDPOINT}/repos/${userName}/${repoName}/pulls/${pullId}/comments` return await request(url, { accessToken }) } export async function getPullPageDocuments( userName: string, repoName: string, - pullId: string, // not used + pullId: string, + document?: Document, ): Promise { // Response of this API contains view of few files but is not complete. - const filesDOM = await getDOM( - `https://${window.location.host}/${userName}/${repoName}/pull/${pullId}/files?_pjax=%23js-repo-pjax-container`, + return continuousLoadPages( + document || + (await getDOM(`${window.location.origin}/${userName}/${repoName}/pull/${pullId}/files`)), ) - const hookElement: HTMLDivElement | null = filesDOM.querySelector('div.js-pull-refresh-on-pjax') - const hookSearchParams = new URLSearchParams(hookElement?.dataset.url) - const [baseSHA, headSHA] = [ - hookSearchParams.get('start_commit_oid'), - hookSearchParams.get('end_commit_oid'), - ] - if (!baseSHA || !headSHA) throw new Error(`Cannot fetch SHA for comparison`) - - // The SHA used to be retrieved from DOM of the pull page, but they can be unreliable if the PR has conflicts - const search = new URLSearchParams(window.location.search) - search.set('sha1', baseSHA) - search.set('sha2', headSHA) - let lines = 0 - const diffsDOMs: Document[] = [] - while (true) { - search.set('lines', lines.toString()) - const diffsDOM = await getDOM( - `https://${window.location.host}/${userName}/${repoName}/diffs?${search}`, - ) - diffsDOMs.push(diffsDOM) - - if (diffsDOM.querySelector('.js-diff-progressive-container')) { - lines += 3000 - } else { - break - } - } - return diffsDOMs } -async function getDOM(url: string) { - return new DOMParser().parseFromString(await (await fetch(url)).text(), 'text/html') +export async function getCommitPageDocuments(): Promise { + /* userName: string, + repoName: string, + commitId: string, */ + // arguments are not used because info are collected from DOM directly + return continuousLoadPages(document) } export async function getBlobData( @@ -165,14 +167,14 @@ export async function getBlobData( sha: string, accessToken?: string, ): Promise { - const url = `https://${API_ENDPOINT}/repos/${userName}/${repoName}/git/blobs/${sha}` + const url = `${API_ENDPOINT}/repos/${userName}/${repoName}/git/blobs/${sha}` return await request(url, { accessToken }) } export async function OAuth(code: string): Promise { try { - const endpoint = `https://gitako.now.sh/oauth/github?` - const res = await fetch(endpoint + new URLSearchParams({ code }).toString(), { + const endpoint = `https://${gitakoServiceHost}/oauth/github?${new URLSearchParams({ code })}` + const res = await fetch(endpoint, { method: 'post', }) if (res.ok) { @@ -185,3 +187,55 @@ export async function OAuth(code: string): Promise { return null } } + +export async function requestCommitTreeData( + userName: string, + repoName: string, + sha: string, + page = 1, + accessToken?: string, +): Promise { + const search = new URLSearchParams({ + per_page: '100', + page: `${page}`, + }) + const url = `${API_ENDPOINT}/repos/${userName}/${repoName}/commits/${sha}?${search}` + return await request(url, { accessToken }, responseBodyResolvers.asIs) +} + +export async function getPaginatedData(sendRequest: (page: number) => Promise) { + const responses: Response[] = [] + let page = 1 + // eslint-disable-next-line no-constant-condition + while (true) { + const response = await sendRequest(page) + responses.push(response) + + const headerLink = response.headers.get('link') + if (headerLink) { + const rels = resolveHeaderLink(headerLink) + if (rels) { + if (rels.position === 'first') { + page++ + } else if (rels.position === 'middle') { + const searchOfLast = new URL(rels.last).searchParams + if (`${page}` === searchOfLast.get('page')) { + // this should not actually happen because GitHub responds `prev` and `first` for the first page + break + } + page++ + } else { + // i.e. rels.position === 'last' + break + } + } else { + // unexpected link header content + break + } + } else { + // no link headers if there is <100 files + break + } + } + return Promise.all(responses.map(responseBodyResolvers.json)) as Promise +} diff --git a/src/platforms/GitHub/CopyFileButton.tsx b/src/platforms/GitHub/CopyFileButton.tsx index 47d26c0..7a3bec2 100644 --- a/src/platforms/GitHub/CopyFileButton.tsx +++ b/src/platforms/GitHub/CopyFileButton.tsx @@ -3,8 +3,6 @@ import { cx } from 'utils/cx' import { copyElementContent } from 'utils/DOMHelper' import { getCodeElement } from './DOMHelper' -type Props = {} - const className = 'gitako-copy-file-button' export const copyFileButtonClassName = className @@ -13,7 +11,8 @@ const contents = { error: 'Copy failed!', normal: 'Copy file', } -export function CopyFileButton(props: React.PropsWithChildren) { + +export function CopyFileButton() { const [content, setContent] = React.useState(contents.normal) React.useEffect(() => { if (content !== contents.normal) { @@ -31,7 +30,7 @@ export function CopyFileButton(props: React.PropsWithChildren) { // onClick on won't work when rendered with `renderReact` const element = elementRef.current if (element) { - function copyCode() { + const copyCode = () => { const codeElement = getCodeElement() if (codeElement) { setContent(copyElementContent(codeElement, true) ? contents.success : contents.error) diff --git a/src/platforms/GitHub/DOMHelper.ts b/src/platforms/GitHub/DOMHelper.ts index 32478b7..c12d209 100644 --- a/src/platforms/GitHub/DOMHelper.ts +++ b/src/platforms/GitHub/DOMHelper.ts @@ -1,14 +1,14 @@ import { raiseError } from 'analytics' import { Clippy, ClippyClassName } from 'components/Clippy' import * as React from 'react' -import { $ } from 'utils/DOMHelper' +import { $, formatClass, parseIntFromElement } from 'utils/DOMHelper' import { renderReact, run } from 'utils/general' import { CopyFileButton, copyFileButtonClassName } from './CopyFileButton' export function resolveMeta(): Partial { const metaData = { - userName: $('[itemprop="author"] > a[rel="author"]', e => e.textContent?.trim()), - repoName: $('[itemprop="name"] > a[href]', e => e.textContent?.trim()), + userName: $('[itemprop="author"] > a[rel="author"]', e => e.textContent?.trim()) || undefined, + repoName: $('[itemprop="name"] > a[href]', e => e.textContent?.trim()) || undefined, branchName: getCurrentBranch(true), } if (!metaData.userName || !metaData.repoName) { @@ -31,15 +31,24 @@ export function isInCodePage() { return Boolean($(branchListSelector, e => e.offsetWidth > 0 && e.offsetHeight > 0)) } +export function isInPullFilesPage() { + return $('.tabnav-tab.selected #files_tab_counter') +} + export function getIssueTitle() { const title = $('.gh-header-title')?.textContent return title?.trim().replace(/\n/g, '') } +export function getCommitTitle() { + const title = $('.commit-title')?.textContent + return title?.trim().replace(/\n/g, '') +} + export function getCurrentBranch(passive = false) { const selectedBranchButtonSelector = [ - '.repository-content #branch-select-menu summary', - '.repository-content .branch-select-menu summary', + 'main #branch-select-menu summary', + 'main .branch-select-menu summary', ].join() const branchButtonElement = $(selectedBranchButtonSelector) if (branchButtonElement) { @@ -54,9 +63,8 @@ export function getCurrentBranch(passive = false) { if (title !== defaultTitle && !title.includes(' ')) return title } - const findFileButtonSelector = - '#js-repo-pjax-container .repository-content .file-navigation a[data-hotkey="t"]' - const urlFromFindFileButton: string | undefined = $( + const findFileButtonSelector = 'main .file-navigation a[data-hotkey="t"]' + const urlFromFindFileButton = $( findFileButtonSelector, element => (element as HTMLAnchorElement).href, ) @@ -64,7 +72,7 @@ export function getCurrentBranch(passive = false) { const commitPathRegex = /^(.*?)\/(.*?)\/find\/(.*?)$/ const result = urlFromFindFileButton.match(commitPathRegex) if (result) { - const [_, userName, repoName, branchName] = result + const [_, userName, repoName, branchName] = result // eslint-disable-line @typescript-eslint/no-unused-vars if (!branchName.includes(' ')) return branchName } } @@ -96,8 +104,8 @@ const PAGE_TYPES = { */ function getCurrentPageType() { const blobPathSelector = '#blob-path' // path next to branch switcher - const blobWrapperSelector = '.repository-content .blob-wrapper table' - const readmeSelector = '.repository-content .readme' + const blobWrapperSelector = 'main .blob-wrapper table' + const readmeSelector = 'main .readme' const searchResultSelector = '.codesearch-results' return ( $(searchResultSelector, () => PAGE_TYPES.SEARCH) || @@ -110,7 +118,7 @@ function getCurrentPageType() { const REPO_TYPE_PRIVATE = 'private' as const const REPO_TYPE_PUBLIC = 'public' as const export function getRepoPageType() { - const headerSelector = `#js-repo-pjax-container .pagehead.repohead h1` + const headerSelector = `main .pagehead.repohead h1` return $(headerSelector, header => { const repoPageTypes = [REPO_TYPE_PRIVATE, REPO_TYPE_PUBLIC] for (const repoPageType of repoPageTypes) { @@ -127,7 +135,7 @@ export function getRepoPageType() { */ export function getCodeElement() { if (getCurrentPageType() === PAGE_TYPES.RAW_TEXT) { - const codeContentSelector = '.repository-content .data table' + const codeContentSelector = 'main .data table' const codeContentElement = $(codeContentSelector) if (!codeContentElement) { raiseError(new Error('cannot find code content element')) @@ -142,7 +150,7 @@ export function getCodeElement() { */ export function attachCopyFileBtn() { const removeButtons = () => { - const buttons = document.querySelectorAll(`.${copyFileButtonClassName}`) + const buttons = document.querySelectorAll(formatClass(copyFileButtonClassName)) buttons.forEach(button => { button.parentElement?.removeChild(button) }) @@ -158,7 +166,7 @@ export function attachCopyFileBtn() { } if (!buttonGroup) { - const buttonGroupSelector = '.repository-content .Box-header .BtnGroup' + const buttonGroupSelector = 'main .Box-header .BtnGroup' const buttonGroups = document.querySelectorAll(buttonGroupSelector) const $buttonGroup = buttonGroups[buttonGroups.length - 1] if ($buttonGroup) buttonGroup = $buttonGroup as HTMLElement @@ -180,9 +188,9 @@ export function attachCopyFileBtn() { } export function attachCopySnippet() { - const readmeSelector = '.repository-content div#readme' + const readmeSelector = 'main div#readme' return $(readmeSelector, () => { - const readmeArticleSelector = '.repository-content div#readme article' + const readmeArticleSelector = 'main div#readme article' return $( readmeArticleSelector, readmeElement => { @@ -214,7 +222,7 @@ export function attachCopySnippet() { } } function removeAttachedOnes() { - const buttons = document.querySelectorAll(`.${ClippyClassName}`) + const buttons = document.querySelectorAll(formatClass(ClippyClassName)) buttons.forEach(button => { button.parentElement?.removeChild(button) }) @@ -227,10 +235,10 @@ export function attachCopySnippet() { }, () => { // in URL like `/{user}/{repo}/delete/{branch}/path/to/file - const deleteReadmeSelector = '.repository-content div#readme del' + const deleteReadmeSelector = 'main div#readme del' if (!$(deleteReadmeSelector)) { // in pages where readme is not markdown, e.g. txt - const plainReadmeSelector = '.repository-content div#readme .plain' + const plainReadmeSelector = 'main div#readme .plain' if (!$(plainReadmeSelector)) { raiseError( new Error('cannot find mount point for copy snippet button while readme exists'), @@ -262,9 +270,27 @@ export function getPath() { } export function isNativePRFileTreeShown() { - return $('file-tree[data-target="diff-layout.fileTree"]') + return $('file-tree[data-target="diff-layout.fileTree"]', ele => { + // It would be set `display: hidden;` when collapsed + const { width, height } = ele.getBoundingClientRect() + return width * height > 0 + }) } export function selectEnterpriseStatHeader() { return $('.stats-ui-enabled .server-stats') } + +export function getPullRequestFilesCount() { + return $('#files_tab_counter', parseIntFromElement) +} + +export function getPRDiffTotalStat() { + const [added, removed] = [$('#diffstat .color-fg-success'), $('#diffstat .color-fg-danger')].map( + e => (e ? parseIntFromElement(e) : null), + ) + return { + added, + removed, + } +} diff --git a/src/platforms/GitHub/Request.d.ts b/src/platforms/GitHub/Request.d.ts index 3ee31cb..3100962 100644 --- a/src/platforms/GitHub/Request.d.ts +++ b/src/platforms/GitHub/Request.d.ts @@ -15,19 +15,98 @@ declare namespace GitHubAPI { url: string } - type PullTreeItem = { + type User = { + login: string + id: number + node_id: string + avatar_url: string + gravatar_id: string + url: string + html_url: string + followers_url: string + following_url: string + gists_url: string + starred_url: string + subscriptions_url: string + organizations_url: string + repos_url: string + events_url: string + received_events_url: string + type: 'User' | string + site_admin: boolean + } + + type Commit = { + url: string + author: { + name: string + email: string + date: string + } + committer: { + name: string + email: string + date: string + } + message: string + tree: { + url: string + sha: string + } + comment_count: number + verification: { + verified: boolean + reason: 'unsigned' | string + signature: null + payload: null + } + } + + type CommitResponseData = { + url: string + sha: string + node_id: string + html_url: string + comments_url: string + commit: Commit + author: User + committer: User + parents: { + url: string + sha: string + }[] + stats: { + additions: number + deletions: number + total: number + } + files: CommitTreeItem[] + } + + type CommitTreeItem = { additions: number blob_url: string changes: number - contents_url: string deletions: number filename: string patch: string raw_url: string - sha: string status: 'modified' | 'added' | 'removed' | 'renamed' } + type PullTreeItem = { + additions: number + blob_url: string + changes: number + deletions: number + filename: string + patch: string + raw_url: string + status: 'modified' | 'added' | 'removed' | 'renamed' + sha: string + contents_url: string + } + type PullData = { state: 'open' | 'closed' title: string diff --git a/src/platforms/GitHub/URLHelper.ts b/src/platforms/GitHub/URLHelper.ts index 229317d..a4c3644 100644 --- a/src/platforms/GitHub/URLHelper.ts +++ b/src/platforms/GitHub/URLHelper.ts @@ -1,17 +1,17 @@ import { raiseError } from 'analytics' +import { sanitizedLocation } from 'utils/URLHelper' export function parse(): Partial> & { path: string[] } { - const { pathname } = window.location - let [ + const [ , // ignore content before the first '/' userName, repoName, type, ...path // should be [...branchName.split('/'), ...filePath.split('/')] - ] = unescape(decodeURIComponent(pathname)).split('/') + ] = unescape(decodeURIComponent(sanitizedLocation.pathname)).split('/') return { userName, repoName, @@ -24,7 +24,7 @@ export function parse(): Partial, + commitSHA: string, + accessToken: string | undefined, +) { + const treeData = ( + await API.getPaginatedData(page => + API.requestCommitTreeData(userName, repoName, commitSHA, page, accessToken), + ) + ) + .map(({ files }) => files) + .flat() + + const documents = await API.getCommitPageDocuments(/* userName, repoName, commitSHA */) + + const getItemURL = (path: string) => { + for (const doc of documents) { + const id = doc.querySelector(`[data-path="${path}"]`)?.parentElement?.id + if (id) return formatID(id) + } + } + + const root = processTree( + treeData.map(item => ({ + type: 'blob', + path: item.filename, + name: item.filename.split('/').pop() || '', + url: getItemURL(item.filename) || item.blob_url, + sha: item.patch, + diff: { + status: item.status, + additions: item.additions, + deletions: item.deletions, + changes: item.changes, + }, + })), + ) + + return { root } +} diff --git a/src/platforms/GitHub/getPullRequestTreeData.ts b/src/platforms/GitHub/getPullRequestTreeData.ts new file mode 100644 index 0000000..d7c5852 --- /dev/null +++ b/src/platforms/GitHub/getPullRequestTreeData.ts @@ -0,0 +1,144 @@ +import { sanitizedLocation } from 'utils/URLHelper' +import * as API from './API' +import { getPRDiffTotalStat, getPullRequestFilesCount, isInPullFilesPage } from './DOMHelper' +import { processTree } from './index' +import { getCommentsMap } from './utils' + +function checkShouldSafeGet() { + const FAST_GET_DIFF_THRESHOLD = 10000 + const FAST_GET_FILES_THRESHOLD = 200 + const { added, removed } = getPRDiffTotalStat() + const filesCount = getPullRequestFilesCount() + return ( + added === null || + removed === null || + filesCount === null || + (added + removed < FAST_GET_DIFF_THRESHOLD && filesCount < FAST_GET_FILES_THRESHOLD) + ) +} + +export async function getPullRequestTreeData( + metaData: Pick, + pullId: string, + accessToken?: string, + shouldSafeGet = checkShouldSafeGet(), +) { + const { userName, repoName } = metaData + const [treeData, commentData] = await Promise.all([ + shouldSafeGet + ? safeGetPullRequestTreeData(metaData, pullId, accessToken) + : fastGetPullRequestTreeData(metaData, pullId, accessToken), + API.getPullComments(userName, repoName, pullId, accessToken), + ]) + + const docs = await API.getPullPageDocuments( + userName, + repoName, + pullId, + isInPullFilesPage() ? document : undefined, + ) + // query all elements at once to make getFileElementHash run faster + const elementsHavePath = docs.map(doc => doc.querySelectorAll(`[data-path]`)) + const map = new Map() + for (const group of elementsHavePath) { + for (let i = 0; i < group.length; i++) { + const element = group[i] + const id = element.parentElement?.id + if (id) { + const path = element.getAttribute('data-path') + if (path) map.set(path, id) + } + } + } + + const url = new URL(sanitizedLocation.href) + url.pathname = `/${userName}/${repoName}/pull/${pullId}/files` + const commentsMap = getCommentsMap(commentData) + const nodes: TreeNode[] = treeData.map( + ({ filename, sha, additions, deletions, changes, status }) => { + url.hash = map.get(filename) || '' + return { + path: filename || '', + type: 'blob', + name: filename?.split('/').pop() || '', + url: `${url}`, + sha, + comments: commentsMap.get(filename), + diff: { + status, + additions, + deletions, + changes, + }, + } + }, + ) + + const root = processTree(nodes) + return { root } +} + +const GITHUB_API_RESPONSE_LENGTH_LIMIT = 3000 +const GITHUB_API_RESPONSE_MAX_SIZE_PER_PAGE = 100 +const MAX_PAGE = Math.ceil(GITHUB_API_RESPONSE_LENGTH_LIMIT / GITHUB_API_RESPONSE_MAX_SIZE_PER_PAGE) + +async function safeGetPullRequestTreeData( + { userName, repoName }: Pick, + pullId: string, + accessToken?: string, +) { + return ( + await API.getPaginatedData(page => + API.requestPullTreeData( + userName, + repoName, + pullId, + page, + GITHUB_API_RESPONSE_MAX_SIZE_PER_PAGE, + accessToken, + ), + ) + ).flat() +} + +async function fastGetPullRequestTreeData( + { userName, repoName }: Pick, + pullId: string, + accessToken?: string, +) { + const treeData = await API.getPullTreeData( + userName, + repoName, + pullId, + 1, + GITHUB_API_RESPONSE_MAX_SIZE_PER_PAGE, + accessToken, + ) + + const count = getPullRequestFilesCount() + if (count !== null && treeData.length < count) { + let page = 1 + const restPages = [] + while (page * GITHUB_API_RESPONSE_MAX_SIZE_PER_PAGE < count) { + restPages.push(++page) + } + if (page > MAX_PAGE) { + // TODO: hint + } + const moreFiles = await Promise.all( + restPages.map(page => + API.getPullTreeData( + userName, + repoName, + pullId, + page, + GITHUB_API_RESPONSE_MAX_SIZE_PER_PAGE, + accessToken, + ), + ), + ) + treeData.push(...moreFiles.flat()) + } + + return treeData +} diff --git a/src/platforms/GitHub/hooks/useGitHubAttachCopyFileButton.ts b/src/platforms/GitHub/hooks/useGitHubAttachCopyFileButton.ts index aa1e409..e2bc04c 100644 --- a/src/platforms/GitHub/hooks/useGitHubAttachCopyFileButton.ts +++ b/src/platforms/GitHub/hooks/useGitHubAttachCopyFileButton.ts @@ -1,17 +1,16 @@ import { platform } from 'platforms' import * as React from 'react' -import { useOnPJAXDone } from 'utils/hooks/usePJAX' +import { useAfterRedirect } from 'utils/hooks/useFastRedirect' import * as DOMHelper from '../DOMHelper' import { GitHub } from '../index' export function useGitHubAttachCopyFileButton(copyFileButton: boolean) { const attachCopyFileButton = React.useCallback( function attachCopyFileButton() { - if (platform !== GitHub) return - if (copyFileButton) return DOMHelper.attachCopyFileBtn() || undefined // for the sake of react effect + if (platform === GitHub && copyFileButton) DOMHelper.attachCopyFileBtn() }, [copyFileButton], ) - React.useEffect(attachCopyFileButton, [copyFileButton]) - useOnPJAXDone(attachCopyFileButton) + React.useEffect(attachCopyFileButton, [attachCopyFileButton]) + useAfterRedirect(attachCopyFileButton) } diff --git a/src/platforms/GitHub/hooks/useGitHubAttachCopySnippetButton.ts b/src/platforms/GitHub/hooks/useGitHubAttachCopySnippetButton.ts index 9a92f76..55e0c6c 100644 --- a/src/platforms/GitHub/hooks/useGitHubAttachCopySnippetButton.ts +++ b/src/platforms/GitHub/hooks/useGitHubAttachCopySnippetButton.ts @@ -1,17 +1,16 @@ import { platform } from 'platforms' import * as React from 'react' -import { useOnPJAXDone } from 'utils/hooks/usePJAX' +import { useAfterRedirect } from 'utils/hooks/useFastRedirect' import * as DOMHelper from '../DOMHelper' import { GitHub } from '../index' export function useGitHubAttachCopySnippetButton(copySnippetButton: boolean) { const attachCopySnippetButton = React.useCallback( function attachCopySnippetButton() { - if (platform !== GitHub) return - if (copySnippetButton) return DOMHelper.attachCopySnippet() || undefined // for the sake of react effect + if (platform === GitHub && copySnippetButton) DOMHelper.attachCopySnippet() }, [copySnippetButton], ) - React.useEffect(attachCopySnippetButton, [copySnippetButton]) - useOnPJAXDone(attachCopySnippetButton) + React.useEffect(attachCopySnippetButton, [attachCopySnippetButton]) + useAfterRedirect(attachCopySnippetButton) } diff --git a/src/platforms/GitHub/hooks/useGitHubCodeFold.tsx b/src/platforms/GitHub/hooks/useGitHubCodeFold.tsx index 83c49db..665e579 100644 --- a/src/platforms/GitHub/hooks/useGitHubCodeFold.tsx +++ b/src/platforms/GitHub/hooks/useGitHubCodeFold.tsx @@ -1,6 +1,6 @@ import { platform } from 'platforms' import { useCallback, useEffect } from 'react' -import { useOnPJAXDone } from 'utils/hooks/usePJAX' +import { useAfterRedirect } from 'utils/hooks/useFastRedirect' import { GitHub } from '..' const theCSSClassMark = 'gitako-code-fold-attached' @@ -13,6 +13,10 @@ const selectorOfLineContent = `.blob-code` const theCSSClassForToggleElementOnActive = 'gitako-code-fold-active' function init() { + document.querySelectorAll(tableSelector).forEach(processTable) +} + +function processTable(table: Element) { type LineNumber = number // alias const blocks: LineNumber[] = [] // startLine -> exclusiveEndLine /** @@ -34,8 +38,7 @@ function init() { * 5 */ - const table = document.querySelector(tableSelector) - const lineElements = Array.from(document.querySelectorAll([tableSelector, 'tr'].join(' '))) + const lineElements = Array.from(table.querySelectorAll('tr')) if (!table || !lineElements.length) return if (table.classList.contains(theCSSClassMark)) { if (table.classList.contains(theCSSClassMarkWhenDisabled)) { @@ -51,10 +54,11 @@ function init() { type Level = number // measured by leading whitespace amount const stack: [Level, LineNumber][] = [] - function trySeal(lineNumber: number, level: number) { + const trySeal = (lineNumber: number, level: number) => { let ignoredTheHighestLevelItem = false while (stack.length) { - const top = stack.pop()! // safe + const top = stack.pop() + if (top === undefined) throw new Error() const [$LineNumber, $level] = top if ($level < level) { @@ -123,7 +127,7 @@ function init() { if (e.target.classList.contains(theCSSClassForToggleElement)) { const tr = e.target.parentElement?.parentElement if (tr) { - toggleLine(lineElements.indexOf(tr)) + toggleLine(lineElements.indexOf(tr as HTMLTableRowElement)) e.stopPropagation() } } @@ -132,8 +136,9 @@ function init() { } function cancelToggleFeature() { - const table = document.querySelector(tableSelector) - table?.classList.add(theCSSClassMarkWhenDisabled) + document + .querySelectorAll(tableSelector) + .forEach(table => table.classList.add(theCSSClassMarkWhenDisabled)) } function getTextLevel(text: string) { @@ -159,5 +164,5 @@ export function useGitHubCodeFold(active: boolean) { } }, [active]) useEffect(effect, [effect]) - useOnPJAXDone(effect) + useAfterRedirect(effect) } diff --git a/src/platforms/GitHub/index.ts b/src/platforms/GitHub/index.ts index e21855c..298e798 100644 --- a/src/platforms/GitHub/index.ts +++ b/src/platforms/GitHub/index.ts @@ -1,19 +1,21 @@ import { useConfigs } from 'containers/ConfigsContext' import { GITHUB_OAUTH } from 'env' import { Base64 } from 'js-base64' -import { run } from 'utils/general' +import { configRef } from 'utils/config/helper' +import { $ } from 'utils/DOMHelper' import { resolveGitModules } from 'utils/gitSubmodule' import { sortFoldersToFront } from 'utils/treeParser' import * as API from './API' import * as DOMHelper from './DOMHelper' +import { getCommitTreeData } from './getCommitTreeData' +import { getPullRequestTreeData } from './getPullRequestTreeData' import { useEnterpriseStatBarStyleFix } from './hooks/useEnterpriseStatBarStyleFix' import { useGitHubAttachCopyFileButton } from './hooks/useGitHubAttachCopyFileButton' import { useGitHubAttachCopySnippetButton } from './hooks/useGitHubAttachCopySnippetButton' import { useGitHubCodeFold } from './hooks/useGitHubCodeFold' import * as URLHelper from './URLHelper' -export { useGitHubCodeFold } from './hooks/useGitHubCodeFold' -function processTree(tree: TreeNode[]): TreeNode { +export function processTree(tree: TreeNode[]): TreeNode { // nodes are created from items and put onto tree const pathToItem = new Map() tree.forEach(item => pathToItem.set(item.path, item)) @@ -74,45 +76,38 @@ function getUrlForRedirect( // Modern browsers have great support for handling unsafe URL, // It may be possible to sanitize path with // `path => path.includes('#') ? path.replace(/#/g, '%23') : '...' - return `https://${window.location.host}/${userName}/${repoName}/${type}/${branchName}/${path + return `${window.location.origin}/${userName}/${repoName}/${type}/${branchName}/${path .split('/') .map(encodeURIComponent) .join('/')}` } export function isEnterprise() { - return !window.location.host.endsWith('github.com') -} - -function resolvePageScope(defaultBranchName?: string) { - const parsed = URLHelper.parse() - switch (parsed.type) { - case 'blob': - case 'tree': { - // handle URLs like {user}/{repo}/{'tree'|'blob'}/{sha|branch}, issue #131 - const branchName = DOMHelper.getCurrentBranch() - if (branchName && branchName !== defaultBranchName) return `branch-${branchName}` - break - } - case 'tags': - return 'tags' - case 'releases': - return 'releases' - case 'pull': - const pullId = URLHelper.isInPullPage() - if (pullId) return `pull-${pullId}` - } - return 'general' + return ( + (window.location.host !== 'github.com' && + /** + * + * Enterprise + * + */ + $( + 'a.Header-link[aria-label="Homepage Enterprise"]', + e => e.textContent?.trim() === 'Enterprise', + )) || + false + ) } const pathSHAMap = new Map() -// Try lookup PJAX containers, #js-repo-pjax-container could exist while #repo-content-pjax-container does not. -const pjaxContainerSelector = ['#repo-content-pjax-container', '#js-repo-pjax-container'].find( - selector => document.querySelector(selector), -) - export const GitHub: Platform = { + shouldActivate() { + return ( + window.location.host === 'github.com' || + // + !!document.querySelector('link[rel="fluid-icon"][title="GitHub"]') + ) + }, isEnterprise, resolvePartialMetaData() { if (!DOMHelper.isInRepoPage()) { @@ -131,6 +126,8 @@ export const GitHub: Platform = { let branchName if (URLHelper.isInPullPage()) { branchName = DOMHelper.getIssueTitle() + } else if (URLHelper.isInCommitPage()) { + branchName = DOMHelper.getCommitTitle() || metaFromURL.path[0] } else if ( DOMHelper.isInCodePage() && !['releases', 'tags'].includes(type || '') // resolve sentry issue #-CK @@ -150,29 +147,39 @@ export const GitHub: Platform = { return (await API.getRepoMeta(userName, repoName, accessToken)).default_branch }, resolveUrlFromMetaData({ userName, repoName, branchName }) { - const repoUrl = `https://${window.location.host}/${userName}/${repoName}` - const userUrl = `https://${window.location.host}/${userName}` + const repoUrl = `${window.location.origin}/${userName}/${repoName}` + const userUrl = `${window.location.origin}/${userName}` const pullId = URLHelper.isInPullPage() - const branchUrl = pullId ? `${repoUrl}/pull/${pullId}` : `${repoUrl}/tree/${branchName}` + const commitId = URLHelper.isInCommitPage() + const branchUrl = pullId + ? `${repoUrl}/pull/${pullId}` + : commitId && URLHelper.isPossiblyCommitSHA(commitId) + ? `${repoUrl}/tree/${commitId}` + : `${repoUrl}/tree/${branchName}` return { repoUrl, userUrl, branchUrl, } }, - async getTreeData(metaData, path = '/', recursive, accessToken) { + getTreeData(metaData, path = '/', recursive, accessToken) { const pullId = URLHelper.isInPullPage() - if (pullId) { - return await getPullRequestTreeData(metaData, pullId, accessToken) - } + if (pullId) return getPullRequestTreeData(metaData, pullId, accessToken) - return await getRepositoryTreeData(metaData, path, recursive, accessToken) + const commitId = URLHelper.isInCommitPage() + if (commitId) return getCommitTreeData(metaData, commitId, accessToken) + + return getRepositoryTreeData(metaData, path, recursive, accessToken) }, - shouldShow() { - return Boolean(DOMHelper.isInCodePage() || (URLHelper.isInPullPage() && !DOMHelper.isNativePRFileTreeShown())) + shouldExpandSideBar() { + return Boolean( + DOMHelper.isInCodePage() || + URLHelper.isInCommitPage() || + (URLHelper.isInPullPage() && !DOMHelper.isNativePRFileTreeShown()), + ) }, shouldExpandAll() { - return Boolean(URLHelper.isInPullPage()) + return Boolean(URLHelper.isInPullPage() || URLHelper.isInCommitPage()) }, getCurrentPath(branchName) { const pathFromURL = URLHelper.parse().path.join('/') @@ -196,7 +203,7 @@ export const GitHub: Platform = { scope: 'repo', redirect_uri: window.location.href, }) - return `https://github.com/login/oauth/authorize?` + params.toString() + return `https://github.com/login/oauth/authorize?${params}` }, usePlatformHooks() { const { copyFileButton, copySnippetButton, codeFolding } = useConfigs().value @@ -205,17 +212,26 @@ export const GitHub: Platform = { useGitHubCodeFold(codeFolding) useEnterpriseStatBarStyleFix() }, - delegatePJAXProps(options) { - if (!options?.node || options.node.type === 'blob') + delegateFastRedirectAnchorProps: options => { + if (configRef.pjaxMode === 'native' && (!options?.node || options.node.type === 'blob')) { + const pjaxContainerSelector = 'main' + const turboContainerId = 'repo-content-turbo-frame' + return { 'data-pjax': pjaxContainerSelector, + 'data-turbo-frame': + URLHelper.isInPullPage() || URLHelper.isInCommitPage() ? undefined : turboContainerId, onClick() { /* Overwriting default onClick */ }, } + } }, - loadWithPJAX(url, element) { - element.click() + loadWithFastRedirect: (url, element) => { + if (configRef.pjaxMode === 'native') { + element.click() + return true + } }, } @@ -255,7 +271,7 @@ async function getRepositoryTreeData( treeData.tree.map(item => ({ path: item.path || '', type: item.type || 'blob', - name: item.path?.replace(/^.*\//, '') || '', + name: item.path?.split('/').pop() || '', url: item.url && item.type && item.path ? getUrlForRedirect(userName, repoName, branchName, item.type, item.path) @@ -278,88 +294,3 @@ async function getRepositoryTreeData( return { root, defer: treeData.truncated } } - -async function getPullRequestTreeData( - { userName, repoName }: Pick, - pullId: string, - accessToken?: string, -) { - // https://developer.github.com/v3/pulls/#list-pull-requests-files - const GITHUB_API_RESPONSE_LENGTH_LIMIT = 3000 - const GITHUB_API_PAGED_RESPONSE_LENGTH_LIMIT = 30 - const MAX_PAGE = Math.ceil( - GITHUB_API_RESPONSE_LENGTH_LIMIT / GITHUB_API_PAGED_RESPONSE_LENGTH_LIMIT, - ) - let page = 1 - const [pullData, treeData, commentData] = await Promise.all([ - API.getPullData(userName, repoName, pullId, accessToken), - API.getPullTreeData(userName, repoName, pullId, page, accessToken), - API.getPullComments(userName, repoName, pullId, accessToken), - ]) - - const count = pullData.changed_files - if (treeData.length < count) { - const restPages = [] - while (page * GITHUB_API_PAGED_RESPONSE_LENGTH_LIMIT < count) { - restPages.push(++page) - } - if (page > MAX_PAGE) { - // TODO: hint - } - const moreFiles = await Promise.all( - restPages.map(page => API.getPullTreeData(userName, repoName, pullId, page, accessToken)), - ) - treeData.push(...([] as GitHubAPI.PullTreeData).concat(...moreFiles)) - } - - const docs = await API.getPullPageDocuments(userName, repoName, pullId) - // query all elements at once to make getFileElementHash run faster - const elementsHavePath = docs.map(doc => doc.querySelectorAll(`[data-path]`)) - const getFileElementHash = (path: string) => { - let e - for (const group of elementsHavePath) { - for (let i = 0; i < group.length; i++) { - const element = group[i] - if (element.getAttribute('data-path')?.startsWith(path)) { - e = element - break - } - } - if (e) break - } - return e?.parentElement?.id - } - - const urlMainPart = `https://${window.location.host}/${userName}/${repoName}/pull/${pullId}/files${window.location.search}` - const nodes: TreeNode[] = treeData.map( - ({ filename, sha, additions, deletions, changes, status }) => ({ - path: filename || '', - type: 'blob', - name: filename?.replace(/^.*\//, '') || '', - url: `${urlMainPart}${formatHash(getFileElementHash(filename))}`, - sha: sha, - comments: run(() => { - const comments = commentData?.filter(comment => filename === comment.path) - if (comments?.length) - return { - active: comments.filter(comment => comment.position !== null).length, - resolved: comments.filter(comment => comment.position === null).length, - } - }), - diff: { - status, - additions, - deletions, - changes, - }, - }), - ) - - const root = processTree(nodes) - return { root } -} - -function formatHash(hash?: string) { - if (hash) return '#' + hash - return '' -} diff --git a/src/platforms/GitHub/utils.ts b/src/platforms/GitHub/utils.ts new file mode 100644 index 0000000..7fdb54b --- /dev/null +++ b/src/platforms/GitHub/utils.ts @@ -0,0 +1,131 @@ +/** + * Resolved from response header `link` + * + * Example: + * ; rel="next", ; rel="last" + * + * `rel` existence + * + * rel | first page | middle page | last page + * next | ✔ | ✔ | + * last | ✔ | ✔ | + * prev | | ✔ | ✔ + * first| | ✔ | ✔ + * + * If there is only 1 page, no `link` header is returned. + */ +type Rels = { + next?: string + last?: string + prev?: string + first?: string +} + +export function resolveHeaderLink(raw: string) { + const rels: Rels = {} + raw + .split(',') + .map(part => part.match(/<(.*?)>; *rel="(.*?)"/)) + .filter((link: RegExpMatchArray | null): link is RegExpMatchArray => !!link) + .forEach(([, url, rel]) => { + // It's 2022, is there a smarter way to do this in TS? + switch (rel) { + case 'next': + rels.next = url + break + case 'last': + rels.last = url + break + case 'prev': + rels.prev = url + break + case 'first': + rels.first = url + break + } + }) + + if (rels.next && rels.last && !rels.prev && !rels.first) { + // first page + return { + next: rels.next, + last: rels.last, + position: 'first' as const, + } + } else if (rels.next && rels.last && rels.prev && rels.first) { + // middle page + return { + next: rels.next, + last: rels.last, + prev: rels.prev, + first: rels.first, + position: 'middle' as const, + } + } else if (!rels.next && !rels.last && rels.prev && rels.first) { + // last page + return { + prev: rels.prev, + first: rels.first, + position: 'last' as const, + } + } else { + // unexpected link header content + return + } +} + +export async function getDOM(url: string) { + return new DOMParser().parseFromString(await (await fetch(url)).text(), 'text/html') +} + +export async function continuousLoadPages(doc: Document, onReceivePage?: (doc: Document) => void) { + /** + * + */ + const fragmentSelectors = [ + 'include-fragment[data-targets="diff-file-filter.progressiveLoaders"]', + '.js-diff-progressive-container include-fragment[src]', // legacy support + ] + const documents: Document[] = [doc] + // eslint-disable-next-line no-constant-condition + while (true) { + const fragment = doc.querySelector(fragmentSelectors.join()) as HTMLElement + if (!fragment) break + const src = fragment.getAttribute('src') + if (!src) break + // Using `src` directly below would fail in Firefox if the src is an absolute path + doc = await getDOM(new URL(src, window.location.origin).href) + documents.push(doc) + onReceivePage?.(doc) + } + return documents +} + +export function getCommentsMap(commentData: GitHubAPI.PullComments) { + const commentsMap = new Map< + string, + { + active: number + resolved: number + } + >() + commentData.forEach(comment => { + let stat = commentsMap.get(comment.path) + if (!stat) { + stat = { + active: 0, + resolved: 0, + } + commentsMap.set(comment.path, stat) + } + + if (comment.position === null) stat.active++ + else stat.resolved++ + }) + return commentsMap +} diff --git a/src/platforms/Gitea/API.ts b/src/platforms/Gitea/API.ts index c566d33..88b73e7 100644 --- a/src/platforms/Gitea/API.ts +++ b/src/platforms/Gitea/API.ts @@ -1,12 +1,14 @@ import { raiseError } from 'analytics' import { errors } from 'platforms' +import { is } from 'utils/is' +import { gitakoServiceHost } from 'utils/networkService' -function isEmptyProject(content: any /* safe any */) { - return content?.['message'] === 'Git Repository is empty.' +function isEmptyProject(content: JSONValue) { + return is.JSON.object(content) && content?.['message'] === 'Git Repository is empty.' } -function isBlockedProject(content: any /* safe any */) { - return content?.['message'] === 'Repository access blocked' +function isBlockedProject(content: JSONValue) { + return is.JSON.object(content) && content?.['message'] === 'Repository access blocked' } async function request( @@ -17,9 +19,9 @@ async function request( accessToken?: string } = {}, ) { - const headers = {} as HeadersInit & { + const headers: HeadersInit & { Authorization?: string - } + } = {} if (accessToken) { headers.Authorization = `token ${accessToken}` } @@ -57,7 +59,7 @@ async function request( } } -export const API_ENDPOINT = `${window.location.protocol}//${window.location.host}/api/v1` +export const API_ENDPOINT = `${window.location.origin}/api/v1` export async function getRepoMeta( userName: string, @@ -77,8 +79,7 @@ export async function getTreeData( ): Promise { const search = new URLSearchParams() if (recursive) search.set('recursive', '1') - const url = - `${API_ENDPOINT}/repos/${userName}/${repoName}/git/trees/${branchName}?` + search + const url = `${API_ENDPOINT}/repos/${userName}/${repoName}/git/trees/${branchName}?${search}` return await request(url, { accessToken }) } @@ -93,15 +94,15 @@ export async function getBlobData( } export async function OAuth(code: string): Promise { - const endpoint = `https://gitako.now.sh/oauth/gitea?` - const res = await fetch(endpoint + new URLSearchParams({ code }).toString(), { - method: 'post', - }) - - if (res.ok) { - const body = await res.json() - const accessToken = body?.accessToken - if (typeof accessToken === 'string') return accessToken - } - return null + const endpoint = `https://${gitakoServiceHost}/oauth/gitea?${new URLSearchParams({ code })}` + const res = await fetch(endpoint, { + method: 'post', + }) + + if (res.ok) { + const body = await res.json() + const accessToken = body?.accessToken + if (typeof accessToken === 'string') return accessToken + } + return null } diff --git a/src/platforms/Gitea/URLHelper.ts b/src/platforms/Gitea/URLHelper.ts index a68b81f..37f4647 100644 --- a/src/platforms/Gitea/URLHelper.ts +++ b/src/platforms/Gitea/URLHelper.ts @@ -1,15 +1,15 @@ import { raiseError } from 'analytics' +import { sanitizedLocation } from 'utils/URLHelper' export function parse(): Partial & { path: string[] } { - const { pathname } = window.location - let [ + const [ , // ignore content before the first '/' userName, repoName, type, ...path // should be [...branchName.split('/'), ...filePath.split('/')] - ] = unescape(decodeURIComponent(pathname)).split('/') + ] = unescape(decodeURIComponent(sanitizedLocation.pathname)).split('/') return { userName, repoName, @@ -67,4 +67,4 @@ export function getCurrentPath(branchName = '') { return path.map(decodeURIComponent) } return [] -} \ No newline at end of file +} diff --git a/src/platforms/Gitea/index.ts b/src/platforms/Gitea/index.ts index 2052189..5b80c41 100644 --- a/src/platforms/Gitea/index.ts +++ b/src/platforms/Gitea/index.ts @@ -1,3 +1,4 @@ +import { Base64 } from 'js-base64' import { resolveGitModules } from 'utils/gitSubmodule' import { useProgressBar } from 'utils/hooks/useProgressBar' import { sortFoldersToFront } from 'utils/treeParser' @@ -60,15 +61,13 @@ function getUrlForRedirect( userName: string, repoName: string, branchName: string, - type = 'blob', + type = 'blob', // eslint-disable-line @typescript-eslint/no-unused-vars path = '', ) { // Modern browsers have great support for handling unsafe URL, // It may be possible to sanitize path with // `path => path.includes('#') ? path.replace(/#/g, '%23') : '...' - return `${window.location.protocol}//${ - window.location.host - }/${userName}/${repoName}/src/branch/${branchName}/${path + return `${window.location.origin}/${userName}/${repoName}/src/branch/${branchName}/${path .split('/') .map(encodeURIComponent) .join('/')}` @@ -107,8 +106,8 @@ export const Gitea: Platform = { return data.default_branch }, resolveUrlFromMetaData({ userName, repoName, branchName }) { - const repoUrl = `${window.location.protocol}//${window.location.host}/${userName}/${repoName}` - const userUrl = `${window.location.protocol}//${window.location.host}/${userName}` + const repoUrl = `${window.location.origin}/${userName}/${repoName}` + const userUrl = `${window.location.origin}/${userName}` const branchUrl = `${repoUrl}/src/branch/${branchName}` return { repoUrl, @@ -158,7 +157,7 @@ export const Gitea: Platform = { return { root } }, - shouldShow() { + shouldExpandSideBar() { return DOMHelper.isInCodePage() }, getCurrentPath(branchName) { @@ -168,7 +167,7 @@ export const Gitea: Platform = { return API.OAuth(code) }, getOAuthLink() { - return `${window.location.protocol}//${window.location.host}/api/v1/user/applications/oauth2` + return `${window.location.origin}/api/v1/user/applications/oauth2` }, usePlatformHooks() { useProgressBar() diff --git a/src/platforms/Gitee/API.ts b/src/platforms/Gitee/API.ts index ac9d030..1af4841 100644 --- a/src/platforms/Gitee/API.ts +++ b/src/platforms/Gitee/API.ts @@ -1,12 +1,14 @@ import { raiseError } from 'analytics' import { errors } from 'platforms' +import { is } from 'utils/is' +import { gitakoServiceHost } from 'utils/networkService' -function isEmptyProject(content: any /* safe any */) { - return content?.['message'] === 'Git Repository is empty.' +function isEmptyProject(content: JSONValue) { + return is.JSON.object(content) && content?.['message'] === 'Git Repository is empty.' } -function isBlockedProject(content: any /* safe any */) { - return content?.['message'] === 'Repository access blocked' +function isBlockedProject(content: JSONValue) { + return is.JSON.object(content) && content?.['message'] === 'Repository access blocked' } async function request( @@ -89,8 +91,8 @@ export async function getBlobData( } export async function OAuth(code: string): Promise { - const endpoint = 'https://gitako.now.sh/oauth/gitee?' - const res = await fetch(endpoint + new URLSearchParams({ code }).toString(), { + const endpoint = `https://${gitakoServiceHost}/oauth/gitee?${new URLSearchParams({ code })}` + const res = await fetch(endpoint, { method: 'post', }) diff --git a/src/platforms/Gitee/DOMHelper.ts b/src/platforms/Gitee/DOMHelper.ts index bd1a50f..144837e 100644 --- a/src/platforms/Gitee/DOMHelper.ts +++ b/src/platforms/Gitee/DOMHelper.ts @@ -1,7 +1,7 @@ import { raiseError } from 'analytics' import { Clippy, ClippyClassName } from 'components/Clippy' import * as React from 'react' -import { $ } from 'utils/DOMHelper' +import { $, formatClass } from 'utils/DOMHelper' import { renderReact } from 'utils/general' export function isInRepoPage() { @@ -70,7 +70,7 @@ export function attachCopySnippet() { readmeElement.addEventListener('mouseover', mouseOverCallback) return () => { readmeElement.removeEventListener('mouseover', mouseOverCallback) - const buttons = document.querySelectorAll(`.${ClippyClassName}`) + const buttons = document.querySelectorAll(formatClass(ClippyClassName)) buttons.forEach(button => { button.parentElement?.removeChild(button) }) diff --git a/src/platforms/Gitee/URLHelper.ts b/src/platforms/Gitee/URLHelper.ts index 0a539da..37f4647 100644 --- a/src/platforms/Gitee/URLHelper.ts +++ b/src/platforms/Gitee/URLHelper.ts @@ -1,15 +1,15 @@ import { raiseError } from 'analytics' +import { sanitizedLocation } from 'utils/URLHelper' export function parse(): Partial & { path: string[] } { - const { pathname } = window.location - let [ + const [ , // ignore content before the first '/' userName, repoName, type, ...path // should be [...branchName.split('/'), ...filePath.split('/')] - ] = unescape(decodeURIComponent(pathname)).split('/') + ] = unescape(decodeURIComponent(sanitizedLocation.pathname)).split('/') return { userName, repoName, diff --git a/src/platforms/Gitee/components.tsx b/src/platforms/Gitee/components.tsx deleted file mode 100644 index 945f11d..0000000 --- a/src/platforms/Gitee/components.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { GITEE_OAUTH } from 'env' -import * as React from 'react' - -export function GiteeAccessDeniedError({ hasToken }: { hasToken: boolean }) { - return ( -
-
Access Denied
- {hasToken ? ( - <> -

- Current access token is either invalid or not granted with permissions to access this - project. -

-

- You can grant or request access{' '} - - here - {' '} - if you setup Gitako with OAuth. -

- - ) : ( -

- Gitako needs access token to read this project due to{' '} - - GitHub rate limiting - {' '} - and{' '} - - auth needs - - . Please setup access token in the settings panel below. -

- )} -
- ) -} diff --git a/src/platforms/Gitee/index.ts b/src/platforms/Gitee/index.ts index 66e519c..0409b48 100644 --- a/src/platforms/Gitee/index.ts +++ b/src/platforms/Gitee/index.ts @@ -1,9 +1,11 @@ import { GITEE_OAUTH } from 'env' +import { Base64 } from 'js-base64' import { platform } from 'platforms' import * as React from 'react' import { resolveGitModules } from 'utils/gitSubmodule' -import { useOnPJAXDone } from 'utils/hooks/usePJAX' +import { useAfterRedirect } from 'utils/hooks/useFastRedirect' import { useProgressBar } from 'utils/hooks/useProgressBar' +import { gitakoServiceHost } from 'utils/networkService' import { sortFoldersToFront } from 'utils/treeParser' import * as API from './API' import * as DOMHelper from './DOMHelper' @@ -67,7 +69,7 @@ function getUrlForRedirect( type = 'blob', path = '', ) { - return `https://gitee.com/${userName}/${repoName}/${type}/${branchName}/${path}` + return `${window.location.origin}/${userName}/${repoName}/${type}/${branchName}/${path}` } export const Gitee: Platform = { @@ -104,8 +106,8 @@ export const Gitee: Platform = { return data.default_branch }, resolveUrlFromMetaData({ userName, repoName, branchName }) { - const repoUrl = `https://${window.location.host}/${userName}/${repoName}` - const userUrl = `https://${window.location.host}/${userName}` + const repoUrl = `${window.location.origin}/${userName}/${repoName}` + const userUrl = `${window.location.origin}/${userName}` const branchUrl = `${repoUrl}/tree/${branchName}` return { repoUrl, @@ -155,7 +157,7 @@ export const Gitee: Platform = { return { root } }, - shouldShow() { + shouldExpandSideBar() { return DOMHelper.isInCodePage() }, getCurrentPath(branchName) { @@ -166,11 +168,11 @@ export const Gitee: Platform = { client_id: GITEE_OAUTH.clientId, scope: 'projects', response_type: 'code', - redirect_uri: - 'https://gitako.now.sh/redirect/?' + - new URLSearchParams({ redirect: window.location.href }).toString(), + redirect_uri: `https://${gitakoServiceHost}/redirect/?${new URLSearchParams({ + redirect: window.location.href, + })}`, }) - return `https://gitee.com/oauth/authorize?` + params.toString() + return `https://gitee.com/oauth/authorize?${params}` }, setOAuth(code) { return API.OAuth(code) @@ -183,11 +185,10 @@ export const Gitee: Platform = { export function useGiteeAttachCopySnippetButton(copySnippetButton: boolean) { const attachCopySnippetButton = React.useCallback( function attachCopySnippetButton() { - if (platform !== Gitee) return - if (copySnippetButton) return DOMHelper.attachCopySnippet() || undefined // for the sake of react effect + if (platform === Gitee && copySnippetButton) DOMHelper.attachCopySnippet() }, [copySnippetButton], ) - React.useEffect(attachCopySnippetButton, [copySnippetButton]) - useOnPJAXDone(attachCopySnippetButton) + React.useEffect(attachCopySnippetButton, [attachCopySnippetButton]) + useAfterRedirect(attachCopySnippetButton) } diff --git a/src/platforms/dummyPlatformForTypeSafety.ts b/src/platforms/dummyPlatformForTypeSafety.ts index 9216714..b02ea46 100644 --- a/src/platforms/dummyPlatformForTypeSafety.ts +++ b/src/platforms/dummyPlatformForTypeSafety.ts @@ -8,7 +8,7 @@ export const dummyPlatformForTypeSafety: Platform = { getDefaultBranchName: dummyPlatformMethod, resolveUrlFromMetaData: dummyPlatformMethod, getTreeData: dummyPlatformMethod, - shouldShow() { + shouldExpandSideBar() { return false }, getCurrentPath: dummyPlatformMethod, @@ -16,6 +16,7 @@ export const dummyPlatformForTypeSafety: Platform = { getOAuthLink: dummyPlatformMethod, } +// eslint-disable-next-line @typescript-eslint/no-explicit-any function dummyPlatformMethod(): any { throw new Error(`Do not call dummy platform methods`) } diff --git a/src/platforms/index.ts b/src/platforms/index.ts index b5ac56f..cc85789 100644 --- a/src/platforms/index.ts +++ b/src/platforms/index.ts @@ -1,26 +1,28 @@ +import { forOf } from 'utils/general' import { dummyPlatformForTypeSafety } from './dummyPlatformForTypeSafety' import { Gitea } from './Gitea' import { Gitee } from './Gitee' import { GitHub } from './GitHub' const platforms = { - GitHub: GitHub, - Gitee: Gitee, - Gitea: Gitea, + GitHub, + Gitee, + Gitea, } function resolvePlatform() { - for (const platform of Object.values(platforms)) { - if (platform.resolvePartialMetaData()) return platform - } - return dummyPlatformForTypeSafety + return ( + forOf(platforms, (platformName, platform) => { + const { shouldActivate = () => !!platform.resolvePartialMetaData() } = platform + if (shouldActivate()) return platform + }) || dummyPlatformForTypeSafety + ) } function getPlatformName() { - const keys = Object.keys(platforms) as (keyof typeof platforms)[] - for (const key of keys) { - if (platform === platforms[key]) return key - } + return forOf(platforms, (name, $platform) => { + if (platform === $platform) return name + }) } export const platform = resolvePlatform() diff --git a/src/platforms/platform.d.ts b/src/platforms/platform.d.ts index e555d7a..e47cac0 100644 --- a/src/platforms/platform.d.ts +++ b/src/platforms/platform.d.ts @@ -1,4 +1,5 @@ type Platform = { + shouldActivate?(): boolean isEnterprise(): boolean // branch name might not be available when resolving from DOM and URL resolvePartialMetaData(): PartialMetaData | null @@ -18,14 +19,14 @@ type Platform = { recursive?: boolean, accessToken?: string, ): Promise<{ root: TreeNode; defer?: boolean }> - shouldShow(): boolean + shouldExpandSideBar(): boolean shouldExpandAll?(): boolean getCurrentPath(branchName: string): string[] | null setOAuth(code: string): Promise getOAuthLink(): string - delegatePJAXProps?(options?: { - node?: TreeNode - }): void | (React.DOMAttributes & Record) // support data-* attributes - loadWithPJAX?(url: string, element: HTMLElement): void + delegateFastRedirectAnchorProps?(options?: { node?: TreeNode }): + | (React.DOMAttributes & Record) // support data-* attributes + | void + loadWithFastRedirect?(url: string, element: HTMLElement): boolean | void usePlatformHooks?(): void } diff --git a/src/react-override.d.ts b/src/react-override.d.ts new file mode 100644 index 0000000..9e91821 --- /dev/null +++ b/src/react-override.d.ts @@ -0,0 +1,11 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +// Patch the removed `children` prop +declare namespace React { + interface FunctionComponent

{ + (props: PropsWithChildren

, context?: any): ReactElement | null + propTypes?: WeakValidationMap

| undefined + contextTypes?: ValidationMap | undefined + defaultProps?: Partial

| undefined + displayName?: string | undefined + } +} diff --git a/src/styles/index.scss b/src/styles/index.scss index 6499a10..194c608 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -24,9 +24,9 @@ $minimal-z-index: max( } @mixin interactive-border( - $default: var(--gitako-btn-border), - $hover: var(--gitako-btn-hover-border), - $active: var(--gitako-btn-active-border), + $default: var(--color-btn-border), + $hover: var(--color-btn-hover-border), + $active: var(--color-btn-active-border), $focus: $hover ) { border: 1px solid $default; @@ -42,9 +42,9 @@ $minimal-z-index: max( } @mixin interactive-background( - $default: var(--gitako-btn-bg), - $hover: var(--gitako-btn-hover-bg), - $active: var(--gitako-btn-active-bg), + $default: var(--color-btn-bg), + $hover: var(--color-btn-hover-bg), + $active: var(--color-btn-active-bg), $focus: $hover ) { background-color: $default; @@ -91,15 +91,15 @@ $minimal-z-index: max( display: block; cursor: pointer; user-select: none; - -webkit-mask-image: url('~@primer/octicons/build/svg/' + $icon-name + '.svg?inline'); - mask-image: url('~@primer/octicons/build/svg/' + $icon-name + '.svg?inline'); + -webkit-mask-image: url('~@primer/octicons-react/build/svg/' + $icon-name + '.svg?inline'); + mask-image: url('~@primer/octicons-react/build/svg/' + $icon-name + '.svg?inline'); -webkit-mask-size: contain; mask-size: contain; -webkit-mask-position: center; mask-position: center; } -.#{$name}-ready { +[data-#{$name}-ready='true'] { // github // code folding start .blob-wrapper table .blob-num { @@ -129,21 +129,21 @@ $minimal-z-index: max( align-items: center; &::before { - width: 10px; + width: 16px; height: 20px; transition: 0.25s ease; - @include pseudo-primer-icon('chevron-down'); + @include pseudo-primer-icon('chevron-down-16'); } @include interactive-background-on-before( - var(--gitako-fg-subtle), - var(--gitako-fg-default), - var(--gitako-fg-muted) + var(--color-fg-subtle), + var(--color-fg-default), + var(--color-fg-muted) ); } &.gitako-code-fold-active { - background-color: var(--gitako-neutral-muted); + background-color: var(--color-neutral-muted); .gitako-code-fold-handler { &::before { @@ -151,14 +151,14 @@ $minimal-z-index: max( } @include interactive-background-on-before( - var(--gitako-fg-muted), - var(--gitako-fg-default), - var(--gitako-fg-subtle) + var(--color-fg-muted), + var(--color-fg-default), + var(--color-fg-subtle) ); } .blob-code::after { - color: var(--gitako-fg-muted); + color: var(--color-fg-muted); content: '⋯'; margin: 0.1em 0.2em 0px; } @@ -187,7 +187,7 @@ $minimal-z-index: max( .clippy { width: 32px; height: 32px; - border: 1px solid var(--gitako-border-default); + border: 1px solid var(--color-border-default); border-radius: 4px; @include interactive-background; @@ -195,7 +195,7 @@ $minimal-z-index: max( width: 100%; height: 100%; display: block; - background-image: url('~@primer/octicons-react/build/svg/clippy-16.svg?inline'); + background-image: url('~@primer/octicons-react/build/svg/copy-16.svg?inline'); background-position: center; background-repeat: no-repeat; &.success { @@ -218,19 +218,32 @@ $minimal-z-index: max( } padding-top: 0; + + .#{$name}-side-bar { + h1, + h2, + h3, + h4, + h5, + h6 { + margin: 0; + } + } } } -.with-gitako-spacing { - @media screen { - margin-left: var(--gitako-width); - } +html[data-with-gitako-spacing='true'] { + body { + @media screen { + margin-left: var(--gitako-width); + } - // gitee - &.git-project { - width: auto; // shrink width - .site-content { - min-width: 1040px; + // gitee + &.git-project { + width: auto; // shrink width + .site-content { + min-width: 1040px; + } } } } @@ -262,16 +275,29 @@ $minimal-z-index: max( display: none; } +@mixin flex($justify: center, $align: center, $inline: true) { + @if $inline { + display: inline-flex; + } @else { + display: flex; + } + + @if $justify { + justify-content: $justify; + } + @if $align { + align-items: $align; + } +} + @mixin flex-center { - display: inline-flex; - justify-content: center; - align-items: center; + @include flex(); } @mixin icon-button( $default: transparent, - $hover: var(--gitako-btn-hover-bg), - $active: var(--gitako-btn-focus-bg), + $hover: var(--color-btn-hover-bg), + $active: var(--color-btn-focus-bg), $focus: $hover ) { @include flex-center(); @@ -282,12 +308,8 @@ $minimal-z-index: max( @include interactive-background($default, $hover, $active, $focus); } -// Why does not TextInput get theme properly? -@mixin input { - color: var(--gitako-fg-default); - background-color: var(--gitako-canvas-default); - border-color: var(--gitako-border-default); - box-shadow: var(--gitako-primer-shadow-inset); +##{$name}-root { + @include enableThemes; } .#{$name}-toggle-show-button-wrapper { @@ -317,39 +339,19 @@ $minimal-z-index: max( cursor: not-allowed; } - .octoface-icon { - @include flex-center(); - - width: 32px; - height: 32px; - padding: 4px; - border-radius: 6px; - @include interactive-frame; - color: var(--gitako-fg-default); - &:active { - color: var(--gitako-fg-subtle); - } - transition: all ease 0.3s; - font-size: 16px; - transform: translateX(8px); - &:active, - &:hover { - transform: translateX(12px); - } - } .tentacle { width: 40px; height: 40px; object-fit: contain; transition: all ease 0.4s; transform: translateX(-8px); - filter: drop-shadow(0 0 1px var(--gitako-primer-canvas-backdrop)); + filter: drop-shadow(0 0 1px var(--color-primer-canvas-backdrop)); } &:active, &:hover { .tentacle { transform: translateX(-4px); - filter: drop-shadow(0 0 2px var(--gitako-primer-canvas-backdrop)); + filter: drop-shadow(0 0 2px var(--color-primer-canvas-backdrop)); } } } @@ -357,17 +359,18 @@ $minimal-z-index: max( .error-message { display: none; margin-left: 4px; - padding: 2px 4px; + padding: 4px; font-size: 12px; - color: var(--gitako-danger-fg); - border: 1px solid var(--gitako-border-default); - border-radius: 2px; - background-color: var(--gitako-bg-subtle); + color: var(--color-danger-fg); + border: 1px solid var(--color-border-default); + border-radius: 4px; + background-color: var(--color-bg-subtle); } &:hover { .error-message { - display: inline-block; + display: inline-flex; + align-items: center; } } } @@ -375,15 +378,6 @@ $minimal-z-index: max( .#{$name}-side-bar { @include hide-for-print(); - @import '~@primer/css/base/index.scss'; - button { - border-radius: 6px; - font-weight: 600; - } - a { - color: var(--gitako-accent-fg); - } - $resizeHandlerWidth: 1px; .#{$name}-side-bar-body-wrapper { position: fixed; @@ -406,9 +400,6 @@ $minimal-z-index: max( left: calc(0px - #{$resizeHandlerWidth} - var(--gitako-width)); } } - - .gitako-side-bar-body-wrapper-content { - } } .#{$name}-resize-handler { display: flex; @@ -416,48 +407,31 @@ $minimal-z-index: max( cursor: ew-resize; user-select: none; width: 0; - background: var(--gitako-bg-subtle); - border-right: $resizeHandlerWidth solid var(--gitako-border-default); + background: var(--color-bg-subtle); + border-right: $resizeHandlerWidth solid var(--color-border-default); overflow: hidden; box-sizing: content-box; &:hover, &:active { width: 16px; - background: var(--gitako-bg-subtle); - border-left: 1px solid var(--gitako-border-default); - } - - .octicon.Grabber { - margin-left: -2px; - width: 20px; - font-size: 0; + background: var(--color-bg-subtle); + border-left: 1px solid var(--color-border-default); } } - .#{$name}-side-bar-body { $button-size: 32px; + position: relative; width: var(--gitako-width); height: 100%; display: flex; flex-direction: column; - background: var(--gitako-bg-subtle); - border-left: 1px solid var(--gitako-border-default); - overflow: hidden; - - .octicon { - transition: transform 0.3s ease; - color: var(--gitako-fg-subtle); - width: 100%; - height: 100%; - } - - .octicon-color { - color: var(--gitako-fg-subtle); - } + background: var(--color-bg-subtle); + font-size: 14px; .octicon-wrapper { display: inline-block; + color: var(--color-fg-subtle); width: 16px; min-width: 16px; // prevent shrink when sidebar is narrow text-align: center; @@ -472,7 +446,7 @@ $minimal-z-index: max( .header { position: relative; min-height: 62px; // GitHub header height if login - background: var(--gitako-bg-subtle); + background: var(--color-bg-subtle); padding: 6px 10px; flex-shrink: 0; position: relative; // prevent overlap by outline of other elements @@ -487,58 +461,17 @@ $minimal-z-index: max( padding: 4px 0; a { - color: var(--gitako-accent-fg); + color: var(--color-accent-fg); white-space: normal; + word-break: normal; + overflow-wrap: anywhere; // break-word does not break on `_` } } } - .branch-name { - margin-left: 4px; - padding: 4px 6px; // did not align well for some reason :/ - color: var(--gitako-fg-muted); - background-color: var(--gitako-accent-subtle); - word-break: break-word; - } - - .close-side-bar-button-position { + .side-bar-position-controls { float: right; z-index: 1; // prevent being covered by following elements - - .close-side-bar-button { - @include icon-button; - width: $button-size; - height: $button-size; - border-radius: $button-size; - - // feedback to click should be instant - &:not(:active) { - transition: background linear 0.3s; - } - - &.active .octicon { - color: var(--gitako-fg-default); - } - - .action-icon { - color: var(--gitako-fg-subtle); - width: 20px; - height: 20px; - text-align: center; - .octicon { - width: 100%; - height: 100%; - } - .Pin, - .Tab { - transform: rotateY(180deg); - } - } - } - - .close-side-bar-button + .close-side-bar-button { - margin-left: 4px; - } } } @@ -549,93 +482,49 @@ $minimal-z-index: max( .loading-indicator-container { width: 100%; height: 100%; + border-top: 1px solid var(--color-border-default); @include flex-center(); - border-top: 1px solid var(--gitako-border-default); .loading-indicator { display: flex; align-items: center; - color: var(--gitako-fg-subtle); + color: var(--color-fg-subtle); &-icon { width: 20px; height: 20px; margin-right: 4px; - .octicon { - width: 20px; - height: 20px; - animation: pulse-rotate 1.8s infinite ease; - } + animation: pulse-rotate 1.8s infinite ease; } } } .file-explorer { - width: 100%; - height: 100%; outline: none; - display: flex; + display: inline-flex; + flex: 1; flex-direction: column; - flex-wrap: nowrap; - &.freeze { - filter: blur(1.5px) opacity(0.6) grayscale(0.9); - cursor: pointer; - > * { - pointer-events: none; - user-select: none; - } - } + .search-input { + padding-left: 0; - /* search input */ - .search-input-wrapper { - position: relative; - - .search-input { - width: 100%; - box-shadow: none; // stay low - border-width: 1px 0 1px 0; // remove border on left&right to make UI clear - border-color: var(--gitako-border-default); - border-radius: 0; // its rounded corner not match with nearby elements - color: var(--gitako-fg-default); - background: var(--gitako-bg-default); - padding-right: 40px; // save space for actions - - &.error { - border-color: var(--gitako-danger-emphasis); - } + .TextInput-icon { + margin-left: 8px; } - .actions { - position: absolute; - top: 0px; - right: 0px; - height: 100%; - display: flex; - justify-content: flex-end; - align-items: center; - padding: 0 4px; + .TextInput-action { + font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; - .toggle-search-mode { - margin: 0; - padding: 2px 4px; - min-width: 32px; - border: 1px solid var(--gitako-border-muted); - border-radius: 8px; - color: var(--gitako-fg-muted); - font-size: 12px; - font-weight: 500; - line-height: 1; - outline: none; - - @include interactive-frame; + button { + font-weight: normal; } } } .status { padding: 4px; + background: var(--color-bg-subtle); .lazy-mode { cursor: help; @@ -647,6 +536,10 @@ $minimal-z-index: max( flex: 1; overflow: hidden; + &.hidden { + display: none; + } + // Put this inside files will help files to get proper size derived from parents, regardless of its content size .magic-size-container { position: absolute; @@ -665,21 +558,21 @@ $minimal-z-index: max( &.focused { @include interactive-background( - var(--gitako-canvas-subtle), - var(--gitako-canvas-subtle), - var(--gitako-canvas-inset) + var(--color-canvas-subtle), + var(--color-canvas-subtle), + var(--color-canvas-inset) ); } @include interactive-background( - var(--gitako-canvas-default), - var(--gitako-canvas-subtle), - var(--gitako-canvas-inset) + var(--color-canvas-default), + var(--color-canvas-subtle), + var(--color-canvas-inset) ); &.disabled { pointer-events: none; - color: var(--gitako-fg-muted); + color: var(--color-fg-muted); } display: flex; justify-content: space-between; @@ -689,18 +582,19 @@ $minimal-z-index: max( cursor: pointer; white-space: nowrap; transition: padding 0.3s ease; // on toggle expansion in search results + color: var(--color-accent-fg); - border-bottom: 1px solid var(--gitako-border-muted); + border-bottom: 1px solid var(--color-border-muted); &.compact { border-bottom: none; &.focused { - border-top: 1px solid var(--gitako-border-muted); - border-bottom: 1px solid var(--gitako-border-muted); + border-top: 1px solid var(--color-border-muted); + border-bottom: 1px solid var(--color-border-muted); } } &:not(:hover) { - color: var(--gitako-fg-default); + color: var(--color-fg-default); } @mixin icon-size() { @@ -717,6 +611,11 @@ $minimal-z-index: max( width: 16px; // not specify height here, it'll break vertical alignment + .octicon.ChevronRight { + // smooth rotation animation + transition: transform 0.3s ease; + } + & + .octicon-wrapper, & + .node-item-icon { margin-right: 6px; @@ -743,11 +642,12 @@ $minimal-z-index: max( overflow: hidden; text-overflow: ellipsis; align-items: center; + font-size: 14px; } &:not(:hover) { .node-item-label .prefix { - color: var(--gitako-fg-muted); + color: var(--color-fg-muted); } } @@ -760,7 +660,7 @@ $minimal-z-index: max( align-items: center; min-width: 36px; padding: 0 4px; - color: var(--gitako-fg-muted); + color: var(--color-fg-muted); .octicon-wrapper { margin: 2px; // make it closer to the comment amount label @@ -771,26 +671,26 @@ $minimal-z-index: max( display: inline-flex; align-items: center; padding: 0 4px; - color: var(--gitako-fg-muted); + color: var(--color-fg-muted); .octicon-wrapper { margin: 0; // make it closer to the diff details } .added .octicon { - color: var(--gitako-success-emphasis); + color: var(--color-success-fg); } .removed .octicon { - color: var(--gitako-danger-emphasis); + color: var(--color-danger-fg); } .renamed .octicon { - color: var(--gitako-done-emphasis); + color: var(--color-fg-muted); } .modified .octicon { - color: var(--gitako-accent-emphasis); + color: var(--color-attention-fg); } .ignored .octicon { - color: var(--gitako-neutral-emphasis); + color: var(--color-fg-muted); } .diff-stat-graph { @@ -802,15 +702,18 @@ $minimal-z-index: max( height: 10px; margin: 0 1px; border-radius: 2px; - background: var(--gitako-neutral-emphasis); + } + + .diff-stat-graph-no-change { + background: var(--color-fg-muted); } .diff-stat-graph-addition { - background: var(--gitako-success-emphasis); + background: var(--color-success-fg); } .diff-stat-graph-deletion { - background: var(--gitako-danger-emphasis); + background: var(--color-danger-fg); } } @@ -821,13 +724,13 @@ $minimal-z-index: max( font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace, 'Cascadia Code', 'Courier New', Courier; .additions { - color: var(--gitako-success-emphasis); + color: var(--color-success-emphasis); } .delimiter { - color: var(--gitako-neutral-emphasis); + color: var(--color-neutral-emphasis); } .deletions { - color: var(--gitako-danger-emphasis); + color: var(--color-danger-emphasis); } } } @@ -865,18 +768,25 @@ $minimal-z-index: max( } .#{$name}-settings-bar { - z-index: 2; - background: var(--gitako-bg-subtle); + position: absolute; + width: 100%; + height: 100%; display: flex; flex-direction: column; - max-height: calc(100vh - 120px); - &-title { - border-top: 1px solid var(--gitako-border-muted); + z-index: 2; + overflow: hidden; // prevent box-shadow of children overflow + background: var(--color-bg-subtle); + + &-header { + display: flex; + justify-content: space-between; + align-items: flex-start; padding: 10px; box-shadow: 0 1px 8px 0 rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.12); - z-index: 1; + z-index: 2; } + &-content { padding: 10px 10px; flex: 1; @@ -889,79 +799,8 @@ $minimal-z-index: max( height: 10px; top: 0; left: 0; - background: var(--gitako-bg-subtle); - z-index: 1; - } - .settings-section { - &:not(:last-of-type) { - margin-bottom: 30px; - } - - .field { - margin-bottom: 8px; - - .help { - cursor: help; - } - - label { - display: inline-block; - margin-bottom: 0px; - font-weight: 600; - } - input { - &:disabled { - cursor: not-allowed; - } - } - .select-wrapper { - position: relative; - - select { - width: 100%; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - // make it look like text inputs - height: 36px; - padding: 0 6px; - border-radius: 6px; - border: 1px solid var(--gitako-border-default); - background: var(--gitako-canvas-default); - color: var(--gitako-fg-default); - box-shadow: var(--gitako-primer-shadow-inset); - } - - .chevron { - position: absolute; - right: 6px; - top: 8px; - width: 10px; - height: 20px; - - &::before { - width: 10px; - height: 20px; - background-color: var(--gitako-fg-subtle); - @include pseudo-primer-icon('chevron-down'); - } - } - } - &.field-checkbox { - padding-left: 20px; - vertical-align: middle; - label { - margin-bottom: 0; - } - - input[type='checkbox'], - input[type='radio'] { - float: left; - margin: 5px 0 0 -20px; - vertical-align: middle; - } - } - } + background: var(--color-bg-subtle); + z-index: 2; } } .link-button { @@ -970,52 +809,29 @@ $minimal-z-index: max( margin-bottom: 4px; } .hint { - color: var(--gitako-fg-subtle); + color: var(--color-fg-subtle); + } + .help { + cursor: help; } .access-token-input-control { display: flex; .access-token-input { flex: 1; - @include input(); } } - .toggle-shortcut-input-control { - display: flex; - .toggle-shortcut-input { - flex: 1; - @include input(); - } - } - .header-row { - flex-shrink: 0; - display: flex; - justify-content: space-between; - align-items: center; - padding: 2px 6px 2px 10px; - border-top: 1px solid var(--gitako-border-muted); + } - .version { - color: var(--gitako-fg-muted); - } + .gitako-footer { + flex-shrink: 0; + display: flex; + justify-content: space-between; + align-items: center; + padding: 2px 6px 2px 10px; + border-top: 1px solid var(--color-border-muted); - .header-right { - display: flex; - align-items: center; - user-select: none; - cursor: help; // Will this make user hover for more time to see the tooltip? - } - - .settings-button { - @include icon-button(); - $size: 32px; - width: $size; - height: $size; - border-radius: $size; - - .octicon-wrapper { - width: 18px; - } - } + .version { + color: var(--color-fg-muted); } } } diff --git a/src/styles/themes.scss b/src/styles/themes.scss index 40632c5..8c005ca 100644 --- a/src/styles/themes.scss +++ b/src/styles/themes.scss @@ -1,60 +1,78 @@ -@use './themes/light.scss' as light; -@use './themes/dark.scss' as dark; -@use './themes/lightHighContrast.scss' as lightHighContrast; -@use './themes/darkHighContrast.scss' as darkHighContrast; -@use './themes/lightColorblind.scss' as lightColorblind; -@use './themes/darkColorblind.scss' as darkColorblind; -@use './themes/lightTritanopia.scss' as lightTritanopia; -@use './themes/darkTritanopia.scss' as darkTritanopia; -@use './themes/darkDimmed.scss' as darkDimmed; +@import '@primer/primitives/dist/scss/colors/_dark.scss'; +@import '@primer/primitives/dist/scss/colors/_dark_high_contrast.scss'; +@import '@primer/primitives/dist/scss/colors/_light_colorblind.scss'; +@import '@primer/primitives/dist/scss/colors/_dark_colorblind.scss'; +@import '@primer/primitives/dist/scss/colors/_dark_tritanopia.scss'; +@import '@primer/primitives/dist/scss/colors/_light_high_contrast.scss'; +@import '@primer/primitives/dist/scss/colors/_dark_dimmed.scss'; +@import '@primer/primitives/dist/scss/colors/_light.scss'; +@import '@primer/primitives/dist/scss/colors/_light_tritanopia.scss'; -@mixin setVariables($variables) { - @each $name, $value in $variables { - --gitako-#{$name}: #{$value}; - } -} - -:root { - // default, e.g. when not login - @include setVariables(light.$variables); - - // mapping 'canvas' to 'bg', this should be removed once GitHub exposes 'bg' colors - --gitako-bg-default-transparent: var(--gitako-canvas-default-transparent); - --gitako-bg-default: var(--gitako-canvas-default); - --gitako-bg-inset: var(--gitako-canvas-inset); - --gitako-bg-overlay: var(--gitako-canvas-overlay); - --gitako-bg-subtle: var(--gitako-canvas-subtle); -} - -@mixin theme($themeName, $variables) { - :root { - &[data-color-mode='light'][data-light-theme='#{$themeName}'], - &[data-color-mode='dark'][data-dark-theme='#{$themeName}'] { - @include setVariables($variables); +@mixin theme($selector, $themeName) { + @at-root { + :root[data-color-mode='light'][data-light-theme='#{$themeName}'], + :root[data-color-mode='dark'][data-dark-theme='#{$themeName}'] { + #{$selector} { + @content; + } } - &[data-color-mode='auto'] { + :root[data-color-mode='auto'] { &[data-light-theme='#{$themeName}'] { @media (prefers-color-scheme: light) { - @include setVariables($variables); + #{$selector} { + @content; + } } } &[data-dark-theme='#{$themeName}'] { @media (prefers-color-scheme: dark) { - @include setVariables($variables); + #{$selector} { + @content; + } } } } } } -@include theme('light', light.$variables); -@include theme('dark', dark.$variables); -@include theme('light_high_contrast', lightHighContrast.$variables); -@include theme('dark_high_contrast', darkHighContrast.$variables); -@include theme('light_colorblind', lightColorblind.$variables); -@include theme('light_tritanopia', lightTritanopia.$variables); -@include theme('dark_colorblind', darkColorblind.$variables); -@include theme('dark_tritanopia', darkTritanopia.$variables); -@include theme('dark_dimmed', darkDimmed.$variables); +@mixin enableThemes() { + // default, e.g. when not login, when use in sites other than GitHub + @include primer-colors-light(); + + // mapping 'canvas' to 'bg', this should be removed once GitHub exposes 'bg' colors + --color-bg-default-transparent: var(--color-canvas-default-transparent); + --color-bg-default: var(--color-canvas-default); + --color-bg-inset: var(--color-canvas-inset); + --color-bg-overlay: var(--color-canvas-overlay); + --color-bg-subtle: var(--color-canvas-subtle); + + @include theme(&, 'dark') { + @include primer-colors-dark; + } + @include theme(&, 'dark_high_contrast') { + @include primer-colors-dark_high_contrast; + } + @include theme(&, 'light_colorblind') { + @include primer-colors-light_colorblind; + } + @include theme(&, 'dark_colorblind') { + @include primer-colors-dark_colorblind; + } + @include theme(&, 'dark_tritanopia') { + @include primer-colors-dark_tritanopia; + } + @include theme(&, 'light_high_contrast') { + @include primer-colors-light_high_contrast; + } + @include theme(&, 'dark_dimmed') { + @include primer-colors-dark_dimmed; + } + @include theme(&, 'light') { + @include primer-colors-light; + } + @include theme(&, 'light_tritanopia') { + @include primer-colors-light_tritanopia; + } +} diff --git a/src/styles/themes/dark.scss b/src/styles/themes/dark.scss deleted file mode 100644 index 986117f..0000000 --- a/src/styles/themes/dark.scss +++ /dev/null @@ -1,418 +0,0 @@ -$variables: ( - 'accent-emphasis': '#1f6feb', - 'accent-fg': '#58a6ff', - 'accent-muted': 'rgba(56,139,253,0.4)', - 'accent-subtle': 'rgba(56,139,253,0.15)', - 'action-list-item-danger-active-bg': 'rgba(248,81,73,0.24)', - 'action-list-item-danger-hover-bg': 'rgba(248,81,73,0.16)', - 'action-list-item-danger-hover-text': '#ff7b72', - 'action-list-item-default-active-bg': 'rgba(177,186,196,0.2)', - 'action-list-item-default-hover-bg': 'rgba(177,186,196,0.12)', - 'action-list-item-default-selected-bg': 'rgba(177,186,196,0.08)', - 'action-list-item-inline-divider': 'rgba(48,54,61,0.48)', - 'ansi-black-bright': '#6e7681', - 'ansi-black': '#484f58', - 'ansi-blue-bright': '#79c0ff', - 'ansi-blue': '#58a6ff', - 'ansi-cyan-bright': '#56d4dd', - 'ansi-cyan': '#39c5cf', - 'ansi-gray': '#6e7681', - 'ansi-green-bright': '#56d364', - 'ansi-green': '#3fb950', - 'ansi-magenta-bright': '#d2a8ff', - 'ansi-magenta': '#bc8cff', - 'ansi-red-bright': '#ffa198', - 'ansi-red': '#ff7b72', - 'ansi-white-bright': '#f0f6fc', - 'ansi-white': '#b1bac4', - 'ansi-yellow-bright': '#e3b341', - 'ansi-yellow': '#d29922', - 'attention-emphasis': '#9e6a03', - 'attention-fg': '#d29922', - 'attention-muted': 'rgba(187,128,9,0.4)', - 'attention-subtle': 'rgba(187,128,9,0.15)', - 'avatar-bg': 'rgba(240,246,252,0.1)', - 'avatar-border': 'rgba(240,246,252,0.1)', - 'avatar-child-shadow': '-2px -2px 0 #0d1117', - 'avatar-stack-fade-more': '#21262d', - 'avatar-stack-fade': '#30363d', - 'border-default': '#30363d', - 'border-muted': '#21262d', - 'border-subtle': 'rgba(240,246,252,0.1)', - 'btn-active-bg': 'hsla(212,12%,18%,1)', - 'btn-active-border': '#6e7681', - 'btn-bg': '#21262d', - 'btn-border': 'rgba(240,246,252,0.1)', - 'btn-counter-bg': '#30363d', - 'btn-danger-counter-bg': 'rgba(218,54,51,0.1)', - 'btn-danger-disabled-bg': '#0d1117', - 'btn-danger-disabled-counter-bg': 'rgba(218,54,51,0.05)', - 'btn-danger-disabled-text': 'rgba(248,81,73,0.5)', - 'btn-danger-focus-border': '#f85149', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(248,81,73,0.4)', - 'btn-danger-hover-bg': '#da3633', - 'btn-danger-hover-border': '#f85149', - 'btn-danger-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-danger-hover-icon': '#f0f6fc', - 'btn-danger-hover-inset-shadow': '0 0 transparent', - 'btn-danger-hover-shadow': '0 0 transparent', - 'btn-danger-hover-text': '#f0f6fc', - 'btn-danger-icon': '#f85149', - 'btn-danger-selected-bg': '#b62324', - 'btn-danger-selected-border': '#ff7b72', - 'btn-danger-selected-shadow': '0 0 transparent', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#f85149', - 'btn-focus-bg': '#21262d', - 'btn-focus-border': '#8b949e', - 'btn-focus-shadow': '0 0 0 3px rgba(139,148,158,0.3)', - 'btn-hover-bg': '#30363d', - 'btn-hover-border': '#8b949e', - 'btn-inset-shadow': '0 0 transparent', - 'btn-outline-counter-bg': 'rgba(31,111,235,0.1)', - 'btn-outline-disabled-bg': '#0d1117', - 'btn-outline-disabled-counter-bg': 'rgba(31,111,235,0.05)', - 'btn-outline-disabled-text': 'rgba(88,166,255,0.5)', - 'btn-outline-focus-border': 'rgba(240,246,252,0.1)', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(17,88,199,0.4)', - 'btn-outline-hover-bg': '#30363d', - 'btn-outline-hover-border': 'rgba(240,246,252,0.1)', - 'btn-outline-hover-counter-bg': 'rgba(240,246,252,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(240,246,252,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(1,4,9,0.1)', - 'btn-outline-hover-text': '#58a6ff', - 'btn-outline-selected-bg': '#0d419d', - 'btn-outline-selected-border': 'rgba(240,246,252,0.1)', - 'btn-outline-selected-shadow': '0 0 transparent', - 'btn-outline-selected-text': '#f0f6fc', - 'btn-outline-text': '#58a6ff', - 'btn-primary-bg': '#238636', - 'btn-primary-border': 'rgba(240,246,252,0.1)', - 'btn-primary-counter-bg': 'rgba(240,246,252,0.2)', - 'btn-primary-disabled-bg': 'rgba(35,134,54,0.6)', - 'btn-primary-disabled-border': 'rgba(240,246,252,0.1)', - 'btn-primary-disabled-text': 'rgba(240,246,252,0.5)', - 'btn-primary-focus-bg': '#238636', - 'btn-primary-focus-border': 'rgba(240,246,252,0.1)', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(46,164,79,0.4)', - 'btn-primary-hover-bg': '#2ea043', - 'btn-primary-hover-border': 'rgba(240,246,252,0.1)', - 'btn-primary-icon': '#f0f6fc', - 'btn-primary-inset-shadow': '0 0 transparent', - 'btn-primary-selected-bg': '#238636', - 'btn-primary-selected-shadow': '0 0 transparent', - 'btn-primary-shadow': '0 0 transparent', - 'btn-primary-text': '#ffffff', - 'btn-selected-bg': '#161b22', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(1,4,9,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(31,111,235,0.3)', - 'btn-shadow': '0 0 transparent', - 'btn-text': '#c9d1d9', - 'canvas-default-transparent': 'rgba(13,17,23,0)', - 'canvas-default': '#0d1117', - 'canvas-inset': '#010409', - 'canvas-overlay': '#161b22', - 'canvas-subtle': '#161b22', - 'checks-ansi-black-bright': '#161b22', - 'checks-ansi-black': '#0d1117', - 'checks-ansi-blue-bright': '#79c0ff', - 'checks-ansi-blue': '#58a6ff', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#6e7681', - 'checks-ansi-green-bright': '#56d364', - 'checks-ansi-green': '#3fb950', - 'checks-ansi-magenta-bright': '#d2a8ff', - 'checks-ansi-magenta': '#bc8cff', - 'checks-ansi-red-bright': '#ffa198', - 'checks-ansi-red': '#ff7b72', - 'checks-ansi-white-bright': '#b1bac4', - 'checks-ansi-white': '#b1bac4', - 'checks-ansi-yellow-bright': '#e3b341', - 'checks-ansi-yellow': '#d29922', - 'checks-bg': '#010409', - 'checks-btn-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-btn-hover-icon': '#c9d1d9', - 'checks-btn-icon': '#8b949e', - 'checks-container-border-width': '1px', - 'checks-donut-error': '#f85149', - 'checks-donut-neutral': '#8b949e', - 'checks-donut-pending': '#d29922', - 'checks-donut-success': '#2ea043', - 'checks-dropdown-bg': '#161b22', - 'checks-dropdown-border': '#30363d', - 'checks-dropdown-btn-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-dropdown-btn-hover-text': '#c9d1d9', - 'checks-dropdown-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-dropdown-hover-text': '#c9d1d9', - 'checks-dropdown-shadow': 'rgba(1,4,9,0.3)', - 'checks-dropdown-text': '#c9d1d9', - 'checks-gate-bg': 'rgba(187,128,9,0.15)', - 'checks-gate-text': '#8b949e', - 'checks-gate-waiting-text': '#d29922', - 'checks-header-border': '#21262d', - 'checks-header-icon': '#8b949e', - 'checks-header-label-open-text': '#c9d1d9', - 'checks-header-label-text': '#8b949e', - 'checks-input-bg': '#161b22', - 'checks-input-focus-text': '#c9d1d9', - 'checks-input-placeholder-text': '#484f58', - 'checks-input-shadow': '0 0 0 1px (obj) => get_1.default(obj, path)', - 'checks-input-text': '#8b949e', - 'checks-line-dt-fm-bg': '#9e6a03', - 'checks-line-dt-fm-text': '#f0f6fc', - 'checks-line-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-line-num-text': '#484f58', - 'checks-line-selected-bg': 'rgba(56,139,253,0.15)', - 'checks-line-selected-num-text': '#58a6ff', - 'checks-line-text': '#8b949e', - 'checks-line-timestamp-text': '#484f58', - 'checks-logline-command-text': '#58a6ff', - 'checks-logline-debug-text': '#a371f7', - 'checks-logline-error-bg': 'rgba(248,81,73,0.15)', - 'checks-logline-error-num-text': '#484f58', - 'checks-logline-error-text': '#8b949e', - 'checks-logline-num-text': '#484f58', - 'checks-logline-section-text': '#3fb950', - 'checks-logline-text': '#8b949e', - 'checks-logline-warning-bg': 'rgba(187,128,9,0.15)', - 'checks-logline-warning-num-text': '#d29922', - 'checks-logline-warning-text': '#8b949e', - 'checks-run-border-width': '1px', - 'checks-scrollbar-thumb-bg': 'rgba(110,118,129,0.4)', - 'checks-step-error-text': '#f85149', - 'checks-step-header-open-bg': '#161b22', - 'checks-step-warning-text': '#d29922', - 'checks-text-link': '#58a6ff', - 'checks-text-primary': '#c9d1d9', - 'checks-text-secondary': '#8b949e', - 'codemirror-activeline-bg': 'rgba(110,118,129,0.1)', - 'codemirror-bg': '#0d1117', - 'codemirror-cursor': '#c9d1d9', - 'codemirror-guttermarker-subtle-text': '#484f58', - 'codemirror-guttermarker-text': '#0d1117', - 'codemirror-gutters-bg': '#0d1117', - 'codemirror-linenumber-text': '#8b949e', - 'codemirror-lines-bg': '#0d1117', - 'codemirror-matchingbracket-text': '#c9d1d9', - 'codemirror-selection-bg': 'rgba(56,139,253,0.4)', - 'codemirror-syntax-comment': '#8b949e', - 'codemirror-syntax-constant': '#79c0ff', - 'codemirror-syntax-entity': '#d2a8ff', - 'codemirror-syntax-keyword': '#ff7b72', - 'codemirror-syntax-storage': '#ff7b72', - 'codemirror-syntax-string': '#a5d6ff', - 'codemirror-syntax-support': '#79c0ff', - 'codemirror-syntax-variable': '#ffa657', - 'codemirror-text': '#c9d1d9', - 'counter-border': 'rgba(0,0,0,0)', - 'danger-emphasis': '#da3633', - 'danger-fg': '#f85149', - 'danger-muted': 'rgba(248,81,73,0.4)', - 'danger-subtle': 'rgba(248,81,73,0.15)', - 'diff-blob-addition-fg': '#c9d1d9', - 'diff-blob-addition-line-bg': 'rgba(46,160,67,0.15)', - 'diff-blob-addition-num-bg': 'rgba(63,185,80,0.3)', - 'diff-blob-addition-num-text': '#c9d1d9', - 'diff-blob-addition-word-bg': 'rgba(46,160,67,0.4)', - 'diff-blob-deletion-fg': '#c9d1d9', - 'diff-blob-deletion-line-bg': 'rgba(248,81,73,0.15)', - 'diff-blob-deletion-num-bg': 'rgba(248,81,73,0.3)', - 'diff-blob-deletion-num-text': '#c9d1d9', - 'diff-blob-deletion-word-bg': 'rgba(248,81,73,0.4)', - 'diff-blob-expander-icon': '#8b949e', - 'diff-blob-hunk-num-bg': 'rgba(56,139,253,0.4)', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'screen', - 'diffstat-addition-bg': '#3fb950', - 'diffstat-addition-border': 'rgba(240,246,252,0.1)', - 'diffstat-deletion-border': 'rgba(240,246,252,0.1)', - 'done-emphasis': '#8957e5', - 'done-fg': '#a371f7', - 'done-muted': 'rgba(163,113,247,0.4)', - 'done-subtle': 'rgba(163,113,247,0.15)', - 'fg-default': '#c9d1d9', - 'fg-muted': '#8b949e', - 'fg-on-emphasis': '#f0f6fc', - 'fg-subtle': '#484f58', - 'header-bg': '#161b22', - 'header-divider': '#8b949e', - 'header-logo': '#f0f6fc', - 'header-search-bg': '#0d1117', - 'header-search-border': '#30363d', - 'header-text': 'rgba(240,246,252,0.7)', - 'input-disabled-bg': 'rgba(110,118,129,0)', - 'marketing-icon-primary': '#79c0ff', - 'marketing-icon-secondary': '#1f6feb', - 'menu-bg-active': '#161b22', - 'mktg-btn-bg': '#f6f8fa', - 'mktg-btn-shadow-focus': 'rgb(255 255 255 / 25%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(255 255 255) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07)', - 'mktg-btn-shadow-outline': 'rgb(255 255 255 / 25%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#6e7681', - 'neutral-emphasis': '#6e7681', - 'neutral-muted': 'rgba(110,118,129,0.4)', - 'neutral-subtle': 'rgba(110,118,129,0.1)', - 'overlay-shadow': '0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85)', - 'page-header-bg': '#0d1117', - 'prettylights-syntax-brackethighlighter-angle': '#8b949e', - 'prettylights-syntax-brackethighlighter-unmatched': '#f85149', - 'prettylights-syntax-carriage-return-bg': '#b62324', - 'prettylights-syntax-carriage-return-text': '#f0f6fc', - 'prettylights-syntax-comment': '#8b949e', - 'prettylights-syntax-constant-other-reference-link': '#a5d6ff', - 'prettylights-syntax-constant': '#79c0ff', - 'prettylights-syntax-entity-tag': '#7ee787', - 'prettylights-syntax-entity': '#d2a8ff', - 'prettylights-syntax-invalid-illegal-bg': '#8e1519', - 'prettylights-syntax-invalid-illegal-text': '#f0f6fc', - 'prettylights-syntax-keyword': '#ff7b72', - 'prettylights-syntax-markup-bold': '#c9d1d9', - 'prettylights-syntax-markup-changed-bg': '#5a1e02', - 'prettylights-syntax-markup-changed-text': '#ffdfb6', - 'prettylights-syntax-markup-deleted-bg': '#67060c', - 'prettylights-syntax-markup-deleted-text': '#ffdcd7', - 'prettylights-syntax-markup-heading': '#1f6feb', - 'prettylights-syntax-markup-ignored-bg': '#1158c7', - 'prettylights-syntax-markup-ignored-text': '#c9d1d9', - 'prettylights-syntax-markup-inserted-bg': '#033a16', - 'prettylights-syntax-markup-inserted-text': '#aff5b4', - 'prettylights-syntax-markup-italic': '#c9d1d9', - 'prettylights-syntax-markup-list': '#f2cc60', - 'prettylights-syntax-meta-diff-range': '#d2a8ff', - 'prettylights-syntax-storage-modifier-import': '#c9d1d9', - 'prettylights-syntax-string-regexp': '#7ee787', - 'prettylights-syntax-string': '#a5d6ff', - 'prettylights-syntax-sublimelinter-gutter-mark': '#484f58', - 'prettylights-syntax-variable': '#ffa657', - 'primer-border-active': '#F78166', - 'primer-border-contrast': 'rgba(240,246,252,0.2)', - 'primer-canvas-backdrop': 'rgba(1,4,9,0.8)', - 'primer-canvas-sticky': 'rgba(13,17,23,0.95)', - 'primer-fg-disabled': '#484f58', - 'primer-shadow-focus': '0 0 0 3px #0c2d6b', - 'primer-shadow-highlight': '0 0 transparent', - 'primer-shadow-inset': '0 0 transparent', - 'project-gradient-in': '#161b22', - 'project-gradient-out': 'rgba(22,27,34,0)', - 'project-header-bg': '#0d1117', - 'project-sidebar-bg': '#161b22', - 'scale-black': '#010409', - 'scale-blue-0': '#cae8ff', - 'scale-blue-1': '#a5d6ff', - 'scale-blue-2': '#79c0ff', - 'scale-blue-3': '#58a6ff', - 'scale-blue-4': '#388bfd', - 'scale-blue-5': '#1f6feb', - 'scale-blue-6': '#1158c7', - 'scale-blue-7': '#0d419d', - 'scale-blue-8': '#0c2d6b', - 'scale-blue-9': '#051d4d', - 'scale-coral-0': '#FFDDD2', - 'scale-coral-1': '#FFC2B2', - 'scale-coral-2': '#FFA28B', - 'scale-coral-3': '#F78166', - 'scale-coral-4': '#EA6045', - 'scale-coral-5': '#CF462D', - 'scale-coral-6': '#AC3220', - 'scale-coral-7': '#872012', - 'scale-coral-8': '#640D04', - 'scale-coral-9': '#460701', - 'scale-gray-0': '#f0f6fc', - 'scale-gray-1': '#c9d1d9', - 'scale-gray-2': '#b1bac4', - 'scale-gray-3': '#8b949e', - 'scale-gray-4': '#6e7681', - 'scale-gray-5': '#484f58', - 'scale-gray-6': '#30363d', - 'scale-gray-7': '#21262d', - 'scale-gray-8': '#161b22', - 'scale-gray-9': '#0d1117', - 'scale-green-0': '#aff5b4', - 'scale-green-1': '#7ee787', - 'scale-green-2': '#56d364', - 'scale-green-3': '#3fb950', - 'scale-green-4': '#2ea043', - 'scale-green-5': '#238636', - 'scale-green-6': '#196c2e', - 'scale-green-7': '#0f5323', - 'scale-green-8': '#033a16', - 'scale-green-9': '#04260f', - 'scale-orange-0': '#ffdfb6', - 'scale-orange-1': '#ffc680', - 'scale-orange-2': '#ffa657', - 'scale-orange-3': '#f0883e', - 'scale-orange-4': '#db6d28', - 'scale-orange-5': '#bd561d', - 'scale-orange-6': '#9b4215', - 'scale-orange-7': '#762d0a', - 'scale-orange-8': '#5a1e02', - 'scale-orange-9': '#3d1300', - 'scale-pink-0': '#ffdaec', - 'scale-pink-1': '#ffbedd', - 'scale-pink-2': '#ff9bce', - 'scale-pink-3': '#f778ba', - 'scale-pink-4': '#db61a2', - 'scale-pink-5': '#bf4b8a', - 'scale-pink-6': '#9e3670', - 'scale-pink-7': '#7d2457', - 'scale-pink-8': '#5e103e', - 'scale-pink-9': '#42062a', - 'scale-purple-0': '#eddeff', - 'scale-purple-1': '#e2c5ff', - 'scale-purple-2': '#d2a8ff', - 'scale-purple-3': '#bc8cff', - 'scale-purple-4': '#a371f7', - 'scale-purple-5': '#8957e5', - 'scale-purple-6': '#6e40c9', - 'scale-purple-7': '#553098', - 'scale-purple-8': '#3c1e70', - 'scale-purple-9': '#271052', - 'scale-red-0': '#ffdcd7', - 'scale-red-1': '#ffc1ba', - 'scale-red-2': '#ffa198', - 'scale-red-3': '#ff7b72', - 'scale-red-4': '#f85149', - 'scale-red-5': '#da3633', - 'scale-red-6': '#b62324', - 'scale-red-7': '#8e1519', - 'scale-red-8': '#67060c', - 'scale-red-9': '#490202', - 'scale-white': '#f0f6fc', - 'scale-yellow-0': '#f8e3a1', - 'scale-yellow-1': '#f2cc60', - 'scale-yellow-2': '#e3b341', - 'scale-yellow-3': '#d29922', - 'scale-yellow-4': '#bb8009', - 'scale-yellow-5': '#9e6a03', - 'scale-yellow-6': '#845306', - 'scale-yellow-7': '#693e00', - 'scale-yellow-8': '#4b2900', - 'scale-yellow-9': '#341a00', - 'search-keyword-hl': 'rgba(210,153,34,0.4)', - 'select-menu-backdrop-border': '#484f58', - 'select-menu-tap-focus-bg': '#0c2d6b', - 'select-menu-tap-highlight': 'rgba(48,54,61,0.5)', - 'severe-emphasis': '#bd561d', - 'severe-fg': '#db6d28', - 'severe-muted': 'rgba(219,109,40,0.4)', - 'severe-subtle': 'rgba(219,109,40,0.15)', - 'shadow-extra-large': '0 12px 48px #010409', - 'shadow-large': '0 8px 24px #010409', - 'shadow-medium': '0 3px 6px #010409', - 'shadow-small': '0 0 transparent', - 'sidenav-selected-bg': '#21262d', - 'sponsors-emphasis': '#bf4b8a', - 'sponsors-fg': '#db61a2', - 'sponsors-muted': 'rgba(219,97,162,0.4)', - 'sponsors-subtle': 'rgba(219,97,162,0.15)', - 'success-emphasis': '#238636', - 'success-fg': '#3fb950', - 'success-muted': 'rgba(46,160,67,0.4)', - 'success-subtle': 'rgba(46,160,67,0.15)', - 'timeline-badge-bg': '#21262d', - 'topic-tag-border': 'rgba(0,0,0,0)', - 'underlinenav-border-hover': 'rgba(110,118,129,0.4)', - 'underlinenav-icon': '#484f58', -); diff --git a/src/styles/themes/darkColorblind.scss b/src/styles/themes/darkColorblind.scss deleted file mode 100644 index 49f7777..0000000 --- a/src/styles/themes/darkColorblind.scss +++ /dev/null @@ -1,418 +0,0 @@ -$variables: ( - 'accent-emphasis': '#1f6feb', - 'accent-fg': '#58a6ff', - 'accent-muted': 'rgba(56,139,253,0.4)', - 'accent-subtle': 'rgba(56,139,253,0.15)', - 'action-list-item-danger-active-bg': 'rgba(195,128,0,0.24)', - 'action-list-item-danger-hover-bg': 'rgba(195,128,0,0.16)', - 'action-list-item-danger-hover-text': '#d69a00', - 'action-list-item-default-active-bg': 'rgba(177,186,196,0.2)', - 'action-list-item-default-hover-bg': 'rgba(177,186,196,0.12)', - 'action-list-item-default-selected-bg': 'rgba(177,186,196,0.08)', - 'action-list-item-inline-divider': 'rgba(48,54,61,0.48)', - 'ansi-black-bright': '#6e7681', - 'ansi-black': '#484f58', - 'ansi-blue-bright': '#79c0ff', - 'ansi-blue': '#58a6ff', - 'ansi-cyan-bright': '#56d4dd', - 'ansi-cyan': '#39c5cf', - 'ansi-gray': '#6e7681', - 'ansi-green-bright': '#66baff', - 'ansi-green': '#42a0ff', - 'ansi-magenta-bright': '#d2a8ff', - 'ansi-magenta': '#bc8cff', - 'ansi-red-bright': '#e6b716', - 'ansi-red': '#d69a00', - 'ansi-white-bright': '#f0f6fc', - 'ansi-white': '#b1bac4', - 'ansi-yellow-bright': '#e3b341', - 'ansi-yellow': '#d29922', - 'attention-emphasis': '#9e6a03', - 'attention-fg': '#d29922', - 'attention-muted': 'rgba(187,128,9,0.4)', - 'attention-subtle': 'rgba(187,128,9,0.15)', - 'avatar-bg': 'rgba(240,246,252,0.1)', - 'avatar-border': 'rgba(240,246,252,0.1)', - 'avatar-child-shadow': '-2px -2px 0 #0d1117', - 'avatar-stack-fade-more': '#21262d', - 'avatar-stack-fade': '#30363d', - 'border-default': '#30363d', - 'border-muted': '#21262d', - 'border-subtle': 'rgba(240,246,252,0.1)', - 'btn-active-bg': 'hsla(212,12%,18%,1)', - 'btn-active-border': '#6e7681', - 'btn-bg': '#21262d', - 'btn-border': 'rgba(240,246,252,0.1)', - 'btn-counter-bg': '#30363d', - 'btn-danger-counter-bg': 'rgba(166,105,0,0.1)', - 'btn-danger-disabled-bg': '#0d1117', - 'btn-danger-disabled-counter-bg': 'rgba(166,105,0,0.05)', - 'btn-danger-disabled-text': 'rgba(195,128,0,0.5)', - 'btn-danger-focus-border': '#c38000', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(195,128,0,0.4)', - 'btn-danger-hover-bg': '#a66900', - 'btn-danger-hover-border': '#c38000', - 'btn-danger-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-danger-hover-icon': '#f0f6fc', - 'btn-danger-hover-inset-shadow': '0 0 transparent', - 'btn-danger-hover-shadow': '0 0 transparent', - 'btn-danger-hover-text': '#f0f6fc', - 'btn-danger-icon': '#c38000', - 'btn-danger-selected-bg': '#865401', - 'btn-danger-selected-border': '#d69a00', - 'btn-danger-selected-shadow': '0 0 transparent', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#c38000', - 'btn-focus-bg': '#21262d', - 'btn-focus-border': '#8b949e', - 'btn-focus-shadow': '0 0 0 3px rgba(139,148,158,0.3)', - 'btn-hover-bg': '#30363d', - 'btn-hover-border': '#8b949e', - 'btn-inset-shadow': '0 0 transparent', - 'btn-outline-counter-bg': 'rgba(31,111,235,0.1)', - 'btn-outline-disabled-bg': '#0d1117', - 'btn-outline-disabled-counter-bg': 'rgba(31,111,235,0.05)', - 'btn-outline-disabled-text': 'rgba(88,166,255,0.5)', - 'btn-outline-focus-border': 'rgba(240,246,252,0.1)', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(17,88,199,0.4)', - 'btn-outline-hover-bg': '#30363d', - 'btn-outline-hover-border': 'rgba(240,246,252,0.1)', - 'btn-outline-hover-counter-bg': 'rgba(240,246,252,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(240,246,252,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(1,4,9,0.1)', - 'btn-outline-hover-text': '#58a6ff', - 'btn-outline-selected-bg': '#0d419d', - 'btn-outline-selected-border': 'rgba(240,246,252,0.1)', - 'btn-outline-selected-shadow': '0 0 transparent', - 'btn-outline-selected-text': '#f0f6fc', - 'btn-outline-text': '#58a6ff', - 'btn-primary-bg': '#1d69e0', - 'btn-primary-border': 'rgba(240,246,252,0.1)', - 'btn-primary-counter-bg': 'rgba(240,246,252,0.2)', - 'btn-primary-disabled-bg': 'rgba(29,105,224,0.6)', - 'btn-primary-disabled-border': 'rgba(240,246,252,0.1)', - 'btn-primary-disabled-text': 'rgba(240,246,252,0.5)', - 'btn-primary-focus-bg': '#1d69e0', - 'btn-primary-focus-border': 'rgba(240,246,252,0.1)', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(46,164,79,0.4)', - 'btn-primary-hover-bg': '#1585fd', - 'btn-primary-hover-border': 'rgba(240,246,252,0.1)', - 'btn-primary-icon': '#f0f6fc', - 'btn-primary-inset-shadow': '0 0 transparent', - 'btn-primary-selected-bg': '#1d69e0', - 'btn-primary-selected-shadow': '0 0 transparent', - 'btn-primary-shadow': '0 0 transparent', - 'btn-primary-text': '#ffffff', - 'btn-selected-bg': '#161b22', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(1,4,9,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(31,111,235,0.3)', - 'btn-shadow': '0 0 transparent', - 'btn-text': '#c9d1d9', - 'canvas-default-transparent': 'rgba(13,17,23,0)', - 'canvas-default': '#0d1117', - 'canvas-inset': '#010409', - 'canvas-overlay': '#161b22', - 'canvas-subtle': '#161b22', - 'checks-ansi-black-bright': '#161b22', - 'checks-ansi-black': '#0d1117', - 'checks-ansi-blue-bright': '#79c0ff', - 'checks-ansi-blue': '#58a6ff', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#6e7681', - 'checks-ansi-green-bright': '#66baff', - 'checks-ansi-green': '#42a0ff', - 'checks-ansi-magenta-bright': '#d2a8ff', - 'checks-ansi-magenta': '#bc8cff', - 'checks-ansi-red-bright': '#e6b716', - 'checks-ansi-red': '#d69a00', - 'checks-ansi-white-bright': '#b1bac4', - 'checks-ansi-white': '#b1bac4', - 'checks-ansi-yellow-bright': '#e3b341', - 'checks-ansi-yellow': '#d29922', - 'checks-bg': '#010409', - 'checks-btn-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-btn-hover-icon': '#c9d1d9', - 'checks-btn-icon': '#8b949e', - 'checks-container-border-width': '1px', - 'checks-donut-error': '#c38000', - 'checks-donut-neutral': '#8b949e', - 'checks-donut-pending': '#d29922', - 'checks-donut-success': '#1585fd', - 'checks-dropdown-bg': '#161b22', - 'checks-dropdown-border': '#30363d', - 'checks-dropdown-btn-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-dropdown-btn-hover-text': '#c9d1d9', - 'checks-dropdown-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-dropdown-hover-text': '#c9d1d9', - 'checks-dropdown-shadow': 'rgba(1,4,9,0.3)', - 'checks-dropdown-text': '#c9d1d9', - 'checks-gate-bg': 'rgba(187,128,9,0.15)', - 'checks-gate-text': '#8b949e', - 'checks-gate-waiting-text': '#d29922', - 'checks-header-border': '#21262d', - 'checks-header-icon': '#8b949e', - 'checks-header-label-open-text': '#c9d1d9', - 'checks-header-label-text': '#8b949e', - 'checks-input-bg': '#161b22', - 'checks-input-focus-text': '#c9d1d9', - 'checks-input-placeholder-text': '#484f58', - 'checks-input-shadow': '0 0 0 1px (obj) => get_1.default(obj, path)', - 'checks-input-text': '#8b949e', - 'checks-line-dt-fm-bg': '#9e6a03', - 'checks-line-dt-fm-text': '#f0f6fc', - 'checks-line-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-line-num-text': '#484f58', - 'checks-line-selected-bg': 'rgba(56,139,253,0.15)', - 'checks-line-selected-num-text': '#58a6ff', - 'checks-line-text': '#8b949e', - 'checks-line-timestamp-text': '#484f58', - 'checks-logline-command-text': '#58a6ff', - 'checks-logline-debug-text': '#a371f7', - 'checks-logline-error-bg': 'rgba(195,128,0,0.15)', - 'checks-logline-error-num-text': '#484f58', - 'checks-logline-error-text': '#8b949e', - 'checks-logline-num-text': '#484f58', - 'checks-logline-section-text': '#42a0ff', - 'checks-logline-text': '#8b949e', - 'checks-logline-warning-bg': 'rgba(187,128,9,0.15)', - 'checks-logline-warning-num-text': '#d29922', - 'checks-logline-warning-text': '#8b949e', - 'checks-run-border-width': '1px', - 'checks-scrollbar-thumb-bg': 'rgba(110,118,129,0.4)', - 'checks-step-error-text': '#c38000', - 'checks-step-header-open-bg': '#161b22', - 'checks-step-warning-text': '#d29922', - 'checks-text-link': '#58a6ff', - 'checks-text-primary': '#c9d1d9', - 'checks-text-secondary': '#8b949e', - 'codemirror-activeline-bg': 'rgba(110,118,129,0.1)', - 'codemirror-bg': '#0d1117', - 'codemirror-cursor': '#c9d1d9', - 'codemirror-guttermarker-subtle-text': '#484f58', - 'codemirror-guttermarker-text': '#0d1117', - 'codemirror-gutters-bg': '#0d1117', - 'codemirror-linenumber-text': '#8b949e', - 'codemirror-lines-bg': '#0d1117', - 'codemirror-matchingbracket-text': '#c9d1d9', - 'codemirror-selection-bg': 'rgba(56,139,253,0.4)', - 'codemirror-syntax-comment': '#8b949e', - 'codemirror-syntax-constant': '#79c0ff', - 'codemirror-syntax-entity': '#d2a8ff', - 'codemirror-syntax-keyword': '#d69a00', - 'codemirror-syntax-storage': '#d69a00', - 'codemirror-syntax-string': '#a5d6ff', - 'codemirror-syntax-support': '#79c0ff', - 'codemirror-syntax-variable': '#ffa657', - 'codemirror-text': '#c9d1d9', - 'counter-border': 'rgba(0,0,0,0)', - 'danger-emphasis': '#a66900', - 'danger-fg': '#c38000', - 'danger-muted': 'rgba(195,128,0,0.4)', - 'danger-subtle': 'rgba(195,128,0,0.15)', - 'diff-blob-addition-fg': '#c9d1d9', - 'diff-blob-addition-line-bg': 'rgba(21,133,253,0.15)', - 'diff-blob-addition-num-bg': 'rgba(66,160,255,0.3)', - 'diff-blob-addition-num-text': '#c9d1d9', - 'diff-blob-addition-word-bg': 'rgba(21,133,253,0.4)', - 'diff-blob-deletion-fg': '#c9d1d9', - 'diff-blob-deletion-line-bg': 'rgba(195,128,0,0.15)', - 'diff-blob-deletion-num-bg': 'rgba(195,128,0,0.3)', - 'diff-blob-deletion-num-text': '#c9d1d9', - 'diff-blob-deletion-word-bg': 'rgba(195,128,0,0.4)', - 'diff-blob-expander-icon': '#8b949e', - 'diff-blob-hunk-num-bg': 'rgba(56,139,253,0.4)', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'screen', - 'diffstat-addition-bg': '#42a0ff', - 'diffstat-addition-border': 'rgba(240,246,252,0.1)', - 'diffstat-deletion-border': 'rgba(240,246,252,0.1)', - 'done-emphasis': '#8957e5', - 'done-fg': '#a371f7', - 'done-muted': 'rgba(163,113,247,0.4)', - 'done-subtle': 'rgba(163,113,247,0.15)', - 'fg-default': '#c9d1d9', - 'fg-muted': '#8b949e', - 'fg-on-emphasis': '#f0f6fc', - 'fg-subtle': '#484f58', - 'header-bg': '#161b22', - 'header-divider': '#8b949e', - 'header-logo': '#f0f6fc', - 'header-search-bg': '#0d1117', - 'header-search-border': '#30363d', - 'header-text': 'rgba(240,246,252,0.7)', - 'input-disabled-bg': 'rgba(110,118,129,0)', - 'marketing-icon-primary': '#79c0ff', - 'marketing-icon-secondary': '#1f6feb', - 'menu-bg-active': '#161b22', - 'mktg-btn-bg': '#f6f8fa', - 'mktg-btn-shadow-focus': 'rgb(255 255 255 / 25%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(255 255 255) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07)', - 'mktg-btn-shadow-outline': 'rgb(255 255 255 / 25%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#6e7681', - 'neutral-emphasis': '#6e7681', - 'neutral-muted': 'rgba(110,118,129,0.4)', - 'neutral-subtle': 'rgba(110,118,129,0.1)', - 'overlay-shadow': '0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85)', - 'page-header-bg': '#0d1117', - 'prettylights-syntax-brackethighlighter-angle': '#8b949e', - 'prettylights-syntax-brackethighlighter-unmatched': '#c38000', - 'prettylights-syntax-carriage-return-bg': '#865401', - 'prettylights-syntax-carriage-return-text': '#f0f6fc', - 'prettylights-syntax-comment': '#8b949e', - 'prettylights-syntax-constant-other-reference-link': '#a5d6ff', - 'prettylights-syntax-constant': '#79c0ff', - 'prettylights-syntax-entity-tag': '#83d4ff', - 'prettylights-syntax-entity': '#d2a8ff', - 'prettylights-syntax-invalid-illegal-bg': '#633e00', - 'prettylights-syntax-invalid-illegal-text': '#f0f6fc', - 'prettylights-syntax-keyword': '#d69a00', - 'prettylights-syntax-markup-bold': '#c9d1d9', - 'prettylights-syntax-markup-changed-bg': '#5a1e02', - 'prettylights-syntax-markup-changed-text': '#ffdfb6', - 'prettylights-syntax-markup-deleted-bg': '#452f00', - 'prettylights-syntax-markup-deleted-text': '#f0ec59', - 'prettylights-syntax-markup-heading': '#1f6feb', - 'prettylights-syntax-markup-ignored-bg': '#1158c7', - 'prettylights-syntax-markup-ignored-text': '#c9d1d9', - 'prettylights-syntax-markup-inserted-bg': '#0a2861', - 'prettylights-syntax-markup-inserted-text': '#a0e8ff', - 'prettylights-syntax-markup-italic': '#c9d1d9', - 'prettylights-syntax-markup-list': '#f2cc60', - 'prettylights-syntax-meta-diff-range': '#d2a8ff', - 'prettylights-syntax-storage-modifier-import': '#c9d1d9', - 'prettylights-syntax-string-regexp': '#83d4ff', - 'prettylights-syntax-string': '#a5d6ff', - 'prettylights-syntax-sublimelinter-gutter-mark': '#484f58', - 'prettylights-syntax-variable': '#ffa657', - 'primer-border-active': '#F78166', - 'primer-border-contrast': 'rgba(240,246,252,0.2)', - 'primer-canvas-backdrop': 'rgba(1,4,9,0.8)', - 'primer-canvas-sticky': 'rgba(13,17,23,0.95)', - 'primer-fg-disabled': '#484f58', - 'primer-shadow-focus': '0 0 0 3px #0c2d6b', - 'primer-shadow-highlight': '0 0 transparent', - 'primer-shadow-inset': '0 0 transparent', - 'project-gradient-in': '#161b22', - 'project-gradient-out': 'rgba(22,27,34,0)', - 'project-header-bg': '#0d1117', - 'project-sidebar-bg': '#161b22', - 'scale-black': '#010409', - 'scale-blue-0': '#cae8ff', - 'scale-blue-1': '#a5d6ff', - 'scale-blue-2': '#79c0ff', - 'scale-blue-3': '#58a6ff', - 'scale-blue-4': '#388bfd', - 'scale-blue-5': '#1f6feb', - 'scale-blue-6': '#1158c7', - 'scale-blue-7': '#0d419d', - 'scale-blue-8': '#0c2d6b', - 'scale-blue-9': '#051d4d', - 'scale-coral-0': '#FFDDD2', - 'scale-coral-1': '#FFC2B2', - 'scale-coral-2': '#FFA28B', - 'scale-coral-3': '#F78166', - 'scale-coral-4': '#EA6045', - 'scale-coral-5': '#CF462D', - 'scale-coral-6': '#AC3220', - 'scale-coral-7': '#872012', - 'scale-coral-8': '#640D04', - 'scale-coral-9': '#460701', - 'scale-gray-0': '#f0f6fc', - 'scale-gray-1': '#c9d1d9', - 'scale-gray-2': '#b1bac4', - 'scale-gray-3': '#8b949e', - 'scale-gray-4': '#6e7681', - 'scale-gray-5': '#484f58', - 'scale-gray-6': '#30363d', - 'scale-gray-7': '#21262d', - 'scale-gray-8': '#161b22', - 'scale-gray-9': '#0d1117', - 'scale-green-0': '#a0e8ff', - 'scale-green-1': '#83d4ff', - 'scale-green-2': '#66baff', - 'scale-green-3': '#42a0ff', - 'scale-green-4': '#1585fd', - 'scale-green-5': '#1d69e0', - 'scale-green-6': '#0f53bc', - 'scale-green-7': '#0b3c92', - 'scale-green-8': '#0a2861', - 'scale-green-9': '#041843', - 'scale-orange-0': '#ffdfb6', - 'scale-orange-1': '#ffc680', - 'scale-orange-2': '#ffa657', - 'scale-orange-3': '#f0883e', - 'scale-orange-4': '#db6d28', - 'scale-orange-5': '#bd561d', - 'scale-orange-6': '#9b4215', - 'scale-orange-7': '#762d0a', - 'scale-orange-8': '#5a1e02', - 'scale-orange-9': '#3d1300', - 'scale-pink-0': '#ffdaec', - 'scale-pink-1': '#ffbedd', - 'scale-pink-2': '#ff9bce', - 'scale-pink-3': '#f778ba', - 'scale-pink-4': '#db61a2', - 'scale-pink-5': '#bf4b8a', - 'scale-pink-6': '#9e3670', - 'scale-pink-7': '#7d2457', - 'scale-pink-8': '#5e103e', - 'scale-pink-9': '#42062a', - 'scale-purple-0': '#eddeff', - 'scale-purple-1': '#e2c5ff', - 'scale-purple-2': '#d2a8ff', - 'scale-purple-3': '#bc8cff', - 'scale-purple-4': '#a371f7', - 'scale-purple-5': '#8957e5', - 'scale-purple-6': '#6e40c9', - 'scale-purple-7': '#553098', - 'scale-purple-8': '#3c1e70', - 'scale-purple-9': '#271052', - 'scale-red-0': '#f0ec59', - 'scale-red-1': '#ecd334', - 'scale-red-2': '#e6b716', - 'scale-red-3': '#d69a00', - 'scale-red-4': '#c38000', - 'scale-red-5': '#a66900', - 'scale-red-6': '#865401', - 'scale-red-7': '#633e00', - 'scale-red-8': '#452f00', - 'scale-red-9': '#292100', - 'scale-white': '#f0f6fc', - 'scale-yellow-0': '#f8e3a1', - 'scale-yellow-1': '#f2cc60', - 'scale-yellow-2': '#e3b341', - 'scale-yellow-3': '#d29922', - 'scale-yellow-4': '#bb8009', - 'scale-yellow-5': '#9e6a03', - 'scale-yellow-6': '#845306', - 'scale-yellow-7': '#693e00', - 'scale-yellow-8': '#4b2900', - 'scale-yellow-9': '#341a00', - 'search-keyword-hl': 'rgba(210,153,34,0.4)', - 'select-menu-backdrop-border': '#484f58', - 'select-menu-tap-focus-bg': '#0c2d6b', - 'select-menu-tap-highlight': 'rgba(48,54,61,0.5)', - 'severe-emphasis': '#bd561d', - 'severe-fg': '#db6d28', - 'severe-muted': 'rgba(219,109,40,0.4)', - 'severe-subtle': 'rgba(219,109,40,0.15)', - 'shadow-extra-large': '0 12px 48px #010409', - 'shadow-large': '0 8px 24px #010409', - 'shadow-medium': '0 3px 6px #010409', - 'shadow-small': '0 0 transparent', - 'sidenav-selected-bg': '#21262d', - 'sponsors-emphasis': '#bf4b8a', - 'sponsors-fg': '#db61a2', - 'sponsors-muted': 'rgba(219,97,162,0.4)', - 'sponsors-subtle': 'rgba(219,97,162,0.15)', - 'success-emphasis': '#1d69e0', - 'success-fg': '#42a0ff', - 'success-muted': 'rgba(21,133,253,0.4)', - 'success-subtle': 'rgba(21,133,253,0.15)', - 'timeline-badge-bg': '#21262d', - 'topic-tag-border': 'rgba(0,0,0,0)', - 'underlinenav-border-hover': 'rgba(110,118,129,0.4)', - 'underlinenav-icon': '#484f58', -); diff --git a/src/styles/themes/darkDimmed.scss b/src/styles/themes/darkDimmed.scss deleted file mode 100644 index 1d0a300..0000000 --- a/src/styles/themes/darkDimmed.scss +++ /dev/null @@ -1,418 +0,0 @@ -$variables: ( - 'accent-emphasis': '#316dca', - 'accent-fg': '#539bf5', - 'accent-muted': 'rgba(65,132,228,0.4)', - 'accent-subtle': 'rgba(65,132,228,0.15)', - 'action-list-item-danger-active-bg': 'rgba(229,83,75,0.24)', - 'action-list-item-danger-hover-bg': 'rgba(229,83,75,0.16)', - 'action-list-item-danger-hover-text': '#f47067', - 'action-list-item-default-active-bg': 'rgba(144,157,171,0.2)', - 'action-list-item-default-hover-bg': 'rgba(144,157,171,0.12)', - 'action-list-item-default-selected-bg': 'rgba(144,157,171,0.08)', - 'action-list-item-inline-divider': 'rgba(68,76,86,0.48)', - 'ansi-black-bright': '#636e7b', - 'ansi-black': '#545d68', - 'ansi-blue-bright': '#6cb6ff', - 'ansi-blue': '#539bf5', - 'ansi-cyan-bright': '#56d4dd', - 'ansi-cyan': '#39c5cf', - 'ansi-gray': '#636e7b', - 'ansi-green-bright': '#6bc46d', - 'ansi-green': '#57ab5a', - 'ansi-magenta-bright': '#dcbdfb', - 'ansi-magenta': '#b083f0', - 'ansi-red-bright': '#ff938a', - 'ansi-red': '#f47067', - 'ansi-white-bright': '#cdd9e5', - 'ansi-white': '#909dab', - 'ansi-yellow-bright': '#daaa3f', - 'ansi-yellow': '#c69026', - 'attention-emphasis': '#966600', - 'attention-fg': '#c69026', - 'attention-muted': 'rgba(174,124,20,0.4)', - 'attention-subtle': 'rgba(174,124,20,0.15)', - 'avatar-bg': 'rgba(205,217,229,0.1)', - 'avatar-border': 'rgba(205,217,229,0.1)', - 'avatar-child-shadow': '-2px -2px 0 #22272e', - 'avatar-stack-fade-more': '#373e47', - 'avatar-stack-fade': '#444c56', - 'border-default': '#444c56', - 'border-muted': '#373e47', - 'border-subtle': 'rgba(205,217,229,0.1)', - 'btn-active-bg': 'hsla(213,12%,27%,1)', - 'btn-active-border': '#636e7b', - 'btn-bg': '#373e47', - 'btn-border': 'rgba(205,217,229,0.1)', - 'btn-counter-bg': '#444c56', - 'btn-danger-counter-bg': 'rgba(201,60,55,0.1)', - 'btn-danger-disabled-bg': '#22272e', - 'btn-danger-disabled-counter-bg': 'rgba(201,60,55,0.05)', - 'btn-danger-disabled-text': 'rgba(229,83,75,0.5)', - 'btn-danger-focus-border': '#e5534b', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(229,83,75,0.4)', - 'btn-danger-hover-bg': '#c93c37', - 'btn-danger-hover-border': '#e5534b', - 'btn-danger-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-danger-hover-icon': '#cdd9e5', - 'btn-danger-hover-inset-shadow': '0 0 transparent', - 'btn-danger-hover-shadow': '0 0 transparent', - 'btn-danger-hover-text': '#cdd9e5', - 'btn-danger-icon': '#e5534b', - 'btn-danger-selected-bg': '#ad2e2c', - 'btn-danger-selected-border': '#f47067', - 'btn-danger-selected-shadow': '0 0 transparent', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#e5534b', - 'btn-focus-bg': '#373e47', - 'btn-focus-border': '#768390', - 'btn-focus-shadow': '0 0 0 3px rgba(118,131,144,0.3)', - 'btn-hover-bg': '#444c56', - 'btn-hover-border': '#768390', - 'btn-inset-shadow': '0 0 transparent', - 'btn-outline-counter-bg': 'rgba(49,109,202,0.1)', - 'btn-outline-disabled-bg': '#22272e', - 'btn-outline-disabled-counter-bg': 'rgba(49,109,202,0.05)', - 'btn-outline-disabled-text': 'rgba(83,155,245,0.5)', - 'btn-outline-focus-border': 'rgba(205,217,229,0.1)', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(37,90,178,0.4)', - 'btn-outline-hover-bg': '#444c56', - 'btn-outline-hover-border': 'rgba(205,217,229,0.1)', - 'btn-outline-hover-counter-bg': 'rgba(205,217,229,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(205,217,229,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(28,33,40,0.1)', - 'btn-outline-hover-text': '#539bf5', - 'btn-outline-selected-bg': '#1b4b91', - 'btn-outline-selected-border': 'rgba(205,217,229,0.1)', - 'btn-outline-selected-shadow': '0 0 transparent', - 'btn-outline-selected-text': '#cdd9e5', - 'btn-outline-text': '#539bf5', - 'btn-primary-bg': '#347d39', - 'btn-primary-border': 'rgba(205,217,229,0.1)', - 'btn-primary-counter-bg': 'rgba(205,217,229,0.2)', - 'btn-primary-disabled-bg': 'rgba(52,125,57,0.6)', - 'btn-primary-disabled-border': 'rgba(205,217,229,0.1)', - 'btn-primary-disabled-text': 'rgba(205,217,229,0.5)', - 'btn-primary-focus-bg': '#347d39', - 'btn-primary-focus-border': 'rgba(205,217,229,0.1)', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(46,164,79,0.4)', - 'btn-primary-hover-bg': '#46954a', - 'btn-primary-hover-border': 'rgba(205,217,229,0.1)', - 'btn-primary-icon': '#cdd9e5', - 'btn-primary-inset-shadow': '0 0 transparent', - 'btn-primary-selected-bg': '#347d39', - 'btn-primary-selected-shadow': '0 0 transparent', - 'btn-primary-shadow': '0 0 transparent', - 'btn-primary-text': '#ffffff', - 'btn-selected-bg': '#2d333b', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(28,33,40,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(49,109,202,0.3)', - 'btn-shadow': '0 0 transparent', - 'btn-text': '#adbac7', - 'canvas-default-transparent': 'rgba(34,39,46,0)', - 'canvas-default': '#22272e', - 'canvas-inset': '#1c2128', - 'canvas-overlay': '#2d333b', - 'canvas-subtle': '#2d333b', - 'checks-ansi-black-bright': '#2d333b', - 'checks-ansi-black': '#22272e', - 'checks-ansi-blue-bright': '#6cb6ff', - 'checks-ansi-blue': '#539bf5', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#636e7b', - 'checks-ansi-green-bright': '#6bc46d', - 'checks-ansi-green': '#57ab5a', - 'checks-ansi-magenta-bright': '#dcbdfb', - 'checks-ansi-magenta': '#b083f0', - 'checks-ansi-red-bright': '#ff938a', - 'checks-ansi-red': '#f47067', - 'checks-ansi-white-bright': '#909dab', - 'checks-ansi-white': '#909dab', - 'checks-ansi-yellow-bright': '#daaa3f', - 'checks-ansi-yellow': '#c69026', - 'checks-bg': '#1c2128', - 'checks-btn-hover-bg': 'rgba(99,110,123,0.1)', - 'checks-btn-hover-icon': '#adbac7', - 'checks-btn-icon': '#768390', - 'checks-container-border-width': '1px', - 'checks-donut-error': '#e5534b', - 'checks-donut-neutral': '#768390', - 'checks-donut-pending': '#c69026', - 'checks-donut-success': '#46954a', - 'checks-dropdown-bg': '#2d333b', - 'checks-dropdown-border': '#444c56', - 'checks-dropdown-btn-hover-bg': 'rgba(99,110,123,0.1)', - 'checks-dropdown-btn-hover-text': '#adbac7', - 'checks-dropdown-hover-bg': 'rgba(99,110,123,0.1)', - 'checks-dropdown-hover-text': '#adbac7', - 'checks-dropdown-shadow': 'rgba(28,33,40,0.3)', - 'checks-dropdown-text': '#adbac7', - 'checks-gate-bg': 'rgba(174,124,20,0.15)', - 'checks-gate-text': '#768390', - 'checks-gate-waiting-text': '#c69026', - 'checks-header-border': '#373e47', - 'checks-header-icon': '#768390', - 'checks-header-label-open-text': '#adbac7', - 'checks-header-label-text': '#768390', - 'checks-input-bg': '#2d333b', - 'checks-input-focus-text': '#adbac7', - 'checks-input-placeholder-text': '#545d68', - 'checks-input-shadow': '0 0 0 1px (obj) => get_1.default(obj, path)', - 'checks-input-text': '#768390', - 'checks-line-dt-fm-bg': '#966600', - 'checks-line-dt-fm-text': '#cdd9e5', - 'checks-line-hover-bg': 'rgba(99,110,123,0.1)', - 'checks-line-num-text': '#545d68', - 'checks-line-selected-bg': 'rgba(65,132,228,0.15)', - 'checks-line-selected-num-text': '#539bf5', - 'checks-line-text': '#768390', - 'checks-line-timestamp-text': '#545d68', - 'checks-logline-command-text': '#539bf5', - 'checks-logline-debug-text': '#986ee2', - 'checks-logline-error-bg': 'rgba(229,83,75,0.15)', - 'checks-logline-error-num-text': '#545d68', - 'checks-logline-error-text': '#768390', - 'checks-logline-num-text': '#545d68', - 'checks-logline-section-text': '#57ab5a', - 'checks-logline-text': '#768390', - 'checks-logline-warning-bg': 'rgba(174,124,20,0.15)', - 'checks-logline-warning-num-text': '#c69026', - 'checks-logline-warning-text': '#768390', - 'checks-run-border-width': '1px', - 'checks-scrollbar-thumb-bg': 'rgba(99,110,123,0.4)', - 'checks-step-error-text': '#e5534b', - 'checks-step-header-open-bg': '#2d333b', - 'checks-step-warning-text': '#c69026', - 'checks-text-link': '#539bf5', - 'checks-text-primary': '#adbac7', - 'checks-text-secondary': '#768390', - 'codemirror-activeline-bg': 'rgba(99,110,123,0.1)', - 'codemirror-bg': '#22272e', - 'codemirror-cursor': '#adbac7', - 'codemirror-guttermarker-subtle-text': '#545d68', - 'codemirror-guttermarker-text': '#22272e', - 'codemirror-gutters-bg': '#22272e', - 'codemirror-linenumber-text': '#768390', - 'codemirror-lines-bg': '#22272e', - 'codemirror-matchingbracket-text': '#adbac7', - 'codemirror-selection-bg': 'rgba(65,132,228,0.4)', - 'codemirror-syntax-comment': '#768390', - 'codemirror-syntax-constant': '#6cb6ff', - 'codemirror-syntax-entity': '#dcbdfb', - 'codemirror-syntax-keyword': '#f47067', - 'codemirror-syntax-storage': '#f47067', - 'codemirror-syntax-string': '#96d0ff', - 'codemirror-syntax-support': '#6cb6ff', - 'codemirror-syntax-variable': '#f69d50', - 'codemirror-text': '#adbac7', - 'counter-border': 'rgba(0,0,0,0)', - 'danger-emphasis': '#c93c37', - 'danger-fg': '#e5534b', - 'danger-muted': 'rgba(229,83,75,0.4)', - 'danger-subtle': 'rgba(229,83,75,0.15)', - 'diff-blob-addition-fg': '#adbac7', - 'diff-blob-addition-line-bg': 'rgba(70,149,74,0.15)', - 'diff-blob-addition-num-bg': 'rgba(87,171,90,0.3)', - 'diff-blob-addition-num-text': '#adbac7', - 'diff-blob-addition-word-bg': 'rgba(70,149,74,0.4)', - 'diff-blob-deletion-fg': '#adbac7', - 'diff-blob-deletion-line-bg': 'rgba(229,83,75,0.15)', - 'diff-blob-deletion-num-bg': 'rgba(229,83,75,0.3)', - 'diff-blob-deletion-num-text': '#adbac7', - 'diff-blob-deletion-word-bg': 'rgba(229,83,75,0.4)', - 'diff-blob-expander-icon': '#768390', - 'diff-blob-hunk-num-bg': 'rgba(65,132,228,0.4)', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'screen', - 'diffstat-addition-bg': '#57ab5a', - 'diffstat-addition-border': 'rgba(205,217,229,0.1)', - 'diffstat-deletion-border': 'rgba(205,217,229,0.1)', - 'done-emphasis': '#8256d0', - 'done-fg': '#986ee2', - 'done-muted': 'rgba(152,110,226,0.4)', - 'done-subtle': 'rgba(152,110,226,0.15)', - 'fg-default': '#adbac7', - 'fg-muted': '#768390', - 'fg-on-emphasis': '#cdd9e5', - 'fg-subtle': '#545d68', - 'header-bg': '#2d333b', - 'header-divider': '#768390', - 'header-logo': '#cdd9e5', - 'header-search-bg': '#22272e', - 'header-search-border': '#444c56', - 'header-text': 'rgba(205,217,229,0.7)', - 'input-disabled-bg': 'rgba(99,110,123,0)', - 'marketing-icon-primary': '#6cb6ff', - 'marketing-icon-secondary': '#316dca', - 'menu-bg-active': '#2d333b', - 'mktg-btn-bg': '#f6f8fa', - 'mktg-btn-shadow-focus': 'rgb(255 255 255 / 25%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(255 255 255) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07)', - 'mktg-btn-shadow-outline': 'rgb(255 255 255 / 25%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#636e7b', - 'neutral-emphasis': '#636e7b', - 'neutral-muted': 'rgba(99,110,123,0.4)', - 'neutral-subtle': 'rgba(99,110,123,0.1)', - 'overlay-shadow': '0 0 0 1px #444c56, 0 16px 32px rgba(28,33,40,0.85)', - 'page-header-bg': '#22272e', - 'prettylights-syntax-brackethighlighter-angle': '#768390', - 'prettylights-syntax-brackethighlighter-unmatched': '#e5534b', - 'prettylights-syntax-carriage-return-bg': '#ad2e2c', - 'prettylights-syntax-carriage-return-text': '#cdd9e5', - 'prettylights-syntax-comment': '#768390', - 'prettylights-syntax-constant-other-reference-link': '#96d0ff', - 'prettylights-syntax-constant': '#6cb6ff', - 'prettylights-syntax-entity-tag': '#8ddb8c', - 'prettylights-syntax-entity': '#dcbdfb', - 'prettylights-syntax-invalid-illegal-bg': '#922323', - 'prettylights-syntax-invalid-illegal-text': '#cdd9e5', - 'prettylights-syntax-keyword': '#f47067', - 'prettylights-syntax-markup-bold': '#adbac7', - 'prettylights-syntax-markup-changed-bg': '#682d0f', - 'prettylights-syntax-markup-changed-text': '#ffddb0', - 'prettylights-syntax-markup-deleted-bg': '#78191b', - 'prettylights-syntax-markup-deleted-text': '#ffd8d3', - 'prettylights-syntax-markup-heading': '#316dca', - 'prettylights-syntax-markup-ignored-bg': '#255ab2', - 'prettylights-syntax-markup-ignored-text': '#adbac7', - 'prettylights-syntax-markup-inserted-bg': '#1b4721', - 'prettylights-syntax-markup-inserted-text': '#b4f1b4', - 'prettylights-syntax-markup-italic': '#adbac7', - 'prettylights-syntax-markup-list': '#eac55f', - 'prettylights-syntax-meta-diff-range': '#dcbdfb', - 'prettylights-syntax-storage-modifier-import': '#adbac7', - 'prettylights-syntax-string-regexp': '#8ddb8c', - 'prettylights-syntax-string': '#96d0ff', - 'prettylights-syntax-sublimelinter-gutter-mark': '#545d68', - 'prettylights-syntax-variable': '#f69d50', - 'primer-border-active': '#EC775C', - 'primer-border-contrast': 'rgba(205,217,229,0.2)', - 'primer-canvas-backdrop': 'rgba(28,33,40,0.8)', - 'primer-canvas-sticky': 'rgba(34,39,46,0.95)', - 'primer-fg-disabled': '#545d68', - 'primer-shadow-focus': '0 0 0 3px #143d79', - 'primer-shadow-highlight': '0 0 transparent', - 'primer-shadow-inset': '0 0 transparent', - 'project-gradient-in': '#2d333b', - 'project-gradient-out': 'rgba(45,51,59,0)', - 'project-header-bg': '#22272e', - 'project-sidebar-bg': '#2d333b', - 'scale-black': '#1c2128', - 'scale-blue-0': '#c6e6ff', - 'scale-blue-1': '#96d0ff', - 'scale-blue-2': '#6cb6ff', - 'scale-blue-3': '#539bf5', - 'scale-blue-4': '#4184e4', - 'scale-blue-5': '#316dca', - 'scale-blue-6': '#255ab2', - 'scale-blue-7': '#1b4b91', - 'scale-blue-8': '#143d79', - 'scale-blue-9': '#0f2d5c', - 'scale-coral-0': '#FFDACF', - 'scale-coral-1': '#FFB9A5', - 'scale-coral-2': '#F79981', - 'scale-coral-3': '#EC775C', - 'scale-coral-4': '#DE5B41', - 'scale-coral-5': '#C2442D', - 'scale-coral-6': '#A93524', - 'scale-coral-7': '#8D291B', - 'scale-coral-8': '#771D13', - 'scale-coral-9': '#5D1008', - 'scale-gray-0': '#cdd9e5', - 'scale-gray-1': '#adbac7', - 'scale-gray-2': '#909dab', - 'scale-gray-3': '#768390', - 'scale-gray-4': '#636e7b', - 'scale-gray-5': '#545d68', - 'scale-gray-6': '#444c56', - 'scale-gray-7': '#373e47', - 'scale-gray-8': '#2d333b', - 'scale-gray-9': '#22272e', - 'scale-green-0': '#b4f1b4', - 'scale-green-1': '#8ddb8c', - 'scale-green-2': '#6bc46d', - 'scale-green-3': '#57ab5a', - 'scale-green-4': '#46954a', - 'scale-green-5': '#347d39', - 'scale-green-6': '#2b6a30', - 'scale-green-7': '#245829', - 'scale-green-8': '#1b4721', - 'scale-green-9': '#113417', - 'scale-orange-0': '#ffddb0', - 'scale-orange-1': '#ffbc6f', - 'scale-orange-2': '#f69d50', - 'scale-orange-3': '#e0823d', - 'scale-orange-4': '#cc6b2c', - 'scale-orange-5': '#ae5622', - 'scale-orange-6': '#94471b', - 'scale-orange-7': '#7f3913', - 'scale-orange-8': '#682d0f', - 'scale-orange-9': '#4d210c', - 'scale-pink-0': '#ffd7eb', - 'scale-pink-1': '#ffb3d8', - 'scale-pink-2': '#fc8dc7', - 'scale-pink-3': '#e275ad', - 'scale-pink-4': '#c96198', - 'scale-pink-5': '#ae4c82', - 'scale-pink-6': '#983b6e', - 'scale-pink-7': '#7e325a', - 'scale-pink-8': '#69264a', - 'scale-pink-9': '#551639', - 'scale-purple-0': '#eedcff', - 'scale-purple-1': '#dcbdfb', - 'scale-purple-2': '#dcbdfb', - 'scale-purple-3': '#b083f0', - 'scale-purple-4': '#986ee2', - 'scale-purple-5': '#8256d0', - 'scale-purple-6': '#6b44bc', - 'scale-purple-7': '#5936a2', - 'scale-purple-8': '#472c82', - 'scale-purple-9': '#352160', - 'scale-red-0': '#ffd8d3', - 'scale-red-1': '#ffb8b0', - 'scale-red-2': '#ff938a', - 'scale-red-3': '#f47067', - 'scale-red-4': '#e5534b', - 'scale-red-5': '#c93c37', - 'scale-red-6': '#ad2e2c', - 'scale-red-7': '#922323', - 'scale-red-8': '#78191b', - 'scale-red-9': '#5D0F12', - 'scale-white': '#cdd9e5', - 'scale-yellow-0': '#fbe090', - 'scale-yellow-1': '#eac55f', - 'scale-yellow-2': '#daaa3f', - 'scale-yellow-3': '#c69026', - 'scale-yellow-4': '#ae7c14', - 'scale-yellow-5': '#966600', - 'scale-yellow-6': '#805400', - 'scale-yellow-7': '#6c4400', - 'scale-yellow-8': '#593600', - 'scale-yellow-9': '#452700', - 'search-keyword-hl': 'rgba(198,144,38,0.4)', - 'select-menu-backdrop-border': '#545d68', - 'select-menu-tap-focus-bg': '#143d79', - 'select-menu-tap-highlight': 'rgba(68,76,86,0.5)', - 'severe-emphasis': '#ae5622', - 'severe-fg': '#cc6b2c', - 'severe-muted': 'rgba(204,107,44,0.4)', - 'severe-subtle': 'rgba(204,107,44,0.15)', - 'shadow-extra-large': '0 12px 48px #1c2128', - 'shadow-large': '0 8px 24px #1c2128', - 'shadow-medium': '0 3px 6px #1c2128', - 'shadow-small': '0 0 transparent', - 'sidenav-selected-bg': '#373e47', - 'sponsors-emphasis': '#ae4c82', - 'sponsors-fg': '#c96198', - 'sponsors-muted': 'rgba(201,97,152,0.4)', - 'sponsors-subtle': 'rgba(201,97,152,0.15)', - 'success-emphasis': '#347d39', - 'success-fg': '#57ab5a', - 'success-muted': 'rgba(70,149,74,0.4)', - 'success-subtle': 'rgba(70,149,74,0.15)', - 'timeline-badge-bg': '#373e47', - 'topic-tag-border': 'rgba(0,0,0,0)', - 'underlinenav-border-hover': 'rgba(99,110,123,0.4)', - 'underlinenav-icon': '#545d68', -); diff --git a/src/styles/themes/darkHighContrast.scss b/src/styles/themes/darkHighContrast.scss deleted file mode 100644 index eb3f09b..0000000 --- a/src/styles/themes/darkHighContrast.scss +++ /dev/null @@ -1,418 +0,0 @@ -$variables: ( - 'accent-emphasis': '#409eff', - 'accent-fg': '#71b7ff', - 'accent-muted': '#409eff', - 'accent-subtle': 'rgba(64,158,255,0.15)', - 'action-list-item-danger-active-bg': '#ff4445', - 'action-list-item-danger-hover-bg': '#ff6a69', - 'action-list-item-danger-hover-text': '#0a0c10', - 'action-list-item-default-active-bg': 'rgba(217,222,227,0.24)', - 'action-list-item-default-hover-bg': 'rgba(217,222,227,0.12)', - 'action-list-item-default-selected-bg': 'rgba(217,222,227,0.08)', - 'action-list-item-inline-divider': '#7a828e', - 'ansi-black-bright': '#9ea7b3', - 'ansi-black': '#7a828e', - 'ansi-blue-bright': '#91cbff', - 'ansi-blue': '#71b7ff', - 'ansi-cyan-bright': '#56d4dd', - 'ansi-cyan': '#39c5cf', - 'ansi-gray': '#9ea7b3', - 'ansi-green-bright': '#4ae168', - 'ansi-green': '#26cd4d', - 'ansi-magenta-bright': '#dbb7ff', - 'ansi-magenta': '#cb9eff', - 'ansi-red-bright': '#ffb1af', - 'ansi-red': '#ff9492', - 'ansi-white-bright': '#ffffff', - 'ansi-white': '#d9dee3', - 'ansi-yellow-bright': '#f7c843', - 'ansi-yellow': '#f0b72f', - 'attention-emphasis': '#e09b13', - 'attention-fg': '#f0b72f', - 'attention-muted': '#e09b13', - 'attention-subtle': 'rgba(224,155,19,0.15)', - 'avatar-bg': 'rgba(255,255,255,0.1)', - 'avatar-border': 'rgba(255,255,255,0.9)', - 'avatar-child-shadow': '-2px -2px 0 #0a0c10', - 'avatar-stack-fade-more': '#272b33', - 'avatar-stack-fade': '#525964', - 'border-default': '#7a828e', - 'border-muted': '#7a828e', - 'border-subtle': '#7a828e', - 'btn-active-bg': 'hsla(217,10%,33%,1)', - 'btn-active-border': '#9ea7b3', - 'btn-bg': '#272b33', - 'btn-border': '#7a828e', - 'btn-counter-bg': '#525964', - 'btn-danger-counter-bg': 'rgba(1,4,9,0.15)', - 'btn-danger-disabled-bg': '#0a0c10', - 'btn-danger-disabled-counter-bg': 'rgba(255,106,105,0.05)', - 'btn-danger-disabled-text': 'rgba(255,106,105,0.5)', - 'btn-danger-focus-border': '#ff6a69', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(255,106,105,0.4)', - 'btn-danger-hover-bg': '#ff6a69', - 'btn-danger-hover-border': '#ff6a69', - 'btn-danger-hover-counter-bg': 'rgba(1,4,9,0.15)', - 'btn-danger-hover-icon': '#0a0c10', - 'btn-danger-hover-inset-shadow': '0 0 transparent', - 'btn-danger-hover-shadow': '0 0 transparent', - 'btn-danger-hover-text': '#0a0c10', - 'btn-danger-icon': '#ff6a69', - 'btn-danger-selected-bg': '#ff4445', - 'btn-danger-selected-border': '#ff9492', - 'btn-danger-selected-shadow': '0 0 transparent', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#ff6a69', - 'btn-focus-bg': '#272b33', - 'btn-focus-border': '#bdc4cc', - 'btn-focus-shadow': '0 0 0 3px rgba(189,196,204,0.3)', - 'btn-hover-bg': '#525964', - 'btn-hover-border': '#bdc4cc', - 'btn-inset-shadow': '0 0 transparent', - 'btn-outline-counter-bg': 'rgba(64,158,255,0.1)', - 'btn-outline-disabled-bg': '#0a0c10', - 'btn-outline-disabled-counter-bg': 'rgba(64,158,255,0.05)', - 'btn-outline-disabled-text': 'rgba(113,183,255,0.5)', - 'btn-outline-focus-border': '#7a828e', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(49,139,248,0.4)', - 'btn-outline-hover-bg': '#525964', - 'btn-outline-hover-border': '#7a828e', - 'btn-outline-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(1,4,9,0.1)', - 'btn-outline-hover-text': '#71b7ff', - 'btn-outline-selected-bg': '#2672f3', - 'btn-outline-selected-border': '#7a828e', - 'btn-outline-selected-shadow': '0 0 transparent', - 'btn-outline-selected-text': '#ffffff', - 'btn-outline-text': '#71b7ff', - 'btn-primary-bg': '#09b43a', - 'btn-primary-border': '#4ae168', - 'btn-primary-counter-bg': 'rgba(1,4,9,0.15)', - 'btn-primary-disabled-bg': 'rgba(9,180,58,0.6)', - 'btn-primary-disabled-border': 'rgba(74,225,104,0.4)', - 'btn-primary-disabled-text': 'rgba(10,12,16,0.5)', - 'btn-primary-focus-bg': '#09b43a', - 'btn-primary-focus-border': '#7a828e', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(46,164,79,0.4)', - 'btn-primary-hover-bg': '#26cd4d', - 'btn-primary-hover-border': '#4ae168', - 'btn-primary-icon': '#0a0c10', - 'btn-primary-inset-shadow': '0 0 transparent', - 'btn-primary-selected-bg': '#09b43a', - 'btn-primary-selected-shadow': '0 0 transparent', - 'btn-primary-shadow': '0 0 transparent', - 'btn-primary-text': '#0a0c10', - 'btn-selected-bg': 'rgba(82,89,100,0.9)', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(1,4,9,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(64,158,255,0.3)', - 'btn-shadow': '0 0 transparent', - 'btn-text': '#f0f3f6', - 'canvas-default-transparent': 'rgba(10,12,16,0)', - 'canvas-default': '#0a0c10', - 'canvas-inset': '#010409', - 'canvas-overlay': '#272b33', - 'canvas-subtle': '#272b33', - 'checks-ansi-black-bright': '#272b33', - 'checks-ansi-black': '#0a0c10', - 'checks-ansi-blue-bright': '#91cbff', - 'checks-ansi-blue': '#71b7ff', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#9ea7b3', - 'checks-ansi-green-bright': '#4ae168', - 'checks-ansi-green': '#26cd4d', - 'checks-ansi-magenta-bright': '#dbb7ff', - 'checks-ansi-magenta': '#cb9eff', - 'checks-ansi-red-bright': '#ffb1af', - 'checks-ansi-red': '#ff9492', - 'checks-ansi-white-bright': '#d9dee3', - 'checks-ansi-white': '#d9dee3', - 'checks-ansi-yellow-bright': '#f7c843', - 'checks-ansi-yellow': '#f0b72f', - 'checks-bg': '#010409', - 'checks-btn-hover-bg': 'rgba(158,167,179,0.1)', - 'checks-btn-hover-icon': '#f0f3f6', - 'checks-btn-icon': '#f0f3f6', - 'checks-container-border-width': '1px', - 'checks-donut-error': '#ff6a69', - 'checks-donut-neutral': '#bdc4cc', - 'checks-donut-pending': '#f0b72f', - 'checks-donut-success': '#09b43a', - 'checks-dropdown-bg': '#272b33', - 'checks-dropdown-border': '#7a828e', - 'checks-dropdown-btn-hover-bg': 'rgba(158,167,179,0.1)', - 'checks-dropdown-btn-hover-text': '#f0f3f6', - 'checks-dropdown-hover-bg': 'rgba(158,167,179,0.1)', - 'checks-dropdown-hover-text': '#f0f3f6', - 'checks-dropdown-shadow': 'rgba(1,4,9,0.3)', - 'checks-dropdown-text': '#f0f3f6', - 'checks-gate-bg': 'rgba(224,155,19,0.15)', - 'checks-gate-text': '#f0f3f6', - 'checks-gate-waiting-text': '#f0b72f', - 'checks-header-border': '#7a828e', - 'checks-header-icon': '#f0f3f6', - 'checks-header-label-open-text': '#f0f3f6', - 'checks-header-label-text': '#f0f3f6', - 'checks-input-bg': '#272b33', - 'checks-input-focus-text': '#f0f3f6', - 'checks-input-placeholder-text': '#7a828e', - 'checks-input-shadow': '0 0 0 1px (obj) => get_1.default(obj, path)', - 'checks-input-text': '#f0f3f6', - 'checks-line-dt-fm-bg': '#e09b13', - 'checks-line-dt-fm-text': '#0a0c10', - 'checks-line-hover-bg': 'rgba(158,167,179,0.1)', - 'checks-line-num-text': '#7a828e', - 'checks-line-selected-bg': 'rgba(64,158,255,0.15)', - 'checks-line-selected-num-text': '#71b7ff', - 'checks-line-text': '#f0f3f6', - 'checks-line-timestamp-text': '#7a828e', - 'checks-logline-command-text': '#71b7ff', - 'checks-logline-debug-text': '#b780ff', - 'checks-logline-error-bg': 'rgba(255,106,105,0.15)', - 'checks-logline-error-num-text': '#7a828e', - 'checks-logline-error-text': '#f0f3f6', - 'checks-logline-num-text': '#7a828e', - 'checks-logline-section-text': '#26cd4d', - 'checks-logline-text': '#f0f3f6', - 'checks-logline-warning-bg': 'rgba(224,155,19,0.15)', - 'checks-logline-warning-num-text': '#f0b72f', - 'checks-logline-warning-text': '#f0f3f6', - 'checks-run-border-width': '1px', - 'checks-scrollbar-thumb-bg': 'rgba(158,167,179,0.4)', - 'checks-step-error-text': '#ff6a69', - 'checks-step-header-open-bg': '#272b33', - 'checks-step-warning-text': '#f0b72f', - 'checks-text-link': '#71b7ff', - 'checks-text-primary': '#f0f3f6', - 'checks-text-secondary': '#f0f3f6', - 'codemirror-activeline-bg': 'rgba(158,167,179,0.1)', - 'codemirror-bg': '#0a0c10', - 'codemirror-cursor': '#f0f3f6', - 'codemirror-guttermarker-subtle-text': '#7a828e', - 'codemirror-guttermarker-text': '#0a0c10', - 'codemirror-gutters-bg': '#0a0c10', - 'codemirror-linenumber-text': '#f0f3f6', - 'codemirror-lines-bg': '#0a0c10', - 'codemirror-matchingbracket-text': '#f0f3f6', - 'codemirror-selection-bg': 'rgba(64,158,255,0.4)', - 'codemirror-syntax-comment': '#bdc4cc', - 'codemirror-syntax-constant': '#91cbff', - 'codemirror-syntax-entity': '#dbb7ff', - 'codemirror-syntax-keyword': '#ff9492', - 'codemirror-syntax-storage': '#ff9492', - 'codemirror-syntax-string': '#addcff', - 'codemirror-syntax-support': '#91cbff', - 'codemirror-syntax-variable': '#ffb757', - 'codemirror-text': '#f0f3f6', - 'counter-border': 'rgba(0,0,0,0)', - 'danger-emphasis': '#ff6a69', - 'danger-fg': '#ff6a69', - 'danger-muted': '#ff6a69', - 'danger-subtle': 'rgba(255,106,105,0.15)', - 'diff-blob-addition-fg': '#0a0c10', - 'diff-blob-addition-line-bg': 'rgba(9,180,58,0.15)', - 'diff-blob-addition-num-bg': 'rgba(38,205,77,0.3)', - 'diff-blob-addition-num-text': '#f0f3f6', - 'diff-blob-addition-word-bg': '#09b43a', - 'diff-blob-deletion-fg': '#0a0c10', - 'diff-blob-deletion-line-bg': 'rgba(255,106,105,0.15)', - 'diff-blob-deletion-num-bg': 'rgba(255,106,105,0.3)', - 'diff-blob-deletion-num-text': '#f0f3f6', - 'diff-blob-deletion-word-bg': '#ff6a69', - 'diff-blob-expander-icon': '#f0f3f6', - 'diff-blob-hunk-num-bg': 'rgba(64,158,255,0.4)', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'screen', - 'diffstat-addition-bg': '#26cd4d', - 'diffstat-addition-border': '#4ae168', - 'diffstat-deletion-border': '#ffb1af', - 'done-emphasis': '#b87fff', - 'done-fg': '#b780ff', - 'done-muted': '#b780ff', - 'done-subtle': 'rgba(183,128,255,0.15)', - 'fg-default': '#f0f3f6', - 'fg-muted': '#f0f3f6', - 'fg-on-emphasis': '#0a0c10', - 'fg-subtle': '#7a828e', - 'header-bg': '#272b33', - 'header-divider': '#bdc4cc', - 'header-logo': '#ffffff', - 'header-search-bg': '#0a0c10', - 'header-search-border': '#525964', - 'header-text': 'rgba(255,255,255,0.7)', - 'input-disabled-bg': 'rgba(158,167,179,0)', - 'marketing-icon-primary': '#91cbff', - 'marketing-icon-secondary': '#409eff', - 'menu-bg-active': '#272b33', - 'mktg-btn-bg': '#f6f8fa', - 'mktg-btn-shadow-focus': 'rgb(255 255 255 / 25%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(255 255 255) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07)', - 'mktg-btn-shadow-outline': 'rgb(255 255 255 / 25%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#ffffff', - 'neutral-emphasis': '#9ea7b3', - 'neutral-muted': 'rgba(158,167,179,0.4)', - 'neutral-subtle': 'rgba(158,167,179,0.1)', - 'overlay-shadow': '0 0 0 1px #525964, 0 16px 32px rgba(1,4,9,0.85)', - 'page-header-bg': '#0a0c10', - 'prettylights-syntax-brackethighlighter-angle': '#bdc4cc', - 'prettylights-syntax-brackethighlighter-unmatched': '#ff6a69', - 'prettylights-syntax-carriage-return-bg': '#ff4445', - 'prettylights-syntax-carriage-return-text': '#ffffff', - 'prettylights-syntax-comment': '#bdc4cc', - 'prettylights-syntax-constant-other-reference-link': '#addcff', - 'prettylights-syntax-constant': '#91cbff', - 'prettylights-syntax-entity-tag': '#72f088', - 'prettylights-syntax-entity': '#dbb7ff', - 'prettylights-syntax-invalid-illegal-bg': '#e82a2f', - 'prettylights-syntax-invalid-illegal-text': '#ffffff', - 'prettylights-syntax-keyword': '#ff9492', - 'prettylights-syntax-markup-bold': '#f0f3f6', - 'prettylights-syntax-markup-changed-bg': '#a74c00', - 'prettylights-syntax-markup-changed-text': '#ffe1b4', - 'prettylights-syntax-markup-deleted-bg': '#cc1421', - 'prettylights-syntax-markup-deleted-text': '#ffdedb', - 'prettylights-syntax-markup-heading': '#409eff', - 'prettylights-syntax-markup-ignored-bg': '#318bf8', - 'prettylights-syntax-markup-ignored-text': '#f0f3f6', - 'prettylights-syntax-markup-inserted-bg': '#007728', - 'prettylights-syntax-markup-inserted-text': '#acf7b6', - 'prettylights-syntax-markup-italic': '#f0f3f6', - 'prettylights-syntax-markup-list': '#fbd669', - 'prettylights-syntax-meta-diff-range': '#dbb7ff', - 'prettylights-syntax-storage-modifier-import': '#f0f3f6', - 'prettylights-syntax-string-regexp': '#72f088', - 'prettylights-syntax-string': '#addcff', - 'prettylights-syntax-sublimelinter-gutter-mark': '#7a828e', - 'prettylights-syntax-variable': '#ffb757', - 'primer-border-active': '#FF967D', - 'primer-border-contrast': 'rgba(255,255,255,0.2)', - 'primer-canvas-backdrop': 'rgba(1,4,9,0.8)', - 'primer-canvas-sticky': 'rgba(10,12,16,0.95)', - 'primer-fg-disabled': '#7a828e', - 'primer-shadow-focus': '0 0 0 3px #1e60d5', - 'primer-shadow-highlight': '0 0 transparent', - 'primer-shadow-inset': '0 0 transparent', - 'project-gradient-in': '#272b33', - 'project-gradient-out': 'rgba(39,43,51,0)', - 'project-header-bg': '#0a0c10', - 'project-sidebar-bg': '#272b33', - 'scale-black': '#010409', - 'scale-blue-0': '#caeaff', - 'scale-blue-1': '#addcff', - 'scale-blue-2': '#91cbff', - 'scale-blue-3': '#71b7ff', - 'scale-blue-4': '#409eff', - 'scale-blue-5': '#409eff', - 'scale-blue-6': '#318bf8', - 'scale-blue-7': '#2672f3', - 'scale-blue-8': '#1e60d5', - 'scale-blue-9': '#194fb1', - 'scale-coral-0': '#FFDED4', - 'scale-coral-1': '#FFCBB9', - 'scale-coral-2': '#FFB39B', - 'scale-coral-3': '#FF967D', - 'scale-coral-4': '#FC704F', - 'scale-coral-5': '#FC704F', - 'scale-coral-6': '#F75133', - 'scale-coral-7': '#E03B21', - 'scale-coral-8': '#C62612', - 'scale-coral-9': '#A91500', - 'scale-gray-0': '#ffffff', - 'scale-gray-1': '#f0f3f6', - 'scale-gray-2': '#d9dee3', - 'scale-gray-3': '#bdc4cc', - 'scale-gray-4': '#9ea7b3', - 'scale-gray-5': '#7a828e', - 'scale-gray-6': '#525964', - 'scale-gray-7': '#272b33', - 'scale-gray-8': '#272b33', - 'scale-gray-9': '#0a0c10', - 'scale-green-0': '#acf7b6', - 'scale-green-1': '#72f088', - 'scale-green-2': '#4ae168', - 'scale-green-3': '#26cd4d', - 'scale-green-4': '#09b43a', - 'scale-green-5': '#09b43a', - 'scale-green-6': '#02a232', - 'scale-green-7': '#008c2c', - 'scale-green-8': '#007728', - 'scale-green-9': '#006222', - 'scale-orange-0': '#ffe1b4', - 'scale-orange-1': '#ffcf86', - 'scale-orange-2': '#ffb757', - 'scale-orange-3': '#fe9a2d', - 'scale-orange-4': '#e7811d', - 'scale-orange-5': '#e7811d', - 'scale-orange-6': '#d57014', - 'scale-orange-7': '#bf5e0a', - 'scale-orange-8': '#a74c00', - 'scale-orange-9': '#8f3c00', - 'scale-pink-0': '#ffdceb', - 'scale-pink-1': '#ffc7e1', - 'scale-pink-2': '#ffadd4', - 'scale-pink-3': '#ff8dc7', - 'scale-pink-4': '#ef6eb1', - 'scale-pink-5': '#ef6eb1', - 'scale-pink-6': '#e456a3', - 'scale-pink-7': '#d23d91', - 'scale-pink-8': '#b72c7d', - 'scale-pink-9': '#9c1d6a', - 'scale-purple-0': '#f0dfff', - 'scale-purple-1': '#e6ccff', - 'scale-purple-2': '#dbb7ff', - 'scale-purple-3': '#cb9eff', - 'scale-purple-4': '#b780ff', - 'scale-purple-5': '#b87fff', - 'scale-purple-6': '#a66bff', - 'scale-purple-7': '#954ffd', - 'scale-purple-8': '#8031f7', - 'scale-purple-9': '#6921d7', - 'scale-red-0': '#ffdedb', - 'scale-red-1': '#ffc9c7', - 'scale-red-2': '#ffb1af', - 'scale-red-3': '#ff9492', - 'scale-red-4': '#ff6a69', - 'scale-red-5': '#ff6a69', - 'scale-red-6': '#ff4445', - 'scale-red-7': '#e82a2f', - 'scale-red-8': '#cc1421', - 'scale-red-9': '#ad0116', - 'scale-white': '#ffffff', - 'scale-yellow-0': '#fbe59e', - 'scale-yellow-1': '#fbd669', - 'scale-yellow-2': '#f7c843', - 'scale-yellow-3': '#f0b72f', - 'scale-yellow-4': '#e09b13', - 'scale-yellow-5': '#e09b13', - 'scale-yellow-6': '#c88508', - 'scale-yellow-7': '#ae7104', - 'scale-yellow-8': '#945d02', - 'scale-yellow-9': '#7b4900', - 'search-keyword-hl': 'rgba(240,183,47,0.4)', - 'select-menu-backdrop-border': '#7a828e', - 'select-menu-tap-focus-bg': '#1e60d5', - 'select-menu-tap-highlight': 'rgba(82,89,100,0.5)', - 'severe-emphasis': '#e7811d', - 'severe-fg': '#e7811d', - 'severe-muted': '#e7811d', - 'severe-subtle': 'rgba(231,129,29,0.15)', - 'shadow-extra-large': '0 12px 48px #010409', - 'shadow-large': '0 8px 24px #010409', - 'shadow-medium': '0 3px 6px #010409', - 'shadow-small': '0 0 transparent', - 'sidenav-selected-bg': '#272b33', - 'sponsors-emphasis': '#ef6eb1', - 'sponsors-fg': '#ef6eb1', - 'sponsors-muted': '#ef6eb1', - 'sponsors-subtle': 'rgba(239,110,177,0.15)', - 'success-emphasis': '#09b43a', - 'success-fg': '#26cd4d', - 'success-muted': '#09b43a', - 'success-subtle': 'rgba(9,180,58,0.15)', - 'timeline-badge-bg': '#272b33', - 'topic-tag-border': '#409eff', - 'underlinenav-border-hover': '#bdc4cc', - 'underlinenav-icon': '#f0f3f6', -); diff --git a/src/styles/themes/darkTritanopia.scss b/src/styles/themes/darkTritanopia.scss deleted file mode 100644 index 02acf0a..0000000 --- a/src/styles/themes/darkTritanopia.scss +++ /dev/null @@ -1,436 +0,0 @@ -$variables: ( - 'accent-emphasis': '#1f6feb', - 'accent-fg': '#58a6ff', - 'accent-muted': 'rgba(56,139,253,0.4)', - 'accent-subtle': 'rgba(56,139,253,0.15)', - 'action-list-item-danger-active-bg': 'rgba(248,81,73,0.24)', - 'action-list-item-danger-hover-bg': 'rgba(248,81,73,0.16)', - 'action-list-item-danger-hover-text': '#ff7b72', - 'action-list-item-default-active-bg': 'rgba(177,186,196,0.2)', - 'action-list-item-default-active-border': 'rgba(0,0,0,0)', - 'action-list-item-default-hover-bg': 'rgba(177,186,196,0.12)', - 'action-list-item-default-hover-border': 'rgba(0,0,0,0)', - 'action-list-item-default-selected-bg': 'rgba(177,186,196,0.08)', - 'action-list-item-inline-divider': 'rgba(48,54,61,0.48)', - 'ansi-black-bright': '#6e7681', - 'ansi-black': '#484f58', - 'ansi-blue-bright': '#79c0ff', - 'ansi-blue': '#58a6ff', - 'ansi-cyan-bright': '#56d4dd', - 'ansi-cyan': '#39c5cf', - 'ansi-gray': '#6e7681', - 'ansi-green-bright': '#79c0ff', - 'ansi-green': '#58a6ff', - 'ansi-magenta-bright': '#d2a8ff', - 'ansi-magenta': '#bc8cff', - 'ansi-red-bright': '#ffa198', - 'ansi-red': '#ff7b72', - 'ansi-white-bright': '#ffffff', - 'ansi-white': '#b1bac4', - 'ansi-yellow-bright': '#e3b341', - 'ansi-yellow': '#d29922', - 'attention-emphasis': '#9e6a03', - 'attention-fg': '#d29922', - 'attention-muted': 'rgba(187,128,9,0.4)', - 'attention-subtle': 'rgba(187,128,9,0.15)', - 'avatar-bg': 'rgba(255,255,255,0.1)', - 'avatar-border': 'rgba(240,246,252,0.1)', - 'avatar-child-shadow': '-2px -2px 0 #0d1117', - 'avatar-stack-fade-more': '#21262d', - 'avatar-stack-fade': '#30363d', - 'border-default': '#30363d', - 'border-muted': '#21262d', - 'border-subtle': 'rgba(240,246,252,0.1)', - 'btn-active-bg': 'hsla(212,12%,18%,1)', - 'btn-active-border': '#6e7681', - 'btn-bg': '#21262d', - 'btn-border': 'rgba(240,246,252,0.1)', - 'btn-counter-bg': '#30363d', - 'btn-danger-counter-bg': 'rgba(218,54,51,0.1)', - 'btn-danger-disabled-bg': '#0d1117', - 'btn-danger-disabled-counter-bg': 'rgba(218,54,51,0.05)', - 'btn-danger-disabled-text': 'rgba(248,81,73,0.5)', - 'btn-danger-focus-border': '#f85149', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(248,81,73,0.4)', - 'btn-danger-hover-bg': '#da3633', - 'btn-danger-hover-border': '#f85149', - 'btn-danger-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-danger-hover-icon': '#ffffff', - 'btn-danger-hover-inset-shadow': '0 0 transparent', - 'btn-danger-hover-shadow': '0 0 transparent', - 'btn-danger-hover-text': '#ffffff', - 'btn-danger-icon': '#f85149', - 'btn-danger-selected-bg': '#b62324', - 'btn-danger-selected-border': '#ff7b72', - 'btn-danger-selected-shadow': '0 0 transparent', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#f85149', - 'btn-focus-bg': '#21262d', - 'btn-focus-border': '#8b949e', - 'btn-focus-shadow': '0 0 0 3px rgba(139,148,158,0.3)', - 'btn-hover-bg': '#30363d', - 'btn-hover-border': '#8b949e', - 'btn-inset-shadow': '0 0 transparent', - 'btn-outline-counter-bg': 'rgba(31,111,235,0.1)', - 'btn-outline-disabled-bg': '#0d1117', - 'btn-outline-disabled-counter-bg': 'rgba(31,111,235,0.05)', - 'btn-outline-disabled-text': 'rgba(88,166,255,0.5)', - 'btn-outline-focus-border': 'rgba(240,246,252,0.1)', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(17,88,199,0.4)', - 'btn-outline-hover-bg': '#30363d', - 'btn-outline-hover-border': 'rgba(240,246,252,0.1)', - 'btn-outline-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(1,4,9,0.1)', - 'btn-outline-hover-text': '#58a6ff', - 'btn-outline-selected-bg': '#0d419d', - 'btn-outline-selected-border': 'rgba(240,246,252,0.1)', - 'btn-outline-selected-shadow': '0 0 transparent', - 'btn-outline-selected-text': '#ffffff', - 'btn-outline-text': '#58a6ff', - 'btn-primary-bg': '#1f6feb', - 'btn-primary-border': 'rgba(240,246,252,0.1)', - 'btn-primary-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-primary-disabled-bg': 'rgba(31,111,235,0.6)', - 'btn-primary-disabled-border': 'rgba(240,246,252,0.1)', - 'btn-primary-disabled-text': 'rgba(255,255,255,0.5)', - 'btn-primary-focus-bg': '#1f6feb', - 'btn-primary-focus-border': 'rgba(240,246,252,0.1)', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(46,164,79,0.4)', - 'btn-primary-hover-bg': '#388bfd', - 'btn-primary-hover-border': 'rgba(240,246,252,0.1)', - 'btn-primary-icon': '#ffffff', - 'btn-primary-inset-shadow': '0 0 transparent', - 'btn-primary-selected-bg': '#1f6feb', - 'btn-primary-selected-shadow': '0 0 transparent', - 'btn-primary-shadow': '0 0 transparent', - 'btn-primary-text': '#ffffff', - 'btn-selected-bg': '#161b22', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(1,4,9,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(31,111,235,0.3)', - 'btn-shadow': '0 0 transparent', - 'btn-text': '#c9d1d9', - 'canvas-default-transparent': 'rgba(13,17,23,0)', - 'canvas-default': '#0d1117', - 'canvas-inset': '#010409', - 'canvas-overlay': '#161b22', - 'canvas-subtle': '#161b22', - 'checks-ansi-black-bright': '#161b22', - 'checks-ansi-black': '#0d1117', - 'checks-ansi-blue-bright': '#79c0ff', - 'checks-ansi-blue': '#58a6ff', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#6e7681', - 'checks-ansi-green-bright': '#79c0ff', - 'checks-ansi-green': '#58a6ff', - 'checks-ansi-magenta-bright': '#d2a8ff', - 'checks-ansi-magenta': '#bc8cff', - 'checks-ansi-red-bright': '#ffa198', - 'checks-ansi-red': '#ff7b72', - 'checks-ansi-white-bright': '#b1bac4', - 'checks-ansi-white': '#b1bac4', - 'checks-ansi-yellow-bright': '#e3b341', - 'checks-ansi-yellow': '#d29922', - 'checks-bg': '#010409', - 'checks-btn-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-btn-hover-icon': '#c9d1d9', - 'checks-btn-icon': '#8b949e', - 'checks-container-border-width': '1px', - 'checks-donut-error': '#f85149', - 'checks-donut-neutral': '#8b949e', - 'checks-donut-pending': '#d29922', - 'checks-donut-success': '#388bfd', - 'checks-dropdown-bg': '#161b22', - 'checks-dropdown-border': '#30363d', - 'checks-dropdown-btn-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-dropdown-btn-hover-text': '#c9d1d9', - 'checks-dropdown-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-dropdown-hover-text': '#c9d1d9', - 'checks-dropdown-shadow': 'rgba(1,4,9,0.3)', - 'checks-dropdown-text': '#c9d1d9', - 'checks-gate-bg': 'rgba(187,128,9,0.15)', - 'checks-gate-text': '#8b949e', - 'checks-gate-waiting-text': '#d29922', - 'checks-header-border': '#21262d', - 'checks-header-icon': '#8b949e', - 'checks-header-label-open-text': '#c9d1d9', - 'checks-header-label-text': '#8b949e', - 'checks-input-bg': '#161b22', - 'checks-input-focus-text': '#c9d1d9', - 'checks-input-placeholder-text': '#6e7681', - 'checks-input-shadow': '0 0 0 1px (obj) => get_1.default(obj, path)', - 'checks-input-text': '#8b949e', - 'checks-line-dt-fm-bg': '#9e6a03', - 'checks-line-dt-fm-text': '#ffffff', - 'checks-line-hover-bg': 'rgba(110,118,129,0.1)', - 'checks-line-num-text': '#6e7681', - 'checks-line-selected-bg': 'rgba(56,139,253,0.15)', - 'checks-line-selected-num-text': '#58a6ff', - 'checks-line-text': '#8b949e', - 'checks-line-timestamp-text': '#6e7681', - 'checks-logline-command-text': '#58a6ff', - 'checks-logline-debug-text': '#a371f7', - 'checks-logline-error-bg': 'rgba(248,81,73,0.15)', - 'checks-logline-error-num-text': '#6e7681', - 'checks-logline-error-text': '#8b949e', - 'checks-logline-num-text': '#6e7681', - 'checks-logline-section-text': '#58a6ff', - 'checks-logline-text': '#8b949e', - 'checks-logline-warning-bg': 'rgba(187,128,9,0.15)', - 'checks-logline-warning-num-text': '#d29922', - 'checks-logline-warning-text': '#8b949e', - 'checks-run-border-width': '1px', - 'checks-scrollbar-thumb-bg': 'rgba(110,118,129,0.4)', - 'checks-step-error-text': '#f85149', - 'checks-step-header-open-bg': '#161b22', - 'checks-step-warning-text': '#d29922', - 'checks-text-link': '#58a6ff', - 'checks-text-primary': '#c9d1d9', - 'checks-text-secondary': '#8b949e', - 'closed-emphasis': '#6e7681', - 'closed-fg': '#8b949e', - 'closed-muted': 'rgba(110,118,129,0.4)', - 'closed-subtle': 'rgba(110,118,129,0.1)', - 'codemirror-activeline-bg': 'rgba(110,118,129,0.1)', - 'codemirror-bg': '#0d1117', - 'codemirror-cursor': '#c9d1d9', - 'codemirror-guttermarker-subtle-text': '#6e7681', - 'codemirror-guttermarker-text': '#0d1117', - 'codemirror-gutters-bg': '#0d1117', - 'codemirror-linenumber-text': '#8b949e', - 'codemirror-lines-bg': '#0d1117', - 'codemirror-matchingbracket-text': '#c9d1d9', - 'codemirror-selection-bg': 'rgba(56,139,253,0.4)', - 'codemirror-syntax-comment': '#8b949e', - 'codemirror-syntax-constant': '#79c0ff', - 'codemirror-syntax-entity': '#d2a8ff', - 'codemirror-syntax-keyword': '#ff7b72', - 'codemirror-syntax-storage': '#ff7b72', - 'codemirror-syntax-string': '#a5d6ff', - 'codemirror-syntax-support': '#79c0ff', - 'codemirror-syntax-variable': '#ffa198', - 'codemirror-text': '#c9d1d9', - 'counter-border': 'rgba(0,0,0,0)', - 'danger-emphasis': '#da3633', - 'danger-fg': '#f85149', - 'danger-muted': 'rgba(248,81,73,0.4)', - 'danger-subtle': 'rgba(248,81,73,0.15)', - 'diff-blob-addition-fg': '#c9d1d9', - 'diff-blob-addition-line-bg': 'rgba(56,139,253,0.15)', - 'diff-blob-addition-num-bg': 'rgba(88,166,255,0.3)', - 'diff-blob-addition-num-text': '#c9d1d9', - 'diff-blob-addition-word-bg': 'rgba(56,139,253,0.4)', - 'diff-blob-deletion-fg': '#c9d1d9', - 'diff-blob-deletion-line-bg': 'rgba(248,81,73,0.15)', - 'diff-blob-deletion-num-bg': 'rgba(248,81,73,0.3)', - 'diff-blob-deletion-num-text': '#c9d1d9', - 'diff-blob-deletion-word-bg': 'rgba(248,81,73,0.4)', - 'diff-blob-expander-icon': '#8b949e', - 'diff-blob-hunk-num-bg': 'rgba(56,139,253,0.4)', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'screen', - 'diffstat-addition-bg': '#58a6ff', - 'diffstat-addition-border': 'rgba(240,246,252,0.1)', - 'diffstat-deletion-border': 'rgba(240,246,252,0.1)', - 'done-emphasis': '#8957e5', - 'done-fg': '#a371f7', - 'done-muted': 'rgba(163,113,247,0.4)', - 'done-subtle': 'rgba(163,113,247,0.15)', - 'fg-default': '#c9d1d9', - 'fg-muted': '#8b949e', - 'fg-on-emphasis': '#ffffff', - 'fg-subtle': '#6e7681', - 'header-bg': '#161b22', - 'header-divider': '#8b949e', - 'header-logo': '#f0f6fc', - 'header-search-bg': '#0d1117', - 'header-search-border': '#30363d', - 'header-text': 'rgba(255,255,255,0.7)', - 'input-disabled-bg': 'rgba(110,118,129,0)', - 'marketing-icon-primary': '#79c0ff', - 'marketing-icon-secondary': '#1f6feb', - 'menu-bg-active': '#161b22', - 'mktg-btn-bg': '#f6f8fa', - 'mktg-btn-shadow-focus': 'rgb(255 255 255 / 25%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(255 255 255) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 4px 7px rgba(0, 0, 0, 0.15), 0 100px 80px rgba(255, 255, 255, 0.02), 0 42px 33px rgba(255, 255, 255, 0.024), 0 22px 18px rgba(255, 255, 255, 0.028), 0 12px 10px rgba(255, 255, 255, 0.034), 0 7px 5px rgba(255, 255, 255, 0.04), 0 3px 2px rgba(255, 255, 255, 0.07)', - 'mktg-btn-shadow-outline': 'rgb(255 255 255 / 25%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#6e7681', - 'neutral-emphasis': '#6e7681', - 'neutral-muted': 'rgba(110,118,129,0.4)', - 'neutral-subtle': 'rgba(110,118,129,0.1)', - 'open-emphasis': '#da3633', - 'open-fg': '#ff7b72', - 'open-muted': 'rgba(248,81,73,0.4)', - 'open-subtle': 'rgba(248,81,73,0.15)', - 'overlay-shadow': '0 0 0 1px #30363d, 0 16px 32px rgba(1,4,9,0.85)', - 'page-header-bg': '#0d1117', - 'prettylights-syntax-brackethighlighter-angle': '#8b949e', - 'prettylights-syntax-brackethighlighter-unmatched': '#f85149', - 'prettylights-syntax-carriage-return-bg': '#b62324', - 'prettylights-syntax-carriage-return-text': '#f0f6fc', - 'prettylights-syntax-comment': '#8b949e', - 'prettylights-syntax-constant-other-reference-link': '#a5d6ff', - 'prettylights-syntax-constant': '#79c0ff', - 'prettylights-syntax-entity-tag': '#a5d6ff', - 'prettylights-syntax-entity': '#d2a8ff', - 'prettylights-syntax-invalid-illegal-bg': '#8e1519', - 'prettylights-syntax-invalid-illegal-text': '#f0f6fc', - 'prettylights-syntax-keyword': '#ff7b72', - 'prettylights-syntax-markup-bold': '#c9d1d9', - 'prettylights-syntax-markup-changed-bg': '#67060c', - 'prettylights-syntax-markup-changed-text': '#ffdcd7', - 'prettylights-syntax-markup-deleted-bg': '#67060c', - 'prettylights-syntax-markup-deleted-text': '#ffdcd7', - 'prettylights-syntax-markup-heading': '#1f6feb', - 'prettylights-syntax-markup-ignored-bg': '#1158c7', - 'prettylights-syntax-markup-ignored-text': '#c9d1d9', - 'prettylights-syntax-markup-inserted-bg': '#0c2d6b', - 'prettylights-syntax-markup-inserted-text': '#cae8ff', - 'prettylights-syntax-markup-italic': '#c9d1d9', - 'prettylights-syntax-markup-list': '#f2cc60', - 'prettylights-syntax-meta-diff-range': '#d2a8ff', - 'prettylights-syntax-storage-modifier-import': '#c9d1d9', - 'prettylights-syntax-string-regexp': '#a5d6ff', - 'prettylights-syntax-string': '#a5d6ff', - 'prettylights-syntax-sublimelinter-gutter-mark': '#484f58', - 'prettylights-syntax-variable': '#ffa198', - 'primer-border-active': '#F78166', - 'primer-border-contrast': 'rgba(255,255,255,0.2)', - 'primer-canvas-backdrop': 'rgba(1,4,9,0.8)', - 'primer-canvas-sticky': 'rgba(13,17,23,0.95)', - 'primer-fg-disabled': '#484f58', - 'primer-shadow-focus': '0 0 0 3px #0c2d6b', - 'primer-shadow-highlight': '0 0 transparent', - 'primer-shadow-inset': '0 0 transparent', - 'project-gradient-in': '#161b22', - 'project-gradient-out': 'rgba(22,27,34,0)', - 'project-header-bg': '#0d1117', - 'project-sidebar-bg': '#161b22', - 'scale-black': '#010409', - 'scale-blue-0': '#cae8ff', - 'scale-blue-1': '#a5d6ff', - 'scale-blue-2': '#79c0ff', - 'scale-blue-3': '#58a6ff', - 'scale-blue-4': '#388bfd', - 'scale-blue-5': '#1f6feb', - 'scale-blue-6': '#1158c7', - 'scale-blue-7': '#0d419d', - 'scale-blue-8': '#0c2d6b', - 'scale-blue-9': '#051d4d', - 'scale-coral-0': '#FFDDD2', - 'scale-coral-1': '#FFC2B2', - 'scale-coral-2': '#FFA28B', - 'scale-coral-3': '#F78166', - 'scale-coral-4': '#EA6045', - 'scale-coral-5': '#CF462D', - 'scale-coral-6': '#AC3220', - 'scale-coral-7': '#872012', - 'scale-coral-8': '#640D04', - 'scale-coral-9': '#460701', - 'scale-gray-0': '#f0f6fc', - 'scale-gray-1': '#c9d1d9', - 'scale-gray-2': '#b1bac4', - 'scale-gray-3': '#8b949e', - 'scale-gray-4': '#6e7681', - 'scale-gray-5': '#484f58', - 'scale-gray-6': '#30363d', - 'scale-gray-7': '#21262d', - 'scale-gray-8': '#161b22', - 'scale-gray-9': '#0d1117', - 'scale-green-0': '#cae8ff', - 'scale-green-1': '#a5d6ff', - 'scale-green-2': '#79c0ff', - 'scale-green-3': '#58a6ff', - 'scale-green-4': '#388bfd', - 'scale-green-5': '#1f6feb', - 'scale-green-6': '#1158c7', - 'scale-green-7': '#0d419d', - 'scale-green-8': '#0c2d6b', - 'scale-green-9': '#051d4d', - 'scale-orange-0': '#ffdcd7', - 'scale-orange-1': '#ffc1ba', - 'scale-orange-2': '#ffa198', - 'scale-orange-3': '#ff7b72', - 'scale-orange-4': '#f85149', - 'scale-orange-5': '#da3633', - 'scale-orange-6': '#b62324', - 'scale-orange-7': '#8e1519', - 'scale-orange-8': '#67060c', - 'scale-orange-9': '#490202', - 'scale-pink-0': '#ffdaec', - 'scale-pink-1': '#ffbedd', - 'scale-pink-2': '#ff9bce', - 'scale-pink-3': '#f778ba', - 'scale-pink-4': '#db61a2', - 'scale-pink-5': '#bf4b8a', - 'scale-pink-6': '#9e3670', - 'scale-pink-7': '#7d2457', - 'scale-pink-8': '#5e103e', - 'scale-pink-9': '#42062a', - 'scale-purple-0': '#eddeff', - 'scale-purple-1': '#e2c5ff', - 'scale-purple-2': '#d2a8ff', - 'scale-purple-3': '#bc8cff', - 'scale-purple-4': '#a371f7', - 'scale-purple-5': '#8957e5', - 'scale-purple-6': '#6e40c9', - 'scale-purple-7': '#553098', - 'scale-purple-8': '#3c1e70', - 'scale-purple-9': '#271052', - 'scale-red-0': '#ffdcd7', - 'scale-red-1': '#ffc1ba', - 'scale-red-2': '#ffa198', - 'scale-red-3': '#ff7b72', - 'scale-red-4': '#f85149', - 'scale-red-5': '#da3633', - 'scale-red-6': '#b62324', - 'scale-red-7': '#8e1519', - 'scale-red-8': '#67060c', - 'scale-red-9': '#490202', - 'scale-white': '#ffffff', - 'scale-yellow-0': '#f8e3a1', - 'scale-yellow-1': '#f2cc60', - 'scale-yellow-2': '#e3b341', - 'scale-yellow-3': '#d29922', - 'scale-yellow-4': '#bb8009', - 'scale-yellow-5': '#9e6a03', - 'scale-yellow-6': '#845306', - 'scale-yellow-7': '#693e00', - 'scale-yellow-8': '#4b2900', - 'scale-yellow-9': '#341a00', - 'search-keyword-hl': 'rgba(210,153,34,0.4)', - 'select-menu-backdrop-border': '#484f58', - 'select-menu-tap-focus-bg': '#0c2d6b', - 'select-menu-tap-highlight': 'rgba(48,54,61,0.5)', - 'severe-emphasis': '#da3633', - 'severe-fg': '#f85149', - 'severe-muted': 'rgba(248,81,73,0.4)', - 'severe-subtle': 'rgba(248,81,73,0.15)', - 'shadow-extra-large': '0 12px 48px #010409', - 'shadow-large': '0 8px 24px #010409', - 'shadow-medium': '0 3px 6px #010409', - 'shadow-small': '0 0 transparent', - 'sidenav-selected-bg': '#21262d', - 'sponsors-emphasis': '#bf4b8a', - 'sponsors-fg': '#db61a2', - 'sponsors-muted': 'rgba(219,97,162,0.4)', - 'sponsors-subtle': 'rgba(219,97,162,0.15)', - 'success-emphasis': '#1f6feb', - 'success-fg': '#58a6ff', - 'success-muted': 'rgba(56,139,253,0.4)', - 'success-subtle': 'rgba(56,139,253,0.15)', - 'switch-knob-checked-bg': '#1f6feb', - 'switch-knob-checked-disabled-bg': '#484f58', - 'switch-track-bg': '#010409', - 'switch-track-border': '#6e7681', - 'switch-track-checked-active-bg': 'rgba(31,111,235,0.65)', - 'switch-track-checked-bg': 'rgba(31,111,235,0.35)', - 'switch-track-checked-border': '#58a6ff', - 'switch-track-checked-hover-bg': 'rgba(31,111,235,0.5)', - 'timeline-badge-bg': '#21262d', - 'topic-tag-border': 'rgba(0,0,0,0)', - 'underlinenav-border-hover': 'rgba(110,118,129,0.4)', - 'underlinenav-icon': '#6e7681', -); diff --git a/src/styles/themes/light.scss b/src/styles/themes/light.scss deleted file mode 100644 index ff031ff..0000000 --- a/src/styles/themes/light.scss +++ /dev/null @@ -1,418 +0,0 @@ -$variables: ( - 'accent-emphasis': '#0969da', - 'accent-fg': '#0969da', - 'accent-muted': 'rgba(84,174,255,0.4)', - 'accent-subtle': '#ddf4ff', - 'action-list-item-danger-active-bg': '#FFEBE9', - 'action-list-item-danger-hover-bg': 'rgba(255,235,233,0.64)', - 'action-list-item-danger-hover-text': '#cf222e', - 'action-list-item-default-active-bg': 'rgba(208,215,222,0.48)', - 'action-list-item-default-hover-bg': 'rgba(208,215,222,0.32)', - 'action-list-item-default-selected-bg': 'rgba(208,215,222,0.24)', - 'action-list-item-inline-divider': 'rgba(208,215,222,0.48)', - 'ansi-black-bright': '#57606a', - 'ansi-black': '#24292f', - 'ansi-blue-bright': '#218bff', - 'ansi-blue': '#0969da', - 'ansi-cyan-bright': '#3192aa', - 'ansi-cyan': '#1b7c83', - 'ansi-gray': '#6e7781', - 'ansi-green-bright': '#1a7f37', - 'ansi-green': '#116329', - 'ansi-magenta-bright': '#a475f9', - 'ansi-magenta': '#8250df', - 'ansi-red-bright': '#a40e26', - 'ansi-red': '#cf222e', - 'ansi-white-bright': '#8c959f', - 'ansi-white': '#6e7781', - 'ansi-yellow-bright': '#633c01', - 'ansi-yellow': '#4d2d00', - 'attention-emphasis': '#bf8700', - 'attention-fg': '#9a6700', - 'attention-muted': 'rgba(212,167,44,0.4)', - 'attention-subtle': '#fff8c5', - 'avatar-bg': '#ffffff', - 'avatar-border': 'rgba(27,31,36,0.15)', - 'avatar-child-shadow': '-2px -2px 0 rgba(255,255,255,0.8)', - 'avatar-stack-fade-more': '#d0d7de', - 'avatar-stack-fade': '#afb8c1', - 'border-default': '#d0d7de', - 'border-muted': 'hsla(210,18%,87%,1)', - 'border-subtle': 'rgba(27,31,36,0.15)', - 'btn-active-bg': 'hsla(220,14%,93%,1)', - 'btn-active-border': 'rgba(27,31,36,0.15)', - 'btn-bg': '#f6f8fa', - 'btn-border': 'rgba(27,31,36,0.15)', - 'btn-counter-bg': 'rgba(27,31,36,0.08)', - 'btn-danger-counter-bg': 'rgba(207,34,46,0.1)', - 'btn-danger-disabled-bg': '#f6f8fa', - 'btn-danger-disabled-counter-bg': 'rgba(207,34,46,0.05)', - 'btn-danger-disabled-text': 'rgba(207,34,46,0.5)', - 'btn-danger-focus-border': 'rgba(27,31,36,0.15)', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(164,14,38,0.4)', - 'btn-danger-hover-bg': '#a40e26', - 'btn-danger-hover-border': 'rgba(27,31,36,0.15)', - 'btn-danger-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-danger-hover-icon': '#ffffff', - 'btn-danger-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-danger-hover-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-danger-hover-text': '#ffffff', - 'btn-danger-icon': '#cf222e', - 'btn-danger-selected-bg': 'hsla(356,72%,44%,1)', - 'btn-danger-selected-border': 'rgba(27,31,36,0.15)', - 'btn-danger-selected-shadow': 'inset 0 1px 0 rgba(76,0,20,0.2)', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#cf222e', - 'btn-focus-bg': '#f6f8fa', - 'btn-focus-border': 'rgba(27,31,36,0.15)', - 'btn-focus-shadow': '0 0 0 3px rgba(9,105,218,0.3)', - 'btn-hover-bg': '#f3f4f6', - 'btn-hover-border': 'rgba(27,31,36,0.15)', - 'btn-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.25)', - 'btn-outline-counter-bg': 'rgba(9,105,218,0.1)', - 'btn-outline-disabled-bg': '#f6f8fa', - 'btn-outline-disabled-counter-bg': 'rgba(9,105,218,0.05)', - 'btn-outline-disabled-text': 'rgba(9,105,218,0.5)', - 'btn-outline-focus-border': 'rgba(27,31,36,0.15)', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(5,80,174,0.4)', - 'btn-outline-hover-bg': '#0969da', - 'btn-outline-hover-border': 'rgba(27,31,36,0.15)', - 'btn-outline-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-outline-hover-text': '#ffffff', - 'btn-outline-selected-bg': 'hsla(212,92%,42%,1)', - 'btn-outline-selected-border': 'rgba(27,31,36,0.15)', - 'btn-outline-selected-shadow': 'inset 0 1px 0 rgba(0,33,85,0.2)', - 'btn-outline-selected-text': '#ffffff', - 'btn-outline-text': '#0969da', - 'btn-primary-bg': '#2da44e', - 'btn-primary-border': 'rgba(27,31,36,0.15)', - 'btn-primary-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-primary-disabled-bg': '#94d3a2', - 'btn-primary-disabled-border': 'rgba(27,31,36,0.15)', - 'btn-primary-disabled-text': 'rgba(255,255,255,0.8)', - 'btn-primary-focus-bg': '#2da44e', - 'btn-primary-focus-border': 'rgba(27,31,36,0.15)', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(45,164,78,0.4)', - 'btn-primary-hover-bg': '#2c974b', - 'btn-primary-hover-border': 'rgba(27,31,36,0.15)', - 'btn-primary-icon': 'rgba(255,255,255,0.8)', - 'btn-primary-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-primary-selected-bg': 'hsla(137,55%,36%,1)', - 'btn-primary-selected-shadow': 'inset 0 1px 0 rgba(0,45,17,0.2)', - 'btn-primary-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-primary-text': '#ffffff', - 'btn-selected-bg': 'hsla(220,14%,94%,1)', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(27,31,36,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(9,105,218,0.3)', - 'btn-shadow': '0 1px 0 rgba(27,31,36,0.04)', - 'btn-text': '#24292f', - 'canvas-default-transparent': 'rgba(255,255,255,0)', - 'canvas-default': '#ffffff', - 'canvas-inset': '#f6f8fa', - 'canvas-overlay': '#ffffff', - 'canvas-subtle': '#f6f8fa', - 'checks-ansi-black-bright': '#32383f', - 'checks-ansi-black': '#24292f', - 'checks-ansi-blue-bright': '#80ccff', - 'checks-ansi-blue': '#54aeff', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#8c959f', - 'checks-ansi-green-bright': '#6fdd8b', - 'checks-ansi-green': '#4ac26b', - 'checks-ansi-magenta-bright': '#d8b9ff', - 'checks-ansi-magenta': '#c297ff', - 'checks-ansi-red-bright': '#ffaba8', - 'checks-ansi-red': '#ff8182', - 'checks-ansi-white-bright': '#d0d7de', - 'checks-ansi-white': '#d0d7de', - 'checks-ansi-yellow-bright': '#eac54f', - 'checks-ansi-yellow': '#d4a72c', - 'checks-bg': '#24292f', - 'checks-btn-hover-bg': 'rgba(255,255,255,0.125)', - 'checks-btn-hover-icon': '#f6f8fa', - 'checks-btn-icon': '#afb8c1', - 'checks-container-border-width': '0px', - 'checks-donut-error': '#fa4549', - 'checks-donut-neutral': '#afb8c1', - 'checks-donut-pending': '#bf8700', - 'checks-donut-success': '#2da44e', - 'checks-dropdown-bg': '#32383f', - 'checks-dropdown-border': '#424a53', - 'checks-dropdown-btn-hover-bg': '#32383f', - 'checks-dropdown-btn-hover-text': '#f6f8fa', - 'checks-dropdown-hover-bg': '#424a53', - 'checks-dropdown-hover-text': '#f6f8fa', - 'checks-dropdown-shadow': 'rgba(27,31,36,0.3)', - 'checks-dropdown-text': '#afb8c1', - 'checks-gate-bg': 'rgba(125,78,0,0.15)', - 'checks-gate-text': '#d0d7de', - 'checks-gate-waiting-text': '#afb8c1', - 'checks-header-border': '#32383f', - 'checks-header-icon': '#8c959f', - 'checks-header-label-open-text': '#f6f8fa', - 'checks-header-label-text': '#d0d7de', - 'checks-input-bg': '#32383f', - 'checks-input-focus-text': '#8c959f', - 'checks-input-placeholder-text': '#8c959f', - 'checks-input-shadow': 'none', - 'checks-input-text': '#eaeef2', - 'checks-line-dt-fm-bg': '#9a6700', - 'checks-line-dt-fm-text': '#24292f', - 'checks-line-hover-bg': '#32383f', - 'checks-line-num-text': 'rgba(140,149,159,0.75)', - 'checks-line-selected-bg': 'rgba(33,139,255,0.15)', - 'checks-line-selected-num-text': '#54aeff', - 'checks-line-text': '#d0d7de', - 'checks-line-timestamp-text': '#8c959f', - 'checks-logline-command-text': '#54aeff', - 'checks-logline-debug-text': '#c297ff', - 'checks-logline-error-bg': 'rgba(164,14,38,0.15)', - 'checks-logline-error-num-text': '#ff8182', - 'checks-logline-error-text': '#d0d7de', - 'checks-logline-num-text': 'rgba(140,149,159,0.75)', - 'checks-logline-section-text': '#4ac26b', - 'checks-logline-text': '#8c959f', - 'checks-logline-warning-bg': 'rgba(125,78,0,0.15)', - 'checks-logline-warning-num-text': '#d4a72c', - 'checks-logline-warning-text': '#d0d7de', - 'checks-run-border-width': '0px', - 'checks-scrollbar-thumb-bg': '#57606a', - 'checks-step-error-text': '#ff8182', - 'checks-step-header-open-bg': '#32383f', - 'checks-step-warning-text': '#d4a72c', - 'checks-text-link': '#54aeff', - 'checks-text-primary': '#f6f8fa', - 'checks-text-secondary': '#8c959f', - 'codemirror-activeline-bg': 'rgba(234,238,242,0.5)', - 'codemirror-bg': '#ffffff', - 'codemirror-cursor': '#24292f', - 'codemirror-guttermarker-subtle-text': '#6e7781', - 'codemirror-guttermarker-text': '#ffffff', - 'codemirror-gutters-bg': '#ffffff', - 'codemirror-linenumber-text': '#57606a', - 'codemirror-lines-bg': '#ffffff', - 'codemirror-matchingbracket-text': '#24292f', - 'codemirror-selection-bg': 'rgba(84,174,255,0.4)', - 'codemirror-syntax-comment': '#24292f', - 'codemirror-syntax-constant': '#0550ae', - 'codemirror-syntax-entity': '#8250df', - 'codemirror-syntax-keyword': '#cf222e', - 'codemirror-syntax-storage': '#cf222e', - 'codemirror-syntax-string': '#0a3069', - 'codemirror-syntax-support': '#0550ae', - 'codemirror-syntax-variable': '#953800', - 'codemirror-text': '#24292f', - 'counter-border': 'rgba(0,0,0,0)', - 'danger-emphasis': '#cf222e', - 'danger-fg': '#cf222e', - 'danger-muted': 'rgba(255,129,130,0.4)', - 'danger-subtle': '#FFEBE9', - 'diff-blob-addition-fg': '#24292f', - 'diff-blob-addition-line-bg': '#E6FFEC', - 'diff-blob-addition-num-bg': '#CCFFD8', - 'diff-blob-addition-num-text': '#24292f', - 'diff-blob-addition-word-bg': '#ABF2BC', - 'diff-blob-deletion-fg': '#24292f', - 'diff-blob-deletion-line-bg': '#FFEBE9', - 'diff-blob-deletion-num-bg': '#FFD7D5', - 'diff-blob-deletion-num-text': '#24292f', - 'diff-blob-deletion-word-bg': 'rgba(255,129,130,0.4)', - 'diff-blob-expander-icon': '#57606a', - 'diff-blob-hunk-num-bg': 'rgba(84,174,255,0.4)', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'multiply', - 'diffstat-addition-bg': '#2da44e', - 'diffstat-addition-border': 'rgba(27,31,36,0.15)', - 'diffstat-deletion-border': 'rgba(27,31,36,0.15)', - 'done-emphasis': '#8250df', - 'done-fg': '#8250df', - 'done-muted': 'rgba(194,151,255,0.4)', - 'done-subtle': '#fbefff', - 'fg-default': '#24292f', - 'fg-muted': '#57606a', - 'fg-on-emphasis': '#ffffff', - 'fg-subtle': '#6e7781', - 'header-bg': '#24292f', - 'header-divider': '#57606a', - 'header-logo': '#ffffff', - 'header-search-bg': '#24292f', - 'header-search-border': '#57606a', - 'header-text': 'rgba(255,255,255,0.7)', - 'input-disabled-bg': 'rgba(175,184,193,0.2)', - 'marketing-icon-primary': '#218bff', - 'marketing-icon-secondary': '#54aeff', - 'menu-bg-active': 'rgba(0,0,0,0)', - 'mktg-btn-bg': '#1b1f23', - 'mktg-btn-shadow-focus': 'rgb(0 0 0 / 15%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(0 0 0 / 70%) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02)', - 'mktg-btn-shadow-outline': 'rgb(0 0 0 / 15%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#24292f', - 'neutral-emphasis': '#6e7781', - 'neutral-muted': 'rgba(175,184,193,0.2)', - 'neutral-subtle': 'rgba(234,238,242,0.5)', - 'overlay-shadow': '0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12)', - 'page-header-bg': '#f6f8fa', - 'prettylights-syntax-brackethighlighter-angle': '#57606a', - 'prettylights-syntax-brackethighlighter-unmatched': '#82071e', - 'prettylights-syntax-carriage-return-bg': '#cf222e', - 'prettylights-syntax-carriage-return-text': '#f6f8fa', - 'prettylights-syntax-comment': '#6e7781', - 'prettylights-syntax-constant-other-reference-link': '#0a3069', - 'prettylights-syntax-constant': '#0550ae', - 'prettylights-syntax-entity-tag': '#116329', - 'prettylights-syntax-entity': '#8250df', - 'prettylights-syntax-invalid-illegal-bg': '#82071e', - 'prettylights-syntax-invalid-illegal-text': '#f6f8fa', - 'prettylights-syntax-keyword': '#cf222e', - 'prettylights-syntax-markup-bold': '#24292f', - 'prettylights-syntax-markup-changed-bg': '#ffd8b5', - 'prettylights-syntax-markup-changed-text': '#953800', - 'prettylights-syntax-markup-deleted-bg': '#FFEBE9', - 'prettylights-syntax-markup-deleted-text': '#82071e', - 'prettylights-syntax-markup-heading': '#0550ae', - 'prettylights-syntax-markup-ignored-bg': '#0550ae', - 'prettylights-syntax-markup-ignored-text': '#eaeef2', - 'prettylights-syntax-markup-inserted-bg': '#dafbe1', - 'prettylights-syntax-markup-inserted-text': '#116329', - 'prettylights-syntax-markup-italic': '#24292f', - 'prettylights-syntax-markup-list': '#3b2300', - 'prettylights-syntax-meta-diff-range': '#8250df', - 'prettylights-syntax-storage-modifier-import': '#24292f', - 'prettylights-syntax-string-regexp': '#116329', - 'prettylights-syntax-string': '#0a3069', - 'prettylights-syntax-sublimelinter-gutter-mark': '#8c959f', - 'prettylights-syntax-variable': '#953800', - 'primer-border-active': '#FD8C73', - 'primer-border-contrast': 'rgba(27,31,36,0.1)', - 'primer-canvas-backdrop': 'rgba(27,31,36,0.5)', - 'primer-canvas-sticky': 'rgba(255,255,255,0.95)', - 'primer-fg-disabled': '#8c959f', - 'primer-shadow-focus': '0 0 0 3px rgba(9,105,218,0.3)', - 'primer-shadow-highlight': 'inset 0 1px 0 rgba(255,255,255,0.25)', - 'primer-shadow-inset': 'inset 0 1px 0 rgba(208,215,222,0.2)', - 'project-gradient-in': '#ffffff', - 'project-gradient-out': 'rgba(255,255,255,0)', - 'project-header-bg': '#24292f', - 'project-sidebar-bg': '#ffffff', - 'scale-black': '#1b1f24', - 'scale-blue-0': '#ddf4ff', - 'scale-blue-1': '#b6e3ff', - 'scale-blue-2': '#80ccff', - 'scale-blue-3': '#54aeff', - 'scale-blue-4': '#218bff', - 'scale-blue-5': '#0969da', - 'scale-blue-6': '#0550ae', - 'scale-blue-7': '#033d8b', - 'scale-blue-8': '#0a3069', - 'scale-blue-9': '#002155', - 'scale-coral-0': '#FFF0EB', - 'scale-coral-1': '#FFD6CC', - 'scale-coral-2': '#FFB4A1', - 'scale-coral-3': '#FD8C73', - 'scale-coral-4': '#EC6547', - 'scale-coral-5': '#C4432B', - 'scale-coral-6': '#9E2F1C', - 'scale-coral-7': '#801F0F', - 'scale-coral-8': '#691105', - 'scale-coral-9': '#510901', - 'scale-gray-0': '#f6f8fa', - 'scale-gray-1': '#eaeef2', - 'scale-gray-2': '#d0d7de', - 'scale-gray-3': '#afb8c1', - 'scale-gray-4': '#8c959f', - 'scale-gray-5': '#6e7781', - 'scale-gray-6': '#57606a', - 'scale-gray-7': '#424a53', - 'scale-gray-8': '#32383f', - 'scale-gray-9': '#24292f', - 'scale-green-0': '#dafbe1', - 'scale-green-1': '#aceebb', - 'scale-green-2': '#6fdd8b', - 'scale-green-3': '#4ac26b', - 'scale-green-4': '#2da44e', - 'scale-green-5': '#1a7f37', - 'scale-green-6': '#116329', - 'scale-green-7': '#044f1e', - 'scale-green-8': '#003d16', - 'scale-green-9': '#002d11', - 'scale-orange-0': '#fff1e5', - 'scale-orange-1': '#ffd8b5', - 'scale-orange-2': '#ffb77c', - 'scale-orange-3': '#fb8f44', - 'scale-orange-4': '#e16f24', - 'scale-orange-5': '#bc4c00', - 'scale-orange-6': '#953800', - 'scale-orange-7': '#762c00', - 'scale-orange-8': '#5c2200', - 'scale-orange-9': '#471700', - 'scale-pink-0': '#ffeff7', - 'scale-pink-1': '#ffd3eb', - 'scale-pink-2': '#ffadda', - 'scale-pink-3': '#ff80c8', - 'scale-pink-4': '#e85aad', - 'scale-pink-5': '#bf3989', - 'scale-pink-6': '#99286e', - 'scale-pink-7': '#772057', - 'scale-pink-8': '#611347', - 'scale-pink-9': '#4d0336', - 'scale-purple-0': '#fbefff', - 'scale-purple-1': '#ecd8ff', - 'scale-purple-2': '#d8b9ff', - 'scale-purple-3': '#c297ff', - 'scale-purple-4': '#a475f9', - 'scale-purple-5': '#8250df', - 'scale-purple-6': '#6639ba', - 'scale-purple-7': '#512a97', - 'scale-purple-8': '#3e1f79', - 'scale-purple-9': '#2e1461', - 'scale-red-0': '#FFEBE9', - 'scale-red-1': '#ffcecb', - 'scale-red-2': '#ffaba8', - 'scale-red-3': '#ff8182', - 'scale-red-4': '#fa4549', - 'scale-red-5': '#cf222e', - 'scale-red-6': '#a40e26', - 'scale-red-7': '#82071e', - 'scale-red-8': '#660018', - 'scale-red-9': '#4c0014', - 'scale-white': '#ffffff', - 'scale-yellow-0': '#fff8c5', - 'scale-yellow-1': '#fae17d', - 'scale-yellow-2': '#eac54f', - 'scale-yellow-3': '#d4a72c', - 'scale-yellow-4': '#bf8700', - 'scale-yellow-5': '#9a6700', - 'scale-yellow-6': '#7d4e00', - 'scale-yellow-7': '#633c01', - 'scale-yellow-8': '#4d2d00', - 'scale-yellow-9': '#3b2300', - 'search-keyword-hl': '#fff8c5', - 'select-menu-backdrop-border': 'rgba(0,0,0,0)', - 'select-menu-tap-focus-bg': '#b6e3ff', - 'select-menu-tap-highlight': 'rgba(175,184,193,0.5)', - 'severe-emphasis': '#bc4c00', - 'severe-fg': '#bc4c00', - 'severe-muted': 'rgba(251,143,68,0.4)', - 'severe-subtle': '#fff1e5', - 'shadow-extra-large': '0 12px 28px rgba(140,149,159,0.3)', - 'shadow-large': '0 8px 24px rgba(140,149,159,0.2)', - 'shadow-medium': '0 3px 6px rgba(140,149,159,0.15)', - 'shadow-small': '0 1px 0 rgba(27,31,36,0.04)', - 'sidenav-selected-bg': '#ffffff', - 'sponsors-emphasis': '#bf3989', - 'sponsors-fg': '#bf3989', - 'sponsors-muted': 'rgba(255,128,200,0.4)', - 'sponsors-subtle': '#ffeff7', - 'success-emphasis': '#2da44e', - 'success-fg': '#1a7f37', - 'success-muted': 'rgba(74,194,107,0.4)', - 'success-subtle': '#dafbe1', - 'timeline-badge-bg': '#eaeef2', - 'topic-tag-border': 'rgba(0,0,0,0)', - 'underlinenav-border-hover': 'rgba(175,184,193,0.2)', - 'underlinenav-icon': '#6e7781', -); diff --git a/src/styles/themes/lightColorblind.scss b/src/styles/themes/lightColorblind.scss deleted file mode 100644 index f23ee01..0000000 --- a/src/styles/themes/lightColorblind.scss +++ /dev/null @@ -1,418 +0,0 @@ -$variables: ( - 'accent-emphasis': '#0969da', - 'accent-fg': '#0969da', - 'accent-muted': 'rgba(84,174,255,0.4)', - 'accent-subtle': '#ddf4ff', - 'action-list-item-danger-active-bg': '#fefe48', - 'action-list-item-danger-hover-bg': 'rgba(254,254,72,0.64)', - 'action-list-item-danger-hover-text': '#ac5e00', - 'action-list-item-default-active-bg': 'rgba(208,215,222,0.48)', - 'action-list-item-default-hover-bg': 'rgba(208,215,222,0.32)', - 'action-list-item-default-selected-bg': 'rgba(208,215,222,0.24)', - 'action-list-item-inline-divider': 'rgba(208,215,222,0.48)', - 'ansi-black-bright': '#57606a', - 'ansi-black': '#24292f', - 'ansi-blue-bright': '#218bff', - 'ansi-blue': '#0969da', - 'ansi-cyan-bright': '#3192aa', - 'ansi-cyan': '#1b7c83', - 'ansi-gray': '#6e7781', - 'ansi-green-bright': '#0566d5', - 'ansi-green': '#054da9', - 'ansi-magenta-bright': '#a475f9', - 'ansi-magenta': '#8250df', - 'ansi-red-bright': '#8b4600', - 'ansi-red': '#ac5e00', - 'ansi-white-bright': '#8c959f', - 'ansi-white': '#6e7781', - 'ansi-yellow-bright': '#633c01', - 'ansi-yellow': '#4d2d00', - 'attention-emphasis': '#bf8700', - 'attention-fg': '#9a6700', - 'attention-muted': 'rgba(212,167,44,0.4)', - 'attention-subtle': '#fff8c5', - 'avatar-bg': '#ffffff', - 'avatar-border': 'rgba(27,31,36,0.15)', - 'avatar-child-shadow': '-2px -2px 0 rgba(255,255,255,0.8)', - 'avatar-stack-fade-more': '#d0d7de', - 'avatar-stack-fade': '#afb8c1', - 'border-default': '#d0d7de', - 'border-muted': 'hsla(210,18%,87%,1)', - 'border-subtle': 'rgba(27,31,36,0.15)', - 'btn-active-bg': 'hsla(220,14%,93%,1)', - 'btn-active-border': 'rgba(27,31,36,0.15)', - 'btn-bg': '#f6f8fa', - 'btn-border': 'rgba(27,31,36,0.15)', - 'btn-counter-bg': 'rgba(27,31,36,0.08)', - 'btn-danger-counter-bg': 'rgba(172,94,0,0.1)', - 'btn-danger-disabled-bg': '#f6f8fa', - 'btn-danger-disabled-counter-bg': 'rgba(172,94,0,0.05)', - 'btn-danger-disabled-text': 'rgba(172,94,0,0.5)', - 'btn-danger-focus-border': 'rgba(27,31,36,0.15)', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(139,70,0,0.4)', - 'btn-danger-hover-bg': '#8b4600', - 'btn-danger-hover-border': 'rgba(27,31,36,0.15)', - 'btn-danger-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-danger-hover-icon': '#ffffff', - 'btn-danger-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-danger-hover-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-danger-hover-text': '#ffffff', - 'btn-danger-icon': '#ac5e00', - 'btn-danger-selected-bg': 'hsla(33,100%,31%,1)', - 'btn-danger-selected-border': 'rgba(27,31,36,0.15)', - 'btn-danger-selected-shadow': 'inset 0 1px 0 rgba(47,41,0,0.2)', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#ac5e00', - 'btn-focus-bg': '#f6f8fa', - 'btn-focus-border': 'rgba(27,31,36,0.15)', - 'btn-focus-shadow': '0 0 0 3px rgba(9,105,218,0.3)', - 'btn-hover-bg': '#f3f4f6', - 'btn-hover-border': 'rgba(27,31,36,0.15)', - 'btn-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.25)', - 'btn-outline-counter-bg': 'rgba(9,105,218,0.1)', - 'btn-outline-disabled-bg': '#f6f8fa', - 'btn-outline-disabled-counter-bg': 'rgba(9,105,218,0.05)', - 'btn-outline-disabled-text': 'rgba(9,105,218,0.5)', - 'btn-outline-focus-border': 'rgba(27,31,36,0.15)', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(5,80,174,0.4)', - 'btn-outline-hover-bg': '#0969da', - 'btn-outline-hover-border': 'rgba(27,31,36,0.15)', - 'btn-outline-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-outline-hover-text': '#ffffff', - 'btn-outline-selected-bg': 'hsla(212,92%,42%,1)', - 'btn-outline-selected-border': 'rgba(27,31,36,0.15)', - 'btn-outline-selected-shadow': 'inset 0 1px 0 rgba(0,33,85,0.2)', - 'btn-outline-selected-text': '#ffffff', - 'btn-outline-text': '#0969da', - 'btn-primary-bg': '#0088ff', - 'btn-primary-border': 'rgba(27,31,36,0.15)', - 'btn-primary-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-primary-disabled-bg': '#65ccff', - 'btn-primary-disabled-border': 'rgba(27,31,36,0.15)', - 'btn-primary-disabled-text': 'rgba(255,255,255,0.8)', - 'btn-primary-focus-bg': '#0088ff', - 'btn-primary-focus-border': 'rgba(27,31,36,0.15)', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(0,136,255,0.4)', - 'btn-primary-hover-bg': '#0566d5', - 'btn-primary-hover-border': 'rgba(27,31,36,0.15)', - 'btn-primary-icon': 'rgba(255,255,255,0.8)', - 'btn-primary-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-primary-selected-bg': 'hsla(212,95%,41%,1)', - 'btn-primary-selected-shadow': 'inset 0 1px 0 rgba(0,31,80,0.2)', - 'btn-primary-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-primary-text': '#ffffff', - 'btn-selected-bg': 'hsla(220,14%,94%,1)', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(27,31,36,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(9,105,218,0.3)', - 'btn-shadow': '0 1px 0 rgba(27,31,36,0.04)', - 'btn-text': '#24292f', - 'canvas-default-transparent': 'rgba(255,255,255,0)', - 'canvas-default': '#ffffff', - 'canvas-inset': '#f6f8fa', - 'canvas-overlay': '#ffffff', - 'canvas-subtle': '#f6f8fa', - 'checks-ansi-black-bright': '#32383f', - 'checks-ansi-black': '#24292f', - 'checks-ansi-blue-bright': '#80ccff', - 'checks-ansi-blue': '#54aeff', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#8c959f', - 'checks-ansi-green-bright': '#65ccff', - 'checks-ansi-green': '#35adff', - 'checks-ansi-magenta-bright': '#d8b9ff', - 'checks-ansi-magenta': '#c297ff', - 'checks-ansi-red-bright': '#f8c200', - 'checks-ansi-red': '#e7a100', - 'checks-ansi-white-bright': '#d0d7de', - 'checks-ansi-white': '#d0d7de', - 'checks-ansi-yellow-bright': '#eac54f', - 'checks-ansi-yellow': '#d4a72c', - 'checks-bg': '#24292f', - 'checks-btn-hover-bg': 'rgba(255,255,255,0.125)', - 'checks-btn-hover-icon': '#f6f8fa', - 'checks-btn-icon': '#afb8c1', - 'checks-container-border-width': '0px', - 'checks-donut-error': '#d08002', - 'checks-donut-neutral': '#afb8c1', - 'checks-donut-pending': '#bf8700', - 'checks-donut-success': '#0088ff', - 'checks-dropdown-bg': '#32383f', - 'checks-dropdown-border': '#424a53', - 'checks-dropdown-btn-hover-bg': '#32383f', - 'checks-dropdown-btn-hover-text': '#f6f8fa', - 'checks-dropdown-hover-bg': '#424a53', - 'checks-dropdown-hover-text': '#f6f8fa', - 'checks-dropdown-shadow': 'rgba(27,31,36,0.3)', - 'checks-dropdown-text': '#afb8c1', - 'checks-gate-bg': 'rgba(125,78,0,0.15)', - 'checks-gate-text': '#d0d7de', - 'checks-gate-waiting-text': '#afb8c1', - 'checks-header-border': '#32383f', - 'checks-header-icon': '#8c959f', - 'checks-header-label-open-text': '#f6f8fa', - 'checks-header-label-text': '#d0d7de', - 'checks-input-bg': '#32383f', - 'checks-input-focus-text': '#8c959f', - 'checks-input-placeholder-text': '#8c959f', - 'checks-input-shadow': 'none', - 'checks-input-text': '#eaeef2', - 'checks-line-dt-fm-bg': '#9a6700', - 'checks-line-dt-fm-text': '#24292f', - 'checks-line-hover-bg': '#32383f', - 'checks-line-num-text': 'rgba(140,149,159,0.75)', - 'checks-line-selected-bg': 'rgba(33,139,255,0.15)', - 'checks-line-selected-num-text': '#54aeff', - 'checks-line-text': '#d0d7de', - 'checks-line-timestamp-text': '#8c959f', - 'checks-logline-command-text': '#54aeff', - 'checks-logline-debug-text': '#c297ff', - 'checks-logline-error-bg': 'rgba(139,70,0,0.15)', - 'checks-logline-error-num-text': '#e7a100', - 'checks-logline-error-text': '#d0d7de', - 'checks-logline-num-text': 'rgba(140,149,159,0.75)', - 'checks-logline-section-text': '#35adff', - 'checks-logline-text': '#8c959f', - 'checks-logline-warning-bg': 'rgba(125,78,0,0.15)', - 'checks-logline-warning-num-text': '#d4a72c', - 'checks-logline-warning-text': '#d0d7de', - 'checks-run-border-width': '0px', - 'checks-scrollbar-thumb-bg': '#57606a', - 'checks-step-error-text': '#e7a100', - 'checks-step-header-open-bg': '#32383f', - 'checks-step-warning-text': '#d4a72c', - 'checks-text-link': '#54aeff', - 'checks-text-primary': '#f6f8fa', - 'checks-text-secondary': '#8c959f', - 'codemirror-activeline-bg': 'rgba(234,238,242,0.5)', - 'codemirror-bg': '#ffffff', - 'codemirror-cursor': '#24292f', - 'codemirror-guttermarker-subtle-text': '#6e7781', - 'codemirror-guttermarker-text': '#ffffff', - 'codemirror-gutters-bg': '#ffffff', - 'codemirror-linenumber-text': '#57606a', - 'codemirror-lines-bg': '#ffffff', - 'codemirror-matchingbracket-text': '#24292f', - 'codemirror-selection-bg': 'rgba(84,174,255,0.4)', - 'codemirror-syntax-comment': '#24292f', - 'codemirror-syntax-constant': '#0550ae', - 'codemirror-syntax-entity': '#8250df', - 'codemirror-syntax-keyword': '#ac5e00', - 'codemirror-syntax-storage': '#ac5e00', - 'codemirror-syntax-string': '#0a3069', - 'codemirror-syntax-support': '#0550ae', - 'codemirror-syntax-variable': '#953800', - 'codemirror-text': '#24292f', - 'counter-border': 'rgba(0,0,0,0)', - 'danger-emphasis': '#ac5e00', - 'danger-fg': '#ac5e00', - 'danger-muted': 'rgba(231,161,0,0.4)', - 'danger-subtle': '#fefe48', - 'diff-blob-addition-fg': '#24292f', - 'diff-blob-addition-line-bg': 'rgba(192,246,255,0.5)', - 'diff-blob-addition-num-bg': 'rgba(53,173,255,0.4)', - 'diff-blob-addition-num-text': '#24292f', - 'diff-blob-addition-word-bg': 'rgba(53,173,255,0.4)', - 'diff-blob-deletion-fg': '#24292f', - 'diff-blob-deletion-line-bg': 'rgba(254,254,72,0.5)', - 'diff-blob-deletion-num-bg': 'rgba(231,161,0,0.4)', - 'diff-blob-deletion-num-text': '#24292f', - 'diff-blob-deletion-word-bg': 'rgba(248,194,0,0.5)', - 'diff-blob-expander-icon': '#57606a', - 'diff-blob-hunk-num-bg': 'rgba(84,174,255,0.4)', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'multiply', - 'diffstat-addition-bg': '#0088ff', - 'diffstat-addition-border': 'rgba(27,31,36,0.15)', - 'diffstat-deletion-border': 'rgba(27,31,36,0.15)', - 'done-emphasis': '#8250df', - 'done-fg': '#8250df', - 'done-muted': 'rgba(194,151,255,0.4)', - 'done-subtle': '#fbefff', - 'fg-default': '#24292f', - 'fg-muted': '#57606a', - 'fg-on-emphasis': '#ffffff', - 'fg-subtle': '#6e7781', - 'header-bg': '#24292f', - 'header-divider': '#57606a', - 'header-logo': '#ffffff', - 'header-search-bg': '#24292f', - 'header-search-border': '#57606a', - 'header-text': 'rgba(255,255,255,0.7)', - 'input-disabled-bg': 'rgba(175,184,193,0.2)', - 'marketing-icon-primary': '#218bff', - 'marketing-icon-secondary': '#54aeff', - 'menu-bg-active': 'rgba(0,0,0,0)', - 'mktg-btn-bg': '#1b1f23', - 'mktg-btn-shadow-focus': 'rgb(0 0 0 / 15%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(0 0 0 / 70%) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02)', - 'mktg-btn-shadow-outline': 'rgb(0 0 0 / 15%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#24292f', - 'neutral-emphasis': '#6e7781', - 'neutral-muted': 'rgba(175,184,193,0.2)', - 'neutral-subtle': 'rgba(234,238,242,0.5)', - 'overlay-shadow': '0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12)', - 'page-header-bg': '#f6f8fa', - 'prettylights-syntax-brackethighlighter-angle': '#57606a', - 'prettylights-syntax-brackethighlighter-unmatched': '#6c3900', - 'prettylights-syntax-carriage-return-bg': '#ac5e00', - 'prettylights-syntax-carriage-return-text': '#f6f8fa', - 'prettylights-syntax-comment': '#6e7781', - 'prettylights-syntax-constant-other-reference-link': '#0a3069', - 'prettylights-syntax-constant': '#0550ae', - 'prettylights-syntax-entity-tag': '#054da9', - 'prettylights-syntax-entity': '#8250df', - 'prettylights-syntax-invalid-illegal-bg': '#6c3900', - 'prettylights-syntax-invalid-illegal-text': '#f6f8fa', - 'prettylights-syntax-keyword': '#ac5e00', - 'prettylights-syntax-markup-bold': '#24292f', - 'prettylights-syntax-markup-changed-bg': '#ffd8b5', - 'prettylights-syntax-markup-changed-text': '#953800', - 'prettylights-syntax-markup-deleted-bg': '#fefe48', - 'prettylights-syntax-markup-deleted-text': '#6c3900', - 'prettylights-syntax-markup-heading': '#0550ae', - 'prettylights-syntax-markup-ignored-bg': '#0550ae', - 'prettylights-syntax-markup-ignored-text': '#eaeef2', - 'prettylights-syntax-markup-inserted-bg': '#c0f6ff', - 'prettylights-syntax-markup-inserted-text': '#054da9', - 'prettylights-syntax-markup-italic': '#24292f', - 'prettylights-syntax-markup-list': '#3b2300', - 'prettylights-syntax-meta-diff-range': '#8250df', - 'prettylights-syntax-storage-modifier-import': '#24292f', - 'prettylights-syntax-string-regexp': '#054da9', - 'prettylights-syntax-string': '#0a3069', - 'prettylights-syntax-sublimelinter-gutter-mark': '#8c959f', - 'prettylights-syntax-variable': '#953800', - 'primer-border-active': '#FD8C73', - 'primer-border-contrast': 'rgba(27,31,36,0.1)', - 'primer-canvas-backdrop': 'rgba(27,31,36,0.5)', - 'primer-canvas-sticky': 'rgba(255,255,255,0.95)', - 'primer-fg-disabled': '#8c959f', - 'primer-shadow-focus': '0 0 0 3px rgba(9,105,218,0.3)', - 'primer-shadow-highlight': 'inset 0 1px 0 rgba(255,255,255,0.25)', - 'primer-shadow-inset': 'inset 0 1px 0 rgba(208,215,222,0.2)', - 'project-gradient-in': '#ffffff', - 'project-gradient-out': 'rgba(255,255,255,0)', - 'project-header-bg': '#24292f', - 'project-sidebar-bg': '#ffffff', - 'scale-black': '#1b1f24', - 'scale-blue-0': '#ddf4ff', - 'scale-blue-1': '#b6e3ff', - 'scale-blue-2': '#80ccff', - 'scale-blue-3': '#54aeff', - 'scale-blue-4': '#218bff', - 'scale-blue-5': '#0969da', - 'scale-blue-6': '#0550ae', - 'scale-blue-7': '#033d8b', - 'scale-blue-8': '#0a3069', - 'scale-blue-9': '#002155', - 'scale-coral-0': '#FFF0EB', - 'scale-coral-1': '#FFD6CC', - 'scale-coral-2': '#FFB4A1', - 'scale-coral-3': '#FD8C73', - 'scale-coral-4': '#EC6547', - 'scale-coral-5': '#C4432B', - 'scale-coral-6': '#9E2F1C', - 'scale-coral-7': '#801F0F', - 'scale-coral-8': '#691105', - 'scale-coral-9': '#510901', - 'scale-gray-0': '#f6f8fa', - 'scale-gray-1': '#eaeef2', - 'scale-gray-2': '#d0d7de', - 'scale-gray-3': '#afb8c1', - 'scale-gray-4': '#8c959f', - 'scale-gray-5': '#6e7781', - 'scale-gray-6': '#57606a', - 'scale-gray-7': '#424a53', - 'scale-gray-8': '#32383f', - 'scale-gray-9': '#24292f', - 'scale-green-0': '#c0f6ff', - 'scale-green-1': '#96e5ff', - 'scale-green-2': '#65ccff', - 'scale-green-3': '#35adff', - 'scale-green-4': '#0088ff', - 'scale-green-5': '#0566d5', - 'scale-green-6': '#054da9', - 'scale-green-7': '#033a86', - 'scale-green-8': '#002d68', - 'scale-green-9': '#001f50', - 'scale-orange-0': '#fff1e5', - 'scale-orange-1': '#ffd8b5', - 'scale-orange-2': '#ffb77c', - 'scale-orange-3': '#fb8f44', - 'scale-orange-4': '#e16f24', - 'scale-orange-5': '#bc4c00', - 'scale-orange-6': '#953800', - 'scale-orange-7': '#762c00', - 'scale-orange-8': '#5c2200', - 'scale-orange-9': '#471700', - 'scale-pink-0': '#ffeff7', - 'scale-pink-1': '#ffd3eb', - 'scale-pink-2': '#ffadda', - 'scale-pink-3': '#ff80c8', - 'scale-pink-4': '#e85aad', - 'scale-pink-5': '#bf3989', - 'scale-pink-6': '#99286e', - 'scale-pink-7': '#772057', - 'scale-pink-8': '#611347', - 'scale-pink-9': '#4d0336', - 'scale-purple-0': '#fbefff', - 'scale-purple-1': '#ecd8ff', - 'scale-purple-2': '#d8b9ff', - 'scale-purple-3': '#c297ff', - 'scale-purple-4': '#a475f9', - 'scale-purple-5': '#8250df', - 'scale-purple-6': '#6639ba', - 'scale-purple-7': '#512a97', - 'scale-purple-8': '#3e1f79', - 'scale-purple-9': '#2e1461', - 'scale-red-0': '#fefe48', - 'scale-red-1': '#fee325', - 'scale-red-2': '#f8c200', - 'scale-red-3': '#e7a100', - 'scale-red-4': '#d08002', - 'scale-red-5': '#ac5e00', - 'scale-red-6': '#8b4600', - 'scale-red-7': '#6c3900', - 'scale-red-8': '#4c3100', - 'scale-red-9': '#2f2900', - 'scale-white': '#ffffff', - 'scale-yellow-0': '#fff8c5', - 'scale-yellow-1': '#fae17d', - 'scale-yellow-2': '#eac54f', - 'scale-yellow-3': '#d4a72c', - 'scale-yellow-4': '#bf8700', - 'scale-yellow-5': '#9a6700', - 'scale-yellow-6': '#7d4e00', - 'scale-yellow-7': '#633c01', - 'scale-yellow-8': '#4d2d00', - 'scale-yellow-9': '#3b2300', - 'search-keyword-hl': '#fff8c5', - 'select-menu-backdrop-border': 'rgba(0,0,0,0)', - 'select-menu-tap-focus-bg': '#b6e3ff', - 'select-menu-tap-highlight': 'rgba(175,184,193,0.5)', - 'severe-emphasis': '#bc4c00', - 'severe-fg': '#bc4c00', - 'severe-muted': 'rgba(251,143,68,0.4)', - 'severe-subtle': '#fff1e5', - 'shadow-extra-large': '0 12px 28px rgba(140,149,159,0.3)', - 'shadow-large': '0 8px 24px rgba(140,149,159,0.2)', - 'shadow-medium': '0 3px 6px rgba(140,149,159,0.15)', - 'shadow-small': '0 1px 0 rgba(27,31,36,0.04)', - 'sidenav-selected-bg': '#ffffff', - 'sponsors-emphasis': '#bf3989', - 'sponsors-fg': '#bf3989', - 'sponsors-muted': 'rgba(255,128,200,0.4)', - 'sponsors-subtle': '#ffeff7', - 'success-emphasis': '#0088ff', - 'success-fg': '#0566d5', - 'success-muted': 'rgba(53,173,255,0.4)', - 'success-subtle': '#c0f6ff', - 'timeline-badge-bg': '#eaeef2', - 'topic-tag-border': 'rgba(0,0,0,0)', - 'underlinenav-border-hover': 'rgba(175,184,193,0.2)', - 'underlinenav-icon': '#6e7781', -); diff --git a/src/styles/themes/lightHighContrast.scss b/src/styles/themes/lightHighContrast.scss deleted file mode 100644 index 8b1c9d5..0000000 --- a/src/styles/themes/lightHighContrast.scss +++ /dev/null @@ -1,418 +0,0 @@ -$variables: ( - 'accent-emphasis': '#0349b4', - 'accent-fg': '#0349b4', - 'accent-muted': '#368cf9', - 'accent-subtle': '#dff7ff', - 'action-list-item-danger-active-bg': '#fff0ee', - 'action-list-item-danger-hover-bg': 'rgba(255,240,238,0.64)', - 'action-list-item-danger-hover-text': '#a0111f', - 'action-list-item-default-active-bg': 'rgba(206,213,220,0.48)', - 'action-list-item-default-hover-bg': 'rgba(206,213,220,0.32)', - 'action-list-item-default-selected-bg': 'rgba(206,213,220,0.24)', - 'action-list-item-inline-divider': 'rgba(32,37,44,0.48)', - 'ansi-black-bright': '#4B535D', - 'ansi-black': '#0E1116', - 'ansi-blue-bright': '#1168e3', - 'ansi-blue': '#0349b4', - 'ansi-cyan-bright': '#3192aa', - 'ansi-cyan': '#1b7c83', - 'ansi-gray': '#66707B', - 'ansi-green-bright': '#055d20', - 'ansi-green': '#024c1a', - 'ansi-magenta-bright': '#844ae7', - 'ansi-magenta': '#622cbc', - 'ansi-red-bright': '#86061d', - 'ansi-red': '#a0111f', - 'ansi-white-bright': '#88929D', - 'ansi-white': '#66707B', - 'ansi-yellow-bright': '#4e2c00', - 'ansi-yellow': '#3f2200', - 'attention-emphasis': '#744500', - 'attention-fg': '#744500', - 'attention-muted': '#b58407', - 'attention-subtle': '#fcf7be', - 'avatar-bg': '#ffffff', - 'avatar-border': 'rgba(1,4,9,0.8)', - 'avatar-child-shadow': '-2px -2px 0 rgba(255,255,255,0.8)', - 'avatar-stack-fade-more': '#CED5DC', - 'avatar-stack-fade': '#ACB6C0', - 'border-default': '#20252C', - 'border-muted': '#88929D', - 'border-subtle': 'rgba(1,4,9,0.8)', - 'btn-active-bg': '#ACB6C0', - 'btn-active-border': 'rgba(1,4,9,0.8)', - 'btn-bg': '#E7ECF0', - 'btn-border': 'rgba(1,4,9,0.8)', - 'btn-counter-bg': 'rgba(1,4,9,0.08)', - 'btn-danger-counter-bg': 'rgba(160,17,31,0.1)', - 'btn-danger-disabled-bg': '#E7ECF0', - 'btn-danger-disabled-counter-bg': 'rgba(160,17,31,0.05)', - 'btn-danger-disabled-text': 'rgba(160,17,31,0.5)', - 'btn-danger-focus-border': '#6e011a', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(134,6,29,0.4)', - 'btn-danger-hover-bg': '#a0111f', - 'btn-danger-hover-border': '#6e011a', - 'btn-danger-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-danger-hover-icon': '#ffffff', - 'btn-danger-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-danger-hover-shadow': '0 1px 0 rgba(1,4,9,0.1)', - 'btn-danger-hover-text': '#ffffff', - 'btn-danger-icon': '#86061d', - 'btn-danger-selected-bg': '#6e011a', - 'btn-danger-selected-border': '#6e011a', - 'btn-danger-selected-shadow': 'inset 0 1px 0 rgba(67,0,17,0.2)', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#86061d', - 'btn-focus-bg': '#CED5DC', - 'btn-focus-border': 'rgba(1,4,9,0.8)', - 'btn-focus-shadow': '0 0 0 3px rgba(3,73,180,0.3)', - 'btn-hover-bg': '#CED5DC', - 'btn-hover-border': 'rgba(1,4,9,0.8)', - 'btn-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.25)', - 'btn-outline-counter-bg': 'rgba(3,73,180,0.1)', - 'btn-outline-disabled-bg': '#E7ECF0', - 'btn-outline-disabled-counter-bg': 'rgba(3,73,180,0.05)', - 'btn-outline-disabled-text': 'rgba(3,73,180,0.5)', - 'btn-outline-focus-border': '#022f7a', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(2,59,149,0.4)', - 'btn-outline-hover-bg': '#0349b4', - 'btn-outline-hover-border': '#022f7a', - 'btn-outline-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(1,4,9,0.1)', - 'btn-outline-hover-text': '#ffffff', - 'btn-outline-selected-bg': '#022f7a', - 'btn-outline-selected-border': '#022f7a', - 'btn-outline-selected-shadow': 'inset 0 1px 0 rgba(2,26,74,0.2)', - 'btn-outline-selected-text': '#ffffff', - 'btn-outline-text': '#023b95', - 'btn-primary-bg': '#055d20', - 'btn-primary-border': '#013d14', - 'btn-primary-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-primary-disabled-bg': '#94d3a2', - 'btn-primary-disabled-border': 'rgba(1,4,9,0.8)', - 'btn-primary-disabled-text': 'rgba(255,255,255,0.8)', - 'btn-primary-focus-bg': '#013d14', - 'btn-primary-focus-border': '#013d14', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(1,61,20,0.4)', - 'btn-primary-hover-bg': '#024c1a', - 'btn-primary-hover-border': '#013d14', - 'btn-primary-icon': 'rgba(255,255,255,0.8)', - 'btn-primary-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-primary-selected-bg': 'hsla(139,95%,13%,1)', - 'btn-primary-selected-shadow': 'inset 0 1px 0 rgba(0,35,11,0.2)', - 'btn-primary-shadow': '0 1px 0 rgba(1,4,9,0.1)', - 'btn-primary-text': '#ffffff', - 'btn-selected-bg': '#ACB6C0', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(1,4,9,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(3,73,180,0.3)', - 'btn-shadow': '0 1px 0 rgba(1,4,9,0.04)', - 'btn-text': '#0E1116', - 'canvas-default-transparent': 'rgba(255,255,255,0)', - 'canvas-default': '#ffffff', - 'canvas-inset': '#ffffff', - 'canvas-overlay': '#ffffff', - 'canvas-subtle': '#E7ECF0', - 'checks-ansi-black-bright': '#20252C', - 'checks-ansi-black': '#0E1116', - 'checks-ansi-blue-bright': '#67b3fd', - 'checks-ansi-blue': '#368cf9', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#88929D', - 'checks-ansi-green-bright': '#43c663', - 'checks-ansi-green': '#26a148', - 'checks-ansi-magenta-bright': '#c49bff', - 'checks-ansi-magenta': '#a371f7', - 'checks-ansi-red-bright': '#ff8e8a', - 'checks-ansi-red': '#ee5a5d', - 'checks-ansi-white-bright': '#CED5DC', - 'checks-ansi-white': '#CED5DC', - 'checks-ansi-yellow-bright': '#d5a824', - 'checks-ansi-yellow': '#b58407', - 'checks-bg': '#0E1116', - 'checks-btn-hover-bg': 'rgba(255,255,255,0.125)', - 'checks-btn-hover-icon': '#FFFFFF', - 'checks-btn-icon': '#ACB6C0', - 'checks-container-border-width': '0px', - 'checks-donut-error': '#d5232c', - 'checks-donut-neutral': '#ACB6C0', - 'checks-donut-pending': '#956400', - 'checks-donut-success': '#117f32', - 'checks-dropdown-bg': '#20252C', - 'checks-dropdown-border': '#343B43', - 'checks-dropdown-btn-hover-bg': '#20252C', - 'checks-dropdown-btn-hover-text': '#FFFFFF', - 'checks-dropdown-hover-bg': '#343B43', - 'checks-dropdown-hover-text': '#FFFFFF', - 'checks-dropdown-shadow': 'rgba(1,4,9,0.3)', - 'checks-dropdown-text': '#ACB6C0', - 'checks-gate-bg': 'rgba(96,55,0,0.15)', - 'checks-gate-text': '#CED5DC', - 'checks-gate-waiting-text': '#ACB6C0', - 'checks-header-border': '#20252C', - 'checks-header-icon': '#88929D', - 'checks-header-label-open-text': '#FFFFFF', - 'checks-header-label-text': '#CED5DC', - 'checks-input-bg': '#20252C', - 'checks-input-focus-text': '#88929D', - 'checks-input-placeholder-text': '#88929D', - 'checks-input-shadow': 'none', - 'checks-input-text': '#E7ECF0', - 'checks-line-dt-fm-bg': '#744500', - 'checks-line-dt-fm-text': '#0E1116', - 'checks-line-hover-bg': '#20252C', - 'checks-line-num-text': 'rgba(136,146,157,0.75)', - 'checks-line-selected-bg': 'rgba(17,104,227,0.15)', - 'checks-line-selected-num-text': '#368cf9', - 'checks-line-text': '#CED5DC', - 'checks-line-timestamp-text': '#88929D', - 'checks-logline-command-text': '#368cf9', - 'checks-logline-debug-text': '#a371f7', - 'checks-logline-error-bg': 'rgba(134,6,29,0.15)', - 'checks-logline-error-num-text': '#ee5a5d', - 'checks-logline-error-text': '#CED5DC', - 'checks-logline-num-text': 'rgba(136,146,157,0.75)', - 'checks-logline-section-text': '#26a148', - 'checks-logline-text': '#88929D', - 'checks-logline-warning-bg': 'rgba(96,55,0,0.15)', - 'checks-logline-warning-num-text': '#b58407', - 'checks-logline-warning-text': '#CED5DC', - 'checks-run-border-width': '0px', - 'checks-scrollbar-thumb-bg': '#4B535D', - 'checks-step-error-text': '#ee5a5d', - 'checks-step-header-open-bg': '#20252C', - 'checks-step-warning-text': '#b58407', - 'checks-text-link': '#368cf9', - 'checks-text-primary': '#FFFFFF', - 'checks-text-secondary': '#88929D', - 'codemirror-activeline-bg': '#E7ECF0', - 'codemirror-bg': '#ffffff', - 'codemirror-cursor': '#0E1116', - 'codemirror-guttermarker-subtle-text': '#66707B', - 'codemirror-guttermarker-text': '#ffffff', - 'codemirror-gutters-bg': '#ffffff', - 'codemirror-linenumber-text': '#0E1116', - 'codemirror-lines-bg': '#ffffff', - 'codemirror-matchingbracket-text': '#0E1116', - 'codemirror-selection-bg': '#368cf9', - 'codemirror-syntax-comment': '#0E1116', - 'codemirror-syntax-constant': '#023b95', - 'codemirror-syntax-entity': '#622cbc', - 'codemirror-syntax-keyword': '#a0111f', - 'codemirror-syntax-storage': '#a0111f', - 'codemirror-syntax-string': '#032563', - 'codemirror-syntax-support': '#023b95', - 'codemirror-syntax-variable': '#702c00', - 'codemirror-text': '#0E1116', - 'counter-border': '#20252C', - 'danger-emphasis': '#a0111f', - 'danger-fg': '#a0111f', - 'danger-muted': '#ee5a5d', - 'danger-subtle': '#fff0ee', - 'diff-blob-addition-fg': '#ffffff', - 'diff-blob-addition-line-bg': '#E6FFEC', - 'diff-blob-addition-num-bg': '#CCFFD8', - 'diff-blob-addition-num-text': '#0E1116', - 'diff-blob-addition-word-bg': '#055d20', - 'diff-blob-deletion-fg': '#ffffff', - 'diff-blob-deletion-line-bg': '#fff0ee', - 'diff-blob-deletion-num-bg': '#FFD7D5', - 'diff-blob-deletion-num-text': '#0E1116', - 'diff-blob-deletion-word-bg': '#a0111f', - 'diff-blob-expander-icon': '#0E1116', - 'diff-blob-hunk-num-bg': '#9cd7ff', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'multiply', - 'diffstat-addition-bg': '#117f32', - 'diffstat-addition-border': 'rgba(1,4,9,0.8)', - 'diffstat-deletion-border': 'rgba(1,4,9,0.8)', - 'done-emphasis': '#622cbc', - 'done-fg': '#622cbc', - 'done-muted': '#a371f7', - 'done-subtle': '#faf0fe', - 'fg-default': '#0E1116', - 'fg-muted': '#0E1116', - 'fg-on-emphasis': '#ffffff', - 'fg-subtle': '#66707B', - 'header-bg': '#0E1116', - 'header-divider': '#ACB6C0', - 'header-logo': '#ffffff', - 'header-search-bg': '#0E1116', - 'header-search-border': '#4B535D', - 'header-text': 'rgba(255,255,255,0.7)', - 'input-disabled-bg': 'rgba(172,182,192,0.2)', - 'marketing-icon-primary': '#1168e3', - 'marketing-icon-secondary': '#368cf9', - 'menu-bg-active': 'rgba(0,0,0,0)', - 'mktg-btn-bg': '#1b1f23', - 'mktg-btn-shadow-focus': 'rgb(0 0 0 / 15%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(0 0 0 / 70%) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02)', - 'mktg-btn-shadow-outline': 'rgb(0 0 0 / 15%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#0E1116', - 'neutral-emphasis': '#66707B', - 'neutral-muted': 'rgba(172,182,192,0.2)', - 'neutral-subtle': '#E7ECF0', - 'overlay-shadow': '0 1px 3px rgba(1,4,9,0.12), 0 8px 24px rgba(52,59,67,0.12)', - 'page-header-bg': '#ffffff', - 'prettylights-syntax-brackethighlighter-angle': '#4B535D', - 'prettylights-syntax-brackethighlighter-unmatched': '#6e011a', - 'prettylights-syntax-carriage-return-bg': '#a0111f', - 'prettylights-syntax-carriage-return-text': '#FFFFFF', - 'prettylights-syntax-comment': '#66707B', - 'prettylights-syntax-constant-other-reference-link': '#032563', - 'prettylights-syntax-constant': '#023b95', - 'prettylights-syntax-entity-tag': '#024c1a', - 'prettylights-syntax-entity': '#622cbc', - 'prettylights-syntax-invalid-illegal-bg': '#6e011a', - 'prettylights-syntax-invalid-illegal-text': '#FFFFFF', - 'prettylights-syntax-keyword': '#a0111f', - 'prettylights-syntax-markup-bold': '#0E1116', - 'prettylights-syntax-markup-changed-bg': '#ffc67b', - 'prettylights-syntax-markup-changed-text': '#702c00', - 'prettylights-syntax-markup-deleted-bg': '#fff0ee', - 'prettylights-syntax-markup-deleted-text': '#6e011a', - 'prettylights-syntax-markup-heading': '#023b95', - 'prettylights-syntax-markup-ignored-bg': '#023b95', - 'prettylights-syntax-markup-ignored-text': '#E7ECF0', - 'prettylights-syntax-markup-inserted-bg': '#d2fedb', - 'prettylights-syntax-markup-inserted-text': '#024c1a', - 'prettylights-syntax-markup-italic': '#0E1116', - 'prettylights-syntax-markup-list': '#2e1800', - 'prettylights-syntax-meta-diff-range': '#622cbc', - 'prettylights-syntax-storage-modifier-import': '#0E1116', - 'prettylights-syntax-string-regexp': '#024c1a', - 'prettylights-syntax-string': '#032563', - 'prettylights-syntax-sublimelinter-gutter-mark': '#88929D', - 'prettylights-syntax-variable': '#702c00', - 'primer-border-active': '#ef5b48', - 'primer-border-contrast': 'rgba(1,4,9,0.1)', - 'primer-canvas-backdrop': 'rgba(1,4,9,0.5)', - 'primer-canvas-sticky': 'rgba(255,255,255,0.95)', - 'primer-fg-disabled': '#88929D', - 'primer-shadow-focus': '0 0 0 3px rgba(3,73,180,0.3)', - 'primer-shadow-highlight': 'inset 0 1px 0 rgba(255,255,255,0.25)', - 'primer-shadow-inset': 'inset 0 1px 0 rgba(206,213,220,0.2)', - 'project-gradient-in': '#ffffff', - 'project-gradient-out': 'rgba(255,255,255,0)', - 'project-header-bg': '#0E1116', - 'project-sidebar-bg': '#ffffff', - 'scale-black': '#010409', - 'scale-blue-0': '#dff7ff', - 'scale-blue-1': '#9cd7ff', - 'scale-blue-2': '#67b3fd', - 'scale-blue-3': '#368cf9', - 'scale-blue-4': '#1168e3', - 'scale-blue-5': '#0349b4', - 'scale-blue-6': '#023b95', - 'scale-blue-7': '#022f7a', - 'scale-blue-8': '#032563', - 'scale-blue-9': '#021a4a', - 'scale-coral-0': '#fff0ed', - 'scale-coral-1': '#ffc2b6', - 'scale-coral-2': '#ff8f7e', - 'scale-coral-3': '#ef5b48', - 'scale-coral-4': '#cd3425', - 'scale-coral-5': '#9f1710', - 'scale-coral-6': '#870706', - 'scale-coral-7': '#6f0107', - 'scale-coral-8': '#5b0002', - 'scale-coral-9': '#430200', - 'scale-gray-0': '#FFFFFF', - 'scale-gray-1': '#E7ECF0', - 'scale-gray-2': '#CED5DC', - 'scale-gray-3': '#ACB6C0', - 'scale-gray-4': '#88929D', - 'scale-gray-5': '#66707B', - 'scale-gray-6': '#4B535D', - 'scale-gray-7': '#343B43', - 'scale-gray-8': '#20252C', - 'scale-gray-9': '#0E1116', - 'scale-green-0': '#d2fedb', - 'scale-green-1': '#82e596', - 'scale-green-2': '#43c663', - 'scale-green-3': '#26a148', - 'scale-green-4': '#117f32', - 'scale-green-5': '#055d20', - 'scale-green-6': '#024c1a', - 'scale-green-7': '#013d14', - 'scale-green-8': '#003110', - 'scale-green-9': '#00230b', - 'scale-orange-0': '#fff2d5', - 'scale-orange-1': '#ffc67b', - 'scale-orange-2': '#f99636', - 'scale-orange-3': '#dc6d1a', - 'scale-orange-4': '#b45105', - 'scale-orange-5': '#873800', - 'scale-orange-6': '#702c00', - 'scale-orange-7': '#5b2300', - 'scale-orange-8': '#491b00', - 'scale-orange-9': '#361200', - 'scale-pink-0': '#feeff7', - 'scale-pink-1': '#ffbde0', - 'scale-pink-2': '#fc87ca', - 'scale-pink-3': '#ed4baf', - 'scale-pink-4': '#c9248e', - 'scale-pink-5': '#971368', - 'scale-pink-6': '#7d0c57', - 'scale-pink-7': '#660847', - 'scale-pink-8': '#53043a', - 'scale-pink-9': '#3e022b', - 'scale-purple-0': '#faf0fe', - 'scale-purple-1': '#e0c5ff', - 'scale-purple-2': '#c49bff', - 'scale-purple-3': '#a371f7', - 'scale-purple-4': '#844ae7', - 'scale-purple-5': '#622cbc', - 'scale-purple-6': '#512598', - 'scale-purple-7': '#411d7b', - 'scale-purple-8': '#341763', - 'scale-purple-9': '#260f49', - 'scale-red-0': '#fff0ee', - 'scale-red-1': '#ffc1bc', - 'scale-red-2': '#ff8e8a', - 'scale-red-3': '#ee5a5d', - 'scale-red-4': '#d5232c', - 'scale-red-5': '#a0111f', - 'scale-red-6': '#86061d', - 'scale-red-7': '#6e011a', - 'scale-red-8': '#5a0016', - 'scale-red-9': '#430011', - 'scale-white': '#ffffff', - 'scale-yellow-0': '#fcf7be', - 'scale-yellow-1': '#f0ce53', - 'scale-yellow-2': '#d5a824', - 'scale-yellow-3': '#b58407', - 'scale-yellow-4': '#956400', - 'scale-yellow-5': '#744500', - 'scale-yellow-6': '#603700', - 'scale-yellow-7': '#4e2c00', - 'scale-yellow-8': '#3f2200', - 'scale-yellow-9': '#2e1800', - 'search-keyword-hl': '#fcf7be', - 'select-menu-backdrop-border': 'rgba(0,0,0,0)', - 'select-menu-tap-focus-bg': '#9cd7ff', - 'select-menu-tap-highlight': 'rgba(172,182,192,0.5)', - 'severe-emphasis': '#873800', - 'severe-fg': '#873800', - 'severe-muted': '#dc6d1a', - 'severe-subtle': '#fff2d5', - 'shadow-extra-large': '0 12px 28px rgba(136,146,157,0.3)', - 'shadow-large': '0 8px 24px rgba(136,146,157,0.2)', - 'shadow-medium': '0 3px 6px rgba(136,146,157,0.15)', - 'shadow-small': '0 1px 0 rgba(1,4,9,0.04)', - 'sidenav-selected-bg': '#ffffff', - 'sponsors-emphasis': '#971368', - 'sponsors-fg': '#971368', - 'sponsors-muted': '#ed4baf', - 'sponsors-subtle': '#feeff7', - 'success-emphasis': '#055d20', - 'success-fg': '#055d20', - 'success-muted': '#26a148', - 'success-subtle': '#d2fedb', - 'timeline-badge-bg': '#E7ECF0', - 'topic-tag-border': '#0349b4', - 'underlinenav-border-hover': 'rgba(172,182,192,0.2)', - 'underlinenav-icon': '#66707B', -); diff --git a/src/styles/themes/lightTritanopia.scss b/src/styles/themes/lightTritanopia.scss deleted file mode 100644 index 1f08098..0000000 --- a/src/styles/themes/lightTritanopia.scss +++ /dev/null @@ -1,436 +0,0 @@ -$variables: ( - 'accent-emphasis': '#0969da', - 'accent-fg': '#0969da', - 'accent-muted': 'rgba(84,174,255,0.4)', - 'accent-subtle': '#ddf4ff', - 'action-list-item-danger-active-bg': '#FFEBE9', - 'action-list-item-danger-hover-bg': 'rgba(255,235,233,0.64)', - 'action-list-item-danger-hover-text': '#cf222e', - 'action-list-item-default-active-bg': 'rgba(208,215,222,0.48)', - 'action-list-item-default-active-border': 'rgba(0,0,0,0)', - 'action-list-item-default-hover-bg': 'rgba(208,215,222,0.32)', - 'action-list-item-default-hover-border': 'rgba(0,0,0,0)', - 'action-list-item-default-selected-bg': 'rgba(208,215,222,0.24)', - 'action-list-item-inline-divider': 'rgba(208,215,222,0.48)', - 'ansi-black-bright': '#57606a', - 'ansi-black': '#24292f', - 'ansi-blue-bright': '#218bff', - 'ansi-blue': '#0969da', - 'ansi-cyan-bright': '#3192aa', - 'ansi-cyan': '#1b7c83', - 'ansi-gray': '#6e7781', - 'ansi-green-bright': '#0969da', - 'ansi-green': '#0550ae', - 'ansi-magenta-bright': '#a475f9', - 'ansi-magenta': '#8250df', - 'ansi-red-bright': '#a40e26', - 'ansi-red': '#cf222e', - 'ansi-white-bright': '#8c959f', - 'ansi-white': '#6e7781', - 'ansi-yellow-bright': '#633c01', - 'ansi-yellow': '#4d2d00', - 'attention-emphasis': '#bf8700', - 'attention-fg': '#9a6700', - 'attention-muted': 'rgba(212,167,44,0.4)', - 'attention-subtle': '#fff8c5', - 'avatar-bg': '#ffffff', - 'avatar-border': 'rgba(27,31,36,0.15)', - 'avatar-child-shadow': '-2px -2px 0 rgba(255,255,255,0.8)', - 'avatar-stack-fade-more': '#d0d7de', - 'avatar-stack-fade': '#afb8c1', - 'border-default': '#d0d7de', - 'border-muted': 'hsla(210,18%,87%,1)', - 'border-subtle': 'rgba(27,31,36,0.15)', - 'btn-active-bg': 'hsla(220,14%,93%,1)', - 'btn-active-border': 'rgba(27,31,36,0.15)', - 'btn-bg': '#f6f8fa', - 'btn-border': 'rgba(27,31,36,0.15)', - 'btn-counter-bg': 'rgba(27,31,36,0.08)', - 'btn-danger-counter-bg': 'rgba(207,34,46,0.1)', - 'btn-danger-disabled-bg': '#f6f8fa', - 'btn-danger-disabled-counter-bg': 'rgba(207,34,46,0.05)', - 'btn-danger-disabled-text': 'rgba(207,34,46,0.5)', - 'btn-danger-focus-border': 'rgba(27,31,36,0.15)', - 'btn-danger-focus-shadow': '0 0 0 3px rgba(164,14,38,0.4)', - 'btn-danger-hover-bg': '#a40e26', - 'btn-danger-hover-border': 'rgba(27,31,36,0.15)', - 'btn-danger-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-danger-hover-icon': '#ffffff', - 'btn-danger-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-danger-hover-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-danger-hover-text': '#ffffff', - 'btn-danger-icon': '#cf222e', - 'btn-danger-selected-bg': 'hsla(356,72%,44%,1)', - 'btn-danger-selected-border': 'rgba(27,31,36,0.15)', - 'btn-danger-selected-shadow': 'inset 0 1px 0 rgba(76,0,20,0.2)', - 'btn-danger-selected-text': '#ffffff', - 'btn-danger-text': '#cf222e', - 'btn-focus-bg': '#f6f8fa', - 'btn-focus-border': 'rgba(27,31,36,0.15)', - 'btn-focus-shadow': '0 0 0 3px rgba(9,105,218,0.3)', - 'btn-hover-bg': '#f3f4f6', - 'btn-hover-border': 'rgba(27,31,36,0.15)', - 'btn-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.25)', - 'btn-outline-counter-bg': 'rgba(9,105,218,0.1)', - 'btn-outline-disabled-bg': '#f6f8fa', - 'btn-outline-disabled-counter-bg': 'rgba(9,105,218,0.05)', - 'btn-outline-disabled-text': 'rgba(9,105,218,0.5)', - 'btn-outline-focus-border': 'rgba(27,31,36,0.15)', - 'btn-outline-focus-shadow': '0 0 0 3px rgba(5,80,174,0.4)', - 'btn-outline-hover-bg': '#0969da', - 'btn-outline-hover-border': 'rgba(27,31,36,0.15)', - 'btn-outline-hover-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-outline-hover-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-outline-hover-text': '#ffffff', - 'btn-outline-selected-bg': 'hsla(212,92%,42%,1)', - 'btn-outline-selected-border': 'rgba(27,31,36,0.15)', - 'btn-outline-selected-shadow': 'inset 0 1px 0 rgba(0,33,85,0.2)', - 'btn-outline-selected-text': '#ffffff', - 'btn-outline-text': '#0969da', - 'btn-primary-bg': '#218bff', - 'btn-primary-border': 'rgba(27,31,36,0.15)', - 'btn-primary-counter-bg': 'rgba(255,255,255,0.2)', - 'btn-primary-disabled-bg': '#80ccff', - 'btn-primary-disabled-border': 'rgba(27,31,36,0.15)', - 'btn-primary-disabled-text': 'rgba(255,255,255,0.8)', - 'btn-primary-focus-bg': '#218bff', - 'btn-primary-focus-border': 'rgba(27,31,36,0.15)', - 'btn-primary-focus-shadow': '0 0 0 3px rgba(33,139,255,0.4)', - 'btn-primary-hover-bg': '#0969da', - 'btn-primary-hover-border': 'rgba(27,31,36,0.15)', - 'btn-primary-icon': 'rgba(255,255,255,0.8)', - 'btn-primary-inset-shadow': 'inset 0 1px 0 rgba(255,255,255,0.03)', - 'btn-primary-selected-bg': 'hsla(212,92%,43%,1)', - 'btn-primary-selected-shadow': 'inset 0 1px 0 rgba(0,33,85,0.2)', - 'btn-primary-shadow': '0 1px 0 rgba(27,31,36,0.1)', - 'btn-primary-text': '#ffffff', - 'btn-selected-bg': 'hsla(220,14%,94%,1)', - 'btn-shadow-active': 'inset 0 0.15em 0.3em rgba(27,31,36,0.15)', - 'btn-shadow-input-focus': '0 0 0 0.2em rgba(9,105,218,0.3)', - 'btn-shadow': '0 1px 0 rgba(27,31,36,0.04)', - 'btn-text': '#24292f', - 'canvas-default-transparent': 'rgba(255,255,255,0)', - 'canvas-default': '#ffffff', - 'canvas-inset': '#f6f8fa', - 'canvas-overlay': '#ffffff', - 'canvas-subtle': '#f6f8fa', - 'checks-ansi-black-bright': '#32383f', - 'checks-ansi-black': '#24292f', - 'checks-ansi-blue-bright': '#80ccff', - 'checks-ansi-blue': '#54aeff', - 'checks-ansi-cyan-bright': '#b3f0ff', - 'checks-ansi-cyan': '#76e3ea', - 'checks-ansi-gray': '#8c959f', - 'checks-ansi-green-bright': '#80ccff', - 'checks-ansi-green': '#54aeff', - 'checks-ansi-magenta-bright': '#d8b9ff', - 'checks-ansi-magenta': '#c297ff', - 'checks-ansi-red-bright': '#ffaba8', - 'checks-ansi-red': '#ff8182', - 'checks-ansi-white-bright': '#d0d7de', - 'checks-ansi-white': '#d0d7de', - 'checks-ansi-yellow-bright': '#eac54f', - 'checks-ansi-yellow': '#d4a72c', - 'checks-bg': '#24292f', - 'checks-btn-hover-bg': 'rgba(255,255,255,0.125)', - 'checks-btn-hover-icon': '#f6f8fa', - 'checks-btn-icon': '#afb8c1', - 'checks-container-border-width': '0px', - 'checks-donut-error': '#fa4549', - 'checks-donut-neutral': '#afb8c1', - 'checks-donut-pending': '#bf8700', - 'checks-donut-success': '#218bff', - 'checks-dropdown-bg': '#32383f', - 'checks-dropdown-border': '#424a53', - 'checks-dropdown-btn-hover-bg': '#32383f', - 'checks-dropdown-btn-hover-text': '#f6f8fa', - 'checks-dropdown-hover-bg': '#424a53', - 'checks-dropdown-hover-text': '#f6f8fa', - 'checks-dropdown-shadow': 'rgba(27,31,36,0.3)', - 'checks-dropdown-text': '#afb8c1', - 'checks-gate-bg': 'rgba(125,78,0,0.15)', - 'checks-gate-text': '#d0d7de', - 'checks-gate-waiting-text': '#d4a72c', - 'checks-header-border': '#32383f', - 'checks-header-icon': '#8c959f', - 'checks-header-label-open-text': '#f6f8fa', - 'checks-header-label-text': '#d0d7de', - 'checks-input-bg': '#32383f', - 'checks-input-focus-text': '#8c959f', - 'checks-input-placeholder-text': '#8c959f', - 'checks-input-shadow': 'none', - 'checks-input-text': '#eaeef2', - 'checks-line-dt-fm-bg': '#9a6700', - 'checks-line-dt-fm-text': '#24292f', - 'checks-line-hover-bg': '#32383f', - 'checks-line-num-text': 'rgba(140,149,159,0.75)', - 'checks-line-selected-bg': 'rgba(33,139,255,0.15)', - 'checks-line-selected-num-text': '#54aeff', - 'checks-line-text': '#d0d7de', - 'checks-line-timestamp-text': '#8c959f', - 'checks-logline-command-text': '#54aeff', - 'checks-logline-debug-text': '#c297ff', - 'checks-logline-error-bg': 'rgba(164,14,38,0.15)', - 'checks-logline-error-num-text': '#ff8182', - 'checks-logline-error-text': '#d0d7de', - 'checks-logline-num-text': 'rgba(140,149,159,0.75)', - 'checks-logline-section-text': '#54aeff', - 'checks-logline-text': '#8c959f', - 'checks-logline-warning-bg': 'rgba(125,78,0,0.15)', - 'checks-logline-warning-num-text': '#d4a72c', - 'checks-logline-warning-text': '#d0d7de', - 'checks-run-border-width': '0px', - 'checks-scrollbar-thumb-bg': '#57606a', - 'checks-step-error-text': '#ff8182', - 'checks-step-header-open-bg': '#32383f', - 'checks-step-warning-text': '#d4a72c', - 'checks-text-link': '#54aeff', - 'checks-text-primary': '#f6f8fa', - 'checks-text-secondary': '#8c959f', - 'closed-emphasis': '#6e7781', - 'closed-fg': '#6e7781', - 'closed-muted': 'rgba(175,184,193,0.4)', - 'closed-subtle': '#f6f8fa', - 'codemirror-activeline-bg': 'rgba(234,238,242,0.5)', - 'codemirror-bg': '#ffffff', - 'codemirror-cursor': '#24292f', - 'codemirror-guttermarker-subtle-text': '#6e7781', - 'codemirror-guttermarker-text': '#ffffff', - 'codemirror-gutters-bg': '#ffffff', - 'codemirror-linenumber-text': '#57606a', - 'codemirror-lines-bg': '#ffffff', - 'codemirror-matchingbracket-text': '#24292f', - 'codemirror-selection-bg': 'rgba(84,174,255,0.4)', - 'codemirror-syntax-comment': '#24292f', - 'codemirror-syntax-constant': '#0550ae', - 'codemirror-syntax-entity': '#8250df', - 'codemirror-syntax-keyword': '#cf222e', - 'codemirror-syntax-storage': '#cf222e', - 'codemirror-syntax-string': '#0a3069', - 'codemirror-syntax-support': '#0550ae', - 'codemirror-syntax-variable': '#a40e26', - 'codemirror-text': '#24292f', - 'counter-border': 'rgba(0,0,0,0)', - 'danger-emphasis': '#cf222e', - 'danger-fg': '#cf222e', - 'danger-muted': 'rgba(255,129,130,0.4)', - 'danger-subtle': '#FFEBE9', - 'diff-blob-addition-fg': '#24292f', - 'diff-blob-addition-line-bg': 'rgba(221,244,255,0.5)', - 'diff-blob-addition-num-bg': 'rgba(84,174,255,0.4)', - 'diff-blob-addition-num-text': '#24292f', - 'diff-blob-addition-word-bg': 'rgba(84,174,255,0.4)', - 'diff-blob-deletion-fg': '#24292f', - 'diff-blob-deletion-line-bg': 'rgba(255,235,233,0.5)', - 'diff-blob-deletion-num-bg': 'rgba(255,129,130,0.4)', - 'diff-blob-deletion-num-text': '#24292f', - 'diff-blob-deletion-word-bg': 'rgba(255,171,168,0.5)', - 'diff-blob-expander-icon': '#57606a', - 'diff-blob-hunk-num-bg': 'rgba(84,174,255,0.4)', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'multiply', - 'diffstat-addition-bg': '#218bff', - 'diffstat-addition-border': 'rgba(27,31,36,0.15)', - 'diffstat-deletion-border': 'rgba(27,31,36,0.15)', - 'done-emphasis': '#8250df', - 'done-fg': '#8250df', - 'done-muted': 'rgba(194,151,255,0.4)', - 'done-subtle': '#fbefff', - 'fg-default': '#24292f', - 'fg-muted': '#57606a', - 'fg-on-emphasis': '#ffffff', - 'fg-subtle': '#6e7781', - 'header-bg': '#24292f', - 'header-divider': '#57606a', - 'header-logo': '#ffffff', - 'header-search-bg': '#24292f', - 'header-search-border': '#57606a', - 'header-text': 'rgba(255,255,255,0.7)', - 'input-disabled-bg': 'rgba(175,184,193,0.2)', - 'marketing-icon-primary': '#218bff', - 'marketing-icon-secondary': '#54aeff', - 'menu-bg-active': 'rgba(0,0,0,0)', - 'mktg-btn-bg': '#1b1f23', - 'mktg-btn-shadow-focus': 'rgb(0 0 0 / 15%) 0 0 0 4px', - 'mktg-btn-shadow-hover-muted': 'rgb(0 0 0 / 70%) 0 0 0 2px inset', - 'mktg-btn-shadow-hover': - '0 3px 2px rgba(0, 0, 0, 0.07), 0 7px 5px rgba(0, 0, 0, 0.04), 0 12px 10px rgba(0, 0, 0, 0.03), 0 22px 18px rgba(0, 0, 0, 0.03), 0 42px 33px rgba(0, 0, 0, 0.02), 0 100px 80px rgba(0, 0, 0, 0.02)', - 'mktg-btn-shadow-outline': 'rgb(0 0 0 / 15%) 0 0 0 1px inset', - 'neutral-emphasis-plus': '#24292f', - 'neutral-emphasis': '#6e7781', - 'neutral-muted': 'rgba(175,184,193,0.2)', - 'neutral-subtle': 'rgba(234,238,242,0.5)', - 'open-emphasis': '#fa4549', - 'open-fg': '#cf222e', - 'open-muted': 'rgba(255,129,130,0.4)', - 'open-subtle': '#FFEBE9', - 'overlay-shadow': '0 1px 3px rgba(27,31,36,0.12), 0 8px 24px rgba(66,74,83,0.12)', - 'page-header-bg': '#f6f8fa', - 'prettylights-syntax-brackethighlighter-angle': '#57606a', - 'prettylights-syntax-brackethighlighter-unmatched': '#82071e', - 'prettylights-syntax-carriage-return-bg': '#cf222e', - 'prettylights-syntax-carriage-return-text': '#f6f8fa', - 'prettylights-syntax-comment': '#6e7781', - 'prettylights-syntax-constant-other-reference-link': '#0a3069', - 'prettylights-syntax-constant': '#0550ae', - 'prettylights-syntax-entity-tag': '#0550ae', - 'prettylights-syntax-entity': '#8250df', - 'prettylights-syntax-invalid-illegal-bg': '#82071e', - 'prettylights-syntax-invalid-illegal-text': '#f6f8fa', - 'prettylights-syntax-keyword': '#cf222e', - 'prettylights-syntax-markup-bold': '#24292f', - 'prettylights-syntax-markup-changed-bg': '#ffcecb', - 'prettylights-syntax-markup-changed-text': '#a40e26', - 'prettylights-syntax-markup-deleted-bg': '#FFEBE9', - 'prettylights-syntax-markup-deleted-text': '#82071e', - 'prettylights-syntax-markup-heading': '#0550ae', - 'prettylights-syntax-markup-ignored-bg': '#0550ae', - 'prettylights-syntax-markup-ignored-text': '#eaeef2', - 'prettylights-syntax-markup-inserted-bg': '#ddf4ff', - 'prettylights-syntax-markup-inserted-text': '#0550ae', - 'prettylights-syntax-markup-italic': '#24292f', - 'prettylights-syntax-markup-list': '#3b2300', - 'prettylights-syntax-meta-diff-range': '#8250df', - 'prettylights-syntax-storage-modifier-import': '#24292f', - 'prettylights-syntax-string-regexp': '#0550ae', - 'prettylights-syntax-string': '#0a3069', - 'prettylights-syntax-sublimelinter-gutter-mark': '#8c959f', - 'prettylights-syntax-variable': '#a40e26', - 'primer-border-active': '#FD8C73', - 'primer-border-contrast': 'rgba(27,31,36,0.1)', - 'primer-canvas-backdrop': 'rgba(27,31,36,0.5)', - 'primer-canvas-sticky': 'rgba(255,255,255,0.95)', - 'primer-fg-disabled': '#8c959f', - 'primer-shadow-focus': '0 0 0 3px rgba(9,105,218,0.3)', - 'primer-shadow-highlight': 'inset 0 1px 0 rgba(255,255,255,0.25)', - 'primer-shadow-inset': 'inset 0 1px 0 rgba(208,215,222,0.2)', - 'project-gradient-in': '#ffffff', - 'project-gradient-out': 'rgba(255,255,255,0)', - 'project-header-bg': '#24292f', - 'project-sidebar-bg': '#ffffff', - 'scale-black': '#1b1f24', - 'scale-blue-0': '#ddf4ff', - 'scale-blue-1': '#b6e3ff', - 'scale-blue-2': '#80ccff', - 'scale-blue-3': '#54aeff', - 'scale-blue-4': '#218bff', - 'scale-blue-5': '#0969da', - 'scale-blue-6': '#0550ae', - 'scale-blue-7': '#033d8b', - 'scale-blue-8': '#0a3069', - 'scale-blue-9': '#002155', - 'scale-coral-0': '#FFF0EB', - 'scale-coral-1': '#FFD6CC', - 'scale-coral-2': '#FFB4A1', - 'scale-coral-3': '#FD8C73', - 'scale-coral-4': '#EC6547', - 'scale-coral-5': '#C4432B', - 'scale-coral-6': '#9E2F1C', - 'scale-coral-7': '#801F0F', - 'scale-coral-8': '#691105', - 'scale-coral-9': '#510901', - 'scale-gray-0': '#f6f8fa', - 'scale-gray-1': '#eaeef2', - 'scale-gray-2': '#d0d7de', - 'scale-gray-3': '#afb8c1', - 'scale-gray-4': '#8c959f', - 'scale-gray-5': '#6e7781', - 'scale-gray-6': '#57606a', - 'scale-gray-7': '#424a53', - 'scale-gray-8': '#32383f', - 'scale-gray-9': '#24292f', - 'scale-green-0': '#ddf4ff', - 'scale-green-1': '#b6e3ff', - 'scale-green-2': '#80ccff', - 'scale-green-3': '#54aeff', - 'scale-green-4': '#218bff', - 'scale-green-5': '#0969da', - 'scale-green-6': '#0550ae', - 'scale-green-7': '#033d8b', - 'scale-green-8': '#0a3069', - 'scale-green-9': '#002155', - 'scale-orange-0': '#FFEBE9', - 'scale-orange-1': '#ffcecb', - 'scale-orange-2': '#ffaba8', - 'scale-orange-3': '#ff8182', - 'scale-orange-4': '#fa4549', - 'scale-orange-5': '#cf222e', - 'scale-orange-6': '#a40e26', - 'scale-orange-7': '#82071e', - 'scale-orange-8': '#660018', - 'scale-orange-9': '#4c0014', - 'scale-pink-0': '#ffeff7', - 'scale-pink-1': '#ffd3eb', - 'scale-pink-2': '#ffadda', - 'scale-pink-3': '#ff80c8', - 'scale-pink-4': '#e85aad', - 'scale-pink-5': '#bf3989', - 'scale-pink-6': '#99286e', - 'scale-pink-7': '#772057', - 'scale-pink-8': '#611347', - 'scale-pink-9': '#4d0336', - 'scale-purple-0': '#fbefff', - 'scale-purple-1': '#ecd8ff', - 'scale-purple-2': '#d8b9ff', - 'scale-purple-3': '#c297ff', - 'scale-purple-4': '#a475f9', - 'scale-purple-5': '#8250df', - 'scale-purple-6': '#6639ba', - 'scale-purple-7': '#512a97', - 'scale-purple-8': '#3e1f79', - 'scale-purple-9': '#2e1461', - 'scale-red-0': '#FFEBE9', - 'scale-red-1': '#ffcecb', - 'scale-red-2': '#ffaba8', - 'scale-red-3': '#ff8182', - 'scale-red-4': '#fa4549', - 'scale-red-5': '#cf222e', - 'scale-red-6': '#a40e26', - 'scale-red-7': '#82071e', - 'scale-red-8': '#660018', - 'scale-red-9': '#4c0014', - 'scale-white': '#ffffff', - 'scale-yellow-0': '#fff8c5', - 'scale-yellow-1': '#fae17d', - 'scale-yellow-2': '#eac54f', - 'scale-yellow-3': '#d4a72c', - 'scale-yellow-4': '#bf8700', - 'scale-yellow-5': '#9a6700', - 'scale-yellow-6': '#7d4e00', - 'scale-yellow-7': '#633c01', - 'scale-yellow-8': '#4d2d00', - 'scale-yellow-9': '#3b2300', - 'search-keyword-hl': '#fff8c5', - 'select-menu-backdrop-border': 'rgba(0,0,0,0)', - 'select-menu-tap-focus-bg': '#b6e3ff', - 'select-menu-tap-highlight': 'rgba(175,184,193,0.5)', - 'severe-emphasis': '#cf222e', - 'severe-fg': '#cf222e', - 'severe-muted': 'rgba(255,129,130,0.4)', - 'severe-subtle': '#FFEBE9', - 'shadow-extra-large': '0 12px 28px rgba(140,149,159,0.3)', - 'shadow-large': '0 8px 24px rgba(140,149,159,0.2)', - 'shadow-medium': '0 3px 6px rgba(140,149,159,0.15)', - 'shadow-small': '0 1px 0 rgba(27,31,36,0.04)', - 'sidenav-selected-bg': '#ffffff', - 'sponsors-emphasis': '#bf3989', - 'sponsors-fg': '#bf3989', - 'sponsors-muted': 'rgba(255,128,200,0.4)', - 'sponsors-subtle': '#ffeff7', - 'success-emphasis': '#218bff', - 'success-fg': '#0969da', - 'success-muted': 'rgba(84,174,255,0.4)', - 'success-subtle': '#ddf4ff', - 'switch-knob-checked-bg': '#0969da', - 'switch-knob-checked-disabled-bg': '#6e7781', - 'switch-track-bg': '#eaeef2', - 'switch-track-border': '#afb8c1', - 'switch-track-checked-active-bg': '#80ccff', - 'switch-track-checked-bg': '#ddf4ff', - 'switch-track-checked-border': '#54aeff', - 'switch-track-checked-hover-bg': '#b6e3ff', - 'timeline-badge-bg': '#eaeef2', - 'topic-tag-border': 'rgba(0,0,0,0)', - 'underlinenav-border-hover': 'rgba(175,184,193,0.2)', - 'underlinenav-icon': '#6e7781', -); diff --git a/src/utils/DOMHelper.ts b/src/utils/DOMHelper.ts index b369b46..1f42159 100644 --- a/src/utils/DOMHelper.ts +++ b/src/utils/DOMHelper.ts @@ -2,41 +2,29 @@ * this helper helps manipulating DOM */ -export function setGitakoBodyClass(className: string, enable: boolean) { - const classList = document.body.classList - if (enable) classList.add(className) - else classList.remove(className) -} +export const rootElementID = 'gitako-root' +export const gitakoDescriptionTarget = document.documentElement /** * when gitako is ready, make page's header narrower * or cancel it */ export function markGitakoReadyState(ready: boolean) { - const readyClassName = 'gitako-ready' - return setGitakoBodyClass(readyClassName, ready) -} - -export function markGitakoSafariFlag(enable = true) { - const className = 'gitako-safari' - return setGitakoBodyClass(className, enable) + const readyAttributeName = 'data-gitako-ready' + return gitakoDescriptionTarget.setAttribute(readyAttributeName, `${ready}`) } /** * if should show gitako, then move body right to make space for showing gitako * otherwise, hide the space */ -export const bodySpacingClassName = 'with-gitako-spacing' +export const spacingAttributeName = 'data-with-gitako-spacing' export function setBodyIndent(shouldShowGitako: boolean) { - if (shouldShowGitako) { - document.body.classList.add(bodySpacingClassName) - } else { - document.body.classList.remove(bodySpacingClassName) - } + gitakoDescriptionTarget.setAttribute(spacingAttributeName, `${shouldShowGitako}`) } export function $(selector: string): HTMLElement | null -export function $(selector: string, existCallback: (element: HTMLElement) => T1): T1 +export function $(selector: string, existCallback: (element: HTMLElement) => T1): T1 | null export function $( selector: string, existCallback: (element: HTMLElement) => T1, @@ -46,7 +34,8 @@ export function $( selector: string, existCallback: undefined | null, otherwise: () => T2, -): HTMLElement | null | T2 +): HTMLElement | T2 +// eslint-disable-next-line @typescript-eslint/no-explicit-any export function $(selector: string, existCallback?: any, otherwise?: any) { const element = document.querySelector(selector) if (element) { @@ -56,15 +45,46 @@ export function $(selector: string, existCallback?: any, otherwise?: any) { } /** - * add the logo element into DOM + * DOM Structure after calling the `insert*MountPoint` functions + * + * + * + * + *

+ *
+ *
+ *
+ *
+ *
+ * */ + +const mountPointContainer = document.documentElement +export function insertMountPoint() { + return $(formatID(rootElementID), undefined, () => { + const element = document.createElement('div') + element.setAttribute('id', rootElementID) + mountPointContainer.appendChild(element) + return element + }) +} + +export function insertSideBarMountPoint() { + const sidebarMountPointID = 'gitako-sidebar-mount-point' + return $(formatID(sidebarMountPointID), undefined, () => { + const sideBarElement = document.createElement('div') + sideBarElement.setAttribute('id', sidebarMountPointID) + insertMountPoint().appendChild(sideBarElement) + return sideBarElement + }) +} + export function insertLogoMountPoint() { - const logoID = 'gitako-logo-mount-point' - const logoSelector = '#' + logoID - return $(logoSelector, undefined, function createLogoMountPoint() { + const logoMountPointID = 'gitako-logo-mount-point' + return $(formatID(logoMountPointID), undefined, () => { const logoMountElement = document.createElement('div') - logoMountElement.setAttribute('id', logoID) - document.body.appendChild(logoMountElement) + logoMountElement.setAttribute('id', logoMountPointID) + insertMountPoint().appendChild(logoMountElement) return logoMountElement }) } @@ -110,28 +130,6 @@ export function copyElementContent(element: Element, trimLeadingSpace?: boolean) return isCopySuccessful } -/** - * focus to side bar, user will be able to manipulate it with keyboard - */ -export function focusFileExplorer() { - const sideBarContentSelector = '.gitako-side-bar .file-explorer' - $(sideBarContentSelector, sideBarElement => { - if (sideBarElement instanceof HTMLElement) sideBarElement.focus() - }) -} - -export function focusSearchInput() { - const searchInputSelector = '.search-input input' - $(searchInputSelector, searchInputElement => { - if ( - document.activeElement !== searchInputElement && - searchInputElement instanceof HTMLElement - ) { - searchInputElement.focus() - } - }) -} - export function findNodeElement(node: TreeNode, rootElement: HTMLElement): HTMLElement | null { const nodeElement = rootElement.querySelector(`a[href="${node.url}"]`) if (nodeElement instanceof HTMLElement) return nodeElement @@ -142,3 +140,24 @@ export function setCSSVariable(name: string, value: string | undefined, element: if (value === undefined) element.style.removeProperty(name) else element.style.setProperty(name, value) } + +export const setGitakoWidthCSSVariable = (size: number) => { + setCSSVariable('--gitako-width', `${size}px`, gitakoDescriptionTarget) +} + +export function formatID(id: string) { + return `#${id}` +} + +export function formatClass(className: string) { + return `.${className}` +} + +export function parseIntFromElement(e: HTMLElement): number { + return parseInt((e.innerText || '').replace(/[^0-9]/g, '')) +} + +export function cancelEvent(e: KeyboardEvent): void { + e.stopPropagation() + e.preventDefault() +} diff --git a/src/utils/EventHub.ts b/src/utils/EventHub.ts index 1fc02c5..381374b 100644 --- a/src/utils/EventHub.ts +++ b/src/utils/EventHub.ts @@ -18,8 +18,8 @@ export class EventSubscription = VoidFN { ports: { [key in keyof Shape]: EventSubscription diff --git a/src/utils/URLHelper.ts b/src/utils/URLHelper.ts new file mode 100644 index 0000000..bdd74d8 --- /dev/null +++ b/src/utils/URLHelper.ts @@ -0,0 +1,17 @@ +export const sanitizedLocation = { + get href() { + const { href, pathname } = window.location + const hasDupSlashes = pathname.includes('//') + const needSanitize = hasDupSlashes + if (!needSanitize) return href + + const url = new URL(href) + url.pathname = sanitizedLocation.pathname + return url.href + }, + get pathname() { + const { pathname } = window.location + // remove duplicated slashes + return pathname.replace(/^\/\/+/g, '/') + }, +} diff --git a/src/utils/VisibleNodesGenerator/index.ts b/src/utils/VisibleNodesGenerator/index.ts index 941b321..ae1202a 100644 --- a/src/utils/VisibleNodesGenerator/index.ts +++ b/src/utils/VisibleNodesGenerator/index.ts @@ -80,15 +80,17 @@ class BaseLayer { baseRoot: TreeNode getTreeData: (path: string) => Async loading: Set = new Set() + defer: boolean baseHub = new EventHub<{ emit: BaseLayer['baseRoot'] loadingChange: BaseLayer['loading'] }>() - constructor({ root, getTreeData }: Options) { + constructor({ root, getTreeData, defer = false }: Options) { this.baseRoot = root this.getTreeData = getTreeData + this.defer = defer } loadTreeData = async (path: string) => { @@ -320,6 +322,7 @@ class FlattenLayer extends CompressLayer { type Options = { root: BaseLayer['baseRoot'] + defer?: BaseLayer['defer'] getTreeData: BaseLayer['getTreeData'] compress: CompressLayer['compress'] } @@ -351,10 +354,11 @@ export class VisibleNodesGenerator extends FlattenLayer { onNextUpdate(callback: (visibleNodes: VisibleNodes) => void) { const oneTimeSubscription = (visibleNodes: VisibleNodes) => { + cancel() callback(visibleNodes) - this.hub.removeEventListener('emit', oneTimeSubscription) } - return this.hub.addEventListener('emit', oneTimeSubscription) + const cancel = this.hub.addEventListener('emit', oneTimeSubscription) + return cancel } update() { diff --git a/src/utils/VisibleNodesGenerator/prepare.ts b/src/utils/VisibleNodesGenerator/prepare.ts index bbce9da..5104cbe 100644 --- a/src/utils/VisibleNodesGenerator/prepare.ts +++ b/src/utils/VisibleNodesGenerator/prepare.ts @@ -35,7 +35,7 @@ function recursiveMarkDiff( const [path] = node markDiff(path, state) } else { - const [name, children] = node + const [, children] = node for (const child of children) { recursiveMarkDiff(child, state, markDiff) } diff --git a/src/utils/assert.ts b/src/utils/assert.ts new file mode 100644 index 0000000..39e3bf6 --- /dev/null +++ b/src/utils/assert.ts @@ -0,0 +1,3 @@ +export function assert(condition: boolean, errorMessage?: string): asserts condition { + if (!condition) throw new Error(errorMessage) +} diff --git a/src/utils/config/helper.ts b/src/utils/config/helper.ts index ea3c369..651a61a 100644 --- a/src/utils/config/helper.ts +++ b/src/utils/config/helper.ts @@ -1,10 +1,12 @@ import { SearchMode } from 'components/searchModes' -import { storageHelper } from 'utils/storageHelper' +import { platformName } from 'platforms' +import { Storage, storageHelper } from 'utils/storageHelper' import { migrateConfig } from './migrations' export type Config = { sideBarWidth: number - shortcut: string | undefined + shortcut: string | undefined // shortcut for toggling sidebar + focusSearchInputShortcut: string | undefined // shortcut for focusing search input accessToken: string | undefined compressSingletonFolder: boolean copyFileButton: boolean @@ -12,7 +14,6 @@ export type Config = { intelligentToggle: boolean | null // `null` stands for intelligent, boolean for sidebar open state icons: 'rich' | 'dim' | 'native' toggleButtonVerticalDistance: number - toggleButtonContent: 'logo' | 'octoface' recursiveToggleFolder: 'shift' | 'alt' searchMode: SearchMode sidebarToggleMode: 'persistent' | 'float' @@ -20,12 +21,16 @@ export type Config = { codeFolding: boolean compactFileTree: boolean restoreExpandedFolders: boolean + pjaxMode: 'native' | 'pjax-api' showDiffInText: boolean } +export type ConfigKeys = keyof Config + enum configKeys { sideBarWidth = 'sideBarWidth', shortcut = 'shortcut', + focusSearchInputShortcut = 'focusSearchInputShortcut', accessToken = 'accessToken', compressSingletonFolder = 'compressSingletonFolder', copyFileButton = 'copyFileButton', @@ -33,7 +38,6 @@ enum configKeys { intelligentToggle = 'intelligentToggle', icons = 'icons', toggleButtonVerticalDistance = 'toggleButtonVerticalDistance', - toggleButtonContent = 'toggleButtonContent', recursiveToggleFolder = 'recursiveToggleFolder', searchMode = 'searchMode', sidebarToggleMode = 'sidebarToggleMode', @@ -41,23 +45,25 @@ enum configKeys { codeFolding = 'codeFolding', compactFileTree = 'compactFileTree', restoreExpandedFolders = 'restoreExpandedFolders', + pjaxMode = 'pjaxMode', showDiffInText = 'showDiffInText', } -// do NOT use platform name +// NOT use platform name to distinguish GHE from github.com const platformStorageKey = `platform_` + window.location.host.toLowerCase() +const isInGitHub = platformStorageKey === 'platform_github.com' -export const defaultConfigs: Config = { +export const getDefaultConfigs: () => Config = () => ({ sideBarWidth: 260, shortcut: undefined, + focusSearchInputShortcut: undefined, accessToken: '', compressSingletonFolder: true, - copyFileButton: platformStorageKey !== 'platform_github.com', // false when on github.com, - copySnippetButton: platformStorageKey !== 'platform_github.com', // false when on github.com + copyFileButton: !isInGitHub, // disable on github.com + copySnippetButton: !isInGitHub, // disable on github.com intelligentToggle: null, icons: 'rich', toggleButtonVerticalDistance: 124, // align with GitHub's navbar items - toggleButtonContent: 'logo', recursiveToggleFolder: 'shift', searchMode: 'fuzzy', sidebarToggleMode: 'float', @@ -65,32 +71,38 @@ export const defaultConfigs: Config = { codeFolding: true, compactFileTree: false, restoreExpandedFolders: true, + pjaxMode: platformName === 'GitHub' ? 'native' : 'pjax-api', // use native on GitHub showDiffInText: false, -} +}) const configKeyArray = Object.values(configKeys) function applyDefaultConfigs(configs: Partial) { + const defaultConfigs = getDefaultConfigs() return configKeyArray.reduce((applied, key) => { Object.assign(applied, { [key]: key in configs ? configs[key] : defaultConfigs[key] }) return applied }, {} as Config) } -export type VersionedConfig = Record & { configVersion: string } +export type VersionedConfig = Record & Storage -const prepareConfig = new Promise(async resolve => { - await migrateConfig() - resolve() -}) +export const configRef: Partial = {} +const updateConfigRef = async (config: Partial) => { + Object.assign(configRef, config) +} + +const configMigration = migrateConfig() +configMigration.then(async () => updateConfigRef(await get())) async function get(): Promise { - await prepareConfig + await configMigration const config = await storageHelper.get>([platformStorageKey]) return applyDefaultConfigs(config?.[platformStorageKey] || {}) } async function set(config: Config) { + updateConfigRef(config) return await storageHelper.set({ [platformStorageKey]: config }) } diff --git a/src/utils/config/migrations/1.0.1.ts b/src/utils/config/migrations/1.0.1.ts index 45d2a1b..c7904f5 100644 --- a/src/utils/config/migrations/1.0.1.ts +++ b/src/utils/config/migrations/1.0.1.ts @@ -1,3 +1,4 @@ +import { is } from 'utils/is' import { storageHelper } from 'utils/storageHelper' import { Migration } from '.' import { Storage } from '../../storageHelper' @@ -5,7 +6,7 @@ import { Storage } from '../../storageHelper' export const migration: Migration = { version: '1.0.1', async migrate(version) { - const config: any | void = await storageHelper.get([ + const config: JSONObject | void = await storageHelper.get([ 'configVersion', 'sideBarWidth', 'shortcut', @@ -20,6 +21,7 @@ export const migration: Migration = { config && (!('configVersion' in config) || config.configVersion === null || + !is.string(config.configVersion) || config.configVersion < version) ) { await storageHelper.set({ platform_GitHub: config, configVersion: version }) diff --git a/src/utils/config/migrations/1.3.4.ts b/src/utils/config/migrations/1.3.4.ts index 9fd8cd9..4558fa5 100644 --- a/src/utils/config/migrations/1.3.4.ts +++ b/src/utils/config/migrations/1.3.4.ts @@ -1,12 +1,12 @@ +import { is } from 'utils/is' import { storageHelper } from 'utils/storageHelper' import { Migration } from '.' -import { Storage } from '../../storageHelper' import { Config, VersionedConfig } from '../helper' export const migration: Migration = { version: '1.3.4', async migrate(version) { - const config: any | void = await storageHelper.get & Storage>([ + const config: JSONObject | void = await storageHelper.get>([ 'configVersion', 'platform_undefined', 'platform_GitHub', @@ -15,6 +15,7 @@ export const migration: Migration = { if ( config && 'configVersion' in config && + is.string(config.configVersion) && config.configVersion < version && (config.platform_GitHub || config.platform_undefined) && !config['platform_github.com'] diff --git a/src/utils/config/migrations/2.6.0.ts b/src/utils/config/migrations/2.6.0.ts index d5a522f..2579bc3 100644 --- a/src/utils/config/migrations/2.6.0.ts +++ b/src/utils/config/migrations/2.6.0.ts @@ -13,12 +13,9 @@ export const migration: Migration = { await onConfigOutdated(version, async configs => { for (const key of Object.keys(configs)) { - if ( - typeof configs[key] === 'object' && - configs[key] !== null && - 'access_token' in configs[key] - ) { - const configBeforeMigrate: ConfigBeforeMigrate = configs[key] + const target = configs[key] + if (typeof target === 'object' && target !== null && 'access_token' in target) { + const configBeforeMigrate: ConfigBeforeMigrate = target const { access_token: accessToken, ...rest } = configBeforeMigrate const configAfterMigrate: ConfigAfterMigrate = { ...rest, diff --git a/src/utils/config/migrations/3.0.0.ts b/src/utils/config/migrations/3.0.0.ts index 4db2fba..2c4cbbd 100644 --- a/src/utils/config/migrations/3.0.0.ts +++ b/src/utils/config/migrations/3.0.0.ts @@ -16,7 +16,7 @@ export const migration: Migration = { const key = 'platform_github.com' const config = configs[key] if (typeof config === 'object' && config !== null && 'copySnippetButton' in config) { - const configBeforeMigrate: ConfigBeforeMigrate = config + const configBeforeMigrate = config as ConfigBeforeMigrate const { copySnippetButton, ...rest } = configBeforeMigrate if (copySnippetButton) { const configAfterMigrate: ConfigAfterMigrate = { diff --git a/src/utils/config/migrations/3.5.0.ts b/src/utils/config/migrations/3.5.0.ts index 1c25b3c..eb7415c 100644 --- a/src/utils/config/migrations/3.5.0.ts +++ b/src/utils/config/migrations/3.5.0.ts @@ -9,14 +9,14 @@ export const migration: Migration = { copyFileButton: boolean } type ConfigAfterMigrate = { - copyFileButton: boolean + copyFileButton: false } await onConfigOutdated(version, async configs => { const key = 'platform_github.com' const config = configs[key] if (typeof config === 'object' && config !== null && 'copyFileButton' in config) { - const configBeforeMigrate: ConfigBeforeMigrate = config + const configBeforeMigrate = config as ConfigBeforeMigrate const { copyFileButton, ...rest } = configBeforeMigrate if (copyFileButton) { const configAfterMigrate: ConfigAfterMigrate = { diff --git a/src/utils/config/migrations/clearRaiseErrorCache.ts b/src/utils/config/migrations/clearRaiseErrorCache.ts new file mode 100644 index 0000000..a467457 --- /dev/null +++ b/src/utils/config/migrations/clearRaiseErrorCache.ts @@ -0,0 +1,13 @@ +import { storageHelper } from 'utils/storageHelper' +import { Migration, onConfigOutdated } from '.' +import { version } from '../../../../package.json' + +// Run every time a new version is released. +export const migration: Migration = { + version, + async migrate(version) { + await onConfigOutdated(version, async () => { + await storageHelper.set({ raiseErrorCache: [] }) + }) + }, +} diff --git a/src/utils/config/migrations/index.ts b/src/utils/config/migrations/index.ts index 276c197..58936d1 100644 --- a/src/utils/config/migrations/index.ts +++ b/src/utils/config/migrations/index.ts @@ -1,10 +1,12 @@ -import { storageHelper } from 'utils/storageHelper' +import { storageHelper, storageKeys } from 'utils/storageHelper' +import { version } from '../../../../package.json' import { Storage } from '../../storageHelper' import { migration as v1v0v1 } from './1.0.1' import { migration as v1v3v4 } from './1.3.4' import { migration as v2v6v0 } from './2.6.0' import { migration as v3v0v0 } from './3.0.0' import { migration as v3v5v0 } from './3.5.0' +import { migration as clearRaiseErrorCache } from './clearRaiseErrorCache' export type Migration = { version: string @@ -13,21 +15,29 @@ export type Migration = { export async function migrateConfig() { const migrations: Migration[] = [v1v0v1, v1v3v4, v2v6v0, v3v0v0, v3v5v0] + migrations.push(clearRaiseErrorCache) // Make sure this is run after other version-specific migrations for (const { version, migrate } of migrations) { await migrate(version) } + + await storageHelper.set({ [storageKeys.configVersion]: version }) } -export async function onConfigOutdated( - configVersion: string, +export async function onConfigOutdated( + migrationConfigVersion: string, runIfOutdated: (config: T) => Async, ) { const config = await storageHelper.get() - if (config && config.configVersion < configVersion) { - const { configVersion: $configVersion, ...restConfig } = config - await runIfOutdated(restConfig as T) - await storageHelper.set({ configVersion }) + if (config) { + const { + [storageKeys.configVersion]: savedConfigVersion, + [storageKeys.raiseErrorCache]: __, // eslint-disable-line @typescript-eslint/no-unused-vars + ...restConfig + } = config + if (savedConfigVersion < migrationConfigVersion) { + await runIfOutdated(restConfig as T) + } } } diff --git a/src/utils/createAnchorClickHandler.ts b/src/utils/createAnchorClickHandler.ts index 88cc400..61e4815 100644 --- a/src/utils/createAnchorClickHandler.ts +++ b/src/utils/createAnchorClickHandler.ts @@ -1,11 +1,11 @@ import { isOpenInNewWindowClick } from './general' -import { loadWithPJAX } from './hooks/usePJAX' +import { loadWithFastRedirect } from './hooks/useFastRedirect' export function createAnchorClickHandler(url: string) { return (e: React.MouseEvent) => { if (isOpenInNewWindowClick(e)) return e.preventDefault() - loadWithPJAX(url, e.currentTarget) + loadWithFastRedirect(url, e.currentTarget) } } diff --git a/src/utils/general.test.ts b/src/utils/general.test.ts index 205acc8..acb3949 100644 --- a/src/utils/general.test.ts +++ b/src/utils/general.test.ts @@ -1,4 +1,4 @@ -import { resolveDiffGraphMeta } from './general' +import { atomicAsyncFunction, resolveDiffGraphMeta } from './general' it(`should resolve diff stat graph meta properly`, () => { const example = ` @@ -27,3 +27,37 @@ it(`should resolve diff stat graph meta properly`, () => { expect([meta.g, meta.r]).toEqual([g, r]) }) }) + +it(`should schedule atomic promises properly`, async () => { + const sleep = (duration: number) => new Promise(resolve => setTimeout(resolve, duration)) + + const recorder: string[] = [] + const sleepWithNoise = async (duration: number, noise: string) => { + await sleep(duration) + recorder.push(noise) + return noise + } + + const atomicSleep = atomicAsyncFunction(sleepWithNoise) + + recorder.length = 0 + const atomicReturns = await Promise.all([atomicSleep(200, 'a'), atomicSleep(100, 'b')]) + // Expected time sheet + // 0 100 200 300 + // [a ] + // [b ] + // Recorder: [a, b] + // + expect(recorder).toEqual(['a', 'b']) + expect(atomicReturns).toEqual(['a', 'b']) + + recorder.length = 0 + const normalReturns = await Promise.all([sleepWithNoise(200, 'a'), sleepWithNoise(100, 'b')]) + // Time sheet if not atomic + // 0 100 200 + // [a ] + // [b ] + // Recorder: [b, a] + expect(recorder).toEqual(['b', 'a']) + expect(normalReturns).toEqual(['a', 'b']) +}) diff --git a/src/utils/general.ts b/src/utils/general.ts index 619b889..a7baa40 100644 --- a/src/utils/general.ts +++ b/src/utils/general.ts @@ -1,5 +1,18 @@ import { ReactElement } from 'react' import * as ReactDOM from 'react-dom' +import { is } from './is' + +export function subIO(io: IO, field: K): IO { + return { + value: io.value[field], + onChange(value) { + io.onChange({ + ...io.value, + [field]: value, + }) + }, + } +} export function pick(source: T, keys: string[]): Partial { if (keys && typeof keys === 'object') { @@ -60,19 +73,8 @@ export function friendlyFormatShortcut(shortcut?: string) { } } -/** - * if item's name matches path, return the depth of the item - * else return 0 - */ -function measureDistance(item: TreeNode, path: TreeNode['name'][]): number { - const pathString = path.join('/') - if (item.name.startsWith(pathString + '/')) { - // If accessing a leading item of compressed node, path will be shorter than item.name - return path.length - } else if (pathString === item.name || pathString.startsWith(item.name + '/')) { - return item.name.split('/').length - } - return 0 +export function formatWithShortcut(prefix: string, shortcut?: string) { + return shortcut ? `${prefix} (${friendlyFormatShortcut(shortcut)})` : prefix } export async function traverse( @@ -121,7 +123,11 @@ export function parseURLSearch(search = window.location.search) { return new URLSearchParams(search) } -export async function JSONRequest(url: string, data: any, extra: RequestInit = { method: 'post' }) { +export async function JSONRequest( + url: string, + data: D, + extra: RequestInit = { method: 'post' }, +) { return ( await fetch(url, { mode: 'cors', @@ -140,12 +146,20 @@ export async function JSONRequest(url: string, data: any, extra: RequestInit = { ).json() } -export function searchKeyToRegexp(searchKey: string) { - if (!searchKey) return null - - return safeRegexp(searchKey, hasUpperCase(searchKey) ? 'g' : 'gi') +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function memoize(fn: (...args: Args) => R): (...args: Args) => R { + let lastArgs: Args | null = null + let lastR: R | null = null + return (...args) => { + if (lastArgs && is.shallowEqual.array(lastArgs, args)) return lastR as R + return (lastR = fn(...(lastArgs = args))) + } } +export const searchKeyToRegexp = memoize((searchKey: string) => + searchKey ? safeRegexp(searchKey, hasUpperCase(searchKey) ? 'g' : 'gi') : null, +) + export function hasUpperCase(input: string) { return /[A-Z]/.test(input) } @@ -171,12 +185,12 @@ export function isValidRegexpSource(source: string) { return Boolean(safeRegexp(source)) } -export function withEffect any>( +export function withEffect any>( // eslint-disable-line @typescript-eslint/no-explicit-any method: Method, effect: (payload: ReturnType) => void, ): (...args: Parameters) => ReturnType { return (...args) => { - const returnValue = method.apply(null, args) + const returnValue = method(...args) Promise.resolve(returnValue).then(effect) return returnValue } @@ -186,22 +200,6 @@ export function run(fn: () => T) { return fn() } -export function createPromiseQueue() { - let promise: Promise - return { - async enter() { - let leave: () => void - const current = new Promise(resolve => (leave = () => resolve())) - - const lastPromise = promise - promise = current! - if (lastPromise) await lastPromise - - return leave! - }, - } -} - export function isOpenInNewWindowClick(event: React.MouseEvent) { return ( (os === OperatingSystems.macOS && (event.metaKey || event.shiftKey)) || @@ -219,3 +217,23 @@ export function resolveDiffGraphMeta(additions: number, deletions: number, chang w = 5 - g - r return { g, r, w } } + +export function forOf(target: T, callback: (key: K, value: T[K]) => R) { + for (const key of Object.keys(target)) { + const $key = key as keyof typeof target + const r = callback($key, target[$key]) + if (r !== undefined) return r + } +} + +// eslint-disable-next-line @typescript-eslint/no-empty-function +export function noop() {} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function atomicAsyncFunction(fn: (...args: Args) => Promise) { + let last: Promise | undefined + return async (...args: Args) => { + last = last ? last.then(() => fn(...args)) : fn(...args) + return last + } +} diff --git a/src/utils/gitSubmodule.ts b/src/utils/gitSubmodule.ts index c6ef1aa..eeb1d17 100644 --- a/src/utils/gitSubmodule.ts +++ b/src/utils/gitSubmodule.ts @@ -10,8 +10,8 @@ const subModuleURLRegex = { function transformModuleGitURL(node: TreeNode, URL: string) { const matched = URL.match(subModuleURLRegex.git) if (!matched) return - const [_, userName, repoName] = matched - return appendCommitPath(`https://${window.location.host}/${userName}/${repoName}`, node) + const [, userName, repoName] = matched + return appendCommitPath(`${window.location.origin}/${userName}/${repoName}`, node) } function cutDotGit(URL: string) { diff --git a/src/utils/hooks/useAbortableEffect.ts b/src/utils/hooks/useAbortableEffect.ts new file mode 100644 index 0000000..2e35c5a --- /dev/null +++ b/src/utils/hooks/useAbortableEffect.ts @@ -0,0 +1,19 @@ +import { useEffect } from 'react' + +/** + * This effect addresses such a problem: + * the later effect ends earlier than the previous one, and the previous effect overlaps later effect's result. + */ +export function useAbortableEffect( + effect: (shouldAbort: AbortSignal) => (() => void | undefined) | void, +) { + useEffect(() => { + const abortController = new AbortController() + // The previous effect should stop running if the signal indicates should abort + const defect = effect(abortController.signal) + return () => { + abortController.abort() + defect?.() + } + }, [effect]) +} diff --git a/src/utils/hooks/useAsyncMemo.ts b/src/utils/hooks/useAsyncMemo.ts deleted file mode 100644 index 62e2f53..0000000 --- a/src/utils/hooks/useAsyncMemo.ts +++ /dev/null @@ -1,16 +0,0 @@ -import * as React from 'react' -import { useStateIO } from './useStateIO' - -export function useAsyncMemo( - factory: (dependencies: D) => T | Promise, - deps: D, - initialValue: T, -): T { - const firstTime = React.useRef(true) - const state = useStateIO(() => initialValue) - React.useEffect(() => { - if (firstTime.current) firstTime.current = false - Promise.resolve(factory(deps)).then(consumed => state.onChange(() => consumed)) - }, deps) - return state.value -} diff --git a/src/utils/hooks/useCSSVariable.ts b/src/utils/hooks/useCSSVariable.ts index 889a774..ae86814 100644 --- a/src/utils/hooks/useCSSVariable.ts +++ b/src/utils/hooks/useCSSVariable.ts @@ -1,4 +1,5 @@ import { useLayoutEffect } from 'react' +import { setCSSVariable } from 'utils/DOMHelper' export function useCSSVariable( name: string, @@ -6,6 +7,6 @@ export function useCSSVariable( element: HTMLElement = document.documentElement, ) { useLayoutEffect(() => { - element.style.setProperty(name, value) + setCSSVariable(name, value, element) }, [name, value, element]) } diff --git a/src/utils/hooks/useCatchNetworkError.ts b/src/utils/hooks/useCatchNetworkError.ts index f236641..6885c3b 100644 --- a/src/utils/hooks/useCatchNetworkError.ts +++ b/src/utils/hooks/useCatchNetworkError.ts @@ -1,6 +1,7 @@ import { useConfigs } from 'containers/ConfigsContext' import { errors, platformName } from 'platforms' import { useCallback } from 'react' +import { assert } from 'utils/assert' import { useLoadedContext } from 'utils/hooks/useLoadedContext' import { SideBarErrorContext } from '../../containers/ErrorContext' import { SideBarStateContext } from '../../containers/SideBarState' @@ -15,6 +16,8 @@ export function useCatchNetworkError() { try { return await fn() // keep the await so that catch block can catch async errors } catch (err) { + assert(err instanceof Error) + if (err.message === errors.EMPTY_PROJECT) { errorContext.onChange('This project seems to be empty.') } else if (err.message === errors.BLOCKED_PROJECT) { @@ -40,6 +43,6 @@ export function useCatchNetworkError() { } } }, - [accessToken /* , stateContext.value, errorContext.value */], + [accessToken /* , stateContext.value, errorContext.value */], // eslint-disable-line react-hooks/exhaustive-deps ) } diff --git a/src/utils/hooks/useEffectOnSerializableUpdates.ts b/src/utils/hooks/useEffectOnSerializableUpdates.ts index ecbcd4c..0ba2070 100644 --- a/src/utils/hooks/useEffectOnSerializableUpdates.ts +++ b/src/utils/hooks/useEffectOnSerializableUpdates.ts @@ -5,5 +5,6 @@ export function useEffectOnSerializableUpdates( serialize: (value: T) => string, onChange: (value: T) => void, ) { - React.useEffect(() => onChange(value), [onChange, serialize(value)]) + const serialized = React.useMemo(() => serialize(value), [value, serialize]) + React.useEffect(() => onChange(value), [onChange, serialized]) // eslint-disable-line react-hooks/exhaustive-deps } diff --git a/src/utils/hooks/useElementSize.ts b/src/utils/hooks/useElementSize.ts new file mode 100644 index 0000000..168147c --- /dev/null +++ b/src/utils/hooks/useElementSize.ts @@ -0,0 +1,32 @@ +import * as React from 'react' +import * as features from 'utils/features' +import { Size2D } from '../../components/Size' + +export function useElementSize() { + const ref = React.useRef(null) + + const [size, setSize] = React.useState([0, 0]) + + React.useEffect(() => { + if (ref.current) { + if (features.resize) { + const observer = new window.ResizeObserver(entries => { + const entry = entries[0] + if (!entry) return + const { width, height } = entry.contentRect + setSize([width, height]) + }) + observer.observe(ref.current) + return () => observer.disconnect() + } else if ('getBoundingClientRect' in ref.current) { + const { width, height } = ref.current.getBoundingClientRect() + setSize([width, height]) + } + } + }, []) + + return { + ref, + size, + } +} diff --git a/src/utils/hooks/usePJAX.ts b/src/utils/hooks/useFastRedirect.ts similarity index 51% rename from src/utils/hooks/usePJAX.ts rename to src/utils/hooks/useFastRedirect.ts index 396dcaf..a5c9a93 100644 --- a/src/utils/hooks/usePJAX.ts +++ b/src/utils/hooks/useFastRedirect.ts @@ -1,9 +1,9 @@ -import { Config, Pjax } from 'pjax-api' +import { useConfigs } from 'containers/ConfigsContext' import { platform } from 'platforms' import * as React from 'react' import { useEvent } from 'react-use' -const config: Config = { +const config: import('pjax-api').Config = { areas: [ // github '.repository-content', @@ -22,34 +22,40 @@ const config: Config = { }, link: 'a:not(a)', // this helps fixing the go-back-in-history issue form: 'form:not(form)', // prevent blocking form submissions - fallback(target, reason) { + fallback(/* target, reason */) { // prevent unexpected reload }, } -export function usePJAX() { +export function usePJAXAPI() { + const { pjaxMode } = useConfigs().value // make history travel work React.useEffect(() => { - new Pjax({ - ...config, - filter() { - return false - }, - }) - }, []) + if (pjaxMode === 'pjax-api') { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { Pjax } = require('pjax-api') + new Pjax({ + ...config, + filter() { + return false + }, + }) + } + }, []) // eslint-disable-line react-hooks/exhaustive-deps // bindings for legacy support useRedirectedEvents(window, 'pjax:fetch', 'pjax:start', document) useRedirectedEvents(document, 'pjax:ready', 'pjax:end') } -export const loadWithPJAX = (url: string, element: HTMLElement) => { - if (platform.loadWithPJAX) platform.loadWithPJAX(url, element) - else Pjax.assign(url, config) +export const loadWithFastRedirect = (url: string, element: HTMLElement) => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + platform.loadWithFastRedirect?.(url, element) || require('pjax-api').Pjax.assign(url, config) } -export function useOnPJAXDone(callback: () => void) { - useEvent('pjax:end', callback, document) +export function useAfterRedirect(callback: () => void) { + useEvent('pjax:end', callback, document) // legacy support + useEvent('turbo:render', callback, document) // prevent page content shift after first redirect to new page via turbo when sidebar is pinned } export function useRedirectedEvents( diff --git a/src/utils/hooks/useMediaStyleSheet.ts b/src/utils/hooks/useMediaStyleSheet.ts deleted file mode 100644 index 40d3c76..0000000 --- a/src/utils/hooks/useMediaStyleSheet.ts +++ /dev/null @@ -1,27 +0,0 @@ -import * as React from 'react' -import { createStyleSheet, setStyleSheetMedia } from '../general' - -export function useMediaStyleSheet( - content: string, - getMediaQuery: (width: number) => string[], - size: number, -) { - const style = React.useRef() - // this order may prevent first effect actually occur at first time - React.useEffect(() => { - setSheetMedia() - }, [size]) - React.useEffect(() => { - style.current = createStyleSheet(content) - setSheetMedia() - }, []) - function setSheetMedia() { - if (style.current) - setStyleSheetMedia( - style.current, - getMediaQuery(size) - .map(query => `(${query})`) - .join(' and '), - ) - } -} diff --git a/src/utils/hooks/useOnShortcutPressed.tsx b/src/utils/hooks/useOnShortcutPressed.tsx new file mode 100644 index 0000000..0708033 --- /dev/null +++ b/src/utils/hooks/useOnShortcutPressed.tsx @@ -0,0 +1,25 @@ +import * as React from 'react' +import { useLoadedContext } from 'utils/hooks/useLoadedContext' +import * as keyHelper from 'utils/keyHelper' +import { SideBarStateContext } from '../../containers/SideBarState' + +export function useOnShortcutPressed( + shortcut: string | undefined, + onPressed: (e: KeyboardEvent) => void, +) { + const state = useLoadedContext(SideBarStateContext).value + const isDisabled = state === 'disabled' || !shortcut + React.useEffect( + function attachKeyDown() { + if (isDisabled) return + + function onKeyDown(e: KeyboardEvent) { + const keys = keyHelper.parseEvent(e) + if (keys === shortcut) onPressed(e) + } + window.addEventListener('keydown', onKeyDown) + return () => window.removeEventListener('keydown', onKeyDown) + }, + [onPressed, isDisabled, shortcut], + ) +} diff --git a/src/utils/hooks/useProgressBar.ts b/src/utils/hooks/useProgressBar.ts index 29a0c2b..91d6a6e 100644 --- a/src/utils/hooks/useProgressBar.ts +++ b/src/utils/hooks/useProgressBar.ts @@ -11,7 +11,6 @@ const progressBar = { }, } -// use native progress bar on GitHub export function useProgressBar() { React.useEffect(() => { NProgress.configure({ showSpinner: false }) diff --git a/src/utils/hooks/useResizeHandler.tsx b/src/utils/hooks/useResizeHandler.ts similarity index 71% rename from src/utils/hooks/useResizeHandler.tsx rename to src/utils/hooks/useResizeHandler.ts index 2911a30..678a19e 100644 --- a/src/utils/hooks/useResizeHandler.tsx +++ b/src/utils/hooks/useResizeHandler.ts @@ -1,5 +1,5 @@ import * as React from 'react' -import { Size2D } from '../../components/SideBarBodyWrapper' +import { Size2D } from '../../components/Size' export type ResizeState = 'idle' | 'resizing' @@ -31,13 +31,14 @@ export function useResizeHandler( if (!pointerDown.current) return const [x0, y0] = initialSizeRef.current // Allow minor movement, this happened unintentionally for few times when I use track pad - pointerMoved.current = pointerMoved.current || (clientX - x0) ** 2 + (clientY - y0) ** 2 > distanceTolerance ** 2 + pointerMoved.current = + pointerMoved.current || (clientX - x0) ** 2 + (clientY - y0) ** 2 > distanceTolerance ** 2 const [x1, y1] = baseSize.current onResize([x1 + clientX - x0, y1 + clientY - y0]) } window.addEventListener('pointermove', onPointerMove) return () => window.removeEventListener('pointermove', onPointerMove) - }, [onResize]) + }, [onResize, distanceTolerance]) React.useEffect(() => { const onPointerUp = (e: PointerEvent) => { @@ -53,16 +54,19 @@ export function useResizeHandler( } window.addEventListener('pointerup', onPointerUp) return () => window.removeEventListener('pointerup', onPointerUp) - }, []) + }, [onClick, onResizeStateChange]) - const onPointerDown = React.useCallback((e: React.PointerEvent) => { - e.preventDefault() // Prevent unexpected selection when dragging in Safari - const { clientX, clientY } = e - pointerDown.current = true - initialSizeRef.current = [clientX, clientY] - baseSize.current = latestPropSize.current - onResizeStateChange?.('resizing') - }, []) + const onPointerDown = React.useCallback( + (e: React.PointerEvent) => { + e.preventDefault() // Prevent unexpected selection when dragging in Safari + const { clientX, clientY } = e + pointerDown.current = true + initialSizeRef.current = [clientX, clientY] + baseSize.current = latestPropSize.current + onResizeStateChange?.('resizing') + }, + [onResizeStateChange], + ) return { onPointerDown } } diff --git a/src/utils/hooks/useSequentialEffect.ts b/src/utils/hooks/useSequentialEffect.ts deleted file mode 100644 index 3b7497f..0000000 --- a/src/utils/hooks/useSequentialEffect.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useEffect, useRef } from 'react' - -/** - * This effect addresses such a problem: - * the later effect ends earlier than the previous one, and the previous effect overlaps later effect's result. - */ -export function useSequentialEffect( - effect: (checker: () => boolean) => (() => void | undefined) | void, - deps: React.DependencyList = [], -) { - const sequenceCounter = useRef(0) - useEffect(() => { - // The counter is incremented every time a new effect is added. - // And the previous effect should stop going forward by finding checker returning false. - const counter = ++sequenceCounter.current - const checker = () => counter === sequenceCounter.current - return effect(checker) - }, deps) -} diff --git a/src/utils/hooks/useStateIO.ts b/src/utils/hooks/useStateIO.ts index f216a50..979e750 100644 --- a/src/utils/hooks/useStateIO.ts +++ b/src/utils/hooks/useStateIO.ts @@ -1,11 +1,9 @@ import * as React from 'react' -export function useStateIO( - initialState: S | (() => S), -): { +export function useStateIO(initialState: S | (() => S)): { value: S onChange: React.Dispatch> } { const [value, onChange] = React.useState(initialState) - return { value, onChange } + return React.useMemo(() => ({ value, onChange }), [value]) } diff --git a/src/utils/hooks/useToggleSideBarWithKeyboard.ts b/src/utils/hooks/useToggleSideBarWithKeyboard.ts deleted file mode 100644 index 19d0a93..0000000 --- a/src/utils/hooks/useToggleSideBarWithKeyboard.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { ConfigsContextShape } from 'containers/ConfigsContext' -import * as React from 'react' -import * as keyHelper from 'utils/keyHelper' -import { SideBarState } from '../../containers/SideBarState' - -export function useToggleSideBarWithKeyboard( - state: SideBarState, - configContext: ConfigsContextShape, - toggleShowSideBar: () => void, -) { - const isDisabled = state === 'disabled' - React.useEffect( - function attachKeyDown() { - if (isDisabled || !configContext.value.shortcut) return - - function onKeyDown(e: KeyboardEvent) { - const keys = keyHelper.parseEvent(e) - if (keys === configContext.value.shortcut) { - toggleShowSideBar() - } - } - window.addEventListener('keydown', onKeyDown) - return () => window.removeEventListener('keydown', onKeyDown) - }, - [toggleShowSideBar, isDisabled, configContext.value.shortcut], - ) -} diff --git a/src/utils/hooks/useUpdateReason.ts b/src/utils/hooks/useUpdateReason.ts index 327bf74..5b3abf2 100644 --- a/src/utils/hooks/useUpdateReason.ts +++ b/src/utils/hooks/useUpdateReason.ts @@ -5,19 +5,19 @@ export function useUpdateReason

(props: P) { const lastPropsRef = React.useRef

(props) React.useEffect(() => { if (IN_PRODUCTION_MODE) return - let output: unknown[][] = [] + const output: ([string, keyof P, P[keyof P]] | [string, keyof P, P[keyof P], P[keyof P]])[] = [] for (const key of Object.keys(props)) { if (key === 'children') continue const $key = key as keyof P - if (!(key in lastPropsRef.current)) output.push([`[Added]`, key, props[$key]]) + if (!(key in lastPropsRef.current)) output.push([`[Added]`, $key, props[$key]]) if (lastPropsRef.current[$key] !== props[$key]) - output.push([`[Updated]`, key, lastPropsRef.current[$key], props[$key]]) + output.push([`[Updated]`, $key, lastPropsRef.current[$key], props[$key]]) } for (const key of Object.keys(lastPropsRef.current)) { if (key === 'children') continue const $key = key as keyof P - if (!(key in props)) output.push([`[Removed]`, key, props[$key]]) + if (!(key in props)) output.push([`[Removed]`, $key, props[$key]]) } if (output.length) { diff --git a/src/utils/is.ts b/src/utils/is.ts new file mode 100644 index 0000000..88a590a --- /dev/null +++ b/src/utils/is.ts @@ -0,0 +1,94 @@ +type Primitive = string | number | boolean | null | undefined + +const equal = { + type: (a: unknown, b: unknown) => getType(a) === getType(b), + unknown(a: unknown, b: unknown) { + const type = getType(a) + if (!equal.primitive(type, getType(b))) return false + switch (type) { + case 'array': + if (!equal.array(a as unknown[], b as unknown[])) return false + break + case 'object': + if (!equal.object(a as Record, b as Record)) return false + break + case 'date': + case 'function': + case 'regexp': + case 'symbol': + if (!equal.primitive(`${a}`, `${b}`)) return false + break + default: + if (!equal.primitive(a as Primitive, b as Primitive)) return false + } + return true + }, + primitive: (a: T, b: T) => a === b, + array(a: unknown[], b: unknown[]) { + if (a.length !== b.length) return false + const length = a.length + for (let i = 0; i < length; i++) if (!equal.unknown(a[i], b[i])) return false + return true + }, + object(a: Record, b: Record) { + if (Object.keys(a).length !== Object.keys(b).length) return false + }, +} + +const shallowEqual = { + array(a: unknown[], b: unknown[]) { + if (a.length !== b.length) return false + const length = a.length + for (let i = 0; i < length; i++) if (a[i] !== b[i]) return false + return true + }, +} + +function getType(a: unknown) { + switch (typeof a) { + case 'boolean': + return 'boolean' + case 'function': + return 'function' + case 'number': + return 'number' + case 'string': + return 'string' + case 'symbol': + return 'symbol' + case 'undefined': + return 'undefined' + case 'object': + if (a === null) return 'null' + if (Array.isArray(a)) return 'array' + if (a instanceof Date) return 'date' + if (a instanceof RegExp) return 'regexp' + return 'object' + default: + return 'unknown' + } +} + +export const is = { + equal, + shallowEqual, + boolean: (d: unknown): d is boolean => typeof d === 'boolean', + number: (d: unknown): d is number => typeof d === 'number', + string: (d: unknown): d is string => typeof d === 'string', + not: { + undefined: (d: T | undefined): d is T => d !== undefined, + null: (d: T | null): d is T => d !== null, + true: (d: T | true): d is T => d !== true, + false: (d: T | false): d is T => d !== false, + number: (d: T | number): d is T => typeof d !== 'number', + string: (d: T | string): d is T => typeof d !== 'string', + nil: (d: T | null | undefined): d is T => d !== null && d !== undefined, + }, + JSON: { + object: (d: unknown): d is JSONObject => + (typeof d === 'object' && d !== null && !Array.isArray(d)) || false, + array: (d: unknown): d is JSONArray => Array.isArray(d), + plain: (d: unknown): d is JSONPrimitive => + d === null || d === 'undefined' || is.boolean(d) || is.number(d) || is.string(d), + }, +} diff --git a/src/utils/keyHelper.ts b/src/utils/keyHelper.ts index 407d513..91f3f84 100644 --- a/src/utils/keyHelper.ts +++ b/src/utils/keyHelper.ts @@ -46,8 +46,8 @@ export function parseEvent(e: KeyboardEvent | React.KeyboardEvent) { const keys = { meta, ctrl, shift, alt, [code]: true } const combination = parse( Object.entries(keys) - .filter(([key, pressed]) => pressed) - .map(([key, pressed]) => key) + .filter(([, pressed]) => pressed) + .map(([key]) => key) .join('+'), ) return combination diff --git a/src/utils/networkService.ts b/src/utils/networkService.ts new file mode 100644 index 0000000..caf347e --- /dev/null +++ b/src/utils/networkService.ts @@ -0,0 +1 @@ +export const gitakoServiceHost = 'gitako.enix.one' diff --git a/src/utils/parseIconMapCSV.ts b/src/utils/parseIconMapCSV.ts index a820307..979442c 100644 --- a/src/utils/parseIconMapCSV.ts +++ b/src/utils/parseIconMapCSV.ts @@ -71,7 +71,7 @@ export function getFileIconURL(node: TreeNode) { // 1. swap time with space // 2. prevent app crash on when extension context invalidates const extensionURL = browser.runtime.getURL('').replace(/\/$/, '') -export function getIconURL(type: 'folder' | 'file', name: string = 'default', open?: boolean) { +export function getIconURL(type: 'folder' | 'file', name = 'default', open?: boolean) { const filename = (name === 'default' ? 'default_' + type : type + '_type_' + name) + (open ? '_opened' : '') + diff --git a/src/utils/storageHelper.ts b/src/utils/storageHelper.ts index e3dc40a..f677c0c 100644 --- a/src/utils/storageHelper.ts +++ b/src/utils/storageHelper.ts @@ -1,28 +1,27 @@ const localStorage = browser.storage.local +const keys = { + configVersion: 'configVersion', + raiseErrorCache: 'raiseErrorCache', +} as const + +export const storageKeys = keys + export type Storage = { - // save root level `configVersion` for easier future migrating - [key in EnumString<'configVersion'>]: string + // save root level keys for easier future migrating + [key in EnumString]: string // separate different platform configs to simplify interactions with browser storage API // e.g. // ['platform_github.com']?: Config } -async function get< - T extends { - [key: string]: any - } ->(mapping: string | string[] | null = null): Promise { - try { - return (await localStorage.get(mapping || undefined)) as T - } catch (err) {} +async function get(mapping: string | string[] | null = null) { + return (await localStorage.get(mapping || undefined)) as T | undefined } -function set(value: any): Promise | void { - try { - return localStorage.set(value) - } catch (err) {} +function set(value: T): Promise | void { + return localStorage.set(value) } export const storageHelper = { get, set } diff --git a/tsconfig.json b/tsconfig.json index 58cdfac..7f2ad7b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "target": "ESNext", "jsx": "react", "strict": true, - "lib": ["dom", "es2017.object", "es2016", "ES2020.String"], + "lib": ["dom", "es2017.object", "es2016", "ES2019.Array", "ES2020.String"], "baseUrl": "src", "resolveJsonModule": true, "allowSyntheticDefaultImports": true, diff --git a/webpack.config.js b/webpack.config.js index 337ac2d..3efacc4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -47,7 +47,7 @@ const plugins = [ Object.assign(manifest, { web_accessible_resources: manifest.web_accessible_resources.concat({ resources: ['*.map'], - matches: ['*://*/*'] + matches: ['*://*/*'], }), }) } @@ -76,8 +76,8 @@ const plugins = [ new MiniCssExtractPlugin(), ] -const analyse = process.env.ANALYSE !== undefined -if (analyse) { +const analyze = process.env.ANALYZE !== undefined +if (analyze) { plugins.push(new BundleAnalyzerPlugin()) console.log(`BundleAnalyzerPlugin added`) } @@ -116,6 +116,15 @@ module.exports = { exclude: /node_modules/, sideEffects: false, }, + { + test: /\.js$/, + loader: 'babel-loader', + // Transpile as least files under node_modules + include: /node_modules\/(webext-content-scripts|webext-detect-page)\/.*\.js$/, + options: { + cacheDirectory: true, + }, + }, { test: /\.scss$/, loader: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'], diff --git a/yarn.lock b/yarn.lock index 5bebbec..94a62ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,43 +2,44 @@ # yarn lockfile v1 -"@babel/cli@^7.2.3": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.6.0.tgz#1470a04394eaf37862989ea4912adf440fa6ff8d" - integrity sha512-1CTDyGUjQqW3Mz4gfKZ04KGOckyyaNmKneAMlABPS+ZyuxWv3FrVEVz7Ag08kNIztVx8VaJ8YgvYLSNlMKAT5Q== +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - commander "^2.8.1" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/cli@^7.17.6": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.17.6.tgz#169e5935f1795f0b62ded5a2accafeedfe5c5363" + integrity sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.4" + commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" glob "^7.0.0" - lodash "^4.17.13" - mkdirp "^0.5.1" - output-file-sync "^2.0.0" + make-dir "^2.1.0" slash "^2.0.0" source-map "^0.5.0" optionalDependencies: - chokidar "^2.1.8" + "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" + chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": +"@babel/code-frame@^7.0.0": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" -"@babel/code-frame@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.3.tgz#324bcfd8d35cd3d47dae18cde63d752086435e9a" - integrity sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg== +"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: - "@babel/highlight" "^7.10.3" - -"@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" + "@babel/highlight" "^7.16.7" "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": version "7.14.5" @@ -47,92 +48,64 @@ dependencies: "@babel/highlight" "^7.14.5" -"@babel/compat-data@^7.14.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" - integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== - -"@babel/core@^7.1.0": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e" - integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w== +"@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6": + 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/code-frame" "^7.10.3" - "@babel/generator" "^7.10.3" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helpers" "^7.10.1" - "@babel/parser" "^7.10.3" - "@babel/template" "^7.10.3" - "@babel/traverse" "^7.10.3" - "@babel/types" "^7.10.3" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" + "@babel/highlight" "^7.18.6" -"@babel/core@^7.3.4": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" - integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" - "@babel/helpers" "^7.6.0" - "@babel/parser" "^7.6.0" - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" - "@babel/types" "^7.6.0" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== -"@babel/core@^7.7.2", "@babel/core@^7.7.5": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" - integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== +"@babel/compat-data@^7.20.0": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helpers" "^7.14.6" - "@babel/parser" "^7.14.6" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" + json5 "^2.2.1" semver "^6.3.0" - source-map "^0.5.0" -"@babel/generator@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.3.tgz#32b9a0d963a71d7a54f5f6c15659c3dbc2a523a5" - integrity sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA== +"@babel/core@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" + integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== dependencies: - "@babel/types" "^7.10.3" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/generator@^7.11.5": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== - dependencies: - "@babel/types" "^7.11.5" - jsesc "^2.5.1" - source-map "^0.5.0" + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.9" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.9" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.9" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" "@babel/generator@^7.14.5", "@babel/generator@^7.7.2": version "7.14.5" @@ -143,114 +116,121 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" - integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== +"@babel/generator@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: - "@babel/types" "^7.6.0" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" + jsesc "^2.5.1" + +"@babel/generator@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" + integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== + dependencies: + "@babel/types" "^7.17.0" jsesc "^2.5.1" - lodash "^4.17.13" source-map "^0.5.0" - trim-right "^1.0.1" -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== +"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.3.tgz#e58c9ae2f7bf7fdf4899160cf1e04400a82cd641" + integrity sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.20.2" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/types" "^7.16.7" -"@babel/helper-builder-react-jsx@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" - integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== dependencies: - "@babel/types" "^7.3.0" - esutils "^2.0.0" + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/helper-compilation-targets@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" - integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== - dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz#769711acca889be371e9bc2eb68641d55218021f" - integrity sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng== +"@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/compat-data" "^7.20.0" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + semver "^6.3.0" -"@babel/helper-define-map@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" - integrity sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg== +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" + integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.5.5" - lodash "^4.17.13" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" -"@babel/helper-function-name@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz#79316cd75a9fa25ba9787ff54544307ed444f197" - integrity sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw== +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== dependencies: - "@babel/helper-get-function-arity" "^7.10.3" - "@babel/template" "^7.10.3" - "@babel/types" "^7.10.3" + "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.16.7" "@babel/helper-function-name@^7.14.5": version "7.14.5" @@ -261,26 +241,21 @@ "@babel/template" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: - "@babel/types" "^7.0.0" + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" -"@babel/helper-get-function-arity@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz#3a28f7b28ccc7719eacd9223b659fdf162e4c45e" - integrity sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg== +"@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: - "@babel/types" "^7.10.3" - -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" "@babel/helper-get-function-arity@^7.14.5": version "7.14.5" @@ -296,114 +271,75 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.10.1": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz#bc3663ac81ac57c39148fef4c69bf48a77ba8dd6" - integrity sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw== +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: - "@babel/types" "^7.10.3" + "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.14.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" - integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== +"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.17.0" -"@babel/helper-member-expression-to-functions@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" - integrity sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: - "@babel/types" "^7.5.5" + "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.10.1": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz#766fa1d57608e53e5676f23ae498ec7a95e1b11a" - integrity sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w== +"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== dependencies: - "@babel/types" "^7.10.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" -"@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== +"@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: - "@babel/types" "^7.14.5" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" - integrity sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw== +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.5.5" - lodash "^4.17.13" - -"@babel/helper-module-transforms@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" - integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== - dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - lodash "^4.17.13" - -"@babel/helper-module-transforms@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" - integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-optimise-call-expression@^7.10.1": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz#f53c4b6783093195b0f69330439908841660c530" - integrity sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg== - dependencies: - "@babel/types" "^7.10.3" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.16.7" "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" @@ -415,95 +351,68 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-plugin-utils@^7.18.6": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + "@babel/helper-plugin-utils@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.0.tgz#59ec882d43c21c544ccb51decaecb306b34a8231" integrity sha512-+hAlRGdf8fHQAyNnDBqTHQhwdLURLdrCROoWaEQYiQhk2sV9Rhs+GoFZZfMJExTq9HG8o2NX3uN2G90bFtmFdA== -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": +"@babel/helper-regex@^7.4.4": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" -"@babel/helper-replace-supers@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" - integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/types" "^7.17.0" -"@babel/helper-replace-supers@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" - integrity sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg== +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.5.5" - "@babel/types" "^7.5.5" + "@babel/types" "^7.20.2" -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-simple-access@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" - integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== - dependencies: - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-simple-access@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" - integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" - integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== - dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.16.0" "@babel/helper-split-export-declaration@^7.14.5": version "7.14.5" @@ -512,69 +421,82 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15" - integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw== +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== -"@babel/helpers@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" - integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== - dependencies: - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" +"@babel/helper-validator-identifier@^7.19.1": + 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/helpers@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.6.tgz#5b58306b95f1b47e2a0199434fa8658fa6c21635" - integrity sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== - dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@babel/helpers@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" - integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== dependencies: - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" - "@babel/types" "^7.6.0" + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" + integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.9" + "@babel/types" "^7.17.0" + +"@babel/helpers@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== + dependencies: + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.0" "@babel/highlight@^7.0.0": version "7.5.0" @@ -585,24 +507,6 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/highlight@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.3.tgz#c633bb34adf07c5c13156692f5922c81ec53f28d" - integrity sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw== - dependencies: - "@babel/helper-validator-identifier" "^7.10.3" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@babel/highlight@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -612,82 +516,192 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.3": +"@babel/highlight@^7.16.7": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@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" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.3.tgz#7e71d892b0d6e7d04a1af4c3c79d72c1f10f5315" integrity sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA== -"@babel/parser@^7.10.4", "@babel/parser@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" - integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== - -"@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.7.2": +"@babel/parser@^7.14.5", "@babel/parser@^7.14.7": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== -"@babel/parser@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" - integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== +"@babel/parser@^7.16.7", "@babel/parser@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" + integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" +"@babel/parser@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== -"@babel/plugin-proposal-class-properties@^7.3.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz#a974cfae1e37c3110e71f3c6a2e48b8e71958cd4" - integrity sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.5.5" - "@babel/helper-plugin-utils" "^7.0.0" +"@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" + integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== -"@babel/plugin-proposal-dynamic-import@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" - integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" -"@babel/plugin-proposal-object-rest-spread@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" - integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== +"@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-optional-chaining@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.6.0.tgz#e9bf1f9b9ba10c77c033082da75f068389041af8" - integrity sha512-kj4gkZ6qUggkprRq3Uh5KP8XnE1MdIO0J7MhdDX8+rAbB6dJ2UrensGIS+0NPZAaaJ1Vr0PN6oLUgXMU1uMcSg== +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" + integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.2.0" + "@babel/helper-create-class-features-plugin" "^7.17.6" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== + dependencies: + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.4.4" @@ -698,13 +712,6 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -719,19 +726,33 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-dynamic-import@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" - integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -740,13 +761,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -754,14 +768,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" - integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== +"@babel/plugin-syntax-jsx@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -775,20 +796,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" @@ -796,13 +810,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" @@ -810,13 +817,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz#a59d6ae8c167e7608eaa443fda9fa8fa6bf21dff" - integrity sha512-HtGCtvp5Uq/jH/WNUPkK6b7rufnCPLLlDAFN7cmACoIjaOOiXxUt3SswU5loHqrhtqTsa/WoLQ1OQ1AGuZqaWA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" @@ -824,19 +824,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.2.0": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991" - integrity sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag== +"@babel/plugin-syntax-typescript@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" + integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-typescript@^7.7.2": version "7.14.5" @@ -845,64 +852,71 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-async-to-generator@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" - integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz#c49e21228c4bbd4068a35667e6d951c75439b1dc" - integrity sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA== +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.13" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" - integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz#44bbe08b57f4480094d57d9ffbcd96d309075ba6" - integrity sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ== +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" + integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-dotall-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.4.4" @@ -913,312 +927,348 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-transform-duplicate-keys@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" - integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" + integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== + dependencies: + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" + integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-display-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-jsx-development@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.16.7" + +"@babel/plugin-transform-react-jsx@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" + integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" + integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" + integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== + dependencies: + regenerator-transform "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typescript@^7.16.7": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" + integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript" "^7.16.7" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== + dependencies: + "@babel/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.8" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.20.2" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-amd@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" - integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-commonjs@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" - integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== - dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-systemjs@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" - integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz#1e6e663097813bb4f53d42df0750cf28ad3bb3f1" - integrity sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew== - dependencies: - regexp-tree "^0.1.13" - -"@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-object-super@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" - integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - -"@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== - dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" - integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" - integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" - integrity sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" - integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== - dependencies: - "@babel/helper-builder-react-jsx" "^7.3.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@babel/plugin-transform-regenerator@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== - dependencies: - regenerator-transform "^0.14.0" - -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typescript@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.0.tgz#48d78405f1aa856ebeea7288a48a19ed8da377a6" - integrity sha512-yzw7EopOOr6saONZ3KA3lpizKnWRTe+rfBqg4AmQbSow7ik7fqmzrfIqt053osLwLE2AaTqGinLM2tl6+M/uog== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.6.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.2.0" - -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/preset-env@^7.3.4": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" - integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-dynamic-import" "^7.5.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.5" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.5.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.0" - "@babel/plugin-transform-classes" "^7.5.5" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.6.0" "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.5.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.6.0" - "@babel/plugin-transform-modules-systemjs" "^7.5.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.5.5" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.6.0" - browserslist "^4.6.0" - core-js-compat "^3.1.1" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" -"@babel/preset-react@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" - integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== +"@babel/preset-react@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" + integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" -"@babel/preset-typescript@^7.3.3": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.6.0.tgz#25768cb8830280baf47c45ab1a519a9977498c98" - integrity sha512-4xKw3tTcCm0qApyT6PqM9qniseCE79xGHiUnNdKGdxNsGUc2X7WwZybqIpnTmoukg3nhPceI5KPNzNqLNeIJww== +"@babel/preset-typescript@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" + integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.6.0" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.16.7" -"@babel/runtime-corejs3@^7.7.4": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz#8209d9dff2f33aa2616cb319c83fe159ffb07b8c" - integrity sha512-sc7A+H4I8kTd7S61dgB9RomXu/C+F4IrRr4Ytze4dnfx7AXEpCrejSNpjx7vq6y/Bak9S6Kbk65a/WgMLtg43Q== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@7.13.9": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.9.tgz#97dbe2116e2630c489f22e0656decd60aaa1fcee" - integrity sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA== +"@babel/runtime@7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" + integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== dependencies: regenerator-runtime "^0.13.4" @@ -1236,47 +1286,27 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.12.5": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.6.2": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.8.7": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364" - integrity sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.1.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" - integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.0" - -"@babel/template@^7.10.1", "@babel/template@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.3.tgz#4d13bc8e30bf95b0ce9d175d30306f42a2c9a7b8" - integrity sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA== - dependencies: - "@babel/code-frame" "^7.10.3" - "@babel/parser" "^7.10.3" - "@babel/types" "^7.10.3" - -"@babel/template@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/template@^7.14.5", "@babel/template@^7.3.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" @@ -1286,37 +1316,73 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" - integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.0" + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/template@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" + integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.9" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.9" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" -"@babel/traverse@^7.10.1", "@babel/traverse@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.3.tgz#0b01731794aa7b77b214bcd96661f18281155d7e" - integrity sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug== +"@babel/traverse@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" + integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== dependencies: - "@babel/code-frame" "^7.10.3" - "@babel/generator" "^7.10.3" - "@babel/helper-function-name" "^7.10.3" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/parser" "^7.10.3" - "@babel/types" "^7.10.3" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.1" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.1" + "@babel/types" "^7.20.0" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" -"@babel/traverse@^7.14.5", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.4.5": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.10" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.7.2": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.7.tgz#64007c9774cfdc3abd23b0780bc18a3ce3631753" integrity sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ== @@ -1331,22 +1397,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.4.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5", "@babel/types@^7.6.0": +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": version "7.6.1" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648" integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g== @@ -1355,24 +1406,6 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.10.1", "@babel/types@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.3.tgz#6535e3b79fea86a6b09e012ea8528f935099de8e" - integrity sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.3" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - "@babel/types@^7.14.5", "@babel/types@^7.3.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" @@ -1381,47 +1414,70 @@ "@babel/helper-validator-identifier" "^7.14.5" to-fast-properties "^2.0.0" +"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@babel/types@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" + integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@devicefarmer/adbkit-logcat@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz#866d3406dc9f3791446adfe3ae622ffc48607db4" - integrity sha512-K90P5gUXM/w+yzLvJIRQ+tJooNU6ipUPPQkljtPJ0laR66TGtpt4Gqsjm0n9dPHK1W5KGgU1R5wnCd6RTSlPNA== +"@devicefarmer/adbkit-logcat@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit-logcat/-/adbkit-logcat-2.1.2.tgz#4db1eee8046ad8b296ca8ab757862d6172411a05" + integrity sha512-G4grpEa5s9s9wCRs8YB9LjFSnz0Os3g3RYIwZSxH3JFfV3aejL5xlu4hHMH4JY+d4oCCwImcEZJcFPY9BEP21w== -"@devicefarmer/adbkit-monkey@~1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.0.1.tgz#7d225e5fdbdad8d6772453390ecab3f1b0eb72b1" - integrity sha512-HilPrVrCosYWqSyjfpDtaaN1kJwdlBpS+IAflP3z+e7nsEgk3JGJf1Vg0NgHJooTf5HDfXSyZqMVg+5jvXCK0g== +"@devicefarmer/adbkit-monkey@~1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.2.1.tgz#28cd6a121c5d572588081dd1c53454c604eef241" + integrity sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg== + +"@devicefarmer/adbkit@3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit/-/adbkit-3.2.3.tgz#7e66b4b2b435e4447df9563a05e70b0fe327b717" + integrity sha512-wK9rVrabs4QU0oK8Jnwi+HRBEm+s1x/o63kgthUe0y7K1bfcYmgLuQf41/adsj/5enddlSxzkJavl2EwOu+r1g== dependencies: - async "~0.2.9" + "@devicefarmer/adbkit-logcat" "^2.1.2" + "@devicefarmer/adbkit-monkey" "~1.2.0" + bluebird "~3.7" + commander "^9.1.0" + debug "~4.3.1" + node-forge "^1.3.1" + split "~1.0.1" -"@devicefarmer/adbkit@2.11.3": - version "2.11.3" - resolved "https://registry.yarnpkg.com/@devicefarmer/adbkit/-/adbkit-2.11.3.tgz#0ad981a20aada3e4eff4871218f633c85cf7f2db" - integrity sha512-rsgWREAvSRQjdP9/3GoAV6Tq+o97haywgbTfCgt5yUqiDpaaq3hlH9FTo9XsdG8x+Jd0VQ9nTC2IXsDu8JGRSA== +"@emotion/is-prop-valid@^1.1.0": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95" + integrity sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ== dependencies: - "@devicefarmer/adbkit-logcat" "^1.1.0" - "@devicefarmer/adbkit-monkey" "~1.0.1" - bluebird "~2.9.24" - commander "^2.3.0" - debug "~2.6.3" - node-forge "^0.10.0" - split "~0.3.3" + "@emotion/memoize" "^0.7.4" -"@emotion/is-prop-valid@^0.8.8": - version "0.8.8" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== +"@emotion/memoize@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" + integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== "@emotion/stylis@^0.8.4": version "0.8.5" @@ -1433,21 +1489,51 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@eslint/eslintrc@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" - integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== +"@eslint/eslintrc@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.3.tgz#fcaa2bcef39e13d6e9e7f6271f4cc7cae1174886" + integrity sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.1" + espree "^9.3.2" globals "^13.9.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" - minimatch "^3.0.4" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.3.2" + globals "^13.15.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" + +"@github/combobox-nav@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@github/combobox-nav/-/combobox-nav-2.1.5.tgz#905598cc681e016eddfcd8adcb39e4d81c907577" + integrity sha512-dmG1PuppNKHnBBEcfylWDwj9SSxd/E/qd8mC1G/klQC3s7ps5q6JZ034mwkkG0LKfI+Y+UgEua/ROD776N400w== + +"@github/markdown-toolbar-element@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@github/markdown-toolbar-element/-/markdown-toolbar-element-2.1.1.tgz#08a0696be1006b42b6b29560104f1bca20341b06" + integrity sha512-J++rpd5H9baztabJQB82h26jtueOeBRSTqetk9Cri+Lj/s28ndu6Tovn0uHQaOKtBWDobFunk9b5pP5vcqt7cA== + +"@github/paste-markdown@^1.3.1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@github/paste-markdown/-/paste-markdown-1.3.5.tgz#de587494df7058700a29a53addbdbd51c317a0d3" + integrity sha512-R86Vns99qRCqSUvvhjPGDQYp8sAutueMfKtep5F3d2vyJz2Es3ratU7Q3Q6/RJ0ac48sj99shtuUfUufoTcKlQ== + "@hapi/hoek@^9.0.0": version "9.2.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" @@ -1490,198 +1576,212 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.6.tgz#3eb72ea80897495c3d73dd97aab7f26770e2260f" - integrity sha512-fMlIBocSHPZ3JxgWiDNW/KPj6s+YRd0hicb33IrmelCcjXo/pXPwvuiKFmZz+XuqI/1u7nbUK10zSsWL/1aegg== +"@jest/console@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.2.1.tgz#5f2c62dcdd5ce66e94b6d6729e021758bceea090" + integrity sha512-MF8Adcw+WPLZGBiNxn76DOuczG3BhODTcMlDCA4+cFi41OkaY/lyI0XUUhi73F88Y+7IHoGmD80pN5CtxQUdSw== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.0.6" - jest-util "^27.0.6" + jest-message-util "^29.2.1" + jest-util "^29.2.1" slash "^3.0.0" -"@jest/core@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.0.6.tgz#c5f642727a0b3bf0f37c4b46c675372d0978d4a1" - integrity sha512-SsYBm3yhqOn5ZLJCtccaBcvD/ccTLCeuDv8U41WJH/V1MW5eKUkeMHT9U+Pw/v1m1AIWlnIW/eM2XzQr0rEmow== +"@jest/core@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.2.2.tgz#207aa8973d9de8769f9518732bc5f781efc3ffa7" + integrity sha512-susVl8o2KYLcZhhkvSB+b7xX575CX3TmSvxfeDjpRko7KmT89rHkXj6XkDkNpSeFMBzIENw5qIchO9HC9Sem+A== dependencies: - "@jest/console" "^27.0.6" - "@jest/reporters" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^29.2.1" + "@jest/reporters" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.0.6" - jest-config "^27.0.6" - jest-haste-map "^27.0.6" - jest-message-util "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-resolve-dependencies "^27.0.6" - jest-runner "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" - jest-watcher "^27.0.6" + graceful-fs "^4.2.9" + jest-changed-files "^29.2.0" + jest-config "^29.2.2" + jest-haste-map "^29.2.1" + jest-message-util "^29.2.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-resolve-dependencies "^29.2.2" + jest-runner "^29.2.2" + jest-runtime "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" + jest-watcher "^29.2.2" micromatch "^4.0.4" - p-each-series "^2.1.0" - rimraf "^3.0.0" + pretty-format "^29.2.1" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.6.tgz#ee293fe996db01d7d663b8108fa0e1ff436219d2" - integrity sha512-4XywtdhwZwCpPJ/qfAkqExRsERW+UaoSRStSHCCiQTUpoYdLukj+YJbQSFrZjhlUDRZeNiU9SFH0u7iNimdiIg== +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.0.6" + jest-mock "^27.5.1" -"@jest/fake-timers@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.6.tgz#cbad52f3fe6abe30e7acb8cd5fa3466b9588e3df" - integrity sha512-sqd+xTWtZ94l3yWDKnRTdvTeZ+A/V7SSKrxsrOKSqdyddb9CeNRF8fbhAU0D7ZJBpTTW2nbp6MftmKJDZfW2LQ== +"@jest/environment@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.2.tgz#481e729048d42e87d04842c38aa4d09c507f53b0" + integrity sha512-OWn+Vhu0I1yxuGBJEFFekMYc8aGBGrY4rt47SOh/IFaI+D7ZHCk7pKRiSoZ2/Ml7b0Ony3ydmEHRx/tEOC7H1A== dependencies: - "@jest/types" "^27.0.6" - "@sinonjs/fake-timers" "^7.0.2" + "@jest/fake-timers" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" - jest-message-util "^27.0.6" - jest-mock "^27.0.6" - jest-util "^27.0.6" + jest-mock "^29.2.2" -"@jest/globals@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.6.tgz#48e3903f99a4650673d8657334d13c9caf0e8f82" - integrity sha512-DdTGCP606rh9bjkdQ7VvChV18iS7q0IMJVP1piwTWyWskol4iqcVwthZmoJEf7obE1nc34OpIyoVGPeqLC+ryw== +"@jest/expect-utils@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.2.2.tgz#460a5b5a3caf84d4feb2668677393dd66ff98665" + integrity sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg== dependencies: - "@jest/environment" "^27.0.6" - "@jest/types" "^27.0.6" - expect "^27.0.6" + jest-get-type "^29.2.0" -"@jest/reporters@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.0.6.tgz#91e7f2d98c002ad5df94d5b5167c1eb0b9fd5b00" - integrity sha512-TIkBt09Cb2gptji3yJXb3EE+eVltW6BjO7frO7NEfjI9vSIYoISi5R3aI3KpEDXlB1xwB+97NXIqz84qYeYsfA== +"@jest/expect@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.2.2.tgz#81edbd33afbde7795ca07ff6b4753d15205032e4" + integrity sha512-zwblIZnrIVt8z/SiEeJ7Q9wKKuB+/GS4yZe9zw7gMqfGf4C5hBLGrVyxu1SzDbVSqyMSlprKl3WL1r80cBNkgg== + dependencies: + expect "^29.2.2" + jest-snapshot "^29.2.2" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/fake-timers@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.2.tgz#d8332e6e3cfa99cde4bc87d04a17d6b699deb340" + integrity sha512-nqaW3y2aSyZDl7zQ7t1XogsxeavNpH6kkdq+EpXncIDvAkjvFD7hmhcIs1nWloengEWUoWqkqSA6MSbf9w6DgA== + dependencies: + "@jest/types" "^29.2.1" + "@sinonjs/fake-timers" "^9.1.2" + "@types/node" "*" + jest-message-util "^29.2.1" + jest-mock "^29.2.2" + jest-util "^29.2.1" + +"@jest/globals@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.2.2.tgz#205ff1e795aa774301c2c0ba0be182558471b845" + integrity sha512-/nt+5YMh65kYcfBhj38B3Hm0Trk4IsuMXNDGKE/swp36yydBWfz3OXkLqkSvoAtPW8IJMSJDFCbTM2oj5SNprw== + dependencies: + "@jest/environment" "^29.2.2" + "@jest/expect" "^29.2.2" + "@jest/types" "^29.2.1" + jest-mock "^29.2.2" + +"@jest/reporters@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.2.2.tgz#69b395f79c3a97ce969ce05ccf1a482e5d6de290" + integrity sha512-AzjL2rl2zJC0njIzcooBvjA4sJjvdoq98sDuuNs4aNugtLPSQ+91nysGKRF0uY1to5k0MdGMdOBggUsPqvBcpA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^29.2.1" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" + glob "^7.1.3" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^27.0.6" - jest-resolve "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" + istanbul-reports "^3.1.3" + jest-message-util "^29.2.1" + jest-util "^29.2.1" + jest-worker "^29.2.1" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.0.0" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" -"@jest/source-map@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" - integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== +"@jest/schemas@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" + integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/source-map@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" + integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" + graceful-fs "^4.2.9" -"@jest/test-result@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.6.tgz#3fa42015a14e4fdede6acd042ce98c7f36627051" - integrity sha512-ja/pBOMTufjX4JLEauLxE3LQBPaI2YjGFtXexRAjt1I/MbfNlMx0sytSX3tn5hSLzQsR3Qy2rd0hc1BWojtj9w== +"@jest/test-result@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.2.1.tgz#f42dbf7b9ae465d0a93eee6131473b8bb3bd2edb" + integrity sha512-lS4+H+VkhbX6z64tZP7PAUwPqhwj3kbuEHcaLuaBuB+riyaX7oa1txe0tXgrFj5hRWvZKvqO7LZDlNWeJ7VTPA== dependencies: - "@jest/console" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^29.2.1" + "@jest/types" "^29.2.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz#80a913ed7a1130545b1cd777ff2735dd3af5d34b" - integrity sha512-bISzNIApazYOlTHDum9PwW22NOyDa6VI31n6JucpjTVM0jD6JDgqEZ9+yn575nDdPF0+4csYDxNNW13NvFQGZA== +"@jest/test-sequencer@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.2.2.tgz#4ac7487b237e517a1f55e7866fb5553f6e0168b9" + integrity sha512-Cuc1znc1pl4v9REgmmLf0jBd3Y65UXJpioGYtMr/JNpQEIGEzkmHhy6W6DLbSsXeUA13TDzymPv0ZGZ9jH3eIw== dependencies: - "@jest/test-result" "^27.0.6" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-runtime "^27.0.6" + "@jest/test-result" "^29.2.1" + graceful-fs "^4.2.9" + jest-haste-map "^29.2.1" + slash "^3.0.0" -"@jest/transform@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.6.tgz#189ad7107413208f7600f4719f81dd2f7278cc95" - integrity sha512-rj5Dw+mtIcntAUnMlW/Vju5mr73u8yg+irnHwzgtgoeI6cCPOvUwQ0D1uQtc/APmWgvRweEb1g05pkUpxH3iCA== +"@jest/transform@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.2.tgz#dfc03fc092b31ffea0c55917728e75bfcf8b5de6" + integrity sha512-aPe6rrletyuEIt2axxgdtxljmzH8O/nrov4byy6pDw9S8inIrTV+2PnjyP/oFHMSynzGxJ2s6OHowBNMXp/Jzg== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.0.6" - babel-plugin-istanbul "^6.0.0" + "@babel/core" "^7.11.6" + "@jest/types" "^29.2.1" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-regex-util "^27.0.6" - jest-util "^27.0.6" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.2.1" + jest-regex-util "^29.2.0" + jest-util "^29.2.1" micromatch "^4.0.4" - pirates "^4.0.1" + pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^4.0.1" -"@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@jest/types@^25.1.0": - version "25.1.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395" - integrity sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.6.tgz#9a992bc517e0c49f035938b8549719c2de40706b" - integrity sha512-aSquT1qa9Pik26JK5/3rvnYb4bGtm1VFNesHKmNTwmPIgOrixvhL2ghIvFRNEpzy3gU+rUgjIF/KodbkFAl++g== +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" @@ -1689,86 +1789,189 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@mdn/browser-compat-data@4.1.12": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-4.1.12.tgz#d266138c24295440619ea562ce3f4ec22600e897" - integrity sha512-y3Ntio6hb5+m6asxcA3nnIN6URjAFMji2EZZVYGd2Ag5On4mmvPhMnXdiIScCMXgHjFX+5qXuKaojLLhJHZPAg== - -"@primer/components@^22.0.2": - version "22.0.2" - resolved "https://registry.yarnpkg.com/@primer/components/-/components-22.0.2.tgz#8ab8a36bd36072cecbf6dc36031cb5889673a3bf" - integrity sha512-zyPYuHltrn4FPkTvqdGix98zdKXRWh4W+xburLjX6i4rSQ2uy64sMMeC/Fpr9vQx125t10OAewj8cJzjv7/UEg== +"@jest/types@^29.2.1": + version "29.2.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0" + integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw== dependencies: - "@primer/octicons-react" "^10.0.0" - "@primer/primitives" "3.0.0" - "@reach/dialog" "0.3.0" - "@styled-system/css" "5.1.5" - "@styled-system/prop-types" "5.1.2" - "@styled-system/props" "5.1.4" - "@styled-system/theme-get" "5.1.2" - "@testing-library/react" "9.4.0" - "@types/styled-components" "^4.4.0" - "@types/styled-system" "5.1.2" - classnames "^2.2.5" - polished "3.5.2" - react "^16.10.2" - react-is "16.10.2" - styled-system "5.1.2" + "@jest/schemas" "^29.0.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" -"@primer/css@^15.2.0": - version "15.2.0" - resolved "https://registry.yarnpkg.com/@primer/css/-/css-15.2.0.tgz#ddf9651a9db2b9be03e7dfccfa612284ba1325ae" - integrity sha512-/vNDchWrxlXqd6E+SWQcChPHJVzGia9aCaTYoz8O9sJTnUSiTKOgSNCQuOXyUInPruTRSqj+z3MZxayKcTsWhA== +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: - "@primer/octicons" "^9.1.1" + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" -"@primer/octicons-react@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@primer/octicons-react/-/octicons-react-10.0.0.tgz#82f0d64b4276778fb51468afac00aa0c420ad230" - integrity sha512-I+m7Srg/Ivo5VuXoKwKCJ6YJya+lr6EVzp/WGnDlwBSpy0m4WfYAmZigt3A0i4JMqgLRFDlK+8AgqT66E9bOOw== - -"@primer/octicons@^9.1.1": - version "9.5.0" - resolved "https://registry.yarnpkg.com/@primer/octicons/-/octicons-9.5.0.tgz#36e9422a6f790afde6b49a7d2d6daf1402076afd" - integrity sha512-GZw9p9c6GdxcvtU6ENvAgYIAi8E3by/3D+ZwZWan0+QnA55/KQQXPgeOh/rm70BbiSHU0mu1gRKyRO2XUnfKjQ== +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - object-assign "^4.1.1" + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" -"@primer/primitives@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@primer/primitives/-/primitives-3.0.0.tgz#ccfb324b478b2373733535ec49f8de29e238c55d" - integrity sha512-ISXB43vcA+kg5pmGtGo3lPlHmY5Mg9nLhliePJu3Y5aP7g28TO+9cC99gL240pZHYsO0aVyU26WZwUXn6UIqJQ== +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@reach/component-component@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@reach/component-component/-/component-component-0.3.0.tgz#ccf593e26132cbec0ad92774b80356dcf544d5c5" - integrity sha512-E93eOotshNv8dnXtOA/f7fMqGUJFTakBG1zEqmBo6BeLJhgP9t9wQrnkiyoU4HL/ou5LYfou8G4P3wQXbDoFFg== +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" + integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== + +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + 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/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== dependencies: - prop-types "^15.7.2" + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" -"@reach/dialog@0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@reach/dialog/-/dialog-0.3.0.tgz#4c2037d4164193a09efcc359ba51c20652091142" - integrity sha512-m994HoNlpwJSPBkTi3IVTJpKQ+Gbc5yOa7RawSYPBuScpxeigFEYpE1CCIz/KhS6hVf4St+iymohWBCGjO34RQ== +"@jridgewell/trace-mapping@^0.3.4", "@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: - "@reach/component-component" "^0.3.0" - "@reach/portal" "^0.3.0" - "@reach/utils" "^0.3.0" - prop-types "^15.7.2" - react-focus-lock "^2.1.0" - react-remove-scroll "^2.0.4" + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" -"@reach/portal@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@reach/portal/-/portal-0.3.0.tgz#2f44180026830679dd1dd9d5e3b807f637fe96bf" - integrity sha512-et9AeykzUaCuGnkzViQRxe4FjQQp4PPm1nMZqizX4KnsVwvi66PpKCE7hC3Gsh2036lGl0xtqmuRW+dTVSjb2A== +"@mdn/browser-compat-data@5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-5.1.2.tgz#f6d1c669f442208564b384e04ca8451e205645ff" + integrity sha512-X7lnoos6vF+llTjMDhP8HQJy2nL4RNf1LRejfNKOJLKrZ55A4p2z1WdhPY/NCieqiLH6gwlzDSVpmPYSPLd+bg== + +"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": + version "2.1.8-no-fsevents.3" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" + integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== + +"@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: - "@reach/component-component" "^0.3.0" + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -"@reach/utils@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@reach/utils/-/utils-0.3.0.tgz#2098181aab751f2275cacf219b02a6a8b455be85" - integrity sha512-dQA1acyNpwqy5ia5yt1lNjaAhm9rrzSurFtlJPoz7ARVPMV1yZ0yfmNotMwwgVbE5q1HnONqszK7oagH86m7Qw== +"@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": + 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" + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@pnpm/network.ca-file/-/network.ca-file-1.0.1.tgz#16f88d057c68cd5419c1ef3dfa281296ea80b047" + integrity sha512-gkINruT2KUhZLTaiHxwCOh1O4NVnFT0wLjWFBHmTz9vpKag/C/noIMJXBxFe4F0mYpUVX2puLwAieLYFg2NvoA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-1.0.4.tgz#e2c927a933f55e9211e12ef6cc4885ce915211ce" + integrity sha512-o5YFq/+ksEJMbSzzkaQDHlp00aonLDU5xNPVTRL12hTWBbVSSeWXxPukq75h+mvXnoOWT95vV2u1HSTw2C4XOw== + dependencies: + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@primer/behaviors@^1.1.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@primer/behaviors/-/behaviors-1.1.3.tgz#4945f79c39f8b4495ec868b053264830f687c7bc" + integrity sha512-WpCcjAkXG7Lv3ZbaCUgASWKHnCi/pmuSEiyTmHHb6f5xhwk1mliixNL5ZZHtDN6RCcT3VnXUsyek4GopG2lbZQ== + +"@primer/css@^20.4.3": + version "20.4.3" + resolved "https://registry.yarnpkg.com/@primer/css/-/css-20.4.3.tgz#09e0bb3635267edbca32a4455ba1b961ecc5ec23" + integrity sha512-d2+++ABwTqqO+TW/00lQ4Ddq7pVKf9xcEAhhsDiBTC+xH40mYAwfdAphD2gnzdrslfHEm8bbyPKG5G/681X/mg== + dependencies: + "@primer/primitives" "^7.9.0" + +"@primer/octicons-react@^17.3.0", "@primer/octicons-react@^17.4.1": + version "17.4.1" + resolved "https://registry.yarnpkg.com/@primer/octicons-react/-/octicons-react-17.4.1.tgz#022c13c2695119f5e2e5fc3e2edeed08164171c1" + integrity sha512-xTtpfgpyFyKlfNhvPOfCNVRwkoDBRKzZFwygpr4+Pwzs+selrL1phPLt2z6abeIY8cTEw1XRBGi00tylSaBJyQ== + +"@primer/primitives@7.9.0", "@primer/primitives@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@primer/primitives/-/primitives-7.9.0.tgz#c8a27287488c8308b1715a7d73214629c331544a" + integrity sha512-ZHHfwB0z0z6nDJp263gyGIClYDy+rl0nwqyi4qhcv3Cxhkmtf+If2KVjr6FQqBBFfi1wQwUzaax2FBvfEMFBnw== + +"@primer/react@^35.8.0": + version "35.8.0" + resolved "https://registry.yarnpkg.com/@primer/react/-/react-35.8.0.tgz#f84c35430b8f8b6d74ffe548ba6a444db22fa6b1" + integrity sha512-zgKr/yaGuc28sfVNPG6AtsCh8yNHD32TsxzrY5YNkTioCr3LMDoy6Bc6y9fnlGtLnUP6yvQy/EzJKBxZDkgkuQ== + dependencies: + "@github/combobox-nav" "^2.1.5" + "@github/markdown-toolbar-element" "^2.1.0" + "@github/paste-markdown" "^1.3.1" + "@primer/behaviors" "^1.1.1" + "@primer/octicons-react" "^17.3.0" + "@primer/primitives" "7.9.0" + "@radix-ui/react-polymorphic" "^0.0.14" + "@react-aria/ssr" "^3.1.0" + "@styled-system/css" "^5.1.5" + "@styled-system/props" "^5.1.5" + "@styled-system/theme-get" "^5.1.2" + "@types/styled-components" "^5.1.11" + "@types/styled-system" "^5.1.12" + "@types/styled-system__css" "^5.0.16" + "@types/styled-system__theme-get" "^5.0.1" + classnames "^2.3.1" + color2k "^1.2.4" + deepmerge "^4.2.2" + focus-visible "^5.2.0" + fzy.js "0.4.1" + history "^5.0.0" + react-intersection-observer "9.4.0" + styled-system "^5.1.5" + +"@radix-ui/react-polymorphic@^0.0.14": + version "0.0.14" + resolved "https://registry.yarnpkg.com/@radix-ui/react-polymorphic/-/react-polymorphic-0.0.14.tgz#fc6cefee6686db8c5a7ff14c8c1b9b5abdee325b" + integrity sha512-9nsMZEDU3LeIUeHJrpkkhZVxu/9Fc7P2g2I3WR+uA9mTbNC3hGaabi0dV6wg0CfHb+m4nSs1pejbE/5no3MJTA== + +"@react-aria/ssr@^3.1.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.3.0.tgz#25e81daf0c7a270a4a891159d8d984578e4512d8" + integrity sha512-yNqUDuOVZIUGP81R87BJVi/ZUZp/nYOBXbPsRe7oltJOfErQZD+UezMpw4vM2KRz18cURffvmC8tJ6JTeyDtaQ== + dependencies: + "@babel/runtime" "^7.6.2" "@sentry/browser@^6.3.6": version "6.3.6" @@ -1834,15 +2037,10 @@ "@sentry/types" "6.3.6" tslib "^1.9.3" -"@sheerun/mutationobserver-shim@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" - integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== - -"@sideway/address@^4.1.0": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" - integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA== +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" @@ -1856,10 +2054,15 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sinonjs/commons@^1.7.0": version "1.8.3" @@ -1868,10 +2071,17 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^7.0.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" - integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" @@ -1882,7 +2092,7 @@ dependencies: "@styled-system/core" "^5.1.2" -"@styled-system/border@^5.1.2", "@styled-system/border@^5.1.5": +"@styled-system/border@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@styled-system/border/-/border-5.1.5.tgz#0493d4332d2b59b74bb0d57d08c73eb555761ba6" integrity sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A== @@ -1903,7 +2113,7 @@ dependencies: object-assign "^4.1.1" -"@styled-system/css@5.1.5", "@styled-system/css@^5.1.5": +"@styled-system/css@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@styled-system/css/-/css-5.1.5.tgz#0460d5f3ff962fa649ea128ef58d9584f403bbbc" integrity sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A== @@ -1936,19 +2146,12 @@ dependencies: "@styled-system/core" "^5.1.2" -"@styled-system/prop-types@5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/prop-types/-/prop-types-5.1.2.tgz#252898644aa277fcdb1bb916c3b354c78b78155a" - integrity sha512-q2hnuZrOjZdCRYvSoMF5VIDRfpqPHDSgqajoMH0iy7BszPAkZZcIC7L4PzJTIcGSBrB9OJTBitWo9s7N60tgtA== +"@styled-system/props@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@styled-system/props/-/props-5.1.5.tgz#f50bf40e8fc8393726f06cbcd096a39a7d779ce4" + integrity sha512-FXhbzq2KueZpGaHxaDm8dowIEWqIMcgsKs6tBl6Y6S0njG9vC8dBMI6WSLDnzMoSqIX3nSKHmOmpzpoihdDewg== dependencies: - prop-types "^15.7.2" - -"@styled-system/props@5.1.4": - version "5.1.4" - resolved "https://registry.yarnpkg.com/@styled-system/props/-/props-5.1.4.tgz#a0b76bb3be64cb152db3db33a031f33a43977bab" - integrity sha512-ysQJ6YFhWbnbMaG11RSqXPbOePUl6vEPkcSz1WiySSu4vvh7OQl5UPdkSnYS1E35kSkomSpO5drbFtWRrA+o7Q== - dependencies: - styled-system "^5.1.4" + styled-system "^5.1.5" "@styled-system/shadow@^5.1.2": version "5.1.2" @@ -1964,7 +2167,7 @@ dependencies: "@styled-system/core" "^5.1.2" -"@styled-system/theme-get@5.1.2": +"@styled-system/theme-get@^5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@styled-system/theme-get/-/theme-get-5.1.2.tgz#b40a00a44da63b7a6ed85f73f737c4defecd6049" integrity sha512-afAYdRqrKfNIbVgmn/2Qet1HabxmpRnzhFwttbGr6F/mJ4RDS/Cmn+KHwHvNXangQsWw/5TfjpWV+rgcqqIcJQ== @@ -1978,7 +2181,7 @@ dependencies: "@styled-system/core" "^5.1.2" -"@styled-system/variant@^5.1.2", "@styled-system/variant@^5.1.5": +"@styled-system/variant@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@styled-system/variant/-/variant-5.1.5.tgz#8446d8aad06af3a4c723d717841df2dbe4ddeafd" integrity sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw== @@ -1986,41 +2189,47 @@ "@styled-system/core" "^5.1.2" "@styled-system/css" "^5.1.5" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== +"@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 "^1.0.1" + defer-to-connect "^2.0.1" -"@testing-library/dom@^6.11.0": - version "6.15.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.15.0.tgz#042abea7b4685b70d9a919100da9024507dc20bb" - integrity sha512-8N24c4XwOigPicwc8n4ECgEoJW2/mMzRJBxu4Uo0zhLERZTbNzqpL5fyCigu7JGUXX+ITuiK4z9/lnHbYRHLwQ== +"@testing-library/dom@^8.5.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5" + integrity sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ== dependencies: - "@babel/runtime" "^7.8.4" - "@sheerun/mutationobserver-shim" "^0.3.2" - "@types/testing-library__dom" "^6.12.1" - aria-query "^4.0.2" - dom-accessibility-api "^0.3.0" - pretty-format "^25.1.0" - wait-for-expect "^3.0.2" + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" -"@testing-library/react@9.4.0": - version "9.4.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.4.0.tgz#b021ac8cb987c8dc54c6841875f745bf9b2e88e5" - integrity sha512-XdhDWkI4GktUPsz0AYyeQ8M9qS/JFie06kcSnUVcpgOwFjAu9vhwR83qBl+lw9yZWkbECjL8Hd+n5hH6C0oWqg== +"@testing-library/react@^13.3.0": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.3.0.tgz#bf298bfbc5589326bbcc8052b211f3bb097a97c5" + integrity sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ== dependencies: - "@babel/runtime" "^7.7.6" - "@testing-library/dom" "^6.11.0" - "@types/testing-library__react" "^9.1.2" + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^8.5.0" + "@types/react-dom" "^18.0.0" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@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== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/aria-query@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + +"@types/babel__core@^7.1.14": version "7.1.14" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== @@ -2053,19 +2262,23 @@ dependencies: "@babel/types" "^7.3.0" -"@types/babel__traverse@^7.0.4": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.0.tgz#a34277cf8acbd3185ea74129e1f100491eb1da7f" - integrity sha512-IilJZ1hJBUZwMOVDNTdflOOLzJB/ZtljYVa7k3gEZN/jqIJIPkWHC6dvbX+DD2CwZDHB9wAKzZPzzqMIkW37/w== +"@types/cacheable-request@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== dependencies: - "@babel/types" "^7.3.0" + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" -"@types/chrome@0.0.86": - version "0.0.86" - resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.86.tgz#1026ef8e76db4fde1859cae858d73236fe670d69" - integrity sha512-7ehebPf/5IR64SYdD2Vig0q0oUCNbWMQ29kASlNJaHVVtA5/J/DnrxnYVPCID70o7LgHdYsav6I4/XdqAxjTLQ== +"@types/chrome@0.0.178": + version "0.0.178" + resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.178.tgz#fba7969208cef79ae752dc1138ff05de39f5ffde" + integrity sha512-U+G5YG2pH0qvLrYVJ9aT5VbPXYR3fAFyCuRBRAA14Pv7GrkFzDJuXPspgdeLYaKzGEp4rymUkuqUOuFz18LI1g== dependencies: "@types/filesystem" "*" + "@types/har-format" "*" "@types/color-name@^1.1.1": version "1.1.1" @@ -2084,27 +2297,29 @@ resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.28.tgz#c054e8af4d9dd75db4e63abc76f885168714d4b3" integrity sha1-wFTor02d11205jq8dviFFocU1LM= -"@types/firefox-webext-browser@^67.0.2": - version "67.0.2" - resolved "https://registry.yarnpkg.com/@types/firefox-webext-browser/-/firefox-webext-browser-67.0.2.tgz#04625d3294fbca54bccf42dae43f636c5b6452a2" - integrity sha512-tXR5THtH5Fqwfmi4y/2dTxCTebqHsKCH2bif/VdE5CPcB/S5x5fu+N+wBuMENzN41agovHMU/LQbtWNV+Aux+w== - "@types/firefox-webext-browser@^70.0.1": version "70.0.1" resolved "https://registry.yarnpkg.com/@types/firefox-webext-browser/-/firefox-webext-browser-70.0.1.tgz#53a3915bfbe25e2c5ec439dbdbe6e303610012bb" integrity sha512-hjHsTR9vKs+yikWbNS/s7TVCx15M/MEn+VYx47wtT/W/wORsIZDD75gfUfP7lkzi+IxRvKMQBB/5/wMFlfgvgQ== -"@types/graceful-fs@^4.1.2": +"@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" -"@types/history@^4.7.5": - version "4.7.5" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.5.tgz#527d20ef68571a4af02ed74350164e7a67544860" - integrity sha512-wLD/Aq2VggCJXSjxEwrMafIP51Z+13H78nXIX0ABEuIGhmB5sNGbR113MOKo+yfw+RDo1ZU3DM6yfnnRF/+ouw== +"@types/har-format@*": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.8.tgz#e6908b76d4c88be3db642846bb8b455f0bfb1c4e" + integrity sha512-OP6L9VuZNdskgNN3zFQQ54ceYD8OLq5IbqO4VK91ORLfOm7WdT/CiT/pHEBSQEqCInJ2y3O6iCm/zGtPElpgJQ== + +"@types/history@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/history/-/history-5.0.0.tgz#29f919f0c8e302763798118f45b19cab4a886f14" + integrity sha512-hy8b7Y1J8OGe6LbAjj3xniQrj3v6lsivCcrmf4TzSgPzLkhIeKgc5IZnT7ReIqmEuodjfO8EYAuoFvIrHi/+jQ== + dependencies: + history "*" "@types/hoist-non-react-statics@*": version "3.3.1" @@ -2114,10 +2329,15 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" -"@types/ini@^1.3.30": - version "1.3.30" - resolved "https://registry.yarnpkg.com/@types/ini/-/ini-1.3.30.tgz#d1485459c9fad84e937414b832a2adb649eab379" - integrity sha512-2+iF8zPSbpU83UKE+PNd4r/MhwNAdyGpk3H+VMgEH3EhjFZq1kouLgRoZrmIcmoGX97xFvqdS44DkICR5Nz3tQ== +"@types/http-cache-semantics@*": + 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/ini@^1.3.31": + version "1.3.31" + resolved "https://registry.yarnpkg.com/@types/ini/-/ini-1.3.31.tgz#c78541a187bd88d5c73e990711c9d85214800d1b" + integrity sha512-8ecxxaG4AlVEM1k9+BsziMw8UsX0qy3jYI1ad/71RrDZ+rdL6aZB0wLfAuflQiDhkD5o4yJ0uPK3OSUic3fG0w== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" @@ -2136,14 +2356,6 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - "@types/istanbul-reports@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" @@ -2151,28 +2363,56 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^26.0.23": - version "26.0.23" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" - integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== +"@types/jest@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.2.tgz#874e7dc6702fa6a3fe6107792aa98636dcc480b4" + integrity sha512-og1wAmdxKoS71K2ZwSVqWPX6OVn3ihZ6ZT2qvZvZQm90lJVDyXIjYcu4Khx2CNIeaFv12rOU/YObOsI3VOkzog== dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" + expect "^29.0.0" + pretty-format "^29.0.0" -"@types/js-base64@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@types/js-base64/-/js-base64-2.3.1.tgz#c39f14f129408a3d96a1105a650d8b2b6eeb4168" - integrity sha512-4RKbhIDGC87s4EBy2Cp2/5S2O6kmCRcZnD5KRCq1q9z2GhBte1+BdsfVKCpG8yKpDGNyEE2G6IqFIh6W2YwWPA== +"@types/js-base64@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/js-base64/-/js-base64-3.3.1.tgz#36c2d6dc126277ea28a4d0599d0cafbf547b51e6" + integrity sha512-Zw33oQNAvDdAN9b0IE5stH0y2MylYvtU7VVTKEJPxhyM2q57CVaNJhtJW258ah24NRtaiA23tptUmVn3dmTKpw== + dependencies: + js-base64 "*" -"@types/js-cookie@2.2.6": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" - integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== +"@types/js-cookie@^2.2.6": + version "2.2.7" + resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" + integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== -"@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/jsdom@^20.0.0": + version "20.0.0" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.0.tgz#4414fb629465167f8b7b3804b9e067bdd99f1791" + integrity sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + parse5 "^7.0.0" + +"@types/json-buffer@~3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" + integrity sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ== + +"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@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/keyv@*": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/minimatch@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/node@*": version "12.12.5" @@ -2189,6 +2429,11 @@ resolved "https://registry.yarnpkg.com/@types/nprogress/-/nprogress-0.0.29.tgz#060bd510022a005f1840234030d3132fb9195471" integrity sha1-BgvVEAIqAF8YQCNAMNMTL7kZVHE= +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/prettier@^2.1.5": version "2.3.1" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.1.tgz#54dd88bdc7f49958329666af3779561e47d5dab3" @@ -2206,106 +2451,93 @@ dependencies: "@types/node" "*" -"@types/react-dom@*": - version "16.9.5" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.5.tgz#5de610b04a35d07ffd8f44edad93a71032d9aaa7" - integrity sha512-BX6RQ8s9D+2/gDhxrj8OW+YD4R+8hj7FEM/OJHGNR0KipE1h1mSsf39YeyC81qafkq+N3rU3h3RFbLSwE5VqUg== +"@types/react-dom@^18.0.0", "@types/react-dom@^18.0.3": + version "18.0.3" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.3.tgz#a022ea08c75a476fe5e96b675c3e673363853831" + integrity sha512-1RRW9kst+67gveJRYPxGmVy8eVJ05O43hg77G2j5m76/RFJtMbcfAs2viQ2UNsvvDg8F7OfQZx8qQcl6ymygaQ== dependencies: "@types/react" "*" -"@types/react-dom@^16.8.5": - version "16.9.0" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.0.tgz#ba6ddb00bf5de700b0eb91daa452081ffccbfdea" - integrity sha512-OL2lk7LYGjxn4b0efW3Pvf2KBVP0y1v3wip1Bp7nA79NkOpElH98q3WdCEdDj93b2b0zaeBG9DvriuKjIK5xDA== +"@types/react-window@^1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@types/react-window/-/react-window-1.8.5.tgz#285fcc5cea703eef78d90f499e1457e9b5c02fc1" + integrity sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw== dependencies: "@types/react" "*" -"@types/react-native@*": - version "0.61.20" - resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.61.20.tgz#937d8ed9768bdfc982e785563c07b4905ba0fd1f" - integrity sha512-EEtaP15gpDhpB1N8G3a+nWAzSa3HiLAZvfFkvczCluQXiB2vXAVJyxWls1i3Q9TERVWE3JbOuufgCY6bV1qTzw== - dependencies: - "@types/react" "*" - -"@types/react-window@^1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@types/react-window/-/react-window-1.8.1.tgz#6e1ceab2e6f2f78dbf1f774ee0e00f1bb0364bb3" - integrity sha512-V3k1O5cbfZIRa0VVbQ81Ekq/7w42CK1SuiB9U1oPMTxv270D9qUn7rHb3sZoqMkIJFfB1NZxaH7NRDlk+ToDsg== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^16.8.24": - version "16.9.2" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.2.tgz#6d1765431a1ad1877979013906731aae373de268" - integrity sha512-jYP2LWwlh+FTqGd9v7ynUKZzjj98T8x7Yclz479QdRhHfuW9yQ+0jjnD31eXSXutmBpppj5PYNLYLRfnZJvcfg== +"@types/react@*", "@types/react@^18.0.9": + version "18.0.9" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.9.tgz#d6712a38bd6cd83469603e7359511126f122e878" + integrity sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw== dependencies: "@types/prop-types" "*" - csstype "^2.2.0" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/responselike@*", "@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== -"@types/styled-components@^4.4.0", "@types/styled-components@^5.0.0", "@types/styled-components@^5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.3.tgz#6fab3d9c8f7d9a15cbb89d379d850c985002f363" - integrity sha512-HGpirof3WOhiX17lb61Q/tpgqn48jxO8EfZkdJ8ueYqwLbK2AHQe/G08DasdA2IdKnmwOIP1s9X2bopxKXgjRw== +"@types/styled-components@^5.1.11": + version "5.1.26" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.26.tgz#5627e6812ee96d755028a98dae61d28e57c233af" + integrity sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw== dependencies: "@types/hoist-non-react-statics" "*" "@types/react" "*" - "@types/react-native" "*" csstype "^3.0.2" -"@types/styled-system@5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/styled-system/-/styled-system-5.1.2.tgz#d75c40bc4a3bb0d0022eb3dcae58854129e9dd32" - integrity sha512-Byh33qthYnI6+qS0TRr4vqd+N/ax6ic1NFE6ZA16xuVr/EvYvSB8+diEP1lTSE7sP/MTdQpl+KaONREnyalDUA== +"@types/styled-components@^5.1.25": + version "5.1.25" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.25.tgz#0177c4ab5fa7c6ed0565d36f597393dae3f380ad" + integrity sha512-fgwl+0Pa8pdkwXRoVPP9JbqF0Ivo9llnmsm+7TCI330kbPIFd9qv1Lrhr37shf4tnxCOSu+/IgqM7uJXLWZZNQ== dependencies: - csstype "^2.6.4" + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" -"@types/styled-system__css@^5.0.14": - version "5.0.14" - resolved "https://registry.yarnpkg.com/@types/styled-system__css/-/styled-system__css-5.0.14.tgz#97559d823216d475f716fb5b8dd1766f2d3eeafa" - integrity sha512-dvhSQ5upz6TqiQmWLNF0sqdoL5nTomza58vtTSklpE9lDS+5w/ew8PQ+HPSRaXMGrmPGUiL7F0vwryVdxHWfpA== +"@types/styled-system@^5.1.12": + version "5.1.15" + resolved "https://registry.yarnpkg.com/@types/styled-system/-/styled-system-5.1.15.tgz#075f969cc028a895dba916c07708e2fe828d7077" + integrity sha512-1uls4wipZn8FtYFZ7upRVFDoEeOXTQTs2zuyOZPn02T6rjIxtvj2P2lG5qsxXHhKuKsu3thveCZrtaeLE/ibLg== dependencies: csstype "^3.0.2" -"@types/testing-library__dom@*", "@types/testing-library__dom@^6.12.1": - version "6.12.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.12.1.tgz#37af28fae051f9e3feed5684535b1540c97ae28b" - integrity sha512-cgqnEjxKk31tQt29j4baSWaZPNjQf3bHalj2gcHQTpW5SuHRal76gOpF0vypeEo6o+sS5inOvvNdzLY0B3FB2A== +"@types/styled-system__css@^5.0.16": + version "5.0.17" + resolved "https://registry.yarnpkg.com/@types/styled-system__css/-/styled-system__css-5.0.17.tgz#ce6778f896f401e15cdbf77091e4eea112a60343" + integrity sha512-QF67UqeDdigjurmckNPCwkYjZriX270ghPiA6f3GqJG6jg7E4hcq7eGtdYh/DNivMz8sklBfT8y7r5brkCr7QA== dependencies: - pretty-format "^24.3.0" + csstype "^3.0.2" -"@types/testing-library__react@^9.1.2": - version "9.1.3" - resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.3.tgz#35eca61cc6ea923543796f16034882a1603d7302" - integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w== - dependencies: - "@types/react-dom" "*" - "@types/testing-library__dom" "*" - pretty-format "^25.1.0" +"@types/styled-system__theme-get@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/styled-system__theme-get/-/styled-system__theme-get-5.0.2.tgz#ebd5bb465f1aaa24c729ebb09fdfa6ead01d2106" + integrity sha512-tvGRyzADAn2qQ8Z/fw9YOBTL1EttDQ0zrmHq/N+/K/9tF1l2lsZ9334hls1zie32FCxjPJEhzzXVHxKwqXslog== + +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== -"@types/yargs@^13.0.0": - version "13.0.8" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" - integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^16.0.0": version "16.0.4" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" @@ -2313,10 +2545,17 @@ dependencies: "@types/yargs-parser" "*" -"@types/yauzl@2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" - integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA== +"@types/yargs@^17.0.8": + version "17.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" + integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yauzl@2.10.0": + 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" "*" @@ -2327,6 +2566,86 @@ dependencies: "@types/node" "*" +"@typescript-eslint/eslint-plugin@^5.33.1": + version "5.33.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1.tgz#c0a480d05211660221eda963cc844732fe9b1714" + integrity sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ== + dependencies: + "@typescript-eslint/scope-manager" "5.33.1" + "@typescript-eslint/type-utils" "5.33.1" + "@typescript-eslint/utils" "5.33.1" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.33.1": + version "5.33.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.33.1.tgz#e4b253105b4d2a4362cfaa4e184e2d226c440ff3" + integrity sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA== + dependencies: + "@typescript-eslint/scope-manager" "5.33.1" + "@typescript-eslint/types" "5.33.1" + "@typescript-eslint/typescript-estree" "5.33.1" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.33.1": + version "5.33.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz#8d31553e1b874210018ca069b3d192c6d23bc493" + integrity sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA== + dependencies: + "@typescript-eslint/types" "5.33.1" + "@typescript-eslint/visitor-keys" "5.33.1" + +"@typescript-eslint/type-utils@5.33.1": + version "5.33.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.33.1.tgz#1a14e94650a0ae39f6e3b77478baff002cec4367" + integrity sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g== + dependencies: + "@typescript-eslint/utils" "5.33.1" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.33.1": + version "5.33.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.33.1.tgz#3faef41793d527a519e19ab2747c12d6f3741ff7" + integrity sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ== + +"@typescript-eslint/typescript-estree@5.33.1": + version "5.33.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz#a573bd360790afdcba80844e962d8b2031984f34" + integrity sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA== + dependencies: + "@typescript-eslint/types" "5.33.1" + "@typescript-eslint/visitor-keys" "5.33.1" + 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.33.1": + version "5.33.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.33.1.tgz#171725f924fe1fe82bb776522bb85bc034e88575" + integrity sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.33.1" + "@typescript-eslint/types" "5.33.1" + "@typescript-eslint/typescript-estree" "5.33.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.33.1": + version "5.33.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz#0155c7571c8cd08956580b880aea327d5c34a18b" + integrity sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg== + dependencies: + "@typescript-eslint/types" "5.33.1" + eslint-visitor-keys "^3.3.0" + "@webassemblyjs/ast@1.8.5": version "1.8.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" @@ -2473,7 +2792,7 @@ "@webassemblyjs/wast-parser" "1.8.5" "@xtuc/long" "4.2.2" -"@xobotyi/scrollbar-width@1.9.5": +"@xobotyi/scrollbar-width@^1.9.5": version "1.9.5" resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== @@ -2488,16 +2807,23 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -2506,15 +2832,15 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== +acorn-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" + acorn "^8.1.0" + acorn-walk "^8.0.2" -acorn-jsx@^5.3.1: +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== @@ -2524,66 +2850,61 @@ acorn-walk@^6.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn-walk@^8.0.2: + 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@^6.0.7, acorn@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== -acorn@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" - integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== +acorn@^8.1.0, acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== -acorn@^8.2.4: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== +acorn@^8.7.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== -acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -addons-linter@4.14.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/addons-linter/-/addons-linter-4.14.0.tgz#e8a5b99665a7e7df3fda2da42d73593fea8db3f9" - integrity sha512-TH3/PMS4Dd0Jf3kXW7DLXseHZcD7ZbnfnQAztkrP4YC0HQKQVZJ+lGOuDOGUtVQDMwC/eEdvHvZoRnHDer5qkg== +addons-linter@5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/addons-linter/-/addons-linter-5.10.0.tgz#2184feab680ea250307ebb98d90fd3cfee97009a" + integrity sha512-RiW9A0Z5HOzghN+BxmModDZ1V6B+1NFWZ+aU/vXefUtrNrJF6oWUnmeCLl1QzDaRcYVGDNDX9DheLfb23/Dzdg== dependencies: - "@mdn/browser-compat-data" "4.1.12" + "@mdn/browser-compat-data" "5.1.2" addons-moz-compare "1.2.0" - addons-scanner-utils "6.3.0" - ajv "6.12.6" - ajv-merge-patch "4.1.0" + addons-scanner-utils "7.1.0" + ajv "8.11.0" + ajv-merge-patch "5.0.1" chalk "4.1.2" - cheerio "1.0.0-rc.10" + cheerio "1.0.0-rc.12" columnify "1.6.0" common-tags "1.8.2" deepmerge "4.2.2" - eslint "8.11.0" + eslint "8.18.0" eslint-plugin-no-unsanitized "4.0.1" eslint-visitor-keys "3.3.0" - espree "9.3.1" + espree "9.3.2" esprima "4.0.1" fluent-syntax "0.13.0" - glob "7.2.0" + glob "8.0.3" image-size "1.0.1" is-mergeable-object "1.1.1" jed "1.1.1" os-locale "5.0.0" - pino "7.9.1" - postcss "8.4.12" + pino "8.1.0" + postcss "8.4.14" relaxed-json "1.0.3" - semver "7.3.5" + semver "7.3.7" sha.js "2.4.11" source-map-support "0.5.21" tosource "1.0.0" upath "2.0.1" - yargs "17.4.0" + yargs "17.5.1" yauzl "2.10.0" addons-moz-compare@1.2.0: @@ -2591,12 +2912,12 @@ addons-moz-compare@1.2.0: resolved "https://registry.yarnpkg.com/addons-moz-compare/-/addons-moz-compare-1.2.0.tgz#d6246cbae224ab629cb7da397b2b9602938ea085" integrity sha512-COG8qk2/dubPqabfcoJW4E7pm2EQDI43iMrHnhlobvq/uRMEzx/PYJ1KaUZ97Vgg44R3QdRG5CvDsTRbMUHcDw== -addons-scanner-utils@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/addons-scanner-utils/-/addons-scanner-utils-6.3.0.tgz#99596585a1e5d50f543e4f765cb3549bcf9d48db" - integrity sha512-sD4U7TX/NFDUYVheydrcpHH9xG3E0eVBFDn1RuUkGpqRyay3SsOU75Pl2lWAbCmeE0Mh9inU1Fwl7Mm1VRWkZw== +addons-scanner-utils@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/addons-scanner-utils/-/addons-scanner-utils-7.1.0.tgz#cd51b706c4513207aa3cd56c09650feeff5438f3" + integrity sha512-I6uQtJg3sbNtbGOsR2GmTtegCegYTXFRTnnvukEcX0jWidI4enyENyCV1MNkoLSw5xbgKIM/bFuSm4IPFlDYrg== dependencies: - "@types/yauzl" "2.9.2" + "@types/yauzl" "2.10.0" common-tags "1.8.2" first-chunk-stream "3.0.0" strip-bom-stream "4.0.0" @@ -2615,6 +2936,14 @@ agent-base@6: dependencies: debug "4" +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: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -2625,22 +2954,27 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv-merge-patch@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ajv-merge-patch/-/ajv-merge-patch-4.1.0.tgz#cd580e5860ac53431d6aa901fa3d5e2eb2b74a6c" - integrity sha512-0mAYXMSauA8RZ7r+B4+EAOYcZEcO9OK5EiQCR7W7Cv4E44pJj56ZnkKLJ9/PAcOc0dT+LlV9fdDcq2TxVJfOYw== +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-merge-patch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ajv-merge-patch/-/ajv-merge-patch-5.0.1.tgz#0aba921a2ea8632813478aa3d039d8134b58f876" + integrity sha512-0UP3aJCzfzBOkmLR+EinJDCfg6DNtprj3bVPo7JJNgUpZMKt097t9xxQOWFGRoB4JvKKIHE2qe0HkVaS/HyrjQ== dependencies: fast-json-patch "^2.0.6" - json-merge-patch "^0.2.3" + json-merge-patch "^1.0.2" -ajv@6.12.6, ajv@^6.10.0, ajv@^6.12.3, 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== +ajv@8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" uri-js "^4.2.2" ajv@^6.1.0, ajv@^6.10.2: @@ -2653,19 +2987,29 @@ ajv@^6.1.0, ajv@^6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== +ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, 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: - string-width "^3.0.0" + 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-align@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, 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== @@ -2682,7 +3026,7 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.0.0, ansi-regex@^4.1.0: +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== @@ -2697,6 +3041,11 @@ ansi-regex@^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@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -2722,6 +3071,11 @@ ansi-styles@^5.0.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.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== + any-promise@^1.0.0, any-promise@^1.1.0, any-promise@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -2735,7 +3089,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.3: +anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -2776,13 +3130,10 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.0.2.tgz#250687b4ccde1ab86d127da0432ae3552fc7b145" - integrity sha512-S1G1V790fTaigUSM/Gd0NngzEfiMy9uTUfMyHhKhVyy4cH5O/eTuR01ydhGL0z4Za1PXFTRGH3qL8VhUQuEO5w== - dependencies: - "@babel/runtime" "^7.7.4" - "@babel/runtime-corejs3" "^7.7.4" +aria-query@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" + integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== arr-diff@^4.0.0: version "4.0.0" @@ -2799,16 +3150,27 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== +array-differ@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-4.0.0.tgz#aa3c891c653523290c880022f45b06a42051b026" + integrity sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw== array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +array-includes@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -2821,6 +3183,11 @@ array-union@^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-union@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -2831,10 +3198,15 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== +array.prototype.flatmap@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" asn1.js@^4.0.0: version "4.10.1" @@ -2870,6 +3242,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +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-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -2885,11 +3262,6 @@ async@^3.2.0: resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== -async@~0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2920,14 +3292,14 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== +axios@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" + integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.7" -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= @@ -2936,29 +3308,28 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-jest@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.6.tgz#e99c6e0577da2655118e3608b68761a5a69bd0d8" - integrity sha512-iTJyYLNc4wRofASmofpOc5NK9QunwMk+TLFgGXsTFS8uEqmd8wdI7sga0FPe2oVH3b5Agt/EAK1QjPEuKL8VfA== +babel-jest@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.2.tgz#2c15abd8c2081293c9c3f4f80a4ed1d51542fee5" + integrity sha512-kkq2QSDIuvpgfoac3WZ1OOcHsQQDU5xYk2Ql7tLdJ8BVAYbefEXal+NfS45Y5LVZA7cxC8KYcQMObpCt1J025w== dependencies: - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/transform" "^29.2.2" "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.0.6" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.2.0" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^8.0.5: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== +babel-loader@^8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - pify "^4.0.1" + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" babel-messages@^6.23.0: version "6.23.0" @@ -2967,43 +3338,68 @@ babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" - integrity sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw== +babel-plugin-jest-hoist@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" + integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -"babel-plugin-styled-components@>= 1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.11.1.tgz#5296a9e557d736c3186be079fff27c6665d63d76" - integrity sha512-YwrInHyKUk1PU3avIRdiLyCpM++18Rs1NgyMXEAQC33rIXs/vro0A+stf4sT0Gf22Got+xRWB8Cm0tw+qkRzBA== +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-module-imports" "^7.0.0" + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +"babel-plugin-styled-components@>= 1.12.0": + version "2.0.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" + integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" babel-plugin-syntax-jsx "^6.18.0" lodash "^4.17.11" + picomatch "^2.3.0" babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" @@ -3046,12 +3442,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" - integrity sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw== +babel-preset-jest@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" + integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA== dependencies: - babel-plugin-jest-hoist "^27.0.6" + babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.22.0, babel-runtime@^6.26.0: @@ -3172,15 +3568,15 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== -bluebird@~2.9.24: - version "2.9.34" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.9.34.tgz#2f7b4ec80216328a9fddebdf69c8d4942feff7d8" - integrity sha1-L3tOyAIWMoqf3evfacjUlC/v99g= +bluebird@~3.7: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== body-parser@1.19.0: version "1.19.0" @@ -3203,24 +3599,19 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -bowser@^1.7.3: - version "1.9.4" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" - integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== - -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== +boxen@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.0.0.tgz#9e5f8c26e716793fc96edcf7cf754cdf5e3fbf32" + integrity sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg== dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" + ansi-align "^3.0.1" + camelcase "^7.0.0" + chalk "^5.0.1" + cli-boxes "^3.0.0" + string-width "^5.1.2" + type-fest "^2.13.0" + widest-line "^4.0.1" + wrap-ansi "^8.0.1" brace-expansion@^1.1.7: version "1.1.11" @@ -3230,6 +3621,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +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@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -3246,23 +3644,18 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brorand@^1.0.1: +brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -3322,25 +3715,26 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.16.6: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== +browserslist@^4.17.5, browserslist@^4.20.2: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - node-releases "^1.1.71" + node-releases "^2.0.3" + picocolors "^1.0.0" -browserslist@^4.6.0, browserslist@^4.6.6: - version "4.7.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" - integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== +browserslist@^4.21.3: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - caniuse-lite "^1.0.30000989" - electron-to-chromium "^1.3.247" - node-releases "^1.1.29" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" bser@2.1.1: version "2.1.1" @@ -3462,48 +3856,66 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== +cacheable-lookup@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz#65c0e51721bb7f9f2cb513aed6da4a1b93ad7dc8" + integrity sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A== + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" http-cache-semantics "^4.0.0" - keyv "^3.0.0" + keyv "^4.0.0" lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" + normalize-url "^6.0.1" + responselike "^2.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@6.2.0, camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +camelcase@7.0.0, camelcase@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.0.tgz#fd112621b212126741f998d614cbc2a8623fd174" + integrity sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ== camelcase@^5.0.0, camelcase@^5.2.0, 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== +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= -caniuse-lite@^1.0.30000989: - version "1.0.30000989" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" - integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== +caniuse-lite@^1.0.30001332: + version "1.0.30001332" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" + integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== -caniuse-lite@^1.0.30001219: - version "1.0.30001241" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz#cd3fae47eb3d7691692b406568d7a3e5b23c7598" - integrity sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ== +caniuse-lite@^1.0.30001400: + version "1.0.30001431" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795" + integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== caseless@~0.12.0: version "0.12.0" @@ -3519,7 +3931,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@4.1.2, chalk@^4.1.0: +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== @@ -3538,21 +3950,10 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" +chalk@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" + integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== char-regex@^1.0.2: version "1.0.2" @@ -3564,29 +3965,30 @@ check-types@^8.0.3: resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== -cheerio-select@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.6.0.tgz#489f36604112c722afa147dedd0d4609c09e1696" - integrity sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g== +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: - css-select "^4.3.0" - css-what "^6.0.1" - domelementtype "^2.2.0" - domhandler "^4.3.1" - domutils "^2.8.0" + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" -cheerio@1.0.0-rc.10: - version "1.0.0-rc.10" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" - integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== +cheerio@1.0.0-rc.12: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== dependencies: - cheerio-select "^1.5.0" - dom-serializer "^1.3.2" - domhandler "^4.2.0" - htmlparser2 "^6.1.0" - parse5 "^6.0.1" - parse5-htmlparser2-tree-adapter "^6.0.1" - tslib "^2.2.0" + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" "chokidar@>=2.0.0 <4.0.0": version "3.3.1" @@ -3603,7 +4005,7 @@ cheerio@1.0.0-rc.10: optionalDependencies: fsevents "~2.1.2" -chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: +chokidar@^2.0.2: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -3622,15 +4024,30 @@ chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" - integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== +chokidar@^3.4.0, chokidar@^3.4.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" -chrome-launcher@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.0.tgz#5144a57aba0cf2f4cbe61dccefdde024fb3ca7fc" - integrity sha512-ZQqX5kb9H0+jy1OqLnWampfocrtSZaGl7Ny3F9GRha85o4odbL8x55paUzh51UC7cEmZ5obp3H2Mm70uC2PpRA== +chownr@^1.1.1, chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-launcher@0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.1.tgz#0a0208037063641e2b3613b7e42b0fcb3fa2d399" + integrity sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg== dependencies: "@types/node" "*" escape-string-regexp "^4.0.0" @@ -3644,15 +4061,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" - integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -3677,15 +4089,43 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" - integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== +classnames@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +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-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +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-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@^5.0.0: version "5.0.0" @@ -3705,6 +4145,15 @@ cliui@^7.0.2: 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" + clone-deep@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" @@ -3784,10 +4233,15 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +color2k@^1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/color2k/-/color2k-1.2.5.tgz#3d8f08d213170f781fb6270424454dd3c0197b02" + integrity sha512-G39qNMGyM/fhl8hcy1YqpfXzQ810zSGyiJAgdMFlreCI7Hpwu3Jpu4tuBM/Oxu1Bek1FwyaBbtrtdkTr4HDhLA== + +colorette@^2.0.16, colorette@^2.0.17: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== columnify@1.6.0: version "1.6.0" @@ -3811,26 +4265,31 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.18.0, commander@^2.3.0, commander@^2.6.0: +commander@^2.18.0, commander@^2.6.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^2.20.0, commander@^2.8.1, commander@~2.20.0: +commander@^2.20.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@^9.1.0, commander@^9.3.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" + integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== + common-tags@1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" @@ -3846,6 +4305,14 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compress-brotli@^1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/compress-brotli/-/compress-brotli-1.3.8.tgz#0c0a60c97a989145314ec381e84e26682e7b38db" + integrity sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ== + dependencies: + "@types/json-buffer" "~3.0.0" + json-buffer "~3.0.1" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -3861,17 +4328,24 @@ concat-stream@^1.4.7, concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== + dependencies: + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + xdg-basedir "^5.0.1" console-browserify@^1.1.0: version "1.1.0" @@ -3897,12 +4371,14 @@ content-disposition@0.5.3: dependencies: safe-buffer "5.1.2" -content-scripts-register-polyfill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/content-scripts-register-polyfill/-/content-scripts-register-polyfill-1.0.0.tgz#21bc2df475ea48aa83737d24675a6a44e4a006a7" - integrity sha512-DiHscMTyL5evEg6C8GSkkd5Kfkma726zxqIt+zv6L2W/gVqYOUZUw2F27BpAUp9nQZnIrky5Gx1eYA9Fw4+aeA== +content-scripts-register-polyfill@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/content-scripts-register-polyfill/-/content-scripts-register-polyfill-3.2.2.tgz#e88e0b8d9febacddaa15d03cfb0b31617f89f219" + integrity sha512-3v/PSOWU/1F4zkIhnv3mIJUEUFaN2tEW8BHUv85q3OophSqJDLwo2Tj5DzoGCQ5N5iVYTeGO0eeR/NHrDcCnvQ== dependencies: - "@types/firefox-webext-browser" "^67.0.2" + webext-content-scripts "^1.0.1" + webext-patterns "^1.1.1" + webext-polyfill-kinda "^0.10.0" content-type@~1.0.4: version "1.0.4" @@ -3957,10 +4433,10 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-to-clipboard@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz#d2724a3ccbfed89706fac8a894872c979ac74467" - integrity sha512-eOZERzvCmxS8HWzugj4Uxl8OJxa7T2k1Gi0X5qavwydHIfuSHq2dTD09LOg/XyGq4Zpb5IsR/2OJ5lbOegz78w== +copy-to-clipboard@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" + integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== dependencies: toggle-selection "^1.0.6" @@ -3982,23 +4458,18 @@ copy-webpack-plugin@^5.0.0: serialize-javascript "^1.7.0" webpack-log "^2.0.0" -core-js-compat@^3.1.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.2.1.tgz#0cbdbc2e386e8e00d3b85dc81c848effec5b8150" - integrity sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A== +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.22.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.2.tgz#eec621eb276518efcf718d0a6d9d042c3d0cad48" + integrity sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw== dependencies: - browserslist "^4.6.6" - semver "^6.3.0" + browserslist "^4.20.2" + semver "7.0.0" -core-js-pure@^3.0.0: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" - integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== - -core-js@3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.0.tgz#f479dbfc3dffb035a0827602dd056839a774aa71" - integrity sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ== +core-js@3.22.8: + version "3.22.8" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.8.tgz#23f860b1fe60797cc4f704d76c93fea8a2f60631" + integrity sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA== core-js@^2.4.0: version "2.6.10" @@ -4010,6 +4481,17 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -4078,10 +4560,12 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" css-color-keywords@^1.0.0: version "1.0.0" @@ -4113,15 +4597,15 @@ css-loader@^2.1.0: postcss-value-parser "^3.3.0" schema-utils "^1.0.0" -css-select@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" nth-check "^2.0.1" css-to-react-native@^3.0.0: @@ -4133,28 +4617,28 @@ css-to-react-native@^3.0.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@^1.0.0-alpha.28: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: - mdn-data "2.0.4" + mdn-data "2.0.14" source-map "^0.6.1" -css-what@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.0.1.tgz#3be33be55b9f302f710ba3a9c3abc1e2a63fc7eb" - integrity sha512-z93ZGFLNc6yaoXAmVhqoSIb+BduplteCt1fepvwhBUQK6MNE4g6fgjpuZKJKp0esUe+vXWlIkwZZjNWoOKw0ZA== +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== cssom@~0.3.6: version "0.3.8" @@ -4168,26 +4652,16 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^2.2.0: - version "2.6.6" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.6.tgz#c34f8226a94bbb10c32cc0d714afdf942291fc41" - integrity sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg== - -csstype@^2.5.5: - version "2.6.7" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5" - integrity sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ== - -csstype@^2.6.4: - version "2.6.9" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.9.tgz#05141d0cd557a56b8891394c1911c40c8a98d098" - integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q== - csstype@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== +csstype@^3.0.6: + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + cwd@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" @@ -4208,26 +4682,26 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== +data-urls@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -debounce@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" - integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== +debounce@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@~2.6.3: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4255,72 +4729,55 @@ debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.3.2: +debug@^4.3.2, debug@^4.3.4, debug@~4.3.1: 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" -decamelize@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.0.tgz#88358157b010ef133febfd27c18994bd80c6215b" - integrity sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w== +decamelize@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" + integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== +decimal.js@^10.4.1: + version "10.4.2" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.2.tgz#0341651d1d997d86065a2ce3a441fbd0d8e8b98e" + integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= +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 "^1.0.0" + mimic-response "^3.1.0" dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.0.tgz#3103cdf8ab6d32cf4a8df7865458f2b8d33f3745" - integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3: +deep-is@^0.1.3, 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== -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= - deepcopy@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/deepcopy/-/deepcopy-2.1.0.tgz#2deb0dd52d079c2ecb7924b640a7c3abd4db1d6d" @@ -4340,10 +4797,15 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.0.tgz#b41bd7efa8508cef13f8456975f7a278c72833fd" - integrity sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ== +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.2: version "1.1.3" @@ -4352,6 +4814,14 @@ define-properties@^1.1.2: dependencies: object-keys "^1.0.12" +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -4417,25 +4887,15 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - devtools-protocol@0.0.883894: version "0.0.883894" resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.883894.tgz#d403f2c75cd6d71c916aee8dde9258da988a4da9" integrity sha512-33idhm54QJzf3Q7QofMgCvIVSd2o9H3kQPWaKT/fhoZh+digc+WSiMhbkeG3iN79WY4Hwr9G05NpbhEVrsOYAg== -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diff-sequences@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" - integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== +diff-sequences@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.2.0.tgz#4c55b5b40706c7b5d2c5c75999a50c56d214e8f6" + integrity sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw== diffie-hellman@^5.0.0: version "5.0.3" @@ -4453,6 +4913,20 @@ dir-glob@^2.0.0: dependencies: path-type "^3.0.0" +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: + path-type "^4.0.0" + +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" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -4460,62 +4934,57 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz#511e5993dd673b97c87ea47dba0e3892f7e0c983" - integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA== +dom-accessibility-api@^0.5.9: + version "0.5.14" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56" + integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg== -dom-serializer@^1.0.1, dom-serializer@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: - webidl-conversions "^5.0.0" + webidl-conversions "^7.0.0" -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== +domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: - domelementtype "^2.2.0" + domelementtype "^2.3.0" -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: is-obj "^2.0.0" @@ -4545,11 +5014,6 @@ dtrace-provider@~0.8: dependencies: nan "^2.14.0" -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -4565,15 +5029,10 @@ duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -duplexify@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" - integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.0" +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" @@ -4600,33 +5059,33 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.1.tgz#5b5ab57f718b79d4aca9254457afecd36fa80228" integrity sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ== -electron-to-chromium@^1.3.247: - version "1.3.264" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.264.tgz#ed837f44524d0601a7b2b7b6efd86e35753d0e27" - integrity sha512-z8E7WkrrquCuGYv+kKyybuZIbdms+4PeHp7Zm2uIgEhAigP0bOwqXILItwj0YO73o+QyHY/7XtEfP5DsHOWQgQ== +electron-to-chromium@^1.4.118: + version "1.4.119" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.119.tgz#a1dcef9f9a0283119256030a605da6ae63b0a402" + integrity sha512-HPEmKy+d0xK8oCfEHc5t6wDsSAi1WmE3Ld08QrBjAPxaAzfuKP66VJ77lcTqxTt7GJmSE279s75mhW64Xh+4kw== -electron-to-chromium@^1.3.723: - version "1.3.766" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.766.tgz#2fd14a4e54f77665872f4e23fcf4968e83638220" - integrity sha512-u2quJ862q9reRKh/je3GXis3w38+RoXH1J9N3XjtsS6NzmUAosNsyZgUVFZPN/ZlJ3v6T0rTyZR3q/J5c6Sy5w== +electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== elliptic@^6.0.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" - integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" + bn.js "^4.11.9" + brorand "^1.1.0" hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^7.0.1: version "7.0.3" @@ -4638,11 +5097,21 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +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== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4671,10 +5140,15 @@ enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" -entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== +entities@^4.2.0, entities@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.1.tgz#c34062a94c865c322f9d67b4384e4169bcede6a4" + integrity sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg== + +entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== errno@^0.1.3, errno@~0.1.7: version "0.1.7" @@ -4683,19 +5157,64 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.3.1: +error-ex@^1.3.1, error-ex@^1.3.2: 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.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.4.tgz#a757397dc5d9de973ac9a5d7d4e8ade7cfae9101" - integrity sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ== +error-stack-parser@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" + integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== dependencies: - stackframe "^1.1.0" + stackframe "^1.1.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.20.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.0.tgz#b2d526489cceca004588296334726329e0a6bfb6" + integrity sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.1" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +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: + has "^1.0.3" + +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: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" es6-error@4.1.1: version "4.1.1" @@ -4712,10 +5231,10 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== +escape-goat@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" + integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== escape-html@~1.0.3: version "1.0.3" @@ -4737,6 +5256,11 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -4749,11 +5273,41 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" +eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + eslint-plugin-no-unsanitized@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.1.tgz#e2343265467ba2270ade478cbe07bbafeaea412d" integrity sha512-y/lAMWnPPC7RYuUdxlEL/XiCL8FehN9h9s3Kjqbp/Kv0i9NZs+IXSC2kS546Fa4Bumwy31HlVS/OdWX0Kxb5Xg== +eslint-plugin-react-hooks@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz#5f762dfedf8b2cf431c689f533c9d3fa5dcf25ad" + integrity sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw== + +eslint-plugin-react@^7.29.4: + version "7.29.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" + integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== + dependencies: + array-includes "^3.1.4" + array.prototype.flatmap "^1.2.5" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.0" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.6" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -4762,6 +5316,14 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +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.3.0" + estraverse "^4.1.1" + eslint-scope@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" @@ -4787,12 +5349,12 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint@8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.11.0.tgz#88b91cfba1356fc10bb9eb592958457dfe09fb37" - integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA== +eslint@8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" + integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== dependencies: - "@eslint/eslintrc" "^1.2.1" + "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -4803,7 +5365,48 @@ eslint@8.11.0: eslint-scope "^7.1.1" eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.3.1" + espree "^9.3.2" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +eslint@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.15.0.tgz#fea1d55a7062da48d82600d2e0974c55612a11e9" + integrity sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA== + dependencies: + "@eslint/eslintrc" "^1.2.3" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.2" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -4819,7 +5422,7 @@ eslint@8.11.0: json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" regexpp "^3.2.0" @@ -4828,13 +5431,13 @@ eslint@8.11.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@9.3.1, espree@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== +espree@9.3.2, espree@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" + acorn "^8.7.1" + acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" esprima@4.0.1, esprima@^4.0.0, esprima@^4.0.1: @@ -4868,7 +5471,7 @@ estraverse@^4.1.0, estraverse@^4.1.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0: +estraverse@^5.1.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -4878,7 +5481,7 @@ estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -esutils@^2.0.0, esutils@^2.0.2: +esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== @@ -4888,6 +5491,11 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + events@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" @@ -4944,6 +5552,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" + integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^3.0.1" + 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" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -4976,22 +5599,21 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect-puppeteer@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-5.0.4.tgz#54bfdecabb2acb3e3f0d0292cd3dab2dd8ff5a81" - integrity sha512-NV7jSiKhK+byocxg9A+0av+Q2RSCP9bcLVRz7zhHaESeCOkuomMvl9oD+uo1K+NdqRCXhNkQlUGWlmtbrpR1qw== +expect-puppeteer@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-6.1.0.tgz#507bf3488e656c2f11fb1306ecaccc108a4bbaa5" + integrity sha512-5yk64xOe+yTRLeZTg1uuGYmUw5bMsI/YX7Q9tXsovYFBq8bvagJH4XMYLQ7/nU+1dJawLH0KJehuJULD33oU+w== -expect@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05" - integrity sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw== +expect@^29.0.0, expect@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.2.2.tgz#ba2dd0d7e818727710324a6e7f13dd0e6d086106" + integrity sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw== dependencies: - "@jest/types" "^27.0.6" - ansi-styles "^5.0.0" - jest-get-type "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-regex-util "^27.0.6" + "@jest/expect-utils" "^29.2.2" + jest-get-type "^29.2.0" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" express@^4.16.3: version "4.17.1" @@ -5099,6 +5721,17 @@ fast-deep-equal@^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-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + 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-patch@^2.0.6: version "2.2.1" resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-2.2.1.tgz#18150d36c9ab65c7209e7d4eb113f4f8eaabe6d9" @@ -5111,12 +5744,17 @@ fast-json-stable-stringify@^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= +fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + fast-levenshtein@^2.0.6, 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= -fast-redact@^3.0.0: +fast-redact@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.1.tgz#790fcff8f808c2e12fabbfb2be5cb2deda448fa0" integrity sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A== @@ -5126,10 +5764,17 @@ fast-shallow-equal@^1.0.0: resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== -fastest-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" - integrity sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg= +fastest-stable-stringify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76" + integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" fb-watchman@^2.0.0: version "2.0.1" @@ -5146,9 +5791,9 @@ fd-slicer@~1.1.0: pend "~1.2.0" figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== file-entry-cache@^6.0.1: version "6.0.1" @@ -5200,7 +5845,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -5209,6 +5854,15 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + find-file-up@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" @@ -5224,10 +5878,10 @@ find-pkg@^0.1.2: dependencies: find-file-up "^0.1.2" -find-process@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.4.tgz#52820561162fda0d1feef9aed5d56b3787f0fd6e" - integrity sha512-rRSuT1LE4b+BFK588D2V8/VG9liW0Ark1XJgroxZXI0LtwmQJOb490DvDYvbm+Hek9ETFzTutGfJ90gumITPhQ== +find-process@^1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.7.tgz#8c76962259216c381ef1099371465b5b439ea121" + integrity sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg== dependencies: chalk "^4.0.0" commander "^5.1.0" @@ -5300,15 +5954,15 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -focus-lock@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.6.tgz#98119a755a38cfdbeda0280eaa77e307eee850c7" - integrity sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw== +focus-visible@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.2.0.tgz#3a9e41fccf587bd25dcc2ef045508284f0a4d6b3" + integrity sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ== -follow-redirects@^1.10.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== +follow-redirects@^1.14.7: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== for-in@^0.1.3: version "0.1.8" @@ -5332,22 +5986,34 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.5.2.tgz#a73b3630bd0a69409a6e4824e54c03a62fe82d8f" - integrity sha512-a5IG+xXyKnpruI0CP/anyRLAoxWtp3lzdG6flxicANnoSzz64b12dJ7ASAVRrI2OaWwZR2JyBaMHFQqInhWhIw== +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340" + integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^2.0.4" - micromatch "^3.1.10" + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" tapable "^1.0.0" -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -5397,7 +6063,16 @@ fs-exists-sync@^0.1.0: resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= -fs-extra@9.1.0: +fs-extra@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -5417,13 +6092,18 @@ fs-extra@~9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" -fs-minipass@^1.2.5: +fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: minipass "^2.6.0" +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -5452,7 +6132,7 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" -fsevents@^2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -5467,11 +6147,26 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +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" + 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= +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== + fx-runner@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fx-runner/-/fx-runner-1.2.0.tgz#6fd6d0fc47b5c32c176aa22af2182227664a03fe" @@ -5484,6 +6179,11 @@ fx-runner@1.2.0: which "1.2.4" winreg "0.0.12" +fzy.js@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/fzy.js/-/fzy.js-0.4.1.tgz#695bf87cc0bbdda9cbcf22bc318a74c4aca6b758" + integrity sha512-4sPVXf+9oGhzg2tYzgWe4hgAY0wEbkqeuKVEgdnqX8S8VcLosQsDjb0jV+f5uoQlf8INWId1w0IGoufAoik1TA== + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -5498,11 +6198,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -5513,12 +6208,21 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^4.0.0, get-stream@^4.1.0: +get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -5532,11 +6236,19 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +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== +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: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -5557,6 +6269,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.1.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.1: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" @@ -5576,17 +6295,16 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" glob@^6.0.1: version "6.0.4" @@ -5611,10 +6329,10 @@ glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -5689,6 +6407,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^13.15.0: + version "13.16.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.16.0.tgz#9be4aca28f311aaeb974ea54978ebbb5e35ce46a" + integrity sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q== + dependencies: + type-fest "^0.20.2" + globals@^13.6.0, globals@^13.9.0: version "13.13.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" @@ -5701,6 +6426,18 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +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" + globby@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" @@ -5713,22 +6450,29 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== +got@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" + +graceful-fs@4.2.10, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: version "4.2.2" @@ -5745,11 +6489,6 @@ graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== -graceful-fs@^4.2.4: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" @@ -5788,6 +6527,11 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.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" @@ -5798,11 +6542,30 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-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-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.1, has-symbols@^1.0.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-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -5839,12 +6602,12 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== +has-yarn@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" + integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== -has@^1.0.1, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -5867,7 +6630,14 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hmac-drbg@^1.0.0: +history@*, history@^5.0.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" + integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== + dependencies: + "@babel/runtime" "^7.7.6" + +hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= @@ -5895,27 +6665,27 @@ hoopy@^0.1.4: resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: - whatwg-encoding "^1.0.5" + whatwg-encoding "^2.0.0" html-escaper@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491" integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig== -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" http-cache-semantics@^4.0.0: version "4.0.3" @@ -5944,12 +6714,12 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== +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" "1" + "@tootallnate/once" "2" agent-base "6" debug "4" @@ -5962,6 +6732,14 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http2-wrapper@^2.1.10: + version "2.1.11" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.11.tgz#d7c980c7ffb85be3859b6a96c800b2951ae257ef" + integrity sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -5975,6 +6753,14 @@ https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: agent-base "6" debug "4" +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@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -5985,6 +6771,16 @@ human-signals@^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@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" + integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== + +husky@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" + integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== + hyphenate-style-name@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" @@ -5997,6 +6793,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" @@ -6053,7 +6856,7 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= -import-fresh@3.3.0, import-fresh@^3.2.1: +import-fresh@3.3.0, import-fresh@^3.1.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== @@ -6069,10 +6872,10 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== import-local@2.0.0: version "2.0.0" @@ -6095,6 +6898,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +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== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -6134,24 +6942,37 @@ ini@2.0.0, ini@~2.0.0: integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.6" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.6.tgz#f1c46a2a93a253e7b3905115e74d527cd23061a1" + integrity sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg== -inline-style-prefixer@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz#d390957d26f281255fe101da863158ac6eb60911" - integrity sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg== +ini@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-3.0.0.tgz#2f6de95006923aa75feed8894f5686165adc08f1" + integrity sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw== + +inline-style-prefixer@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" + integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== dependencies: - bowser "^1.7.3" css-in-js-utils "^2.0.0" +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + interpret@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== -invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -6194,16 +7015,18 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - 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= +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-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -6218,24 +7041,30 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +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-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== +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.1.1" + ci-info "^3.2.0" is-core-module@^2.2.0: version "2.4.0" @@ -6244,6 +7073,13 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" +is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6281,7 +7117,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-docker@^2.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== @@ -6320,6 +7156,11 @@ is-fullwidth-code-point@^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-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -6359,10 +7200,22 @@ is-mergeable-object@1.1.1: resolved "https://registry.yarnpkg.com/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz#faaa3ed1cfce87d6f7d2f5885e92cc30af3e2ebf" integrity sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA== -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== +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-npm@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" + integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== + +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: + has-tostringtag "^1.0.0" is-number@^3.0.0: version "3.0.0" @@ -6386,7 +7239,7 @@ is-path-inside@^3.0.2: 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: +is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -6403,18 +7256,26 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +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: - has "^1.0.1" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-relative@^0.1.0: version "0.1.3" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" integrity sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI= +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.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -6425,6 +7286,25 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-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-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-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -6435,6 +7315,13 @@ is-utf8@^0.2.1: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +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: + call-bind "^1.0.2" + is-windows@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" @@ -6450,11 +7337,6 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== - is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -6462,10 +7344,10 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== +is-yarn-global@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.0.tgz#714d94453327db9ea98fbf1a0c5f2b88f59ddd5c" + integrity sha512-HneQBCrXGBy15QnaDfcn6OLoU8AQPAa0Qn0IeJR/QCo4E8dNZaGGwxpCwWyEBQC5QvFonP8d6t60iGpAHVAfNA== isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" @@ -6504,14 +7386,20 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: - "@babel/core" "^7.7.5" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" semver "^6.3.0" istanbul-lib-report@^3.0.0: @@ -6532,10 +7420,10 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -6545,488 +7433,481 @@ jed@1.1.1: resolved "https://registry.yarnpkg.com/jed/-/jed-1.1.1.tgz#7a549bbd9ffe1585b0cd0a191e203055bee574b4" integrity sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ= -jest-changed-files@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.0.6.tgz#bed6183fcdea8a285482e3b50a9a7712d49a7a8b" - integrity sha512-BuL/ZDauaq5dumYh5y20sn4IISnf1P9A0TDswTxUi84ORGtVa86ApuBHqICL0vepqAnZiY6a7xeSPWv2/yy4eA== +jest-changed-files@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" + integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA== dependencies: - "@jest/types" "^27.0.6" execa "^5.0.0" - throat "^6.0.1" + p-limit "^3.1.0" -jest-circus@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.6.tgz#dd4df17c4697db6a2c232aaad4e9cec666926668" - integrity sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q== +jest-circus@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.2.2.tgz#1dc4d35fd49bf5e64d3cc505fb2db396237a6dfa" + integrity sha512-upSdWxx+Mh4DV7oueuZndJ1NVdgtTsqM4YgywHEx05UMH5nxxA2Qu9T9T9XVuR021XxqSoaKvSmmpAbjwwwxMw== dependencies: - "@jest/environment" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/environment" "^29.2.2" + "@jest/expect" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.0.6" is-generator-fn "^2.0.0" - jest-each "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" + jest-each "^29.2.1" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-runtime "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" + p-limit "^3.1.0" + pretty-format "^29.2.1" slash "^3.0.0" stack-utils "^2.0.3" - throat "^6.0.1" -jest-cli@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.6.tgz#d021e5f4d86d6a212450d4c7b86cb219f1e6864f" - integrity sha512-qUUVlGb9fdKir3RDE+B10ULI+LQrz+MCflEH2UJyoUjoHHCbxDrMxSzjQAPUMsic4SncI62ofYCcAvW6+6rhhg== +jest-cli@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.2.2.tgz#feaf0aa57d327e80d4f2f18d5f8cd2e77cac5371" + integrity sha512-R45ygnnb2CQOfd8rTPFR+/fls0d+1zXS6JPYTBBrnLPrhr58SSuPTiA5Tplv8/PXpz4zXR/AYNxmwIj6J6nrvg== dependencies: - "@jest/core" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/core" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" + jest-config "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" prompts "^2.0.1" - yargs "^16.0.3" + yargs "^17.3.1" -jest-config@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.6.tgz#119fb10f149ba63d9c50621baa4f1f179500277f" - integrity sha512-JZRR3I1Plr2YxPBhgqRspDE2S5zprbga3swYNrvY3HfQGu7p/GjyLOqwrYad97tX3U3mzT53TPHVmozacfP/3w== +jest-config@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.2.2.tgz#bf98623a46454d644630c1f0de8bba3f495c2d59" + integrity sha512-Q0JX54a5g1lP63keRfKR8EuC7n7wwny2HoTRDb8cx78IwQOiaYUVZAdjViY3WcTxpR02rPUpvNVmZ1fkIlZPcw== dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.0.6" - "@jest/types" "^27.0.6" - babel-jest "^27.0.6" + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.2.2" + "@jest/types" "^29.2.1" + babel-jest "^29.2.2" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - is-ci "^3.0.0" - jest-circus "^27.0.6" - jest-environment-jsdom "^27.0.6" - jest-environment-node "^27.0.6" - jest-get-type "^27.0.6" - jest-jasmine2 "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-runner "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.2.2" + jest-environment-node "^29.2.2" + jest-get-type "^29.2.0" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-runner "^29.2.2" + jest-util "^29.2.1" + jest-validate "^29.2.2" micromatch "^4.0.4" - pretty-format "^27.0.6" + parse-json "^5.2.0" + pretty-format "^29.2.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" -jest-dev-server@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/jest-dev-server/-/jest-dev-server-5.0.3.tgz#324bf6426477450ec3dae349ee9223d43f8be368" - integrity sha512-aJR3a5KdY18Lsz+VbREKwx2HM3iukiui+J9rlv9o6iYTwZCSsJazSTStcD9K1q0AIF3oA+FqLOKDyo/sc7+fJw== +jest-dev-server@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/jest-dev-server/-/jest-dev-server-6.0.3.tgz#0cde74e7138ad2f42402749b1675a4de4f41a839" + integrity sha512-joKPQQWSaBMsNNdCWvwCQvhD6ox4IH+5H5pecbRRSxiRi2BfVCGGOWQ4/MGwV1NJ9z9XEq1qy5JLYTJlv9RVzA== dependencies: - chalk "^4.1.1" + chalk "^4.1.2" cwd "^0.10.0" - find-process "^1.4.4" - prompts "^2.4.1" - spawnd "^5.0.0" + find-process "^1.4.7" + prompts "^2.4.2" + spawnd "^6.0.2" tree-kill "^1.2.2" - wait-on "^5.3.0" + wait-on "^6.0.0" -jest-diff@^26.0.0: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== +jest-diff@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.2.1.tgz#027e42f5a18b693fb2e88f81b0ccab533c08faee" + integrity sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA== dependencies: chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" + diff-sequences "^29.2.0" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" -jest-diff@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.6.tgz#4a7a19ee6f04ad70e0e3388f35829394a44c7b5e" - integrity sha512-Z1mqgkTCSYaFgwTlP/NUiRzdqgxmmhzHY1Tq17zL94morOHfHu3K4bgSgl+CR4GLhpV8VxkuOYuIWnQ9LnFqmg== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.0.6" - -jest-docblock@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" - integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== +jest-docblock@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" + integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== dependencies: detect-newline "^3.0.0" -jest-each@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.6.tgz#cee117071b04060158dc8d9a66dc50ad40ef453b" - integrity sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA== +jest-each@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.2.1.tgz#6b0a88ee85c2ba27b571a6010c2e0c674f5c9b29" + integrity sha512-sGP86H/CpWHMyK3qGIGFCgP6mt+o5tu9qG4+tobl0LNdgny0aitLXs9/EBacLy3Bwqy+v4uXClqJgASJWcruYw== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^29.2.1" chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" + jest-get-type "^29.2.0" + jest-util "^29.2.1" + pretty-format "^29.2.1" -jest-environment-jsdom@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.0.6.tgz#f66426c4c9950807d0a9f209c590ce544f73291f" - integrity sha512-FvetXg7lnXL9+78H+xUAsra3IeZRTiegA3An01cWeXBspKXUhAwMM9ycIJ4yBaR0L7HkoMPaZsozCLHh4T8fuw== +jest-environment-jsdom@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.2.2.tgz#1e2d9f1f017fbaa7362a83e670b569158b4b8527" + integrity sha512-5mNtTcky1+RYv9kxkwMwt7fkzyX4EJUarV7iI+NQLigpV4Hz4sgfOdP4kOpCHXbkRWErV7tgXoXLm2CKtucr+A== dependencies: - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" + "@jest/types" "^29.2.1" + "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^27.0.6" - jest-util "^27.0.6" - jsdom "^16.6.0" + jest-mock "^29.2.2" + jest-util "^29.2.1" + jsdom "^20.0.0" -jest-environment-node@^27.0.1, jest-environment-node@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.6.tgz#a6699b7ceb52e8d68138b9808b0c404e505f3e07" - integrity sha512-+Vi6yLrPg/qC81jfXx3IBlVnDTI6kmRr08iVa2hFCWmJt4zha0XW7ucQltCAPhSR0FEKEoJ3i+W4E6T0s9is0w== +jest-environment-node@^27.4.4: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.0.6" - jest-util "^27.0.6" + jest-mock "^27.5.1" + jest-util "^27.5.1" -jest-environment-puppeteer@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/jest-environment-puppeteer/-/jest-environment-puppeteer-5.0.4.tgz#ed64689bf200923828ca98761b4da36eb8ce31bc" - integrity sha512-wd4EDOD4QRi11QZ1IV8WsL1wlnnMUtcqtU0BNm+REzRtg78K2XHn3jS6YxGeXIOnsgrJeHxsD7DlRZ/GkFteLg== +jest-environment-node@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.2.2.tgz#a64b272773870c3a947cd338c25fd34938390bc2" + integrity sha512-B7qDxQjkIakQf+YyrqV5dICNs7tlCO55WJ4OMSXsqz1lpI/0PmeuXdx2F7eU8rnPbRkUR/fItSSUh0jvE2y/tw== dependencies: - chalk "^4.1.1" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" + "@jest/types" "^29.2.1" + "@types/node" "*" + jest-mock "^29.2.2" + jest-util "^29.2.1" + +jest-environment-puppeteer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/jest-environment-puppeteer/-/jest-environment-puppeteer-6.0.3.tgz#45734fe8389c99b1a58d49cfd2a35f0fb4bf5a59" + integrity sha512-oZE/W8swhDSZpZ+Vm1C2JyoKECsvqcFOlaf3/+G0AtizZfGNkRILdi1U7k9MHLOqGEB5sfFWXG0vpJ8bTNP1dQ== + dependencies: + chalk "^4.1.2" cwd "^0.10.0" - jest-dev-server "^5.0.3" - jest-environment-node "^27.0.1" + jest-dev-server "^6.0.3" + jest-environment-node "^27.4.4" merge-deep "^3.0.3" -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== -jest-get-type@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" - integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== - -jest-haste-map@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.6.tgz#4683a4e68f6ecaa74231679dca237279562c8dc7" - integrity sha512-4ldjPXX9h8doB2JlRzg9oAZ2p6/GpQUNAeiYXqcpmrKbP0Qev0wdZlxSMOmz8mPOEnt4h6qIzXFLDi8RScX/1w== +jest-haste-map@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.2.1.tgz#f803fec57f8075e6c55fb5cd551f99a72471c699" + integrity sha512-wF460rAFmYc6ARcCFNw4MbGYQjYkvjovb9GBT+W10Um8q5nHq98jD6fHZMDMO3tA56S8XnmNkM8GcA8diSZfnA== dependencies: - "@jest/types" "^27.0.6" - "@types/graceful-fs" "^4.1.2" + "@jest/types" "^29.2.1" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" + graceful-fs "^4.2.9" + jest-regex-util "^29.2.0" + jest-util "^29.2.1" + jest-worker "^29.2.1" micromatch "^4.0.4" - walker "^1.0.7" + walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz#fd509a9ed3d92bd6edb68a779f4738b100655b37" - integrity sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA== +jest-leak-detector@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.2.1.tgz#ec551686b7d512ec875616c2c3534298b1ffe2fc" + integrity sha512-1YvSqYoiurxKOJtySc+CGVmw/e1v4yNY27BjWTVzp0aTduQeA7pdieLiW05wTYG/twlKOp2xS/pWuikQEmklug== dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.0.6" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.0.6" - is-generator-fn "^2.0.0" - jest-each "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" - throat "^6.0.1" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" -jest-leak-detector@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.0.6.tgz#545854275f85450d4ef4b8fe305ca2a26450450f" - integrity sha512-2/d6n2wlH5zEcdctX4zdbgX8oM61tb67PQt4Xh8JFAIy6LRKUnX528HulkaG6nD5qDl5vRV1NXejCe1XRCH5gQ== - dependencies: - jest-get-type "^27.0.6" - pretty-format "^27.0.6" - -jest-matcher-utils@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz#2a8da1e86c620b39459f4352eaa255f0d43e39a9" - integrity sha512-OFgF2VCQx9vdPSYTHWJ9MzFCehs20TsyFi6bIHbk5V1u52zJOnvF0Y/65z3GLZHKRuTgVPY4Z6LVePNahaQ+tA== +jest-matcher-utils@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz#9202f8e8d3a54733266784ce7763e9a08688269c" + integrity sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw== dependencies: chalk "^4.0.0" - jest-diff "^27.0.6" - jest-get-type "^27.0.6" - pretty-format "^27.0.6" + jest-diff "^29.2.1" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" -jest-message-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.6.tgz#158bcdf4785706492d164a39abca6a14da5ab8b5" - integrity sha512-rBxIs2XK7rGy+zGxgi+UJKP6WqQ+KrBbD1YMj517HYN3v2BG66t3Xan3FWqYHKZwjdB700KiAJ+iES9a0M+ixw== +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.0.6" + "@jest/types" "^27.5.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.0.6" + pretty-format "^27.5.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.0.6.tgz#0efdd40851398307ba16778728f6d34d583e3467" - integrity sha512-lzBETUoK8cSxts2NYXSBWT+EJNzmUVtVVwS1sU9GwE1DLCfGsngg+ZVSIe0yd0ZSm+y791esiuo+WSwpXJQ5Bw== +jest-message-util@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.2.1.tgz#3a51357fbbe0cc34236f17a90d772746cf8d9193" + integrity sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw== dependencies: - "@jest/types" "^27.0.6" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.2.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.2.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" "@types/node" "*" +jest-mock@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.2.tgz#9045618b3f9d27074bbcf2d55bdca6a5e2e8bca7" + integrity sha512-1leySQxNAnivvbcx0sCB37itu8f4OX2S/+gxLAV4Z62shT4r4dTG9tACDywUAEZoLSr36aYUTsVp3WKwWt4PMQ== + dependencies: + "@jest/types" "^29.2.1" + "@types/node" "*" + jest-util "^29.2.1" + jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-puppeteer@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/jest-puppeteer/-/jest-puppeteer-5.0.4.tgz#c52e3379c11425ce974d025c1a8bf9f599da4b3f" - integrity sha512-IUOVKgHEaKsLqahZy/J/DvXB59SQx4AVpZKTRDvJzCdkvdGc3NVsNwUhovr6SK+HOK1TOiqAiXPTAPiIq3mkrg== +jest-puppeteer@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jest-puppeteer/-/jest-puppeteer-6.1.0.tgz#74449a2930c06cc130ab55d2b71dad71cf8362e1" + integrity sha512-mPNV3pKkGlwyq+7UyuDLjm8Ev4zJmkzH46jCwsOy+vsr0t+TvfPcwtVR4x+NIP2lPgYnjIlSPsnRjgkP9y95mQ== dependencies: - expect-puppeteer "^5.0.4" - jest-environment-puppeteer "^5.0.4" + expect-puppeteer "^6.1.0" + jest-environment-puppeteer "^6.0.3" -jest-regex-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" - integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== +jest-regex-util@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" + integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== -jest-resolve-dependencies@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.0.6.tgz#3e619e0ef391c3ecfcf6ef4056207a3d2be3269f" - integrity sha512-mg9x9DS3BPAREWKCAoyg3QucCr0n6S8HEEsqRCKSPjPcu9HzRILzhdzY3imsLoZWeosEbJZz6TKasveczzpJZA== +jest-resolve-dependencies@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.2.tgz#1f444766f37a25f1490b5137408b6ff746a05d64" + integrity sha512-wWOmgbkbIC2NmFsq8Lb+3EkHuW5oZfctffTGvwsA4JcJ1IRk8b2tg+hz44f0lngvRTeHvp3Kyix9ACgudHH9aQ== dependencies: - "@jest/types" "^27.0.6" - jest-regex-util "^27.0.6" - jest-snapshot "^27.0.6" + jest-regex-util "^29.2.0" + jest-snapshot "^29.2.2" -jest-resolve@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.6.tgz#e90f436dd4f8fbf53f58a91c42344864f8e55bff" - integrity sha512-yKmIgw2LgTh7uAJtzv8UFHGF7Dm7XfvOe/LQ3Txv101fLM8cx2h1QVwtSJ51Q/SCxpIiKfVn6G2jYYMDNHZteA== +jest-resolve@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.2.2.tgz#ad6436053b0638b41e12bbddde2b66e1397b35b5" + integrity sha512-3gaLpiC3kr14rJR3w7vWh0CBX2QAhfpfiQTwrFPvVrcHe5VUBtIXaR004aWE/X9B2CFrITOQAp5gxLONGrk6GA== dependencies: - "@jest/types" "^27.0.6" chalk "^4.0.0" - escalade "^3.1.1" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" + jest-haste-map "^29.2.1" jest-pnp-resolver "^1.2.2" - jest-util "^27.0.6" - jest-validate "^27.0.6" + jest-util "^29.2.1" + jest-validate "^29.2.2" resolve "^1.20.0" + resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.6.tgz#1325f45055539222bbc7256a6976e993ad2f9520" - integrity sha512-W3Bz5qAgaSChuivLn+nKOgjqNxM7O/9JOJoKDCqThPIg2sH/d4A/lzyiaFgnb9V1/w29Le11NpzTJSzga1vyYQ== +jest-runner@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.2.2.tgz#6b5302ed15eba8bf05e6b14d40f1e8d469564da3" + integrity sha512-1CpUxXDrbsfy9Hr9/1zCUUhT813kGGK//58HeIw/t8fa/DmkecEwZSWlb1N/xDKXg3uCFHQp1GCvlSClfImMxg== dependencies: - "@jest/console" "^27.0.6" - "@jest/environment" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/console" "^29.2.1" + "@jest/environment" "^29.2.2" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.0.6" - jest-environment-jsdom "^27.0.6" - jest-environment-node "^27.0.6" - jest-haste-map "^27.0.6" - jest-leak-detector "^27.0.6" - jest-message-util "^27.0.6" - jest-resolve "^27.0.6" - jest-runtime "^27.0.6" - jest-util "^27.0.6" - jest-worker "^27.0.6" - source-map-support "^0.5.6" - throat "^6.0.1" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.2.0" + jest-environment-node "^29.2.2" + jest-haste-map "^29.2.1" + jest-leak-detector "^29.2.1" + jest-message-util "^29.2.1" + jest-resolve "^29.2.2" + jest-runtime "^29.2.2" + jest-util "^29.2.1" + jest-watcher "^29.2.2" + jest-worker "^29.2.1" + p-limit "^3.1.0" + source-map-support "0.5.13" -jest-runtime@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.6.tgz#45877cfcd386afdd4f317def551fc369794c27c9" - integrity sha512-BhvHLRVfKibYyqqEFkybsznKwhrsu7AWx2F3y9G9L95VSIN3/ZZ9vBpm/XCS2bS+BWz3sSeNGLzI3TVQ0uL85Q== +jest-runtime@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.2.2.tgz#4068ee82423769a481460efd21d45a8efaa5c179" + integrity sha512-TpR1V6zRdLynckKDIQaY41od4o0xWL+KOPUCZvJK2bu5P1UXhjobt5nJ2ICNeIxgyj9NGkO0aWgDqYPVhDNKjA== dependencies: - "@jest/console" "^27.0.6" - "@jest/environment" "^27.0.6" - "@jest/fake-timers" "^27.0.6" - "@jest/globals" "^27.0.6" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/yargs" "^16.0.0" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" + "@jest/globals" "^29.2.2" + "@jest/source-map" "^29.2.0" + "@jest/test-result" "^29.2.1" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" + "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.0.6" - jest-message-util "^27.0.6" - jest-mock "^27.0.6" - jest-regex-util "^27.0.6" - jest-resolve "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - jest-validate "^27.0.6" + graceful-fs "^4.2.9" + jest-haste-map "^29.2.1" + jest-message-util "^29.2.1" + jest-mock "^29.2.2" + jest-regex-util "^29.2.0" + jest-resolve "^29.2.2" + jest-snapshot "^29.2.2" + jest-util "^29.2.1" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^16.0.3" -jest-serializer@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" - integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== +jest-snapshot@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.2.2.tgz#1016ce60297b77382386bad561107174604690c2" + integrity sha512-GfKJrpZ5SMqhli3NJ+mOspDqtZfJBryGA8RIBxF+G+WbDoC7HCqKaeAss4Z/Sab6bAW11ffasx8/vGsj83jyjA== dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.6.tgz#f4e6b208bd2e92e888344d78f0f650bcff05a4bf" - integrity sha512-NTHaz8He+ATUagUgE7C/UtFcRoHqR2Gc+KDfhQIyx+VFgwbeEMjeP+ILpUTLosZn/ZtbNdCF5LkVnN/l+V751A== - dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" - "@babel/parser" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/babel__traverse" "^7.0.4" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.2.2" + "@jest/transform" "^29.2.2" + "@jest/types" "^29.2.1" + "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.0.6" - graceful-fs "^4.2.4" - jest-diff "^27.0.6" - jest-get-type "^27.0.6" - jest-haste-map "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-resolve "^27.0.6" - jest-util "^27.0.6" + expect "^29.2.2" + graceful-fs "^4.2.9" + jest-diff "^29.2.1" + jest-get-type "^29.2.0" + jest-haste-map "^29.2.1" + jest-matcher-utils "^29.2.2" + jest-message-util "^29.2.1" + jest-util "^29.2.1" natural-compare "^1.4.0" - pretty-format "^27.0.6" - semver "^7.3.2" + pretty-format "^29.2.1" + semver "^7.3.5" -jest-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.6.tgz#e8e04eec159de2f4d5f57f795df9cdc091e50297" - integrity sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ== +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^3.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.6.tgz#930a527c7a951927df269f43b2dc23262457e2a6" - integrity sha512-yhZZOaMH3Zg6DC83n60pLmdU1DQE46DW+KLozPiPbSbPhlXXaiUTDlhHQhHFpaqIFRrInko1FHXjTRpjWRuWfA== +jest-util@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747" + integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^29.2.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.2.2.tgz#e43ce1931292dfc052562a11bc681af3805eadce" + integrity sha512-eJXATaKaSnOuxNfs8CLHgdABFgUrd0TtWS8QckiJ4L/QVDF4KVbZFBBOwCBZHOS0Rc5fOxqngXeGXE3nGQkpQA== + dependencies: + "@jest/types" "^29.2.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.0.6" + jest-get-type "^29.2.0" leven "^3.1.0" - pretty-format "^27.0.6" + pretty-format "^29.2.1" -jest-watcher@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.0.6.tgz#89526f7f9edf1eac4e4be989bcb6dec6b8878d9c" - integrity sha512-/jIoKBhAP00/iMGnTwUBLgvxkn7vsOweDrOTSPzc7X9uOyUtJIDthQBTI1EXz90bdkrxorUZVhJwiB69gcHtYQ== +jest-watcher@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.2.2.tgz#7093d4ea8177e0a0da87681a9e7b09a258b9daf7" + integrity sha512-j2otfqh7mOvMgN2WlJ0n7gIx9XCMWntheYGlBK7+5g3b1Su13/UAK7pdKGyd4kDlrLwtH2QPvRv5oNIxWvsJ1w== dependencies: - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" + "@jest/test-result" "^29.2.1" + "@jest/types" "^29.2.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.0.6" + emittery "^0.13.1" + jest-util "^29.2.1" string-length "^4.0.1" -jest-worker@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" - integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== +jest-worker@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.2.1.tgz#8ba68255438252e1674f990f0180c54dfa26a3b1" + integrity sha512-ROHTZ+oj7sBrgtv46zZ84uWky71AoYi0vEV9CdEtc1FQunsoAGe5HbQmW76nI5QWdvECVPrSi1MCVUmizSavMg== dependencies: "@types/node" "*" + jest-util "^29.2.1" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.6.tgz#10517b2a628f0409087fbf473db44777d7a04505" - integrity sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA== +jest@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.2.2.tgz#24da83cbbce514718acd698926b7679109630476" + integrity sha512-r+0zCN9kUqoON6IjDdjbrsWobXM/09Nd45kIPRD8kloaRh1z5ZCMdVsgLXGxmlL7UpAJsvCYOQNO+NjvG/gqiQ== dependencies: - "@jest/core" "^27.0.6" + "@jest/core" "^29.2.2" + "@jest/types" "^29.2.1" import-local "^3.0.2" - jest-cli "^27.0.6" + jest-cli "^29.2.2" -joi@^17.3.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20" - integrity sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg== +joi@^17.6.0: + version "17.6.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" + "@sideway/address" "^4.1.3" "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" -js-base64@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== +js-base64@*, js-base64@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.2.tgz#816d11d81a8aff241603d19ce5761e13e41d7745" + integrity sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ== js-cookie@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -7057,38 +7938,37 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^16.6.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" - integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg== +jsdom@^20.0.0: + version "20.0.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.2.tgz#65ccbed81d5e877c433f353c58bb91ff374127db" + integrity sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA== dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" + abab "^2.0.6" + acorn "^8.8.0" + acorn-globals "^7.0.0" + cssom "^0.5.0" cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" + data-urls "^3.0.2" + decimal.js "^10.4.1" + domexception "^4.0.0" escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" + nwsapi "^2.2.2" + parse5 "^7.1.1" + saxes "^6.0.0" symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.5" - xml-name-validator "^3.0.0" + tough-cookie "^4.1.2" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.9.0" + xml-name-validator "^4.0.0" jsesc@^2.5.1: version "2.5.2" @@ -7100,29 +7980,29 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= +json-buffer@3.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-loader@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== -json-merge-patch@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-merge-patch/-/json-merge-patch-0.2.3.tgz#fa2c6b5af87da77bae2966a589d52e23ed81fe40" - integrity sha1-+ixrWvh9p3uuKWalidUuI+2B/kA= +json-merge-patch@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-merge-patch/-/json-merge-patch-1.0.2.tgz#c4626811943b2f362f8607ae8f03d528875465b0" + integrity sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg== dependencies: - deep-equal "^1.0.0" + fast-deep-equal "^3.1.3" json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: 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== @@ -7132,6 +8012,11 @@ json-schema-traverse@^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-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -7154,13 +8039,6 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" - json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" @@ -7168,6 +8046,11 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -7203,6 +8086,14 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" + integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== + dependencies: + array-includes "^3.1.4" + object.assign "^4.1.2" + jszip@^3.2.2: version "3.7.1" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9" @@ -7230,12 +8121,13 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== +keyv@^4.0.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.3.2.tgz#e839df676a0c7ee594c8835e7c1c83742558e5c2" + integrity sha512-kn8WmodVBe12lmHpA6W8OY7SNh6wVR+Z+wZESF4iF5FCazaVXGWOtnbnvX0tMQ1bO+/TmOD9LziuYMvrIIs0xw== dependencies: - json-buffer "3.0.0" + compress-brotli "^1.3.8" + json-buffer "3.0.1" kind-of@^2.0.1: version "2.0.1" @@ -7273,12 +8165,12 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== dependencies: - package-json "^6.3.0" + package-json "^8.1.0" lazy-cache@^0.2.3: version "0.2.7" @@ -7320,7 +8212,7 @@ levn@^0.4.1: levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -7340,11 +8232,54 @@ lighthouse-logger@^1.0.0: debug "^2.6.8" marky "^1.2.0" +lilconfig@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +lines-and-columns@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + +lint-staged@^13.0.3: + version "13.0.3" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.0.3.tgz#d7cdf03a3830b327a2b63c6aec953d71d9dc48c6" + integrity sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug== + dependencies: + cli-truncate "^3.1.0" + colorette "^2.0.17" + commander "^9.3.0" + debug "^4.3.4" + execa "^6.1.0" + lilconfig "2.0.5" + listr2 "^4.0.5" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-inspect "^1.12.2" + pidtree "^0.6.0" + string-argv "^0.3.1" + yaml "^2.1.1" + +listr2@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" + integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.5" + through "^2.3.8" + wrap-ansi "^7.0.0" + loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -7359,6 +8294,15 @@ loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2. emojis-list "^2.0.0" json5 "^1.0.1" +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -7374,6 +8318,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -7414,21 +8363,21 @@ lodash.once@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.4: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: 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" + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -7436,16 +8385,16 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +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@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -7460,7 +8409,12 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^2.0.0: +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== + +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -7468,7 +8422,7 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -7480,12 +8434,12 @@ make-error@^1.3.2: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - tmpl "1.0.x" + tmpl "1.0.5" mamacro@^0.0.3: version "0.0.3" @@ -7525,10 +8479,10 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== media-typer@0.3.0: version "0.3.0" @@ -7553,6 +8507,13 @@ mem@^5.0.0: mimic-fn "^2.1.0" p-is-promise "^2.1.0" +memfs@^3.1.2: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== + dependencies: + fs-monkey "1.0.3" + "memoize-one@>=3.1.1 <6": version "5.1.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" @@ -7585,6 +8546,11 @@ merge-stream@^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== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -7617,6 +8583,14 @@ micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" +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" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -7652,11 +8626,21 @@ mimic-fn@^2.0.0, mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: +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@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +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== + mini-css-extract-plugin@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" @@ -7672,7 +8656,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: +minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= @@ -7684,10 +8668,19 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= +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.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" minimist@^1.2.0: version "1.2.0" @@ -7699,20 +8692,25 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.2.1, minipass@^2.6.0, minipass@^2.6.4: - version "2.6.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.6.5.tgz#1c245f9f2897f70fd4a219066261ce6c29f80b18" - integrity sha512-ewSKOPFH9blOLXx0YSE+mbrNMBFPS+11a2b03QZ+P4LVrUHW/GAlqeYC7DBknDyMWkHzrzTpDhUvy7MUxqyrPA== +minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.2.tgz#6f0ccc82fa53e1bf2ff145f220d2da9fa6e3a166" - integrity sha512-hR3At21uSrsjjDTWrbu0IMLTpnkpv8IIMFDFaoz43Tmu4LkmAXfH44vNNzpTnf+OAQQCHrb91y/wc2J4x5XgSQ== +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" @@ -7751,24 +8749,17 @@ mkdirp@1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= +mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - minimist "0.0.8" - -mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" + minimist "^1.2.6" moment@^2.19.3: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + version "2.29.3" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" + integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== move-concurrently@^1.0.1: version "1.0.1" @@ -7797,15 +8788,14 @@ ms@2.1.2, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -multimatch@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== +multimatch@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-6.0.0.tgz#c72a9bddbc94baa4727efd613b5d22a1fe4d6ee3" + integrity sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ== dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" + "@types/minimatch" "^3.0.5" + array-differ "^4.0.0" + array-union "^3.0.1" minimatch "^3.0.4" mv@~2: @@ -7831,24 +8821,24 @@ nan@^2.12.1, nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== -nano-css@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.2.1.tgz#73b8470fa40b028a134d3393ae36bbb34b9fa332" - integrity sha512-T54okxMAha0+de+W8o3qFtuWhTxYvqQh2ku1cYEqTTP9mR62nWV2lLK9qRuAGWmoaYWhU7K4evT9Lc1iF65wuw== +nano-css@^5.3.1: + version "5.3.4" + resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.4.tgz#40af6a83a76f84204f346e8ccaa9169cdae9167b" + integrity sha512-wfcviJB6NOxDIDfr7RFn/GlaN7I/Bhe4d39ZRCJ3xvZX60LVe2qZ+rDqM49nm4YT81gAjzS+ZklhKP/Gnfnubg== dependencies: - css-tree "^1.0.0-alpha.28" - csstype "^2.5.5" - fastest-stable-stringify "^1.0.1" - inline-style-prefixer "^4.0.0" - rtl-css-js "^1.9.0" - sourcemap-codec "^1.4.1" - stacktrace-js "^2.0.0" - stylis "3.5.0" + css-tree "^1.1.2" + csstype "^3.0.6" + fastest-stable-stringify "^2.0.2" + inline-style-prefixer "^6.0.0" + rtl-css-js "^1.14.0" + sourcemap-codec "^1.4.8" + stacktrace-js "^2.0.2" + stylis "^4.0.6" -nanoid@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557" - integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA== +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== nanomatch@^1.2.9: version "1.2.13" @@ -7906,10 +8896,10 @@ node-fetch@2.6.1, node-fetch@^2.6.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-int64@^0.4.0: version "0.4.0" @@ -7945,21 +8935,16 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-9.0.0.tgz#46c5bbecbb796d4a803f646cea5bc91403f2ff38" - integrity sha512-SkwNwGnMMlSPrcoeH4CSo9XyWe72acAHEJGDdPdB+CyBVHsIYaTQ4U/1wk3URsyzC75xZLg2vzU2YaALlqDF1Q== +node-notifier@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-10.0.1.tgz#0e82014a15a8456c4cfcdb25858750399ae5f1c7" + integrity sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ== dependencies: growly "^1.3.0" is-wsl "^2.2.0" - semver "^7.3.2" + semver "^7.3.5" shellwords "^0.1.1" - uuid "^8.3.0" + uuid "^8.3.2" which "^2.0.2" node-pre-gyp@^0.12.0: @@ -7978,17 +8963,15 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.29: - version "1.1.32" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.32.tgz#485b35c1bf9b4d8baa105d782f8ca731e518276e" - integrity sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A== - dependencies: - semver "^5.3.0" +node-releases@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" + integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== -node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== nopt@^4.0.1: version "4.0.1" @@ -8020,10 +9003,10 @@ normalize-url@1.9.1: query-string "^4.1.0" sort-keys "^1.0.0" -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-bundled@^1.0.1: version "1.0.6" @@ -8052,6 +9035,13 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +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" + npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -8079,10 +9069,10 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== +nwsapi@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== oauth-sign@~0.9.0: version "0.9.0" @@ -8103,10 +9093,15 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + +object-inspect@^1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -8130,6 +9125,42 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -8137,10 +9168,19 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -on-exit-leak-free@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" - integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +on-exit-leak-free@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz#5c703c968f7e7f851885f6459bf8a8a57edc9cc4" + integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== on-finished@~2.3.0: version "2.3.0" @@ -8170,13 +9210,21 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== +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: - is-docker "^2.0.0" - is-wsl "^2.1.1" + mimic-fn "^4.0.0" + +open@8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" opener@^1.5.1: version "1.5.1" @@ -8253,30 +9301,16 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -output-file-sync@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" - integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== - dependencies: - graceful-fs "^4.1.11" - is-plain-obj "^1.1.0" - mkdirp "^0.5.1" - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +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== p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -8294,6 +9328,13 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -8308,20 +9349,27 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +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: + aggregate-error "^3.0.0" + 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== -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== +package-json@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.0.tgz#2a22806f1ed7c786c8e6ff26cfe20003bf4c6850" + integrity sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg== dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" pako@~1.0.2, pako@~1.0.5: version "1.0.10" @@ -8356,7 +9404,17 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-json@5.2.0: +parse-json@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-6.0.2.tgz#6bf79c201351cc12d5d66eba48d5a097c13dc200" + integrity sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA== + dependencies: + "@babel/code-frame" "^7.16.0" + error-ex "^1.3.2" + json-parse-even-better-errors "^2.3.1" + lines-and-columns "^2.0.2" + +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== @@ -8371,17 +9429,27 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse5-htmlparser2-tree-adapter@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: - parse5 "^6.0.1" + domhandler "^5.0.2" + parse5 "^7.0.0" -parse5@6.0.1, parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +parse5@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.0.0.tgz#51f74a5257f5fcc536389e8c2d0b3802e1bfa91a" + integrity sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g== + dependencies: + entities "^4.3.0" + +parse5@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746" + integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg== + dependencies: + entities "^4.4.0" parseurl@~1.3.3: version "1.3.3" @@ -8428,10 +9496,15 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -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-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, 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-to-regexp@0.1.7: version "0.1.7" @@ -8445,6 +9518,11 @@ path-type@^3.0.0: dependencies: 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== + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -8466,6 +9544,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -8476,11 +9559,21 @@ picomatch@^2.0.4, picomatch@^2.0.7: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== +picomatch@^2.2.1, picomatch@^2.3.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== + picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +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@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -8491,48 +9584,47 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pino-abstract-transport@v0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" - integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== +pino-abstract-transport@v1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== dependencies: - duplexify "^4.1.2" + readable-stream "^4.0.0" split2 "^4.0.0" -pino-std-serializers@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" - integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== +pino-std-serializers@^5.0.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-5.6.0.tgz#31b141155d6520967c5ec72944d08fb45c490fd3" + integrity sha512-VdUXCw8gO+xhir7sFuoYSjTnzB+TMDGxhAC/ph3YS3sdHnXNdsK0wMtADNUltfeGkn2KDxEM21fnjF3RwXyC8A== -pino@7.9.1: - version "7.9.1" - resolved "https://registry.yarnpkg.com/pino/-/pino-7.9.1.tgz#7e6f401cac6e80b4eaee908ab90a05e48455cec2" - integrity sha512-28+D7c5orCoScdcWtiPXrCA9tdVosBWrYQgVtPdYTyiuTt6u/+rbEtpJR+dtVG8k1flhv0H2f0XSkgGm+TdjqQ== +pino@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-8.1.0.tgz#6211c5e77d813624f6707ec4750f4fbf778d5621" + integrity sha512-53jlxs+02UNTtF1XwVWfa0dHipBiM5GK73XhkHn8M2hUl9y3L94dNwB8BwQhpd5WdHjBkyJiO7v0LRt4SGgsPg== dependencies: - fast-redact "^3.0.0" - on-exit-leak-free "^0.2.0" - pino-abstract-transport v0.5.0 - pino-std-serializers "^4.0.0" - process-warning "^1.0.0" + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport v1.0.0 + pino-std-serializers "^5.0.0" + process-warning "^2.0.0" quick-format-unescaped "^4.0.3" real-require "^0.1.0" - safe-stable-stringify "^2.1.0" - sonic-boom "^2.2.1" - thread-stream "^0.13.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^3.0.0" + thread-stream "^1.0.0" -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pjax-api@^3.33.0: version "3.33.0" resolved "https://registry.yarnpkg.com/pjax-api/-/pjax-api-3.33.0.tgz#90e1c4d725b51d7efe17514a534f5329dfc2b15e" integrity sha512-E0o1NNa2ebOeKICq5efWcc9Od6CtKC1jiUPl4MWpNEuAOpEQ3381TQq8/nSyw4+biqBK5JQdb6+i0wVGhIHnJQ== -pkg-dir@4.2.0, pkg-dir@^4.2.0: +pkg-dir@4.2.0, pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -8546,13 +9638,6 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -polished@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/polished/-/polished-3.5.2.tgz#ca132b8cd68f7ffa95ae9d423f03e7a14fda1062" - integrity sha512-vWoRDg3gY5RQBtUfcj9MRN10VCIf4EkdUikGxyXItg2Hnwk+eIVtdBiLajN0ldFeT3Vq4r/QNbjrQdhqBKrTug== - dependencies: - "@babel/runtime" "^7.8.7" - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -8605,27 +9690,26 @@ postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== postcss-value-parser@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.12: - version "8.4.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" - integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== +postcss@8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== dependencies: - nanoid "^3.3.1" + nanoid "^3.3.4" picocolors "^1.0.0" source-map-js "^1.0.2" postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.18.tgz#4b9cda95ae6c069c67a4d933029eddd4838ac233" - integrity sha512-/7g1QXXgegpF+9GJj4iN7ChGF40sYuGYJ8WZu8DZWnmhQ/G36hfdk3q9LBJmoK+lZ+yzZ5KYpOoxq7LF1BxE8g== + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== dependencies: - chalk "^2.4.2" + picocolors "^0.2.1" source-map "^0.6.1" - supports-color "^6.1.0" prelude-ls@^1.2.1: version "1.2.1" @@ -8635,72 +9719,45 @@ prelude-ls@^1.2.1: 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= + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prepend-http@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= +prettier@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -pretty-format@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== +pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^25.1.0: - version "25.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8" - integrity sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ== - dependencies: - "@jest/types" "^25.1.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.0.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f" - integrity sha512-8tGD7gBIENgzqA+UBzObyWqQ5B778VIFZA/S66cclyd5YkFLYs2Js7gxDKf0MXtTc9zcS7t1xhdfcElJ3YIvkQ== - dependencies: - "@jest/types" "^27.0.6" - ansi-regex "^5.0.0" + ansi-regex "^5.0.1" ansi-styles "^5.0.0" react-is "^17.0.1" -private@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== +pretty-format@^29.0.0, pretty-format@^29.2.1: + version "29.2.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.1.tgz#86e7748fe8bbc96a6a4e04fa99172630907a9611" + integrity sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA== + dependencies: + "@jest/schemas" "^29.0.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-warning@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" - integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +process-warning@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.0.0.tgz#341dbeaac985b90a04ebcd844d50097c7737b2ee" + integrity sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww== process@^0.11.10: version "0.11.10" @@ -8722,10 +9779,10 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-toolbox@0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/promise-toolbox/-/promise-toolbox-0.20.0.tgz#af04d7338038c2362b8fb7c27546c57d893bf562" - integrity sha512-VXF6waqUheD19yOU7zxsXhw/HCKlXqXwUc4jM8mchtBqZFNA+GHA7dbJsQDLHP4IUpQuTLpCQRd0lCr5z4CqXQ== +promise-toolbox@0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/promise-toolbox/-/promise-toolbox-0.21.0.tgz#6919876f9dea375f01b4ddaec4206db83cb0aa55" + integrity sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg== dependencies: make-error "^1.3.2" @@ -8737,22 +9794,27 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" -prompts@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" - react-is "^16.8.1" + react-is "^16.13.1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== proxy-addr@~2.0.5: version "2.0.5" @@ -8772,11 +9834,16 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -8829,12 +9896,12 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== +pupa@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" + integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== dependencies: - escape-goat "^2.0.0" + escape-goat "^4.0.0" puppeteer@^10.1.0: version "10.1.0" @@ -8882,6 +9949,16 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +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== + queue@6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" @@ -8894,6 +9971,11 @@ quick-format-unescaped@^4.0.3: resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== +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== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -8932,7 +10014,7 @@ raw-loader@^4.0.0: loader-utils "^1.2.3" schema-utils "^2.5.0" -rc@^1.2.7, rc@^1.2.8: +rc@1.2.8, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -8942,121 +10024,83 @@ rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-clientside-effect@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz#6212fb0e07b204e714581dd51992603d1accc837" - integrity sha512-nRmoyxeok5PBO6ytPvSjKp9xwXg9xagoTK1mMjwnQxqM9Hd7MNPl+LS1bOSOe+CV2+4fnEquc7H/S8QD3q697A== - dependencies: - "@babel/runtime" "^7.0.0" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== +react-dom@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.1.0.tgz#7f6dd84b706408adde05e1df575b3a024d7e8a2f" + integrity sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" + scheduler "^0.22.0" -react-focus-lock@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.2.1.tgz#1d12887416925dc53481914b7cedd39494a3b24a" - integrity sha512-47g0xYcCTZccdzKRGufepY8oZ3W1Qg+2hn6u9SHZ0zUB6uz/4K4xJe7yYFNZ1qT6m+2JDm82F6QgKeBTbjW4PQ== - dependencies: - "@babel/runtime" "^7.0.0" - focus-lock "^0.6.6" - prop-types "^15.6.2" - react-clientside-effect "^1.2.2" - use-callback-ref "^1.2.1" - use-sidecar "^1.0.1" +react-iifc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/react-iifc/-/react-iifc-1.2.0.tgz#b63d27c1d2e80da1577c908f493659a9ea11083a" + integrity sha512-CvOzw8UEDoqgXNiChqgsEi5xCimym6q44kq6ULYqhDqgBtnJ4ajsPM7ucXkT7h4NYfG9vVn7l+xllGj8u+Jv3Q== -react-is@16.10.2: - version "16.10.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab" - integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA== +react-intersection-observer@9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.4.0.tgz#f6b6e616e625f9bf255857c5cba9dbf7b1825ec7" + integrity sha512-v0403CmomOVlzhqFXlzOxg0ziLcVq8mfbP0AwAcEQWgZmR2OulOT79Ikznw4UlB3N+jlUYqLMe4SDHUOyp0t2A== -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.4: +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^16.7.0: version "16.13.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== -react-is@^16.8.1: - version "16.9.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" - integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== - react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-remove-scroll-bar@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.0.0.tgz#94437a7f3dbda99817ff64b928ee206e298ba157" - integrity sha512-HSdWZ+6vV6X1btLRhQlIcFulaMePCyg0Un2oXMmDdq8lK9KPUMSnWYINYWVCdgT35em9hiUaR8frBN1PYYLLpQ== - dependencies: - react-style-singleton "^2.0.0" - tslib "^1.0.0" - -react-remove-scroll@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.2.0.tgz#f42e6a4791ebfcce2c96f970d24deb1399fa9550" - integrity sha512-bT29xAkNuhS2tnsxhLNJrmmb6Rn8VsnlOfSoRaKdKi90DbhRcQfJ9vHG1TtgfkCP+rx059vCGIScPZaCWsyIKA== - dependencies: - react-remove-scroll-bar "^2.0.0" - react-style-singleton "^2.0.0" - tslib "^1.0.0" - use-callback-ref "^1.2.1" - use-sidecar "^1.0.1" - -react-style-singleton@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.0.0.tgz#fdc9ff3a82674c256f0033d140b7b1d9d37e7f17" - integrity sha512-1Kw9G/b7EqLspjtiKsC9jtoqkx+RAti+8PmBe47ioKTcdhB3gtaKw2Lc3Hsud/VrXh+QECZKmr2yDCwR7ObNtA== - dependencies: - invariant "^2.2.4" - tslib "^1.0.0" +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== react-universal-interface@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== -react-use@^15.3.0: - version "15.3.8" - resolved "https://registry.yarnpkg.com/react-use/-/react-use-15.3.8.tgz#ca839ac7fb3d696e5ccbeabbc8dadc2698969d30" - integrity sha512-GeGcrmGuUvZrY5wER3Lnph9DSYhZt5nEjped4eKDq8BRGr2CnLf9bDQWG9RFc7oCPphnscUUdOovzq0E5F2c6Q== +react-use@^17.3.2: + version "17.3.2" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.3.2.tgz#448abf515f47c41c32455024db28167cb6e53be8" + integrity sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw== dependencies: - "@types/js-cookie" "2.2.6" - "@xobotyi/scrollbar-width" "1.9.5" - copy-to-clipboard "^3.2.0" + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + copy-to-clipboard "^3.3.1" fast-deep-equal "^3.1.3" fast-shallow-equal "^1.0.0" js-cookie "^2.2.1" - nano-css "^5.2.1" + nano-css "^5.3.1" react-universal-interface "^0.6.2" resize-observer-polyfill "^1.5.1" - screenfull "^5.0.0" + screenfull "^5.1.0" set-harmonic-interval "^1.0.1" - throttle-debounce "^2.1.0" + throttle-debounce "^3.0.1" ts-easing "^0.2.0" - tslib "^2.0.0" + tslib "^2.1.0" -react-window@^1.8.5: - version "1.8.5" - resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.5.tgz#a56b39307e79979721021f5d06a67742ecca52d1" - integrity sha512-HeTwlNa37AFa8MDZFZOKcNEkuF2YflA0hpGPiTT9vR7OawEt+GZbfM6wqkBahD3D3pUjIabQYzsnY/BSJbgq6Q== +react-window@^1.8.7: + version "1.8.7" + resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.7.tgz#5e9fd0d23f48f432d7022cdb327219353a15f0d4" + integrity sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA== dependencies: "@babel/runtime" "^7.0.0" memoize-one ">=3.1.1 <6" -react@^16.10.2, react@^17, react@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== +react@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" + integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" @@ -9089,6 +10133,13 @@ readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.1.0.tgz#280d0a29f559d3fb684a277254e02b6f61ae0631" + integrity sha512-sVisi3+P2lJ2t0BPbpK629j8wRW06yKGJUcaLAGXPAUhyUxVJm7VsCTit1PFgT4JHUDMrGNR+ZjSKpzGaRF3zw== + dependencies: + abort-controller "^3.0.0" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -9105,11 +10156,25 @@ readdirp@~3.3.0: dependencies: picomatch "^2.0.7" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + real-require@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" @@ -9122,6 +10187,11 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -9137,12 +10207,12 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91" integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g== -regenerator-transform@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" - integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: - private "^0.1.6" + "@babel/runtime" "^7.8.4" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -9152,17 +10222,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.13.tgz#5b19ab9377edc68bc3679256840bb29afc158d7f" - integrity sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw== - -regexp.prototype.flags@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" - integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA== +regexp.prototype.flags@^1.4.1: + 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: - define-properties "^1.1.2" + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" regexpp@^3.2.0: version "3.2.0" @@ -9181,26 +10248,42 @@ regexpu-core@^4.5.4: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" -registry-auth-token@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" - integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: - rc "^1.2.8" - safe-buffer "^5.0.1" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +registry-auth-token@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.1.tgz#5e6cd106e6c251135a046650c58476fc03e92833" + integrity sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA== dependencies: - rc "^1.2.8" + "@pnpm/npm-conf" "^1.0.4" + +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" regjsgen@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + regjsparser@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" @@ -9208,6 +10291,13 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + relaxed-json@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/relaxed-json/-/relaxed-json-1.0.3.tgz#eb2101ae0ee60e82267d95ed0ddf19a3604b8c1e" @@ -9262,16 +10352,31 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + resize-observer-polyfill@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== +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== + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -9322,6 +10427,20 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.14.2: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" @@ -9330,25 +10449,44 @@ resolve@^1.20.0: is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@^1.3.2: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== dependencies: + is-core-module "^2.2.0" path-parse "^1.0.6" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= +responselike@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" + integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== dependencies: - lowercase-keys "^1.0.0" + lowercase-keys "^2.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +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== + rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -9378,13 +10516,20 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rtl-css-js@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.13.1.tgz#80deabf6e8f36d6767d495cd3eb60fecb20c67e1" - integrity sha512-jgkIDj6Xi25kAEm5oYM3ZMFiOQhpLEcXi2LY/6bVr91cVz73hciHKneL5AMVPxOcks/JuizSaaNsvNRkeAWe3w== +rtl-css-js@^1.14.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.15.0.tgz#680ed816e570a9ebccba9e1cd0f202c6a8bb2dc0" + integrity sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew== dependencies: "@babel/runtime" "^7.1.2" +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" + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -9392,22 +10537,29 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +rxjs@^7.5.4: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== dependencies: - tslib "^1.9.0" + tslib "^2.1.0" + +rxjs@^7.5.5: + version "7.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" + integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== + dependencies: + tslib "^2.1.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, 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== safe-json-stringify@~1: version "1.2.0" @@ -9421,12 +10573,12 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safe-stable-stringify@^2.1.0: +safe-stable-stringify@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", 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== @@ -9454,20 +10606,28 @@ sax@>=0.6.0, sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: xmlchars "^2.2.0" -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== +scheduler@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8" + integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" schema-utils@^1.0.0: version "1.0.0" @@ -9494,35 +10654,56 @@ schema-utils@^2.6.1: ajv "^6.10.2" ajv-keywords "^3.4.1" -screenfull@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.0.tgz#5c2010c0e84fd4157bf852877698f90b8cbe96f6" - integrity sha512-yShzhaIoE9OtOhWVyBBffA6V98CDCoyHTsp8228blmqYy1Z5bddzE/4FPiJKlr8DVR4VBiiUyfPzIQPIYDkeMA== - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: - semver "^6.3.0" + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" -semver@7.3.5, semver@^7.3.2, semver@^7.3.4: +screenfull@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" + integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== + +semver-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" + integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== + dependencies: + semver "^7.3.5" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.7, semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.2: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -9656,13 +10837,22 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== -sign-addon@3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/sign-addon/-/sign-addon-3.11.0.tgz#8c4e688ae8053b8e24ab03aa59e651f1bf66a9fb" - integrity sha512-fcK2WzkMb8e8E9kvuccy+mrBTT81iR+1CowHLU594Elr4E9E9zZFr3itGlL0OoXcRouKmvt7rpXzoARu++tXRQ== +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: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +sign-addon@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/sign-addon/-/sign-addon-5.0.0.tgz#aa7feaa2b74ba0c89f70b0928db6e8fc4296771e" + integrity sha512-qO3YYs8/kV7SyY8Kqmk1TW30FAVnvxTxUvncnK82H1+k4AkhVw33owReKyzoiHfNpgv1ugmgxA9jEsAIWqVCCg== dependencies: common-tags "1.8.2" - core-js "3.21.0" + core-js "3.22.8" deepcopy "2.1.0" es6-error "4.1.1" es6-promisify "7.0.0" @@ -9682,6 +10872,11 @@ signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.6, 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== + sisteransi@^1.0.4, sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -9702,6 +10897,32 @@ slash@^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: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +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: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +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 "^6.0.0" + is-fullwidth-code-point "^4.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -9732,10 +10953,10 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sonic-boom@^2.2.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.6.0.tgz#8786fc78be07c18a90381acd816d1d4afe3537a2" - integrity sha512-6xYZFRmDEtxGqfOKcDQ4cPLrNa0SPEDI+wlzDAHowXE6YV42NeXqg9mP2KkiM8JVu3lHfZ2iQKYlGOz+kTpphg== +sonic-boom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.0.0.tgz#235119a6606e2646919a27d83ef687f2ba6c0fba" + integrity sha512-p5DiZOZHbJ2ZO5MADczp5qrfOd3W5Vr2vHxfCpe7G4AzPwVOweIjbfgku8wSQUuk+Y5Yuo8W7JqRe6XKmKistg== dependencies: atomic-sleep "^1.0.0" @@ -9767,10 +10988,10 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== +source-map-support@0.5.13, source-map-support@~0.5.12: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -9783,22 +11004,6 @@ source-map-support@0.5.21: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.6: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@~0.5.12: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -9819,15 +11024,10 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.1: - version "1.4.6" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9" - integrity sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== spawn-sync@1.0.15: version "1.0.15" @@ -9837,15 +11037,14 @@ spawn-sync@1.0.15: concat-stream "^1.4.7" os-shim "^0.1.2" -spawnd@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-5.0.0.tgz#ea72200bdc468998e84e1c3e7b914ce85fc1c32c" - integrity sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA== +spawnd@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-6.0.2.tgz#a2631cab24ce5e3525e720af4058f10a0905147c" + integrity sha512-+YJtx0dvy2wt304MrHD//tASc84zinBUYU1jacPBzrjhZUd7RsDo25krxr4HUHAQzEQFuMAs4/p+yLYU5ciZ1w== dependencies: exit "^0.1.2" - signal-exit "^3.0.3" + signal-exit "^3.0.6" tree-kill "^1.2.2" - wait-port "^0.2.9" split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -9859,10 +11058,10 @@ split2@^4.0.0: resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== -split@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= +split@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" @@ -9887,18 +11086,18 @@ sshpk@^1.7.0: tweetnacl "~0.14.0" ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: figgy-pudding "^3.5.1" -stack-generator@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.4.tgz#027513eab2b195bbb43b9c8360ba2dd0ab54de09" - integrity sha512-ha1gosTNcgxwzo9uKTQ8zZ49aUp5FIUW58YHFxCqaAHtE0XqBg0chGFYA1MfmW//x1KWq3F4G7Ug7bJh4RiRtg== +stack-generator@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.5.tgz#fb00e5b4ee97de603e0773ea78ce944d81596c36" + integrity sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q== dependencies: - stackframe "^1.1.0" + stackframe "^1.1.1" stack-utils@^2.0.3: version "2.0.3" @@ -9907,27 +11106,27 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -stackframe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.1.0.tgz#e3fc2eb912259479c9822f7d1f1ff365bd5cbc83" - integrity sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg== +stackframe@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" + integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== -stacktrace-gps@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.3.tgz#b89f84cc13bb925b96607e737b617c8715facf57" - integrity sha512-51Rr7dXkyFUKNmhY/vqZWK+EvdsfFSRiQVtgHTFlAdNIYaDD7bVh21yBHXaNWAvTD+w+QSjxHg7/v6Tz4veExA== +stacktrace-gps@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz#7688dc2fc09ffb3a13165ebe0dbcaf41bcf0c69a" + integrity sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg== dependencies: source-map "0.5.6" - stackframe "^1.1.0" + stackframe "^1.1.1" -stacktrace-js@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.1.tgz#ebdb0e9a16e6f171f96ca7878404e7f15c3d42ba" - integrity sha512-13oDNgBSeWtdGa4/2BycNyKqe+VktCoJ8VLx4pDoJkwGGJVtiHdfMOAj3aW9xTi8oR2v34z9IcvfCvT6XNdNAw== +stacktrace-js@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" + integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== dependencies: - error-stack-parser "^2.0.4" - stack-generator "^2.0.4" - stacktrace-gps "^3.0.3" + error-stack-parser "^2.0.6" + stack-generator "^2.0.5" + stacktrace-gps "^3.0.4" static-extend@^0.1.1: version "0.1.2" @@ -9995,6 +11194,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +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-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -10029,7 +11233,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -10038,7 +11242,7 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string-width@^4.2.2, string-width@^4.2.3: +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== @@ -10047,6 +11251,47 @@ string-width@^4.2.2, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +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: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.6: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -10096,6 +11341,13 @@ strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +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-buf@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz#ff9c223937f8e7154b77e9de9bde094186885c15" @@ -10111,7 +11363,12 @@ strip-bom-stream@4.0.0: first-chunk-stream "^3.0.0" strip-bom-buf "^2.0.0" -strip-bom@4.0.0, strip-bom@^4.0.0: +strip-bom@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-5.0.0.tgz#88d2e135d154dca7a5e06b4a4ba9653b6bdc0dd2" + integrity sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A== + +strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== @@ -10126,7 +11383,17 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +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-json-comments@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-4.0.0.tgz#6fd3a79f1b956905483769b0bf66598b8f87da50" + integrity sha512-LzWcbfMbAsEDTRmhjWIioe8GcDRl0fa35YMXFoJKDdiD/quGFmjJjdgPjFJJNwCMaLyQqFIDqCdHD2V4HfLgYA== + +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== @@ -10136,42 +11403,23 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -styled-components@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.2.0.tgz#6dcb5aa8a629c84b8d5ab34b7167e3e0c6f7ed74" - integrity sha512-9qE8Vgp8C5cpGAIdFaQVAl89Zgx1TDM4Yf4tlHbO9cPijtpSXTMLHy9lmP0lb+yImhgPFb1AmZ1qMUubmg3HLg== +styled-components@^5.3.5: + version "5.3.5" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.5.tgz#a750a398d01f1ca73af16a241dec3da6deae5ec4" + integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^0.8.8" + "@emotion/is-prop-valid" "^1.1.0" "@emotion/stylis" "^0.8.4" "@emotion/unitless" "^0.7.4" - babel-plugin-styled-components ">= 1" + babel-plugin-styled-components ">= 1.12.0" css-to-react-native "^3.0.0" hoist-non-react-statics "^3.0.0" shallowequal "^1.1.0" supports-color "^5.5.0" -styled-system@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/styled-system/-/styled-system-5.1.2.tgz#26a105a4b9110874b5857bb34de20dada8695130" - integrity sha512-gbiohoqYYtvg9Q6nA3EagQSouHI9ylmcKUHHaUvCQrPpnPeJlUJAvj9vfyDgsJjw/oBogggfojF1X9EShfPffg== - dependencies: - "@styled-system/background" "^5.1.2" - "@styled-system/border" "^5.1.2" - "@styled-system/color" "^5.1.2" - "@styled-system/core" "^5.1.2" - "@styled-system/flexbox" "^5.1.2" - "@styled-system/grid" "^5.1.2" - "@styled-system/layout" "^5.1.2" - "@styled-system/position" "^5.1.2" - "@styled-system/shadow" "^5.1.2" - "@styled-system/space" "^5.1.2" - "@styled-system/typography" "^5.1.2" - "@styled-system/variant" "^5.1.2" - object-assign "^4.1.1" - -styled-system@^5.1.4: +styled-system@^5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/styled-system/-/styled-system-5.1.5.tgz#e362d73e1dbb5641a2fd749a6eba1263dc85075e" integrity sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A== @@ -10190,12 +11438,12 @@ styled-system@^5.1.4: "@styled-system/variant" "^5.1.5" object-assign "^4.1.1" -stylis@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.0.tgz#016fa239663d77f868fef5b67cf201c4b7c701e1" - integrity sha512-pP7yXN6dwMzAR29Q0mBrabPCe0/mNO1MSr93bhay+hcZondvMMTpeGyd8nbhYJdyperNT2DRxONQuUGcJr5iPw== +stylis@^4.0.6: + version "4.1.1" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.1.tgz#e46c6a9bbf7c58db1e65bb730be157311ae1fe12" + integrity sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ== -supports-color@6.1.0, supports-color@^6.1.0: +supports-color@6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== @@ -10214,20 +11462,13 @@ supports-color@^5.3.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0: +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: has-flag "^4.0.0" -supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - supports-color@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -10235,13 +11476,10 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" +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== symbol-tree@^3.2.4: version "3.2.4" @@ -10275,25 +11513,17 @@ tar-stream@^2.0.0: readable-stream "^3.1.1" tar@^4: - version "4.4.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.11.tgz#7ac09801445a3cf74445ed27499136b5240ffb73" - integrity sha512-iI4zh3ktLJKaDNZKZc+fUONiQrSn9HkCFzamtb7k8FFmVilHVob7QsLX/VySAW8lAviMzMbFw4QtFb4errwgYA== + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.6.4" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" terser-webpack-plugin@^1.4.1: version "1.4.1" @@ -10347,22 +11577,17 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -thread-stream@^0.13.0: - version "0.13.2" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.13.2.tgz#de8ea87584baee625c631947ec73494aa86131c8" - integrity sha512-woZFt0cLFkPdhsa+IGpRo1jiSouaHxMIljzTgt30CMjBWoUYbbcHqnunW5Yv+BXko9H05MVIcxMipI3Jblallw== +thread-stream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-1.0.1.tgz#beb10b9b06d4b2e35ce137ff8a08f9805512d8cd" + integrity sha512-JuZyfzx81e5MBk8uIr8ZH76bXyjEQvbRDEkSdlV1JFBdq/rbby2RuvzBYlTBd/xCljxy6lPxrTLXzB9Jl1bNrw== dependencies: real-require "^0.1.0" -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -throttle-debounce@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.1.0.tgz#257e648f0a56bd9e54fe0f132c4ab8611df4e1d5" - integrity sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg== +throttle-debounce@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" + integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== through2@^2.0.0: version "2.0.5" @@ -10391,10 +11616,10 @@ tmp@0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-arraybuffer@^1.0.0: version "1.0.1" @@ -10418,11 +11643,6 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -10463,14 +11683,15 @@ tosource@1.0.0: resolved "https://registry.yarnpkg.com/tosource/-/tosource-1.0.0.tgz#42d88dd116618bcf00d6106dd5446f3427902ff1" integrity sha1-QtiN0RZhi88A1hBt1URvNCeQL/E= -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== +tough-cookie@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: psl "^1.1.33" punycode "^2.1.1" - universalify "^0.1.2" + universalify "^0.2.0" + url-parse "^1.5.3" tough-cookie@~2.5.0: version "2.5.0" @@ -10480,10 +11701,10 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== dependencies: punycode "^2.1.1" @@ -10492,11 +11713,6 @@ tree-kill@^1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - tryer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" @@ -10507,25 +11723,27 @@ ts-easing@^0.2.0: resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== -tslib@^1.0.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== +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@^1.9.0, tslib@^1.9.3: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslib@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== +tslib@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +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" tty-browserify@0.0.0: version "0.0.0" @@ -10554,7 +11772,7 @@ type-check@^0.4.0, type-check@~0.4.0: 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= + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" @@ -10573,6 +11791,16 @@ type-fest@^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@^1.0.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.13.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.16.0.tgz#1250fbd64dafaf4c8e405e393ef3fb16d9651db2" + integrity sha512-qpaThT2HQkFb83gMOrdKVsfCN7LKxP26Yq+smPzY1FqoHRjqmjqHXA7n5Gkxi8efirtbeEUxzfEdePthQWCuHw== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10593,10 +11821,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" - integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== +typescript@^4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" + integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== uglify-js@^3.6.0: version "3.6.0" @@ -10621,6 +11849,16 @@ uglifyjs-webpack-plugin@^2.1.2: webpack-sources "^1.4.0" worker-farm "^1.7.0" +unbox-primitive@^1.0.2: + version "1.0.2" + 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" + unbzip2-stream@1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" @@ -10634,6 +11872,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -10642,16 +11885,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + unicode-property-aliases-ecmascript@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -10681,17 +11942,17 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== dependencies: - crypto-random-string "^2.0.0" + crypto-random-string "^4.0.0" -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^1.0.0: version "1.0.0" @@ -10726,25 +11987,33 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-notifier@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" + escalade "^3.1.1" + picocolors "^1.0.0" + +update-notifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" + integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== + dependencies: + boxen "^7.0.0" + chalk "^5.0.1" + configstore "^6.0.0" + has-yarn "^3.0.0" + import-lazy "^4.0.0" + is-ci "^3.0.1" is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" + is-npm "^6.0.0" + is-yarn-global "^0.4.0" + latest-version "^7.0.0" + pupa "^3.1.0" + semver "^7.3.7" + semver-diff "^4.0.0" + xdg-basedir "^5.1.0" uri-js@^4.2.2: version "4.2.2" @@ -10767,12 +12036,13 @@ url-loader@^1.1.2: mime "^2.0.3" schema-utils "^1.0.0" -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: - prepend-http "^2.0.0" + querystringify "^2.1.1" + requires-port "^1.0.0" url@^0.11.0: version "0.11.0" @@ -10782,19 +12052,6 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use-callback-ref@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.1.tgz#898759ccb9e14be6c7a860abafa3ffbd826c89bb" - integrity sha512-C3nvxh0ZpaOxs9RCnWwAJ+7bJPwQI8LHF71LzbQ3BvzH5XkdtlkMadqElGevg5bYBDFip4sAnD4m06zAKebg1w== - -use-sidecar@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.0.2.tgz#e72f582a75842f7de4ef8becd6235a4720ad8af6" - integrity sha512-287RZny6m5KNMTb/Kq9gmjafi7lQL0YHO1lYolU6+tY1h9+Z3uCtkJJ3OSOq3INwYf2hBryCcDh4520AhJibMA== - dependencies: - detect-node "^2.0.4" - tslib "^1.9.3" - use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -10829,7 +12086,7 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== -uuid@^8.3.0: +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== @@ -10844,14 +12101,14 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-to-istanbul@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" - integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" - source-map "^0.7.3" vary@~1.1.2: version "1.1.2" @@ -10872,56 +12129,35 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== dependencies: - browser-process-hrtime "^1.0.0" + xml-name-validator "^4.0.0" -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== +wait-on@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" + integrity sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw== dependencies: - xml-name-validator "^3.0.0" - -wait-for-expect@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.2.tgz#d2f14b2f7b778c9b82144109c8fa89ceaadaa463" - integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag== - -wait-on@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-5.3.0.tgz#584e17d4b3fe7b46ac2b9f8e5e102c005c2776c7" - integrity sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg== - dependencies: - axios "^0.21.1" - joi "^17.3.0" + axios "^0.25.0" + joi "^17.6.0" lodash "^4.17.21" minimist "^1.2.5" - rxjs "^6.6.3" + rxjs "^7.5.4" -wait-port@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/wait-port/-/wait-port-0.2.9.tgz#3905cf271b5dbe37a85c03b85b418b81cb24ee55" - integrity sha512-hQ/cVKsNqGZ/UbZB/oakOGFqic00YAMM5/PEj3Bt4vKarv2jWIWzDbqlwT94qMs/exAQAsvMOq99sZblV92zxQ== +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - chalk "^2.4.2" - commander "^3.0.2" - debug "^4.1.1" + makeerror "1.0.12" -walker@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -watchpack@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" - integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== +watchpack@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -10942,85 +12178,125 @@ wcwidth@^1.0.0: dependencies: defaults "^1.0.3" -web-ext@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/web-ext/-/web-ext-6.8.0.tgz#bc8d1ee478a0a1444f48159e80d492f7bf2fb9fc" - integrity sha512-qZ3a4YVs0Vdqet44QRZEcNUQznkrfhsAkSOnZp57O4T4A9Bo3pamePSBeRqdPdJv9GF8ntKG84o3eV0MrEvLbw== +web-ext@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/web-ext/-/web-ext-7.1.1.tgz#c548b04753889f4f37764f3836e85ecb5a4d2cee" + integrity sha512-ehqPS8QHNKyAz6C1NBkDNbzWtuM9LfGMWF2WZx+9U1TCRdoLdZAqHhxF5hDwZFAPKkPW/iuQQ6r2qQiv7T3aYw== dependencies: - "@babel/runtime" "7.13.9" - "@devicefarmer/adbkit" "2.11.3" - addons-linter "4.14.0" + "@babel/runtime" "7.18.6" + "@devicefarmer/adbkit" "3.2.3" + addons-linter "5.10.0" bunyan "1.8.15" - camelcase "6.2.0" - chrome-launcher "0.15.0" - debounce "1.2.0" - decamelize "5.0.0" + camelcase "7.0.0" + chrome-launcher "0.15.1" + debounce "1.2.1" + decamelize "6.0.0" es6-error "4.1.1" firefox-profile "4.2.2" - fs-extra "9.1.0" + fs-extra "10.1.0" fx-runner "1.2.0" import-fresh "3.3.0" mkdirp "1.0.4" - multimatch "5.0.0" + multimatch "6.0.0" mz "2.7.0" - node-notifier "9.0.0" - open "7.4.2" - parse-json "5.2.0" - promise-toolbox "0.20.0" - sign-addon "3.11.0" - source-map-support "0.5.20" - strip-bom "4.0.0" - strip-json-comments "3.1.1" + node-notifier "10.0.1" + open "8.4.0" + parse-json "6.0.2" + promise-toolbox "0.21.0" + sign-addon "5.0.0" + source-map-support "0.5.21" + strip-bom "5.0.0" + strip-json-comments "4.0.0" tmp "0.2.1" - update-notifier "5.1.0" - watchpack "2.1.1" - ws "7.4.6" - yargs "16.2.0" + update-notifier "6.0.2" + watchpack "2.4.0" + ws "8.8.0" + yargs "17.5.1" zip-dir "2.0.0" -webext-additional-permissions@^0.1.0: +webext-additional-permissions@^2.1.1, webext-additional-permissions@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/webext-additional-permissions/-/webext-additional-permissions-2.3.0.tgz#cde59ff8358fc07d0f32adc7516d7d875b8dda60" + integrity sha512-WhrE049ubufZbZ9AZbC9ULQX57+R22L5IUXUNOzMuh73QKXVomcXP5H6xa8Nm5wBLFjkgB0q5HB4SPO9+Rra2Q== + dependencies: + "@types/chrome" "0.0.178" + webext-patterns "^1.1.1" + +webext-content-scripts@^0.10.0, webext-content-scripts@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/webext-content-scripts/-/webext-content-scripts-0.10.1.tgz#2a46a8f32f42924f605851c8acc7db76e1a04d1f" + integrity sha512-O5z3zWJWPwOUGZkkjup+cVPyKj6I9R+7/oviBpkF9MU9y7YT4y/EBzO/qRByOJsNPIiHlhDSy74/DOzNWsgtrA== + dependencies: + webext-polyfill-kinda "^0.9.0" + +webext-content-scripts@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/webext-content-scripts/-/webext-content-scripts-1.0.3.tgz#f4a692c9dd31fb5c3bdb9d354f78bd6b54bc88b6" + integrity sha512-Kwd6V/Dbbfl136e30aXd319IZPy3TvgKqqF834vlkOp/ALzEE8caPEbbjGHSQjt/zJVr3vtlUQOWP7GUH8WJlA== + dependencies: + webext-polyfill-kinda "^0.10.0" + +webext-detect-page@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/webext-detect-page/-/webext-detect-page-3.1.0.tgz#7e31b4008ffb4e3c46dfbb2766a3f80569fcb2ad" + integrity sha512-hJy1srJozdC1ZHWNIwPPvDJmTUoJo7kSvEikFcVWi2B+che4RElyAST1u336D0yKuqphRPe1OF2Ug2qCrO31pA== + +webext-domain-permission-toggle@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/webext-domain-permission-toggle/-/webext-domain-permission-toggle-3.0.0.tgz#6032181708a632b3829ff28ba33cb44089187098" + integrity sha512-OyOwPC5Q6x6xkY6N/CJuNEY3YfDtFDSQDVQVrlpSN8ba9e/HqEeP8Pa8JSdd+dyF3gOLErjcFcEwhqxLScXrjw== + dependencies: + webext-additional-permissions "^2.1.1" + webext-content-scripts "^0.10.1" + webext-detect-page "^3.1.0" + webext-patterns "^1.1.1" + webext-polyfill-kinda "^0.9.0" + webext-tools "^0.1.0" + +webext-dynamic-content-scripts@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/webext-dynamic-content-scripts/-/webext-dynamic-content-scripts-8.1.1.tgz#cab697afe77dd2876d218bb7d126177085abddc6" + integrity sha512-raVyQFZOGPU15V+O2vbWlsiQlL54hq+y57AqEqgqLkWntYbcx2x+EaKtL/faAj9Ytw4Mm73JDebyoEH3A4JeqA== + dependencies: + content-scripts-register-polyfill "^3.2.2" + webext-additional-permissions "^2.3.0" + webext-content-scripts "^1.0.1" + +webext-patterns@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/webext-patterns/-/webext-patterns-1.2.0.tgz#871f035b770e4ce7ec60ee2eb2197ff12b7ebaa9" + integrity sha512-AoRWbDuQooGxWqmcGiTN2gIWmMmLUr4TgQ69XhEzxXf+s+vUeKFA9WEKQxWvCyEBetTWhx69WQN9rDupjnh0Mw== + dependencies: + escape-string-regexp "^5.0.0" + +webext-polyfill-kinda@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/webext-polyfill-kinda/-/webext-polyfill-kinda-0.10.0.tgz#5eb154c581edae827f2832c090811d14dd074ea2" + integrity sha512-Yz5WTwig5byFfMXgagtfaJkVU+RrnVqtL1hmvA+GIbpRaGKU1DIrFYHMUUFkeyFqxRSuhbOdLKzteXxCd6VNzA== + +webext-polyfill-kinda@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/webext-polyfill-kinda/-/webext-polyfill-kinda-0.9.0.tgz#f881b44e56514a1960a352db4e3efa056abe2bd2" + integrity sha512-TTtitT7rgdaR2nx0+TZDIYHpZ5TXH9Ak8C2TaBaJT9qNeHXexKzde6uQ6cjdOK2G80C04r8fcx98Iy+PTCNN7Q== + +webext-tools@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/webext-additional-permissions/-/webext-additional-permissions-0.1.0.tgz#bc5a2a6cb8e60098c81a6004c446bfae2aefd85a" - integrity sha512-eA1o6BdRbpU5ClL6GcmwhGtVVzNTbQSqX9esakpurWYVt9ykpGQ1ZNe5l30Yt19GW0eRC8VdroOeJSumP5cMpQ== + resolved "https://registry.yarnpkg.com/webext-tools/-/webext-tools-0.1.0.tgz#aff8d35206fa03bbf44ff748b55d0a41ed2a9f4b" + integrity sha512-RRkEbUdZDSjdVg6OKD1h1AfMGJT4tl+PX0nSArKpurO/xXj5KfA9t8nbV+z8uPVZXH7eAJnbhl10UEcrw8uMng== dependencies: - "@types/chrome" "0.0.86" + webext-content-scripts "^0.10.0" + webext-detect-page "^3.1.0" + webext-polyfill-kinda "^0.9.0" -webext-domain-permission-toggle@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/webext-domain-permission-toggle/-/webext-domain-permission-toggle-1.0.0.tgz#6f9a6d3234ffe596921d1be5ae8823ef5b02ebd2" - integrity sha512-K6RAOYtVCMAmqjQPopMbGOIoxpFU05ERGgaLkUNvFCdpPsXLB5y4m1+Cq1dezyfx6FU0lLEqxoL/5/49+EY5zA== - dependencies: - webext-additional-permissions "^0.1.0" +webextension-polyfill@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz#ccb28101c910ba8cf955f7e6a263e662d744dbb8" + integrity sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g== -webext-dynamic-content-scripts@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/webext-dynamic-content-scripts/-/webext-dynamic-content-scripts-6.0.3.tgz#729a5cf4408dca589af889cb403943ab414c2ecd" - integrity sha512-MIH4UOnkUl4hapl83uMQT5t2bbYXTPO/mxhFFBcesm2mGvnG3OrNKNiaPRFL6AdcPvqDVae8UcWcWHSflptLTQ== - dependencies: - "@types/chrome" "0.0.86" - content-scripts-register-polyfill "^1.0.0" - webext-additional-permissions "^0.1.0" - webext-permissions-events-polyfill "^1.0.1" - -webext-permissions-events-polyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/webext-permissions-events-polyfill/-/webext-permissions-events-polyfill-1.0.1.tgz#c5108d140b03efbd06b34c7211694b8cde928177" - integrity sha512-dPsU7KtDn+OG+mPy0LLc9UhMXdVeQ8ywD5kK1GFtvceur4IWOnpI5D4uTjMPrKm8+re/8cbHKwVjnviIA9wZ3Q== - -webextension-polyfill@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.5.0.tgz#795e0bf6a2b8eadcdb6edaecd169e9228c747519" - integrity sha512-aFrl38x43t1bTboX/paCT8I97+idzX/TY0+fuM52hrIkCpYfROEF9kSn0BXuEIi3J9LTYt2ZZKkhx9NB1qF3nA== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== webpack-bundle-analyzer@^3.6.0: version "3.6.0" @@ -11103,32 +12379,42 @@ webpack@^4.29.6: watchpack "^1.6.0" webpack-sources "^1.4.1" -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: - iconv-lite "0.4.24" + iconv-lite "0.6.3" -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" + tr46 "^3.0.0" + webidl-conversions "^7.0.0" when@3.7.7: version "3.7.7" resolved "https://registry.yarnpkg.com/when/-/when-3.7.7.tgz#aba03fc3bb736d6c88b091d013d8a8e590d84718" integrity sha1-q6A/w7tzbWyIsJHQE9io5ZDYRxg= +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-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -11163,12 +12449,12 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== dependencies: - string-width "^4.0.0" + string-width "^5.0.1" winreg@0.0.12: version "0.0.12" @@ -11196,6 +12482,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +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@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -11205,12 +12500,21 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3" + integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g== + 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= -write-file-atomic@^3.0.0: +write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -11220,32 +12524,45 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-atomic@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769" + integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ== + ws@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== dependencies: async-limiter "~1.0.0" -ws@^7.4.5: - version "7.5.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.1.tgz#44fc000d87edb1d9c53e51fbc69a0ac1f6871d66" - integrity sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow== +ws@^8.9.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== -xdg-basedir@^4.0.0: +xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== + +xml-name-validator@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xml2js@~0.4.23: version "0.4.23" @@ -11271,43 +12588,53 @@ xtend@^4.0.0, xtend@~4.0.1: integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== 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@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 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@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec" + integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw== + yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2: - 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.0.0: version "21.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== +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@13.2.4: version "13.2.4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" @@ -11325,23 +12652,10 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@16.2.0, yargs@^16.0.3: - 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@17.4.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.0.tgz#9fc9efc96bd3aa2c1240446af28499f0e7593d00" - integrity sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA== +yargs@17.5.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== dependencies: cliui "^7.0.2" escalade "^3.1.1" @@ -11351,6 +12665,19 @@ yargs@17.4.0: y18n "^5.0.5" yargs-parser "^21.0.0" +yargs@^17.3.1: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + 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" + yauzl@2.10.0, yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" @@ -11359,6 +12686,11 @@ yauzl@2.10.0, yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" +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== + zip-dir@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/zip-dir/-/zip-dir-2.0.0.tgz#c5df6e15c8f9efeb4e320377028c9f5c8277c932"