diff --git a/.env.arm.mac b/.env.arm.mac new file mode 100644 index 0000000..060e3f2 --- /dev/null +++ b/.env.arm.mac @@ -0,0 +1,2 @@ +PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true +PUPPETEER_EXEC_PATH=/opt/homebrew/bin/chromium diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 0bd8935..316614a 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,8 +1,8 @@ # These are supported funding model platforms github: enixcoda -patreon: enixcoda -open_collective: enixcoda +patreon: # enixcoda +open_collective: # enixcoda ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry diff --git a/ChromeWebStoreBadge.svg b/ChromeWebStoreBadge.svg deleted file mode 100644 index ce66fb8..0000000 --- a/ChromeWebStoreBadge.svg +++ /dev/null @@ -1,349 +0,0 @@ - -image/svg+xml diff --git a/Makefile b/Makefile index df79d0c..6d7894d 100755 --- a/Makefile +++ b/Makefile @@ -4,6 +4,11 @@ FULL_VERSION=v$(RAW_VERSION) pull-icons: git clone git@github.com:vscode-icons/vscode-icons.git vscode-icons --depth=1 +update-icons: + cd vscode-icons && git pull + node scripts/resolve-languages-map + node scripts/generate-icon-index + build: rm -rf dist yarn build diff --git a/README.md b/README.md index a2dd529..8aac0b0 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,47 @@ # Gitako

- +

-Gitako is a file tree extension for GitHub, available for Chrome, Firefox and Edge. And more than that, it has lots of useful features. +Gitako is a free file tree extension for GitHub, available on Chrome, Firefox and Edge. ### Features -- 📂 neat file tree for repository and pull request -- 🔎 instant file search and navigation -- 🕶️ support private repositories and [GitHub enterprise](https://github.com/EnixCoda/Gitako/wiki/Use-in-GitHub-enterprise-and-other-sites) -- 🏎 extremely fast even in gigantic projects -- ⌨️ intuitive keyboard accessibility -- 🗂 support git submodule -- ↔️ resizable layout -- 📋 copy snippets and file -- 🎨 friendly UI and rich icons +- 📂 File tree for repository and pull request +- 🔎 Instant file search and navigation +- 🕶️ Support private repositories +- 🧩 Support [GitHub enterprise](https://github.com/EnixCoda/Gitako/wiki/Use-in-GitHub-enterprise-and-other-sites), Gitea, Gitee, and [more](https://github.com/EnixCoda/Gitako/issues/60) +- 🏎 Always performant, even in gigantic projects +- ⌨️ Intuitive keyboard navigation +- 📋 Copy snippets and file content +- 🎨 Various icons and official themes support +- 🗂 Support git submodule +- 📏 Fold source code -### Installation +### Install -[![Install for Chrome](./ChromeWebStoreBadge.svg)](https://chrome.google.com/webstore/detail/gitako-github-file-tree/giljefjcheohhamkjphiebfjnlphnokk) +Chrome +Edge +Firefox -[for Edge](https://microsoftedge.microsoft.com/addons/detail/alpoloddcggjhakjemghahlkofjekbca) - -[for Firefox](https://addons.mozilla.org/en-US/firefox/addon/gitako-github-file-tree/) +It is more recommended for Edge users to install from Chrome store. It may delay for weeks before updates got published to Edge store because its review process is slow. ### Help Gitako -If you appreciate Gitako and would like to help it grow better, please either -- Give it a star ⭐️ at GitHub -- Leave a review 👍 in the extension store +Gitako is **FREE**. If you like it, please -Feature request discussions and bug reports are welcome, feel free to draft an [issue](https://github.com/EnixCoda/Gitako/issues/)! +- ⭐️ Star it at GitHub +- 👍 Review in the extension store + +[Feature discussions](https://github.com/EnixCoda/Gitako/discussions) and [bug reports](https://github.com/EnixCoda/Gitako/issues/) are also welcome! ### About -#### Name and logo? +#### Source of the name and logo? The totem of GitHub is a cute octopus. And octopus in Japanese is `タコ`(tako). -Then link them together: +Then concat them together: git + tako -> gitako diff --git a/__tests__/non-parallel-cases/pjax.commits-page.ts b/__tests__/cases/non-parallel/pjax.commits-page.ts similarity index 96% rename from __tests__/non-parallel-cases/pjax.commits-page.ts rename to __tests__/cases/non-parallel/pjax.commits-page.ts index dde9484..cdd87bc 100644 --- a/__tests__/non-parallel-cases/pjax.commits-page.ts +++ b/__tests__/cases/non-parallel/pjax.commits-page.ts @@ -1,4 +1,4 @@ -import { expectToFind, expectToNotFind, sleep, waitForLegacyPJAXRedirect } from '../utils' +import { expectToFind, expectToNotFind, sleep, waitForLegacyPJAXRedirect } from '../../utils' describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/commits/develop')) diff --git a/__tests__/non-parallel-cases/pjax.files-page.ts b/__tests__/cases/non-parallel/pjax.files-page.ts similarity index 85% rename from __tests__/non-parallel-cases/pjax.files-page.ts rename to __tests__/cases/non-parallel/pjax.files-page.ts index 015236e..bfe72bb 100644 --- a/__tests__/non-parallel-cases/pjax.files-page.ts +++ b/__tests__/cases/non-parallel/pjax.files-page.ts @@ -1,4 +1,4 @@ -import { expectToFind, expectToNotFind, sleep, waitForLegacyPJAXRedirect } from '../utils' +import { expectToFind, expectToNotFind, sleep, waitForLegacyPJAXRedirect } from '../../utils' describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/tree/develop/src')) @@ -9,8 +9,9 @@ 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 commitLinks[i].click() - await waitForLegacyPJAXRedirect() + await waitForLegacyPJAXRedirect(async () => { + await commitLinks[i].click() + }) await expectToFind('table.js-file-line-container') await sleep(1000) diff --git a/__tests__/non-parallel-cases/pjax.general.ts b/__tests__/cases/non-parallel/pjax.general.ts similarity index 94% rename from __tests__/non-parallel-cases/pjax.general.ts rename to __tests__/cases/non-parallel/pjax.general.ts index d915bc1..76657f4 100644 --- a/__tests__/non-parallel-cases/pjax.general.ts +++ b/__tests__/cases/non-parallel/pjax.general.ts @@ -4,8 +4,8 @@ import { patientClick, selectFileTreeItem, sleep, - waitForLegacyPJAXRedirect, -} from '../utils' + waitForLegacyPJAXRedirect +} from '../../utils' describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/tree/develop/src')) diff --git a/__tests__/non-parallel-cases/pjax.internal.ts b/__tests__/cases/non-parallel/pjax.internal.ts similarity index 67% rename from __tests__/non-parallel-cases/pjax.internal.ts rename to __tests__/cases/non-parallel/pjax.internal.ts index b70f5fd..4b57bec 100644 --- a/__tests__/non-parallel-cases/pjax.internal.ts +++ b/__tests__/cases/non-parallel/pjax.internal.ts @@ -5,8 +5,8 @@ import { patientClick, selectFileTreeItem, sleep, - waitForPJAXAPIRedirect, -} from '../utils' + waitForLegacyPJAXRedirect +} from '../../utils' describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako')) @@ -16,17 +16,17 @@ describe(`in Gitako project page`, () => { await expandFloatModeSidebar() await patientClick(selectFileTreeItem('.babelrc')) - await waitForPJAXAPIRedirect() + await waitForLegacyPJAXRedirect() // The selector for file content await expectToFind('table.js-file-line-container') - page.goBack() - await waitForPJAXAPIRedirect() + await waitForLegacyPJAXRedirect(async () => { + await sleep(1000) // This prevents failing in some cases due to some mystery scheduling issue of puppeteer or jest + page.goBack() + }) // The selector for file content await expectToNotFind('table.js-file-line-container') - - // await waitForPJAXAPIRedirect() }) }) diff --git a/__tests__/non-parallel-cases/project-page.gitako.ts b/__tests__/cases/non-parallel/project-page.gitako.ts similarity index 80% rename from __tests__/non-parallel-cases/project-page.gitako.ts rename to __tests__/cases/non-parallel/project-page.gitako.ts index fcd79fe..6a831a9 100644 --- a/__tests__/non-parallel-cases/project-page.gitako.ts +++ b/__tests__/cases/non-parallel/project-page.gitako.ts @@ -3,8 +3,8 @@ import { expectToFind, expectToNotFind, scroll, - selectFileTreeItem, -} from '../utils' + selectFileTreeItem +} from '../../utils' describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako')) @@ -22,11 +22,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('tsconfig.json')) - const box = await filesEle.boundingBox() + await expectToNotFind(selectFileTreeItem('package.json')) + const box = await filesEle?.boundingBox() if (box) { await page.mouse.move(box.x + 40, box.y + 40) - await scroll({ totalDistance: 100, duration: 1000 }) + await scroll({ totalDistance: 200, duration: 1000 }) // node of tsconfig.json should be rendered now await expectToFind(selectFileTreeItem('tsconfig.json')) diff --git a/__tests__/cases/baseline.ts b/__tests__/cases/parallel/baseline.ts similarity index 92% rename from __tests__/cases/baseline.ts rename to __tests__/cases/parallel/baseline.ts index 71368a7..a8e7a74 100644 --- a/__tests__/cases/baseline.ts +++ b/__tests__/cases/parallel/baseline.ts @@ -1,8 +1,8 @@ /** - * Make sure some basic behaviors of puppeteer assertions + * Confirm basic behaviors of puppeteer assertions */ -import { expectToFind, expectToNotFind } from '../utils' +import { expectToFind, expectToNotFind } from '../../utils' describe(`in random page`, () => { beforeAll(() => page.goto('https://google.com')) diff --git a/__tests__/cases/parallel/expand-to-target.ts b/__tests__/cases/parallel/expand-to-target.ts new file mode 100644 index 0000000..4be5dc0 --- /dev/null +++ b/__tests__/cases/parallel/expand-to-target.ts @@ -0,0 +1,25 @@ +import { + expectToFind, + selectFileTreeItem, + sleep, + waitForLegacyPJAXRedirect +} 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 () => { + await sleep(3000) + + // Expect Gitako sidebar to have expanded src to see contents + await expectToFind(selectFileTreeItem('src/components')) + + await page.click( + `.js-details-container div[role="row"] div[role="rowheader"] [title="components"]`, + ) + await waitForLegacyPJAXRedirect() + + // Expect Gitako sidebar to have expanded components and see contents + await expectToFind(selectFileTreeItem('src/components/Gitako.tsx')) + }) +}) diff --git a/__tests__/cases/homepage.not-render.ts b/__tests__/cases/parallel/homepage.not-render.ts similarity index 82% rename from __tests__/cases/homepage.not-render.ts rename to __tests__/cases/parallel/homepage.not-render.ts index 1a326a7..8d67007 100644 --- a/__tests__/cases/homepage.not-render.ts +++ b/__tests__/cases/parallel/homepage.not-render.ts @@ -1,4 +1,4 @@ -import { expectToNotFind } from '../utils' +import { expectToNotFind } from '../../utils' describe(`in GitHub homepage`, () => { beforeAll(() => page.goto('https://github.com')) diff --git a/__tests__/cases/pull-request-page.gitako.ts b/__tests__/cases/parallel/pull-request-page.gitako.ts similarity index 89% rename from __tests__/cases/pull-request-page.gitako.ts rename to __tests__/cases/parallel/pull-request-page.gitako.ts index 00c7c18..a502711 100644 --- a/__tests__/cases/pull-request-page.gitako.ts +++ b/__tests__/cases/parallel/pull-request-page.gitako.ts @@ -1,4 +1,4 @@ -import { expectToFind } from '../utils' +import { expectToFind } from '../../utils' describe(`in Gitako project page`, () => { beforeAll(() => page.goto('https://github.com/EnixCoda/Gitako/pull/71')) diff --git a/__tests__/jest.config.js b/__tests__/jest.config.js new file mode 100644 index 0000000..d9cf6da --- /dev/null +++ b/__tests__/jest.config.js @@ -0,0 +1,185 @@ +// For a detailed explanation regarding each configuration property, visit: +// https://jestjs.io/docs/en/configuration.html + +module.exports = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // Respect "browser" field in package.json when resolving modules + // browser: false, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/6j/kp9yt47x4872_k7d4gdjbwfm0000gn/T/jest_dx", + + // Automatically clear mock calls and instances between every test + // clearMocks: false, + + // Indicates whether the coverage information should be collected while executing the test + // collectCoverage: false, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: null, + + // The directory where Jest should output its coverage files + // coverageDirectory: null, + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: null, + + // A path to a custom dependency extractor + // dependencyExtractor: null, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: null, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: null, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + maxWorkers: 8, + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "json", + // "jsx", + // "ts", + // "tsx", + // "node" + // ], + + // A map from regular expressions to module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + preset: 'jest-puppeteer', + + // Run tests from one or more projects + // projects: null, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state between every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: null, + + // Automatically restore mock state between every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: null, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [], + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + // testEnvironment: 'node', + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + testMatch: ['**/?(*.)+(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/'], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: null, + + // This option allows use of a custom test runner + // testRunner: "jasmine2", + + // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href + // testURL: "http://localhost", + + testTimeout: 20000, + + // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" + // timers: "real", + + // A map from regular expressions to paths to transformers + // transform: null, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // transformIgnorePatterns: [ + // "/node_modules/" + // ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: null, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +} diff --git a/jest.non.parallel.config.js b/__tests__/jest.non-parallel.config.js similarity index 54% rename from jest.non.parallel.config.js rename to __tests__/jest.non-parallel.config.js index 74dc653..c874fea 100644 --- a/jest.non.parallel.config.js +++ b/__tests__/jest.non-parallel.config.js @@ -3,5 +3,5 @@ const baseConfig = require('./jest.config') module.exports = { ...baseConfig, maxWorkers: 1, - testMatch: ['**/__tests__/non-parallel-cases/*.ts?(x)'], + testMatch: [...baseConfig.testMatch, '**/__tests__/cases/non-parallel/*.ts?(x)'], } diff --git a/__tests__/jest.parallel.config.js b/__tests__/jest.parallel.config.js new file mode 100644 index 0000000..7f7916f --- /dev/null +++ b/__tests__/jest.parallel.config.js @@ -0,0 +1,6 @@ +const baseConfig = require('./jest.config') + +module.exports = { + ...baseConfig, + testMatch: [...baseConfig.testMatch, '**/__tests__/cases/parallel/*.ts?(x)'], +} diff --git a/__tests__/tsconfig.json b/__tests__/tsconfig.json index fe8506a..4e4518e 100644 --- a/__tests__/tsconfig.json +++ b/__tests__/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "../tsconfig.json", "include": ["."], + "exclude": ["tsconfig.json"], "compilerOptions": { "target": "ES3", "module": "CommonJS", diff --git a/__tests__/utils.ts b/__tests__/utils.ts index 56e422b..c81b87e 100644 --- a/__tests__/utils.ts +++ b/__tests__/utils.ts @@ -68,12 +68,10 @@ export function once(event: string, target: 'document' | 'window') { }) } -export function waitForLegacyPJAXRedirect() { - return once('pjax:end', 'document') -} - -export function waitForPJAXAPIRedirect() { - return once('pjax:ready', 'document') +export async function waitForLegacyPJAXRedirect(action?: () => void | Promise) { + const promise = once('pjax:end', 'document') + await action?.() + return promise } export function selectFileTreeItem(path: string): string { diff --git a/assets/Chrome.svg b/assets/Chrome.svg new file mode 100644 index 0000000..2b90ad3 --- /dev/null +++ b/assets/Chrome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/Edge.svg b/assets/Edge.svg new file mode 100644 index 0000000..f986f08 --- /dev/null +++ b/assets/Edge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/Firefox.svg b/assets/Firefox.svg new file mode 100644 index 0000000..065152a --- /dev/null +++ b/assets/Firefox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jest-puppeteer.config.js b/jest-puppeteer.config.js index 15e31ae..163ce8a 100644 --- a/jest-puppeteer.config.js +++ b/jest-puppeteer.config.js @@ -1,11 +1,19 @@ const path = require('path') +if (process.arch === 'arm64' && process.platform === 'darwin') { + require('dotenv').config({ + path: '.env.arm.mac', + }) +} const CRX_PATH = path.resolve(__dirname, 'dist') module.exports = { launch: { - executablePath: process.env.PUPPETEER_EXEC_PATH, // set by mujo-code/puppeteer-headful - headless: false, // required for extensions + // set by mujo-code/puppeteer-headful on GitHub actions + // also for usages on ARM chip Mac + executablePath: process.env.PUPPETEER_EXEC_PATH, + // required for enabling extensions + headless: false, args: [`--disable-extensions-except=${CRX_PATH}`, `--load-extension=${CRX_PATH}`], }, } diff --git a/jest.config.js b/jest.config.js index f13eb4d..25bc4e4 100644 --- a/jest.config.js +++ b/jest.config.js @@ -91,7 +91,7 @@ module.exports = { // notifyMode: "failure-change", // A preset that is used as a base for Jest's configuration - preset: 'jest-puppeteer', + // preset: undefined, // Run tests from one or more projects // projects: null, @@ -141,7 +141,7 @@ module.exports = { // testLocationInResults: false, // The glob patterns Jest uses to detect test files - testMatch: ['**/__tests__/cases/*.ts?(x)', '**/?(*.)+(spec|test).ts?(x)'], + 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/'], @@ -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: 5000, // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" // timers: "real", diff --git a/package.json b/package.json index df90b7c..57c14b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gitako", - "version": "3.1.0", + "version": "3.6.1", "description": "File tree for GitHub, and more than that.", "repository": "https://github.com/EnixCoda/Gitako", "author": "EnixCoda", @@ -15,8 +15,8 @@ "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:parallel": "NODE_ENV=test jest", - "test:non-parallel": "NODE_ENV=test jest --config jest.non.parallel.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", @@ -55,21 +55,22 @@ "@babel/preset-typescript": "^7.3.3", "@sentry/cli": "^1.64.2", "@types/firefox-webext-browser": "^70.0.1", - "@types/jest": "^24.0.25", + "@types/jest": "^26.0.23", "@types/node": "^11.10.4", - "@types/puppeteer": "^3.0.2", + "@types/puppeteer": "^5.4.3", "babel-loader": "^8.0.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", "file-loader": "^3.0.1", "fork-ts-checker-webpack-plugin": "^0.5.2", - "jest": "^24.9.0", - "jest-puppeteer": "^4.4.0", + "jest": "^27.0.6", + "jest-puppeteer": "^5.0.4", "json-loader": "^0.5.7", "mini-css-extract-plugin": "^0.9.0", - "puppeteer": "^5.4.1", + "puppeteer": "^10.1.0", "raw-loader": "^4.0.0", "sass": "^1.26.2", "sass-loader": "^8.0.2", diff --git a/scripts/check-emit-dir.js b/scripts/check-emit-dir.js new file mode 100644 index 0000000..b08ed56 --- /dev/null +++ b/scripts/check-emit-dir.js @@ -0,0 +1,14 @@ +const path = require('path') +const fs = require('fs').promises + +const emitDirPath = path.resolve(__dirname, 'tmp') +exports.emitDirPath = emitDirPath + +async function checkEmitDir() { + try { + await fs.mkdir(emitDirPath) + } catch (err) { + await fs.stat(emitDirPath) + } +} +exports.checkEmitDir = checkEmitDir diff --git a/scripts/fix-pjax-api.js b/scripts/fix-pjax-api.js index b3ac6c7..b2b8b4a 100644 --- a/scripts/fix-pjax-api.js +++ b/scripts/fix-pjax-api.js @@ -5,16 +5,16 @@ const fs = require('fs').promises const path = require('path') -function modify(source = '', pairs = [], loose = true) { +function modify(source = '', pairs = []) { for (const [original, replace] of pairs) { if (source.includes(original)) { source = source.replace(original, replace) - if (source.includes(original)) { - throw new Error(`More than one original string found`, JSON.stringify(original)) - } } else { - if (loose) console.log(`Skipped missing snippet`, original) - else throw new Error(`Original string not found`, JSON.stringify(original)) + 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)) } } @@ -54,11 +54,16 @@ async function fixPJAXAPI(loose) { }`, ], ] - 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) - fs.writeFile(filePath, modified, 'utf-8') + 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) + } } -const loose = process.argv.includes('loose') -fixPJAXAPI(loose) +fixPJAXAPI() diff --git a/scripts/generate-file-icon-index.js b/scripts/generate-file-icon-index.js index 3c36d2f..4fc0d4e 100644 --- a/scripts/generate-file-icon-index.js +++ b/scripts/generate-file-icon-index.js @@ -1,18 +1,21 @@ -const languageIds = require('./language-id-ext.json') +const { languages } = require('./tmp/languages') +const fileName = 'file-icons-index' -function generateCSV() { +const link = 'https://github.com/vscode-icons/vscode-icons/wiki/ListOfFiles' + +function parsePageContent() { const records = [] - document.body .querySelector('table') .querySelectorAll('tbody tr') .forEach(tr => { const [name, id, dark, light] = Array.from(tr.querySelectorAll('td')) const exts = [] + const ids = [] const names = [] - id.innerHTML - .replace(/|<\/sub>/g, '') - .split(', ') + + id.querySelector('sub') + .innerHTML.split(', ') .map(part => { const tags = part.match(/<(\w+)>(.*?)<\/\1>/g) if (tags) { @@ -21,51 +24,50 @@ function generateCSV() { if (match) { const [, tag, content] = match if (tag === 'strong') { - // filenames in bold - names.push(content) + // filenames + names.push(content.toLowerCase()) } else if (tag === 'code') { - // language ids in code block - const map = Object.values(languageIds).find(({ ids }) => - (Array.isArray(ids) ? ids : [ids]).includes(content), - ) - if (map && map.exts) exts.push(map.exts) + // language ids + ids.push(content) } else { console.warn(`Found unrecognized format`, subPart, tag) // unknown } } }) } else if (part) { - // extensions are in regular fonts - exts.push(part.replace(/^\./, '')) + // extensions + exts.push(part.toLowerCase()) } }) records.push({ name: name.innerText, - exts, names, + exts, + ids, icon: getSrc(dark.querySelector('img')) || getSrc(light.querySelector('img')), }) }) + return records function getSrc(img) { return img && img.src } - - const prepend = 'https://github.com/vscode-icons/vscode-icons/raw/master/icons/file_type_' - const append = '.svg?sanitize=true' - const separator = ':' - const csv = records - .map(({ name, names, exts, icon }) => - [ - name, - names.join(separator), - exts.join(separator), - // icon.replace(prepend, '').replace(append, ''), // assumption: name is equal to this - ].join(','), - ) - .join('\n') - - return csv } -console.log(generateCSV()) +function prepareCSV({ name, names, exts, ids, icon }) { + ids.forEach(content => { + const defaultExtension = Object.values(languages) + .find(({ ids }) => (Array.isArray(ids) ? ids : [ids]).includes(content)) + .defaultExtension.toLowerCase() + if (!exts.includes(defaultExtension)) exts.push(defaultExtension) + }) + const iconFile = icon.replace(/^.*?file_type_(.*?)\..*$/, '$1') + const cols = [name, names.join(':'), exts.join(':')] + if (!['file'].includes(name) && name !== iconFile) cols.push(iconFile) + return cols +} + +exports.fileName = fileName +exports.link = link +exports.parsePageContent = parsePageContent +exports.prepareCSV = prepareCSV diff --git a/scripts/generate-folder-icon-index.js b/scripts/generate-folder-icon-index.js index 8ddd743..1f559a2 100644 --- a/scripts/generate-folder-icon-index.js +++ b/scripts/generate-folder-icon-index.js @@ -1,3 +1,7 @@ +const fileName = 'folder-icons-index' + +const link = 'https://github.com/vscode-icons/vscode-icons/wiki/ListOfFolders' + function parsePageContent() { const records = [] document.body @@ -16,26 +20,27 @@ function parsePageContent() { }) }) return records + + function getSrc(img) { + return img && img.src + } } -function getSrc(img) { - return img && img.src +function prepareCSV({ name, names, icon }) { + const [iconFileOpen, iconFileClosed] = [ + icon.open.replace(/^.*?folder_type_(.*?)_opened\..*$/, '$1'), + icon.closed.replace(/^.*?folder_type_(.*?)\..*$/, '$1'), + ] + const cols = [name, names.join(':')] + if ( + !['folder', 'root_folder'].includes(name) && + (name !== iconFileOpen || iconFileOpen !== iconFileClosed) + ) + cols.push(iconFileOpen, iconFileClosed) + return cols } -function generateCSV(records) { - const prepend = 'https://github.com/vscode-icons/vscode-icons/raw/master/icons/folder_type_' - const append = '.svg?sanitize=true' - const separator = ':' - const csv = records - .map(({ name, names, icon }) => - [ - name, - names.join(separator), - // icon.replace(prepend, '').replace(append, ''), // assumption: name is equal to this - ].join(','), - ) - .join('\n') - return csv -} - -console.log(generateCSV(parsePageContent())) +exports.fileName = fileName +exports.link = link +exports.parsePageContent = parsePageContent +exports.prepareCSV = prepareCSV diff --git a/scripts/generate-icon-index.js b/scripts/generate-icon-index.js new file mode 100644 index 0000000..5a02316 --- /dev/null +++ b/scripts/generate-icon-index.js @@ -0,0 +1,49 @@ +const path = require('path') +const { promises: fs, existsSync } = require('fs') +const puppeteer = require('puppeteer') +const generateFileIconIndex = require('./generate-file-icon-index') +const generateFolderIconIndex = require('./generate-folder-icon-index') +const { emitDirPath, checkEmitDir } = require('./check-emit-dir') + +let browser +async function getPage() { + const headless = process.env.HEADLESS !== 'false' + browser = browser || (await puppeteer.launch({ headless })) + return await browser.newPage() +} + +async function generateCSV() { + await checkEmitDir() + + await Promise.all( + [generateFileIconIndex, generateFolderIconIndex].map( + async ({ fileName, link, parsePageContent, prepareCSV }) => { + let records + const emitJSONPath = path.resolve(emitDirPath, fileName + '.json') + if (!existsSync(emitJSONPath)) { + const page = await getPage() + await page.goto(link) + records = await page.evaluate(parsePageContent) + await page.close() + await fs.writeFile(emitJSONPath, JSON.stringify(records)) + } else { + records = require(emitJSONPath) + } + + const rowSeparator = '\n' + const columnSeparator = ',' + const csv = records.map(prepareCSV) + + const emitPath = path.resolve(__dirname, '..', 'src/assets/icons') + await fs.writeFile( + path.resolve(emitPath, fileName + '.csv'), + csv.map(cols => cols.join(columnSeparator)).join(rowSeparator), + ) + }, + ), + ) + + if (browser) await browser.close() +} + +generateCSV() diff --git a/scripts/resolve-languages-map.js b/scripts/resolve-languages-map.js new file mode 100644 index 0000000..360d936 --- /dev/null +++ b/scripts/resolve-languages-map.js @@ -0,0 +1,32 @@ +const path = require('path') +const fs = require('fs').promises +const typescript = require('typescript') +const { emitDirPath, checkEmitDir } = require('./check-emit-dir') + +const files = [path.resolve(__dirname, '..', 'vscode-icons/src/iconsManifest/languages.ts')] + +const options = { + module: typescript.ModuleKind.CommonJS, + target: typescript.ScriptTarget.ES2015, + strict: true, + suppressOutputPathCheck: false, +} + +async function main() { + await checkEmitDir() + + const compilerHost = typescript.createCompilerHost(options) + compilerHost.writeFile = async (fileName, data, writeByteOrderMark, onError, sourceFiles) => { + if (sourceFiles.some(file => files.includes(file.fileName))) { + await fs.writeFile(path.resolve(emitDirPath, path.basename(fileName)), data) + console.log(`Emitted`, fileName) + } else { + console.log(`Skipped`, fileName) + } + } + + const program = typescript.createProgram(files, options, compilerHost) + program.emit() +} + +main() diff --git a/src/analytics.ts b/src/analytics.ts index 1af5065..3ac4bd5 100644 --- a/src/analytics.ts +++ b/src/analytics.ts @@ -58,9 +58,9 @@ Sentry.init(sentryOptions) export const withErrorLog: Middleware = function withErrorLog(method, args) { return [ - async function (...args: any[]) { + async function () { try { - await method.apply(null, args) + await method.apply(null, arguments as any) } catch (error) { raiseError(error) } diff --git a/src/assets/icons/file-icons-index.csv b/src/assets/icons/file-icons-index.csv index 553de50..fdaf7b9 100644 --- a/src/assets/icons/file-icons-index.csv +++ b/src/assets/icons/file-icons-index.csv @@ -60,6 +60,7 @@ ng_smart_component_ts2,,page.ts:container.ts ng_smart_component_js2,,page.js:container.js ng_service_ts2,,service.ts ng_service_js2,,service.js +ng_tailwind,ng-tailwind.js, affectscript,,affect ansible,,ansible antlr,,g4 @@ -67,36 +68,46 @@ anyscript,,any apache,,htaccess apex,,cls apib,,apib +api_extractor,api-extractor.json:api-extractor-base.json, apl,,apl applescript,,applescript +appsemble,.appsemblerc.yaml:app-definition.yaml, appveyor,appveyor.yml:.appveyor.yml, arduino,,ino:pde asciidoc,,adoc -asp,,asp:asp +asp,,asp aspx,,aspx:ascx -assembly,,asm:asm +assembly,,asm +astro,,astro +astroconfig,astro.config.js:astro.config.cjs:astro.config.mjs, ats,,ats audio,,aac:act:aiff:amr:ape:au:dct:dss:dvf:flac:gsm:iklax:ivs:m4a:m4b:m4p:mmf:mogg:mp3:mpc:msv:oga:ogg:opus:ra:raw:tta:vox:wav:wma aurelia,aurelia.json, autohotkey,,ahk autoit,,au3 +avif,,avif avro,,avcs +awk,,awk aws,, azure,,azcli azurepipelines,azure-pipelines.yml:.vsts-ci.yml,azure-pipelines.yml -babel,.babelrc:babelrc.js:.babelrc.js:babelrc.json:babel.config.js:.babelignore, -babel2,.babelrc:babelrc.js:.babelrc.js:babelrc.json:babel.config.js:.babelignore, +babel,.babelrc:.babelignore:.babelrc.js:.babelrc.cjs:.babelrc.mjs:.babelrc.json:babel.config.js:babel.config.cjs:babel.config.mjs:babel.config.json, +babel2,.babelrc:.babelignore:.babelrc.js:.babelrc.cjs:.babelrc.mjs:.babelrc.json:babel.config.js:babel.config.cjs:babel.config.mjs:babel.config.json, ballerina,,bal bat,,bat +bats,,bats bazaar,.bzrignore, -bazel,.bazelrc:bazel.rc:bazel.bazelrc,bzl -befunge,,bf:bf +bazel,BUILD.bazel:.bazelrc:bazel.rc:bazel.bazelrc,bzl:bazel +befunge,,bf +bicep,,bicep biml,,biml binary,,a:app:bin:cmo:cmx:cma:cmxa:cmi:dll:exe:hl:ilk:lib:n:ndll:o:obj:pyc:pyd:pyo:pdb:scpt:scptd:so bithound,.bithoundrc, bitbucketpipeline,bitbucket-pipelines.yml, -blade,,blade.php:blade.php +blade,,blade.php +blitzbasic,,bb:blitzbasic bolt,,bolt +bosque,,bsq bower,.bowerrc:bower.json, browserslist,.browserslistrc:browserslist, buckbuild,.buckconfig, @@ -107,28 +118,31 @@ c2,,c c3,,c c_al,,cal cabal,,cabal -caddy,,Caddyfile +caddy,,caddyfile cake,,cake cakephp,, capacitor,capacitor.config.json, cargo,cargo.toml:cargo.lock, +casc,,casc +cddl,,cddl cert,,csr:crt:cer:der:pfx:p12:p7b:p7r:src:crl:sst:stl ceylon,,ceylon -cf,,lucee:cfml:cfml -cf2,,lucee:cfml:cfml +cf,,lucee:cfml +cf2,,lucee:cfml cfc,,cfc cfc2,,cfc cfm,,cfm cfm2,,cfm cheader,,h -chef,chefignore:berksfile:berksfile.lock:policyfile, +chef,chefignore:berksfile:berksfile.lock:policyfile.rb:policyfile.lock.json, class,,class circleci,circle.yml, clojure,,cjm:cljc:clojure clojurescript,,cljs:clojurescript -cloudfoundry,.cfignore, -cmake,,cmake:CMakeCache.txt +cloudfoundry,.cfignore,yml +cmake,,cmake:cmakecache.txt cobol,,cbl +codeql,,ql codacy,.codacy.yml:.codacy.yaml, codeclimate,.codeclimate.yml, codecov,codecov.yml:.codecov.yml, @@ -139,6 +153,7 @@ coffeescript,,coffee conan,conanfile.txt:conanfile.py, conda,.condarc, config,,plist:properties:env +commitlint,commitlint.config.js:.commitlintrc.js:.commitlintrc.json:.commitlintrc.yml, compass,, composer,composer.json:composer.lock, chef_cookbook,,ckbk @@ -147,7 +162,7 @@ coveralls,.coveralls.yml, cpp,,cpp cpp2,,cpp cpp3,,cpp -cppheader,,hpp +cppheader,,hpp:hh:hxx:h++ crowdin,crowdin.yml, crystal,,cr csharp,,csx:cs @@ -166,28 +181,32 @@ dal,,dal darcs,.boringignore, dartlang,,dart db,,db +dependabot,dependabot.yml, dependencies,dependencies.yml, -delphi,,pas:pas -django,,djt:html:html -dlang,,d:d:d:d +delphi,,pas +devcontainer,devcontainer.json, +django,,djt:html +dlang,,d diff,,diff -docker,docker-compose.yml:docker-compose.ci-build.yml:docker-compose.override.yml:docker-compose.vs.debug.yml:docker-compose.vs.release.yml:docker-cloud.yml,dockerfile:dockerignore -docker2,docker-compose.yml:docker-compose.ci-build.yml:docker-compose.override.yml:docker-compose.vs.debug.yml:docker-compose.vs.release.yml:docker-cloud.yml,dockerfile:dockerignore +docker,compose.yaml:compose.yml:docker-compose.yaml:docker-compose.yml:docker-compose.ci-build.yaml:docker-compose.ci-build.yml:docker-compose.override.yaml:docker-compose.override.yml:docker-compose.vs.debug.yaml:docker-compose.vs.debug.yml:docker-compose.vs.release.yaml:docker-compose.vs.release.yml:docker-cloud.yaml:docker-cloud.yml,dockerfile:dockerignore +docker2,compose.yaml:compose.yml:docker-compose.yaml:docker-compose.yml:docker-compose.ci-build.yaml:docker-compose.ci-build.yml:docker-compose.override.yaml:docker-compose.override.yml:docker-compose.vs.debug.yaml:docker-compose.vs.debug.yml:docker-compose.vs.release.yaml:docker-compose.vs.release.yml:docker-cloud.yaml:docker-cloud.yml,dockerfile:dockerignore dockertest,docker-compose.test.yml, dockertest2,docker-compose.test.yml, docpad,,eco docz,.doczrc:docz.js:docz.json:.docz.js:.docz.json:doczrc.js:doczrc.json:docz.config.js:docz.config.json, dojo,.dojorc, doxygen,,dox +drawio,,drawio:dio .drawio.png:.drawio.svg drone,.drone.yml:.drone.yml.sig, drools,,drl dotjs,,dot dustjs,,dust -dylan,,dylan:dylan +dvc,.dvc, +dylan,,dylan editorconfig,.editorconfig, edge,,edge edge2,,edge -eex,,eex:eex +eex,,eex ejs,,ejs elastic,,es elasticbeanstalk,, @@ -201,11 +220,13 @@ eps,,eps erb,,erb erlang,emakefile:.emakerfile,erl erlang2,emakefile:.emakerfile,erl -eslint,.eslintrc:.eslintignore:.eslintcache:.eslintrc.js:.eslintrc.json:.eslintrc.yaml:.eslintrc.yml, -eslint2,.eslintrc:.eslintignore:.eslintcache:.eslintrc.js:.eslintrc.json:.eslintrc.yaml:.eslintrc.yml, +eslint,.eslintrc:.eslintignore:.eslintcache:.eslintrc.js:.eslintrc.mjs:.eslintrc.cjs:.eslintrc.json:.eslintrc.yaml:.eslintrc.yml, +eslint2,.eslintrc:.eslintignore:.eslintcache:.eslintrc.js:.eslintrc.mjs:.eslintrc.cjs:.eslintrc.json:.eslintrc.yaml:.eslintrc.yml, excel,,xls:xlsx:xlsm:ods:fods excel2,,xls:xlsx:xlsm:ods:fods +expo,app.json:app.config.js:app.config.json:app.config.json5, falcon,,falcon +fauna,.faunarc,fql favicon,favicon.ico, fbx,,fbx firebase,.firebaserc, @@ -219,43 +240,51 @@ flow,.flowconfig, flutter,.flutter-plugins:.metadata, flutter_package,pubspec.lock:pubspec.yaml:.packages, font,,woff:woff2:ttf:otf:eot:pfa:pfb:sfd -fortran,,f:f:f:f +fortran,,f fossa,.fossaignore, fossil,ignore-glob, fsharp,,fs fsproj,,fsproj freemarker,,ftl +fthtml,,fthtml fusebox,fuse.js, galen,,gspec galen2,,gspec -git,.gitattributes:.gitconfig:.gitignore:.gitmodules:.gitkeep:.mailmap,git:git +git,.gitattributes:.gitconfig:.gitignore:.gitmodules:.gitkeep:.mailmap,git gamemaker,,gmx:gml gamemaker2,,yy:yyp:gml gamemaker81,,gml gatsby,gatsby-config.js:gatsby-config.ts:gatsby-node.js:gatsby-node.ts:gatsby-browser.js:gatsby-browser.ts:gatsby-ssr.js:gatsby-ssr.ts, gcode,,gcode +genstat,,gen gitlab,.gitlab-ci.yml, +gitpod,.gitpod.yaml:.gitpod.yml:gitpod.yaml:gitpod.yml, glide,glide.yml, +glitter,.glitterrc, glsl,,glsl +glyphs,,glyphs +gnuplot,,gp go,,go go_package,go.sum:go.mod, godot,,gd gradle,,gradle +gradle2,,gradle graphql,.gqlconfig,gql +graphql_config,.graphqlconfig:.graphqlconfig.yml:.graphqlconfig.yaml, graphviz,,gv greenkeeper,greenkeeper.json, gridsome,gridsome.config.js:gridsome.config.ts:gridsome.server.js:gridsome.server.ts:gridsome.client.js:gridsome.client.ts, groovy,,groovy groovy2,,groovy grunt,gruntfile.js:gruntfile.coffee:gruntfile.ts:gruntfile.babel.js:gruntfile.babel.coffee:gruntfile.babel.ts, -gulp,gulpfile.js:gulpfile.coffee:gulpfile.ts:gulpfile.babel.js:gulpfile.babel.coffee:gulpfile.babel.ts, +gulp,gulpfile.js:gulpfile.coffee:gulpfile.ts:gulpfile.mjs:gulpfile.esm.js:gulpfile.esm.coffee:gulpfile.esm.ts:gulpfile.esm.mjs:gulpfile.babel.js:gulpfile.babel.coffee:gulpfile.babel.ts:gulpfile.babel.mjs, haml,,haml handlebars,,hbs handlebars2,,hbs harbour,,prg haskell,,hs:lhs haskell2,,hs:lhs -haxe,haxelib.json,haxe:haxe:haxe +haxe,haxelib.json,haxe haxecheckstyle,checkstyle.json, haxedevelop,,hxproj helix,.p4ignore, @@ -263,18 +292,22 @@ helm,,helm.tpl hjson,,hjson hlsl,,hlsl homeassistant,,yaml +horusec,horusec-config.json, host,,hosts html,,html htmlhint,.htmlhintrc, http,,http -hunspell,,aff:aff -husky,.huskyrc:.huskyrc.js:.huskyrc.json:.huskyrc.yaml:.huskyrc.yml, +hunspell,,aff +husky,.huskyrc:husky.config.js:.huskyrc.js:.huskyrc.json:.huskyrc.yaml:.huskyrc.yml, +hy,,hy +hygen,,ejs.t +hypr,,hypr icl,,icl idris,,idr:lidr idrisbin,,ibc idrispkg,,ipkg image,,jpeg:jpg:gif:png:bmp:tiff:ico -imba,,imba +imba,,imba:imba2 inc,,inc:include infopath,,infopathxml:xsn:xsf:xtp2 informix,,4gl @@ -285,54 +318,63 @@ ionic,ionic.project:ionic.config.json, jake,jakefile:jakefile.js, janet,,janet jar,,jar +jasmine,jasmine.json, java,,java jbuilder,,jbuilder -jest,jest.config.js:jest.json:jest.config.json:.jestrc:.jestrc.js:.jestrc.json, +jest,jest.config.json:jest.config.base.json:jest.config.common.json:jest.config.ts:jest.config.base.ts:jest.config.common.ts:jest.json:.jestrc:.jestrc.js:.jestrc.json:jest.config.js:jest.config.cjs:jest.config.mjs:jest.config.base.js:jest.config.base.cjs:jest.config.base.mjs:jest.config.common.js:jest.config.common.cjs:jest.config.common.mjs:jest.config.babel.js:jest.config.babel.cjs:jest.config.babel.mjs, jest_snapshot,,js.snap:jsx.snap:ts.snap:tsx.snap jekyll,,jekyll -jenkins,,jenkins:jenkins:jenkins +jenkins,,jenkins jinja,,jinja jpm,.jpmignore, js,,js js_official,,js jsbeautify,.jsbeautifyrc:jsbeautifyrc:.jsbeautify:jsbeautify, jsconfig,jsconfig.json, +jscpd,.jscpd.json:jscpd-report.xml:jscpd-report.json:jscpd-report.html, jshint,.jshintrc:.jshintignore, jsmap,,js.map -json,,json:JSON-tmLanguage:jsonc -json_official,,json:JSON-tmLanguage:jsonc -json2,,json:JSON-tmLanguage:jsonc +json,,json:json-tmlanguage:jsonc +json_official,,json:json-tmlanguage:jsonc +json2,,json:json-tmlanguage:jsonc jsonnet,,jsonnet -json5,,json5:json5 +json5,,json5 jsonld,,jsonld:json-ld jsp,,jsp jss,,jss -julia,,jl:jl -julia2,,jl:jl +julia,,jl +julia2,,jl jupyter,,ipynb io,,io iodine,,id karma,karma.conf.js:karma.conf.coffee:karma.conf.ts, key,,key:pem kite,.kiteignore, -kitchenci,.kitchen.yml, +kitchenci,.kitchen.yml:kitchen.yml, kivy,,kv kos,,ks kotlin,,kt +kusto,,.kusto +latino,,lat layout,,master:layout.html:layout.htm layout,layout.html:layout.htm, lerna,lerna.json, less,,less +lex,,flex license,,enc -license,license:licence:license.md:license.txt:licence.md:licence.txt, +license,license:licence:copying:copying.lesser:license.md:license.txt:licence.md:licence.txt:copying.md:copying.txt:copying.lesser.md:copying.lesser.txt, +licensebat,.licrc, +lighthouse,.lighthouserc.js:.lighthouserc.json:.lighthouserc.yaml:.lighthouserc.yml, lisp,,lisp lime,,hxp lime,include.xml, lintstagedrc,.lintstagedrc:lint-staged.config.js:.lintstagedrc.js:.lintstagedrc.json:.lintstagedrc.yaml:.lintstagedrc.yml, liquid,,liquid livescript,,ls +lnk,,lnk locale,, log,,log:tlg +log,,log:tlg lolcode,,lol lsl,,lsl lua,,lua @@ -356,8 +398,9 @@ mercurial,.hgignore, meson,,meson.build meteor,, mjml,,mjml -mlang,,pq:pq +mlang,,pq mocha,mocha.opts:.mocharc.js:.mocharc.json:.mocharc.jsonc:.mocharc.yaml:.mocharc.yml, +modernizr,modernizr:modernizr.js:modernizrrc.js:.modernizr.js:.modernizrrc.js, mojolicious,,ep moleculer,moleculer.config.js:moleculer.config.json:moleculer.config.ts, mongo,,mongo @@ -389,25 +432,31 @@ nest_pipe_ts,,pipe.ts nest_service_js,,service.js nest_service_ts,,service.ts netlify,netlify.toml, +next,next.config.js, nginx,nginx.conf, -nim,,nim:nim +nim,,nim +nimble,,nimble ninja,build.ninja, +nix,,nix njsproj,,njsproj node,.node-version:.nvmrc, node2,.node-version:.nvmrc, nodemon,nodemon.json, npm,.npmignore:.npmrc:package.json:package-lock.json:npm-shrinkwrap.json, -nsi,,nsi:nsi:nsi:nsi -nsri,.nsrirc:.nsriignore:.nsrirc.js:.nsrirc.json:.nsrirc.yaml:.nsrirc.yml:.nsrirc.config.js, +nsi,,nsi +nsri,.nsrirc:.nsriignore:nsri.config.js:.nsrirc.js:.nsrirc.json:.nsrirc.yaml:.nsrirc.yml, nsri-integrity,.integrity.json, -nuget,,nupkg:nuspec:psmdcp +nuget,,nupkg:snupkg:nuspec:psmdcp +numpy,,npy:npz nunjucks,,nunj:njs:nunjucks nuxt,nuxt.config.js:nuxt.config.ts, nyc,.nycrc:.nycrc.json, objectivec,,m objectivecpp,,mm -ocaml,.merlin,ml:ml:ml +ocaml,.merlin,ml +ogone,,o3 onenote,,one:onepkg:onetoc:onetoc2:sig +openscad,,scad opencl,,cl:opencl openHAB,,things org,,org @@ -436,18 +485,20 @@ phpunit,phpunit:phpunit.xml:phpunit.xml.dist, phraseapp,.phraseapp.yml, pine,,pine pip,pipfile:pipfile.lock,requirements.txt -platformio,platformio.ini,dbgasm:dbgasm:dbgasm +pipeline,,pipeline +platformio,platformio.ini,dbgasm plantuml,,pu:plantuml:iuml:puml -plsql,,ddl:ddl +plsql,,ddl plsql_package,,pck plsql_package_body,,pkb plsql_package_header,,pkh plsql_package_spec,,pks +pnpm,pnpmfile.js:pnpm-lock.yaml:pnpm-workspace.yaml, poedit,,po:mo polymer,,polymer pony,,pony postcss,,pcss -postcssconfig,.postcssrc:.postcssrc.json:.postcssrc.yml:.postcssrc.js:postcss.config.js, +postcssconfig,.postcssrc:.postcssrc.json:.postcssrc.yaml:.postcssrc.yml:.postcssrc.ts:.postcssrc.js:.postcssrc.cjs:postcss.config.ts:postcss.config.js:postcss.config.cjs, powerpoint,,pot:potx:potm:pps:ppsx:ppsm:ppt:pptx:pptm:pa:ppa:ppam:sldm:sldx powerpoint2,,pot:potx:potm:pps:ppsx:ppsm:ppt:pptx:pptm:pa:ppa:ppam:sldm:sldx powershell,,ps1 @@ -460,15 +511,15 @@ powershell_psm2,,psm1 powershell_psd2,,psd1 precommit,.pre-commit-config.yaml, prettier,.prettierrc:.prettierignore, -prettier,prettier.config.js:prettier.config.ts:prettier.config.coffee, -prettier,.prettierrc.js:.prettierrc.json:.prettierrc.yml:.prettierrc.yaml, +prettier,prettier.config.js:prettier.config.cjs:prettier.config.ts:prettier.config.coffee, +prettier,.prettierrc.js:.prettierrc.cjs:.prettierrc.json:.prettierrc.json5:.prettierrc.yml:.prettierrc.yaml, prisma,,prisma processinglang,,pde procfile,procfile, progress,,w -prolog,,pro:P:pro +prolog,,pro:P prometheus,,rules -protobuf,,proto:proto +protobuf,,proto protractor,protractor.conf.js:protractor.conf.coffee:protractor.conf.ts, publisher,,pub:puz puppet,,pp @@ -476,6 +527,7 @@ pug,.jade-lintrc:.pug-lintrc:.jade-lint.json:.pug-lintrc.js:.pug-lintrc.json,pug purescript,,purs pyret,,arr python,,py +pytyped,py.typed, pyup,.pyup:.pyup.yml, q,,q qbs,,qbs @@ -490,7 +542,7 @@ rails,, rake,,rake rake,rakefile, raml,,raml -razor,,cshtml:cshtml +razor,,cshtml razzle,razzle.config.js, reactjs,,jsx reacttemplate,,rt @@ -498,22 +550,29 @@ reactts,,tsx reason,,re red,,red registry,,reg +rego,,rego rehype,.rehyperc:.rehypeignore:.rehyperc.js:.rehyperc.json:.rehyperc.yml:.rehyperc.yaml, remark,.remarkrc:.remarkignore:.remarkrc.js:.remarkrc.json:.remarkrc.yml:.remarkrc.yaml, renovate,.renovaterc:renovate.json:.renovaterc.json, +rescript,,res rest,,rst retext,.retextrc:.retextignore:.retextrc.js:.retextrc.json:.retextrc.yml:.retextrc.yaml, +rexx,,rex riot,,tag robotframework,,robot robots,robots.txt, -rollup,rollup.config.js:rollup.config.mjs:rollup.config.coffee:rollup.config.ts:rollup.config.common.js:rollup.config.common.mjs:rollup.config.common.coffee:rollup.config.common.ts:rollup.config.dev.js:rollup.config.dev.mjs:rollup.config.dev.coffee:rollup.config.dev.ts:rollup.config.prod.js:rollup.config.prod.mjs:rollup.config.prod.coffee:rollup.config.prod.ts, +rollup,rollup.config.js:rollup.config.cjs:rollup.config.mjs:rollup.config.coffee:rollup.config.ts:rollup.config.common.js:rollup.config.common.cjs:rollup.config.common.mjs:rollup.config.common.coffee:rollup.config.common.ts:rollup.config.dev.js:rollup.config.dev.cjs:rollup.config.dev.mjs:rollup.config.dev.coffee:rollup.config.dev.ts:rollup.config.prod.js:rollup.config.prod.cjs:rollup.config.prod.mjs:rollup.config.prod.coffee:rollup.config.prod.ts, +rmd,,rmd rproj,,rproj rspec,.rspec, rubocop,.rubocop.yml:.rubocop_todo.yml, ruby,,rb rust,,rs +rust_toolchain,rust-toolchain, +sails,.sailsrc, saltstack,,sls san,,san +sas,,sas sass,,sass sbt,,sbt scala,,scala @@ -522,9 +581,9 @@ scss,,scssm:scss scilab,,sce sdlang,,sdl sentry,.sentryclirc, -serverless,serverless.yml, +serverless,serverless.yml:serverless.json:serverless.js:serverless.ts, sequelize,.sequelizerc:.sequelizerc.js:.sequelizerc.json, -shaderlab,,shader +shaderlab,,unity:shader shell,,fish:sh sketch,,sketch slang,,slang @@ -533,7 +592,7 @@ slim,,slim sln,,sln sln2,,sln silverstripe,,ss -skipper,,eskip:eskip +skipper,,eskip smarty,,tpl snapcraft,snapcraft.yaml, snort,,snort @@ -541,6 +600,8 @@ snyk,.snyk, solidarity,.solidarity:.solidarity.json, solidity,,sol source,, +spacengine,,spe +sparql,,rq sqf,,sqf sql,,sql sqlite,,sqlite:sqlite3:db3 @@ -550,52 +611,61 @@ stan,,stan stata,,dta:do stencil,,stencil:html.stencil style,, -stylelint,.stylelintrc:.stylelintignore:.stylelintcache:stylelint.config.js:stylelint.config.json:stylelint.config.yaml:stylelint.config.yml:stylelint.config.ts:.stylelintrc.js:.stylelintrc.json:.stylelintrc.yaml:.stylelintrc.yml:.stylelintrc.ts, +stylelint,.stylelintrc:.stylelintignore:.stylelintcache:stylelint.config.js:stylelint.config.json:stylelint.config.yaml:stylelint.config.yml:stylelint.config.ts:stylelint.config.cjs:.stylelintrc.js:.stylelintrc.json:.stylelintrc.yaml:.stylelintrc.yml:.stylelintrc.ts:.stylelintrc.cjs, stylable,,st.css styled,,styled +stylish_haskell,.stylish-haskell.yaml, stylus,,styl storyboard,,storyboard -storybook,,story.js:story.jsx:story.ts:story.tsx:stories.js:stories.jsx:stories.ts:stories.tsx +storybook,,story.js:story.jsx:story.ts:story.tsx:story.mdx:stories.js:stories.jsx:stories.ts:stories.tsx:stories.mdx subversion,.svnignore, svelte,,svelte svg,,svg -swagger,,swagger:swagger +swagger,,swagger swift,package.pins,swift swig,,swig symfony,symfony.lock, systemd,,link systemverilog,,sv t4tt,,tt -tailwind,tailwind.js:tailwind.coffee:tailwind.ts:tailwind.config.js:tailwind.config.coffee:tailwind.config.ts, +tailwind,tailwind.js:tailwind.cjs:tailwind.coffee:tailwind.ts:tailwind.json:tailwind.config.js:tailwind.config.cjs:tailwind.config.coffee:tailwind.config.ts:tailwind.config.json, +teal,,teal tt,,tt2:tt3 tcl,,tcl:exp tera,,tera terraform,,tfstate:tf test,,tst +testcafe,.testcaferc.json, testjs,,test.js:test.jsx:test.mjs:spec.js:spec.jsx:spec.mjs testts,,test.ts:test.tsx:spec.ts:spec.tsx:e2e-test.ts:e2e-test.tsx:e2e-spec.ts:e2e-spec.tsx tex,,texi:tikz:sty:tex:bib:dtx -text,,csv:txt +text,,csv:tsv:txt textile,,textile +tiltfile,,tiltfile tfs,.tfignore, todo,,todo toml,,toml -tox,.ini, +tox,tox.ini, travis,.travis.yml, -tsconfig,tsconfig.json:tsconfig.app.json:tsconfig.spec.json:tsconfig.e2e.json:tsconfig.base.json:tsconfig.common.json:tsconfig.dev.json:tsconfig.development.json:tsconfig.staging.json:tsconfig.test.json:tsconfig.prod.json:tsconfig.production.json, +tsconfig,tsconfig.json:tsconfig.app.json:tsconfig.base.json:tsconfig.common.json:tsconfig.dev.json:tsconfig.development.json:tsconfig.e2e.json:tsconfig.prod.json:tsconfig.production.json:tsconfig.server.json:tsconfig.spec.json:tsconfig.staging.json:tsconfig.test.json:tsconfig.lib.json:tsconfig.lib.prod.json, +tsconfig_official,tsconfig.json:tsconfig.app.json:tsconfig.base.json:tsconfig.common.json:tsconfig.dev.json:tsconfig.development.json:tsconfig.e2e.json:tsconfig.prod.json:tsconfig.production.json:tsconfig.server.json:tsconfig.spec.json:tsconfig.staging.json:tsconfig.test.json:tsconfig.lib.json:tsconfig.lib.prod.json, tslint,tslint.json:tslint.yaml:tslint.yml, ttcn,,ttcn3 +tuc,,tuc twig,,twig +typedoc,typedoc.js:typedoc.json, typescript,,ts typescript_official,,ts typescriptdef,,d.ts typescriptdef_official,,d.ts typo3,,typoscript unibeautify,.unibeautifyrc:unibeautify.config.js:.unibeautifyrc.js:.unibeautifyrc.json:.unibeautifyrc.yaml:.unibeautifyrc.yml, +unlicense,unlicense:unlicence:unlicense.md:unlicense.txt:unlicence.md:unlicence.txt, vagrant,vagrantfile, vala,,vala vapi,,vapi vash,,vash +vapor,vapor.yml, vb,,vb vba,,cls vbhtml,,vbhtml @@ -607,6 +677,7 @@ vhdl,,vhdl video,,3g2:3gp:asf:amv:avi:divx:qt:f4a:f4b:f4p:f4v:flv:m2v:m4v:mkv:mk3d:mov:mp2:mp4:mpe:mpeg:mpeg2:mpg:mpv:nsv:ogv:rm:rmvb:svi:vob:webm:wmv view,, vim,.vimrc:.gvimrc,vim +vite,vite.config.js:vite.config.ts, vlang,,v volt,,volt vscode,.vscodeignore:launch.json:tasks.json:vscodeignore.json, @@ -619,30 +690,34 @@ vue,,vue vueconfig,.vuerc:vue.config.js, wallaby,wallaby.json:wallaby.js:wallaby.ts:wallaby.coffee:wallaby.conf.json:wallaby.conf.js:wallaby.conf.ts:wallaby.conf.coffee:.wallaby.json:.wallaby.js:.wallaby.ts:.wallaby.coffee:.wallaby.conf.json:.wallaby.conf.js:.wallaby.conf.ts:.wallaby.conf.coffee, watchmanconfig,.watchmanconfig, -wasm,,wasm:wasm:wasm +wasm,,wasm webp,,webp -webpack,webpack.base.conf.js:webpack.base.conf.coffee:webpack.base.conf.ts:webpack.common.js:webpack.common.coffee:webpack.common.ts:webpack.config.js:webpack.config.coffee:webpack.config.ts:webpack.config.base.js:webpack.config.base.coffee:webpack.config.base.ts:webpack.config.common.js:webpack.config.common.coffee:webpack.config.common.ts:webpack.config.dev.js:webpack.config.dev.coffee:webpack.config.dev.ts:webpack.config.development.js:webpack.config.development.coffee:webpack.config.development.ts:webpack.config.staging.js:webpack.config.staging.coffee:webpack.config.staging.ts:webpack.config.test.js:webpack.config.test.coffee:webpack.config.test.ts:webpack.config.prod.js:webpack.config.prod.coffee:webpack.config.prod.ts:webpack.config.production.js:webpack.config.production.coffee:webpack.config.production.ts:webpack.config.babel.js:webpack.config.babel.coffee:webpack.config.babel.ts:webpack.config.base.babel.js:webpack.config.base.babel.coffee:webpack.config.base.babel.ts:webpack.config.common.babel.js:webpack.config.common.babel.coffee:webpack.config.common.babel.ts:webpack.config.dev.babel.js:webpack.config.dev.babel.coffee:webpack.config.dev.babel.ts:webpack.config.development.babel.js:webpack.config.development.babel.coffee:webpack.config.development.babel.ts:webpack.config.staging.babel.js:webpack.config.staging.babel.coffee:webpack.config.staging.babel.ts:webpack.config.test.babel.js:webpack.config.test.babel.coffee:webpack.config.test.babel.ts:webpack.config.prod.babel.js:webpack.config.prod.babel.coffee:webpack.config.prod.babel.ts:webpack.config.production.babel.js:webpack.config.production.babel.coffee:webpack.config.production.babel.ts:webpack.dev.js:webpack.dev.coffee:webpack.dev.ts:webpack.dev.conf.js:webpack.dev.conf.coffee:webpack.dev.conf.ts:webpack.prod.js:webpack.prod.coffee:webpack.prod.ts:webpack.prod.conf.js:webpack.prod.conf.coffee:webpack.prod.conf.ts:webpack.mix.js:webpack.mix.coffee:webpack.mix.ts:webpack.test.conf.js:webpack.test.conf.coffee:webpack.test.conf.ts, +webpack,webpack.base.conf.js:webpack.base.conf.coffee:webpack.base.conf.ts:webpack.common.js:webpack.common.coffee:webpack.common.ts:webpack.config.js:webpack.config.coffee:webpack.config.ts:webpack.config.base.js:webpack.config.base.coffee:webpack.config.base.ts:webpack.config.common.js:webpack.config.common.coffee:webpack.config.common.ts:webpack.config.dev.js:webpack.config.dev.coffee:webpack.config.dev.ts:webpack.config.development.js:webpack.config.development.coffee:webpack.config.development.ts:webpack.config.staging.js:webpack.config.staging.coffee:webpack.config.staging.ts:webpack.config.test.js:webpack.config.test.coffee:webpack.config.test.ts:webpack.config.prod.js:webpack.config.prod.coffee:webpack.config.prod.ts:webpack.config.production.js:webpack.config.production.coffee:webpack.config.production.ts:webpack.config.babel.js:webpack.config.babel.coffee:webpack.config.babel.ts:webpack.config.base.babel.js:webpack.config.base.babel.coffee:webpack.config.base.babel.ts:webpack.config.common.babel.js:webpack.config.common.babel.coffee:webpack.config.common.babel.ts:webpack.config.dev.babel.js:webpack.config.dev.babel.coffee:webpack.config.dev.babel.ts:webpack.config.development.babel.js:webpack.config.development.babel.coffee:webpack.config.development.babel.ts:webpack.config.staging.babel.js:webpack.config.staging.babel.coffee:webpack.config.staging.babel.ts:webpack.config.test.babel.js:webpack.config.test.babel.coffee:webpack.config.test.babel.ts:webpack.config.prod.babel.js:webpack.config.prod.babel.coffee:webpack.config.prod.babel.ts:webpack.config.production.babel.js:webpack.config.production.babel.coffee:webpack.config.production.babel.ts:webpack.dev.js:webpack.dev.coffee:webpack.dev.ts:webpack.dev.conf.js:webpack.dev.conf.coffee:webpack.dev.conf.ts:webpack.prod.js:webpack.prod.coffee:webpack.prod.ts:webpack.prod.conf.js:webpack.prod.conf.coffee:webpack.prod.conf.ts:webpack.main.config.js:webpack.main.config.coffee:webpack.main.config.ts:webpack.mix.js:webpack.mix.coffee:webpack.mix.ts:webpack.plugins.js:webpack.plugins.coffee:webpack.plugins.ts:webpack.renderer.config.js:webpack.renderer.config.coffee:webpack.renderer.config.ts:webpack.rules.js:webpack.rules.coffee:webpack.rules.ts:webpack.test.conf.js:webpack.test.conf.coffee:webpack.test.conf.ts, +wenyan,,wy wercker,wercker.yml, wolfram,,wl word,,doc:docx:docm:dot:dotx:dotm:wll word2,,doc:docx:docm:dot:dotx:dotm:wll wpml,wpml-config.xml, -wurst,,wurst:wurst +wurst,,wurst wxml,,wxml wxss,,wxss xcode,,xcodeproj xfl,,xfl xib,,xib xliff,,xliff:xlf +xmake,,xmake.lua xml,,pex:tmlanguage:xml xquery,,xquery xsl,,xsl -yaml,,yaml:YAML-tmLanguage +yacc,,bison +yaml,,yaml:yaml-tmlanguage yamllint,.yamllint, yandex,.yaspellerrc:.yaspeller.json, yang,,yang -yarn,yarn.lock:.yarnrc:.yarnclean:.yarn-integrity:.yarn-metadata.json:.yarnignore, +yarn,yarn.lock:.yarnrc:.yarnrc.yml:.yarnclean:.yarn-integrity:.yarn-metadata.json:.yarnignore, yeoman,.yo-rc.json, -zeit,now.json:.nowignore, -zip,,zip:rar:7z:tar:gz:bzip2:xz:bz2 -zip2,,zip:rar:7z:tar:gz:bzip2:xz:bz2 +zeit,now.json:.nowignore:vercel.json:.vercelignore, +zig,,zig +zip,,zip:rar:7z:tar:tgz:bz:gz:bzip2:xz:bz2:zipx +zip2,,zip:rar:7z:tar:tgz:bz:gz:bzip2:xz:bz2:zipx \ No newline at end of file diff --git a/src/assets/icons/folder-icons-index.csv b/src/assets/icons/folder-icons-index.csv index 234657c..62f18f4 100644 --- a/src/assets/icons/folder-icons-index.csv +++ b/src/assets/icons/folder-icons-index.csv @@ -1,7 +1,7 @@ folder, root_folder, android,android -api,api:.api +api,api:.api:apis:.apis app,app:.app arangodb,arangodb:arango asset,assets:.assets @@ -11,6 +11,7 @@ aws,aws:.aws azure,azure:.azure azurepipelines,azure-pipelines:.azure-pipelines binary,bin:.bin +bloc,blocs:bloc blueprint,blueprint:.blueprint:blueprints:.blueprints bower,bower_components buildkite,.buildkite @@ -18,24 +19,29 @@ cake,cake:.cake certificate,certificates:.certificates:certs:certs. chef,chef:.chef circleci,.circleci -controller,controllers:.controllers:handlers:.handlers -component,components:.components:widgets +controller,controller:controllers:.controllers:handlers:.handlers +component,component:components:.components:widgets composer,composer:.composer cli,cli:cmd:command:commands:commandline:console -client,client +client,client:clients cmake,.cmake:cmake -config,config:.config:configs:.configs:configuration:.configuration:configurations:.configurations:setting:.setting:settings:.settings:ini:.ini:initializers:.initializers +config,conf:.conf:config:.config:configs:.configs:configuration:.configuration:configurations:.configurations:setting:.setting:settings:.settings:ini:.ini:initializers:.initializers coverage,coverage css,css:_css +cubit,cubits:cubit cypress,cypress +dapr,.dapr:dapr db,db:database:sql:data:repo:repository:repositories -debian,debian -dist,dist:dists:out:outs:export:exports:build:builds:release:releases:target:targets +debian,debian:deb +dependabot,.dependabot +devcontainer,.devcontainer +dist,dist:.dist:dists:out:outs:export:exports:build:.build:builds:release:releases:target:targets docker,docker:.docker docs,docs:doc e2e,e2e elasticbeanstalk,.elasticbeanstalk:.ebextensions electron,electron +expo,.expo:.expo-shared favicon,favicon:favicons flow,flow:flow-typed fonts,fonts:font:fnt @@ -48,18 +54,20 @@ graphql,graphql grunt,grunt gulp,gulp:gulpfile.js:gulpfile.coffee:gulpfile.ts:gulpfile.babel.js:gulpfile.babel.coffee:gulpfile.babel.ts haxelib,.haxelib:haxe_libraries -helper,helpers:.helpers +helper,helper:.helper:helpers:.helpers +hook,hook:.hook:hooks:.hooks +husky,.husky idea,.idea images,images:image:img:icons:icon:ico:screenshot:screenshots:svg include,include:includes:incl:inc:.include:.includes:.incl:.inc:_include:_includes:_incl:_inc -interfaces,interfaces +interfaces,interface:interfaces ios,ios js,js json,json json_official,json kubernetes,kubernetes:k8s:kube:kuber:.kubernetes:.k8s:.kube:.kuber less,less:_less -library,lib:.lib:library +library,lib:libs:.lib:.libs:library:libraries linux,linux locale,lang:language:languages:locale:locales:_locale:_locales:internationalization:globalization:localization:i18n:g11n:l10n log,log:logs @@ -67,14 +75,15 @@ macos,macos:darwin mariadb,mariadb:maria maven,.mvn memcached,memcached:.memcached -middleware,middleware +middleware,middleware:middlewares mjml,mjml:.mjml minikube,minikube:minik8s:minikuber mock,mocks:.mocks:__mocks__ -model,models:.models:entities:.entities +model,model:.model:models:.models:entities:.entities module,modules mongodb,mongodb:mongo mysql,mysqldb:mysql +next,.next nginx,nginx:conf.d node,node_modules notification,notification:notifications:event:events @@ -92,20 +101,21 @@ ravendb,ravendb route,route:routes:_route:_routes:routers redux,redux meteor,.meteor +nuxt,.nuxt sass,sass:scss:_sass:_scss script,script:scripts server,server -services,services +services,service:services src,src:source:sources sso,sso -story,stories:__stories__ +story,story:stories:__stories__:.storybook style,style:styles test,tests:.tests:test:.test:__tests__:__test__:spec:.spec:specs:.specs temp,temp:.temp:tmp:.tmp template,template:.template:templates:.templates theme,theme:themes travis,.travis -tools,tools:.tools:util:utils +tools,tool:tools:.tools:util:utils typescript,typescript:ts typings,typings:@types typings2,typings:@types @@ -122,4 +132,4 @@ vscode_test2,.vscode-test vscode_test3,.vscode-test webpack,webpack windows,windows:win32 -www,www:wwwroot +www,www:wwwroot \ No newline at end of file diff --git a/src/components/DiffStatGraph.tsx b/src/components/DiffStatGraph.tsx new file mode 100644 index 0000000..7aaa2dd --- /dev/null +++ b/src/components/DiffStatGraph.tsx @@ -0,0 +1,37 @@ +import * as React from 'react' +import { resolveDiffGraphMeta } from 'utils/general' +import { Icon } from './Icon' + +export function DiffStatGraph({ + diff: { status, changes, additions, deletions }, +}: { + diff: Required['diff'] +}) { + const { g, r, w } = resolveDiffGraphMeta(additions, deletions, changes) + + const children: React.ReactNode[] = [] + for (let i = 0; i < g; i++) + children.push() + for (let i = 0; i < r; i++) + children.push() + for (let i = 0; i < w; i++) + children.push() + + return ( + + + {children} + + ) +} diff --git a/src/components/DiffStatText.tsx b/src/components/DiffStatText.tsx new file mode 100644 index 0000000..2f8715c --- /dev/null +++ b/src/components/DiffStatText.tsx @@ -0,0 +1,34 @@ +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 index 8abcc59..931e1ad 100644 --- a/src/components/FileExplorer.tsx +++ b/src/components/FileExplorer.tsx @@ -17,6 +17,8 @@ import { useOnLocationChange } from 'utils/hooks/useOnLocationChange' import { useOnPJAXDone } from 'utils/hooks/usePJAX' 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' @@ -46,17 +48,27 @@ const RawFileExplorer: React.FC = function RawFileExplor searched, } = props const { - value: { accessToken, compressSingletonFolder, searchMode, commentToggle }, + 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)) + visibleNodesGenerator.search( + searchModes[searchMode].getSearchParams(searchKey), + restoreExpandedFolders, + ) } }, - [updateSearchKey, visibleNodesGenerator], + [updateSearchKey, visibleNodesGenerator, restoreExpandedFolders], ) const stateContext = useLoadedContext(SideBarStateContext) @@ -74,8 +86,8 @@ const RawFileExplorer: React.FC = function RawFileExplor }, [setUpTree, metaData, compressSingletonFolder, accessToken]) React.useEffect(() => { - if (visibleNodes?.focusedNode) focusFileExplorer() - }) + focusFileExplorer() + }, []) const renderActions: ((node: TreeNode) => React.ReactNode) | undefined = React.useMemo(() => { const renderGoToButton = (node: TreeNode): React.ReactNode => ( @@ -106,14 +118,28 @@ const RawFileExplorer: React.FC = function RawFileExplor ) : undefined const renderFileCommentAmounts = (node: TreeNode): React.ReactNode => - node.comments !== undefined && - node.comments > 0 && ( - - {node.comments > 9 ? '9+' : node.comments} + 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) @@ -121,7 +147,7 @@ const RawFileExplorer: React.FC = function RawFileExplor return renders.length ? node => renders.map((render, i) => {render(node)}) : undefined - }, [goTo, onSearch, searched, searchMode, commentToggle]) + }, [goTo, onSearch, searched, searchMode, commentToggle, showDiffInText]) const renderLabelText = React.useCallback( (node: TreeNode) => searchModes[searchMode].renderNodeLabelText(node, searchKey), @@ -167,13 +193,15 @@ const RawFileExplorer: React.FC = function RawFileExplor )} {({ width = 0, height = 0 }) => ( - +
+ +
)}
diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx index d3f8eb4..1204d18 100644 --- a/src/components/Icon.tsx +++ b/src/components/Icon.tsx @@ -3,6 +3,12 @@ import { ChevronRightIcon as ChevronRight, ClockIcon as Clock, CommentIcon as Comment, + DiffAddedIcon as DiffAdded, + DiffIcon as Diff, + DiffIgnoredIcon as DiffIgnored, + DiffModifiedIcon as DiffModified, + DiffRemovedIcon as DiffRemoved, + DiffRenamedIcon as DiffRenamed, FileCodeIcon as FileCode, FileIcon as File, FileMediaIcon as FileMedia, @@ -18,7 +24,7 @@ import { 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' @@ -27,6 +33,12 @@ const iconToComponentMap = { Search, Clock, Comment, + Diff, + DiffAdded, + DiffIgnored, + DiffModified, + DiffRemoved, + DiffRenamed, Hourglass, Submodule, Grabber, @@ -60,6 +72,12 @@ const typeToIconComponentMap: { pin: 'Pin', tab: 'Tab', gear: 'Gear', + diff: 'Diff', + diffAdded: 'DiffAdded', + diffIgnored: 'DiffIgnored', + diffModified: 'DiffModified', + diffRemoved: 'DiffRemoved', + diffRenamed: 'DiffRenamed', folder: 'ChevronRight', 'chevron-down': 'ChevronDown', 'go-to': 'Reply', diff --git a/src/components/MetaBar.tsx b/src/components/MetaBar.tsx index 7696872..8a41e95 100644 --- a/src/components/MetaBar.tsx +++ b/src/components/MetaBar.tsx @@ -2,6 +2,8 @@ import { BranchName, Breadcrumb, Flex, Text } from '@primer/components' import { GitBranchIcon } from '@primer/octicons-react' import { platform } from 'platforms' import * as React from 'react' +import { isOpenInNewWindowClick } from 'utils/general' +import { loadWithPJAX } from 'utils/hooks/usePJAX' type Props = { metaData: MetaData @@ -9,12 +11,14 @@ type Props = { export function MetaBar({ metaData }: Props) { const { userName, repoName, branchName } = metaData - const { repoUrl, userUrl } = platform.resolveUrlFromMetaData(metaData) + const { repoUrl, userUrl, branchUrl } = platform.resolveUrlFromMetaData(metaData) return ( <> - {userName} - + + {userName} + + {repoName} @@ -22,7 +26,18 @@ export function MetaBar({ metaData }: Props) {
- + { + if (isOpenInNewWindowClick(e)) return + + e.preventDefault() + loadWithPJAX(branchUrl, e.currentTarget) + }} + {...platform.delegatePJAXProps?.()} + > {branchName || '...'} diff --git a/src/components/Node.tsx b/src/components/Node.tsx index 8fa2ff0..1b8b2b0 100644 --- a/src/components/Node.tsx +++ b/src/components/Node.tsx @@ -1,8 +1,8 @@ import { useConfigs } from 'containers/ConfigsContext' +import { platform } from 'platforms' import * as React from 'react' import { cx } from 'utils/cx' -import { OperatingSystems, os } from 'utils/general' -import { getFileIconSrc, getFolderIconSrc } from 'utils/parseIconMapCSV' +import { getFileIconURL, getFolderIconURL } from 'utils/parseIconMapCSV' import { Icon } from './Icon' function getIconType(node: TreeNode) { @@ -42,21 +42,11 @@ export function Node({ return ( { - if ( - (os === OperatingSystems.macOS && event.metaKey) || - (os === OperatingSystems.Linux && event.ctrlKey) || - (os === OperatingSystems.Windows && event.ctrlKey) - ) { - // The default behavior, open in new tab - return - } - - onClick(event, node) - }} + onClick={event => onClick(event, node)} className={cx(`node-item`, { focused, disabled: node.accessDenied, expanded, compact })} style={{ ...style, paddingLeft: `${10 + (compact ? 10 : 20) * depth}px` }} title={node.path} + {...platform.delegatePJAXProps?.({ node })} >
@@ -81,7 +71,7 @@ const NodeItemIcon = React.memo(function NodeItemIcon({ } = useConfigs() const src = React.useMemo( - () => (node.type === 'tree' ? getFolderIconSrc(node, open) : getFileIconSrc(node)), + () => (node.type === 'tree' ? getFolderIconURL(node, open) : getFileIconURL(node)), [open], ) diff --git a/src/components/ResizeHandler.tsx b/src/components/ResizeHandler.tsx index 177de70..05692f9 100644 --- a/src/components/ResizeHandler.tsx +++ b/src/components/ResizeHandler.tsx @@ -1,10 +1,10 @@ import { Icon } from 'components/Icon' import * as React from 'react' -import { Size } from './SideBarBodyWrapper' +import { Size2D } from './SideBarBodyWrapper' type Props = { - size: Size - onResize(size: Size): void + size: Size2D + onResize(size: Size2D): void onResetSize?(): void onResizeStateChange?(state: ResizeState): void style?: React.CSSProperties @@ -12,55 +12,13 @@ type Props = { type ResizeState = 'idle' | 'resizing' -export function HorizontalResizeHandler({ - onResize, - onResetSize, - onResizeStateChange, - size, - style, -}: Props) { - const pointerDown = React.useRef(false) - const startX = React.useRef(0) - const baseSize = React.useRef(size) - const latestPropSize = React.useRef(size) - - React.useEffect(() => { - latestPropSize.current = size - }, [size]) - - const onPointerDown = React.useCallback(({ clientX }: React.MouseEvent) => { - startX.current = clientX - pointerDown.current = true - baseSize.current = latestPropSize.current - onResizeStateChange?.('resizing') - }, []) - - React.useEffect(() => { - const onPointerMove = ({ clientX }: MouseEvent) => { - if (!pointerDown.current) return - const shift = clientX - startX.current - onResize(baseSize.current + shift) - } - window.addEventListener('mousemove', onPointerMove) - return () => window.removeEventListener('mousemove', onPointerMove) - }, [onResize]) - - React.useEffect(() => { - const onPointerUp = () => { - if (pointerDown.current) { - pointerDown.current = false - baseSize.current = latestPropSize.current - onResizeStateChange?.('idle') - } - } - window.addEventListener('mouseup', onPointerUp) - return () => window.removeEventListener('mouseup', onPointerUp) - }, []) +export function ResizeHandler({ onResize, onResetSize, onResizeStateChange, size, style }: Props) { + const { onPointerDown } = useResizeHandler(size, onResize, { onResizeStateChange }) return (
@@ -68,3 +26,61 @@ export function HorizontalResizeHandler({
) } + +export function useResizeHandler( + size: Size2D, + onResize: (size: Size2D) => void, + { + onResizeStateChange, + onClick, + }: Partial<{ + onResizeStateChange: (state: ResizeState) => void + onClick: (e: PointerEvent) => void + }> = {}, +) { + const pointerDown = React.useRef(false) + const pointerMoved = React.useRef(false) + const initialSizeRef = React.useRef([0, 0]) + const baseSize = React.useRef(size) + const latestPropSize = React.useRef(size) + + React.useEffect(() => { + latestPropSize.current = size + }, [size]) + + React.useEffect(() => { + const onPointerMove = ({ clientX, clientY }: PointerEvent) => { + if (!pointerDown.current) return + pointerMoved.current = true + const [x, y] = baseSize.current + onResize([x + clientX - initialSizeRef.current[0], y + clientY - initialSizeRef.current[1]]) + } + window.addEventListener('pointermove', onPointerMove) + return () => window.removeEventListener('pointermove', onPointerMove) + }, [onResize]) + + React.useEffect(() => { + const onPointerUp = (e: PointerEvent) => { + if (pointerDown.current) { + pointerDown.current = false + + if (!pointerMoved.current) onClick?.(e) + pointerMoved.current = false + + baseSize.current = latestPropSize.current + onResizeStateChange?.('idle') + } + } + window.addEventListener('pointerup', onPointerUp) + return () => window.removeEventListener('pointerup', onPointerUp) + }, []) + + const onPointerDown = React.useCallback(({ clientX, clientY }: React.PointerEvent) => { + pointerDown.current = true + initialSizeRef.current = [clientX, clientY] + baseSize.current = latestPropSize.current + onResizeStateChange?.('resizing') + }, []) + + return { onPointerDown } +} diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 9f21e50..f3d435c 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -15,6 +15,12 @@ export function SearchBar({ onSearch, onFocus, value }: Props) { const configs = useConfigs() const { searchMode } = configs.value + const toggleButtonDescription = `${ + searchMode === 'regex' + ? 'Match file name with regular expression.' + : 'Match file path sequence with input.' + } Click to toggle.` + return (
diff --git a/src/components/SideBar.tsx b/src/components/SideBar.tsx index e0d4380..a351b38 100644 --- a/src/components/SideBar.tsx +++ b/src/components/SideBar.tsx @@ -13,8 +13,7 @@ import * as DOMHelper from 'utils/DOMHelper' import { run } from 'utils/general' import { useCatchNetworkError } from 'utils/hooks/useCatchNetworkError' import { useLoadedContext } from 'utils/hooks/useLoadedContext' -import { loadWithPJAX, useOnPJAXDone, usePJAX } from 'utils/hooks/usePJAX' -import { useProgressBar } from 'utils/hooks/useProgressBar' +import { useOnPJAXDone, usePJAX } from 'utils/hooks/usePJAX' import { useStateIO } from 'utils/hooks/useStateIO' import { SideBarErrorContext } from '../containers/ErrorContext' import { RepoContext } from '../containers/RepoContext' @@ -98,7 +97,6 @@ export function SideBar() { platform.usePlatformHooks?.() usePJAX() - useProgressBar() // Hide sidebar when error due to auth but token is set #128 const hideSidebarOnInvalidToken: boolean = @@ -128,6 +126,7 @@ export function SideBar() { })} baseSize={baseSize} onLeave={sidebarToggleMode === 'float' ? () => setShowSideBar(false) : undefined} + sizeVariableMountPoint={sidebarToggleMode === 'persistent' ? document.body : undefined} >
diff --git a/src/components/SideBarBodyWrapper.tsx b/src/components/SideBarBodyWrapper.tsx index d0b1c10..63dd118 100644 --- a/src/components/SideBarBodyWrapper.tsx +++ b/src/components/SideBarBodyWrapper.tsx @@ -1,28 +1,36 @@ -import { HorizontalResizeHandler } from 'components/ResizeHandler' +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 { setResizingState } from 'utils/DOMHelper' +import { setCSSVariable } from 'utils/DOMHelper' import * as features from 'utils/features' -import { useCSSVariable } from 'utils/hooks/useCSSVariable' -export type Size = number +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() @@ -34,27 +42,50 @@ export function SideBarBodyWrapper({ const { width } = useWindowSize() React.useEffect(() => { - if (size > width - MINIMAL_CONTENT_VIEWPORT_WIDTH) - setSize(width - MINIMAL_CONTENT_VIEWPORT_WIDTH) - else if (size < MINIMAL_WIDTH) setSize(MINIMAL_WIDTH) + const safeSize = getSafeSize(size, width) + if (safeSize !== size) setSize(safeSize) }, [width, size]) - - React.useEffect(() => { - setResizingState(true) - const timer = setTimeout(() => setResizingState(false), 100) - return () => clearTimeout(timer) - }, [width, size]) - - useCSSVariable('--gitako-width', `${size}px`) + const bodyWrapperRef = React.useRef(null) useDebounce(() => configContext.onChange({ sideBarWidth: size }), 100, [size]) - const onResize = React.useCallback((size: number) => { - // do NOT merge this with the above similar effect, side bar will jump otherwise - if (size > width - MINIMAL_CONTENT_VIEWPORT_WIDTH) - setSize(width - MINIMAL_CONTENT_VIEWPORT_WIDTH) - else if (size < MINIMAL_WIDTH) setSize(MINIMAL_WIDTH) - else setSize(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 => { @@ -64,17 +95,25 @@ export function SideBarBodyWrapper({ [onLeave], ) + const newLocal: [number, number] = React.useMemo(() => [size, size], [size]) return ( -
+
{children}
{features.resize && ( - setSize(defaultConfigs.sideBarWidth)} + onResetSize={() => { + setSize(defaultConfigs.sideBarWidth) + apply(sizeVariableMountPoint, defaultConfigs.sideBarWidth) + }} onResizeStateChange={state => { blockLeaveRef.current = state === 'resizing' }} - size={size} + size={newLocal} /> )}
diff --git a/src/components/SizeObserver.tsx b/src/components/SizeObserver.tsx index 0280451..9739e2f 100644 --- a/src/components/SizeObserver.tsx +++ b/src/components/SizeObserver.tsx @@ -19,16 +19,6 @@ export function SizeObserver({ type = 'div', children, ...rest }: Props) { height: undefined, }) - const safeSetSize = React.useCallback(function safeSetSize(rect: DOMRectReadOnly) { - // requestAnimationFrame fixes "ResizeObserver loop limit exceeded" error - requestAnimationFrame(() => - setSize({ - width: rect.width, - height: rect.height, - }), - ) - }, []) - React.useEffect(() => { if (ref.current) { if (features.resize) { @@ -36,7 +26,7 @@ export function SizeObserver({ type = 'div', children, ...rest }: Props) { const entry = entries[0] if (!entry) return const rect = entry.contentRect - safeSetSize(rect) + setSize(rect) }) observer.observe(ref.current) return () => observer.disconnect() diff --git a/src/components/ToggleShowButton.tsx b/src/components/ToggleShowButton.tsx index 243e3c7..fada7ec 100644 --- a/src/components/ToggleShowButton.tsx +++ b/src/components/ToggleShowButton.tsx @@ -1,33 +1,34 @@ -import iconSrc from 'assets/icons/Gitako.png' +import iconURL from 'assets/icons/Gitako.png' import { useConfigs } from 'containers/ConfigsContext' import * as React from 'react' import { useDebounce, useWindowSize } from 'react-use' import { cx } from 'utils/cx' import { Icon } from './Icon' +import { useResizeHandler } from './ResizeHandler' type Props = { error?: string | null className?: React.HTMLAttributes['className'] onHover?: React.HTMLAttributes['onMouseEnter'] -} & Pick, 'onClick'> + onClick?: (e: PointerEvent) => void +} + +const buttonHeight = 42 + +function getSafeDistance(y: number, height: number) { + return Math.max(0, Math.min(y, height - buttonHeight)) +} export function ToggleShowButton({ error, className, onClick, onHover }: Props) { const ref = React.useRef(null) const config = useConfigs() const [distance, setDistance] = React.useState(config.value.toggleButtonVerticalDistance) const { height } = useWindowSize() - const buttonHeight = 42 React.useEffect(() => { // make sure it is inside viewport - if (height - buttonHeight < distance) { - setDistance(Math.max(0, height - buttonHeight)) - } + const safeDistance = getSafeDistance(distance, height) + if (safeDistance !== distance) setDistance(safeDistance) }, [height, distance]) - React.useLayoutEffect(() => { - if (ref.current) { - ref.current.style.top = distance + 'px' - } - }, [distance]) // updating context useDebounce( @@ -36,42 +37,40 @@ export function ToggleShowButton({ error, className, onClick, onHover }: Props) [distance], ) - const toggleIconMode = config.value.toggleButtonContent + React.useEffect(() => { + if (ref.current) { + ref.current.style.top = distance + 'px' + } + }, []) + const { onPointerDown } = useResizeHandler( + [distance, distance], + ([, y]) => { + const distance = getSafeDistance(y, height) + setDistance(distance) + if (ref.current) { + ref.current.style.top = distance + 'px' + } + }, + { onClick }, + ) + return (
{error && {error}}
) } - -function hideDragPreview(event: React.DragEvent) { - const img = new Image() - const EMPTY_IMAGE_BASE64 = - 'data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=' - img.src = EMPTY_IMAGE_BASE64 - event.dataTransfer.setDragImage(img, 0, 0) -} diff --git a/src/components/settings/FileTreeSettings.tsx b/src/components/settings/FileTreeSettings.tsx index 337ab54..25c823e 100644 --- a/src/components/settings/FileTreeSettings.tsx +++ b/src/components/settings/FileTreeSettings.tsx @@ -76,6 +76,13 @@ export function FileTreeSettings(props: React.PropsWithChildren) { tooltip: 'Merge folders and their only child folder to make UI more compact.', }} /> + ) { tooltip: 'Show number of comments next to file names in Pull Requests.', }} /> + {reloadHint}
} )} - +
- Report bug / Request feature. + Report bug + + {' / '} + + Discuss feature
diff --git a/src/driver/core/FileExplorer.ts b/src/driver/core/FileExplorer.ts index 6f82fc1..b17371e 100644 --- a/src/driver/core/FileExplorer.ts +++ b/src/driver/core/FileExplorer.ts @@ -3,7 +3,8 @@ import { GetCreatedMethod, MethodCreator } from 'driver/connect' import { platform } from 'platforms' import { Config } from 'utils/config/helper' import * as DOMHelper from 'utils/DOMHelper' -import { OperatingSystems, os } from 'utils/general' +import { isOpenInNewWindowClick, OperatingSystems, os } from 'utils/general' +import { loadWithPJAX } from 'utils/hooks/usePJAX' import { VisibleNodes, VisibleNodesGenerator } from 'utils/VisibleNodesGenerator' export type Props = { @@ -11,7 +12,6 @@ export type Props = { freeze: boolean accessToken: string | undefined config: Config - loadWithPJAX(url: string): void catchNetworkErrors: (fn: () => T) => Promise } @@ -49,158 +49,146 @@ export const setUpTree: BoundMethodCreator< config: Pick }, ] -> = dispatch => ({ stateContext, metaData, config }) => { - const { - props: { catchNetworkErrors }, - } = dispatch.get() +> = + dispatch => + ({ stateContext, metaData, config }) => { + const { + props: { catchNetworkErrors }, + } = dispatch.get() - catchNetworkErrors(async () => { - const { userName, repoName, branchName } = metaData + catchNetworkErrors(async () => { + const { userName, repoName, branchName } = metaData - stateContext.onChange('tree-loading') - const { root: treeRoot, defer = false } = await platform.getTreeData( - { - branchName: branchName, - userName, - repoName, - }, - '/', - true, - config.accessToken, - ) + stateContext.onChange('tree-loading') + const { root: treeRoot, defer = false } = await platform.getTreeData( + { + branchName: branchName, + userName, + repoName, + }, + '/', + true, + config.accessToken, + ) - stateContext.onChange('tree-rendering') - dispatch.set({ defer }) + 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 - }, - }) - dispatch.set({ visibleNodesGenerator }) - visibleNodesGenerator.onUpdate(visibleNodes => dispatch.set({ visibleNodes })) - - if (platform.shouldExpandAll?.()) { - const unsubscribe = visibleNodesGenerator.onUpdate(visibleNodes => { - unsubscribe() - visibleNodes.nodes.forEach(node => - dispatch.call(toggleNodeExpansion, node, { recursive: true }), - ) + const visibleNodesGenerator = new VisibleNodesGenerator({ + root: treeRoot, + compress: config.compressSingletonFolder, + async getTreeData(path) { + const { root } = await platform.getTreeData(metaData, path, false, config.accessToken) + return root + }, }) - } else { - const targetPath = platform.getCurrentPath(metaData.branchName) - if (targetPath) dispatch.call(goTo, targetPath) - } + dispatch.set({ visibleNodesGenerator }) + visibleNodesGenerator.onUpdate(visibleNodes => dispatch.set({ visibleNodes })) - stateContext.onChange('tree-rendered') - }) -} + if (platform.shouldExpandAll?.()) { + const unsubscribe = visibleNodesGenerator.onUpdate(visibleNodes => { + unsubscribe() + visibleNodes.nodes.forEach(node => + dispatch.call(toggleNodeExpansion, node, { recursive: true }), + ) + }) + } else { + const targetPath = platform.getCurrentPath(metaData.branchName) + if (targetPath) dispatch.call(goTo, targetPath) + } -export const handleKeyDown: BoundMethodCreator<[React.KeyboardEvent]> = dispatch => event => { - const { - state: { searched, visibleNodes }, - props: { loadWithPJAX }, - } = 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) - } + stateContext.onChange('tree-rendered') + }) } - 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 +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) + } + } - case 'ArrowDown': - // focus on next node - handleVerticalMove(focusedNodeIndex + 1) - break - - case 'ArrowLeft': - if (wouldBlockHistoryNavigation(event)) { - muteEvent = false + 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 - } - 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) + + case 'ArrowDown': + // focus on next node + handleVerticalMove(focusedNodeIndex + 1) + break + + case 'ArrowLeft': + if (wouldBlockHistoryNavigation(event)) { + muteEvent = false + break } - } - 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) - } + dispatch.call(toggleNodeExpansion, focusedNode, { recursive: event.altKey }) } else { - dispatch.call(toggleNodeExpansion, focusedNode, { recursive: event.altKey }) + // 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) + } } - } else if (focusedNode.type === 'blob') { - if (focusedNode.url) loadWithPJAX(focusedNode.url) - } 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 { + 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') { - dispatch.call(toggleNodeExpansion, focusedNode, { recursive: event.altKey }) + 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') { - if (focusedNode.url) loadWithPJAX(focusedNode.url) + 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]) + 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 @@ -208,9 +196,27 @@ export const handleKeyDown: BoundMethodCreator<[React.KeyboardEvent]> = dispatch 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) @@ -231,18 +237,17 @@ export const goTo: BoundMethodCreator<[string[]]> = dispatch => path => { }) } -export const setExpand: BoundMethodCreator<[TreeNode, boolean]> = dispatch => async ( - node, - expand = false, -) => { - const { - state: { visibleNodesGenerator }, - } = dispatch.get() - if (!visibleNodesGenerator) return +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) -} + await visibleNodesGenerator.setExpand(node, expand) + dispatch.call(focusNode, node) + } export const toggleNodeExpansion: BoundMethodCreator< [ @@ -251,30 +256,35 @@ export const toggleNodeExpansion: BoundMethodCreator< recursive?: boolean }, ] -> = dispatch => async (node, { recursive = false }) => { - const { - state: { visibleNodesGenerator }, - } = dispatch.get() - if (!visibleNodesGenerator) return +> = + dispatch => + async (node, { recursive = false }) => { + const { + state: { visibleNodesGenerator }, + } = dispatch.get() + if (!visibleNodesGenerator) return - visibleNodesGenerator.focusNode(node) - await visibleNodesGenerator.toggleExpand(node, recursive) -} + 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 +export const focusNode: BoundMethodCreator<[TreeNode | null]> = + dispatch => (node: TreeNode | null) => { + const { + state: { visibleNodesGenerator }, + } = dispatch.get() + if (!visibleNodesGenerator) return - visibleNodesGenerator.focusNode(node) -} + visibleNodesGenerator.focusNode(node) + } export const onNodeClick: BoundMethodCreator< [React.MouseEvent, TreeNode] > = dispatch => (event, node) => { + if (isOpenInNewWindowClick(event)) return + const preventDefault = !(node.type === 'blob' && node.url?.includes('#')) if (preventDefault) event.preventDefault() @@ -289,12 +299,9 @@ export const onNodeClick: BoundMethodCreator< (recursiveToggleFolder === 'alt' && event.altKey) dispatch.call(toggleNodeExpansion, node, { recursive }) } else if (node.type === 'blob') { - const { - props: { loadWithPJAX }, - } = dispatch.get() dispatch.call(focusNode, node) if (node.url && !node.url.includes('#')) { - loadWithPJAX(node.url) + loadWithPJAX(node.url, event.currentTarget) } } else if (node.type === 'commit') { if (node.url) { @@ -316,6 +323,10 @@ export const expandTo: BoundMethodCreator<[string[]]> = dispatch => async curren } function wouldBlockHistoryNavigation(event: React.KeyboardEvent) { - // Alt + left/right is usually history navigation shortcut on OS other than macOS - return os !== OperatingSystems.macOS && event.altKey + // 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/global.d.ts b/src/global.d.ts index 80a88bb..6015caa 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -16,7 +16,16 @@ type TreeNode = { url?: string sha?: string accessDenied?: boolean - comments?: number + comments?: { + active: number, + resolved: number, + } + diff?: { + status: 'modified' | 'added' | 'removed' | 'renamed' + additions: number + deletions: number + changes: number + } } type IO = { diff --git a/src/platforms/GitHub/API.ts b/src/platforms/GitHub/API.ts index 0491ef9..d6c1d7c 100644 --- a/src/platforms/GitHub/API.ts +++ b/src/platforms/GitHub/API.ts @@ -116,11 +116,11 @@ export async function getPullComments( return await request(url, { accessToken }) } -export async function getPullPageDocument( +export async function getPullPageDocuments( userName: string, repoName: string, pullId: string, // not used -): Promise { +): 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`, @@ -137,11 +137,26 @@ export async function getPullPageDocument( const search = new URLSearchParams(window.location.search) search.set('sha1', baseSHA) search.set('sha2', headSHA) - return await getDOM(`https://${window.location.host}/${userName}/${repoName}/diffs?${search}`) + 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) - async function getDOM(url: string) { - return new DOMParser().parseFromString(await (await fetch(url)).text(), 'text/html') + 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 getBlobData( diff --git a/src/platforms/GitHub/DOMHelper.ts b/src/platforms/GitHub/DOMHelper.ts index 092a243..c83a764 100644 --- a/src/platforms/GitHub/DOMHelper.ts +++ b/src/platforms/GitHub/DOMHelper.ts @@ -2,13 +2,13 @@ import { raiseError } from 'analytics' import { Clippy, ClippyClassName } from 'components/Clippy' import * as React from 'react' import { $ } from 'utils/DOMHelper' -import { renderReact } from 'utils/general' +import { renderReact, run } from 'utils/general' import { CopyFileButton, copyFileButtonClassName } from './CopyFileButton' export function resolveMeta(): Partial { const metaData = { - userName: $('[itemprop="author"]', e => e.textContent?.trim()), - repoName: $('[itemprop="name"]', e => e.textContent?.trim()), + userName: $('[itemprop="author"] > a[rel="author"]', e => e.textContent?.trim()), + repoName: $('[itemprop="name"] > a[href]', e => e.textContent?.trim()), branchName: getCurrentBranch(true), } if (!metaData.userName || !metaData.repoName) { @@ -148,21 +148,28 @@ export function attachCopyFileBtn() { } if (getCurrentPageType() === PAGE_TYPES.RAW_TEXT) { - // the button group in file content header - const buttonGroupSelector = '.repository-content .Box-header .BtnGroup' - const buttonGroups = document.querySelectorAll(buttonGroupSelector) + let buttonGroup: HTMLElement | null = null - if (buttonGroups.length === 0) { - raiseError(new Error(`No button groups found`)) + if (!buttonGroup) { + const rawUrlButtonSelector = '#raw-url' + const $buttonGroup = document.querySelector(rawUrlButtonSelector)?.parentElement + if ($buttonGroup) buttonGroup = $buttonGroup } - removeButtons() // prevent duplicated buttons + if (!buttonGroup) { + const buttonGroupSelector = '.repository-content .Box-header .BtnGroup' + const buttonGroups = document.querySelectorAll(buttonGroupSelector) + const $buttonGroup = buttonGroups[buttonGroups.length - 1] + if ($buttonGroup) buttonGroup = $buttonGroup as HTMLElement + } - buttonGroups.forEach(async buttonGroup => { - if (!buttonGroup.lastElementChild) return - const button = await renderReact(React.createElement(CopyFileButton)) - if (button instanceof HTMLElement) { - buttonGroup.appendChild(button) + run(async () => { + if (!buttonGroup) raiseError(new Error(`No button groups found`)) + else if (!buttonGroup.lastElementChild) return + else { + removeButtons() // prevent duplicated buttons + const button = await renderReact(React.createElement(CopyFileButton)) + if (button instanceof HTMLElement) buttonGroup.appendChild(button) } }) } diff --git a/src/platforms/GitHub/Request.d.ts b/src/platforms/GitHub/Request.d.ts index 5b9d8c1..3ee31cb 100644 --- a/src/platforms/GitHub/Request.d.ts +++ b/src/platforms/GitHub/Request.d.ts @@ -37,6 +37,7 @@ declare namespace GitHubAPI { type PullComment = { path: string + position: number | null pull_request_review_id: number id: number node_id: string diff --git a/src/platforms/GitHub/hooks/useGitHubCodeFold.tsx b/src/platforms/GitHub/hooks/useGitHubCodeFold.tsx index e176c05..83c49db 100644 --- a/src/platforms/GitHub/hooks/useGitHubCodeFold.tsx +++ b/src/platforms/GitHub/hooks/useGitHubCodeFold.tsx @@ -11,7 +11,7 @@ const tableSelector = `.blob-wrapper table` const selectorOfLineNumber = `.blob-num` const selectorOfLineContent = `.blob-code` -const theCSSClassForToggleElementOnActive = 'active' +const theCSSClassForToggleElementOnActive = 'gitako-code-fold-active' function init() { type LineNumber = number // alias const blocks: LineNumber[] = [] // startLine -> exclusiveEndLine @@ -87,6 +87,7 @@ function init() { if (!end) return const toggleElement = document.createElement('div') + toggleElement.setAttribute('title', 'Code Folding by Gitako') toggleElement.setAttribute('role', 'button') toggleElement.classList.add(theCSSClassForToggleElement) diff --git a/src/platforms/GitHub/index.ts b/src/platforms/GitHub/index.ts index 2b8f7c9..136ee8c 100644 --- a/src/platforms/GitHub/index.ts +++ b/src/platforms/GitHub/index.ts @@ -1,6 +1,7 @@ import { useConfigs } from 'containers/ConfigsContext' import { GITHUB_OAUTH } from 'env' import { Base64 } from 'js-base64' +import { run } from 'utils/general' import { resolveGitModules } from 'utils/gitSubmodule' import { sortFoldersToFront } from 'utils/treeParser' import * as API from './API' @@ -105,6 +106,11 @@ function resolvePageScope(defaultBranchName?: string) { 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 = { isEnterprise, resolvePartialMetaData() { @@ -142,113 +148,24 @@ export const GitHub: Platform = { async getDefaultBranchName({ userName, repoName }, accessToken) { return (await API.getRepoMeta(userName, repoName, accessToken)).default_branch }, - resolveUrlFromMetaData({ userName, repoName }) { + resolveUrlFromMetaData({ userName, repoName, branchName }) { + const repoUrl = `https://${window.location.host}/${userName}/${repoName}` + const userUrl = `https://${window.location.host}/${userName}` + const pullId = URLHelper.isInPullPage() + const branchUrl = pullId ? `${repoUrl}/pull/${pullId}` : `${repoUrl}/tree/${branchName}` return { - repoUrl: `https://${window.location.host}/${userName}/${repoName}`, - userUrl: `https://${window.location.host}/${userName}`, + repoUrl, + userUrl, + branchUrl, } }, async getTreeData(metaData, path = '/', recursive, accessToken) { - const { userName, repoName, branchName } = metaData - const pullId = URLHelper.isInPullPage() if (pullId) { - // 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 creator = await createPullFileResolver(userName, repoName, pullId) - - const nodes: TreeNode[] = treeData.map(item => ({ - path: item.filename || '', - type: 'blob', - name: item.filename?.replace(/^.*\//, '') || '', - url: `https://${window.location.host}/${userName}/${repoName}/pull/${pullId}/files${ - window.location.search - }#${creator(item.filename) || ''}`, - sha: item.sha, - comments: commentData?.filter(comment => item.filename === comment.path).length, - })) - - const root = processTree(nodes) - return { root } + return await getPullRequestTreeData(metaData, pullId, accessToken) } - const sha = path === '/' ? branchName : pathSHAMap.get(path) - if (!sha) throw new Error(`No sha for path "${path}"`) - const treeData = await API.getTreeData(userName, repoName, sha, recursive, accessToken) - - // remove deep items - if (treeData.truncated) { - if (treeData.tree.some(item => item.path.includes('/'))) - treeData.tree = treeData.tree.filter(item => !item.path.includes('/')) - } - - // update map - if (path !== '/' || treeData.truncated) { - if (path !== '/') { - function sanitizePath(path: string) { - return path.replace(/\/\/+/g, '/').replace(/^\/|\/$/g, '') || '/' - } - treeData.tree.forEach(item => { - item.path = sanitizePath(`${path}/${item.path}`) - }) - } - treeData.tree.forEach(item => { - pathSHAMap.set(item.path, item.sha) - }) - } - - const root = processTree( - treeData.tree.map(item => ({ - path: item.path || '', - type: item.type || 'blob', - name: item.path?.replace(/^.*\//, '') || '', - url: - item.url && item.type && item.path - ? getUrlForRedirect(userName, repoName, branchName, item.type, item.path) - : undefined, - contents: item.type === 'tree' ? [] : undefined, - sha: item.sha, - })), - ) - - const gitModules = root.contents?.find( - item => item.type === 'blob' && item.name === '.gitmodules', - ) - if (gitModules?.sha) { - const blobData = await API.getBlobData(userName, repoName, gitModules.sha, accessToken) - - if (blobData && blobData.encoding === 'base64' && blobData.content) { - await resolveGitModules(root, Base64.decode(blobData.content)) - } - } - - return { root, defer: treeData.truncated } + return await getRepositoryTreeData(metaData, path, recursive, accessToken) }, shouldShow() { return Boolean(DOMHelper.isInCodePage() || URLHelper.isInPullPage()) @@ -257,8 +174,14 @@ export const GitHub: Platform = { return Boolean(URLHelper.isInPullPage()) }, getCurrentPath(branchName) { - if (URLHelper.parse().path.length) { - return DOMHelper.getPath() + const pathFromURL = URLHelper.parse().path.join('/') + if (pathFromURL.length) { + if (branchName && pathFromURL.startsWith(branchName + '/')) { + return pathFromURL.replace(branchName + '/', '').split('/') + } else { + // This would fail before PJAX replace, but works well when no branchName, e.g. first load + return DOMHelper.getPath() + } } else { return [] } @@ -280,13 +203,161 @@ export const GitHub: Platform = { useGitHubAttachCopySnippetButton(copySnippetButton) useGitHubCodeFold(codeFolding) }, + delegatePJAXProps(options) { + if (!options?.node || options.node.type === 'blob') + return { + 'data-pjax': pjaxContainerSelector, + onClick() { + /* Overwriting default onClick */ + }, + } + }, + loadWithPJAX(url, element) { + element.click() + }, } -async function createPullFileResolver(userName: string, repoName: string, pullId: string) { - const doc = await API.getPullPageDocument(userName, repoName, pullId) +function sanitizePath(path: string) { + return path.replace(/\/\/+/g, '/').replace(/^\/|\/$/g, '') || '/' +} - return (path: string) => { - const id = doc.querySelector(`*[data-path^="${path}"]`)?.parentElement?.id - return id +async function getRepositoryTreeData( + { userName, repoName, branchName }: Pick, + path: string, + recursive: boolean | undefined, + accessToken: string | undefined, +) { + const sha = path === '/' ? branchName : pathSHAMap.get(path) + if (!sha) throw new Error(`No sha for path "${path}"`) + const treeData = await API.getTreeData(userName, repoName, sha, recursive, accessToken) + + // remove deep items + if (treeData.truncated) { + if (treeData.tree.some(item => item.path.includes('/'))) + treeData.tree = treeData.tree.filter(item => !item.path.includes('/')) } + + // update map + if (path !== '/' || treeData.truncated) { + if (path !== '/') { + treeData.tree.forEach(item => { + item.path = sanitizePath(`${path}/${item.path}`) + }) + } + treeData.tree.forEach(item => { + pathSHAMap.set(item.path, item.sha) + }) + } + + const root = processTree( + treeData.tree.map(item => ({ + path: item.path || '', + type: item.type || 'blob', + name: item.path?.replace(/^.*\//, '') || '', + url: + item.url && item.type && item.path + ? getUrlForRedirect(userName, repoName, branchName, item.type, item.path) + : undefined, + contents: item.type === 'tree' ? [] : undefined, + sha: item.sha, + })), + ) + + const gitModules = root.contents?.find( + item => item.type === 'blob' && item.name === '.gitmodules', + ) + if (gitModules?.sha) { + const blobData = await API.getBlobData(userName, repoName, gitModules.sha, accessToken) + + if (blobData && blobData.encoding === 'base64' && blobData.content) { + await resolveGitModules(root, Base64.decode(blobData.content)) + } + } + + 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/Gitea/index.ts b/src/platforms/Gitea/index.ts index 24cbbdb..2052189 100644 --- a/src/platforms/Gitea/index.ts +++ b/src/platforms/Gitea/index.ts @@ -1,4 +1,5 @@ import { resolveGitModules } from 'utils/gitSubmodule' +import { useProgressBar } from 'utils/hooks/useProgressBar' import { sortFoldersToFront } from 'utils/treeParser' import * as API from './API' import * as DOMHelper from './DOMHelper' @@ -105,10 +106,14 @@ export const Gitea: Platform = { const data = await API.getRepoMeta(userName, repoName, accessToken) return data.default_branch }, - resolveUrlFromMetaData({ userName, repoName }) { + resolveUrlFromMetaData({ userName, repoName, branchName }) { + const repoUrl = `${window.location.protocol}//${window.location.host}/${userName}/${repoName}` + const userUrl = `${window.location.protocol}//${window.location.host}/${userName}` + const branchUrl = `${repoUrl}/src/branch/${branchName}` return { - repoUrl: `${window.location.protocol}//${window.location.host}/${userName}/${repoName}`, - userUrl: `${window.location.protocol}//${window.location.host}/${userName}`, + repoUrl, + userUrl, + branchUrl, } }, async getTreeData(metaData, path, recursive, accessToken) { @@ -165,4 +170,7 @@ export const Gitea: Platform = { getOAuthLink() { return `${window.location.protocol}//${window.location.host}/api/v1/user/applications/oauth2` }, + usePlatformHooks() { + useProgressBar() + }, } diff --git a/src/platforms/Gitee/index.ts b/src/platforms/Gitee/index.ts index 8addea1..66e519c 100644 --- a/src/platforms/Gitee/index.ts +++ b/src/platforms/Gitee/index.ts @@ -3,6 +3,7 @@ import { platform } from 'platforms' import * as React from 'react' import { resolveGitModules } from 'utils/gitSubmodule' import { useOnPJAXDone } from 'utils/hooks/usePJAX' +import { useProgressBar } from 'utils/hooks/useProgressBar' import { sortFoldersToFront } from 'utils/treeParser' import * as API from './API' import * as DOMHelper from './DOMHelper' @@ -82,7 +83,7 @@ export const Gitee: Platform = { if (DOMHelper.isInCodePage()) { // not working well with non-branch blob // cannot handle '/' split branch name, should not use when possibly on branch page - branchName = DOMHelper.getCurrentBranch() || URLHelper.parseSHA() + branchName = (DOMHelper.getCurrentBranch() || URLHelper.parseSHA())?.trim() } const { userName, repoName, type } = URLHelper.parse() @@ -102,10 +103,14 @@ export const Gitee: Platform = { const data = await API.getRepoMeta(userName, repoName, accessToken) return data.default_branch }, - resolveUrlFromMetaData({ userName, repoName }) { + resolveUrlFromMetaData({ userName, repoName, branchName }) { + const repoUrl = `https://${window.location.host}/${userName}/${repoName}` + const userUrl = `https://${window.location.host}/${userName}` + const branchUrl = `${repoUrl}/tree/${branchName}` return { - repoUrl: `https://${window.location.host}/${userName}/${repoName}`, - userUrl: `https://${window.location.host}/${userName}`, + repoUrl, + userUrl, + branchUrl, } }, async getTreeData(metaData, path, recursive, accessToken) { @@ -170,6 +175,9 @@ export const Gitee: Platform = { setOAuth(code) { return API.OAuth(code) }, + usePlatformHooks() { + useProgressBar() + }, } export function useGiteeAttachCopySnippetButton(copySnippetButton: boolean) { diff --git a/src/platforms/platform.d.ts b/src/platforms/platform.d.ts index 9fe0ec9..e555d7a 100644 --- a/src/platforms/platform.d.ts +++ b/src/platforms/platform.d.ts @@ -7,9 +7,10 @@ type Platform = { metaData: Pick, accessToken?: string, ): Promise - resolveUrlFromMetaData(metaData: Pick): { + resolveUrlFromMetaData(metaData: MetaData): { userUrl: string repoUrl: string + branchUrl: string } getTreeData( metaData: Pick, @@ -22,5 +23,9 @@ type Platform = { 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 usePlatformHooks?(): void } diff --git a/src/styles/dark/variables.scss b/src/styles/dark/variables.scss deleted file mode 100644 index 182c783..0000000 --- a/src/styles/dark/variables.scss +++ /dev/null @@ -1,566 +0,0 @@ -$variables: ( - 'auto-black': '#f0f6fc', - 'auto-white': '#010409', - 'auto-gray-0': '#0d1117', - 'auto-gray-1': '#161b22', - 'auto-gray-2': '#21262d', - 'auto-gray-3': '#30363d', - 'auto-gray-4': '#484f58', - 'auto-gray-5': '#6e7681', - 'auto-gray-6': '#8b949e', - 'auto-gray-7': '#b1bac4', - 'auto-gray-8': '#c9d1d9', - 'auto-gray-9': '#f0f6fc', - 'auto-blue-0': '#051d4d', - 'auto-blue-1': '#0c2d6b', - 'auto-blue-2': '#0d419d', - 'auto-blue-3': '#1158c7', - 'auto-blue-4': '#1f6feb', - 'auto-blue-5': '#388bfd', - 'auto-blue-6': '#58a6ff', - 'auto-blue-7': '#79c0ff', - 'auto-blue-8': '#a5d6ff', - 'auto-blue-9': '#cae8ff', - 'auto-green-0': '#04260f', - 'auto-green-1': '#033a16', - 'auto-green-2': '#0f5323', - 'auto-green-3': '#196c2e', - 'auto-green-4': '#238636', - 'auto-green-5': '#2ea043', - 'auto-green-6': '#3fb950', - 'auto-green-7': '#56d364', - 'auto-green-8': '#7ee787', - 'auto-green-9': '#aff5b4', - 'auto-yellow-0': '#341a00', - 'auto-yellow-1': '#4b2900', - 'auto-yellow-2': '#693e00', - 'auto-yellow-3': '#845306', - 'auto-yellow-4': '#9e6a03', - 'auto-yellow-5': '#bb8009', - 'auto-yellow-6': '#d29922', - 'auto-yellow-7': '#e3b341', - 'auto-yellow-8': '#f2cc60', - 'auto-yellow-9': '#f8e3a1', - 'auto-orange-0': '#3d1300', - 'auto-orange-1': '#5a1e02', - 'auto-orange-2': '#762d0a', - 'auto-orange-3': '#9b4215', - 'auto-orange-4': '#bd561d', - 'auto-orange-5': '#db6d28', - 'auto-orange-6': '#f0883e', - 'auto-orange-7': '#ffa657', - 'auto-orange-8': '#ffc680', - 'auto-orange-9': '#ffdfb6', - 'auto-red-0': '#490202', - 'auto-red-1': '#67060c', - 'auto-red-2': '#8e1519', - 'auto-red-3': '#b62324', - 'auto-red-4': '#da3633', - 'auto-red-5': '#f85149', - 'auto-red-6': '#ff7b72', - 'auto-red-7': '#ffa198', - 'auto-red-8': '#ffc1ba', - 'auto-red-9': '#ffdcd7', - 'auto-purple-0': '#271052', - 'auto-purple-1': '#3c1e70', - 'auto-purple-2': '#553098', - 'auto-purple-3': '#6e40c9', - 'auto-purple-4': '#8957e5', - 'auto-purple-5': '#a371f7', - 'auto-purple-6': '#bc8cff', - 'auto-purple-7': '#d2a8ff', - 'auto-purple-8': '#e2c5ff', - 'auto-purple-9': '#eddeff', - 'auto-pink-0': '#42062a', - 'auto-pink-1': '#5e103e', - 'auto-pink-2': '#7d2457', - 'auto-pink-3': '#9e3670', - 'auto-pink-4': '#bf4b8a', - 'auto-pink-5': '#db61a2', - 'auto-pink-6': '#f778ba', - 'auto-pink-7': '#ff9bce', - 'auto-pink-8': '#ffbedd', - 'auto-pink-9': '#ffdaec', - 'text-primary': '#c9d1d9', - 'text-secondary': '#8b949e', - 'text-tertiary': '#8b949e', - 'text-placeholder': '#484f58', - 'text-disabled': '#484f58', - 'text-inverse': '#0d1117', - 'text-link': '#58a6ff', - 'text-danger': '#f85149', - 'text-success': '#56d364', - 'text-warning': '#e3b341', - 'text-white': '#f0f6fc', - 'icon-primary': '#c9d1d9', - 'icon-secondary': '#6e7681', - 'icon-tertiary': '#484f58', - 'icon-info': '#79c0ff', - 'icon-danger': '#f85149', - 'icon-success': '#56d364', - 'icon-warning': '#e3b341', - 'border-primary': '#30363d', - 'border-secondary': '#21262d', - 'border-tertiary': '#6e7681', - 'border-overlay': '#30363d', - 'border-inverse': '#f0f6fc', - 'border-info': '#388bfd66', - 'border-danger': '#f8514966', - 'border-success': '#3fb95066', - 'border-warning': '#bb800966', - 'bg-canvas': '#0d1117', - 'bg-canvas-mobile': '#010409', - 'bg-canvas-inverse': '#f0f6fc', - 'bg-canvas-inset': '#06090f', - 'bg-primary': '#0d1117', - 'bg-secondary': '#0d1117', - 'bg-tertiary': '#161b22', - 'bg-overlay': '#21262d', - 'bg-backdrop': '#010409cc', - 'bg-info': '#388bfd1a', - 'bg-info-inverse': '#388bfd', - 'bg-danger': '#f851491a', - 'bg-danger-inverse': '#da3633', - 'bg-success': '#2ea0431a', - 'bg-success-inverse': '#2ea043', - 'bg-warning': '#bb80091a', - 'bg-warning-inverse': '#bb8009', - 'shadow-small': '0 0 #0000', - 'shadow-medium': '0 3px 6px #010409', - 'shadow-large': '0 8px 24px #010409', - 'shadow-extra-large': '0 12px 48px #010409', - 'shadow-highlight': '0 0 #0000', - 'shadow-inset': '0 0 #0000', - 'state-hover-primary-bg': '#1f6feb', - 'state-hover-primary-border': '#388bfd', - 'state-hover-primary-text': '#f0f6fc', - 'state-hover-primary-icon': '#f0f6fc', - 'state-hover-secondary-bg': '#161b22', - 'state-hover-secondary-border': '#161b22', - 'state-selected-primary-bg': '#1f6feb', - 'state-selected-primary-border': '#388bfd', - 'state-selected-primary-text': '#f0f6fc', - 'state-selected-primary-icon': '#f0f6fc', - 'state-focus-border': '#388bfd', - 'state-focus-shadow': '0 0 0 3px #0c2d6b', - 'fade-fg-10': '#f0f6fc1a', - 'fade-fg-15': '#f0f6fc26', - 'fade-fg-30': '#f0f6fc4d', - 'fade-fg-50': '#f0f6fc80', - 'fade-fg-70': '#f0f6fcb3', - 'fade-fg-85': '#f0f6fcd9', - 'fade-black-10': '#0104091a', - 'fade-black-15': '#01040926', - 'fade-black-30': '#0104094d', - 'fade-black-50': '#01040980', - 'fade-black-70': '#010409b3', - 'fade-black-85': '#010409d9', - 'fade-white-10': '#f0f6fc1a', - 'fade-white-15': '#f0f6fc26', - 'fade-white-30': '#f0f6fc4d', - 'fade-white-50': '#f0f6fc80', - 'fade-white-70': '#f0f6fcb3', - 'fade-white-85': '#f0f6fcd9', - 'alert-info-text': '#79c0ff', - 'alert-info-icon': '#79c0ff', - 'alert-info-bg': '#388bfd1a', - 'alert-info-border': '#388bfd66', - 'alert-warn-text': '#e3b341', - 'alert-warn-icon': '#e3b341', - 'alert-warn-bg': '#bb80091a', - 'alert-warn-border': '#bb800966', - 'alert-error-text': '#ff7b72', - 'alert-error-icon': '#ff7b72', - 'alert-error-bg': '#f851491a', - 'alert-error-border': '#f8514966', - 'alert-success-text': '#56d364', - 'alert-success-icon': '#56d364', - 'alert-success-bg': '#2ea0431a', - 'alert-success-border': '#2ea04366', - 'autocomplete-shadow': '0 16px 32px #010409d9', - 'autocomplete-row-border': '#30363d', - 'blankslate-icon': '#535c66', - 'btn-text': '#c9d1d9', - 'btn-bg': '#21262d', - 'btn-border': '#30363d', - 'btn-shadow': '0 0 #0000', - 'btn-inset-shadow': '0 0 #0000', - 'btn-hover-bg': '#30363d', - 'btn-hover-border': '#8b949e', - 'btn-selected-bg': '#161b22', - 'btn-focus-bg': '#21262d', - 'btn-focus-border': '#8b949e', - 'btn-focus-shadow': '0 0 0 3px #8b949e4d', - 'btn-shadow-active': 'inset 0 0.15em 0.3em #01040926', - 'btn-shadow-input-focus': '0 0 0 0.2em #1f6feb4d', - 'btn-primary-text': '#fff', - 'btn-primary-bg': '#238636', - 'btn-primary-border': '#2ea043', - 'btn-primary-shadow': '0 0 #0000', - 'btn-primary-inset-shadow': '0 0 #0000', - 'btn-primary-hover-bg': '#2ea043', - 'btn-primary-hover-border': '#3fb950', - 'btn-primary-selected-bg': '#238636', - 'btn-primary-selected-shadow': '0 0 #0000', - 'btn-primary-disabled-text': '#f0f6fc80', - 'btn-primary-disabled-bg': '#23863699', - 'btn-primary-disabled-border': '#0000', - 'btn-primary-focus-bg': '#238636', - 'btn-primary-focus-border': '#3fb950', - 'btn-primary-focus-shadow': '0 0 0 3px #2ea44f66', - 'btn-primary-icon': '#f0f6fc', - 'btn-primary-counter-bg': '#f0f6fc33', - 'btn-outline-text': '#58a6ff', - 'btn-outline-hover-text': '#58a6ff', - 'btn-outline-hover-bg': '#30363d', - 'btn-outline-hover-border': '#58a6ff', - 'btn-outline-hover-shadow': '0 1px 0 #0104091a', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 #f0f6fc08', - 'btn-outline-hover-counter-bg': '#f0f6fc33', - 'btn-outline-selected-text': '#f0f6fc', - 'btn-outline-selected-bg': '#0d419d', - 'btn-outline-selected-border': '#f0f6fc1a', - 'btn-outline-selected-shadow': '0 0 #0000', - 'btn-outline-disabled-text': '#58a6ff80', - 'btn-outline-disabled-bg': '#0d1117', - 'btn-outline-disabled-counter-bg': '#1f6feb0d', - 'btn-outline-focus-border': '#58a6ff', - 'btn-outline-focus-shadow': '0 0 0 3px #1158c766', - 'btn-outline-counter-bg': '#1f6feb1a', - 'btn-danger-text': '#f85149', - 'btn-danger-hover-text': '#fff', - 'btn-danger-hover-bg': '#da3633', - 'btn-danger-hover-border': '#f85149', - 'btn-danger-hover-shadow': '0 0 #0000', - 'btn-danger-hover-inset-shadow': '0 0 #0000', - 'btn-danger-hover-counter-bg': '#fff3', - 'btn-danger-selected-text': '#fff', - 'btn-danger-selected-bg': '#b62324', - 'btn-danger-selected-border': '#f0f6fc1a', - 'btn-danger-selected-shadow': '0 0 #0000', - 'btn-danger-disabled-text': '#f85149', - 'btn-danger-disabled-bg': '#0d1117', - 'btn-danger-disabled-counter-bg': '#da36330d', - 'btn-danger-focus-border': '#f85149', - 'btn-danger-focus-shadow': '0 0 0 3px #b6232466', - 'btn-danger-counter-bg': '#da36331a', - 'btn-counter-bg': '#30363d', - 'counter-text': '#c9d1d9', - 'counter-bg': '#30363d', - 'counter-primary-text': '#c9d1d9', - 'counter-primary-bg': '#6e7681', - 'counter-secondary-text': '#8b949e', - 'dropdown-shadow': '0 16px 32px #010409d9', - 'label-border': '#30363d', - 'label-primary-text': '#b1bac4', - 'label-primary-border': '#6e7681', - 'label-secondary-text': '#8b949e', - 'label-secondary-border': '#30363d', - 'label-info-text': '#388bfd', - 'label-info-border': '#388bfd66', - 'label-success-text': '#3fb950', - 'label-success-border': '#2ea04366', - 'label-warning-text': '#e3b341', - 'label-warning-border': '#f2d35b66', - 'label-danger-text': '#f85149', - 'label-danger-border': '#f8514966', - 'label-orange-text': '#db6d28', - 'label-orange-border': '#db6d2866', - 'input-bg': '#0d1117', - 'input-contrast-bg': '#0104094d', - 'input-border': '#21262d', - 'input-shadow': '0 0 #0000', - 'input-disabled-bg': '#161b22', - 'input-disabled-border': '#30363d', - 'input-warning-border': '#d29922', - 'input-error-border': '#f85149', - 'input-tooltip-success-text': '#56d364', - 'input-tooltip-success-bg': '#101f1b', - 'input-tooltip-success-border': '#1c532b', - 'input-tooltip-warning-text': '#e3b341', - 'input-tooltip-warning-bg': '#1e1c16', - 'input-tooltip-warning-border': '#5d4411', - 'input-tooltip-error-text': '#ff7b72', - 'input-tooltip-error-bg': '#25171c', - 'input-tooltip-error-border': '#792e2e', - 'avatar-bg': '#f0f6fc', - 'avatar-border': '#f0f6fc1a', - 'avatar-stack-fade': '#30363d', - 'avatar-stack-fade-more': '#21262d', - 'avatar-child-shadow': '-2px -2px 0 #0d1117', - 'toast-text': '#79c0ff', - 'toast-bg': '#010409', - 'toast-border': '#214981', - 'toast-shadow': '0 8px 24px #010409', - 'toast-icon': '#79c0ff', - 'toast-icon-bg': '#121d2e', - 'toast-icon-border': '#214981', - 'toast-success-text': '#56d364', - 'toast-success-border': '#1c532c', - 'toast-success-icon': '#56d364', - 'toast-success-icon-bg': '#111f1c', - 'toast-success-icon-border': '#1c532c', - 'toast-warning-text': '#e3b341', - 'toast-warning-border': '#5e4411', - 'toast-warning-icon': '#e3b341', - 'toast-warning-icon-bg': '#1f1c16', - 'toast-warning-icon-border': '#5e4411', - 'toast-danger-text': '#ff7b72', - 'toast-danger-border': '#792e2e', - 'toast-danger-icon': '#ff7b72', - 'toast-danger-icon-bg': '#25171c', - 'toast-danger-icon-border': '#792e2e', - 'toast-loading-text': '#c9d1d9', - 'toast-loading-border': '#30363d', - 'toast-loading-icon': '#f0f6fc', - 'toast-loading-icon-bg': '#30363d', - 'toast-loading-icon-border': '#30363d', - 'timeline-text': '#b1bac4', - 'timeline-badge-bg': '#0d1117', - 'timeline-target-badge-border': '#1f6feb', - 'timeline-target-badge-shadow': '#0d419d', - 'select-menu-border-secondary': '#30363d', - 'select-menu-shadow': '0 0 18px #01040966', - 'select-menu-backdrop-bg': '#01040980', - 'select-menu-backdrop-border': '#484f58', - 'select-menu-tap-highlight': '#30363d80', - 'select-menu-tap-focus-bg': '#0c2d6b', - 'box-blue-border': '#0d419d', - 'box-row-yellow-bg': '#ebc4401a', - 'box-row-blue-bg': '#79c0ff1a', - 'box-header-blue-bg': '#0d1117', - 'box-header-blue-border': '#30363d', - 'box-border-info': '#388bfd66', - 'box-bg-info': '#388bfd1a', - 'box-border-warning': '#bb800966', - 'box-bg-warning': '#bb80091a', - 'branch-name-text': '#c9d1d9', - 'branch-name-icon': '#b1bac4', - 'branch-name-bg': '#58a6ff1a', - 'branch-name-link-text': '#58a6ff', - 'branch-name-link-icon': '#58a6ff', - 'branch-name-link-bg': '#58a6ff1a', - 'markdown-code-bg': '#f0f6fc26', - 'markdown-frame-border': '#3b434b', - 'markdown-blockquote-border': '#3b434b', - 'markdown-table-border': '#3b434b', - 'markdown-table-tr-border': '#272c32', - 'menu-heading-text': '#8b949e', - 'menu-border-active': '#f78166', - 'menu-bg-active': '#161b22', - 'sidenav-selected-bg': '#21262d', - 'sidenav-border-active': '#f78166', - 'header-text': '#f0f6fcb3', - 'header-bg': '#161b22', - 'header-logo': '#f0f6fc', - 'filter-item-bar-bg': '#12161c', - 'hidden-text-expander-bg': '#21262d', - 'hidden-text-expander-bg-hover': '#30363d', - 'drag-and-drop-border': '#25292f', - 'upload-enabled-border': '#3b434b', - 'upload-enabled-border-focused': '#4487ee', - 'previewable-comment-form-border': '#25292f', - 'underlinenav-border': '#30363d00', - 'underlinenav-border-hover': '#30363d', - 'underlinenav-border-active': '#f78166', - 'underlinenav-text': '#8b949e', - 'underlinenav-text-hover': '#c9d1d9', - 'underlinenav-text-active': '#c9d1d9', - 'underlinenav-icon': '#6e7681', - 'underlinenav-icon-hover': '#c9d1d9', - 'underlinenav-icon-active': '#c9d1d9', - 'underlinenav-counter-text': '#8b949e', - 'verified-badge-text': '#3fb950', - 'verified-badge-bg': '#3fb9501a', - 'verified-badge-border': '#3fb95066', - 'social-count-bg': '#21262d', - 'tooltip-text': '#f0f6fc', - 'tooltip-bg': '#21262d', - 'header-search-bg': '#0d1117', - 'header-search-border': '#21262d', - 'search-keyword-hl': '#bb800966', - 'diffstat-neutral-bg': '#30363d', - 'diffstat-neutral-border': '#f0f6fc1a', - 'diffstat-deletion-bg': '#da3633', - 'diffstat-deletion-border': '#f85149', - 'diffstat-addition-bg': '#238636', - 'diffstat-addition-border': '#2ea043', - 'files-explorer-icon': '#6e7681', - 'hl-author-bg': '#051d4d', - 'hl-author-border': '#0d419d', - 'logo-subdued': '#30363d', - 'discussion-border': '#34513b', - 'discussion-bg-success': '#2ea0431a', - 'actions-workflow-table-sticky-bg': '#0d1117f2', - 'repo-language-color-border': '#f0f6fc33', - 'code-selection-bg': '#79c0ff4d', - 'blob-line-highlight-bg': '#bb80091a', - 'blob-line-highlight-border': '#bb8009', - 'diff-addition-text': '#56d364', - 'diff-addition-bg': '#23863626', - 'diff-addition-border': '#196c2e', - 'diff-deletion-text': '#f85149', - 'diff-deletion-bg': '#da363326', - 'diff-deletion-border': '#b62324', - 'diff-change-text': '#e3b341', - 'diff-change-bg': '#341a00', - 'diff-change-border': '#9e6a03', - 'diff-blob-num-text': '#f0f6fc4d', - 'diff-blob-num-hover-text': '#f0f6fc99', - 'diff-blob-addition-num-text': '#3fb950', - 'diff-blob-addition-num-hover-text': '#7ee787', - 'diff-blob-addition-num-bg': '#2386360d', - 'diff-blob-addition-line-bg': '#23863626', - 'diff-blob-addition-word-bg': '#2386364d', - 'diff-blob-deletion-num-text': '#f85149', - 'diff-blob-deletion-num-hover-text': '#ffa198', - 'diff-blob-deletion-num-bg': '#da36330d', - 'diff-blob-deletion-line-bg': '#da363326', - 'diff-blob-deletion-word-bg': '#da36334d', - 'diff-blob-hunk-text': '#8b949e', - 'diff-blob-hunk-num-bg': '#58a6ff26', - 'diff-blob-hunk-line-bg': '#58a6ff1a', - 'diff-blob-empty-block-bg': '#161b22', - 'diff-blob-selected-line-highlight-bg': '#bb80091a', - 'diff-blob-selected-line-highlight-border': '#bb8009', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'normal', - 'diff-blob-expander-icon': '#8b949e', - 'diff-blob-expander-hover-icon': '#f0f6fc', - 'diff-blob-expander-hover-bg': '#1f6feb', - 'diff-blob-comment-button-icon': '#f0f6fc', - 'diff-blob-comment-button-bg': '#1f6feb', - 'diff-blob-comment-button-gradient-bg': '#367eed', - 'global-nav-logo': '#f0f6fc', - 'global-nav-bg': '#161b22', - 'global-nav-text': '#c9d1d9', - 'global-nav-icon': '#c9d1d9', - 'global-nav-input-bg': '#0d1117', - 'global-nav-input-border': '#21262d', - 'global-nav-input-icon': '#21262d', - 'global-nav-input-placeholder': '#484f58', - 'calendar-graph-day-bg': '#161b22', - 'calendar-graph-day-border': '#1b1f230f', - 'calendar-graph-day-l1-bg': '#01311f', - 'calendar-graph-day-l2-bg': '#034525', - 'calendar-graph-day-l3-bg': '#0f6d31', - 'calendar-graph-day-l4-bg': '#00c647', - 'calendar-graph-day-l4-border': '#1b1f230f', - 'calendar-graph-day-l3-border': '#1b1f230f', - 'calendar-graph-day-l2-border': '#1b1f230f', - 'calendar-graph-day-l1-border': '#1b1f230f', - 'footer-invertocat-octicon': '#30363d', - 'footer-invertocat-octicon-hover': '#6e7681', - 'pr-state-draft-text': '#8b949e', - 'pr-state-draft-bg': '#8b949e1a', - 'pr-state-draft-border': '#8b949e66', - 'pr-state-open-text': '#3fb950', - 'pr-state-open-bg': '#3fb9501a', - 'pr-state-open-border': '#3fb95066', - 'pr-state-merged-text': '#a371f7', - 'pr-state-merged-bg': '#bc8cff1a', - 'pr-state-merged-border': '#bc8cff66', - 'pr-state-closed-text': '#f85149', - 'pr-state-closed-bg': '#da36331a', - 'pr-state-closed-border': '#da363366', - 'topic-tag-text': '#58a6ff', - 'topic-tag-bg': '#388bfd1a', - 'topic-tag-hover-bg': '#388bfd33', - 'topic-tag-active-bg': '#388bfd26', - 'merge-box-success-icon-bg': '#2ea0431a', - 'merge-box-success-icon-text': '#3fb950', - 'merge-box-success-icon-border': '#2ea04366', - 'merge-box-success-indicator-bg': '#238636', - 'merge-box-success-indicator-border': '#2ea043', - 'merge-box-merged-icon-bg': '#bc8cff1a', - 'merge-box-merged-icon-text': '#a371f7', - 'merge-box-merged-icon-border': '#bc8cff66', - 'merge-box-merged-box-border': '#bc8cff66', - 'merge-box-neutral-icon-bg': '#c9d1d91a', - 'merge-box-neutral-icon-text': '#8b949e', - 'merge-box-neutral-icon-border': '#c9d1d966', - 'merge-box-neutral-indicator-bg': '#484f58', - 'merge-box-neutral-indicator-border': '#6e7681', - 'merge-box-warning-icon-bg': '#bb80091a', - 'merge-box-warning-icon-text': '#e3b341', - 'merge-box-warning-icon-border': '#bb800966', - 'merge-box-warning-box-border': '#bb800966', - 'merge-box-warning-merge-highlight': '#bb80091a', - 'merge-box-error-icon-bg': '#f851491a', - 'merge-box-error-icon-text': '#f85149', - 'merge-box-error-icon-border': '#f8514966', - 'merge-box-error-indicator-bg': '#da3633', - 'merge-box-error-indicator-border': '#f85149', - 'project-card-bg': '#161b22', - 'project-header-bg': '#0d1117', - 'project-sidebar-bg': '#161b22', - 'project-gradient-in': '#161b22', - 'project-gradient-out': '#161b2200', - 'marketing-icon-primary': '#79c0ff', - 'marketing-icon-secondary': '#1f6feb', - 'prettylights-syntax-comment': '#8b949e', - 'prettylights-syntax-constant': '#79c0ff', - 'prettylights-syntax-entity': '#d2a8ff', - 'prettylights-syntax-storage-modifier-import': '#c9d1d9', - 'prettylights-syntax-entity-tag': '#7ee787', - 'prettylights-syntax-keyword': '#ff7b72', - 'prettylights-syntax-string': '#a5d6ff', - 'prettylights-syntax-variable': '#ffa657', - 'prettylights-syntax-brackethighlighter-unmatched': '#f85149', - 'prettylights-syntax-invalid-illegal-text': '#f0f6fc', - 'prettylights-syntax-invalid-illegal-bg': '#8e1519', - 'prettylights-syntax-carriage-return-text': '#f0f6fc', - 'prettylights-syntax-carriage-return-bg': '#b62324', - 'prettylights-syntax-string-regexp': '#7ee787', - 'prettylights-syntax-markup-list': '#f2cc60', - 'prettylights-syntax-markup-heading': '#1f6feb', - 'prettylights-syntax-markup-italic': '#c9d1d9', - 'prettylights-syntax-markup-bold': '#c9d1d9', - 'prettylights-syntax-markup-deleted-text': '#ffdcd7', - 'prettylights-syntax-markup-deleted-bg': '#67060c', - 'prettylights-syntax-markup-inserted-text': '#aff5b4', - 'prettylights-syntax-markup-inserted-bg': '#033a16', - 'prettylights-syntax-markup-changed-text': '#ffdfb6', - 'prettylights-syntax-markup-changed-bg': '#5a1e02', - 'prettylights-syntax-markup-ignored-text': '#c9d1d9', - 'prettylights-syntax-markup-ignored-bg': '#1158c7', - 'prettylights-syntax-meta-diff-range': '#d2a8ff', - 'prettylights-syntax-brackethighlighter-angle': '#8b949e', - 'prettylights-syntax-sublimelinter-gutter-mark': '#484f58', - 'prettylights-syntax-constant-other-reference-link': '#a5d6ff', - 'codemirror-text': '#c9d1d9', - 'codemirror-bg': '#0d1117', - 'codemirror-gutters-bg': '#0d1117', - 'codemirror-guttermarker-text': '#0d1117', - 'codemirror-guttermarker-subtle-text': '#6e7681', - 'codemirror-linenumber-text': '#8b949e', - 'codemirror-cursor': '#f0f6fc', - 'codemirror-selection-bg': '#79c0ff4d', - 'codemirror-activeline-bg': '#161b22', - 'codemirror-matchingbracket-text': '#c9d1d9', - 'codemirror-lines-bg': '#0d1117', - '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', - 'ansi-black': '#0d1117', - 'ansi-black-bright': '#161b22', - 'ansi-white': '#b1bac4', - 'ansi-white-bright': '#b1bac4', - 'ansi-gray': '#6e7681', - 'ansi-red': '#ff7b72', - 'ansi-red-bright': '#ffa198', - 'ansi-green': '#3fb950', - 'ansi-green-bright': '#56d364', - 'ansi-yellow': '#d29922', - 'ansi-yellow-bright': '#e3b341', - 'ansi-blue': '#58a6ff', - 'ansi-blue-bright': '#79c0ff', - 'ansi-magenta': '#bc8cff', - 'ansi-magenta-bright': '#d2a8ff', - 'ansi-cyan': '#76e3ea', - 'ansi-cyan-bright': '#b3f0ff', -); diff --git a/src/styles/darkDimmed/variables.scss b/src/styles/darkDimmed/variables.scss deleted file mode 100644 index 6b46bd4..0000000 --- a/src/styles/darkDimmed/variables.scss +++ /dev/null @@ -1,680 +0,0 @@ -$variables: ( - 'auto-black': '#cdd9e5', - 'auto-white': '#1c2128', - 'auto-gray-0': '#22272e', - 'auto-gray-1': '#2d333b', - 'auto-gray-2': '#373e47', - 'auto-gray-3': '#444c56', - 'auto-gray-4': '#545d68', - 'auto-gray-5': '#636e7b', - 'auto-gray-6': '#768390', - 'auto-gray-7': '#909dab', - 'auto-gray-8': '#adbac7', - 'auto-gray-9': '#cdd9e5', - 'auto-blue-0': '#0f2d5c', - 'auto-blue-1': '#143d79', - 'auto-blue-2': '#1b4b91', - 'auto-blue-3': '#255ab2', - 'auto-blue-4': '#316dca', - 'auto-blue-5': '#4184e4', - 'auto-blue-6': '#539bf5', - 'auto-blue-7': '#6cb6ff', - 'auto-blue-8': '#96d0ff', - 'auto-blue-9': '#c6e6ff', - 'auto-green-0': '#113417', - 'auto-green-1': '#1b4721', - 'auto-green-2': '#245829', - 'auto-green-3': '#2b6a30', - 'auto-green-4': '#347d39', - 'auto-green-5': '#46954a', - 'auto-green-6': '#57ab5a', - 'auto-green-7': '#6bc46d', - 'auto-green-8': '#8ddb8c', - 'auto-green-9': '#b4f1b4', - 'auto-yellow-0': '#452700', - 'auto-yellow-1': '#593600', - 'auto-yellow-2': '#6c4400', - 'auto-yellow-3': '#805400', - 'auto-yellow-4': '#966600', - 'auto-yellow-5': '#ae7c14', - 'auto-yellow-6': '#c69026', - 'auto-yellow-7': '#daaa3f', - 'auto-yellow-8': '#eac55f', - 'auto-yellow-9': '#fbe090', - 'auto-orange-0': '#4d210c', - 'auto-orange-1': '#682d0f', - 'auto-orange-2': '#7f3913', - 'auto-orange-3': '#94471b', - 'auto-orange-4': '#ae5622', - 'auto-orange-5': '#cc6b2c', - 'auto-orange-6': '#e0823d', - 'auto-orange-7': '#f69d50', - 'auto-orange-8': '#ffbc6f', - 'auto-orange-9': '#ffddb0', - 'auto-red-0': '#78191b', - 'auto-red-1': '#78191b', - 'auto-red-2': '#922323', - 'auto-red-3': '#ad2e2c', - 'auto-red-4': '#c93c37', - 'auto-red-5': '#e5534b', - 'auto-red-6': '#f47067', - 'auto-red-7': '#ff938a', - 'auto-red-8': '#ffb8b0', - 'auto-red-9': '#ffd8d3', - 'auto-purple-0': '#352160', - 'auto-purple-1': '#472c82', - 'auto-purple-2': '#5936a2', - 'auto-purple-3': '#6b44bc', - 'auto-purple-4': '#8256d0', - 'auto-purple-5': '#986ee2', - 'auto-purple-6': '#b083f0', - 'auto-purple-7': '#dcbdfb', - 'auto-purple-8': '#dcbdfb', - 'auto-purple-9': '#eedcff', - 'auto-pink-0': '#551639', - 'auto-pink-1': '#69264a', - 'auto-pink-2': '#7e325a', - 'auto-pink-3': '#983b6e', - 'auto-pink-4': '#ae4c82', - 'auto-pink-5': '#c96198', - 'auto-pink-6': '#e275ad', - 'auto-pink-7': '#fc8dc7', - 'auto-pink-8': '#ffb3d8', - 'auto-pink-9': '#ffd7eb', - 'text-primary': '#adbac7', - 'text-secondary': '#768390', - 'text-tertiary': '#768390', - 'text-placeholder': '#545d68', - 'text-disabled': '#545d68', - 'text-inverse': '#22272e', - 'text-link': '#539bf5', - 'text-danger': '#e5534b', - 'text-success': '#6bc46d', - 'text-warning': '#daaa3f', - 'text-white': '#cdd9e5', - 'icon-primary': '#adbac7', - 'icon-secondary': '#636e7b', - 'icon-tertiary': '#545d68', - 'icon-info': '#6cb6ff', - 'icon-danger': '#e5534b', - 'icon-success': '#6bc46d', - 'icon-warning': '#daaa3f', - 'border-primary': '#444c56', - 'border-secondary': '#373e47', - 'border-tertiary': '#636e7b', - 'border-overlay': '#444c56', - 'border-inverse': '#cdd9e5', - 'border-info': '#4184e466', - 'border-danger': '#e5534b66', - 'border-success': '#57ab5a66', - 'border-warning': '#ae7c1466', - 'bg-canvas': '#22272e', - 'bg-canvas-mobile': '#1c2128', - 'bg-canvas-inverse': '#cdd9e5', - 'bg-canvas-inset': '#1e2228', - 'bg-primary': '#22272e', - 'bg-secondary': '#22272e', - 'bg-tertiary': '#2d333b', - 'bg-overlay': '#373e47', - 'bg-backdrop': '#1c2128cc', - 'bg-info': '#4184e41a', - 'bg-info-inverse': '#4184e4', - 'bg-danger': '#e5534b1a', - 'bg-danger-inverse': '#c93c37', - 'bg-success': '#46954a1a', - 'bg-success-inverse': '#46954a', - 'bg-warning': '#ae7c141a', - 'bg-warning-inverse': '#ae7c14', - 'shadow-small': '0 0 #0000', - 'shadow-medium': '0 3px 6px #1c2128', - 'shadow-large': '0 8px 24px #1c2128', - 'shadow-extra-large': '0 12px 48px #1c2128', - 'shadow-highlight': '0 0 #0000', - 'shadow-inset': '0 0 #0000', - 'state-hover-primary-bg': '#316dca', - 'state-hover-primary-border': '#4184e4', - 'state-hover-primary-text': '#cdd9e5', - 'state-hover-primary-icon': '#cdd9e5', - 'state-hover-secondary-bg': '#2d333b', - 'state-hover-secondary-border': '#2d333b', - 'state-selected-primary-bg': '#316dca', - 'state-selected-primary-border': '#4184e4', - 'state-selected-primary-text': '#cdd9e5', - 'state-selected-primary-icon': '#cdd9e5', - 'state-focus-border': '#4184e4', - 'state-focus-shadow': '0 0 0 3px #143d79', - 'fade-fg-10': '#cdd9e51a', - 'fade-fg-15': '#cdd9e526', - 'fade-fg-30': '#cdd9e54d', - 'fade-fg-50': '#cdd9e580', - 'fade-fg-70': '#cdd9e5b3', - 'fade-fg-85': '#cdd9e5d9', - 'fade-black-10': '#1c21281a', - 'fade-black-15': '#1c212826', - 'fade-black-30': '#1c21284d', - 'fade-black-50': '#1c212880', - 'fade-black-70': '#1c2128b3', - 'fade-black-85': '#1c2128d9', - 'fade-white-10': '#cdd9e51a', - 'fade-white-15': '#cdd9e526', - 'fade-white-30': '#cdd9e54d', - 'fade-white-50': '#cdd9e580', - 'fade-white-70': '#cdd9e5b3', - 'fade-white-85': '#cdd9e5d9', - 'alert-info-text': '#6cb6ff', - 'alert-info-icon': '#6cb6ff', - 'alert-info-bg': '#4184e41a', - 'alert-info-border': '#4184e466', - 'alert-warn-text': '#daaa3f', - 'alert-warn-icon': '#daaa3f', - 'alert-warn-bg': '#ae7c141a', - 'alert-warn-border': '#ae7c1466', - 'alert-error-text': '#f47067', - 'alert-error-icon': '#f47067', - 'alert-error-bg': '#e5534b1a', - 'alert-error-border': '#e5534b66', - 'alert-success-text': '#6bc46d', - 'alert-success-icon': '#6bc46d', - 'alert-success-bg': '#46954a1a', - 'alert-success-border': '#46954a66', - 'autocomplete-shadow': '0 16px 32px #1c2128d9', - 'autocomplete-row-border': '#444c56', - 'blankslate-icon': '#5f6a76', - 'btn-text': '#adbac7', - 'btn-bg': '#373e47', - 'btn-border': '#444c56', - 'btn-shadow': '0 0 #0000', - 'btn-inset-shadow': '0 0 #0000', - 'btn-hover-bg': '#444c56', - 'btn-hover-border': '#768390', - 'btn-selected-bg': '#2d333b', - 'btn-focus-bg': '#373e47', - 'btn-focus-border': '#768390', - 'btn-focus-shadow': '0 0 0 3px #7683904d', - 'btn-shadow-active': 'inset 0 0.15em 0.3em #1c212826', - 'btn-shadow-input-focus': '0 0 0 0.2em #316dca4d', - 'btn-primary-text': '#fff', - 'btn-primary-bg': '#347d39', - 'btn-primary-border': '#46954a', - 'btn-primary-shadow': '0 0 #0000', - 'btn-primary-inset-shadow': '0 0 #0000', - 'btn-primary-hover-bg': '#46954a', - 'btn-primary-hover-border': '#57ab5a', - 'btn-primary-selected-bg': '#347d39', - 'btn-primary-selected-shadow': '0 0 #0000', - 'btn-primary-disabled-text': '#cdd9e580', - 'btn-primary-disabled-bg': '#347d3999', - 'btn-primary-disabled-border': '#0000', - 'btn-primary-focus-bg': '#347d39', - 'btn-primary-focus-border': '#57ab5a', - 'btn-primary-focus-shadow': '0 0 0 3px #2ea44f66', - 'btn-primary-icon': '#cdd9e5', - 'btn-primary-counter-bg': '#cdd9e533', - 'btn-outline-text': '#539bf5', - 'btn-outline-hover-text': '#539bf5', - 'btn-outline-hover-bg': '#444c56', - 'btn-outline-hover-border': '#539bf5', - 'btn-outline-hover-shadow': '0 1px 0 #1c21281a', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 #cdd9e508', - 'btn-outline-hover-counter-bg': '#cdd9e533', - 'btn-outline-selected-text': '#cdd9e5', - 'btn-outline-selected-bg': '#1b4b91', - 'btn-outline-selected-border': '#cdd9e51a', - 'btn-outline-selected-shadow': '0 0 #0000', - 'btn-outline-disabled-text': '#539bf580', - 'btn-outline-disabled-bg': '#22272e', - 'btn-outline-disabled-counter-bg': '#316dca0d', - 'btn-outline-focus-border': '#539bf5', - 'btn-outline-focus-shadow': '0 0 0 3px #255ab266', - 'btn-outline-counter-bg': '#316dca1a', - 'btn-danger-text': '#e5534b', - 'btn-danger-hover-text': '#fff', - 'btn-danger-hover-bg': '#c93c37', - 'btn-danger-hover-border': '#e5534b', - 'btn-danger-hover-shadow': '0 0 #0000', - 'btn-danger-hover-inset-shadow': '0 0 #0000', - 'btn-danger-hover-counter-bg': '#fff3', - 'btn-danger-selected-text': '#fff', - 'btn-danger-selected-bg': '#ad2e2c', - 'btn-danger-selected-border': '#cdd9e51a', - 'btn-danger-selected-shadow': '0 0 #0000', - 'btn-danger-disabled-text': '#e5534b80', - 'btn-danger-disabled-bg': '#22272e', - 'btn-danger-disabled-counter-bg': '#c93c370d', - 'btn-danger-focus-border': '#e5534b', - 'btn-danger-focus-shadow': '0 0 0 3px #ad2e2c66', - 'btn-danger-counter-bg': '#c93c371a', - 'btn-danger-icon': '#e5534b', - 'btn-danger-hover-icon': '#cdd9e5', - 'btn-counter-bg': '#444c56', - 'counter-text': '#adbac7', - 'counter-bg': '#444c56', - 'counter-primary-text': '#adbac7', - 'counter-primary-bg': '#636e7b', - 'counter-secondary-text': '#768390', - 'counter-secondary-bg': '#76839033', - 'dropdown-shadow': '0 16px 32px #1c2128d9', - 'label-border': '#444c56', - 'label-primary-text': '#909dab', - 'label-primary-border': '#636e7b', - 'label-secondary-text': '#768390', - 'label-secondary-border': '#444c56', - 'label-info-text': '#4184e4', - 'label-info-border': '#4184e466', - 'label-success-text': '#57ab5a', - 'label-success-border': '#46954a66', - 'label-warning-text': '#daaa3f', - 'label-warning-border': '#f2d35b66', - 'label-danger-text': '#e5534b', - 'label-danger-border': '#e5534b66', - 'label-orange-text': '#cc6b2c', - 'label-orange-border': '#cc6b2c66', - 'input-bg': '#22272e', - 'input-contrast-bg': '#1c212880', - 'input-border': '#373e47', - 'input-shadow': '0 0 #0000', - 'input-disabled-bg': '#2d333b', - 'input-disabled-border': '#444c56', - 'input-warning-border': '#c69026', - 'input-error-border': '#e5534b', - 'input-tooltip-success-text': '#6bc46d', - 'input-tooltip-success-bg': '#263231', - 'input-tooltip-success-border': '#335a3b', - 'input-tooltip-warning-text': '#daaa3f', - 'input-tooltip-warning-bg': '#30302b', - 'input-tooltip-warning-border': '#624e22', - 'input-tooltip-error-text': '#f47067', - 'input-tooltip-error-bg': '#362b31', - 'input-tooltip-error-border': '#7c3b3b', - 'avatar-bg': '#cdd9e51a', - 'avatar-border': '#cdd9e51a', - 'avatar-stack-fade': '#444c56', - 'avatar-stack-fade-more': '#373e47', - 'avatar-child-shadow': '-2px -2px 0 #22272e', - 'toast-text': '#adbac7', - 'toast-bg': '#444c56', - 'toast-border': '#636e7b', - 'toast-shadow': '0 8px 24px #1c2128', - 'toast-icon': '#cdd9e5', - 'toast-icon-bg': '#316dca', - 'toast-icon-border': '#4184e4', - 'toast-success-text': '#adbac7', - 'toast-success-border': '#636e7b', - 'toast-success-icon': '#cdd9e5', - 'toast-success-icon-bg': '#46954a', - 'toast-success-icon-border': '#57ab5a', - 'toast-warning-text': '#adbac7', - 'toast-warning-border': '#636e7b', - 'toast-warning-icon': '#cdd9e5', - 'toast-warning-icon-bg': '#ae7c14', - 'toast-warning-icon-border': '#c69026', - 'toast-danger-text': '#adbac7', - 'toast-danger-border': '#636e7b', - 'toast-danger-icon': '#cdd9e5', - 'toast-danger-icon-bg': '#c93c37', - 'toast-danger-icon-border': '#e5534b', - 'toast-loading-text': '#adbac7', - 'toast-loading-border': '#636e7b', - 'toast-loading-icon': '#cdd9e5', - 'toast-loading-icon-bg': '#636e7b', - 'toast-loading-icon-border': '#768390', - 'timeline-text': '#909dab', - 'timeline-badge-bg': '#22272e', - 'timeline-badge-success-border': '#46954a', - 'timeline-target-badge-border': '#316dca', - 'timeline-target-badge-shadow': '#1b4b91', - 'select-menu-border-secondary': '#444c56', - 'select-menu-shadow': '0 0 18px #1c212866', - 'select-menu-backdrop-bg': '#1c212880', - 'select-menu-backdrop-border': '#545d68', - 'select-menu-tap-highlight': '#444c5680', - 'select-menu-tap-focus-bg': '#143d79', - 'box-blue-border': '#1b4b91', - 'box-row-yellow-bg': '#ebc4401a', - 'box-row-blue-bg': '#6cb6ff1a', - 'box-header-blue-bg': '#22272e', - 'box-header-blue-border': '#444c56', - 'box-border-info': '#4184e466', - 'box-bg-info': '#4184e41a', - 'box-border-warning': '#ae7c1466', - 'box-bg-warning': '#ae7c141a', - 'branch-name-text': '#adbac7', - 'branch-name-icon': '#909dab', - 'branch-name-bg': '#539bf51a', - 'branch-name-link-text': '#539bf5', - 'branch-name-link-icon': '#539bf5', - 'branch-name-link-bg': '#539bf51a', - 'markdown-code-bg': '#cdd9e526', - 'markdown-frame-border': '#4f5964', - 'markdown-blockquote-border': '#4f5964', - 'markdown-table-border': '#4f5964', - 'markdown-table-tr-border': '#3b424b', - 'menu-heading-text': '#768390', - 'menu-border-active': '#f78166', - 'menu-bg-active': '#2d333b', - 'sidenav-selected-bg': '#373e47', - 'sidenav-border-active': '#f78166', - 'header-text': '#cdd9e5b3', - 'header-bg': '#2d333b', - 'header-logo': '#cdd9e5', - 'filter-item-bar-bg': '#292e35', - 'hidden-text-expander-bg': '#373e47', - 'hidden-text-expander-bg-hover': '#444c56', - 'drag-and-drop-border': '#393f48', - 'upload-enabled-border': '#4f5964', - 'upload-enabled-border-focused': '#4f84d4', - 'previewable-comment-form-border': '#393f48', - 'underlinenav-border': '#444c5600', - 'underlinenav-border-hover': '#444c56', - 'underlinenav-border-active': '#f78166', - 'underlinenav-text': '#768390', - 'underlinenav-text-hover': '#adbac7', - 'underlinenav-text-active': '#adbac7', - 'underlinenav-icon': '#636e7b', - 'underlinenav-icon-hover': '#adbac7', - 'underlinenav-icon-active': '#adbac7', - 'underlinenav-counter-text': '#768390', - 'underlinenav-counter-bg': '#76839033', - 'verified-badge-text': '#57ab5a', - 'verified-badge-bg': '#57ab5a1a', - 'verified-badge-border': '#57ab5a66', - 'social-count-bg': '#373e47', - 'tooltip-text': '#cdd9e5', - 'tooltip-bg': '#636e7b', - 'header-search-bg': '#22272e', - 'header-search-border': '#373e47', - 'search-keyword-hl': '#ae7c1466', - 'diffstat-neutral-bg': '#444c56', - 'diffstat-neutral-border': '#cdd9e51a', - 'diffstat-deletion-bg': '#c93c37', - 'diffstat-deletion-border': '#e5534b', - 'diffstat-addition-bg': '#347d39', - 'diffstat-addition-border': '#46954a', - 'mktg-success': '#3d8942', - 'mktg-info': '#3877d5', - 'mktg-bg-shade-gradient-top': '#1c212811', - 'mktg-bg-shade-gradient-bottom': '#1c212800', - 'mktg-btn-bg': '#316dca', - 'mktg-btn-border': '#316dca', - 'mktg-btn-text': '#cdd9e5', - 'mktg-btn-icon': '#cdd9e5', - 'mktg-btn-focus-shadow': '0 0 0 3px #316dca4d', - 'mktg-btn-hover-bg': '#4184e4', - 'mktg-btn-hover-border': '#4184e4', - 'mktg-btn-disabled-bg': '#4184e480', - 'mktg-btn-disabled-border': '#0000', - 'mktg-btn-disabled-text': '#cdd9e580', - 'mktg-btn-disabled-icon': '#cdd9e580', - 'mktg-btn-primary-bg': '#347d39', - 'mktg-btn-primary-border': '#347d39', - 'mktg-btn-primary-text': '#cdd9e5', - 'mktg-btn-primary-icon': '#cdd9e5', - 'mktg-btn-primary-focus-shadow': '0 0 0 3px #347d394d', - 'mktg-btn-primary-hover-bg': '#46954a', - 'mktg-btn-primary-hover-border': '#46954a', - 'mktg-btn-primary-disabled-bg': '#46954a80', - 'mktg-btn-primary-disabled-border': '#0000', - 'mktg-btn-primary-disabled-text': '#cdd9e580', - 'mktg-btn-primary-disabled-icon': '#cdd9e580', - 'mktg-btn-outline-bg': '#0000', - 'mktg-btn-outline-border': '#4184e480', - 'mktg-btn-outline-text': '#4184e4', - 'mktg-btn-outline-icon': '#4184e4', - 'mktg-btn-outline-focus-shadow': '0 0 0 3px #4184e44d', - 'mktg-btn-outline-hover-bg': '#0000', - 'mktg-btn-outline-hover-border': '#4184e4', - 'mktg-btn-outline-hover-text': '#539bf5', - 'mktg-btn-outline-hover-icon': '#539bf5', - 'mktg-btn-outline-disabled-bg': '#0000', - 'mktg-btn-outline-disabled-border': '#4184e433', - 'mktg-btn-outline-disabled-text': '#4184e480', - 'mktg-btn-outline-disabled-icon': '#4184e480', - 'mktg-btn-dark-bg': '#0000', - 'mktg-btn-dark-border': '#adbac780', - 'mktg-btn-dark-text': '#adbac7', - 'mktg-btn-dark-icon': '#adbac7', - 'mktg-btn-dark-focus-shadow': '0 0 0 3px #adbac74d', - 'mktg-btn-dark-hover-bg': '#adbac780', - 'mktg-btn-dark-hover-border': '#adbac780', - 'mktg-btn-dark-hover-text': '#22272e', - 'mktg-btn-dark-hover-icon': '#22272e', - 'mktg-btn-dark-disabled-bg': '#0000', - 'mktg-btn-dark-disabled-border': '#adbac733', - 'mktg-btn-dark-disabled-text': '#adbac780', - 'mktg-btn-dark-disabled-icon': '#adbac780', - 'files-explorer-icon': '#636e7b', - 'hl-author-bg': '#0f2d5c', - 'hl-author-border': '#1b4b91', - 'logo-subdued': '#444c56', - 'discussion-border': '#494c49', - 'discussion-bg-success': '#46954a1a', - 'actions-workflow-table-sticky-bg': '#22272ef2', - 'repo-language-color-border': '#cdd9e533', - 'code-selection-bg': '#6cb6ff4d', - 'highlight-text': '#ffd467', - 'highlight-bg': '#cc8f2c61', - 'blob-line-highlight-bg': '#c6902626', - 'blob-line-highlight-border': '#daaa3f', - 'diff-addition-text': '#6bc46d', - 'diff-addition-bg': '#46954a33', - 'diff-addition-border': '#2b6a30', - 'diff-deletion-text': '#e5534b', - 'diff-deletion-bg': '#c93c3733', - 'diff-deletion-border': '#ad2e2c', - 'diff-change-text': '#daaa3f', - 'diff-change-bg': '#452700', - 'diff-change-border': '#966600', - 'diff-blob-num-text': '#cdd9e54d', - 'diff-blob-num-hover-text': '#cdd9e599', - 'diff-blob-addition-num-text': '#57ab5a', - 'diff-blob-addition-num-hover-text': '#8ddb8c', - 'diff-blob-addition-num-bg': '#46954a1a', - 'diff-blob-addition-line-bg': '#46954a33', - 'diff-blob-addition-word-bg': '#46954a8c', - 'diff-blob-deletion-num-text': '#e5534b', - 'diff-blob-deletion-num-hover-text': '#ff938a', - 'diff-blob-deletion-num-bg': '#c93c371a', - 'diff-blob-deletion-line-bg': '#c93c3733', - 'diff-blob-deletion-word-bg': '#c93c3780', - 'diff-blob-hunk-text': '#768390', - 'diff-blob-hunk-num-bg': '#539bf526', - 'diff-blob-hunk-line-bg': '#539bf51a', - 'diff-blob-empty-block-bg': '#2d333b', - 'diff-blob-selected-line-highlight-bg': '#ae7c141a', - 'diff-blob-selected-line-highlight-border': '#ae7c14', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'normal', - 'diff-blob-expander-icon': '#768390', - 'diff-blob-expander-hover-icon': '#cdd9e5', - 'diff-blob-expander-hover-bg': '#316dca', - 'diff-blob-comment-button-icon': '#cdd9e5', - 'diff-blob-comment-button-bg': '#316dca', - 'diff-blob-comment-button-gradient-bg': '#437bd1', - 'global-nav-logo': '#cdd9e5', - 'global-nav-bg': '#2d333b', - 'global-nav-text': '#adbac7', - 'global-nav-icon': '#adbac7', - 'global-nav-input-bg': '#22272e', - 'global-nav-input-border': '#373e47', - 'global-nav-input-icon': '#373e47', - 'global-nav-input-placeholder': '#545d68', - 'calendar-graph-day-bg': '#2d333b', - 'calendar-graph-day-border': '#1b1f230f', - 'calendar-graph-day-L1-bg': '#003820', - 'calendar-graph-day-L2-bg': '#00602d', - 'calendar-graph-day-L3-bg': '#10983d', - 'calendar-graph-day-L4-bg': '#27d545', - 'calendar-graph-day-L4-border': '#ffffff0d', - 'calendar-graph-day-L3-border': '#ffffff0d', - 'calendar-graph-day-L2-border': '#ffffff0d', - 'calendar-graph-day-L1-border': '#ffffff0d', - 'footer-invertocat-octicon': '#444c56', - 'footer-invertocat-octicon-hover': '#636e7b', - 'pr-state-draft-text': '#768390', - 'pr-state-draft-bg': '#7683901a', - 'pr-state-draft-border': '#76839066', - 'pr-state-open-text': '#57ab5a', - 'pr-state-open-bg': '#57ab5a1a', - 'pr-state-open-border': '#57ab5a66', - 'pr-state-merged-text': '#986ee2', - 'pr-state-merged-bg': '#b083f01a', - 'pr-state-merged-border': '#b083f066', - 'pr-state-closed-text': '#e5534b', - 'pr-state-closed-bg': '#c93c371a', - 'pr-state-closed-border': '#c93c3766', - 'topic-tag-text': '#539bf5', - 'topic-tag-bg': '#4184e41a', - 'topic-tag-hover-bg': '#4184e433', - 'topic-tag-active-bg': '#4184e426', - 'merge-box-success-icon-bg': '#46954a1a', - 'merge-box-success-icon-text': '#57ab5a', - 'merge-box-success-icon-border': '#46954a66', - 'merge-box-success-indicator-bg': '#347d39', - 'merge-box-success-indicator-border': '#46954a', - 'merge-box-merged-icon-bg': '#b083f01a', - 'merge-box-merged-icon-text': '#986ee2', - 'merge-box-merged-icon-border': '#b083f066', - 'merge-box-merged-box-border': '#b083f066', - 'merge-box-neutral-icon-bg': '#adbac71a', - 'merge-box-neutral-icon-text': '#768390', - 'merge-box-neutral-icon-border': '#adbac766', - 'merge-box-neutral-indicator-bg': '#545d68', - 'merge-box-neutral-indicator-border': '#636e7b', - 'merge-box-warning-icon-bg': '#ae7c141a', - 'merge-box-warning-icon-text': '#daaa3f', - 'merge-box-warning-icon-border': '#ae7c1466', - 'merge-box-warning-box-border': '#ae7c1466', - 'merge-box-warning-merge-highlight': '#ae7c141a', - 'merge-box-error-icon-bg': '#e5534b1a', - 'merge-box-error-icon-text': '#e5534b', - 'merge-box-error-icon-border': '#e5534b66', - 'merge-box-error-indicator-bg': '#c93c37', - 'merge-box-error-indicator-border': '#e5534b', - 'project-card-bg': '#2d333b', - 'project-header-bg': '#22272e', - 'project-sidebar-bg': '#2d333b', - 'project-gradient-in': '#2d333b', - 'project-gradient-out': '#2d333b00', - 'checks-bg': '#1e2228', - 'checks-run-border-width': '1px', - 'checks-container-border-width': '1px', - 'checks-text-primary': '#adbac7', - 'checks-text-secondary': '#768390', - 'checks-text-link': '#539bf5', - 'checks-btn-icon': '#636e7b', - 'checks-btn-hover-icon': '#adbac7', - 'checks-btn-hover-bg': '#444c56', - 'checks-input-text': '#768390', - 'checks-input-placeholder-text': '#545d68', - 'checks-input-focus-text': '#adbac7', - 'checks-input-bg': '#22272e', - 'checks-input-shadow': '0 0 0 1px #373e47', - 'checks-dropdown-text': '#adbac7', - 'checks-dropdown-bg': '#373e47', - 'checks-dropdown-border': '#444c56', - 'checks-dropdown-hover-text': '#cdd9e5', - 'checks-dropdown-hover-bg': '#316dca', - 'checks-dropdown-btn-hover-text': '#cdd9e5', - 'checks-dropdown-btn-hover-bg': '#2d333b', - 'checks-scrollbar-thumb-bg': '#444c56', - 'checks-header-label-text': '#768390', - 'checks-header-label-open-text': '#adbac7', - 'checks-header-border': '#373e47', - 'checks-header-icon': '#636e7b', - 'checks-line-text': '#768390', - 'checks-line-num-text': '#768390', - 'checks-line-timestamp-text': '#768390', - 'checks-line-hover-bg': '#2d333b', - 'checks-line-selected-bg': '#4184e41a', - 'checks-line-selected-num-text': '#539bf5', - 'checks-line-dt-fm-text': '#22272e', - 'checks-line-dt-fm-bg': '#c69026', - 'checks-gate-bg': '#80540026', - 'checks-gate-text': '#768390', - 'checks-gate-waiting-text': '#daaa3f', - 'checks-step-header-open-bg': '#2d333b', - 'checks-step-error-text': '#e5534b', - 'checks-step-warning-text': '#daaa3f', - 'checks-logline-text': '#636e7b', - 'checks-logline-num-text': '#768390', - 'checks-logline-debug-text': '#b083f0', - 'checks-logline-error-text': '#768390', - 'checks-logline-error-num-text': '#768390', - 'checks-logline-error-bg': '#e5534b1a', - 'checks-logline-warning-text': '#768390', - 'checks-logline-warning-num-text': '#daaa3f', - 'checks-logline-warning-bg': '#ae7c141a', - 'checks-logline-command-text': '#539bf5', - 'checks-logline-section-text': '#6bc46d', - 'intro-shelf-gradient-left': '#4184e41a', - 'intro-shelf-gradient-right': '#46954a1a', - 'intro-shelf-gradient-in': '#22272e', - 'intro-shelf-gradient-out': '#22272e00', - 'marketing-icon-primary': '#6cb6ff', - 'marketing-icon-secondary': '#316dca', - 'prettylights-syntax-comment': '#768390', - 'prettylights-syntax-constant': '#6cb6ff', - 'prettylights-syntax-entity': '#dcbdfb', - 'prettylights-syntax-storage-modifier-import': '#adbac7', - 'prettylights-syntax-entity-tag': '#8ddb8c', - 'prettylights-syntax-keyword': '#f47067', - 'prettylights-syntax-string': '#96d0ff', - 'prettylights-syntax-variable': '#f69d50', - 'prettylights-syntax-brackethighlighter-unmatched': '#e5534b', - 'prettylights-syntax-invalid-illegal-text': '#cdd9e5', - 'prettylights-syntax-invalid-illegal-bg': '#922323', - 'prettylights-syntax-carriage-return-text': '#cdd9e5', - 'prettylights-syntax-carriage-return-bg': '#ad2e2c', - 'prettylights-syntax-string-regexp': '#8ddb8c', - 'prettylights-syntax-markup-list': '#eac55f', - 'prettylights-syntax-markup-heading': '#316dca', - 'prettylights-syntax-markup-italic': '#adbac7', - 'prettylights-syntax-markup-bold': '#adbac7', - 'prettylights-syntax-markup-deleted-text': '#ffd8d3', - 'prettylights-syntax-markup-deleted-bg': '#78191b', - 'prettylights-syntax-markup-inserted-text': '#b4f1b4', - 'prettylights-syntax-markup-inserted-bg': '#1b4721', - 'prettylights-syntax-markup-changed-text': '#ffddb0', - 'prettylights-syntax-markup-changed-bg': '#682d0f', - 'prettylights-syntax-markup-ignored-text': '#adbac7', - 'prettylights-syntax-markup-ignored-bg': '#255ab2', - 'prettylights-syntax-meta-diff-range': '#dcbdfb', - 'prettylights-syntax-brackethighlighter-angle': '#768390', - 'prettylights-syntax-sublimelinter-gutter-mark': '#545d68', - 'prettylights-syntax-constant-other-reference-link': '#96d0ff', - 'codemirror-text': '#adbac7', - 'codemirror-bg': '#22272e', - 'codemirror-gutters-bg': '#22272e', - 'codemirror-guttermarker-text': '#22272e', - 'codemirror-guttermarker-subtle-text': '#636e7b', - 'codemirror-linenumber-text': '#768390', - 'codemirror-cursor': '#cdd9e5', - 'codemirror-selection-bg': '#6cb6ff4d', - 'codemirror-activeline-bg': '#2d333b', - 'codemirror-matchingbracket-text': '#adbac7', - 'codemirror-lines-bg': '#22272e', - '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', - 'ansi-black': '#22272e', - 'ansi-black-bright': '#2d333b', - 'ansi-white': '#909dab', - 'ansi-white-bright': '#909dab', - 'ansi-gray': '#636e7b', - 'ansi-red': '#f47067', - 'ansi-red-bright': '#ff938a', - 'ansi-green': '#57ab5a', - 'ansi-green-bright': '#6bc46d', - 'ansi-yellow': '#c69026', - 'ansi-yellow-bright': '#daaa3f', - 'ansi-blue': '#539bf5', - 'ansi-blue-bright': '#6cb6ff', - 'ansi-magenta': '#b083f0', - 'ansi-magenta-bright': '#dcbdfb', - 'ansi-cyan': '#76e3ea', - 'ansi-cyan-bright': '#b3f0ff', -); diff --git a/src/styles/index.scss b/src/styles/index.scss index d155b4a..a3b5681 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -11,9 +11,42 @@ $min-width-with-gitako: $min-screen-width + $side-bar-base-width; $github-header-z-index: 32; $github-pull-request-float-header-z-index: 110; -$minimal-z-index: max($github-header-z-index, $github-pull-request-float-header-z-index) + 1; +$github-notifications-center-header-z-index: 999; +$minimal-z-index: max( + $github-header-z-index, + $github-pull-request-float-header-z-index, + $github-notifications-center-header-z-index + ) + 1; -@mixin interactive-background($default, $hover, $active, $focus: $hover) { +@mixin interactive-frame() { + @include interactive-border; + @include interactive-background; +} + +@mixin interactive-border( + $default: var(--gitako-btn-border), + $hover: var(--gitako-btn-hover-border), + $active: var(--gitako-btn-active-border), + $focus: $hover +) { + border: 1px solid $default; + &:hover { + border: 1px solid $hover; + } + &:focus { + border: 1px solid $focus; + } + &:active { + border: 1px solid $active; + } +} + +@mixin interactive-background( + $default: var(--gitako-btn-bg), + $hover: var(--gitako-btn-hover-bg), + $active: var(--gitako-btn-active-bg), + $focus: $hover +) { background-color: $default; &:hover { background-color: $hover; @@ -47,47 +80,14 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- } } -:root { - --gitako-width: #{$side-bar-base-width}; +@mixin hide-for-print { + @media print { + display: none; + } } .#{$name}-ready { // github - &.shrink-github-header { - .js-header-wrapper { - background: var(--gitako-bg-canvas-inverse); - } - .Header { - max-width: 1280px; - margin: 0 auto; - @media (max-width: 1020px) { - overflow: hidden; // prevent blank scroll area when Gitako is open and window is narrow - } - @media (min-width: 1280px) { - padding: 0 32px !important; - } - } - main { - // overflow: hidden; - // This prevents blank scroll area when Gitako is open and window is narrow. - // But it conflicts with the pr toolbar. Keep it here as a reminder. - - & > *:first-child { - // repo info and nav bar - box-shadow: inset 0 -1px 0 var(--gitako-border-overlay); // from .UnderlineNav - - & > * { - max-width: 1280px; - margin: 0 auto; - } - - nav { - overflow: auto !important; - } - } - } - } - // code folding start .blob-wrapper table .blob-num { position: relative; // for positioning @@ -95,17 +95,16 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- padding-right: 20px; } - // cancel code fold if not wrapped with .gitako-code-fold-mark + // hide code fold handler if not enabled .gitako-code-fold-handler { display: none; } - .gitako-code-fold-hidden { - display: table-cell; - } - .gitako-code-fold-attached { + .gitako-code-fold-attached:not(.gitako-code-fold-attached-disabled) { tr { .gitako-code-fold-handler { + @include hide-for-print(); + display: initial; position: absolute; top: 0px; @@ -133,29 +132,32 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- } @include interactive-background-on-before( - var(--gitako-icon-tertiary), - var(--gitako-icon-primary), - var(--gitako-icon-secondary) + var(--gitako-fg-subtle), + var(--gitako-fg-default), + var(--gitako-fg-muted) ); } - &.active { + &.gitako-code-fold-active { .gitako-code-fold-handler { &::before { transform: rotate(-90deg); } @include interactive-background-on-before( - var(--gitako-icon-secondary), - var(--gitako-icon-tertiary), - var(--gitako-icon-primary) + var(--gitako-fg-muted), + var(--gitako-fg-default), + var(--gitako-fg-subtle) ); } } - } - .gitako-code-fold-hidden { - display: none; + // hide folded sections, except for print + &.gitako-code-fold-hidden { + @media screen { + display: none; + } + } } } // code folding end @@ -173,14 +175,10 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- .clippy { width: 32px; height: 32px; - border: 1px solid var(--gitako-border-tertiary); + border: 1px solid var(--gitako-border-default); border-radius: 4px; - @include interactive-background( - var(--gitako-btn-bg), - var(--gitako-btn-hover-bg), - var(--gitako-btn-focus-bg) - ); + @include interactive-background; .icon { width: 100%; height: 100%; @@ -212,7 +210,9 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- } .with-gitako-spacing { - margin-left: var(--gitako-width); + @media screen { + margin-left: var(--gitako-width); + } // gitee &.git-project { @@ -272,13 +272,15 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- // Why does not TextInput get theme properly? @mixin input { - color: var(--gitako-text-primary); - background-color: var(--gitako-input-bg); - border-color: var(--gitako-border-primary); - box-shadow: var(--gitako-input-shadow); + 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}-toggle-show-button-wrapper { + @include hide-for-print(); + z-index: $minimal-z-index; position: fixed; top: 124px; // align with GitHub's navbar items @@ -310,11 +312,10 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- height: 32px; padding: 4px; border-radius: 6px; - border: 1px solid var(--gitako-border-tertiary); - background: var(--gitako-bg-tertiary); - color: var(--gitako-icon-primary); + @include interactive-frame; + color: var(--gitako-fg-default); &:active { - color: var(--gitako-icon-tertiary); + color: var(--gitako-fg-subtle); } transition: all ease 0.3s; font-size: 16px; @@ -330,13 +331,13 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- object-fit: contain; transition: all ease 0.4s; transform: translateX(-8px); - filter: drop-shadow(0 0 1px var(--gitako-bg-backdrop)); + filter: drop-shadow(0 0 1px var(--gitako-primer-canvas-backdrop)); } &:active, &:hover { .tentacle { transform: translateX(-4px); - filter: drop-shadow(0 0 2px var(--gitako-bg-backdrop)); + filter: drop-shadow(0 0 2px var(--gitako-primer-canvas-backdrop)); } } } @@ -346,10 +347,10 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- margin-left: 4px; padding: 2px 4px; font-size: 12px; - color: var(--gitako-text-red); - border: 1px solid var(--gitako-border-overlay); + color: var(--gitako-danger-fg); + border: 1px solid var(--gitako-border-default); border-radius: 2px; - background-color: var(--gitako-bg-tertiary); + background-color: var(--gitako-bg-subtle); } &:hover { @@ -360,13 +361,15 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- } .#{$name}-side-bar { + @include hide-for-print(); + @import '~@primer/css/base/index.scss'; button { border-radius: 6px; font-weight: 600; } a { - color: var(--gitako-text-link); + color: var(--gitako-accent-fg); } $resizeHandlerWidth: 1px; @@ -393,7 +396,6 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- } .gitako-side-bar-body-wrapper-content { - width: var(--gitako-width); } } .#{$name}-resize-handler { @@ -402,15 +404,15 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- cursor: ew-resize; user-select: none; width: 0; - background: var(--gitako-bg-tertiary); - border-right: $resizeHandlerWidth solid var(--gitako-border-tertiary); + background: var(--gitako-bg-subtle); + border-right: $resizeHandlerWidth solid var(--gitako-border-default); overflow: hidden; box-sizing: content-box; &:hover, &:active { width: 16px; - background: var(--gitako-bg-secondary); - border-left: 1px solid var(--gitako-border-tertiary); + background: var(--gitako-bg-subtle); + border-left: 1px solid var(--gitako-border-default); } .octicon.Grabber { @@ -423,23 +425,23 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- .#{$name}-side-bar-body { $button-size: 32px; position: relative; - width: 100%; + width: var(--gitako-width); height: 100%; display: flex; flex-direction: column; - background: var(--gitako-bg-secondary); - border-left: 1px solid var(--gitako-border-overlay); + background: var(--gitako-bg-subtle); + border-left: 1px solid var(--gitako-border-default); overflow: hidden; .octicon { transition: transform 0.3s ease; - color: var(--gitako-icon-tertiary); + color: var(--gitako-fg-subtle); width: 100%; height: 100%; } .octicon-color { - color: var(--gitako-icon-tertiary); + color: var(--gitako-fg-subtle); } .octicon-wrapper { @@ -458,26 +460,33 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- .header { position: relative; min-height: 62px; // GitHub header height if login - background: var(--gitako-bg-tertiary); + background: var(--gitako-bg-subtle); padding: 6px 10px; flex-shrink: 0; position: relative; // prevent overlap by outline of other elements .user-and-repo { display: inline; // would be override by CSS rule of section from @primer/css - line-height: 32px; - a { - color: var(--gitako-text-link); - white-space: normal; + li { + display: inline-flex; + align-items: center; + min-height: 32px; + padding: 4px 0; + + a { + color: var(--gitako-accent-fg); + white-space: normal; + } } } .branch-name { margin-left: 4px; padding: 4px 6px; // did not align well for some reason :/ - color: var(--gitako-branch-name-text); - background-color: var(--gitako-branch-name-bg); + color: var(--gitako-fg-muted); + background-color: var(--gitako-accent-subtle); + word-break: break-word; } .close-side-bar-button-position { @@ -496,11 +505,11 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- } &.active .octicon { - color: var(--gitako-icon-primary); + color: var(--gitako-fg-default); } .action-icon { - color: var(--gitako-icon-tertiary); + color: var(--gitako-fg-subtle); width: 20px; height: 20px; text-align: center; @@ -529,12 +538,12 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- width: 100%; height: 100%; @include flex-center(); - border-top: 1px solid var(--gitako-border-overlay); + border-top: 1px solid var(--gitako-border-default); .loading-indicator { display: flex; align-items: center; - color: var(--gitako-text-placeholder); + color: var(--gitako-fg-subtle); &-icon { width: 20px; @@ -574,14 +583,15 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- .search-input { width: 100%; box-shadow: none; // stay low - border-color: var(--gitako-border-overlay); + 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-text-primary); - background: var(--gitako-bg-canvas); + color: var(--gitako-fg-default); + background: var(--gitako-bg-default); padding-right: 40px; // save space for actions &.error { - border-color: var(--gitako-border-danger); + border-color: var(--gitako-danger-emphasis); } } @@ -599,27 +609,30 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- margin: 0; padding: 2px 4px; min-width: 32px; - border: 1px solid var(--gitako-border-secondary); + border: 1px solid var(--gitako-border-muted); border-radius: 8px; - color: var(--gitako-text-secondary); + color: var(--gitako-fg-muted); font-size: 12px; font-weight: 500; line-height: 1; outline: none; - @include interactive-background( - var(--gitako-bg-primary), - var(--gitako-bg-secondary), - var(--gitako-bg-tertiary) - ); + @include interactive-frame; } } } .files { + position: relative; flex: 1; - overflow: auto; - overflow-x: hidden; // prevent x-scroll bar show up while sizing + overflow: hidden; + + // Put this inside files will help files to get proper size derived from parents, regardless of its content size + .magic-size-container { + position: absolute; + width: 100%; + height: 100%; + } } .node-item { @@ -632,21 +645,21 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- &.focused { @include interactive-background( - var(--gitako-bg-tertiary), - var(--gitako-bg-secondary), - var(--gitako-bg-overlay) + var(--gitako-canvas-subtle), + var(--gitako-canvas-subtle), + var(--gitako-canvas-inset) ); } @include interactive-background( - var(--gitako-auto-white), - var(--gitako-bg-secondary), - var(--gitako-bg-tertiary) + var(--gitako-canvas-default), + var(--gitako-canvas-subtle), + var(--gitako-canvas-inset) ); &.disabled { pointer-events: none; - color: var(--gitako-text-disabled); + color: var(--gitako-fg-muted); } display: flex; justify-content: space-between; @@ -657,17 +670,17 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- white-space: nowrap; transition: padding 0.3s ease; // on toggle expansion in search results - border-bottom: 1px solid var(--gitako-border-secondary); + border-bottom: 1px solid var(--gitako-border-muted); &.compact { border-bottom: none; &.focused { - border-top: 1px solid var(--gitako-border-secondary); - border-bottom: 1px solid var(--gitako-border-secondary); + border-top: 1px solid var(--gitako-border-muted); + border-bottom: 1px solid var(--gitako-border-muted); } } &:not(:hover) { - color: var(--gitako-text-primary); + color: var(--gitako-fg-default); } @mixin icon-size() { @@ -714,7 +727,7 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- &:not(:hover) { .node-item-label .prefix { - color: var(--gitako-text-tertiary); + color: var(--gitako-fg-muted); } } @@ -723,13 +736,79 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- padding-right: 8px; .node-item-comment { - display: inline-block; - width: 48px; + display: inline-flex; + align-items: center; + min-width: 36px; padding: 0 4px; - color: var(--gitako-text-tertiary); + color: var(--gitako-fg-muted); .octicon-wrapper { - margin: 0; // make it closer to the comment amount label + margin: 2px; // make it closer to the comment amount label + } + } + + .node-item-diff { + display: inline-flex; + align-items: center; + padding: 0 4px; + color: var(--gitako-fg-muted); + + .octicon-wrapper { + margin: 0; // make it closer to the diff details + } + + .added .octicon { + color: var(--gitako-success-emphasis); + } + .removed .octicon { + color: var(--gitako-danger-emphasis); + } + .renamed .octicon { + color: var(--gitako-done-emphasis); + } + .modified .octicon { + color: var(--gitako-accent-emphasis); + } + .ignored .octicon { + color: var(--gitako-neutral-emphasis); + } + + .diff-stat-graph { + display: inline-block; + white-space: nowrap; + > span { + display: inline-block; + width: 2px; + height: 10px; + margin: 0 1px; + border-radius: 2px; + background: var(--gitako-neutral-emphasis); + } + + .diff-stat-graph-addition { + background: var(--gitako-success-emphasis); + } + + .diff-stat-graph-deletion { + background: var(--gitako-danger-emphasis); + } + } + + .diff-stat-text { + display: inline-block; + white-space: nowrap; + // Use some commonly available monospace font, the leading ones are copied from GitHub + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, + monospace, 'Cascadia Code', 'Courier New', Courier; + .additions { + color: var(--gitako-success-emphasis); + } + .delimiter { + color: var(--gitako-neutral-emphasis); + } + .deletions { + color: var(--gitako-danger-emphasis); + } } } @@ -767,12 +846,12 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- .#{$name}-settings-bar { z-index: 2; - background: var(--gitako-bg-tertiary); + background: var(--gitako-bg-subtle); display: flex; flex-direction: column; max-height: calc(100vh - 120px); &-title { - border-top: 1px solid var(--gitako-border-secondary); + border-top: 1px solid var(--gitako-border-muted); 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); @@ -790,7 +869,7 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- height: 10px; top: 0; left: 0; - background: var(--gitako-bg-tertiary); + background: var(--gitako-bg-subtle); z-index: 1; } .settings-section { @@ -821,10 +900,10 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- // make it look like text inputs height: 36px; border-radius: 6px; - border: 1px solid var(--gitako-input-border); - background: var(--gitako-input-bg); - color: var(--gitako-text-primary); - box-shadow: var(--gitako-input-shadow); + border: 1px solid var(--gitako-border-default); + background: var(--gitako-canvas-default); + color: var(--gitako-fg-default); + box-shadow: var(--gitako-primer-shadow-inset); } &.field-checkbox { padding-left: 20px; @@ -849,7 +928,7 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- margin-bottom: 4px; } .hint { - color: var(--gitako-text-placeholder); + color: var(--gitako-fg-subtle); } .access-token-input-control { display: flex; @@ -871,10 +950,10 @@ $minimal-z-index: max($github-header-z-index, $github-pull-request-float-header- justify-content: space-between; align-items: center; padding: 2px 6px 2px 10px; - border-top: 1px solid var(--gitako-border-secondary); + border-top: 1px solid var(--gitako-border-muted); .version { - color: var(--gitako-text-tertiary); + color: var(--gitako-fg-muted); } .header-right { diff --git a/src/styles/light/variables.scss b/src/styles/light/variables.scss deleted file mode 100644 index ab58492..0000000 --- a/src/styles/light/variables.scss +++ /dev/null @@ -1,566 +0,0 @@ -$variables: ( - 'auto-black': '#1b1f23', - 'auto-white': '#fff', - 'auto-gray-0': '#fafbfc', - 'auto-gray-1': '#f6f8fa', - 'auto-gray-2': '#e1e4e8', - 'auto-gray-3': '#d1d5da', - 'auto-gray-4': '#959da5', - 'auto-gray-5': '#6a737d', - 'auto-gray-6': '#586069', - 'auto-gray-7': '#444d56', - 'auto-gray-8': '#2f363d', - 'auto-gray-9': '#24292e', - 'auto-blue-0': '#f1f8ff', - 'auto-blue-1': '#dbedff', - 'auto-blue-2': '#c8e1ff', - 'auto-blue-3': '#79b8ff', - 'auto-blue-4': '#2188ff', - 'auto-blue-5': '#0366d6', - 'auto-blue-6': '#005cc5', - 'auto-blue-7': '#044289', - 'auto-blue-8': '#032f62', - 'auto-blue-9': '#05264c', - 'auto-green-0': '#f0fff4', - 'auto-green-1': '#dcffe4', - 'auto-green-2': '#bef5cb', - 'auto-green-3': '#85e89d', - 'auto-green-4': '#34d058', - 'auto-green-5': '#28a745', - 'auto-green-6': '#22863a', - 'auto-green-7': '#176f2c', - 'auto-green-8': '#165c26', - 'auto-green-9': '#144620', - 'auto-yellow-0': '#fffdef', - 'auto-yellow-1': '#fffbdd', - 'auto-yellow-2': '#fff5b1', - 'auto-yellow-3': '#ffea7f', - 'auto-yellow-4': '#ffdf5d', - 'auto-yellow-5': '#ffd33d', - 'auto-yellow-6': '#f9c513', - 'auto-yellow-7': '#dbab09', - 'auto-yellow-8': '#b08800', - 'auto-yellow-9': '#735c0f', - 'auto-orange-0': '#fff8f2', - 'auto-orange-1': '#ffebda', - 'auto-orange-2': '#ffd1ac', - 'auto-orange-3': '#ffab70', - 'auto-orange-4': '#fb8532', - 'auto-orange-5': '#f66a0a', - 'auto-orange-6': '#e36209', - 'auto-orange-7': '#d15704', - 'auto-orange-8': '#c24e00', - 'auto-orange-9': '#a04100', - 'auto-red-0': '#ffeef0', - 'auto-red-1': '#ffdce0', - 'auto-red-2': '#fdaeb7', - 'auto-red-3': '#f97583', - 'auto-red-4': '#ea4a5a', - 'auto-red-5': '#d73a49', - 'auto-red-6': '#cb2431', - 'auto-red-7': '#b31d28', - 'auto-red-8': '#9e1c23', - 'auto-red-9': '#86181d', - 'auto-purple-0': '#f5f0ff', - 'auto-purple-1': '#e6dcfd', - 'auto-purple-2': '#d1bcf9', - 'auto-purple-3': '#b392f0', - 'auto-purple-4': '#8a63d2', - 'auto-purple-5': '#6f42c1', - 'auto-purple-6': '#5a32a3', - 'auto-purple-7': '#4c2889', - 'auto-purple-8': '#3a1d6e', - 'auto-purple-9': '#29134e', - 'auto-pink-0': '#ffeef8', - 'auto-pink-1': '#fedbf0', - 'auto-pink-2': '#f9b3dd', - 'auto-pink-3': '#f692ce', - 'auto-pink-4': '#ec6cb9', - 'auto-pink-5': '#ea4aaa', - 'auto-pink-6': '#d03592', - 'auto-pink-7': '#b93a86', - 'auto-pink-8': '#99306f', - 'auto-pink-9': '#6d224f', - 'text-primary': '#24292e', - 'text-secondary': '#586069', - 'text-tertiary': '#6a737d', - 'text-placeholder': '#6a737d', - 'text-disabled': '#6a737d', - 'text-inverse': '#fff', - 'text-link': '#0366d6', - 'text-danger': '#cb2431', - 'text-success': '#22863a', - 'text-warning': '#b08800', - 'text-white': '#fff', - 'icon-primary': '#24292e', - 'icon-secondary': '#586069', - 'icon-tertiary': '#959da5', - 'icon-info': '#0366d6', - 'icon-danger': '#d73a49', - 'icon-success': '#22863a', - 'icon-warning': '#b08800', - 'border-primary': '#e1e4e8', - 'border-secondary': '#eaecef', - 'border-tertiary': '#d1d5da', - 'border-overlay': '#e1e4e8', - 'border-inverse': '#fff', - 'border-info': '#0366d6', - 'border-danger': '#d73a49', - 'border-success': '#34d058', - 'border-warning': '#f9c513', - 'bg-canvas': '#fff', - 'bg-canvas-mobile': '#fff', - 'bg-canvas-inverse': '#24292e', - 'bg-canvas-inset': '#f6f8fa', - 'bg-primary': '#fff', - 'bg-secondary': '#fafbfc', - 'bg-tertiary': '#f6f8fa', - 'bg-overlay': '#fff', - 'bg-backdrop': '#1b1f2380', - 'bg-info': '#f1f8ff', - 'bg-info-inverse': '#0366d6', - 'bg-danger': '#ffeef0', - 'bg-danger-inverse': '#d73a49', - 'bg-success': '#dcffe4', - 'bg-success-inverse': '#28a745', - 'bg-warning': '#fff5b1', - 'bg-warning-inverse': '#ffd33d', - 'shadow-small': '0 1px 0 #1b1f230a', - 'shadow-medium': '0 3px 6px #959da526', - 'shadow-large': '0 8px 24px #959da533', - 'shadow-extra-large': '0 12px 48px #959da54d', - 'shadow-highlight': 'inset 0 1px 0 #ffffff40', - 'shadow-inset': 'inset 0 1px 0 #e1e4e833', - 'state-hover-primary-bg': '#0366d6', - 'state-hover-primary-border': '#0366d6', - 'state-hover-primary-text': '#fff', - 'state-hover-primary-icon': '#fff', - 'state-hover-secondary-bg': '#f6f8fa', - 'state-hover-secondary-border': '#f6f8fa', - 'state-selected-primary-bg': '#0366d6', - 'state-selected-primary-border': '#0366d6', - 'state-selected-primary-text': '#fff', - 'state-selected-primary-icon': '#fff', - 'state-focus-border': '#0366d6', - 'state-focus-shadow': '0 0 0 3px #0366d64d', - 'fade-fg-10': '#1b1f231a', - 'fade-fg-15': '#1b1f2326', - 'fade-fg-30': '#1b1f234d', - 'fade-fg-50': '#1b1f2380', - 'fade-fg-70': '#1b1f23b3', - 'fade-fg-85': '#1b1f23d9', - 'fade-black-10': '#1b1f231a', - 'fade-black-15': '#1b1f2326', - 'fade-black-30': '#1b1f234d', - 'fade-black-50': '#1b1f2380', - 'fade-black-70': '#1b1f23b3', - 'fade-black-85': '#1b1f23d9', - 'fade-white-10': '#ffffff1a', - 'fade-white-15': '#ffffff26', - 'fade-white-30': '#ffffff4d', - 'fade-white-50': '#ffffff80', - 'fade-white-70': '#ffffffb3', - 'fade-white-85': '#ffffffd9', - 'alert-info-text': '#24292e', - 'alert-info-icon': '#04428999', - 'alert-info-bg': '#dbedff', - 'alert-info-border': '#04428933', - 'alert-warn-text': '#24292e', - 'alert-warn-icon': '#b08800', - 'alert-warn-bg': '#fffbdd', - 'alert-warn-border': '#b0880033', - 'alert-error-text': '#24292e', - 'alert-error-icon': '#9e1c2399', - 'alert-error-bg': '#ffe3e6', - 'alert-error-border': '#9e1c2333', - 'alert-success-text': '#24292e', - 'alert-success-icon': '#176f2ccc', - 'alert-success-bg': '#dcffe4', - 'alert-success-border': '#176f2c33', - 'autocomplete-shadow': '0 3px 6px #959da526', - 'autocomplete-row-border': '#eaecef', - 'blankslate-icon': '#a3aab1', - 'btn-text': '#24292e', - 'btn-bg': '#fafbfc', - 'btn-border': '#1b1f2326', - 'btn-shadow': '0 1px 0 #1b1f230a', - 'btn-inset-shadow': 'inset 0 1px 0 #ffffff40', - 'btn-hover-bg': '#f3f4f6', - 'btn-hover-border': '#1b1f2326', - 'btn-selected-bg': '#edeff2', - 'btn-focus-bg': '#fafbfc', - 'btn-focus-border': '#1b1f2326', - 'btn-focus-shadow': '0 0 0 3px #0366d64d', - 'btn-shadow-active': 'inset 0 0.15em 0.3em #1b1f2326', - 'btn-shadow-input-focus': '0 0 0 0.2em #0366d64d', - 'btn-primary-text': '#fff', - 'btn-primary-bg': '#2ea44f', - 'btn-primary-border': '#1b1f2326', - 'btn-primary-shadow': '0 1px 0 #1b1f231a', - 'btn-primary-inset-shadow': 'inset 0 1px 0 #ffffff08', - 'btn-primary-hover-bg': '#2c974b', - 'btn-primary-hover-border': '#1b1f2326', - 'btn-primary-selected-bg': '#2a8f47', - 'btn-primary-selected-shadow': 'inset 0 1px 0 #14462033', - 'btn-primary-disabled-text': '#fffc', - 'btn-primary-disabled-bg': '#94d3a2', - 'btn-primary-disabled-border': '#1b1f231a', - 'btn-primary-focus-bg': '#2ea44f', - 'btn-primary-focus-border': '#1b1f2326', - 'btn-primary-focus-shadow': '0 0 0 3px #2ea44f66', - 'btn-primary-icon': '#fffc', - 'btn-primary-counter-bg': '#fff3', - 'btn-outline-text': '#0366d6', - 'btn-outline-hover-text': '#fff', - 'btn-outline-hover-bg': '#0366d6', - 'btn-outline-hover-border': '#1b1f2326', - 'btn-outline-hover-shadow': '0 1px 0 #1b1f231a', - 'btn-outline-hover-inset-shadow': 'inset 0 1px 0 #ffffff08', - 'btn-outline-hover-counter-bg': '#fff3', - 'btn-outline-selected-text': '#fff', - 'btn-outline-selected-bg': '#035fc7', - 'btn-outline-selected-border': '#1b1f2326', - 'btn-outline-selected-shadow': 'inset 0 1px 0 #05264c33', - 'btn-outline-disabled-text': '#0366d680', - 'btn-outline-disabled-bg': '#fafbfc', - 'btn-outline-disabled-counter-bg': '#0366d60d', - 'btn-outline-focus-border': '#1b1f2326', - 'btn-outline-focus-shadow': '0 0 0 3px #005cc566', - 'btn-outline-counter-bg': '#0366d61a', - 'btn-danger-text': '#d73a49', - 'btn-danger-hover-text': '#fff', - 'btn-danger-hover-bg': '#cb2431', - 'btn-danger-hover-border': '#1b1f2326', - 'btn-danger-hover-shadow': '0 1px 0 #1b1f231a', - 'btn-danger-hover-inset-shadow': 'inset 0 1px 0 #ffffff08', - 'btn-danger-hover-counter-bg': '#fff3', - 'btn-danger-selected-text': '#fff', - 'btn-danger-selected-bg': '#d42d3d', - 'btn-danger-selected-border': '#1b1f2326', - 'btn-danger-selected-shadow': 'inset 0 1px 0 #86181d33', - 'btn-danger-disabled-text': '#d73a4980', - 'btn-danger-disabled-bg': '#fafbfc', - 'btn-danger-disabled-counter-bg': '#d73a490d', - 'btn-danger-focus-border': '#1b1f2326', - 'btn-danger-focus-shadow': '0 0 0 3px #cb243166', - 'btn-danger-counter-bg': '#d73a491a', - 'btn-counter-bg': '#1b1f2314', - 'counter-text': '#24292e', - 'counter-bg': '#d1d5da80', - 'counter-primary-text': '#fff', - 'counter-primary-bg': '#6a737d', - 'counter-secondary-text': '#6a737d', - 'dropdown-shadow': '0 8px 24px #959da533', - 'label-border': '#e1e4e8', - 'label-primary-text': '#24292e', - 'label-primary-border': '#6a737d', - 'label-secondary-text': '#586069', - 'label-secondary-border': '#e1e4e8', - 'label-info-text': '#0366d6', - 'label-info-border': '#0366d6', - 'label-success-text': '#22863a', - 'label-success-border': '#28a745', - 'label-warning-text': '#735c0f', - 'label-warning-border': '#b08800', - 'label-danger-text': '#d73a49', - 'label-danger-border': '#cb2431', - 'label-orange-text': '#c24e00', - 'label-orange-border': '#f66a0a', - 'input-bg': '#fff', - 'input-contrast-bg': '#fafbfc', - 'input-border': '#e1e4e8', - 'input-shadow': 'inset 0 1px 2px #1b1f2313', - 'input-disabled-bg': '#fff', - 'input-disabled-border': '#e1e4e8', - 'input-warning-border': '#f9c513', - 'input-error-border': '#cb2431', - 'input-tooltip-success-text': '#144620', - 'input-tooltip-success-bg': '#dcffe4', - 'input-tooltip-success-border': '#34d058', - 'input-tooltip-warning-text': '#735c0f', - 'input-tooltip-warning-bg': '#fff5b1', - 'input-tooltip-warning-border': '#f9c513', - 'input-tooltip-error-text': '#86181d', - 'input-tooltip-error-bg': '#ffeef0', - 'input-tooltip-error-border': '#f97583', - 'avatar-bg': '#fff', - 'avatar-border': '#0000', - 'avatar-stack-fade': '#d1d5da', - 'avatar-stack-fade-more': '#e1e4e8', - 'avatar-child-shadow': '-2px -2px 0 #fffc', - 'toast-text': '#24292e', - 'toast-bg': '#fff', - 'toast-border': '#e1e4e8', - 'toast-shadow': '0 8px 24px #959da533', - 'toast-icon': '#fff', - 'toast-icon-bg': '#0366d6', - 'toast-icon-border': '#0000', - 'toast-success-text': '#24292e', - 'toast-success-border': '#e1e4e8', - 'toast-success-icon': '#fff', - 'toast-success-icon-bg': '#28a745', - 'toast-success-icon-border': '#0000', - 'toast-warning-text': '#24292e', - 'toast-warning-border': '#e1e4e8', - 'toast-warning-icon': '#24292e', - 'toast-warning-icon-bg': '#ffd33d', - 'toast-warning-icon-border': '#0000', - 'toast-danger-text': '#24292e', - 'toast-danger-border': '#e1e4e8', - 'toast-danger-icon': '#fff', - 'toast-danger-icon-bg': '#d73a49', - 'toast-danger-icon-border': '#0000', - 'toast-loading-text': '#24292e', - 'toast-loading-border': '#e1e4e8', - 'toast-loading-icon': '#fff', - 'toast-loading-icon-bg': '#586069', - 'toast-loading-icon-border': '#0000', - 'timeline-text': '#444d56', - 'timeline-badge-bg': '#e1e4e8', - 'timeline-target-badge-border': '#2188ff', - 'timeline-target-badge-shadow': '#c8e1ff', - 'select-menu-border-secondary': '#eaecef', - 'select-menu-shadow': '0 0 18px #1b1f2366', - 'select-menu-backdrop-bg': '#1b1f2380', - 'select-menu-backdrop-border': '#0000', - 'select-menu-tap-highlight': '#d1d5da80', - 'select-menu-tap-focus-bg': '#dbedff', - 'box-blue-border': '#c8e1ff', - 'box-row-yellow-bg': '#fffbdd', - 'box-row-blue-bg': '#f1f8ff', - 'box-header-blue-bg': '#f1f8ff', - 'box-header-blue-border': '#c8e1ff', - 'box-border-info': '#0366d633', - 'box-bg-info': '#f1f8ff', - 'box-border-warning': '#ffd33d66', - 'box-bg-warning': '#fffdef', - 'branch-name-text': '#1b1f2399', - 'branch-name-icon': '#a8bbd0', - 'branch-name-bg': '#eaf5ff', - 'branch-name-link-text': '#0366d6', - 'branch-name-link-icon': '#a8bbd0', - 'branch-name-link-bg': '#eaf5ff', - 'markdown-code-bg': '#1b1f230d', - 'markdown-frame-border': '#dfe2e5', - 'markdown-blockquote-border': '#dfe2e5', - 'markdown-table-border': '#dfe2e5', - 'markdown-table-tr-border': '#c6cbd1', - 'menu-heading-text': '#24292e', - 'menu-border-active': '#f9826c', - 'menu-bg-active': '#0000', - 'sidenav-selected-bg': '#fff', - 'sidenav-border-active': '#f9826c', - 'header-text': '#ffffffb3', - 'header-bg': '#24292e', - 'header-logo': '#fff', - 'filter-item-bar-bg': '#eff3f6', - 'hidden-text-expander-bg': '#dfe2e5', - 'hidden-text-expander-bg-hover': '#c6cbd1', - 'drag-and-drop-border': '#c3c8cf', - 'upload-enabled-border': '#dfe2e5', - 'upload-enabled-border-focused': '#4a9eff', - 'previewable-comment-form-border': '#c3c8cf', - 'underlinenav-border': '#d1d5da00', - 'underlinenav-border-hover': '#d1d5da', - 'underlinenav-border-active': '#f9826c', - 'underlinenav-text': '#24292e', - 'underlinenav-text-hover': '#24292e', - 'underlinenav-text-active': '#24292e', - 'underlinenav-icon': '#959da5', - 'underlinenav-icon-hover': '#959da5', - 'underlinenav-icon-active': '#24292e', - 'underlinenav-counter-text': '#24292e', - 'verified-badge-text': '#22863a', - 'verified-badge-bg': '#fff', - 'verified-badge-border': '#e1e4e8', - 'social-count-bg': '#fff', - 'tooltip-text': '#fff', - 'tooltip-bg': '#24292e', - 'header-search-bg': '#24292e', - 'header-search-border': '#444d56', - 'search-keyword-hl': '#fffbdd', - 'diffstat-neutral-bg': '#d1d5da', - 'diffstat-neutral-border': '#d1d5da', - 'diffstat-deletion-bg': '#d73a49', - 'diffstat-deletion-border': '#d73a49', - 'diffstat-addition-bg': '#28a745', - 'diffstat-addition-border': '#28a745', - 'files-explorer-icon': '#79b8ff', - 'hl-author-bg': '#f1f8ff', - 'hl-author-border': '#c8e1ff', - 'logo-subdued': '#d1d5da', - 'discussion-border': '#a2cbac', - 'discussion-bg-success': '#28a745', - 'actions-workflow-table-sticky-bg': '#fffffff2', - 'repo-language-color-border': '#1b1f231a', - 'code-selection-bg': '#c8e1ff', - 'blob-line-highlight-bg': '#fffbdd', - 'blob-line-highlight-border': '#0000', - 'diff-addition-text': '#22863a', - 'diff-addition-bg': '#e6ffed', - 'diff-addition-border': '#34d058', - 'diff-deletion-text': '#cb2431', - 'diff-deletion-bg': '#ffeef0', - 'diff-deletion-border': '#d73a49', - 'diff-change-text': '#b08800', - 'diff-change-bg': '#fff5b1', - 'diff-change-border': '#f9c513', - 'diff-blob-num-text': '#1b1f234d', - 'diff-blob-num-hover-text': '#1b1f2399', - 'diff-blob-addition-num-text': '#1b1f234d', - 'diff-blob-addition-num-hover-text': '#1b1f2399', - 'diff-blob-addition-num-bg': '#cdffd8', - 'diff-blob-addition-line-bg': '#e6ffed', - 'diff-blob-addition-word-bg': '#acf2bd', - 'diff-blob-deletion-num-text': '#1b1f234d', - 'diff-blob-deletion-num-hover-text': '#1b1f2399', - 'diff-blob-deletion-num-bg': '#ffdce0', - 'diff-blob-deletion-line-bg': '#ffeef0', - 'diff-blob-deletion-word-bg': '#fdb8c0', - 'diff-blob-hunk-text': '#1b1f23b3', - 'diff-blob-hunk-num-bg': '#dbedff', - 'diff-blob-hunk-line-bg': '#f1f8ff', - 'diff-blob-empty-block-bg': '#fafbfc', - 'diff-blob-selected-line-highlight-bg': '#ffdf5d33', - 'diff-blob-selected-line-highlight-border': '#ffd33d', - 'diff-blob-selected-line-highlight-mix-blend-mode': 'multiply', - 'diff-blob-expander-icon': '#586069', - 'diff-blob-expander-hover-icon': '#fff', - 'diff-blob-expander-hover-bg': '#0366d6', - 'diff-blob-comment-button-icon': '#fff', - 'diff-blob-comment-button-bg': '#0366d6', - 'diff-blob-comment-button-gradient-bg': '#0372ef', - 'global-nav-logo': '#fff', - 'global-nav-bg': '#24292e', - 'global-nav-text': '#fff', - 'global-nav-icon': '#fff', - 'global-nav-input-bg': '#fafbfc', - 'global-nav-input-border': '#fafbfc', - 'global-nav-input-icon': '#d1d5da', - 'global-nav-input-placeholder': '#959da5', - 'calendar-graph-day-bg': '#ebedf0', - 'calendar-graph-day-border': '#1b1f230f', - 'calendar-graph-day-l1-bg': '#9be9a8', - 'calendar-graph-day-l2-bg': '#40c463', - 'calendar-graph-day-l3-bg': '#30a14e', - 'calendar-graph-day-l4-bg': '#216e39', - 'calendar-graph-day-l4-border': '#1b1f230f', - 'calendar-graph-day-l3-border': '#1b1f230f', - 'calendar-graph-day-l2-border': '#1b1f230f', - 'calendar-graph-day-l1-border': '#1b1f230f', - 'footer-invertocat-octicon': '#d1d5da', - 'footer-invertocat-octicon-hover': '#6a737d', - 'pr-state-draft-text': '#fff', - 'pr-state-draft-bg': '#6a737d', - 'pr-state-draft-border': '#0000', - 'pr-state-open-text': '#fff', - 'pr-state-open-bg': '#28a745', - 'pr-state-open-border': '#0000', - 'pr-state-merged-text': '#fff', - 'pr-state-merged-bg': '#6f42c1', - 'pr-state-merged-border': '#0000', - 'pr-state-closed-text': '#fff', - 'pr-state-closed-bg': '#d73a49', - 'pr-state-closed-border': '#0000', - 'topic-tag-text': '#0366d6', - 'topic-tag-bg': '#f1f8ff', - 'topic-tag-hover-bg': '#def', - 'topic-tag-active-bg': '#e7f3ff', - 'merge-box-success-icon-bg': '#28a745', - 'merge-box-success-icon-text': '#fff', - 'merge-box-success-icon-border': '#0000', - 'merge-box-success-indicator-bg': '#28a745', - 'merge-box-success-indicator-border': '#0000', - 'merge-box-merged-icon-bg': '#6f42c1', - 'merge-box-merged-icon-text': '#fff', - 'merge-box-merged-icon-border': '#0000', - 'merge-box-merged-box-border': '#6f42c1', - 'merge-box-neutral-icon-bg': '#6a737d', - 'merge-box-neutral-icon-text': '#fff', - 'merge-box-neutral-icon-border': '#0000', - 'merge-box-neutral-indicator-bg': '#6a737d', - 'merge-box-neutral-indicator-border': '#0000', - 'merge-box-warning-icon-bg': '#dbab09', - 'merge-box-warning-icon-text': '#fff', - 'merge-box-warning-icon-border': '#0000', - 'merge-box-warning-box-border': '#ffd33d', - 'merge-box-warning-merge-highlight': '#0000', - 'merge-box-error-icon-bg': '#d73a49', - 'merge-box-error-icon-text': '#fff', - 'merge-box-error-icon-border': '#0000', - 'merge-box-error-indicator-bg': '#d73a49', - 'merge-box-error-indicator-border': '#0000', - 'project-card-bg': '#fff', - 'project-header-bg': '#24292e', - 'project-sidebar-bg': '#fff', - 'project-gradient-in': '#fff', - 'project-gradient-out': '#fff0', - 'marketing-icon-primary': '#2188ff', - 'marketing-icon-secondary': '#79b8ff', - 'prettylights-syntax-comment': '#6a737d', - 'prettylights-syntax-constant': '#005cc5', - 'prettylights-syntax-entity': '#6f42c1', - 'prettylights-syntax-storage-modifier-import': '#24292e', - 'prettylights-syntax-entity-tag': '#22863a', - 'prettylights-syntax-keyword': '#d73a49', - 'prettylights-syntax-string': '#032f62', - 'prettylights-syntax-variable': '#e36209', - 'prettylights-syntax-brackethighlighter-unmatched': '#b31d28', - 'prettylights-syntax-invalid-illegal-text': '#fafbfc', - 'prettylights-syntax-invalid-illegal-bg': '#b31d28', - 'prettylights-syntax-carriage-return-text': '#fafbfc', - 'prettylights-syntax-carriage-return-bg': '#d73a49', - 'prettylights-syntax-string-regexp': '#22863a', - 'prettylights-syntax-markup-list': '#735c0f', - 'prettylights-syntax-markup-heading': '#005cc5', - 'prettylights-syntax-markup-italic': '#24292e', - 'prettylights-syntax-markup-bold': '#24292e', - 'prettylights-syntax-markup-deleted-text': '#b31d28', - 'prettylights-syntax-markup-deleted-bg': '#ffeef0', - 'prettylights-syntax-markup-inserted-text': '#22863a', - 'prettylights-syntax-markup-inserted-bg': '#f0fff4', - 'prettylights-syntax-markup-changed-text': '#e36209', - 'prettylights-syntax-markup-changed-bg': '#ffebda', - 'prettylights-syntax-markup-ignored-text': '#f6f8fa', - 'prettylights-syntax-markup-ignored-bg': '#005cc5', - 'prettylights-syntax-meta-diff-range': '#6f42c1', - 'prettylights-syntax-brackethighlighter-angle': '#586069', - 'prettylights-syntax-sublimelinter-gutter-mark': '#959da5', - 'prettylights-syntax-constant-other-reference-link': '#032f62', - 'codemirror-text': '#24292e', - 'codemirror-bg': '#fff', - 'codemirror-gutters-bg': '#fff', - 'codemirror-guttermarker-text': '#fff', - 'codemirror-guttermarker-subtle-text': '#d1d5da', - 'codemirror-linenumber-text': '#959da5', - 'codemirror-cursor': '#24292e', - 'codemirror-selection-bg': '#c8e1ff', - 'codemirror-activeline-bg': '#fafbfc', - 'codemirror-matchingbracket-text': '#24292e', - 'codemirror-lines-bg': '#fff', - 'codemirror-syntax-comment': '#6a737d', - 'codemirror-syntax-constant': '#005cc5', - 'codemirror-syntax-entity': '#6f42c1', - 'codemirror-syntax-keyword': '#d73a49', - 'codemirror-syntax-storage': '#d73a49', - 'codemirror-syntax-string': '#032f62', - 'codemirror-syntax-support': '#005cc5', - 'codemirror-syntax-variable': '#e36209', - 'ansi-black': '#24292e', - 'ansi-black-bright': '#2f363d', - 'ansi-white': '#e1e4e8', - 'ansi-white-bright': '#e1e4e8', - 'ansi-gray': '#959da5', - 'ansi-red': '#f97583', - 'ansi-red-bright': '#fdaeb7', - 'ansi-green': '#85e89d', - 'ansi-green-bright': '#bef5cb', - 'ansi-yellow': '#ffea7f', - 'ansi-yellow-bright': '#fff5b1', - 'ansi-blue': '#79b8ff', - 'ansi-blue-bright': '#c8e1ff', - 'ansi-magenta': '#b392f0', - 'ansi-magenta-bright': '#d1bcf9', - 'ansi-cyan': '#76e3ea', - 'ansi-cyan-bright': '#b3f0ff', -); diff --git a/src/styles/themes.scss b/src/styles/themes.scss index eb60cbf..61451a0 100644 --- a/src/styles/themes.scss +++ b/src/styles/themes.scss @@ -1,6 +1,10 @@ -@use './light/variables.scss' as light; -@use './dark/variables.scss' as dark; -@use './darkDimmed/variables.scss' as darkDimmed; +@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/darkDimmed.scss' as darkDimmed; @mixin setVariables($variables) { @each $name, $value in $variables { @@ -8,57 +12,45 @@ } } -// Following rules are organized according to common variables to reduce output CSS size :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); } -:root { - &[data-color-mode='light'][data-light-theme='light'], - &[data-color-mode='dark'][data-dark-theme='light'] { - @include setVariables(light.$variables); - } - - &[data-color-mode='light'][data-light-theme='dark'], - &[data-color-mode='dark'][data-dark-theme='dark'] { - @include setVariables(dark.$variables); - } - - &[data-color-mode='light'][data-light-theme='dark_dimmed'], - &[data-color-mode='dark'][data-dark-theme='dark_dimmed'] { - @include setVariables(darkDimmed.$variables); - } -} - -@media (prefers-color-scheme: light) { - :root[data-color-mode='auto'] { - &[data-light-theme='light'] { - @include setVariables(light.$variables); +@mixin theme($themeName, $variables) { + :root { + &[data-color-mode='light'][data-light-theme='#{$themeName}'], + &[data-color-mode='dark'][data-dark-theme='#{$themeName}'] { + @include setVariables($variables); } - &[data-light-theme='dark'] { - @include setVariables(dark.$variables); - } + &[data-color-mode='auto'] { + &[data-light-theme='#{$themeName}'] { + @media (prefers-color-scheme: light) { + @include setVariables($variables); + } + } - &[data-light-theme='dark_dimmed'] { - @include setVariables(darkDimmed.$variables); + &[data-dark-theme='#{$themeName}'] { + @media (prefers-color-scheme: dark) { + @include setVariables($variables); + } + } } } } -@media (prefers-color-scheme: dark) { - :root[data-color-mode='auto'] { - &[data-dark-theme='light'] { - @include setVariables(light.$variables); - } - - &[data-dark-theme='dark'] { - @include setVariables(dark.$variables); - } - - &[data-dark-theme='dark_dimmed'] { - @include setVariables(darkDimmed.$variables); - } - } -} +@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('dark_colorblind', darkColorblind.$variables); +@include theme('dark_dimmed', darkDimmed.$variables); diff --git a/src/styles/themes/dark.scss b/src/styles/themes/dark.scss new file mode 100644 index 0000000..986117f --- /dev/null +++ b/src/styles/themes/dark.scss @@ -0,0 +1,418 @@ +$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 new file mode 100644 index 0000000..49f7777 --- /dev/null +++ b/src/styles/themes/darkColorblind.scss @@ -0,0 +1,418 @@ +$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 new file mode 100644 index 0000000..1d0a300 --- /dev/null +++ b/src/styles/themes/darkDimmed.scss @@ -0,0 +1,418 @@ +$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 new file mode 100644 index 0000000..eb3f09b --- /dev/null +++ b/src/styles/themes/darkHighContrast.scss @@ -0,0 +1,418 @@ +$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/light.scss b/src/styles/themes/light.scss new file mode 100644 index 0000000..ff031ff --- /dev/null +++ b/src/styles/themes/light.scss @@ -0,0 +1,418 @@ +$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 new file mode 100644 index 0000000..f23ee01 --- /dev/null +++ b/src/styles/themes/lightColorblind.scss @@ -0,0 +1,418 @@ +$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 new file mode 100644 index 0000000..8b1c9d5 --- /dev/null +++ b/src/styles/themes/lightHighContrast.scss @@ -0,0 +1,418 @@ +$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/utils/DOMHelper.ts b/src/utils/DOMHelper.ts index 8651b7a..94ddee9 100644 --- a/src/utils/DOMHelper.ts +++ b/src/utils/DOMHelper.ts @@ -123,9 +123,13 @@ export function focusSearchInput() { }) } -export function setResizingState(on: boolean) { - const target = document.querySelector('.gitako-toggle-show-button-wrapper') - if (!target) return - if (on) target.classList.add('resizing') - else target.classList.remove('resizing') +export function findNodeElement(node: TreeNode, rootElement: HTMLElement): HTMLElement | null { + const nodeElement = rootElement.querySelector(`a[href="${node.url}"]`) + if (nodeElement instanceof HTMLElement) return nodeElement + return null +} + +export function setCSSVariable(name: string, value: string | undefined, element: HTMLElement) { + if (value === undefined) element.style.removeProperty(name) + else element.style.setProperty(name, value) } diff --git a/src/utils/VisibleNodesGenerator.ts b/src/utils/VisibleNodesGenerator.ts index c14c234..b4858c8 100644 --- a/src/utils/VisibleNodesGenerator.ts +++ b/src/utils/VisibleNodesGenerator.ts @@ -124,6 +124,10 @@ class ShakeLayer extends BaseLayer { lastSearchParams: SearchParams | null = null shakeHub = new EventHub<{ emit: TreeNode | null }>() + get isSearching() { + return this.lastSearchParams !== null + } + constructor(options: Options) { super(options) @@ -193,6 +197,7 @@ class FlattenLayer extends CompressLayer { focusedNode: TreeNode | null = null nodes: TreeNode[] = [] expandedNodes: Set = new Set() + backupExpandedNodes: Set = new Set() flattenHub = new EventHub<{ emit: null }>() constructor(options: Options) { @@ -268,8 +273,8 @@ class FlattenLayer extends CompressLayer { const expand = !this.expandedNodes.has(node.path) await traverse( [node], - async node => { - await this.$setExpand(node, expand) + node => { + this.$setExpand(node, expand) return recursive }, node => node.contents || [], @@ -300,18 +305,24 @@ class FlattenLayer extends CompressLayer { } }, this.generateVisibleNodes) - search = (searchParams: Pick | null) => { - this.shake( - searchParams - ? { - matchNode: searchParams.matchNode, - onChildMatch: node => this.$setExpand(node, true), - } - : null, - ) - // collapse all nodes on clearing search key - if (!searchParams) { + search = (searchParams: Pick | null, restoreExpandedFolders?: boolean) => { + // backup expansion before search + if (searchParams) { + if (!this.isSearching) { + this.backupExpandedNodes.clear() + this.expandedNodes.forEach(path => this.backupExpandedNodes.add(path)) + } + this.shake({ + matchNode: searchParams.matchNode, + onChildMatch: node => this.$setExpand(node, true), + }) + } else { + this.shake(null) + // collapse all nodes on clearing search key this.expandedNodes.clear() + if (restoreExpandedFolders) { + this.backupExpandedNodes.forEach(path => this.expandedNodes.add(path)) + } } } } diff --git a/src/utils/config/helper.ts b/src/utils/config/helper.ts index 6380697..ea3c369 100644 --- a/src/utils/config/helper.ts +++ b/src/utils/config/helper.ts @@ -1,5 +1,4 @@ import { SearchMode } from 'components/searchModes' -import { platform, platformName } from 'platforms' import { storageHelper } from 'utils/storageHelper' import { migrateConfig } from './migrations' @@ -20,6 +19,8 @@ export type Config = { commentToggle: boolean codeFolding: boolean compactFileTree: boolean + restoreExpandedFolders: boolean + showDiffInText: boolean } enum configKeys { @@ -39,15 +40,20 @@ enum configKeys { commentToggle = 'commentToggle', codeFolding = 'codeFolding', compactFileTree = 'compactFileTree', + restoreExpandedFolders = 'restoreExpandedFolders', + showDiffInText = 'showDiffInText', } +// do NOT use platform name +const platformStorageKey = `platform_` + window.location.host.toLowerCase() + export const defaultConfigs: Config = { sideBarWidth: 260, shortcut: undefined, accessToken: '', compressSingletonFolder: true, - copyFileButton: true, - copySnippetButton: !(platformName === 'GitHub' && !platform.isEnterprise()), // false when on github.com + copyFileButton: platformStorageKey !== 'platform_github.com', // false when on github.com, + copySnippetButton: platformStorageKey !== 'platform_github.com', // false when on github.com intelligentToggle: null, icons: 'rich', toggleButtonVerticalDistance: 124, // align with GitHub's navbar items @@ -58,6 +64,8 @@ export const defaultConfigs: Config = { commentToggle: true, codeFolding: true, compactFileTree: false, + restoreExpandedFolders: true, + showDiffInText: false, } const configKeyArray = Object.values(configKeys) @@ -71,8 +79,6 @@ function applyDefaultConfigs(configs: Partial) { export type VersionedConfig = Record & { configVersion: string } -// do NOT use platform name -const platformStorageKey = `platform_` + window.location.host.toLowerCase() const prepareConfig = new Promise(async resolve => { await migrateConfig() resolve() diff --git a/src/utils/config/migrations/1.0.1.ts b/src/utils/config/migrations/1.0.1.ts index 7f16c3d..45d2a1b 100644 --- a/src/utils/config/migrations/1.0.1.ts +++ b/src/utils/config/migrations/1.0.1.ts @@ -16,7 +16,12 @@ export const migration: Migration = { 'intelligentToggle', 'icons', ]) - if (config && (!('configVersion' in config) || config.configVersion < version)) { + if ( + config && + (!('configVersion' in config) || + config.configVersion === null || + config.configVersion < version) + ) { await storageHelper.set({ platform_GitHub: config, configVersion: version }) } }, diff --git a/src/utils/config/migrations/3.5.0.ts b/src/utils/config/migrations/3.5.0.ts new file mode 100644 index 0000000..1c25b3c --- /dev/null +++ b/src/utils/config/migrations/3.5.0.ts @@ -0,0 +1,33 @@ +import { storageHelper } from 'utils/storageHelper' +import { Migration, onConfigOutdated } from '.' + +export const migration: Migration = { + version: '3.5.0', + async migrate(version) { + // disable copy snippet button for github.com + type ConfigBeforeMigrate = { + copyFileButton: boolean + } + type ConfigAfterMigrate = { + copyFileButton: boolean + } + + 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 { copyFileButton, ...rest } = configBeforeMigrate + if (copyFileButton) { + const configAfterMigrate: ConfigAfterMigrate = { + ...rest, + copyFileButton: false, + } + await storageHelper.set({ + [key]: configAfterMigrate, + }) + } + } + }) + }, +} diff --git a/src/utils/config/migrations/index.ts b/src/utils/config/migrations/index.ts index 53a9dae..276c197 100644 --- a/src/utils/config/migrations/index.ts +++ b/src/utils/config/migrations/index.ts @@ -4,6 +4,7 @@ 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' export type Migration = { version: string @@ -11,7 +12,7 @@ export type Migration = { } export async function migrateConfig() { - const migrations: Migration[] = [v1v0v1, v1v3v4, v2v6v0, v3v0v0] + const migrations: Migration[] = [v1v0v1, v1v3v4, v2v6v0, v3v0v0, v3v5v0] for (const { version, migrate } of migrations) { await migrate(version) diff --git a/src/utils/general.test.ts b/src/utils/general.test.ts new file mode 100644 index 0000000..205acc8 --- /dev/null +++ b/src/utils/general.test.ts @@ -0,0 +1,29 @@ +import { resolveDiffGraphMeta } from './general' + +it(`should resolve diff stat graph meta properly`, () => { + const example = ` + 2 10 0 4 + 3 10 1 3 + 3 17 0 4 + 4 17 0 4 + 4 26 0 4 + 5 17 1 3 + 6 17 1 3 + 12 0 5 0 + 0 12 0 5 + 17 74 0 4 + 11 23 1 3 + 18 28 1 3 + 34 24 2 2 + ` + + example + .split(/\n/) + .map(line => line.trim()) + .filter(line => line.length) + .map(line => line.split(/\s+/).map(_ => parseInt(_))) + .forEach(([additions, deletions, g, r]) => { + const meta = resolveDiffGraphMeta(additions, deletions, additions + deletions) + expect([meta.g, meta.r]).toEqual([g, r]) + }) +}) diff --git a/src/utils/general.ts b/src/utils/general.ts index f4f0080..519abcf 100644 --- a/src/utils/general.ts +++ b/src/utils/general.ts @@ -21,12 +21,14 @@ export enum OperatingSystems { } function detectOS(): OperatingSystems { - const { - navigator: { userAgent }, - } = window - if (userAgent.indexOf(OperatingSystems.Windows) !== -1) return OperatingSystems.Windows - else if (userAgent.indexOf(OperatingSystems.macOS) !== -1) return OperatingSystems.macOS - else if (userAgent.indexOf(OperatingSystems.Linux) !== -1) return OperatingSystems.Linux + if (typeof window !== 'undefined') { + const { + navigator: { userAgent }, + } = window + if (userAgent.indexOf(OperatingSystems.Windows) !== -1) return OperatingSystems.Windows + else if (userAgent.indexOf(OperatingSystems.macOS) !== -1) return OperatingSystems.macOS + else if (userAgent.indexOf(OperatingSystems.Linux) !== -1) return OperatingSystems.Linux + } return OperatingSystems.others } @@ -189,3 +191,21 @@ export function createPromiseQueue() { }, } } + +export function isOpenInNewWindowClick(event: React.MouseEvent) { + return ( + (os === OperatingSystems.macOS && (event.metaKey || event.shiftKey)) || + (os === OperatingSystems.Linux && event.ctrlKey) || + (os === OperatingSystems.Windows && event.ctrlKey) + ) +} + +export function resolveDiffGraphMeta(additions: number, deletions: number, changes: number) { + const both = additions > 0 && deletions > 0, + overflow = changes > 5, + preserved = both && overflow ? 1 : 0, + g = overflow ? Math.floor(((5 - preserved) * (additions + 1)) / (changes + 1)) : additions, + r = overflow ? 5 - preserved - g : deletions, + w = 5 - g - r + return { g, r, w } +} diff --git a/src/utils/hooks/usePJAX.ts b/src/utils/hooks/usePJAX.ts index f3c26fa..396dcaf 100644 --- a/src/utils/hooks/usePJAX.ts +++ b/src/utils/hooks/usePJAX.ts @@ -1,4 +1,5 @@ import { Config, Pjax } from 'pjax-api' +import { platform } from 'platforms' import * as React from 'react' import { useEvent } from 'react-use' @@ -9,7 +10,7 @@ const config: Config = { // gitee '#git-project-content', // gitea - '.repository > .ui.container' + '.repository > .ui.container', ], update: { css: false, @@ -42,8 +43,9 @@ export function usePJAX() { useRedirectedEvents(document, 'pjax:ready', 'pjax:end') } -export const loadWithPJAX = (url: string) => { - Pjax.assign(url, config) +export const loadWithPJAX = (url: string, element: HTMLElement) => { + if (platform.loadWithPJAX) platform.loadWithPJAX(url, element) + else Pjax.assign(url, config) } export function useOnPJAXDone(callback: () => void) { diff --git a/src/utils/hooks/useProgressBar.ts b/src/utils/hooks/useProgressBar.ts index f5c3433..29a0c2b 100644 --- a/src/utils/hooks/useProgressBar.ts +++ b/src/utils/hooks/useProgressBar.ts @@ -1,6 +1,4 @@ import * as NProgress from 'nprogress' -import { platform } from 'platforms' -import { GitHub } from 'platforms/GitHub' import * as React from 'react' import { useEvent } from 'react-use' @@ -13,14 +11,11 @@ const progressBar = { }, } -const isGitHub = platform === GitHub // use native progress bar on GitHub -export const useProgressBar = isGitHub - ? function () {} - : function useProgressBar() { - React.useEffect(() => { - NProgress.configure({ showSpinner: false }) - }, []) - useEvent('pjax:fetch', progressBar.mount, window) - useEvent('pjax:unload', progressBar.unmount, window) - } +export function useProgressBar() { + React.useEffect(() => { + NProgress.configure({ showSpinner: false }) + }, []) + useEvent('pjax:fetch', progressBar.mount, window) + useEvent('pjax:unload', progressBar.unmount, window) +} diff --git a/src/utils/parseIconMapCSV.ts b/src/utils/parseIconMapCSV.ts index 530d15f..a820307 100644 --- a/src/utils/parseIconMapCSV.ts +++ b/src/utils/parseIconMapCSV.ts @@ -1,25 +1,29 @@ import rawFileIconIndex from 'assets/icons/file-icons-index.csv' import rawFolderIconIndex from 'assets/icons/folder-icons-index.csv' +const rowSeparator = '\n' +const colSeparator = ',' +const arraySeparator = ':' + function parseFileIconMapCSV() { const filenameIndex = new Map() const fileExtensionIndex = new Map() - rawFileIconIndex.split('\n').forEach(line => { - if (!line) return - const [name, names, exts] = line.split(',') + for (const line of rawFileIconIndex.split(rowSeparator)) { + if (!line) continue + const [name, names, exts] = line.split(colSeparator) if (names) { - names.split(':').forEach(filename => { - if (!filename) return + for (const filename of names.split(arraySeparator)) { + if (!filename) continue filenameIndex.set(filename, name) - }) + } } if (exts) { - exts.split(':').forEach(ext => { - if (!ext) return + for (const ext of exts.split(arraySeparator)) { + if (!ext) continue fileExtensionIndex.set(ext, name) - }) + } } - }) + } return { filenameIndex, fileExtensionIndex, @@ -28,14 +32,14 @@ function parseFileIconMapCSV() { function parseFolderIconMapCSV() { const folderNameIndex = new Map() - rawFolderIconIndex.split('\n').forEach(line => { - if (!line) return - const [name, names] = line.split(',') - names.split(':').forEach(folderName => { - if (!folderName) return + for (const line of rawFolderIconIndex.split(rowSeparator)) { + if (!line) continue + const [name, names] = line.split(colSeparator) + for (const folderName of names.split(arraySeparator)) { + if (!folderName) continue folderNameIndex.set(folderName, name) - }) - }) + } + } return { folderNameIndex, } @@ -43,32 +47,31 @@ function parseFolderIconMapCSV() { const { folderNameIndex } = parseFolderIconMapCSV() -export function getFolderIconSrc(node: TreeNode, open: boolean) { +export function getFolderIconURL(node: TreeNode, open: boolean) { const name = folderNameIndex.get(node.name.toLowerCase()) - return getIconSrc('folder', name, open) + return getIconURL('folder', name, open) } const { filenameIndex, fileExtensionIndex } = parseFileIconMapCSV() -export function getFileIconSrc(node: TreeNode) { +export function getFileIconURL(node: TreeNode) { const fileName = node.name.toLowerCase() let iconName = filenameIndex.get(fileName) if (!iconName) { const tail = fileName.split('.') - tail.shift() while (!iconName && tail.length > 0) { iconName = fileExtensionIndex.get(tail.join('.')) tail.shift() } } - return getIconSrc('file', iconName) + return getIconURL('file', iconName) } // memorize for // 1. swap time with space // 2. prevent app crash on when extension context invalidates const extensionURL = browser.runtime.getURL('').replace(/\/$/, '') -export function getIconSrc(type: 'folder' | 'file', name: string = 'default', open?: boolean) { +export function getIconURL(type: 'folder' | 'file', name: string = 'default', open?: boolean) { const filename = (name === 'default' ? 'default_' + type : type + '_type_' + name) + (open ? '_opened' : '') + diff --git a/yarn.lock b/yarn.lock index c1e63a0..76840c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,6 +40,18 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + 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" @@ -82,7 +94,28 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.10.3", "@babel/generator@^7.4.0": +"@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== + 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" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + 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== @@ -101,6 +134,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.14.5", "@babel/generator@^7.7.2": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" + integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== + dependencies: + "@babel/types" "^7.14.5" + 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" @@ -144,6 +186,16 @@ "@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" + 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" @@ -200,6 +252,15 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-function-name@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" + integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== + dependencies: + "@babel/helper-get-function-arity" "^7.14.5" + "@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" @@ -221,6 +282,20 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-get-function-arity@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" + integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-hoist-variables@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" + integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== + 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" @@ -235,6 +310,13 @@ dependencies: "@babel/types" "^7.10.3" +"@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== + dependencies: + "@babel/types" "^7.14.5" + "@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" @@ -256,6 +338,13 @@ dependencies: "@babel/types" "^7.10.3" +"@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== + dependencies: + "@babel/types" "^7.14.5" + "@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" @@ -281,6 +370,20 @@ "@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" @@ -295,11 +398,23 @@ 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/helper-plugin-utils@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5": + version "7.14.5" + 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.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.0.tgz#59ec882d43c21c544ccb51decaecb306b34a8231" @@ -333,6 +448,16 @@ "@babel/traverse" "^7.10.1" "@babel/types" "^7.10.1" +"@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== + 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/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" @@ -359,6 +484,13 @@ "@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" @@ -373,6 +505,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-split-export-declaration@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" + integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== + 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" @@ -390,6 +529,16 @@ 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-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-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" @@ -409,6 +558,15 @@ "@babel/traverse" "^7.10.1" "@babel/types" "^7.10.1" +"@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/helpers@^7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" @@ -445,7 +603,16 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.3", "@babel/parser@^7.4.3": +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.10.3": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.3.tgz#7e71d892b0d6e7d04a1af4c3c79d72c1f10f5315" integrity sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA== @@ -455,6 +622,11 @@ 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": + 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" @@ -533,6 +705,27 @@ 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" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@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" @@ -540,6 +733,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + 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" @@ -547,6 +747,13 @@ 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" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + 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" @@ -554,13 +761,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.0.tgz#9b37d580d459682364d8602494c69145b394fd4c" - integrity sha512-dt89fDlkfkTrQcy5KavMQPyF2A6tR0kYp8HAnIoQv5hO34iAUffHghP/hMGd7Gf/+uYTmLQO0ar7peX1SUWyIA== +"@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== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@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" @@ -568,6 +789,13 @@ 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" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + 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" @@ -575,6 +803,13 @@ 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" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + 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" @@ -582,6 +817,20 @@ 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" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@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" @@ -589,6 +838,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" + integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== + 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" @@ -1026,7 +1282,7 @@ "@babel/parser" "^7.6.0" "@babel/types" "^7.6.0" -"@babel/template@^7.10.1", "@babel/template@^7.10.3", "@babel/template@^7.4.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== @@ -1044,6 +1300,15 @@ "@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" + integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== + dependencies: + "@babel/code-frame" "^7.14.5" + "@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" @@ -1059,7 +1324,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/traverse@^7.10.1", "@babel/traverse@^7.10.3", "@babel/traverse@^7.4.3": +"@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== @@ -1074,6 +1339,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.14.5", "@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== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.14.7" + "@babel/types" "^7.14.5" + 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" @@ -1098,7 +1378,7 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.10.1", "@babel/types@^7.10.3", "@babel/types@^7.4.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== @@ -1116,6 +1396,19 @@ 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" + integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + 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== + "@cliqz-oss/firefox-client@0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@cliqz-oss/firefox-client/-/firefox-client-0.3.1.tgz#86479239f060835608b06584afe5e0a1dd91613c" @@ -1132,14 +1425,6 @@ "@cliqz-oss/firefox-client" "0.3.1" es6-promise "^2.0.1" -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - "@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" @@ -1162,176 +1447,191 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== +"@hapi/hoek@^9.0.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" + integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.3": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" + "@hapi/hoek" "^9.0.0" -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: - "@hapi/hoek" "^8.3.0" + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" -"@jest/console@^24.7.1", "@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== +"@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== dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.0.6" + jest-util "^27.0.6" + 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== + 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" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" + 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" + micromatch "^4.0.4" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" -"@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== +"@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== dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" + "@jest/fake-timers" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + jest-mock "^27.0.6" -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== +"@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== dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" + "@jest/types" "^27.0.6" + "@sinonjs/fake-timers" "^7.0.2" + "@types/node" "*" + jest-message-util "^27.0.6" + jest-mock "^27.0.6" + jest-util "^27.0.6" -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== +"@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== dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^27.0.6" + "@jest/types" "^27.0.6" + expect "^27.0.6" + +"@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== + 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" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + 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" + slash "^3.0.0" source-map "^0.6.0" - string-length "^2.0.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.0.0" -"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== +"@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== dependencies: callsites "^3.0.0" - graceful-fs "^4.1.15" + graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== +"@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== dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" + "@jest/console" "^27.0.6" + "@jest/types" "^27.0.6" "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== +"@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== dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" + "@jest/test-result" "^27.0.6" + graceful-fs "^4.2.4" + jest-haste-map "^27.0.6" + jest-runtime "^27.0.6" -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== +"@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== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" + "@jest/types" "^27.0.6" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.4" + jest-haste-map "^27.0.6" + jest-regex-util "^27.0.6" + jest-util "^27.0.6" + micromatch "^4.0.4" pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" + slash "^3.0.0" source-map "^0.6.1" - write-file-atomic "2.4.1" + write-file-atomic "^3.0.0" "@jest/types@^24.9.0": version "24.9.0" @@ -1352,6 +1652,28 @@ "@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== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + "@primer/components@^22.0.2": version "22.0.2" resolved "https://registry.yarnpkg.com/@primer/components/-/components-22.0.2.tgz#8ab8a36bd36072cecbf6dc36031cb5889673a3bf" @@ -1497,11 +1819,42 @@ 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== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + 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== +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + 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== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@styled-system/background@^5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@styled-system/background/-/background-5.1.2.tgz#75c63d06b497ab372b70186c0bf608d62847a2ba" @@ -1642,10 +1995,15 @@ "@testing-library/dom" "^6.11.0" "@types/testing-library__react" "^9.1.2" -"@types/babel__core@^7.1.0": - version "7.1.8" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.8.tgz#057f725aca3641f49fc11c7a87a9de5ec588a5d7" - integrity sha512-KXBiQG2OXvaPWFPDS1rD8yV9vO0OuWIqAEqLsbfX0oU2REN5KuoMnZ1gClWcBhO5I3n6oTVAmrMufOvRqdmFTQ== +"@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== + +"@types/babel__core@^7.0.0", "@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== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1675,6 +2033,13 @@ 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== + dependencies: + "@babel/types" "^7.3.0" + "@types/chrome@0.0.86": version "0.0.86" resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.86.tgz#1026ef8e76db4fde1859cae858d73236fe670d69" @@ -1709,6 +2074,13 @@ 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": + 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" @@ -1732,6 +2104,11 @@ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== +"@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + "@types/istanbul-lib-report@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" @@ -1747,12 +2124,20 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@^24.0.25": - version "24.9.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534" - integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== +"@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" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: - jest-diff "^24.3.0" + "@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== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" "@types/js-base64@^2.3.1": version "2.3.1" @@ -1784,15 +2169,20 @@ resolved "https://registry.yarnpkg.com/@types/nprogress/-/nprogress-0.0.29.tgz#060bd510022a005f1840234030d3132fb9195471" integrity sha1-BgvVEAIqAF8YQCNAMNMTL7kZVHE= +"@types/prettier@^2.1.5": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.1.tgz#54dd88bdc7f49958329666af3779561e47d5dab3" + integrity sha512-NVkb4p4YjI8E3O6+1m8I+8JlMpFZwfSbPGdaw0wXuyPRTEz0SLKwBUWNSO7Maoi8tQMPC8JLZNWkrcKPI7/sLA== + "@types/prop-types@*": version "15.7.2" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.2.tgz#0e58ae66773d7fd7c372a493aff740878ec9ceaa" integrity sha512-f8JzJNWVhKtc9dg/dyDNfliTKNOJSLa7Oht/ElZdF/UbMUmAH3rLmAk3ODNjw0mZajDEgatA03tRjB4+Dp/tzA== -"@types/puppeteer@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-3.0.2.tgz#20085220593b560c7332b6d46aecaf81ae263540" - integrity sha512-JRuHPSbHZBadOxxFwpyZPeRlpPTTeMbQneMdpFd8LXdyNfFSiX950CGewdm69g/ipzEAXAmMyFF1WOWJOL/nKw== +"@types/puppeteer@^5.4.3": + version "5.4.3" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-5.4.3.tgz#cdca84aa7751d77448d8a477dbfa0af1f11485f2" + integrity sha512-3nE8YgR9DIsgttLW+eJf6mnXxq8Ge+27m5SU3knWmrlfl6+KOG0Bf9f7Ua7K+C4BnaTMAh3/UpySqdAYvrsvjg== dependencies: "@types/node" "*" @@ -1832,10 +2222,10 @@ "@types/prop-types" "*" csstype "^2.2.0" -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@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" @@ -1896,6 +2286,13 @@ 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" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + "@types/yauzl@^2.9.1": version "2.9.1" resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" @@ -2069,10 +2466,10 @@ JSONSelect@0.2.1: resolved "https://registry.yarnpkg.com/JSONSelect/-/JSONSelect-0.2.1.tgz#415418a526d33fe31d74b4defa3c836d485ec203" integrity sha1-QVQYpSbTP+MddLTe+jyDbUhewgM= -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== +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== abbrev@1: version "1.1.1" @@ -2087,13 +2484,13 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-globals@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== +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== dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" acorn-jsx@^3.0.0: version "3.0.1" @@ -2112,26 +2509,26 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== -acorn-walk@^6.0.1, acorn-walk@^6.1.1: +acorn-walk@^6.1.1: version "6.2.0" 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@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= -acorn@^5.5.0, acorn@^5.5.3: +acorn@^5.5.0: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== - acorn@^6.0.7, acorn@^6.2.1: version "6.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" @@ -2142,6 +2539,11 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== +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== + adbkit-logcat@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz#01d7f9b0cef9093a30bcb3b007efff301508962f" @@ -2214,11 +2616,6 @@ adm-zip@~0.4.x: resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw== -agent-base@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== - agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -2294,11 +2691,18 @@ ansi-escapes@^1.1.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -2339,6 +2743,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + 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" @@ -2352,6 +2761,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -2434,11 +2851,6 @@ array-differ@^3.0.0: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-filter@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" @@ -2589,6 +3001,13 @@ 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== + dependencies: + follow-redirects "^1.10.0" + babel-code-frame@^6.16.0, babel-code-frame@^6.22.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" @@ -2598,18 +3017,19 @@ babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== +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== dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" + "@jest/transform" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^27.0.6" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" babel-loader@^8.0.5: version "8.0.6" @@ -2635,21 +3055,25 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== +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== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== +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== dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" "babel-plugin-styled-components@>= 1": @@ -2685,13 +3109,31 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@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-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== + dependencies: + babel-plugin-jest-hoist "^27.0.6" + babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" @@ -2893,7 +3335,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -2910,13 +3352,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - 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" @@ -2976,6 +3411,17 @@ 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== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + browserslist@^4.6.0, browserslist@^4.6.6: version "4.7.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" @@ -3166,6 +3612,11 @@ camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^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" @@ -3176,19 +3627,17 @@ caniuse-lite@^1.0.30000989: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" +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== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3216,6 +3665,19 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.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" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -3300,6 +3762,11 @@ ci-info@^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== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -3313,6 +3780,11 @@ circular-json@^0.3.1: resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== +cjs-module-lexer@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz#2fd46d9906a126965aa541345c499aaa18e8cd73" + integrity sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -3370,6 +3842,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + clone-deep@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" @@ -3412,6 +3893,11 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -3444,6 +3930,11 @@ 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== + colors@0.5.x: version "0.5.1" resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" @@ -3457,7 +3948,7 @@ columnify@1.5.4: strip-ansi "^3.0.0" wcwidth "^1.0.0" -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -3471,7 +3962,7 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.11.0, commander@^2.18.0, commander@^2.3.0, commander@^2.6.0: +commander@^2.18.0, commander@^2.3.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== @@ -3486,6 +3977,11 @@ commander@^3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +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== + common-tags@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -3588,6 +4084,13 @@ convert-source-map@^1.4.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -3725,7 +4228,7 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3823,17 +4326,22 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": +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.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" - integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: - cssom "0.3.x" + cssom "~0.3.6" csstype@^2.2.0: version "2.6.6" @@ -3883,14 +4391,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== +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== dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" date-now@^0.1.4: version "0.1.4" @@ -3916,6 +4424,13 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3935,6 +4450,11 @@ decamelize@^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== + 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" @@ -3947,6 +4467,11 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.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" @@ -3976,7 +4501,7 @@ deepcopy@2.0.0: dependencies: type-detect "^4.0.8" -deepmerge@4.2.2, deepmerge@^4.0.0: +deepmerge@4.2.2, deepmerge@^4.0.0, deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -4060,25 +4585,30 @@ detect-libc@^1.0.2: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 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.809251: - version "0.0.809251" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.809251.tgz#300b3366be107d5c46114ecb85274173e3999518" - integrity sha512-pf+2OY6ghMDPjKkzSWxHMq+McD+9Ojmq5XVRYpv/kPd9sTMQxzEt21592a31API8qRjro0iYYOc3ag46qF/1FA== +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@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" - integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== +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== diffie-hellman@^5.0.0: version "5.0.3" @@ -4159,12 +4689,12 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== +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== dependencies: - webidl-conversions "^4.0.2" + webidl-conversions "^5.0.0" domhandler@^2.3.0: version "2.4.2" @@ -4272,6 +4802,11 @@ electron-to-chromium@^1.3.247: 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.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== + elliptic@^6.0.0: version "6.5.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" @@ -4285,6 +4820,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +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== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -4478,6 +5018,11 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4488,13 +5033,18 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.9.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" - integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" + esprima "^4.0.1" + estraverse "^5.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: @@ -4646,16 +5196,11 @@ espree@^5.0.1: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -esprima@4.0.1, esprima@^4.0.0: +esprima@4.0.1, esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - esquery@^1.0.0, esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" @@ -4675,6 +5220,11 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.2.0: + version "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: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4711,11 +5261,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -4744,6 +5289,21 @@ execa@^4.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" @@ -4781,22 +5341,22 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect-puppeteer@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz#1c948af08acdd6c8cbdb7f90e617f44d86888886" - integrity sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA== +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@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" - integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== +expect@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05" + integrity sha512-psNLt8j2kwg42jGBDSfAlU49CEZxejN1f1PlANWDZqIhBOVU/c2Pm888FcjWJzFewhIsNWfZJeLjUjtKGiPuSw== dependencies: - "@jest/types" "^24.9.0" - ansi-styles "^3.2.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.9.0" + "@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" express@^4.16.3: version "4.17.1" @@ -4884,7 +5444,7 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-zip@^2.0.0: +extract-zip@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== @@ -5073,14 +5633,14 @@ find-pkg@^0.1.2: dependencies: find-file-up "^0.1.2" -find-process@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.3.tgz#25f9105dc32e42abad4636752c37c51cd57dce45" - integrity sha512-+IA+AUsQCf3uucawyTwMWcY+2M3FXq3BRvw3S+j5Jvydjk31f/+NPWpYZOJs+JUs2GvxH4Yfr6Wham0ZtRLlPA== +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== dependencies: - chalk "^2.0.1" - commander "^2.11.0" - debug "^2.6.8" + chalk "^4.0.0" + commander "^5.1.0" + debug "^4.1.1" find-up@^3.0.0: version "3.0.0" @@ -5176,6 +5736,11 @@ focus-lock@^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== +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== + for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -5210,6 +5775,15 @@ fork-ts-checker-webpack-plugin@^0.5.2: minimatch "^3.0.4" 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== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -5303,6 +5877,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +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== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5358,11 +5937,21 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== -get-caller-file@^2.0.1: +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" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +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: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -5377,6 +5966,11 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + 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-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" @@ -5575,6 +6169,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== +graceful-fs@^4.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" @@ -5598,7 +6197,7 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0, har-validator@~5.1.3: +har-validator@~5.1.0: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -5720,17 +6319,12 @@ hoopy@^0.1.4: resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -hosted-git-info@^2.1.4: - version "2.8.5" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" - integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== +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== dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.0" @@ -5776,6 +6370,15 @@ 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== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -5790,15 +6393,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" - integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== - dependencies: - agent-base "5" - debug "4" - -https-proxy-agent@^5.0.0: +https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== @@ -5811,6 +6406,11 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + 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" @@ -5888,7 +6488,7 @@ import-lazy@^2.1.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= -import-local@2.0.0, import-local@^2.0.0: +import-local@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== @@ -5896,6 +6496,14 @@ import-local@2.0.0, import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -6074,6 +6682,20 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +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== + dependencies: + ci-info "^3.1.1" + +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + 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" @@ -6232,6 +6854,11 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-potential-custom-element-name@^1.0.1: + version "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-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -6343,446 +6970,524 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-coverage@^3.0.0: + version "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@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== +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== dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" - integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== +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== dependencies: html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" jed@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/jed/-/jed-1.1.1.tgz#7a549bbd9ffe1585b0cd0a191e203055bee574b4" integrity sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ= -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== +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== dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" + "@jest/types" "^27.0.6" + execa "^5.0.0" + throat "^6.0.1" -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== +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== dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + "@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" + 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== + dependencies: + "@jest/core" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + chalk "^4.0.0" exit "^0.1.2" - import-local "^2.0.0" - is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" + graceful-fs "^4.2.4" + import-local "^3.0.2" + jest-config "^27.0.6" + jest-util "^27.0.6" + jest-validate "^27.0.6" prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" + yargs "^16.0.3" -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== +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== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" + "@jest/test-sequencer" "^27.0.6" + "@jest/types" "^27.0.6" + babel-jest "^27.0.6" + chalk "^4.0.0" + deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" + 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" + micromatch "^4.0.4" + pretty-format "^27.0.6" -jest-dev-server@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/jest-dev-server/-/jest-dev-server-4.4.0.tgz#557113faae2877452162696aa94c1e44491ab011" - integrity sha512-STEHJ3iPSC8HbrQ3TME0ozGX2KT28lbT4XopPxUm2WimsX3fcB3YOptRh12YphQisMhfqNSNTZUmWyT3HEXS2A== +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== dependencies: - chalk "^3.0.0" + chalk "^4.1.1" cwd "^0.10.0" - find-process "^1.4.3" - prompts "^2.3.0" - spawnd "^4.4.0" + find-process "^1.4.4" + prompts "^2.4.1" + spawnd "^5.0.0" tree-kill "^1.2.2" - wait-on "^3.3.0" + wait-on "^5.3.0" -jest-diff@^24.3.0, jest-diff@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" - integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== +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== dependencies: - chalk "^2.0.1" - diff-sequences "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-docblock@^24.3.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" - integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== +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: - detect-newline "^2.1.0" + chalk "^4.0.0" + diff-sequences "^27.0.6" + jest-get-type "^27.0.6" + pretty-format "^27.0.6" -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== +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== dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" + detect-newline "^3.0.0" -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== +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== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" + "@jest/types" "^27.0.6" + chalk "^4.0.0" + jest-get-type "^27.0.6" + jest-util "^27.0.6" + pretty-format "^27.0.6" -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== +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== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" + "@jest/environment" "^27.0.6" + "@jest/fake-timers" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + jest-mock "^27.0.6" + jest-util "^27.0.6" + jsdom "^16.6.0" -jest-environment-puppeteer@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-puppeteer/-/jest-environment-puppeteer-4.4.0.tgz#d82a37e0e0c51b63cc6b15dea101d53967508860" - integrity sha512-iV8S8+6qkdTM6OBR/M9gKywEk8GDSOe05hspCs5D8qKSwtmlUfdtHfB4cakdc68lC6YfK3AUsLirpfgodCHjzQ== +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== dependencies: - chalk "^3.0.0" + "@jest/environment" "^27.0.6" + "@jest/fake-timers" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + jest-mock "^27.0.6" + jest-util "^27.0.6" + +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== + dependencies: + chalk "^4.1.1" cwd "^0.10.0" - jest-dev-server "^4.4.0" - merge-deep "^3.0.2" + jest-dev-server "^5.0.3" + jest-environment-node "^27.0.1" + merge-deep "^3.0.3" -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== +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-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== +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== dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" + "@jest/types" "^27.0.6" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" + 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" + micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: - fsevents "^1.2.7" + fsevents "^2.3.2" -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== +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== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@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 "^24.9.0" + expect "^27.0.6" is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.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-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== +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 "^24.9.0" - pretty-format "^24.9.0" + jest-get-type "^27.0.6" + pretty-format "^27.0.6" -jest-matcher-utils@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" - integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== +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== dependencies: - chalk "^2.0.1" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + chalk "^4.0.0" + jest-diff "^27.0.6" + jest-get-type "^27.0.6" + pretty-format "^27.0.6" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== +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== dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.0.6" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + pretty-format "^27.0.6" + slash "^3.0.0" + stack-utils "^2.0.3" -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== +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== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^27.0.6" + "@types/node" "*" -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== +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@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/jest-puppeteer/-/jest-puppeteer-4.4.0.tgz#4b906e638a5e3782ed865e7b673c82047b85952e" - integrity sha512-ZaiCTlPZ07B9HW0erAWNX6cyzBqbXMM7d2ugai4epBDKpKvRDpItlRQC6XjERoJELKZsPziFGS0OhhUvTvQAXA== +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== dependencies: - expect-puppeteer "^4.4.0" - jest-environment-puppeteer "^4.4.0" + expect-puppeteer "^5.0.4" + jest-environment-puppeteer "^5.0.4" -jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== +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-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== +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== dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" + "@jest/types" "^27.0.6" + jest-regex-util "^27.0.6" + jest-snapshot "^27.0.6" -jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== +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== dependencies: - "@jest/types" "^24.9.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + "@jest/types" "^27.0.6" + chalk "^4.0.0" + escalade "^3.1.1" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^27.0.6" + jest-validate "^27.0.6" + resolve "^1.20.0" + slash "^3.0.0" -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== +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== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" + "@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" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" + 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 "^4.0.0" + throat "^6.0.1" -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== +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== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" + "@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" + 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.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" + 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" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^16.0.3" -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== +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== 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/generator" "^7.7.2" + "@babel/parser" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" + "@jest/transform" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/babel__traverse" "^7.0.4" + "@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" natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" + pretty-format "^27.0.6" + semver "^7.3.2" -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== +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== dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^3.0.0" + picomatch "^2.2.3" -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== +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== dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" + "@jest/types" "^27.0.6" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.0.6" leven "^3.1.0" - pretty-format "^24.9.0" + pretty-format "^27.0.6" -jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== +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== dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.0.6" + string-length "^4.0.1" -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +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== dependencies: + "@types/node" "*" merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^8.0.0" -jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== +jest@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.0.6.tgz#10517b2a628f0409087fbf473db44777d7a04505" + integrity sha512-EjV8aETrsD0wHl7CKMibKwQNQc3gIRBXlTikBmmHUeVMKaPFxdcUIBfoDqTSXDoGJIivAYGqCWVlzCSaVjPQsA== dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" + "@jest/core" "^27.0.6" + import-local "^3.0.2" + jest-cli "^27.0.6" jetpack-id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jetpack-id/-/jetpack-id-1.0.0.tgz#2cf9fbae46d8074fc16b7de0071c8efebca473a6" integrity sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y= +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== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.0" + "@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" @@ -6824,41 +7529,50 @@ js-yaml@^3.13.0, js-yaml@^3.5.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== +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== dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + 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" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + 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" jsesc@^2.5.1: @@ -7089,11 +7803,6 @@ lcid@^3.0.0: dependencies: invert-kv "^3.0.0" -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -7120,16 +7829,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.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" @@ -7209,6 +7908,11 @@ lodash@^4.17.19: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + 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" @@ -7233,7 +7937,14 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -make-dir@^2.0.0, make-dir@^2.1.0: +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.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== @@ -7341,10 +8052,10 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -merge-deep@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" - integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== +merge-deep@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.3.tgz#1a2b2ae926da8b2ae93a0ac15d90cd1922766003" + integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== dependencies: arr-union "^3.1.0" clone-deep "^0.2.4" @@ -7384,6 +8095,14 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -7518,11 +8237,6 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - mkdirp@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.3.tgz#4cf2e30ad45959dddea53ad97d518b6c8205e1ea" @@ -7569,7 +8283,7 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -7693,7 +8407,7 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-fetch@^2.6.0, node-fetch@^2.6.1: +node-fetch@2.6.1, node-fetch@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -7753,17 +8467,6 @@ node-notifier@6.0.0: shellwords "^0.1.1" which "^1.3.1" -node-notifier@^5.4.2: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - node-pre-gyp@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" @@ -7787,6 +8490,11 @@ node-releases@^1.1.29: dependencies: semver "^5.3.0" +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== + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -7795,16 +8503,6 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^2.0.0, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -7852,7 +8550,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -7886,7 +8584,7 @@ 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.0.7: +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== @@ -7997,6 +8695,13 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + open@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/open/-/open-7.0.0.tgz#7e52999b14eb73f90f0f0807fe93897c4ae73ec9" @@ -8098,12 +8803,10 @@ p-defer@^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@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" +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" @@ -8136,11 +8839,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -8199,23 +8897,15 @@ parse-json@5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== +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@^3.0.1: version "3.0.3" @@ -8317,6 +9007,11 @@ 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.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -8356,6 +9051,13 @@ pjax-api@^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: + 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== + dependencies: + find-up "^4.0.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -8363,23 +9065,11 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.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== - dependencies: - find-up "^4.0.0" - pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - polished@3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/polished/-/polished-3.5.2.tgz#ca132b8cd68f7ffa95ae9d423f03e7a14fda1062" @@ -8476,7 +9166,7 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -pretty-format@^24.3.0, pretty-format@^24.9.0: +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== @@ -8496,6 +9186,26 @@ pretty-format@^25.1.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-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" @@ -8522,12 +9232,17 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +progress@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31" + integrity sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg== + progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= -progress@^2.0.0, progress@^2.0.1, progress@^2.0.3: +progress@^2.0.0, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -8537,7 +9252,7 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -prompts@^2.0.1, prompts@^2.3.0: +prompts@^2.0.1: version "2.3.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== @@ -8545,6 +9260,14 @@ prompts@^2.0.1, prompts@^2.3.0: 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== + 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" @@ -8562,12 +9285,7 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.0" -proxy-from-env@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4= - -proxy-from-env@^1.1.0: +proxy-from-env@1.1.0, proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -8582,10 +9300,10 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== -psl@^1.1.28: - version "1.7.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" - integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== public-encrypt@^4.0.0: version "4.0.3" @@ -8639,23 +9357,23 @@ 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== -puppeteer@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.4.1.tgz#f2038eb23a0f593ed2cce0d6e7cd5c43aecd6756" - integrity sha512-8u6r9tFm3gtMylU4uCry1W/CeAA8uczKMONvGvivkTsGqKA7iB7DWO2CBFYlB9GY6/IEoq9vkI5slJWzUBkwNw== +puppeteer@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-10.1.0.tgz#6ee1d7e30401a967f4403bd42ace9e51e399504f" + integrity sha512-bsyDHbFBvbofZ63xqF7hMhuKBX1h4WsqFIAoh1GuHr/Y9cewh+EFNAOdqWSkQRHLiBU/MY6M+8PUnXXjAPtuSg== dependencies: - debug "^4.1.0" - devtools-protocol "0.0.809251" - extract-zip "^2.0.0" - https-proxy-agent "^4.0.0" - node-fetch "^2.6.1" - pkg-dir "^4.2.0" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^3.0.2" - tar-fs "^2.0.0" - unbzip2-stream "^1.3.3" - ws "^7.2.3" + debug "4.3.1" + devtools-protocol "0.0.883894" + extract-zip "2.0.1" + https-proxy-agent "5.0.0" + node-fetch "2.6.1" + pkg-dir "4.2.0" + progress "2.0.1" + proxy-from-env "1.1.0" + rimraf "3.0.2" + tar-fs "2.0.0" + unbzip2-stream "1.3.3" + ws "7.4.6" qs@6.7.0: version "6.7.0" @@ -8781,6 +9499,11 @@ react-is@^16.8.1: 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" @@ -8849,23 +9572,6 @@ react@^16.10.2, react@^17, react@^17.0.1: loose-envify "^1.1.0" object-assign "^4.1.1" -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -8922,13 +9628,6 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -9057,22 +9756,6 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - request@2.88.0, request@^2.83.0, request@~2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" @@ -9099,32 +9782,6 @@ request@2.88.0, request@^2.83.0, request@~2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -request@^2.87.0, request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -9155,6 +9812,13 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-dir@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" @@ -9186,16 +9850,16 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - resolve@^1.1.6, resolve@^1.3.2: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" @@ -9203,11 +9867,12 @@ resolve@^1.1.6, resolve@^1.3.2: dependencies: path-parse "^1.0.6" -resolve@^1.10.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== +resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: + is-core-module "^2.2.0" path-parse "^1.0.6" responselike@^1.0.2: @@ -9245,6 +9910,13 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" +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" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -9252,13 +9924,6 @@ rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rimraf@~2.4.0: version "2.4.5" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" @@ -9274,11 +9939,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - 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" @@ -9312,11 +9972,6 @@ rx-lite@^3.1.2: resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= -rx@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= - rxjs@^6.4.0: version "6.5.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" @@ -9324,6 +9979,13 @@ rxjs@^6.4.0: dependencies: tslib "^1.9.0" +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== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -9351,21 +10013,6 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - sass-loader@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" @@ -9389,6 +10036,13 @@ 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== + 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" @@ -9434,21 +10088,28 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, 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@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA== +semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, 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== +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" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -9621,7 +10282,12 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -sisteransi@^1.0.4: +signal-exit@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +sisteransi@^1.0.4, sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -9636,6 +10302,11 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" @@ -9755,6 +10426,11 @@ 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" @@ -9768,41 +10444,15 @@ spawn-sync@1.0.15: concat-stream "^1.4.7" os-shim "^0.1.2" -spawnd@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-4.4.0.tgz#bb52c5b34a22e3225ae1d3acb873b2cd58af0886" - integrity sha512-jLPOfB6QOEgMOQY15Z6+lwZEhH3F5ncXxIaZ7WHPIapwNNLyjrs61okj3VJ3K6tmP5TZ6cO0VAu9rEY4MD4YQg== +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== dependencies: exit "^0.1.2" - signal-exit "^3.0.2" + signal-exit "^3.0.3" tree-kill "^1.2.2" - wait-port "^0.2.7" - -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + wait-port "^0.2.9" split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -9852,10 +10502,12 @@ stack-generator@^2.0.4: dependencies: stackframe "^1.1.0" -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +stack-utils@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" stackframe@^1.1.0: version "1.1.0" @@ -9892,11 +10544,6 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -9957,13 +10604,13 @@ 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-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" string-width@^1.0.1: version "1.0.2" @@ -10073,7 +10720,7 @@ 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@^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== @@ -10181,6 +10828,13 @@ supports-color@^5.3.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" +supports-color@^7.0.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" @@ -10188,7 +10842,22 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -symbol-tree@^3.2.2: +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + 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" + +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -10220,13 +10889,13 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar-fs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" - integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== +tar-fs@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.0.0.tgz#677700fc0c8b337a78bee3623fdc235f21d7afad" + integrity sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA== dependencies: chownr "^1.1.1" - mkdirp-classic "^0.5.2" + mkdirp "^0.5.1" pump "^3.0.0" tar-stream "^2.0.0" @@ -10272,6 +10941,14 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== +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" + terser-webpack-plugin@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" @@ -10296,15 +10973,14 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: - glob "^7.1.3" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" @@ -10325,10 +11001,10 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +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" @@ -10446,13 +11122,14 @@ tosource@1.0.0: resolved "https://registry.yarnpkg.com/tosource/-/tosource-1.0.0.tgz#42d88dd116618bcf00d6106dd5446f3427902ff1" integrity sha1-QtiN0RZhi88A1hBt1URvNCeQL/E= -tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +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== dependencies: - psl "^1.1.28" + psl "^1.1.33" punycode "^2.1.1" + universalify "^0.1.2" tough-cookie@~2.4.3: version "2.4.3" @@ -10462,13 +11139,6 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - tr46@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" @@ -10476,6 +11146,13 @@ tr46@^2.0.0: dependencies: 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== + dependencies: + punycode "^2.1.1" + traverse@0.4.x: version "0.4.6" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.4.6.tgz#d04b2280e4c792a5815429ef7b8b60c64c9ccc34" @@ -10540,11 +11217,16 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@^4.0.8: +type-detect@4.0.8, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -10608,10 +11290,10 @@ uglifyjs-webpack-plugin@^2.1.2: webpack-sources "^1.4.0" worker-farm "^1.7.0" -unbzip2-stream@^1.3.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== +unbzip2-stream@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" + integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== dependencies: buffer "^5.2.1" through "^2.3.8" @@ -10675,7 +11357,7 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -universalify@^0.1.0: +universalify@^0.1.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== @@ -10782,7 +11464,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -10819,13 +11501,14 @@ v8-compile-cache@2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== +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== dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" + "@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" @@ -10846,30 +11529,37 @@ 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.1: +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== dependencies: browser-process-hrtime "^1.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== + 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@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-3.3.0.tgz#9940981d047a72a9544a97b8b5fca45b2170a082" - integrity sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ== +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: - "@hapi/joi" "^15.0.3" - core-js "^2.6.5" - minimist "^1.2.0" - request "^2.88.0" - rx "^4.1.0" + axios "^0.21.1" + joi "^17.3.0" + lodash "^4.17.21" + minimist "^1.2.5" + rxjs "^6.6.3" -wait-port@^0.2.7: +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== @@ -10878,7 +11568,7 @@ wait-port@^0.2.7: commander "^3.0.2" debug "^4.1.1" -walker@^1.0.7, walker@~1.0.5: +walker@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= @@ -10984,16 +11674,16 @@ webextension-polyfill@^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@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - 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== + webpack-bundle-analyzer@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz#39b3a8f829ca044682bc6f9e011c95deb554aefd" @@ -11075,14 +11765,14 @@ webpack@^4.29.6: watchpack "^1.6.0" webpack-sources "^1.4.1" -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: +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== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: +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== @@ -11096,23 +11786,14 @@ whatwg-url@8.0.0: tr46 "^2.0.0" webidl-conversions "^5.0.0" -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== +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== dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" when@3.7.7: version "3.7.7" @@ -11132,7 +11813,7 @@ which@1.2.4: is-absolute "^0.1.7" isexe "^1.1.1" -which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -11200,20 +11881,20 @@ wrap-ansi@^6.2.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" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -11243,12 +11924,10 @@ ws@7.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" +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@^6.0.0: version "6.2.1" @@ -11257,10 +11936,10 @@ ws@^6.0.0: dependencies: async-limiter "~1.0.0" -ws@^7.2.3: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== +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== xdg-basedir@^4.0.0: version "4.0.0" @@ -11286,6 +11965,11 @@ xmlbuilder@~11.0.0: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xregexp@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.2.4.tgz#02a4aea056d65a42632c02f0233eab8e4d7e57ed" @@ -11303,11 +11987,21 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +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@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@^13.1.0: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" @@ -11316,14 +12010,6 @@ yargs-parser@^13.1.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^16.1.0: version "16.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" @@ -11340,6 +12026,11 @@ yargs-parser@^18.1.1: 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@13.2.4: version "13.2.4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" @@ -11391,21 +12082,18 @@ yargs@15.3.1, yargs@~15.3.0: y18n "^4.0.0" yargs-parser "^18.1.1" -yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== +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 "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" yauzl@2.10.0, yauzl@^2.10.0: version "2.10.0"